Для перечня однотипных элементов без колонок подойдёт CdsList, для иерархии без табличных данных — CdsTree.
Возможности таблицы разложены по разделам — они собраны в блоке Разделы документации и в меню слева. На этой странице — базовое использование и API.
Анатомия
Вокруг таблицы — слоты header, toolbar и footer и встроенная пагинация (проп pagination). Сама таблица состоит из шапки колонок и строк с ячейками.
Вариации
Отображение данных
Минимальная таблица: массив описаний колонок в columns, записи — в data. Ключ строки берётся из поля key записи либо из пропа row-key.
Свойство колонки align выравнивает содержимое — числовые значения принято выравнивать вправо.
Размеры
Свойство size управляет плотностью: md — по умолчанию, sm и xs — для насыщенных данными экранов.
Строки
Свойство row-class-name вычисляет класс строки по записи: готовый класс cds-table--striped даёт чередование фона, cds-table__row--warning и cds-table__row--error — статусную подсветку. Проп hovered подсвечивает строку под курсором.
Содержимое ячеек
Свойство колонки ellipsis обрезает длинный текст в одну строку с многоточием — и в ячейках, и в заголовках.
Адаптивность
Свойство колонки responsive перечисляет брейкпоинты, на которых колонка видима — второстепенные колонки скрываются на узких экранах.
Рекомендации
Разделы документации
- Структура и заголовки — группировка шапки, объединение ячеек, слоты вокруг таблицы, ширина колонок и декларативное описание колонок.
- Фиксация и прокрутка — закрепление шапки и колонок при прокрутке, кнопки горизонтального скролла.
- Фильтры и сортировка — фильтры колонок, множественная сортировка, сброс и своя панель фильтра.
- Выбор строк — чекбоксы, операции над выбранным набором, свои пункты меню выбора.
- Раскрытие и деревья — раскрываемые строки, вложенные таблицы и древовидные данные.
- Редактирование — редактируемые ячейки, строки и вся таблица.
- Перетаскивание — drag-n-drop строк и колонок.
- Сценарии — серверные данные и готовые рецепты продуктовых таблиц.
API
CdsTable
Пропсы
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
bordered | boolean | undefined | false | Показывать все границы таблицы |
borderless | boolean | undefined | false | Убрать все границы таблицы |
canExpandable | boolean | undefined | false | Может раскрываться |
childrenColumnName | string | undefined | 'children' | Названия свойства для дочерних элементов |
columnDraggable | NTable.NDraggable.TColumnDraggable<any> | undefined | — | Перетаскивание колонок (drag-n-drop). true или объект конфигурации
{ icon, disabled, allowDrop }. Reorder происходит только среди соседей
внутри своей группы; порядок меняет потребитель в обработчике @column-reorder. |
columns | NTable.NColumn.TColumns<any> | undefined | — | Колонки таблицы |
components | NTable.NCustomize.TableComponents<any> | undefined | — | Переопределить компоненты таблицы по умолчанию |
customHeaderRow | NTable.NCustomize.TGetComponentProps<NTable.NColumn.IColumn<any>[]> | undefined | — | Устанавливает свойства для каждой строки заголовка |
customRow | NTable.NCustomize.TGetComponentProps<any> | undefined | — | Устанавливает свойства для каждой строки |
data | any[] | undefined | — | Массив данных для отображения в таблице |
defaultExpandAllRows | boolean | undefined | false | По умолчанию все колонки раскрыты |
defaultExpandedRowKeys | NTable.TKey[] | undefined | undefined as ITableProps['defaultExpandedRowKeys'] | Ключи раскрытых строк по умолчанию |
disabled | boolean | null | undefined | null | Заблокированное состояние |
expandColumnWidth | number | undefined | — | Ширина колонки с раскрытием |
expandedRowClassName | NTable.NRow.TClassName<any> | undefined | — | Классы для строк в раскрытом состоянии |
expandedRowKeys | NTable.TKey[] | undefined | undefined as ITableProps['expandedRowKeys'] | Ключи текущих раскрытых строк (поддерживает v-model) |
expandedRowRender | NTable.NExpand.TExpandedRowRender<any> | undefined | — | Рендер для каждой раскрытой строки |
expandFixed | NTable.TFixed | undefined | — | Сделать колонку с раскрытием фиксированной (left | right | boolean) |
expandIcon | NTable.NExpand.TRenderExpandIcon<any> | undefined | — | Своя иконка раскрытия |
expandIconColumnIndex | number | undefined | — | Индекс колонки, в которой будет располагаться иконка раскрытия |
expandRowByClick | boolean | undefined | false | Раскрытие строки по клику в любое место этой строки |
footer | NTable.NRender.TPanelRender<any> | undefined | — | Рендер футера таблицы |
getPopupContainer | NTable.NCustomize.TGetPopupContainer | undefined | — | Контейнер рендеринга выпадающих списков |
header | NTable.NRender.TPanelRender<any> | undefined | — | Рендер заголовка таблицы |
hovered | boolean | undefined | false | Подсвечивание строки при наведении |
id | string | undefined | — | Идентификатор таблицы |
indentSize | number | undefined | 20 | Размер отступа в пикселях для каждого уровня вложенности |
loading | boolean | undefined | false | Загрузка таблицы |
locale | NTable.ILocale | undefined | — | Локализация таблицы (переопределяет строки глобальной локали) |
pagination | false | NTable.NPagination.IProps | undefined | — | Конфигурация пагинации таблицы |
readonly | boolean | null | undefined | null | Только для чтения |
rowClassName | string | NTable.NRow.TClassName<any> | undefined | — | Классы строки |
rowDraggable | NTable.NDraggable.TRowDraggable<any> | undefined | — | Перетаскивание строк (drag-n-drop). true или объект конфигурации
{ icon, disabled, allowDrop }. Reorder происходит только между соседями
одного родителя; порядок меняет потребитель в обработчике @row-reorder. |
rowExpandable | ((record: any) => boolean) | undefined | — | Строку можно раскрыть |
rowKey | string | NTable.NRow.TGetRowKey<any> | undefined | 'key' | Уникальный ключ строки может быть строкой или функцией возвращающей строку |
rowSelection | NTable.NRow.IRowSelection<any> | undefined | — | Конфигурация для выбора строк |
scroll | (NTable.TScroll & { scrollToFirstRowOnChange?: boolean | undefined; }) | undefined | — | Можно ли скроллить таблицу |
showExpandColumn | boolean | undefined | — | Показать раскрытую колонку |
showHeader | boolean | undefined | — | Показывать ли заголовок таблицы |
showSorterTooltip | NTable.NSorter.TTooltip | undefined | true | Показывать ли тултипы для сортировки в заголовке. Можно передать объект со свойствами для CdsTooltip. |
size | number | "xs" | "sm" | "md" | "lg" | "xl" | undefined | 'md' | Размер компонента |
sortDirection | string[] | undefined | — | Сортировка данных в таблице. 'ascend' | 'descend' |
sticky | boolean | NTable.NSticky.ISticky | undefined | — | Sticky для заголовка и скроллбара |
tableLayout | NTable.TLayout | undefined | — | Фиксированный или авто лэйаут |
theme | string | undefined | — | Тема компонента |
toolbar | NTable.NRender.TPanelRender<any> | undefined | — | Рендер тулбара таблицы |
transformCellText | NTable.NCell.TTransformCellText<any> | undefined | — | Трансформировать текст в ячейке |
События
| Имя | Тип | Описание |
|---|---|---|
change | [pagination: NTable.NPagination.IProps, filters: Record<string, NTable.TFilterValue | null>, sorter: NTable.ISorterResult<any> | NTable.ISorterResult<any>[], extra: NTable.ICurrentData<any>] | Событие изменения пагинации, фильтров или сортировки. |
columnReorder | [info: NTable.NDraggable.IColumnReorderInfo<any>] | Событие переноса колонки (drag-n-drop). Порядок колонок меняет потребитель. |
expand | [expanded: boolean, record: any] | Событие при раскрытии/сворачивании строки. |
expandedRowsChange | [expandedKeys: NTable.TKey[]] | Событие изменения раскрытых строк. |
resizeColumn | [width: number, column: NTable.NColumn.IColumn<any>] | Событие изменения размера колонки. |
rowReorder | [info: NTable.NDraggable.IRowReorderInfo<any>] | Событие переноса строки (drag-n-drop). Порядок данных меняет потребитель. |
update:expandedRowKeys | [expandedKeys: NTable.TKey[]] | Событие обновления раскрытых строк (v-model). |
Слоты
| Имя | Тип | Описание |
|---|---|---|
bodyCell | { text: any; value: any; record: any; index: number; column: NTable.NColumn.IColumn<any>; } | Кастомный рендер ячейки тела таблицы. |
customFilterDropdown | NTable.NColumn.IFilterDropdownProps<any> | Кастомное выпадающее меню фильтра колонки (используется с customFilterDropdown у колонки). |
customFilterIcon | { filtered: boolean; column: NTable.NColumn.IColumn<any>; } | Кастомная иконка фильтра колонки. |
default | any | Декларативное описание колонок через CdsTableColumn / CdsTableColumnGroup. |
emptyText | any | Контент при отсутствии данных. |
expandedRowRender | { record: any; index: number; indent: number; expanded: boolean; } | Рендер содержимого раскрытой строки. |
expandIcon | NTable.NExpand.IRenderExpandIconProps<any> | Кастомная иконка раскрытия строки. |
footer | readonly any[] | Футер таблицы (панель под таблицей). |
header | readonly any[] | Заголовок таблицы (панель над таблицей). |
headerCell | { title: NTable.NColumn.TTitle<any>; column: NTable.NColumn.IColumn<any>; } | Кастомный рендер ячейки заголовка таблицы. |
summary | { pageData: readonly any[]; } | Итоговая строка таблицы. |
toolbar | readonly any[] | Тулбар таблицы (панель над таблицей). |
Exposed
| Имя | Тип | Описание |
|---|---|---|
table | any | Ссылка на внутренний экземпляр таблицы — даёт доступ к её методам и состоянию. |
CdsTableColumn
Слоты
| Имя | Тип | Описание |
|---|---|---|
default | { value: any; text: any; record: any; index?: number | undefined; renderIndex?: number | undefined; column: NTable.NColumn.IColumn<any>; } | Кастомный рендер ячейки колонки. |
filterIcon | { filtered: boolean; column: NTable.NColumn.IColumn<any>; } | Кастомная иконка фильтра колонки. |
title | NTable.NColumn.ITitleProps<any> | Заголовок колонки. |
CdsTableColumnGroup
Слоты
| Имя | Тип | Описание |
|---|---|---|
default | any | Колонки группы (CdsTableColumn). |
title | NTable.NColumn.ITitleProps<any> | Заголовок группы колонок. |