Импорт

import-grid.tsx
import { NuiGrid, type NuiGridColumn, type NuiGridHandle } from '@needless-ui/react/grid';

NuiGrid

Таблица данных на нативной HTML-таблице.

NuiGrid: Свойства
ИмяТипПо умолчаниюОписание
rowsПропreadonly T[]Данные. Правка заменяет строку и вызывает onRowsChange; следующие переданные rows заменят правки.
onRowsChangeКолбэк(rows: readonly T[]) => voidВызывается со строками после каждой принятой правки.
columnsПропNuiGridColumn<T>[]Столбцы в виде объектов NuiGridColumn.
rowIdПроп(row: T) => unknownrow.id ?? rowКлюч строки для выбора и отслеживания.
labelПропstringДоступное имя таблицы.
selectionПроп'none' | 'single' | 'multiple''none'Можно ли выбирать строки и сколько.
selected
defaultSelected
onSelectedChangeСостояние
unknown[][]Ключи выбранных строк.
sort
defaultSort
onSortChangeСостояние
NuiGridSort[][]Сортировка в виде объектов { column, direction }; первый — основной.
filters
defaultFilters
onFiltersChangeСостояние
Record<string, NuiGridFilter>{}Фильтр для каждого id столбца: оператор и значение.
search
defaultSearch
onSearchChangeСостояние
string''Слова, которые все должны быть в строке.
pageSize
defaultPageSize
onPageSizeChangeСостояние
number0Строк на странице; 0 — один прокручиваемый список.
page
defaultPage
onPageChangeСостояние
number0Текущая страница (с 0).
pageSizesПропnumber[][10, 25, 50, 100]Варианты в пагинаторе.
virtualПропboolean | 'auto''auto'Рендерит только видимые строки: всегда, никогда или auto — свыше 100 строк без пагинации.
heightПропstringДлина CSS, ограничивающая таблицу; прокрутка — внутри.
columnState
defaultColumnState
onColumnStateChangeСостояние
NuiGridColumnState[][]Ширина, порядок, закрепление и видимость столбцов — для сохранения и восстановления.
modeПроп'client' | 'server''client'server показывает строки как есть, а сортировку, фильтрацию и пагинацию оставляет вам.
totalПропnumberЧисло строк на сервере.
loadingПропbooleanfalseПоказывает полосу загрузки, а пока строк нет — строки-заглушки.
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[][]Столбцы для группировки строк, начиная с внешнего.
collapsed
defaultCollapsed
onCollapsedChangeСостояние
string[][]Ключи свёрнутых групп; изначально группы раскрыты.
getChildrenПроп(row: T) => T[] | undefinedДочерние элементы строки: таблица показывает древовидные данные.
expanded
defaultExpanded
onExpandedChangeСостояние
unknown[][]Ключи строк, раскрытых в древовидных данных; изначально они свёрнуты.
details
defaultDetails
onDetailsChangeСостояние
unknown[][]Ключи строк с открытыми подробностями.
totals, flashПропbooleanfalseСтрока итогов по всем отфильтрованным строкам; вспышка ячеек при изменении их текста — в строках с постоянным 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), а также эти два, которые его отрисовывают.

NuiGridColumn: Свойства
ИмяТипПо умолчаниюОписание
renderCellРендер-проп({ row, value, text, column }) => ReactNodeСвоя отрисовка ячеек столбца: из строки, её значения и текста.
renderHeaderРендер-проп(column) => ReactNodeСвоя отрисовка заголовка столбца; имя ему по-прежнему даёт header.