В библиотеке Carbon Components Svelte для создания раскрывающихся
секций используется компонент Accordion. Он позволяет
организовать контент в вертикальные блоки, которые можно сворачивать или
разворачивать по необходимости. Основная структура компонента выглядит
следующим образом:
Содержимое первой секции
Содержимое второй секции
Ключевые моменты:
Accordion выступает контейнером для всех секций.AccordionItem определяет отдельный блок с заголовком и
содержимым.title задаёт текст заголовка секции.По умолчанию все секции могут быть открыты или закрыты независимо.
Для динамического управления состоянием используется привязка к свойству
open. Пример:
Содержимое первой секции
Содержимое второй секции
Выделенные аспекты:
bind:open позволяет отслеживать и управлять состоянием
открытия секции.Иногда необходимо, чтобы открытой была только одна секция. Для этого
применяется обработка события on:toggle и логика закрытия
всех остальных секций:
{#each sections as section}
toggleSection(section.id)}>
Содержимое {section.title}
{/each}
Особенности реализации:
toggleSection гарантирует, что открытой будет
только выбранная секция.В Carbon Components Svelte допускается создание вложенных
Accordion. Это удобно для сложных структур данных:
Содержимое вложенной секции 1
Содержимое вложенной секции 2
Важные моменты:
on:toggle между уровнями.Для изменения визуального отображения секций можно использовать
стандартные свойства class и style или
подключать SCSS из Carbon:
Содержимое секции
Carbon Components Svelte автоматически обрабатывает плавное раскрытие секций через CSS-переходы. Для дополнительного контроля можно использовать Svelte-транзиции:
Содержимое с эффектом появления
open.Компоненты AccordionItem поддерживают события:
on:toggle — вызывается при открытии или закрытии
секции.on:focus / on:blur — управление фокусом
для клавиатурной навигации.on:keydown — обработка нажатий клавиш для кастомной
логики.Пример использования события toggle для логирования:
console.log('Открыта:', e.detail.open)}>
Контент секции
e.detail.open содержит текущее состояние
раскрытия.