Importação

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

NuiGrid

Uma grade de dados sobre uma tabela nativa.

NuiGrid: Propriedades
NomeTipoPadrãoDescrição
rowsPropreadonly T[]Os dados. Uma edição substitui a linha dela e chama onRowsChange; as próximas rows que você passar substituem as edições.
onRowsChangeCallback(rows: readonly T[]) => voidChamado com as linhas depois de cada edição confirmada.
columnsPropNuiGridColumn<T>[]As colunas, como objetos NuiGridColumn.
rowIdProp(row: T) => unknownrow.id ?? rowA chave de uma linha, para seleção e rastreamento.
labelPropstringNome acessível da grade.
selectionProp'none' | 'single' | 'multiple''none'Se as linhas podem ser selecionadas, e quantas.
selected
defaultSelected
onSelectedChangeEstado
unknown[][]As chaves das linhas selecionadas.
sort
defaultSort
onSortChangeEstado
NuiGridSort[][]A ordenação, como objetos { column, direction }; o primeiro ordena primeiro.
filters
defaultFilters
onFiltersChangeEstado
Record<string, NuiGridFilter>{}Um filtro por id de coluna: um operador e um valor.
search
defaultSearch
onSearchChangeEstado
string''Palavras que precisam aparecer todas em uma linha.
pageSize
defaultPageSize
onPageSizeChangeEstado
number0Linhas por página, ou 0 para uma única lista rolável.
page
defaultPage
onPageChangeEstado
number0A página mostrada, a partir de 0.
pageSizesPropnumber[][10, 25, 50, 100]As opções do paginador.
virtualPropboolean | 'auto''auto'Renderiza só as linhas visíveis: sempre, nunca, ou auto acima de 100 linhas sem paginação.
heightPropstringUm comprimento CSS que limita a grade; o conteúdo rola dentro dela.
columnState
defaultColumnState
onColumnStateChangeEstado
NuiGridColumnState[][]A largura, a ordem, a fixação e a visibilidade de cada coluna, para salvar e restaurar.
modeProp'client' | 'server''client'server mostra as linhas conforme chegam e deixa a ordenação, a filtragem e a paginação com você.
totalPropnumberO número de linhas no servidor.
loadingPropbooleanfalseMostra uma barra de progresso, e linhas provisórias enquanto não há nenhuma.
localePropstring'en-US'Formata números e datas, e lê números digitados.
labelsPropPartial<NuiGridLabels>Todo texto que a grade mostra ou anuncia, para traduzir.
cornersPropNuiCornersO formato dos cantos: round, squircle, bevel, scoop, notch ou square.
radiusPropNuiRadiusO tamanho dos cantos: none, small, medium, large ou full.
densityPropNuiDensityQuanto espaço ele ocupa: compact, regular ou roomy.
groupByPropstring[][]As colunas pelas quais agrupar as linhas, a partir da mais externa.
collapsed
defaultCollapsed
onCollapsedChangeEstado
string[][]As chaves dos grupos fechados; os grupos começam abertos.
getChildrenProp(row: T) => T[] | undefinedOs filhos de uma linha: a grade mostra dados em árvore.
expanded
defaultExpanded
onExpandedChangeEstado
unknown[][]As chaves das linhas abertas nos dados em árvore; elas começam fechadas.
details
defaultDetails
onDetailsChangeEstado
unknown[][]As chaves das linhas com os detalhes abertos.
totals, flashPropbooleanfalseUma linha de agregados sobre todas as linhas filtradas; células que piscam quando o texto delas muda, em linhas com um rowId estável.
layoutProp'table' | 'list' | 'auto''table'list mostra as linhas como cards, e auto faz isso em telas estreitas.
toolbarPropboolean | 'auto''auto'Uma barra que ordena, filtra e seleciona todas as linhas: sempre, nunca, ou auto com cards.
renderEmptyRender prop(filtered: boolean) => ReactNodeO que aparece quando não há linhas; a função fica sabendo se os filtros as ocultaram.
renderDetailRender prop(row: T) => ReactNodeOs detalhes de uma linha, mostrados abaixo dela quando abertos. A grade adiciona uma coluna de botões de alternância.
onRowActivateCallback(row: T) => voidChamado com uma linha aberta com Enter ou com um clique duplo.
onCellEditCallback(edit: NuiGridEdit<T>) => voidChamado com cada edição confirmada.
onQueryChangeCallback(query: NuiGridQuery) => voidChamado com a ordenação, os filtros, a busca e a página sempre que mudam, e uma vez no início.
refPropRef<NuiGridHandle>O que a ref da grade expõe: exportações, impressão e foco.
exportXlsx, printMétodo(options?) => Blob, () => voidAs linhas filtradas e ordenadas como planilha; imprime todas as linhas.
exportCsvMétodo(options?) => stringAs linhas filtradas e ordenadas das colunas visíveis, em CSV.
expandAllMétodo(open?: boolean) => voidAbre todos os grupos e todas as linhas com filhos, ou fecha todos.
focusCellMétodo(row: number, col: number) => voidMove o foco para uma célula; a linha -1 é o cabeçalho.
clearFiltersMétodo() => voidLimpa todos os filtros e a busca.
fitMétodo(id: string) => voidAjusta uma coluna à mais larga das células renderizadas dela.

O estado funciona como nos campos de formulário do React: passe um valor e atualize-o pelo callback on…Change dele, ou passe um valor default… e deixe o componente guardá-lo.

As props de personalização que você não definir seguem o atributo data-nui-* mais próximo. Veja o guia de personalização.

NuiGridColumn

Uma coluna. Aceita todas as propriedades da coluna do Angular (só id e header são obrigatórios), além destas duas, que a desenham.

NuiGridColumn: Propriedades
NomeTipoPadrãoDescrição
renderCellRender prop({ row, value, text, column }) => ReactNodeDesenhe você mesmo as células da coluna, a partir da linha, do valor e do texto dela.
renderHeaderRender prop(column) => ReactNodeDesenhe você mesmo o cabeçalho da coluna; header continua dando nome a ela.