Class: PhlexyUI::CollapsibleSubMenu
- Defined in:
- lib/phlexy_ui/collapsible_sub_menu.rb
Instance Method Summary collapse
-
#initialize ⇒ CollapsibleSubMenu
constructor
A new instance of CollapsibleSubMenu.
- #item ⇒ Object
- #title(&block) ⇒ Object
- #view_template {|_self| ... } ⇒ Object
Constructor Details
#initialize ⇒ CollapsibleSubMenu
Returns a new instance of CollapsibleSubMenu.
6 7 8 9 |
# File 'lib/phlexy_ui/collapsible_sub_menu.rb', line 6 def initialize(*, **) super @items ||= [] end |
Instance Method Details
#item ⇒ Object
49 50 51 |
# File 'lib/phlexy_ui/collapsible_sub_menu.rb', line 49 def item(*, **, &) @items << MenuItem.new(*, **, &) end |
#title(&block) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/phlexy_ui/collapsible_sub_menu.rb', line 41 def title(&block) if @title raise ArgumentError, "A collapsible submenu can only have one title" else @title = block end end |
#view_template {|_self| ... } ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/phlexy_ui/collapsible_sub_menu.rb', line 11 def view_template(&) yield(self) if block_given? attributes = generate_attributes(base_modifiers, , ATTRIBUTES_MAP) generate_classes!( base_modifiers:, modifiers_map: modifiers, options: ).then do |classes| details(**attributes) do if @title summary do render @title end else raise ArgumentError, "A collapsible submenu requires a title" end if @items.any? ul class: classes, ** do @items.each do |item| render item end end end end end end |