Sha256: 6be49e4bb542fae0df0c51dd1496e992907445ed9ed757c7ea9f5a2a79a4709c
Contents?: true
Size: 1.23 KB
Versions: 1
Compression:
Stored size: 1.23 KB
Contents
require "securerandom" class HotwireCombobox::Listbox::Option def initialize(option) @option = option.is_a?(Hash) ? Data.new(**option) : option end def render_in(view) view.tag.li content, **options end def value option.try(:value) || option.id end def autocompletable_as option.try(:autocompletable_as) || option.try(:display) end def content option.try(:content) || option.try(:display) end private Data = Struct.new :id, :value, :display, :content, :blank, :filterable_as, :autocompletable_as, keyword_init: true attr_reader :option def options { id: id, role: :option, class: [ "hw-combobox__option", { "hw-combobox__option--blank": blank? } ], data: data, aria: aria } end def id @id ||= option.try(:id) || SecureRandom.uuid end def data { action: "click->hw-combobox#selectOnClick", filterable_as: filterable_as, autocompletable_as: autocompletable_as, value: value } end def aria { selected: false } end def filterable_as option.try(:filterable_as) || option.try(:display) end def blank? option.try(:blank).present? end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hotwire_combobox-0.2.0 | app/presenters/hotwire_combobox/listbox/option.rb |