Do
Nutze ein 1:1 ColumnLayout für TextFields. Darin kann ein weiteres Raster (z.B. 2:1) verwendet werden, um sinnvolle Gruppierungen (z.B. Straße und Hausnummer) innerhalb des Layouts zu erstellen.
Verwende <TextField />
, um ein TextField anzuzeigen. Integriere immer ein
<Label />
, um Informationen zu vermitteln, die für das Verständnis der
Eingabeanforderungen unerlässlich sind. Optional können zusätzliche
Informationen (z.B. Formatierungshinweise) über die <FieldDescription />
ergänzt werden.
import Label from "@mittwald/flow-react-components/Label"; import TextField from "@mittwald/flow-react-components/TextField"; import FieldDescription from "@mittwald/flow-react-components/FieldDescription"; <TextField> <Label>URL</Label> <FieldDescription>Beginnt mit https://</FieldDescription> </TextField>
Wenn das TextField disabled ist, kann nicht mit ihm interagiert werden. Sobald die Ursache für die Deaktivierung behoben ist, kann das TextField wieder normal verwendet werden.
import Label from "@mittwald/flow-react-components/Label"; import TextField from "@mittwald/flow-react-components/TextField"; <TextField isDisabled> <Label>URL</Label> </TextField>
Um das textField zu validieren, stehen folgende Properties zur Verfügung:
isRequired
für Pflichtfelder.validate
für eigene Validierungen.type=”email”
, minLength
.Wenn die Benutzereingabe nicht den Anforderungen entspricht, wird das TextField
invalidiert. Mittels <FieldError />
kann eine Fehlermeldung angezeigt werden.
import Label from "@mittwald/flow-react-components/Label"; import TextField from "@mittwald/flow-react-components/TextField"; import FieldError from "@mittwald/flow-react-components/FieldError"; <TextField isInvalid defaultValue="hello"> <Label>URL</Label> <FieldError>Das ist keine URL</FieldError> </TextField>
Standardmäßig ist der Value eines TextFields leer. Es ist möglich dem TextField
eine uncontrolled defaultValue
mitzugeben. Es kann auch ein controlled value
für das TextField gesetzt werden, um dieses über onChange
zu updaten.
import Label from "@mittwald/flow-react-components/Label"; import TextField from "@mittwald/flow-react-components/TextField"; <TextField defaultValue="https://mittwald.de"> <Label>URL</Label> </TextField>
Das TextField unterstützt die Standard-Properties eines HTML <input />
Feldes.
(s. MDN)
import Label from "@mittwald/flow-react-components/Label"; import TextField from "@mittwald/flow-react-components/TextField"; <TextField name="email" type="email"> <Label>E-Mail</Label> </TextField>
Über das showCharacterCount
Property wird eine FieldDescription hinzugefügt,
die aktuelle Anzahl der Zeichen und, falls angegeben, die maximale Zeichenanzahl
anzeigt.
import Label from "@mittwald/flow-react-components/Label"; import TextField from "@mittwald/flow-react-components/TextField"; <TextField showCharacterCount maxLength={10}> <Label>Benutzername</Label> </TextField>
Das TextField wird meistens innerhalb eines ColumnLayouts platziert und füllt dort immer die zur Verfügung stehende Breite. Dadurch folgt es auch einer Aufteilung in Spalten, sofern das ColumnLayout eine vorsieht. Am besten eignet sich ein 1:1 Raster für TextFields, sodass sie maximal die Hälfte des Content-Bereichs einnehmen können. Das ColumnLayout kann zudem erweitert werden, um spezifischeren Layoutanforderungen gerecht zu werden.
Nutze ein 1:1 ColumnLayout für TextFields. Darin kann ein weiteres Raster (z.B. 2:1) verwendet werden, um sinnvolle Gruppierungen (z.B. Straße und Hausnummer) innerhalb des Layouts zu erstellen.
Um ein TextField als erforderlich zu markieren, benutze das dazugehörige
Property isRequired
. Felder, die nicht required sind, werden als optional
gekennzeichnet.
import Label from "@mittwald/flow-react-components/Label"; import TextField from "@mittwald/flow-react-components/TextField"; import { ColumnLayout } from "@mittwald/flow-react-components/ColumnLayout"; <ColumnLayout m={[1, 1]}> <TextField isRequired> <Label>URL</Label> </TextField> <TextField> <Label>URL</Label> </TextField> </ColumnLayout>
Jedes TextField muss ein zugehöriges Label besitzen. Das Label ist entscheidend, um die Eingabeanforderungen zu verstehen und sollte daher so gewählt werden, dass es alle Informationen liefert, um das TextField korrekt ausfüllen zu können. Außerdem sollte das Label knapp (max. 2 Wörter), präzise und weder versteckt noch auspunktiert sein.
Das TextField darf nie ohne ein zugehöriges Label verwendet werden.
Verwende ein kurzes, präzises Label, das essentielle Eingabeanforderungen kommuniziert.
Die FieldDescription kann als optionaler Hilfstext unterhalb des TextFields angezeigt werden, um dem Nutzer ergänzenden Informationen oder Anweisungen zu bieten. Sie sollte sparsam verwendet werden und kann Eingabe- und Formatierungsbeispiele liefern.
Placeholder sind nicht accessible und dürfen daher keine Informationen enthalten, die für das korrekte Ausfüllen des TextFields erforderlich sind. Das größte Problem ist, dass Placeholder verschwinden, sobald Text eingegeben wird. Darüber hinaus werden sie von manchen Assistenztechnologien nicht korrekt erkann und sind kognitiv schwieriger zu verarbeiten als die FieldDescritption. Statt einen Placeholder zu verwenden, ergänze das TextField mit ...
Placeholder sollten keine essentiellen Informationen oder Formatierungshinweise enthalten.
Verwende das Label für essentielle Informationen und die FieldDescription für Ergänzungen, z.B. Formatierungshinweise oder Beispiele.
Das TextField kann sowohl über die Tastatur erreicht und aktiviert werden als auch mit Assistenztechnologien angesteuert werden. Damit auch der Inhalt barrierefrei ist, solltest du: