AccordionProvider
Компонент AccordionProvider — это внутренний управляющий компонент аккордеона. Он содержит всю логику управления состоянием панелей, предоставляет контекст дочерним элементам и не предназначен для прямого использования в шаблонах приложения.
Обзор
- Основное назначение: централизованное управление состоянием аккордеона и предоставление API через
provide/inject. - Использование: компонент используется внутри
Accordionи не должен применяться напрямую. - Ключевые возможности:
- Управление одиночным и множественным режимами выбора.
- Контролируемое (
modelValue) и неконтролируемое (defaultValue) состояние. - Генерация уникальных идентификаторов для кнопок и панелей.
- Предоставление методов
isItemActive,onChangeи данных дочерним компонентам.
API компонента
Props
| Проп | Тип | По умолчанию | Описание |
|---|---|---|---|
multiple | Boolean | false | Если true, можно раскрыть несколько панелей одновременно. |
modelValue | String | Number | Array | Контролируемое значение активных панелей. | |
defaultValue | String | Number | Array | Значение активных панелей по умолчанию в неконтролируемом режиме. | |
id | String | Уникальный идентификатор. Если не указан, генерируется автоматически в формате tl-xxxxxxx. | |
transitionDuration | Number | 200 | Длительность анимации в миллисекундах. |
loop | Boolean | false | Зацикливает навигацию с клавиатуры. |
События
| Событие | Описание |
|---|---|
update:modelValue | Вызывается при изменении активных панелей. |
Provide
Предоставляет объект accordion со следующими свойствами:
| Свойство | Тип | Описание |
|---|---|---|
isItemActive | Function | Метод для проверки, активен ли элемент с указанным value. |
onChange | Function | Метод для переключения состояния элемента. |
buttonId | String | Базовый идентификатор для кнопок (формат: {uid}-control). |
panelId | String | Базовый идентификатор для панелей (формат: {uid}-panel). |
transitionDuration | Number | Длительность анимации. |
loop | Boolean | Флаг циклической навигации. |
Логика работы
Инициализация значения
Приоритет определения начального значения:
- Если передан
modelValue, используется оно. - Если передан
defaultValue, используется оно. - Если ничего не передано: пустой массив
[]дляmultiple: true,nullдля одиночного режима.
Переключение состояния
Метод handleItemChange обрабатывает переключение:
- Множественный режим: если значение уже есть в массиве — удаляется, если отсутствует — добавляется.
- Одиночный режим: если значение совпадает с текущим — сбрасывается в
null, иначе устанавливается новое значение.
Генерация идентификаторов
- Автоматический ID: если проп
idне передан, генерируется уникальная строка с префиксомtl-. - Дочерние идентификаторы:
buttonIdиpanelIdиспользуются как базовые. Дочерние компоненты добавляют к ним суффикс-{value}.
Слоты
| Имя слота | Описание |
|---|---|
default | Содержимое провайдера. Ожидается использование AccordionItem. |
Примечания
- Компонент является внутренним и используется исключительно компонентом [
Accordion].(./accordion.md). - Для создания аккордеона используйте [
Accordion].(./accordion.md) в связке сAccordionItem,AccordionHeader(илиAccordionButton) иAccordionPanel.