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_autocomplete(label: nil, options: [], value: nil, url: nil, **html_options) ⇒ Object



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

def sp_combobox_autocomplete(label: nil, options: [], value: nil, url: nil, **html_options)
  id         = sp_dom_id
  popover_id = "#{id}_popover"
  opts       = Components::Combobox::Autocomplete.default_opts.deep_merge(
    input:   { value: value },
    popover: {
      content: Components::Combobox::Autocomplete.new(self).render(
        options: options,
        value:   value,
        label:   label
      ),
      data:    url ? { combobox_dropdown_url_value: url } : {}
    }
  )
  opts = opts.deep_merge(trigger: { aria_label: label }) if label
  Components::Combobox::Renderer.new(self).render(
    base_id: id,
    options: opts,
    data:    {
      input_combobox_combobox_dropdown_outlet: "##{popover_id}",
      action:                                  "input->input-combobox#filter"
    },
    **html_options
  )
end

#sp_combobox_date(label: nil, value: nil, **html_options) ⇒ Object



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

def sp_combobox_date(label: nil, value: nil, **html_options)
  opts = Components::Combobox::Date.default_opts.deep_merge(
    input:   { value: value },
    popover: { content: Components::Combobox::Date.new(self).render(value: value) }
  )
  opts = opts.deep_merge(trigger: { aria_label: label }) if label
  Components::Combobox::Renderer.new(self).render(
    base_id: sp_dom_id,
    options: opts,
    data:    { input_format_type_value: "date" },
    **html_options
  )
end

#sp_combobox_dropdown(label: nil, options: [], value: nil, **html_options) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/stimulus_plumbers/helpers/combobox_helper.rb', line 20

def sp_combobox_dropdown(label: nil, options: [], value: nil, **html_options)
  opts = Components::Combobox::Dropdown.default_opts.deep_merge(
    input:   { value: value },
    popover: { content: Components::Combobox::Dropdown.new(self).render(options: options, value: value, label: label) }
  )
  opts = opts.deep_merge(trigger: { aria_label: label }) if label
  Components::Combobox::Renderer.new(self).render(
    base_id: sp_dom_id,
    options: opts,
    **html_options
  )
end

#sp_combobox_time(format: :h12, label: nil, step: 1, value: nil, **html_options) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/stimulus_plumbers/helpers/combobox_helper.rb', line 59

def sp_combobox_time(format: :h12, label: nil, step: 1, value: nil, **html_options)
  opts = Components::Combobox::Time.default_opts.deep_merge(
    input:   { value: value },
    popover: { content: Components::Combobox::Time.new(self).render(format: format, step: step, value: value) }
  )
  opts = opts.deep_merge(trigger: { aria_label: label }) if label
  Components::Combobox::Renderer.new(self).render(
    base_id: sp_dom_id,
    options: opts,
    data:    { input_format_type_value: "time", input_format_options_value: { format: format }.to_json },
    **html_options
  )
end