Class: PhlexyUI::Dropdown

Inherits:
Base
  • Object
show all
Defined in:
lib/phlexy_ui/dropdown.rb

Instance Method Summary collapse

Constructor Details

#initialize(as: :div) ⇒ Dropdown

Returns a new instance of Dropdown.



5
6
7
8
# File 'lib/phlexy_ui/dropdown.rb', line 5

def initialize(*, as: :div, **)
  super(*, **)
  @as = as
end

Instance Method Details

#buttonObject



25
26
27
28
29
30
31
# File 'lib/phlexy_ui/dropdown.rb', line 25

def button(*, **, &)
  if base_modifiers.include?(:tap_to_close)
    render Button.new(*, as: :summary, **, &)
  else
    render Button.new(*, as: :div, role: :button, tabindex: 0, **, &)
  end
end

#content(as: :div, **options) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/phlexy_ui/dropdown.rb', line 33

def content(*, as: :div, **options, &)
  generate_classes!(
    component_html_class: :"dropdown-content",
    options:
  ).then do |classes|
    if base_modifiers.include?(:tap_to_close)
      render_as(*, as:, class: classes, **options, &)
    else
      render_as(*, as:, tabindex: 0, class: classes, **options, &)
    end
  end
end


46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/phlexy_ui/dropdown.rb', line 46

def menu(*, **options, &)
  generate_classes!(
    component_html_class: :"dropdown-content",
    options:
  ).then do |classes|
    if base_modifiers.include?(:tap_to_close)
      render Menu.new(*, class: classes, **options, &)
    else
      render Menu.new(*, tabindex: 0, class: classes, **options, &)
    end
  end
end

#view_templateObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/phlexy_ui/dropdown.rb', line 10

def view_template(&)
  generate_classes!(
    component_html_class: :dropdown,
    modifiers_map: modifiers,
    base_modifiers:,
    options:
  ).then do |classes|
    if base_modifiers.include?(:tap_to_close)
      details(class: classes, **options, &)
    else
      public_send(as, class: classes, **options, &)
    end
  end
end