Компонент TableHeader является ключевым элементом при создании таблиц в Carbon Components Svelte, обеспечивая структурированное отображение заголовков столбцов и управление их поведением, включая сортировку, доступность и стилизацию.
<TableHeader>
<TableHeaderRow>
<TableHeaderCell sortable={true} sortDirection="none">Имя</TableHeaderCell>
<TableHeaderCell sortable={true} sortDirection="none">Возраст</TableHeaderCell>
<TableHeaderCell>Город</TableHeaderCell>
</TableHeaderRow>
</TableHeader>
<TableHeader> — обёртка для всех заголовков
столбцов.<TableHeaderRow> — строка заголовков,
поддерживает одну или несколько строк.<TableHeaderCell> — отдельный заголовок
столбца.Ключевые свойства для TableHeaderCell:
| Свойство | Тип | Описание |
|---|---|---|
sortable |
boolean | Делает столбец сортируемым. |
sortDirection |
string | Направление сортировки: "none",
"ascending", "descending". |
scope |
string | Устанавливает семантический scope для <th>:
"col" или "row". |
abbr |
string | Аббревиатура заголовка для экранных читалок. |
on:click |
function | Позволяет определить кастомное поведение при клике на заголовок. |
Сортировка в TableHeader реализуется через
комбинацию sortable и sortDirection.
Пример:
<script>
import { TableHeader, TableHeaderRow, TableHeaderCell } from "carbon-components-svelte";
let sortBy = '';
let sortDir = 'none';
function handleSort(column) {
if (sortBy === column) {
sortDir = sortDir === 'ascending' ? 'descending' : 'ascending';
} else {
sortBy = column;
sortDir = 'ascending';
}
}
</script>
<TableHeader>
<TableHeaderRow>
<TableHeaderCell
sortable={true}
sortDirection={sortBy === 'name' ? sortDir : 'none'}
on:click={() => handleSort('name')}
>Имя</TableHeaderCell>
<TableHeaderCell
sortable={true}
sortDirection={sortBy === 'age' ? sortDir : 'none'}
on:click={() => handleSort('age')}
>Возраст</TableHeaderCell>
</TableHeaderRow>
</TableHeader>
Особенности:
sortDirection="none" отображает отсутствие активной
сортировки.Carbon Components Svelte поддерживает таблицы с многоуровневыми заголовками:
<TableHeader>
<TableHeaderRow>
<TableHeaderCell rowspan="2">ID</TableHeaderCell>
<TableHeaderCell colspan="2">Личные данные</TableHeaderCell>
</TableHeaderRow>
<TableHeaderRow>
<TableHeaderCell>Имя</TableHeaderCell>
<TableHeaderCell>Фамилия</TableHeaderCell>
</TableHeaderRow>
</TableHeader>
rowspan и colspan позволяют объединять
ячейки по строкам и столбцам.<TableHeaderRow> создаёт
визуально структурированные заголовки.scope="col" указывает, что ячейка является
заголовком столбца.abbr сокращает длинные заголовки для экранных
читалок.aria-sort) для улучшения доступности.Пример с доступностью:
<TableHeader>
<TableHeaderRow>
<TableHeaderCell sortable={true} sortDirection="none" scope="col" abbr="Full Name">
Полное имя
</TableHeaderCell>
</TableHeaderRow>
</TableHeader>
Компонент поддерживает стандартную Carbon-тему.
Для кастомной стилизации можно использовать CSS-переменные Carbon:
--cds-table-header-background--cds-table-header-color--cds-table-header-font-sizeМожно добавлять классы через class для каждой ячейки
или строки заголовков.
scope="col" для всех заголовков
столбцов.sortable только там, где требуется
сортировка.<TableHeaderRow> и управлять
rowspan/colspan.sortDirection синхронно с логикой сортировки
данных таблицы.Эта структура TableHeader позволяет создавать таблицы с богатым функционалом: сортировка, многоуровневые заголовки, поддержка доступности и кастомная стилизация, полностью интегрированные в экосистему Carbon Components Svelte.