Module: UI::AccordionItemBehavior
- Included in:
- AccordionItem, AccordionItemComponent
- Defined in:
- app/behaviors/ui/accordion_item_behavior.rb
Overview
Shared behavior for Accordion Item component Handles classes, states, and data attributes
Instance Method Summary collapse
-
#item_base_classes ⇒ Object
Base CSS classes for accordion item.
-
#item_classes ⇒ Object
Merge base classes with custom classes using TailwindMerge.
-
#item_data_attributes ⇒ Object
Data attributes for Stimulus target.
-
#item_html_attributes ⇒ Object
Build complete HTML attributes hash for accordion item.
-
#item_state ⇒ Object
Determine initial state.
-
#merged_item_data_attributes ⇒ Object
Merge user-provided data attributes.
Instance Method Details
#item_base_classes ⇒ Object
Base CSS classes for accordion item
9 10 11 |
# File 'app/behaviors/ui/accordion_item_behavior.rb', line 9 def item_base_classes "border-b border-border last:border-b-0" end |
#item_classes ⇒ Object
Merge base classes with custom classes using TailwindMerge
14 15 16 |
# File 'app/behaviors/ui/accordion_item_behavior.rb', line 14 def item_classes TailwindMerge::Merger.new.merge([item_base_classes, @classes].compact.join(" ")) end |
#item_data_attributes ⇒ Object
Data attributes for Stimulus target
19 20 21 22 23 24 |
# File 'app/behaviors/ui/accordion_item_behavior.rb', line 19 def item_data_attributes { ui__accordion_target: "item", value: @value || "" } end |
#item_html_attributes ⇒ Object
Build complete HTML attributes hash for accordion item
38 39 40 41 42 43 44 45 46 |
# File 'app/behaviors/ui/accordion_item_behavior.rb', line 38 def item_html_attributes base_attrs = @attributes&.except(:data) || {} base_attrs.merge( class: item_classes, "data-state": item_state, "data-orientation": @orientation || "vertical", data: merged_item_data_attributes ) end |
#item_state ⇒ Object
Determine initial state
33 34 35 |
# File 'app/behaviors/ui/accordion_item_behavior.rb', line 33 def item_state @initial_open ? "open" : "closed" end |
#merged_item_data_attributes ⇒ Object
Merge user-provided data attributes
27 28 29 30 |
# File 'app/behaviors/ui/accordion_item_behavior.rb', line 27 def merged_item_data_attributes user_data = @attributes&.fetch(:data, {}) || {} user_data.merge(item_data_attributes) end |