Expandable Rows — это компонент таблицы, который позволяет создавать строки с возможностью раскрытия дополнительной информации. В Carbon Components Svelte они реализованы с учётом реактивности Svelte и поддерживают все возможности стандартного стиля IBM Carbon Design System.
Для использования раскрывающихся строк в таблице применяются компоненты:
DataTableTableTableHeadTableBodyTableRowTableCellExpandableRowПример базовой структуры:
{#each headers as header}
{header.header}
{/each}
{#each rows as row}
{row.id}
{row.name}
{row.status}
{row.details}
{/each}
Ключевые моменты:
slot="expanded" используется для контента,
который будет виден только при раскрытии строки.row передается внутрь
ExpandableRow для синхронизации данных.ExpandableRow ведут себя как
обычные ячейки таблицы, сохраняя стиль Carbon.Состояние каждой строки управляется через внутреннюю переменную
expanded. Можно контролировать раскрытие программно:
toggleRow(row.id)}>
...
Особенности:
expanded принимает булево значение.toggle позволяет реагировать на клики
пользователя по иконке раскрытия.Set или массивов с реактивной привязкой.Carbon Components Svelte автоматически применяет стандартные стили Carbon. Для настройки внешнего вида:
class на ExpandableRow для
дополнительных стилей.
...
Раскрывающиеся строки часто используют для отображения дополнительной
информации, которую удобно загружать динамически. Подход с
await в Svelte:
{row.name}
{#await fetchDetails(row.id) then details}
{details.description}
{:catch error}
Ошибка загрузки
{:then}
Загрузка...
{/await}
Особенности:
ExpandableRow можно использовать для интеграции с
формами внутри раскрывающегося блока:
{row.name}
Особенности:
slot="expanded"
работают как в обычной Svelte-компонентной логике.bind:value и реактивные переменные
для мгновенного обновления данных таблицы.each с key={row.id} для
оптимизации рендера.if вместо CSS display: none.slot="expanded" и
выполнять их асинхронно.ExpandableRow совместим с Checkbox,
Button, Tooltip.