List

Die List bildet einen strukturierten Rahmen für mehrere ListItems und bietet Funktionen wie Sortierung, Filter und Suche.GitHubMarkdown

Die List Component erlaubt das Rendern und Verwalten von Daten in einer strukturierten Liste. Daten können entweder statisch oder asynchron, z. B. über eine API, geladen werden.

Möglichkeiten zum Laden von Daten

1. Statische Daten

Für die Anzeige statischer Daten kann die Component <StaticData /> verwendet werden:

  • dataArray: Ein Array mit den Daten, die direkt in der List gerendert werden.
  • Diese Variante ist einfach und benötigt keine zusätzliche Logik für das Nachladen oder Filtern.

2. Dynamische Daten (Asynchrones Laden)

Mit <LoaderAsync> können Daten dynamisch aus einer API oder anderen asynchronen Quellen nachgeladen werden:

3. Laden über Hooks (z.B. TanStack Query oder SWR)

Mit <LoaderHooks> können Daten dynamisch über React Hooks nachgeladen werden. Der Einsatz von Suspense ist hierbei erforderlich.

Verhalten & Features

  • Ladeanimation: Während die Daten geladen werden, wird eine Ladeanimation angezeigt.
  • Server-seitige Funktionen:
    • Pagination (manualPagination): Aktiviert das serverseitige Paging.
    • Sortierung (manualSorting): Die Sortierung erfolgt auf dem Server.
    • Filterung (manualFiltering): Filter werden nicht client-seitig angewendet, sondern an den Server weitergeleitet.
    • Suche: Kann ebenfalls serverseitig erfolgen.

Optionen für die Async Loader Function

Die <LoaderAsync>-Component benötigt eine Async Loader Function, die die Daten anhand von Steuerungsoptionen lädt. Diese Funktion erhält ein options-Objekt mit den folgenden Parametern:

Struktur des options-Objekts

PropertyTypBeschreibung
filtering{ [key: string]: { mode: "all" | "some" | "one"; values: any[] } }Enthält Filter für die Daten. Jedes Key-Value-Paar repräsentiert eine Filterbedingung für ein Datenfeld.
searchStringstringDer eingegebene Suchbegriff.
pagination{ offset: number; limit: number }Enthält Offset (Startpunkt) und Limit (maximale Anzahl an Datensätzen).
sorting{ [key: string]: "asc" | "desc" }Gibt an, nach welchen Datenfeldern sortiert werden soll.

Rückgabewert der Async Loader Function

Die Funktion muss ein Object mit folgender Struktur zurückgeben:

PropertyTypBeschreibung
dataany[]Array der geladenen Daten.
itemTotalCountnumberGesamtanzahl der Datensätze (nur bei Pagination erforderlich).

Filter

In der Regel werden Filter für ein Property der List gesetzt:

Die Anzeige des Filter-Values kann angepasst werden, um z. B. Übersetzungen zu ermöglichen:

Es gibt die Möglichkeit, eigene Properties zu verwenden, die nicht in der List vorkommen . Hierfür muss dem property ein "$" vorangestellt werden:

Filter Properties

PropertyTypBeschreibung
defaultSelectedstring[]Array der als default gesetzten Filter
matcherFilterMatcher<T, TProp, string>Definiert eine eigene Filterlogik für die Listenelemente
mode"all" | "some" | "one"Bestimmt, wie mehrere ausgewählte Filterwerte miteinander kombiniert werden
namestringDer Anzeigename des Filters
propertystringDas für die Filterung verwendete Property
valuesstring[]Die Optionen für den Filter

Sorting

Die List unterstützt eine Sortierung nach Properties:

Es gibt außerdem die Möglichkeit, eine eigene Sortierung zu benutzen:

Sorting Properties

PropertyTypBeschreibung
customSortingFnSortingFn<T>Möglichkeit eine eigene Sortierfunktion zu definieren
defaultEnabledboolean | "hidden"Bestimmt, ob die Sortierung als default gesetzt wird, bei "hidden" ist die Sortier-Option nicht sichtbar, wird aber im Hintergrund angewendet
direction"asc" | "desc"Auf- oder absteigende Sortierung
namestringDer Anzeigename der Sortier-Option
directionNamestringDer Anzeigename der Sortierrichtung
propertystringDas für die Sortierung verwendete Property

Properties

PropertyTypeDefaultDescription
batchSizenumber-The number of items to be displayed on one page.
hidePaginationboolean-
emptySearchResultViewReactNode-
emptyViewReactNode-
childrenReactNode-
wrapWithReactElement<unknown, string | JSXElementConstructor<any>>-
refRef<HTMLSpanElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see React Docs
keyKey-
disallowEmptySelectionboolean-Whether the collection allows empty selection.
disabledKeysIterable<Key>-The currently disabled keys in the collection (controlled).
selectionModeSelectionMode-The type of selection that is allowed in the collection.
selectedKeys"all" | Iterable<Key>-The currently selected keys in the collection (controlled).
defaultSelectedKeys"all" | Iterable<Key>-The initial selected keys in the collection (uncontrolled).
selectionBehaviorSelectionBehavior-
accordionboolean-
settingStorageKeystring-
loadingItemsCountnumber-
getItemIdGetItemId<never>-
defaultViewModeListViewMode-
settingsStorageDefaultsListSettingsStorageDefaults-

Events

PropertyTypeDefaultDescription
onChangeOnListChanged<never, unknown>-
onSelectionChange((keys: Selection) => void)-Handler that is called when the selection changes.
onActionItemActionFn<never>-

Accessibility

PropertyTypeDefaultDescription
aria-labelstring-
aria-labelledbystring-

Auf dieser Seite