Table
Нативная таблица с необязательным интерактивным адаптером.
- Браузеры
- Chrome 123+Firefox 121+Safari 17.5+
- Уровень
- 0
- Сжатый размер
- 617 B
- Лимит принудительной компоновки
- 0 ms
- Лимит axe
- 0
- Совместим с SSR
- Да
- Публичный контракт
- Тестовый стенд
Песочница
Table
Пример нативной таблицы
| Имя | Роль | Статус |
|---|---|---|
| Alice Chen | Администратор | Активен |
| Bob Smith | Редактор | Активен |
| Carol Lee | Наблюдатель | Приглашён |
| 3 участника · 2 активных | ||
Сортировка, фильтрация и раскрытие
| Роль | Подробнее | ||
|---|---|---|---|
| Alice Chen | Администратор | ||
| alice@example.com · Активен | |||
| Bob Smith | Редактор | ||
| bob@example.com · Активен | |||
| Carol Lee | Наблюдатель | ||
| carol@example.com · Приглашён | |||
| Участников: 3 · выбрано: 0 | |||
Закреплённые заголовки, подвал и столбцы
API
Table.Root (native)
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
layout | "auto" | "fixed" | "auto" | Нативная компоновка таблицы. Выбор, сортировка и раскрытие используют отдельную точку входа TableClient. |
size | "sm" | "md" | "lg" | — | Интервалы ячеек из выбранной таблицы стилей. |
variant | "solid" | "outline" | "ghost" | — | Вариант поверхности из выбранной таблицы стилей. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.Footer
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
sticky | boolean | — | Закрепляет подвал в конце блочной оси контейнера прокрутки. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.RowHeader / Table.Cell / Table.ColumnHeader
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
align | "start" | "center" | "end" | "start" | Логическое выравнивание текста в ячейке. |
sticky | "start" | "end" | — | Закрепляет ячейку у логического строчного края. Для соседних закреплённых ячеек задайте каждой --uiify-table-sticky-offset. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
TableClient.ExpandTrigger / TableClient.ExpandedRow
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
rowId* | string | — | Общий ключ строки, связывающий кнопку раскрытия с нативным <tr>. Внутрь раскрытой строки поместите <td colSpan={columnCount}>. |
TableClient.Root — @gunkin/uiify/components/table/client
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
aria-label | string | — | Доступное название таблицы, если нет видимой подписи или заголовка. |
aria-labelledby | string | — | Идентификатор элемента, который подписывает таблицу. |
selectionMode | "none" | "single" | "multiple" | "none" | Разрешён ли выбор строк и скольких одновременно; «none» формирует обычную статическую таблицу без роли grid. |
selectionBehavior | "toggle" | "replace" | — | Добавляет ли щелчок строку к выбору или заменяет текущий выбор. |
defaultSelectedKeys | Iterable<string> | — | Изначально выбранные идентификаторы строк; выбор остаётся неуправляемым внутри компонента. |
selectedKeys | Iterable<string> | — | Текущие выбранные идентификаторы строк; выбором управляет вызывающая сторона. |
onSelectionChange | (selectedKeys: Set<string>) => void | — | Вызывается с новым набором идентификаторов выбранных строк при каждом изменении выбора. |
defaultSortDescriptor | SortDescriptor | null | — | Начальные столбец и направление сортировки; состояние сортировки остаётся неуправляемым внутри компонента. |
sortDescriptor | SortDescriptor | null | — | Текущие столбец и направление сортировки; сортировка становится управляемой. |
onSortChange | (descriptor: SortDescriptor | null) => void | — | Вызывается с новым описателем сортировки или null при активации заголовка сортируемого столбца. |
expandedKeys / defaultExpandedKeys | Iterable<string> | — | Управляемые или начальные ключи раскрытых строк. |
onExpandedChange | (keys: Set<string>) => void | — | Сообщает о запросах раскрытия. Управляемые строки ждут обновлённых ключей. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.Header
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
sticky | boolean | false | Закрепляет секцию в контейнере прокрутки: Header — у начала блочной оси, Footer — у конца. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.Body
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
children | ReactNode | — | Строки тела таблицы. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.Row
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
id* | string | — | Стабильный идентификатор строки, используемый как ключ выбора и идентификатор элемента. |
disabled | boolean | false | Запрещает выбор строки и получение фокуса с клавиатуры. |
selected | boolean | — | Помечает строку выбранной в серверной разметке до того, как управление перейдёт хранилищу выбора. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.ColumnHeader
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
id* | string | — | Идентификатор столбца, на который ссылаются описатели сортировки. |
allowsSorting | boolean | false | Позволяет заголовку переключать сортировку столбца и отражать её через aria-sort. |
sortDirection | "ascending" | "descending" | null | — | Направление сортировки столбца в начальной серверной разметке, если сортировка разрешена. |
onClick | React.MouseEventHandler<HTMLTableCellElement> | — | Выполняется перед сортировкой; preventDefault() отменяет её изменение. |
children | ReactNode | — | Подпись заголовка. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.Cell
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
children | ReactNode | — | Содержимое ячейки. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.Caption
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
children | ReactNode | — | Текст подписи, описывающей таблицу. |
render | ReactElement | ((props, state) => ReactElement) | — | Заменяет отображаемый элемент, сохраняя поведение и связи доступности. |
Table.RowSelect
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
rowId* | string | — | Идентификатор строки, которую этот флажок выбирает и снимает с выбора. |
Клавиатура
| Клавиша | Действие |
|---|---|
| Tab | Перевести фокус на элементы сортировки, выбора и раскрытия в TableClient |
| Enter / Space | Активировать кнопку сортировки или раскрытия в фокусе; переключить флажок |
| Arrow keys | Перемещаться между доступными для выбора строками тела таблицы в TableClient |
Доступность
По умолчанию Table формирует нативные <table>, <caption>, <thead>, <tbody> и <tfoot> без клиентского JavaScript; для семантики заголовков используйте ColumnHeader и RowHeader. Точка входа /client добавляет сортировку, выбор, навигацию по строкам с клавиатуры и управляемое раскрытие, отражённые в aria-sort, aria-expanded и aria-controls. ExpandedRow — нативный <tr>; поместите внутрь Cell с colSpan. Фильтрацией и порядком строк управляет потребитель.
Привязка стилей
data-uiify-tabledata-partdata-layoutdata-sizedata-variantdata-stickydata-selecteddata-disabled--uiify-table-sticky-offset