Class: UI::Accordion
Constant Summary
Constants inherited from Base
Instance Method Summary collapse
-
#initialize(**props) ⇒ Accordion
constructor
A new instance of Accordion.
- #item(heading:, open: false, icon: nil, &block) ⇒ Object
- #view_template(&block) ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(**props) ⇒ Accordion
Returns a new instance of Accordion.
9 10 11 12 |
# File 'app/views/ui/accordion.rb', line 9 def initialize(**props) super @items = [] end |
Instance Method Details
#item(heading:, open: false, icon: nil, &block) ⇒ Object
14 15 16 17 |
# File 'app/views/ui/accordion.rb', line 14 def item(heading:, open: false, icon: nil, &block) @items << {heading:, open:, icon:, block:} nil end |
#view_template(&block) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/views/ui/accordion.rb', line 19 def view_template(&block) vanish(&block) if block_given? div(class: classes) do @items.each do |item| details(class: "group", open: item[:open]) do summary(class: summary_classes) do span(class: "inline-flex items-center gap-2") do plain item[:heading] end div(class: "text-gray-900") do render Icon(name: :chevron_down, variant: "outline", class: "size-3 block transition-all duration-300 group-open:rotate-180") end end div(class: content_classes) do item[:block].call end end end end end |