A simple accordion with expandable panels controlled via the value prop.
By default, a single panel is open at a time. Enable multiple to allow multiple panels to stay open.
Control the active panel state with value and valueChange.
The trigger can be tailored per panel; the toggleicon template animates a custom icon via the header's data-p attribute, while a fully custom header lets the toggle be rendered as any element, such as a Button, by driving the active state with the value model.
The toggleicon template customizes the indicator. It can switch between two icons using the active context variable, or render a single icon that animates purely with CSS by targeting the header's data-p attribute.
Set disabled on an AccordionPanel to prevent user interaction with that panel.
Create accordion panels dynamically by iterating over a data source to keep structure consistent and reusable.
RadioButton component can be used to group multiple AccordionPanel components.
AccordionPanel can be generated dynamically using the standard @for block.
Accordion header elements have a button role and use aria-controls to define the id of the content section along with aria-expanded for the visibility state. The value to read a header element defaults to the value of the header property and can be customized by defining an aria-label or aria-labelledby property. Each header has a heading role, for which the level is customized by headerAriaLevel and has a default level of 2 as per W3C specifications.
Disabled accordions headers use aria-disabled and are excluded from the keybord navigation.
The content uses region role, defines an id that matches the aria-controls of the header and aria-labelledby referring to the id of the header.
| Key | Function |
|---|---|
| tab | Moves focus to the next the focusable element in the page tab sequence. |
| shift + tab | Moves focus to the previous the focusable element in the page tab sequence. |
| enter | Toggles the visibility of the content. |
| space | Toggles the visibility of the content. |
| down arrow | Moves focus to the next header. |
| up arrow | Moves focus to the previous header. |
| home | Moves focus to the first header. |
| end | Moves focus to the last header. |