Class: DaisyUI::CollapsibleSubMenu

Inherits:
Base
  • Object
show all
Defined in:
lib/daisy_ui/collapsible_sub_menu.rb

Constant Summary

Constants inherited from Base

Base::BOOLS, Base::COLOR_MODIFIERS

Instance Method Summary collapse

Methods inherited from Base

inherited, register_modifiers

Constructor Details

#initializeCollapsibleSubMenu

Returns a new instance of CollapsibleSubMenu.



8
9
10
11
# File 'lib/daisy_ui/collapsible_sub_menu.rb', line 8

def initialize(*, **)
  super
  @items = []
end

Instance Method Details

#itemObject



43
44
45
# File 'lib/daisy_ui/collapsible_sub_menu.rb', line 43

def item(...)
  @items << MenuItem.new(...)
end

#title(&block) ⇒ Object

Raises:

  • (ArgumentError)


37
38
39
40
41
# File 'lib/daisy_ui/collapsible_sub_menu.rb', line 37

def title(&block)
  raise ArgumentError, "A collapsible submenu can only have one title" if @title

  @title = block
end

#view_template(&block) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/daisy_ui/collapsible_sub_menu.rb', line 13

def view_template(&block)
  block&.call(self)

  # Extract 'open' attribute for the details element
  details_attrs = {}
  details_attrs[:open] = true if modifiers.include?(:open) || options.delete(:open) == true

  details(**details_attrs) do
    raise ArgumentError, "A collapsible submenu requires a title" unless @title

    summary do
      render @title
    end

    if @items.any?
      ul class: classes, **attributes do
        @items.each do |item|
          render item
        end
      end
    end
  end
end