Zum Hauptinhalt springen
Version: latest
Universell einsetzbar

DynamicList funktioniert sowohl auf dem Server als auch im Browser. Nutze immer den Standard-Import (z. B. @prokodo/ui/dynamic-list) — die Library erkennt die Umgebung automatisch.

DynamicList

DynamicList rendert eine repeatable set of input rows that users can add or remove at runtime. Ideal for managing arrays of values inside forms (e.g. phone numbers, addresses, tags).


Übersicht

import { DynamicList } from "@prokodo/ui/dynamic-list"
;<DynamicList
label="Phone numbers"
name="phones"
value={phones}
onChange={setPhones}
renderItem={(item, onChange) => (
<Input value={item} onChange={e => onChange(e.target.value)} />
)}
/>

Import

import { DynamicList } from "@prokodo/ui/dynamic-list"

CSS:

import "@prokodo/ui/dynamic-list.css"

Props

PropTypStandardPflichtBeschreibung
fieldsDynamicListField[]Felddefinitionen für jede Zeile.
valueRecord<string, unknown>[]Gesteuerter Array von Zeilenwerten.
namestringName für versteckte Formulareingabe.
labelstringBeschriftungstext oberhalb der Liste.
labelPropsLabelPropsProps für das Label-Element.
disabledbooleanfalseAlle Interaktionen deaktivieren.
requiredbooleanfalseFeld als Pflichtfeld markieren.
errorTextstringFehlermeldung unterhalb der Liste.
helperTextstringHilfetext unterhalb der Liste.
colorVariantsFarbakzent-Variante.
buttonAddPropsButtonPropsProps für den „Zeile hinzufügen“-Button.
buttonDeletePropsButtonPropsProps für jeden „Zeile löschen“-Button.
classNameListstringCSS-Klasse auf dem Listen-Wrapper.
onChange(rows: Record<string, unknown>[]) => voidWird aufgerufen wenn Zeilen sich ändern.
classNamestringCSS-Klasse am Root-Element.

Siehe src/components/dynamic-list/DynamicList.model.ts für den vollständigen DynamicListProps-Typ.


Design-Tokens

Passe DynamicList über CSS Custom Properties auf :root oder einem übergeordneten Element an.

TokenStandardBeschreibung
--pk-dynamic-list-label-mbvar(--pk-space-md)Label-Unterabstand
--pk-dynamic-list-gapvar(--pk-space-lg)Abstand zwischen Einträgen
--pk-dynamic-list-helper-fgvar(--pk-palette-grey-300)Hilfetext-Farbe
--pk-dynamic-list-error-fgvar(--pk-color-error)Fehler-Textfarbe

AIC-Hinweis

Verwende im Anwendungscode immer den Standard-Importpfad:

import { DynamicList } from "@prokodo/ui/dynamic-list"

Eine separate Auswahl von /client oder /lazy ist im Consumer-Code nicht erforderlich.

AIC-Komponenten unterstützen außerdem ein priority-Flag für kritische Above-the-fold-Elemente. Am sichtbarsten ist das bei Image (natives Preloading via <link rel="preload"> für Above-the-fold-Inhalte).


WCAG-2.2-Status

KriteriumBezeichnungStatusHinweis
1.3.1Info und Beziehungen (A)✅ ErfülltSemantische Struktur (Überschriften, Listen, Labels, Landmarks) muss programmatisch via HTML oder ARIA vermittelt werden.
1.3.5Eingabezweck identifizieren (AA)🔍 Manuell prüfenFormularfelder, die persönliche Daten erfassen, müssen ihren Zweck via HTML-autocomplete-Attribut kommunizieren.
2.1.1Tastatur (A)🔍 Manuell prüfenAlle Funktionalität muss allein über Tastatur bedienbar sein, ohne Timing-Anforderungen.
2.1.2Keine Tastaturfalle (A)🔍 Manuell prüfenDer Tastaturfokus darf niemals innerhalb einer Komponente eingeschlossen sein; Nutzer müssen immer mit Standardtasten navigieren können.
2.4.3Fokusreihenfolge (A)🔍 Manuell prüfenDie Tastaturfokus-Reihenfolge muss im vollständigen seitenseitigen Integrationskontext Bedeutung und Bedienbarkeit erhalten.
2.4.7Fokus sichtbar (AA)🔍 Manuell prüfenAuf jedem interaktiven Element muss ein sichtbarer Tastaturfokus-Indikator vorhanden sein. Prüfung gegen das angewendete Produkt-Theme erforderlich.
2.4.11Fokus nicht verdeckt (Min.) (AA)🔍 Manuell prüfenDie fokussierte Komponente darf nicht vollständig durch Sticky-Header, Overlays oder andere positionierte Seitenelemente verdeckt sein.
3.3.1Fehlererkennung (A)🔍 Manuell prüfenEingabefehler müssen in Textform identifiziert und dem Nutzer beschrieben werden, nicht nur durch Farbe.
3.3.2Bezeichnungen oder Anweisungen (A)✅ ErfülltJedes Formularfeld benötigt ein programmatisch verknüpftes Label oder eine sichtbare Anweisung.
4.1.2Name, Rolle, Wert (A)✅ ErfülltName, Rolle und Zustand aller interaktiven UI-Komponenten müssen via nativer HTML-Semantik oder ARIA programmatisch bestimmbar sein.
4.1.3Statusmeldungen (AA)✅ ErfülltStatusmeldungen (Laden, Erfolg, Fehler, Fortschritt) müssen assistiven Technologien ohne Fokusverschiebung mitgeteilt werden (aria-live oder role='status').

Testabdeckung: 2 jest-axe-Assertion(s) in 5 Testdatei(en) · 6 ARIA-Attribut-Vorkommen im Quellcode-Scan. Kriterien mit 🔍 erfordern manuelle Prüfung im finalen Integrations- und Theme-Kontext.

Storybook

👉 DynamicList in Storybook öffnen


Quellcode

src/components/dynamic-list/DynamicList.model.ts