Importação
import { NuiGrid, type NuiGridColumn, type NuiGridHandle } from '@needless-ui/react/grid';NuiGrid
Uma grade de dados sobre uma tabela nativa.
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
rowsProp | readonly 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[]) => void | Chamado com as linhas depois de cada edição confirmada. | |
columnsProp | NuiGridColumn<T>[] | As colunas, como objetos NuiGridColumn. | |
rowIdProp | (row: T) => unknown | row.id ?? row | A chave de uma linha, para seleção e rastreamento. |
labelProp | string | Nome acessível da grade. | |
selectionProp | 'none' | 'single' | 'multiple' | 'none' | Se as linhas podem ser selecionadas, e quantas. |
selecteddefaultSelectedonSelectedChangeEstado | unknown[] | [] | As chaves das linhas selecionadas. |
sortdefaultSortonSortChangeEstado | NuiGridSort[] | [] | A ordenação, como objetos { column, direction }; o primeiro ordena primeiro. |
filtersdefaultFiltersonFiltersChangeEstado | Record<string, NuiGridFilter> | {} | Um filtro por id de coluna: um operador e um valor. |
searchdefaultSearchonSearchChangeEstado | string | '' | Palavras que precisam aparecer todas em uma linha. |
pageSizedefaultPageSizeonPageSizeChangeEstado | number | 0 | Linhas por página, ou 0 para uma única lista rolável. |
pagedefaultPageonPageChangeEstado | number | 0 | A página mostrada, a partir de 0. |
pageSizesProp | number[] | [10, 25, 50, 100] | As opções do paginador. |
virtualProp | boolean | 'auto' | 'auto' | Renderiza só as linhas visíveis: sempre, nunca, ou auto acima de 100 linhas sem paginação. |
heightProp | string | Um comprimento CSS que limita a grade; o conteúdo rola dentro dela. | |
columnStatedefaultColumnStateonColumnStateChangeEstado | 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ê. |
totalProp | number | O número de linhas no servidor. | |
loadingProp | boolean | false | Mostra uma barra de progresso, e linhas provisórias enquanto não há nenhuma. |
localeProp | string | 'en-US' | Formata números e datas, e lê números digitados. |
labelsProp | Partial<NuiGridLabels> | Todo texto que a grade mostra ou anuncia, para traduzir. | |
cornersProp | NuiCorners | O formato dos cantos: round, squircle, bevel, scoop, notch ou square. | |
radiusProp | NuiRadius | O tamanho dos cantos: none, small, medium, large ou full. | |
densityProp | NuiDensity | Quanto espaço ele ocupa: compact, regular ou roomy. | |
groupByProp | string[] | [] | As colunas pelas quais agrupar as linhas, a partir da mais externa. |
collapseddefaultCollapsedonCollapsedChangeEstado | string[] | [] | As chaves dos grupos fechados; os grupos começam abertos. |
getChildrenProp | (row: T) => T[] | undefined | Os filhos de uma linha: a grade mostra dados em árvore. | |
expandeddefaultExpandedonExpandedChangeEstado | unknown[] | [] | As chaves das linhas abertas nos dados em árvore; elas começam fechadas. |
detailsdefaultDetailsonDetailsChangeEstado | unknown[] | [] | As chaves das linhas com os detalhes abertos. |
totals, flashProp | boolean | false | Uma 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. |
toolbarProp | boolean | 'auto' | 'auto' | Uma barra que ordena, filtra e seleciona todas as linhas: sempre, nunca, ou auto com cards. |
renderEmptyRender prop | (filtered: boolean) => ReactNode | O que aparece quando não há linhas; a função fica sabendo se os filtros as ocultaram. | |
renderDetailRender prop | (row: T) => ReactNode | Os detalhes de uma linha, mostrados abaixo dela quando abertos. A grade adiciona uma coluna de botões de alternância. | |
onRowActivateCallback | (row: T) => void | Chamado com uma linha aberta com Enter ou com um clique duplo. | |
onCellEditCallback | (edit: NuiGridEdit<T>) => void | Chamado com cada edição confirmada. | |
onQueryChangeCallback | (query: NuiGridQuery) => void | Chamado com a ordenação, os filtros, a busca e a página sempre que mudam, e uma vez no início. | |
refProp | Ref<NuiGridHandle> | O que a ref da grade expõe: exportações, impressão e foco. | |
exportXlsx, printMétodo | (options?) => Blob, () => void | As linhas filtradas e ordenadas como planilha; imprime todas as linhas. | |
exportCsvMétodo | (options?) => string | As linhas filtradas e ordenadas das colunas visíveis, em CSV. | |
expandAllMétodo | (open?: boolean) => void | Abre todos os grupos e todas as linhas com filhos, ou fecha todos. | |
focusCellMétodo | (row: number, col: number) => void | Move o foco para uma célula; a linha -1 é o cabeçalho. | |
clearFiltersMétodo | () => void | Limpa todos os filtros e a busca. | |
fitMétodo | (id: string) => void | Ajusta 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.
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
renderCellRender prop | ({ row, value, text, column }) => ReactNode | Desenhe você mesmo as células da coluna, a partir da linha, do valor e do texto dela. | |
renderHeaderRender prop | (column) => ReactNode | Desenhe você mesmo o cabeçalho da coluna; header continua dando nome a ela. |