Playground
Verwende <NumberField />
, um ein NumberField darzustellen. Platziere innerhalb davon ein <Label />
, um die Eingabeanforderung kurz in einem Label zu beschreiben.
import { Label, NumberField, } from "@mittwald/flow-react-components"; <NumberField minValue={0} maxValue={100}> <Label>Alter</Label> </NumberField>
Einheit
Über das Property formatOptions
lassen sich Einheiten für das NumberField definieren (s.
Intl.NumberFormat).
import { Label, NumberField, } from "@mittwald/flow-react-components"; <NumberField formatOptions={{ style: "unit", unit: "gigabyte", }} defaultValue={12} > <Label>Speicherplatz</Label> </NumberField>
Disabled
Ist das NumberField disabled, ist keine Interaktion möglich. Sobald die Ursache behoben ist, kann es wieder wie gewohnt verwendet werden.
import { Label, NumberField, } from "@mittwald/flow-react-components"; <NumberField isDisabled> <Label>Alter</Label> </NumberField>
Validierung
Um das NumberField zu validieren, stehen folgende Properties zur Verfügung:
isRequired
für Pflichtfelder.validate
für eigene Validierungen.
Bei ungültiger Eingabe wird das NumberField invalidiert. Über <FieldError />
kann eine entsprechende Fehlermeldung ausgegeben werden.
Required
import { Label, NumberField, } from "@mittwald/flow-react-components"; <NumberField isRequired> <Label>Alter</Label> </NumberField>
Invalid
import { FieldError, Label, NumberField, } from "@mittwald/flow-react-components"; <NumberField isInvalid value={-1}> <Label>Alter</Label> <FieldError>Ungültige Eingabe</FieldError> </NumberField>
Mit FieldDescription
Um wichtige Hinweise zum NumberField bereitzustellen, kann unterhalb eine <FieldDescription />
eingebaut werden.
import { FieldDescription, Label, NumberField, } from "@mittwald/flow-react-components"; <NumberField minValue={18} maxValue={100}> <Label>Alter</Label> <FieldDescription> Du musst mindestens 18 Jahre alt sein </FieldDescription> </NumberField>
Kombiniere mit ...
Align
Benutze die Align-Component, um andere Components wie einen Button neben dem NumberField auszurichten.
import { Align, Button, Label, NumberField, } from "@mittwald/flow-react-components"; <Align> <NumberField> <Label>Alter</Label> </NumberField> <Button>Hinzufügen</Button> </Align>
ContextualHelp
Verwende ContextualHelp, um zusätzliche Informationen bereitzustellen, die über den Umfang der FieldDescription hinausgehen.
import { Button, ContextualHelp, ContextualHelpTrigger, Heading, Label, NumberField, Text, } from "@mittwald/flow-react-components"; <NumberField minValue={0} maxValue={100}> <Label> Alter <ContextualHelpTrigger> <Button /> <ContextualHelp> <Heading>Weitere Informationen</Heading> <Text> Hier gibt es weitere Informationen, die zu lang für die FieldDescription sind. </Text> </ContextualHelp> </ContextualHelpTrigger> </Label> </NumberField>
React Hook Form
Weitere Details zur Formularlogik und -validierung findest du in der Component Form (React Hook Form).
import { Button, Label, NumberField, Section, } from "@mittwald/flow-react-components"; import { useForm } from "react-hook-form"; import { Form, typedField, } from "@mittwald/flow-react-components/react-hook-form"; import { sleep } from "@/content/03-components/actions/action/examples/lib"; export default () => { const form = useForm<{ age: number }>(); const Field = typedField(form); return ( <Section> <Form form={form} onSubmit={sleep}> <Field name="age" rules={{ required: "Bitte gib dein Alter an", }} > <NumberField minValue={0}> <Label>Alter</Label> </NumberField> </Field> <Button type="submit">Speichern</Button> </Form> </Section> ); }