Module: StimulusPlumbers::Helpers::ComboboxHelper

Included in:
StimulusPlumbers::Helpers
Defined in:
lib/stimulus_plumbers/helpers/combobox_helper.rb

Instance Method Summary collapse

Instance Method Details

#sp_combobox_date(**kwargs) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/stimulus_plumbers/helpers/combobox_helper.rb', line 6

def sp_combobox_date(**kwargs)
  label = kwargs.delete(:label)
  value = kwargs.delete(:value)
  id    = sp_dom_id
  opts  = Components::Combobox::Date.default_opts.deep_merge(
    input:   { value: value },
    trigger: { id: id, aria: ({ label: label } if label), icon_trailing: "calendar" }.compact
  )
  Components::Combobox.new(self).render(
    **opts,
    data: { input_formatter_format_value: "date" },
    **kwargs
  ) do |popover_id|
    Components::Combobox::Date.new(self).render(value: value, popover_id: popover_id)
  end
end

#sp_combobox_dropdown(**kwargs) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/stimulus_plumbers/helpers/combobox_helper.rb', line 23

def sp_combobox_dropdown(**kwargs)
  label   = kwargs.delete(:label)
  value   = kwargs.delete(:value)
  options = kwargs.delete(:options) { [] }
  id      = sp_dom_id
  opts    = Components::Combobox::Dropdown.default_opts.deep_merge(
    input:   { value: value },
    trigger: { id: id, aria: ({ label: label } if label), icon_trailing: "chevron-down" }.compact
  )
  Components::Combobox.new(self).render(**opts, **kwargs) do
    Components::Combobox::Dropdown.new(self).render(options: options, value: value, label: label)
  end
end

#sp_combobox_time(**kwargs) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/stimulus_plumbers/helpers/combobox_helper.rb', line 60

def sp_combobox_time(**kwargs)
  format = kwargs.delete(:format) { :h12 }
  label  = kwargs.delete(:label)
  step   = kwargs.delete(:step) { 1 }
  value  = kwargs.delete(:value)
  id     = sp_dom_id
  opts   = Components::Combobox::Time.default_opts.deep_merge(
    input:   { value: value },
    trigger: { id: id, aria: ({ label: label } if label), icon_trailing: "clock" }.compact
  )
  Components::Combobox.new(self).render(
    **opts,
    data: { input_formatter_format_value: "time", input_formatter_options_value: { format: format }.to_json },
    **kwargs
  ) do
    Components::Combobox::Time.new(self).render(format: format, step: step, value: value)
  end
end

#sp_combobox_typeahead(**kwargs) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/stimulus_plumbers/helpers/combobox_helper.rb', line 37

def sp_combobox_typeahead(**kwargs)
  label   = kwargs.delete(:label)
  value   = kwargs.delete(:value)
  options = kwargs.delete(:options) { [] }
  url     = kwargs.delete(:url)
  id      = sp_dom_id
  opts    = Components::Combobox::Typeahead.default_opts.deep_merge(
    input:   { value: value },
    trigger: { id: id, aria: ({ label: label } if label) }.compact,
    popover: { data: url ? { combobox_dropdown_url_value: url } : {} }
  )
  Components::Combobox.new(self).render(
    **opts,
    data: {
      input_combobox_combobox_dropdown_outlet: "##{Components::Combobox.popover_id_for(id)}",
      action:                                  "input->input-combobox#onInput"
    },
    **kwargs
  ) do
    Components::Combobox::Typeahead.new(self).render(options: options, value: value, label: label)
  end
end