ExpandableTile — это компонент пользовательского интерфейса для создания плиток, которые могут расширяться или сворачиваться, предоставляя дополнительную информацию по клику. Он широко используется для экономии пространства на странице и организации контента в виде структурированных блоков. В Svelte его реализация адаптирована из библиотеки Carbon Components, сохраняя реактивность и простоту интеграции.
<script>
import { ExpandableTile } from 'carbon-components-svelte';
let expanded = false;
</script>
<ExpandableTile bind:expanded={expanded}>
<div slot="above-the-fold">
<p>Заголовок или краткая информация</p>
</div>
<div slot="below-the-fold">
<p>Раскрытый контент, доступный после клика</p>
</div>
</ExpandableTile>
slot="above-the-fold" — область, которая видна до
расширения плитки.slot="below-the-fold" — область, которая появляется
только после раскрытия.bind:expanded — двусторонняя привязка состояния
расширения плитки.Компонент поддерживает управление состоянием через проп
expanded и событие on:toggle:
<ExpandableTile bind:expanded={expanded} on:toggle={(e) => console.log(e.detail.expanded)}>
<div slot="above-the-fold">Краткая информация</div>
<div slot="below-the-fold">Подробности после раскрытия</div>
</ExpandableTile>
on:toggle срабатывает при каждом изменении состояния
плитки.e.detail.expanded возвращает текущее состояние (true —
раскрыто, false — свернуто).Это позволяет синхронизировать видимость плитки с другими компонентами интерфейса или внешними состояниями приложения.
ExpandableTile поддерживает несколько вариантов размеров через CSS-классы Carbon:
Применение класса осуществляется через проп size:
<ExpandableTile size="large">
<div slot="above-the-fold">Крупный заголовок</div>
<div slot="below-the-fold">Обширный раскрытый контент</div>
</ExpandableTile>
Раскрытие плитки сопровождается плавной анимацией высоты. Carbon Components Svelte использует CSS-переходы для обеспечения естественного эффекта.
Можно управлять продолжительностью и типом анимации через пользовательские стили:
<style>
.bx--tile--expandable {
transition: max-height 0.5s ease-in-out;
}
</style>
transition позволяет настроить скорость и кривую
анимации.max-height рекомендуется использовать для плавного
расширения без рывков.ExpandableTile легко комбинируется с другими элементами Carbon:
<ExpandableTile>
<div slot="above-the-fold">
<Button kind="primary">Нажми для раскрытия</Button>
</div>
<div slot="below-the-fold">
<DataTable>
<!-- строки таблицы с данными -->
</DataTable>
</div>
</ExpandableTile>
ExpandableTile обеспечивает корректную семантику для вспомогательных технологий:
Это делает компонент подходящим для интерфейсов с высокой степенью доступности.
large
размер плитки.bind:expanded.ExpandableTile в Carbon Components Svelte является мощным инструментом для организации информации, позволяя создавать динамичные и компактные интерфейсы с минимальными усилиями.