Accordion — это компонент интерфейса, позволяющий
группировать содержимое в сворачиваемые секции. Он особенно полезен для
экономии места на странице и организации больших объёмов информации. В
Carbon Components Svelte реализация аккордеона обеспечивается через
компонент и вложенные в него
.
Accordion является контейнером для набора элементов:
Содержимое первой секции.
Содержимое второй секции.
отображается только при открытой секции.| Свойство | Тип | Описание | |
|---|---|---|---|
align |
'start' | 'end' |
Определяет выравнивание стрелки раскрытия относительно заголовка. | |
multi |
boolean |
Позволяет открывать несколько секций одновременно. По умолчанию
false (только одна секция открыта). |
|
on:change |
Event |
Событие, вызываемое при изменении состояния секций. |
| Свойство | Тип | Описание |
|---|---|---|
title |
string |
Заголовок секции. |
open |
boolean |
Устанавливает начальное состояние секции (открыта/закрыта). |
disabled |
boolean |
Если true, секция неактивна и не может быть
открыта. |
Состояние аккордеона можно контролировать программно через привязку:
Контент первой секции.
bind:open обеспечивает реактивное связывание состояния
открытости.isOpen немедленно отразится
на интерфейсе.Для одновременного открытия нескольких элементов используется
свойство multi:
Контент 1
Контент 2
Контент 3
multi=false открытие новой секции автоматически
закрывает остальные.multi=true открытие одной секции не влияет на
остальные.Вызывается при изменении состояния открытых секций.
console.log(e.detail)}>
Контент
e.detail содержит массив индексов открытых секций (для
multi=true) или индекс одной открытой секции
(multi=false).Carbon Components Svelte автоматически реализует ARIA-атрибуты:
aria-expanded на заголовке секции отражает её
состояние.role="button" применяется к интерактивному
заголовку.tabindex="0" позволяет навигацию с клавиатуры.Стили задаются через классы Carbon или пользовательские CSS:
Контент
Возможно создание аккордеонов внутри секций:
Контент
Контент
on:change каждого уровня не пересекаются.multi=false для FAQ и списков, где логично
открывать только одну секцию.multi=true для фильтров и сложных форм, где
важно держать несколько секций раскрытыми.open позволяет сохранять состояние при
переходе между страницами или при обновлении данных.title для каждой секции, чтобы
сохранить доступность и читаемость интерфейса.