Importación

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

NuiGrid

Una cuadrícula de datos sobre una tabla nativa.

NuiGrid: Propiedades
NombreTipoPredeterminadoDescripción
rowsPropreadonly T[]Los datos. Una edición reemplaza su fila y llama a onRowsChange; las siguientes rows que pases reemplazan las ediciones.
onRowsChangeCallback(rows: readonly T[]) => voidSe llama con las filas después de cada edición confirmada.
columnsPropNuiGridColumn<T>[]Las columnas, como objetos NuiGridColumn.
rowIdProp(row: T) => unknownrow.id ?? rowLa clave de una fila, para selección y seguimiento.
labelPropstringNombre accesible de la cuadrícula.
selectionProp'none' | 'single' | 'multiple''none'Si se pueden seleccionar filas, y cuántas.
selected
defaultSelected
onSelectedChangeEstado
unknown[][]Las claves de las filas seleccionadas.
sort
defaultSort
onSortChangeEstado
NuiGridSort[][]El orden, como objetos { column, direction }; el primero ordena primero.
filters
defaultFilters
onFiltersChangeEstado
Record<string, NuiGridFilter>{}Un filtro por id de columna: un operador y un valor.
search
defaultSearch
onSearchChangeEstado
string''Palabras que deben aparecer todas en una fila.
pageSize
defaultPageSize
onPageSizeChangeEstado
number0Filas por página, o 0 para una sola lista desplazable.
page
defaultPage
onPageChangeEstado
number0La página mostrada, desde 0.
pageSizesPropnumber[][10, 25, 50, 100]Las opciones del paginador.
virtualPropboolean | 'auto''auto'Renderiza solo las filas visibles: siempre, nunca, o auto con más de 100 filas sin paginación.
heightPropstringUna longitud CSS que limita la cuadrícula; se desplaza por dentro.
columnState
defaultColumnState
onColumnStateChangeEstado
NuiGridColumnState[][]Ancho, orden, fijación y visibilidad de cada columna, para guardar y restaurar.
modeProp'client' | 'server''client'server muestra las filas tal como llegan y te deja a ti ordenar, filtrar y paginar.
totalPropnumberEl número de filas en el servidor.
loadingPropbooleanfalseMuestra una barra de progreso, y filas provisionales mientras no hay ninguna.
localePropstring'en-US'Da formato a números y fechas, y lee los números escritos.
labelsPropPartial<NuiGridLabels>Todos los textos que la cuadrícula muestra o anuncia, para traducirlos.
cornersPropNuiCornersLa forma de sus esquinas: round, squircle, bevel, scoop, notch o square.
radiusPropNuiRadiusEl tamaño de sus esquinas: none, small, medium, large o full.
densityPropNuiDensityCuánto espacio ocupa: compact, regular o roomy.
groupByPropstring[][]Columnas por las que agrupar las filas, empezando por la más externa.
collapsed
defaultCollapsed
onCollapsedChangeEstado
string[][]Claves de los grupos cerrados; los grupos empiezan abiertos.
getChildrenProp(row: T) => T[] | undefinedLos hijos de una fila: la cuadrícula muestra datos en árbol.
expanded
defaultExpanded
onExpandedChangeEstado
unknown[][]Claves de las filas abiertas en los datos en árbol; empiezan cerradas.
details
defaultDetails
onDetailsChangeEstado
unknown[][]Claves de las filas con los detalles abiertos.
totals, flashPropbooleanfalseUna fila de agregados sobre todas las filas filtradas; celdas que destellan cuando cambia su texto, en filas con un rowId estable.
layoutProp'table' | 'list' | 'auto''table'list muestra las filas como tarjetas, y auto lo hace en pantallas estrechas.
toolbarPropboolean | 'auto''auto'Una barra que ordena, filtra y selecciona todas las filas: siempre, nunca, o auto con tarjetas.
renderEmptyRender prop(filtered: boolean) => ReactNodeLo que se muestra cuando no hay filas; se le indica si los filtros las ocultaron.
renderDetailRender prop(row: T) => ReactNodeLos detalles de una fila, que se muestran debajo de ella al abrirla. La cuadrícula añade una columna de botones de alternancia.
onRowActivateCallback(row: T) => voidSe llama con una fila abierta con Intro o con doble clic.
onCellEditCallback(edit: NuiGridEdit<T>) => voidSe llama con cada edición confirmada.
onQueryChangeCallback(query: NuiGridQuery) => voidSe llama con el orden, los filtros, la búsqueda y la página cada vez que cambian, y una vez al principio.
refPropRef<NuiGridHandle>Lo que expone la ref de la cuadrícula: exportaciones, impresión y foco.
exportXlsx, printMétodo(options?) => Blob, () => voidLas filas filtradas y ordenadas, como hoja de cálculo; imprime todas las filas.
exportCsvMétodo(options?) => stringLas filas filtradas y ordenadas de las columnas visibles, en CSV.
expandAllMétodo(open?: boolean) => voidAbre todos los grupos y todas las filas con hijos, o los cierra todos.
focusCellMétodo(row: number, col: number) => voidPone el foco en una celda; la fila -1 es el encabezado.
clearFiltersMétodo() => voidBorra todos los filtros y la búsqueda.
fitMétodo(id: string) => voidAjusta una columna a la más ancha de sus celdas renderizadas.

El estado funciona como en los campos de formulario de React: pasa un valor y actualízalo desde su callback on…Change, o pasa un valor default… y deja que el componente lo guarde.

Las props de personalización que no definas siguen el atributo data-nui-* más cercano. Consulta la guía de personalización.

NuiGridColumn

Una columna. Acepta todas las propiedades de la columna de Angular (solo id y header son obligatorios) y estas dos, que la dibujan.

NuiGridColumn: Propiedades
NombreTipoPredeterminadoDescripción
renderCellRender prop({ row, value, text, column }) => ReactNodeDibuja tú las celdas de la columna, a partir de la fila, su valor y su texto.
renderHeaderRender prop(column) => ReactNodeDibuja tú el encabezado de la columna; header sigue dándole nombre.