Импорт
import { NuiGrid, type NuiGridColumn, type NuiGridHandle } from '@needless-ui/react/grid';NuiGrid
Таблица данных на нативной HTML-таблице.
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
rowsПроп | readonly T[] | Данные. Правка заменяет строку и вызывает onRowsChange; следующие переданные rows заменят правки. | |
onRowsChangeКолбэк | (rows: readonly T[]) => void | Вызывается со строками после каждой принятой правки. | |
columnsПроп | NuiGridColumn<T>[] | Столбцы в виде объектов NuiGridColumn. | |
rowIdПроп | (row: T) => unknown | row.id ?? row | Ключ строки для выбора и отслеживания. |
labelПроп | string | Доступное имя таблицы. | |
selectionПроп | 'none' | 'single' | 'multiple' | 'none' | Можно ли выбирать строки и сколько. |
selecteddefaultSelectedonSelectedChangeСостояние | unknown[] | [] | Ключи выбранных строк. |
sortdefaultSortonSortChangeСостояние | NuiGridSort[] | [] | Сортировка в виде объектов { column, direction }; первый — основной. |
filtersdefaultFiltersonFiltersChangeСостояние | Record<string, NuiGridFilter> | {} | Фильтр для каждого id столбца: оператор и значение. |
searchdefaultSearchonSearchChangeСостояние | string | '' | Слова, которые все должны быть в строке. |
pageSizedefaultPageSizeonPageSizeChangeСостояние | number | 0 | Строк на странице; 0 — один прокручиваемый список. |
pagedefaultPageonPageChangeСостояние | number | 0 | Текущая страница (с 0). |
pageSizesПроп | number[] | [10, 25, 50, 100] | Варианты в пагинаторе. |
virtualПроп | boolean | 'auto' | 'auto' | Рендерит только видимые строки: всегда, никогда или auto — свыше 100 строк без пагинации. |
heightПроп | string | Длина CSS, ограничивающая таблицу; прокрутка — внутри. | |
columnStatedefaultColumnStateonColumnStateChangeСостояние | NuiGridColumnState[] | [] | Ширина, порядок, закрепление и видимость столбцов — для сохранения и восстановления. |
modeПроп | 'client' | 'server' | 'client' | server показывает строки как есть, а сортировку, фильтрацию и пагинацию оставляет вам. |
totalПроп | number | Число строк на сервере. | |
loadingПроп | boolean | false | Показывает полосу загрузки, а пока строк нет — строки-заглушки. |
localeПроп | string | 'en-US' | Форматирует числа и даты и распознаёт введённые числа. |
labelsПроп | Partial<NuiGridLabels> | Все показываемые и озвучиваемые тексты — для перевода. | |
cornersПроп | NuiCorners | Форма углов: round, squircle, bevel, scoop, notch или square. | |
radiusПроп | NuiRadius | Радиус скругления углов: none, small, medium, large или full. | |
densityПроп | NuiDensity | Сколько места занимает компонент: compact, regular или roomy. | |
groupByПроп | string[] | [] | Столбцы для группировки строк, начиная с внешнего. |
collapseddefaultCollapsedonCollapsedChangeСостояние | string[] | [] | Ключи свёрнутых групп; изначально группы раскрыты. |
getChildrenПроп | (row: T) => T[] | undefined | Дочерние элементы строки: таблица показывает древовидные данные. | |
expandeddefaultExpandedonExpandedChangeСостояние | unknown[] | [] | Ключи строк, раскрытых в древовидных данных; изначально они свёрнуты. |
detailsdefaultDetailsonDetailsChangeСостояние | unknown[] | [] | Ключи строк с открытыми подробностями. |
totals, flashПроп | boolean | false | Строка итогов по всем отфильтрованным строкам; вспышка ячеек при изменении их текста — в строках с постоянным rowId. |
layoutПроп | 'table' | 'list' | 'auto' | 'table' | list показывает строки карточками, а auto — только на узких экранах. |
toolbarПроп | boolean | 'auto' | 'auto' | Панель, которая сортирует, фильтрует и выбирает все строки: всегда, никогда или auto — с карточками. |
renderEmptyРендер-проп | (filtered: boolean) => ReactNode | Что показать, когда строк нет. Функция узнаёт, скрыли ли их фильтры. | |
renderDetailРендер-проп | (row: T) => ReactNode | Подробности строки, которые показываются под ней, когда их открывают. Таблица добавляет столбец переключателей. | |
onRowActivateКолбэк | (row: T) => void | Вызывается со строкой, открытой по Enter или двойному клику. | |
onCellEditКолбэк | (edit: NuiGridEdit<T>) => void | Вызывается с каждой принятой правкой. | |
onQueryChangeКолбэк | (query: NuiGridQuery) => void | Вызывается с сортировкой, фильтрами, поиском и страницей при каждом их изменении, а также один раз в начале. | |
refПроп | Ref<NuiGridHandle> | Что доступно через ref таблицы: экспорт, печать и фокус. | |
exportXlsx, printМетод | (options?) => Blob, () => void | Выгружает отфильтрованные и отсортированные строки в электронную таблицу; печатает все строки. | |
exportCsvМетод | (options?) => string | Отфильтрованные и отсортированные строки видимых столбцов в CSV. | |
expandAllМетод | (open?: boolean) => void | Раскрывает все группы и все строки с дочерними элементами или сворачивает их все. | |
focusCellМетод | (row: number, col: number) => void | Переводит фокус на ячейку; строка -1 — заголовок. | |
clearFiltersМетод | () => void | Сбрасывает все фильтры и поиск. | |
fitМетод | (id: string) => void | Подгоняет ширину столбца под самую широкую из отрисованных ячеек. |
Состояние работает как у полей ввода в React: передайте значение и обновляйте его в колбэке on…Change или передайте значение default…, и его будет хранить компонент.
Если проп настройки не задан, компонент берёт его значение из ближайшего атрибута data-nui-*. Подробнее — в руководстве по настройке.
NuiGridColumn
Один столбец. Принимает все свойства столбца Angular (обязательны только id и header), а также эти два, которые его отрисовывают.
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
renderCellРендер-проп | ({ row, value, text, column }) => ReactNode | Своя отрисовка ячеек столбца: из строки, её значения и текста. | |
renderHeaderРендер-проп | (column) => ReactNode | Своя отрисовка заголовка столбца; имя ему по-прежнему даёт header. |