Module: WildayUi::Components::Button::Features::Dropdown

Included in:
WildayUi::Components::Button::FeatureEngine
Defined in:
app/helpers/wilday_ui/components/button/features/dropdown.rb

Constant Summary collapse

FEATURE_CONFIG =
{
  wrapper_required: true,
  stimulus_controller: "dropdown",
  default_stimulus_action: "click->dropdown#toggle"
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.feature_configObject



12
13
14
# File 'app/helpers/wilday_ui/components/button/features/dropdown.rb', line 12

def self.feature_config
  { dropdown: FEATURE_CONFIG }
end

Instance Method Details

#setup_dropdown_options(options, additional_classes, dropdown, dropdown_items, wrapper_data) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/helpers/wilday_ui/components/button/features/dropdown.rb', line 16

def setup_dropdown_options(options, additional_classes, dropdown, dropdown_items, wrapper_data)
  additional_classes = "#{additional_classes} w-button-dropdown"

  options[:data][:dropdown_target] = "button"

  wrapper_data.merge!(
    controller: FEATURE_CONFIG[:stimulus_controller],
    dropdown_id: "dropdown-#{SecureRandom.hex(4)}"
  )

  if dropdown.is_a?(Hash)
    wrapper_data.merge!(
      dropdown_position_value: dropdown[:position]&.to_s || "bottom",
      dropdown_align_value: dropdown[:align]&.to_s || "start",
      dropdown_trigger_value: dropdown[:trigger]&.to_s || "click"
    )
  else
    wrapper_data.merge!(
      dropdown_position_value: "bottom",
      dropdown_align_value: "start",
      dropdown_trigger_value: "click"
    )
  end

  normalize_dropdown_items(dropdown_items)
end