Verwende ein SegmentedControl, um z. B. ...
- eine Einfachauswahl von 2 bis 5 Optionen anzuzeigen. - Optionen anzuzeigen, die aus 1 bis 2 Wörtern bestehen.
- Optionen anzuzeigen, die den darunterliegenden Inhalt verändern.
Verwende <RadioGroup variant="segmented" />
, um ein SegmentedControl
anzuzeigen.
import { Radio, RadioGroup, } from "@mittwald/flow-react-components/RadioGroup"; import { Label } from "@mittwald/flow-react-components/Label"; <RadioGroup variant="segmented" defaultValue="ssh-key"> <Label>Authentifizierungsart</Label> <Radio value="ssh-key">SSH-Key</Radio> <Radio value="passwort">Passwort</Radio> </RadioGroup>
Unterhalb des SegmentedControls kann sich der Inhalt je nach Bedarf ändern.
Verwende dafür ...<RadioGroup variant="segmented" />
import { Radio, RadioGroup, } from "@mittwald/flow-react-components/RadioGroup"; import { Label } from "@mittwald/flow-react-components/Label"; import { useState } from "react"; import { FieldDescription } from "@mittwald/flow-react-components/FieldDescription"; import { ColumnLayout } from "@mittwald/flow-react-components/ColumnLayout"; import { TextField } from "@mittwald/flow-react-components/TextField"; import { Section } from "@mittwald/flow-react-components/Section"; export default () => { const [showContent, setShowContent] = useState<boolean>(false); return ( <Section> <RadioGroup variant="segmented" defaultValue="lastschrift" s={[1, 1]} onChange={() => setShowContent(!showContent)} > <Label>Zahlungsart</Label> <Radio value="lastschrift">Lastschrift</Radio> <Radio value="Rechnung">Rechnung</Radio> {showContent && ( <FieldDescription> Wähle bitte eine Bankverbindung für die Bezahlung mit SEPA-Lastschrift aus. </FieldDescription> )} </RadioGroup> {showContent && ( <ColumnLayout> <TextField isRequired> <Label>Kontoinhaber</Label> </TextField> <TextField isRequired> <Label>IBAN</Label> </TextField> </ColumnLayout> )} </Section> ); }
Unterhalb der <RadioGroup variant="segmented" />
kann eine hilfreiche
<FieldDescription />
eingebaut werden.
import { Radio, RadioGroup, } from "@mittwald/flow-react-components/RadioGroup"; import { Label } from "@mittwald/flow-react-components/Label"; import { FieldDescription } from "@mittwald/flow-react-components/FieldDescription"; <RadioGroup variant="segmented" defaultValue="cloud"> <Label>Speicherplatz</Label> <Radio value="cloud">Cloud</Radio> <Radio value="lokal">Lokal</Radio> <FieldDescription> Speicherplatz kann jederzeit geändert werden </FieldDescription> </RadioGroup>
Eine SegmentedControl hat 2 States: Default und Disabled. Die Optionen verfügen über die States Default, Hover, Pressed, Disabled, Focused und Selected.
import { Radio, RadioGroup, } from "@mittwald/flow-react-components/RadioGroup"; import { Label } from "@mittwald/flow-react-components/Label"; import { Section } from "@mittwald/flow-react-components/Section"; <Section> <RadioGroup variant="segmented" defaultValue="dev"> <Label>Rolle</Label> <Radio value="entwickler">Entwickler</Radio> <Radio value="designer">Designer</Radio> <Radio value="geschäftsführer">Geschäftsführer</Radio> <Radio value="andere">Andere</Radio> </RadioGroup> <RadioGroup variant="segmented" defaultValue="dev" isDisabled > <Label>Rolle</Label> <Radio value="entwickler">Entwickler</Radio> <Radio value="designer">Designer</Radio> <Radio value="geschäftsführer">Geschäftsführer</Radio> <Radio value="andere">Andere</Radio> </RadioGroup> </Section>
Selected: Wird eine Option vom User ausgewählt, so erhält er den Zustand Selected. Es kann immer nur eine Option diesen Status haben. Zu Beginn ist immer die erste Option vorausgewählt.
Disabled: Einzelne Optionen oder die gesamte SegmentedControl können den State Disabled haben. Wenn die SegmentedControl den State Disabled erhält, erhalten automatisch auch alle Optionen ebenfalls diesen State, sodass sie vom User nicht ausgewählt werden können.
Das SegmentedControl springt in eine kompakte Variante um, sobald der Container
kleiner als der gesetzte Breakpoint ist. Im Default passiert das bei 550px, was
der containerBreakpointSize=”m”
entspricht. Über diese Property kann die Größe
mit Werten zwischen xs
und xl
überschrieben werden.
import { Radio, RadioGroup, } from "@mittwald/flow-react-components/RadioGroup"; import { Label } from "@mittwald/flow-react-components/Label"; import { ColumnLayout } from "@mittwald/flow-react-components/ColumnLayout"; <ColumnLayout m={[1, 1]}> <RadioGroup variant="segmented" defaultValue="entwickler" containerBreakpointSize="xl" > <Label>Rolle</Label> <Radio value="entwickler">Entwickler</Radio> <Radio value="geschäftsführer">Geschäftsführer</Radio> <Radio value="andere">Andere</Radio> </RadioGroup> <RadioGroup variant="segmented" defaultValue="entwickler" containerBreakpointSize="xs" > <Label>Rolle</Label> <Radio value="entwickler">Entwickler</Radio> <Radio value="geschäftsführer">Geschäftsführer</Radio> <Radio value="andere">Andere</Radio> </RadioGroup> </ColumnLayout>
Achte bei der Verwendung eines SegmentedControl darauf, dass...
Verwende einen SegmentedControl, um...
Flow bietet verschiedene Auswahl-Components an. Das SegmentedControl und die RadioGroup haben viele Gemeinsamkeiten. Die Cards unter dem Text geben hilfreiche Anhaltspunkte zur Unterscheidung.
Das SegmentedControl wird häufig in Formularen oder als Ansichtsfilter verwendet. Bei der Positionierung ist Folgendes zu beachten:
Das SegmentedControl steht über dem angepassten Inhalt.
Ein SegmentedControl darf maximal 5 Optionen enthalten. Bei der Reihenfolge der Optionen ist folgendes zu beachten:
Der selektierte Zustand einer Option ist an der geänderten Farbe und dem Häkchensymbol zu erkennen. Aus diesem Grund sollte das Icon nicht verändert werden. In der aktuellen Version des SegmentedControls sind keine dekorativen oder alleinstehenden Icons vorgesehen.
Das SegmentedControl hat Text in den Optionen und im Label. Dabei ist Folgendes zu beachten:
Das Label und die Antwortmöglichkeiten sind prägnant und verständlich.
Kürzer ist oft besser. Versuche, so wenig Wörter wie möglich im Label und in den Optionen zu verwenden.
Sobald die Breite des Containers kleiner als 551px ist, werden alle Optionen im
SegmentedControl untereinander dargestellt. Dieser Wert kann mit
containerBreakpointSize
angepasst werden. Auch bei schmaleren Containerns
sollte vermieden werden, dass der Text zweizeilig wird oder nicht mehr lesbar
ist.
Falls SegmentedControl ohne Label verwendet wird, muss ein AriaLabel gepflegt werden.