Компоненты Table, TableHead, TableBody, TableRow, TableCell позволяют создавать сложные и адаптивные таблицы с использованием возможностей библиотеки Carbon Components Svelte. Эти компоненты соответствуют стандартам дизайна Carbon и обеспечивают консистентный интерфейс и функциональность.
Компонент <Table> является контейнером для всей
таблицы. Он обеспечивает базовую структуру и стилизацию, включая
полосатость строк, сортировку и поддержку выбора строк. Основные
свойства:
size – определяет размер таблицы
('sm' | 'md' | 'lg'). По умолчанию 'md'.sortable – включает возможность
сортировки столбцов.selection – включает режим выбора
строк.compact – делает таблицу более
компактной, уменьшает отступы и размеры шрифта.Пример использования:
<Table size="lg" sortable selection>
<!-- Содержимое таблицы -->
</Table>
Компонент <TableHead> определяет заголовочную
часть таблицы. Он содержит строки заголовка, каждая из которых состоит
из ячеек <TableCell>. В заголовке можно активировать
сортировку для отдельных столбцов.
sortable в
<TableCell> – указывает, что столбец
поддерживает сортировку.sortDirection
('ascending' | 'descending' | null).Пример:
<TableHead>
<TableRow>
<TableCell sortable sortDirection={sortColumn === 'name' ? sortDirection : null}>
Имя
</TableCell>
<TableCell>
Возраст
</TableCell>
<TableCell>
Город
</TableCell>
</TableRow>
</TableHead>
Компонент <TableBody> содержит строки данных
таблицы. Внутри него располагаются компоненты
<TableRow>, которые, в свою очередь, содержат
<TableCell> с содержимым.
#each.selected.Пример:
<TableBody>
{#each users as user}
<TableRow selected={user.id === selectedUserId}>
<TableCell>{user.name}</TableCell>
<TableCell>{user.age}</TableCell>
<TableCell>{user.city}</TableCell>
</TableRow>
{/each}
</TableBody>
Компонент <TableRow> представляет отдельную строку
таблицы. Основные возможности:
selected – выделяет строку.on:click – позволяет отслеживать выбор
строки.Пример:
<TableRow on:click={() => handleRowClick(user.id)} selected={user.id === selectedId}>
<TableCell>{user.name}</TableCell>
<TableCell>{user.role}</TableCell>
</TableRow>
Компонент <TableCell> используется для отображения
отдельных ячеек в строках и заголовках. Основные свойства:
header – делает ячейку заголовочной
(для <TableRow> внутри
<TableHead>).sortable – указывает, что ячейка
поддерживает сортировку.colspan и rowspan –
позволяют объединять ячейки по горизонтали и вертикали.truncate – сокращает длинный текст с
многоточием.Пример:
<TableCell header>
Название
</TableCell>
<TableCell colspan={2}>
Объединённая ячейка
</TableCell>
Использование Carbon Components Svelte позволяет легко интегрировать таблицы с динамическими данными из массивов или API. При этом рекомендуется:
Пример динамического создания таблицы:
<script>
let columns = ['Имя', 'Возраст', 'Город'];
let users = [
{ name: 'Иван', age: 30, city: 'Москва' },
{ name: 'Анна', age: 25, city: 'Санкт-Петербург' }
];
</script>
<Table>
<TableHead>
<TableRow>
{#each columns as col}
<TableCell>{col}</TableCell>
{/each}
</TableRow>
</TableHead>
<TableBody>
{#each users as user}
<TableRow>
<TableCell>{user.name}</TableCell>
<TableCell>{user.age}</TableCell>
<TableCell>{user.city}</TableCell>
</TableRow>
{/each}
</TableBody>
</Table>
Carbon Components Svelte предоставляет готовые классы для адаптивного и доступного отображения таблиц. Дополнительные возможности:
striped.hover.Пример с полосатой таблицей и подсветкой:
<Table striped hover>
<!-- TableHead и TableBody -->
</Table>
Этот подход к работе с компонентами таблицы обеспечивает полное соответствие стандартам Carbon, удобное управление данными и гибкость при построении сложных интерфейсов в Svelte.