Sha256: 8dad34a3f6903107887b7b3f769fe0ded4f464bdc40443ef6953a4f4d543ce39

Contents?: true

Size: 1.01 KB

Versions: 19

Compression:

Stored size: 1.01 KB

Contents

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 content
    option.try(:content) || option.try(:display)
  end

  private
    Data = Struct.new :id, :value, :display, :content, :filterable_as, :autocompletable_as, keyword_init: true

    attr_reader :option

    def options
      {
        id: id,
        role: :option,
        class: "hw-combobox__option",
        data: data
      }
    end

    def id
      option.try(:id)
    end

    def data
      {
        action: "click->hw-combobox#selectOption",
        filterable_as: filterable_as,
        autocompletable_as: autocompletable_as,
        value: value
      }
    end

    def filterable_as
      option.try(:filterable_as) || option.try(:display)
    end

    def autocompletable_as
      option.try(:autocompletable_as) || option.try(:display)
    end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
hotwire_combobox-0.1.33 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.32 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.31 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.30 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.29 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.28 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.27 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.25 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.24 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.23 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.22 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.21 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.20 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.19 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.18 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.17 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.16 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.15 app/presenters/hotwire_combobox/listbox/option.rb
hotwire_combobox-0.1.14 app/presenters/hotwire_combobox/listbox/option.rb