Class: StimulusPlumbers::Components::Combobox::Options::Option

Inherits:
Plumber::Base
  • Object
show all
Defined in:
lib/stimulus_plumbers/components/combobox/options/option.rb

Constant Summary

Constants included from Plumber::HtmlOptions

Plumber::HtmlOptions::STIMULUS_SPACEJOIN_KEYS

Instance Attribute Summary

Attributes inherited from Plumber::Base

#template

Instance Method Summary collapse

Methods inherited from Plumber::Base

#initialize, #theme

Methods included from Plumber::HtmlOptions

#merge_data_options, #merge_html_options, #merge_string_option, #normalize_part

Constructor Details

This class inherits a constructor from StimulusPlumbers::Plumber::Base

Instance Method Details

#render(label:, value:, description: nil, disabled: false, selected: false) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/stimulus_plumbers/components/combobox/options/option.rb', line 8

def render(label:, value:, description: nil, disabled: false, selected: false)
  aria = { selected: selected ? "true" : "false" }
  aria[:disabled] = "true" if disabled

  attrs = merge_html_options(
    { classes: theme.resolve(:combobox_option, selected: selected, disabled: disabled).fetch(:classes, "") },
    { role: "option", aria: aria, data: { value: value } }
  )

  template.(:li, **attrs) do
    if description
      template.safe_join(
        [
          template.(:span, label),
          template.(:span, description)
        ]
      )
    else
      label
    end
  end
end