Import

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

NuiGrid

Ein Data Grid auf einer nativen Tabelle.

NuiGrid: Eigenschaften
NameTypStandardwertBeschreibung
rowsPropreadonly T[]Die Daten. Eine Änderung ersetzt ihre Zeile und ruft onRowsChange auf; die nächsten rows, die du übergibst, ersetzen die Änderungen.
onRowsChangeCallback(rows: readonly T[]) => voidWird nach jeder übernommenen Änderung mit den Zeilen aufgerufen.
columnsPropNuiGridColumn<T>[]Die Spalten als NuiGridColumn-Objekte.
rowIdProp(row: T) => unknownrow.id ?? rowDer Schlüssel einer Zeile, für Auswahl und Tracking.
labelPropstringZugänglicher Name des Grids.
selectionProp'none' | 'single' | 'multiple''none'Ob sich Zeilen auswählen lassen, und wie viele.
selected
defaultSelected
onSelectedChangeState
unknown[][]Die Schlüssel der ausgewählten Zeilen.
sort
defaultSort
onSortChangeState
NuiGridSort[][]Die Sortierung als { column, direction }-Objekte; das erste sortiert zuerst.
filters
defaultFilters
onFiltersChangeState
Record<string, NuiGridFilter>{}Ein Filter pro Spalten-ID: ein Operator und ein Wert.
search
defaultSearch
onSearchChangeState
string''Wörter, die alle in einer Zeile vorkommen müssen.
pageSize
defaultPageSize
onPageSizeChangeState
number0Zeilen pro Seite oder 0 für eine durchgehende Liste.
page
defaultPage
onPageChangeState
number0Die angezeigte Seite, ab 0.
pageSizesPropnumber[][10, 25, 50, 100]Die Optionen der Seitennavigation.
virtualPropboolean | 'auto''auto'Rendert nur die sichtbaren Zeilen: immer, nie oder auto bei mehr als 100 Zeilen ohne Paginierung.
heightPropstringEine CSS-Länge, die das Grid begrenzt; der Inhalt scrollt darin.
columnState
defaultColumnState
onColumnStateChangeState
NuiGridColumnState[][]Breite, Reihenfolge, Fixierung und Sichtbarkeit jeder Spalte, zum Speichern und Wiederherstellen.
modeProp'client' | 'server''client'server zeigt die Zeilen, wie sie ankommen, und überlässt dir Sortieren, Filtern und Paginieren.
totalPropnumberDie Anzahl der Zeilen auf dem Server.
loadingPropbooleanfalseZeigt einen Fortschrittsbalken und, solange Zeilen fehlen, Platzhalterzeilen.
localePropstring'en-US'Formatiert Zahlen und Datumsangaben und liest eingegebene Zahlen ein.
labelsPropPartial<NuiGridLabels>Alle Texte, die das Grid anzeigt oder ansagt, zum Übersetzen.
cornersPropNuiCornersDie Form der Ecken: round, squircle, bevel, scoop, notch oder square.
radiusPropNuiRadiusWie groß die Ecken sind: none, small, medium, large oder full.
densityPropNuiDensityWie viel Platz die Komponente einnimmt: compact, regular oder roomy.
groupByPropstring[][]Spalten, nach denen Zeilen gruppiert werden, die äußerste zuerst.
collapsed
defaultCollapsed
onCollapsedChangeState
string[][]Die Schlüssel der geschlossenen Gruppen; anfangs sind alle Gruppen offen.
getChildrenProp(row: T) => T[] | undefinedDie Kindzeilen einer Zeile: Das Grid zeigt Baumdaten.
expanded
defaultExpanded
onExpandedChangeState
unknown[][]Die Schlüssel der Zeilen, die in Baumdaten offen sind; anfangs sind sie geschlossen.
details
defaultDetails
onDetailsChangeState
unknown[][]Die Schlüssel der Zeilen, deren Details offen sind.
totals, flashPropbooleanfalseEine Zeile mit Aggregaten über alle gefilterten Zeilen; Zellen, die kurz aufleuchten, wenn sich ihr Text ändert, in Zeilen mit einer stabilen rowId.
layoutProp'table' | 'list' | 'auto''table'list zeigt Zeilen als Karten, auto nur auf schmalen Bildschirmen.
toolbarPropboolean | 'auto''auto'Eine Leiste, die die Zeilen sortiert, filtert und alle auswählt: immer, nie oder auto bei Karten.
renderEmptyRender-Prop(filtered: boolean) => ReactNodeWas erscheint, wenn es keine Zeilen gibt; die Funktion erfährt, ob Filter sie ausgeblendet haben.
renderDetailRender-Prop(row: T) => ReactNodeDie Details einer Zeile, die beim Öffnen darunter erscheinen. Das Grid ergänzt eine Spalte mit Toggle-Buttons.
onRowActivateCallback(row: T) => voidWird mit einer per Enter oder Doppelklick geöffneten Zeile aufgerufen.
onCellEditCallback(edit: NuiGridEdit<T>) => voidWird mit jeder übernommenen Änderung aufgerufen.
onQueryChangeCallback(query: NuiGridQuery) => voidWird mit Sortierung, Filtern, Suche und Seite aufgerufen, sobald sie sich ändern, und einmal zu Beginn.
refPropRef<NuiGridHandle>Was du über die ref des Grids erreichst: Exporte, Drucken und Fokus.
exportXlsx, printMethode(options?) => Blob, () => voidDie gefilterten, sortierten Zeilen als Tabellenkalkulationsdatei; druckt alle Zeilen.
exportCsvMethode(options?) => stringDie gefilterten, sortierten Zeilen der sichtbaren Spalten als CSV.
expandAllMethode(open?: boolean) => voidÖffnet jede Gruppe und jede Zeile mit Kindzeilen oder schließt alle.
focusCellMethode(row: number, col: number) => voidFokussiert eine Zelle; Zeile -1 ist die Kopfzeile.
clearFiltersMethode() => voidSetzt alle Filter und die Suche zurück.
fitMethode(id: string) => voidPasst eine Spalte an die breiteste ihrer gerenderten Zellen an.

State funktioniert wie bei Formularfeldern in React: Übergib einen Wert und aktualisiere ihn in seinem on…Change-Callback, oder übergib einen default…-Wert und überlass ihn der Komponente.

Anpassungs-Props, die du nicht setzt, richten sich nach dem nächstgelegenen data-nui-*-Attribut. Mehr dazu in der Anleitung zur Anpassung.

NuiGridColumn

Eine Spalte. Sie akzeptiert alle Eigenschaften der Angular-Spalte (nur id und header sind Pflicht) und dazu diese zwei, die sie zeichnen.

NuiGridColumn: Eigenschaften
NameTypStandardwertBeschreibung
renderCellRender-Prop({ row, value, text, column }) => ReactNodeDamit zeichnest du die Zellen der Spalte selbst, aus der Zeile, ihrem Wert und ihrem Text.
renderHeaderRender-Prop(column) => ReactNodeDamit zeichnest du den Kopf der Spalte selbst; header benennt die Spalte weiterhin.