Import
import { NuiGrid, type NuiGridColumn, type NuiGridHandle } from '@needless-ui/react/grid';NuiGrid
Ein Data Grid auf einer nativen Tabelle.
| Name | Typ | Standardwert | Beschreibung |
|---|---|---|---|
rowsProp | readonly 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[]) => void | Wird nach jeder übernommenen Änderung mit den Zeilen aufgerufen. | |
columnsProp | NuiGridColumn<T>[] | Die Spalten als NuiGridColumn-Objekte. | |
rowIdProp | (row: T) => unknown | row.id ?? row | Der Schlüssel einer Zeile, für Auswahl und Tracking. |
labelProp | string | Zugänglicher Name des Grids. | |
selectionProp | 'none' | 'single' | 'multiple' | 'none' | Ob sich Zeilen auswählen lassen, und wie viele. |
selecteddefaultSelectedonSelectedChangeState | unknown[] | [] | Die Schlüssel der ausgewählten Zeilen. |
sortdefaultSortonSortChangeState | NuiGridSort[] | [] | Die Sortierung als { column, direction }-Objekte; das erste sortiert zuerst. |
filtersdefaultFiltersonFiltersChangeState | Record<string, NuiGridFilter> | {} | Ein Filter pro Spalten-ID: ein Operator und ein Wert. |
searchdefaultSearchonSearchChangeState | string | '' | Wörter, die alle in einer Zeile vorkommen müssen. |
pageSizedefaultPageSizeonPageSizeChangeState | number | 0 | Zeilen pro Seite oder 0 für eine durchgehende Liste. |
pagedefaultPageonPageChangeState | number | 0 | Die angezeigte Seite, ab 0. |
pageSizesProp | number[] | [10, 25, 50, 100] | Die Optionen der Seitennavigation. |
virtualProp | boolean | 'auto' | 'auto' | Rendert nur die sichtbaren Zeilen: immer, nie oder auto bei mehr als 100 Zeilen ohne Paginierung. |
heightProp | string | Eine CSS-Länge, die das Grid begrenzt; der Inhalt scrollt darin. | |
columnStatedefaultColumnStateonColumnStateChangeState | 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. |
totalProp | number | Die Anzahl der Zeilen auf dem Server. | |
loadingProp | boolean | false | Zeigt einen Fortschrittsbalken und, solange Zeilen fehlen, Platzhalterzeilen. |
localeProp | string | 'en-US' | Formatiert Zahlen und Datumsangaben und liest eingegebene Zahlen ein. |
labelsProp | Partial<NuiGridLabels> | Alle Texte, die das Grid anzeigt oder ansagt, zum Übersetzen. | |
cornersProp | NuiCorners | Die Form der Ecken: round, squircle, bevel, scoop, notch oder square. | |
radiusProp | NuiRadius | Wie groß die Ecken sind: none, small, medium, large oder full. | |
densityProp | NuiDensity | Wie viel Platz die Komponente einnimmt: compact, regular oder roomy. | |
groupByProp | string[] | [] | Spalten, nach denen Zeilen gruppiert werden, die äußerste zuerst. |
collapseddefaultCollapsedonCollapsedChangeState | string[] | [] | Die Schlüssel der geschlossenen Gruppen; anfangs sind alle Gruppen offen. |
getChildrenProp | (row: T) => T[] | undefined | Die Kindzeilen einer Zeile: Das Grid zeigt Baumdaten. | |
expandeddefaultExpandedonExpandedChangeState | unknown[] | [] | Die Schlüssel der Zeilen, die in Baumdaten offen sind; anfangs sind sie geschlossen. |
detailsdefaultDetailsonDetailsChangeState | unknown[] | [] | Die Schlüssel der Zeilen, deren Details offen sind. |
totals, flashProp | boolean | false | Eine 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. |
toolbarProp | boolean | 'auto' | 'auto' | Eine Leiste, die die Zeilen sortiert, filtert und alle auswählt: immer, nie oder auto bei Karten. |
renderEmptyRender-Prop | (filtered: boolean) => ReactNode | Was erscheint, wenn es keine Zeilen gibt; die Funktion erfährt, ob Filter sie ausgeblendet haben. | |
renderDetailRender-Prop | (row: T) => ReactNode | Die Details einer Zeile, die beim Öffnen darunter erscheinen. Das Grid ergänzt eine Spalte mit Toggle-Buttons. | |
onRowActivateCallback | (row: T) => void | Wird mit einer per Enter oder Doppelklick geöffneten Zeile aufgerufen. | |
onCellEditCallback | (edit: NuiGridEdit<T>) => void | Wird mit jeder übernommenen Änderung aufgerufen. | |
onQueryChangeCallback | (query: NuiGridQuery) => void | Wird mit Sortierung, Filtern, Suche und Seite aufgerufen, sobald sie sich ändern, und einmal zu Beginn. | |
refProp | Ref<NuiGridHandle> | Was du über die ref des Grids erreichst: Exporte, Drucken und Fokus. | |
exportXlsx, printMethode | (options?) => Blob, () => void | Die gefilterten, sortierten Zeilen als Tabellenkalkulationsdatei; druckt alle Zeilen. | |
exportCsvMethode | (options?) => string | Die 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) => void | Fokussiert eine Zelle; Zeile -1 ist die Kopfzeile. | |
clearFiltersMethode | () => void | Setzt alle Filter und die Suche zurück. | |
fitMethode | (id: string) => void | Passt 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.
| Name | Typ | Standardwert | Beschreibung |
|---|---|---|---|
renderCellRender-Prop | ({ row, value, text, column }) => ReactNode | Damit zeichnest du die Zellen der Spalte selbst, aus der Zeile, ihrem Wert und ihrem Text. | |
renderHeaderRender-Prop | (column) => ReactNode | Damit zeichnest du den Kopf der Spalte selbst; header benennt die Spalte weiterhin. |