Sha256: 698ece92f91deeedd18fbf58ca346dea17852e53ff86cc5a70115c88e106b740

Contents?: true

Size: 1002 Bytes

Versions: 27

Compression:

Stored size: 1002 Bytes

Contents

module Coco
  class ImagePickerButton < Coco::Component
    include Concerns::WithDropdownOptions
    include Concerns::WrapsComponent

    wraps_component :button do |args|
      Coco::Button.new(icon: :image_plus, **args)
    end

    renders_one :text, Coco::Content

    renders_one :picker, ->(picker = nil, **kwargs, &block) do
      if picker.is_a?(Coco::ImagePicker)
        picker
      else
        picker&.to_s.presence || Coco::ImagePicker.new(
          size: @size,
          resize: @resize,
          src: @src,
          **kwargs
        )
      end
    end

    before_render do
      with_picker(src: @src) unless picker?
    end

    attr_reader :src

    def initialize(src: nil, **kwargs)
      @src = src

      @size = kwargs.fetch(:size, :default)&.to_sym
      if @size.in?(Coco::Button::SIZE_ALIASES.keys) && !kwargs.key?(:resize)
        @size, @resize = Coco::Button::SIZE_ALIASES.fetch(@size)
      end
    end

    def button_text
      text || content
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
coveragebook_components-0.17.1 app/components/coco/buttons/image_picker_button/image_picker_button.rb
coveragebook_components-0.17.0 app/components/coco/buttons/image_picker_button/image_picker_button.rb
coveragebook_components-0.16.0 app/components/coco/buttons/image_picker_button/image_picker_button.rb
coveragebook_components-0.15.0 app/components/coco/buttons/image_picker_button/image_picker_button.rb
coveragebook_components-0.14.0 app/components/coco/buttons/image_picker_button/image_picker_button.rb
coveragebook_components-0.13.1 app/components/coco/buttons/image_picker_button/image_picker_button.rb
coveragebook_components-0.13.0 app/components/coco/buttons/image_picker_button/image_picker_button.rb