Sha256: e5dda4dbe502b502a72d8aaabb7389e3d05a06dc40b6f0ccf19406f6306bbee2
Contents?: true
Size: 1.62 KB
Versions: 40
Compression:
Stored size: 1.62 KB
Contents
module Coco module App module Elements class ColorPickerButton < Coco::Component include Concerns::WithDropdownOptions include Concerns::WrapsComponent include Coco::AppHelper wraps_component :button do |args| Coco::App::Elements::Button.new(**args) end renders_one :text, Coco::Content renders_one :picker, ->(picker = nil, **kwargs, &block) do if picker.is_a?(Coco::App::Elements::ColorPicker) picker else picker&.to_s.presence || Coco::App::Elements::ColorPicker.new( size: @size, resize: @resize, selected: @selected, **kwargs ) end end renders_one :icon, ->(&block) do tag.span class: "picker-icon", style: "color: #{@selected}", ":style": "{color: selectedColor}", &block end before_render do with_picker(selected: @selected) unless picker? unless icon? with_icon do tag.span class: "picker-button-color", ":style": "{backgroundColor: selectedColor}" end end end attr_reader :selected def initialize(selected: nil, **kwargs) @selected = selected @size = kwargs.fetch(:size, :default)&.to_sym if @size.in?(Coco::App::Elements::Button::SIZE_ALIASES.keys) && !kwargs.key?(:resize) @size, @resize = Coco::App::Elements::Button::SIZE_ALIASES.fetch(@size) end end def button_text text || content end end end end end
Version data entries
40 entries across 40 versions & 1 rubygems