Sha256: 86c2057c5a13f70c89c43f0d9e233dd4ad2457bcc668f13f3dcc9634c9799044

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

module Primer
  # A client-side mechanism to crop images.
  class ImageCrop < Primer::Component
    # A loading indicator that is shown while the image is loading.
    # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
    renders_one :loading, lambda { |**system_arguments|
      system_arguments[:tag] ||= :div
      system_arguments[:"data-loading-slot"] = true

      Primer::BaseComponent.new(**system_arguments)
    }

    # @example Simple cropper
    #   <%= render(Primer::ImageCrop.new(src: "https://github.com/koddsson.png")) %>
    #
    # @example Square cropper
    #   <%= render(Primer::ImageCrop.new(src: "https://github.com/koddsson.png", rounded: false)) %>
    #
    # @example Cropper with a custom loader
    #   <%= render(Primer::ImageCrop.new(src: "https://github.com/koddsson.png", rounded: false)) do |cropper| %>
    #     <% cropper.loading(style: "width: 120px", tag: :img, src: "spinner.gif") %>
    #   <% end %>
    #
    # @param src [String] The path of the image to crop.
    # @param rounded [Boolean] If the crop mask should be a circle. Defaults to true.
    # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
    def initialize(src:, rounded: true, **system_arguments)
      @system_arguments = system_arguments
      @system_arguments[:tag] = "image-crop"
      @system_arguments[:src] = src
      @system_arguments[:rounded] = rounded
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
primer_view_components-0.0.40 app/components/primer/image_crop.rb