Sha256: 18e959318f60f5b98724fadbf5c440e32771f1a4adc9f09a51a9f4cc201ad348

Contents?: true

Size: 1.5 KB

Versions: 7

Compression:

Stored size: 1.5 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|
      deny_tag_argument(**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: Primer::ExampleImage::BASE64_SRC)) %>
    #
    # @example Square cropper
    #   <%= render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC, rounded: false)) %>
    #
    # @example Cropper with a custom loader
    #   <%= render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC, rounded: false)) do |cropper| %>
    #     <% cropper.with_loading(style: "width: 120px").with_content("Loading...") %>
    #   <% 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 = deny_tag_argument(**system_arguments)
      @system_arguments[:tag] = "image-crop"
      @system_arguments[:src] = src
      @system_arguments[:rounded] = true if rounded
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
primer_view_components-0.0.104 app/components/primer/image_crop.rb
primer_view_components-0.0.103 app/components/primer/image_crop.rb
primer_view_components-0.0.102 app/components/primer/image_crop.rb
primer_view_components-0.0.101 app/components/primer/image_crop.rb
primer_view_components-0.0.100 app/components/primer/image_crop.rb
primer_view_components-0.0.99 app/components/primer/image_crop.rb
primer_view_components-0.0.98 app/components/primer/image_crop.rb