Class: UI::AccordionComponent

Inherits:
ViewComponent::Base
  • Object
show all
Includes:
AccordionBehavior
Defined in:
app/view_components/ui/accordion_component.rb

Overview

Accordion container component (ViewComponent) Wraps collapsible accordion items with Stimulus controller

Examples:

Basic usage

<%= render UI::AccordionComponent.new do %>
  <%= render UI::AccordionItemComponent.new(value: "item-1") do %>
    <%= render UI::AccordionTriggerComponent.new { "Is it accessible?" } %>
    <%= render UI::AccordionContentComponent.new { "Yes. It adheres to the WAI-ARIA design pattern." } %>
  <% end %>
<% end %>

Multiple items open

<%= render UI::AccordionComponent.new(type: "multiple") do %>
  <!-- Multiple items can be open at once -->
<% end %>

Instance Method Summary collapse

Methods included from AccordionBehavior

#accordion_data_attributes, #accordion_html_attributes, #merged_data_attributes

Constructor Details

#initialize(type: "single", collapsible: false, classes: "", attributes: {}) ⇒ AccordionComponent

Returns a new instance of AccordionComponent.

Parameters:

  • type (String) (defaults to: "single")

    “single” (only one item open at a time) or “multiple” (multiple items can be open)

  • collapsible (Boolean) (defaults to: false)

    whether the open item can be collapsed in “single” mode

  • classes (String) (defaults to: "")

    additional CSS classes

  • attributes (Hash) (defaults to: {})

    additional HTML attributes



25
26
27
28
29
30
# File 'app/view_components/ui/accordion_component.rb', line 25

def initialize(type: "single", collapsible: false, classes: "", attributes: {})
  @type = type
  @collapsible = collapsible
  @classes = classes
  @attributes = attributes
end

Instance Method Details

#callObject



32
33
34
# File 'app/view_components/ui/accordion_component.rb', line 32

def call
   :div, content, **accordion_html_attributes
end