Verwende eine RadioGroup, um z. B. ...
-
eine Einfachauswahl von 2 bis ungefähr 7 Optionen anzuzeigen.
-
Optionen mit unterschiedlicher Textlänge darzustellen.
Eine RadioGroup enthält mehrere Radios oder RadioButtons als Optionsmöglichkeiten, von denen jeweils nur eine vom User ausgewählt werden kann. Die ausgewählte Option wird durch einen ausgefüllten Kreis gekennzeichnet. Zu Beginn ist häufig eine sinnvolle Option vorausgewählt.
Achte bei der Verwendung einer RadioGroup darauf, dass ...
Verwende eine RadioGroup, um ...
Flow bietet verschiedene Auswahl-Components an. RadioGroup und SegmentedControl ähneln sich sehr. In den Cards unter dem Text sind hilfreiche Anhaltspunkte für eine Abgrenzung.
eine Einfachauswahl von 2 bis ungefähr 7 Optionen anzuzeigen.
Optionen mit unterschiedlicher Textlänge darzustellen.
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.
RadioGroups werden häufig in Formularen verwendet.
Da RadioGroups aus mehreren Optionen bestehen, müssen diese in eine logische Reihenfolge gebracht werden. Folgende Punkte können dabei interessant sein:
Der User kann hier den letzten Punkt auswählen, wenn die anderen Optionen nicht zutreffen.
Wenn der User woanders wohnt, kann er hier keine richtige Wahl treffen.
Ein Radio besteht aus zwei Bestandteilen: Einem Kreis, der anzeigt, ob eine Option ausgewählt ist oder nicht, und einem kurzen beschreibenden Text. Radios werden immer untereinander angeordnet und werden häufig in Umfragen verwendet.
Auf Benutzeroberflächen sind häufiger RadioButtons anstelle von Radios zu finden. RadioButtons haben den Vorteil, dass ...
Ein Label soll dem User helfen herauszufinden, worum es sich bei der RadioGroup handelt:
Radios und RadioButtons unterscheiden sich in einigen Punkten, die folgenden Punkte sollten jedoch bei beiden berücksichtigt werden:
Die Auswahl ist eindeutig, da sich kein Alter überschneidet.
Die Optionen überschneiden sich hier, sodass einige User zwei Optionen auswählen müssten.
Achte bei der RadioGroup darauf, dass ...
aria-labelledby
verwendet werden.Verwende <RadioGroup /> zusammen mit mehreren <Radio />, um eine RadioGroup
darzustellen. Über der RadioGroup kann ein beschreibendes
Label verwendet werden. Es kann
weggelassen werden, wenn die RadioGroup ohne verstanden wird oder wenn ein
anderes beschreibendes Element – wie eine
Heading – in der Nähe platziert wird.
Wenn kein Label vorhanden ist, muss ein aria-label gesetzt werden.
import { Label, Radio, RadioGroup, } from "@mittwald/flow-react-components"; <RadioGroup defaultValue="admin"> <Label>Rolle</Label> <Radio value="admin">Administrator</Radio> <Radio value="member">Mitglied</Radio> <Radio value="accountant">Buchhalter</Radio> </RadioGroup>
RadioGroups können statt mit einfachen Radios auch mit RadioButtons
gefüllt werden. Ersetze dafür <Radio /> mit <RadioButton />. Anders als
einfache Radios können RadioButtons mehr Inhalt – wie z. B. eine Überschrift mit
Text und Subtext – darstellen und dürfen auch nebeneinander gesetzt werden.
Anstelle einer einfachen Bezeichnung kann der <RadioButton /> auch mit
zusätzlichem Inhalt gefüllt werden. Verwende dazu innerhalb des
<RadioButtons /> Text für eine
Überschrift und <Content /> für Fließtext.
Die RadioGroup verwendet das ColumnLayout, um eine Anpassung der Spalten zu ermöglichen. Bei der Verwendung von RadioButtons entspricht der Default dem des ColumnLayouts, während Radios im Default untereinander angezeigt werden.
Unterhalb der <Radio /> oder <RadioButton /> kann eine hilfreiche
<FieldDescription /> eingebaut werden.
Eine RadioGroup hat 3 States: Default, Disabled und Error. Radios und RadioButtons verfügen über die States Default, Hover, Pressed, Disabled, Focused und Selected.
Selected: Wenn ein Radio/RadioButton vom User ausgewählt wird, erhält er den State Selected. In einer RadioGroup kann sich immer nur ein Radio/RadioButton in diesem State befinden. In den meisten Fällen ist es sinnvoll, zu Beginn eine Option vorzuselektieren.
Disabled: Wenn die RadioGroup den State Disabled hat, erhalten alle Radios/RadioButtons automatisch ebenfalls diesen State, sodass sie vom User nicht ausgewählt werden können. Es ist auch möglich, einzelne Radios/RadioButtons auf Disabled zu setzen.
Error: Ein Error-State sollte angezeigt werden, wenn etwas schiefgelaufen ist (siehe Fehlermeldungen). Da häufig eine Option in der RadioGroup vorselektiert ist, wird das obige Beispiel nur selten benötigt.
Benutze die ContextualHelp Component, wenn du weitere Informationen bereitstellen möchtest, und diese zu lang für die FieldDescription sind.
Weitere Details zur Formularlogik und -validierung findest du in der Component Form (React Hook Form).
| Property | Type | Default | Description |
|---|---|---|---|
className | ClassNameOrFunction<RadioGroupRenderProps> | 'react-aria-RadioGroup' | The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state. |
style | StyleOrFunction<TooltipRenderProps> | - | The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. A function may be provided to compute the style based on component state. |
render | DOMRenderFunction<"div", TooltipRenderProps> | - | Overrides the default DOM element with a custom render function. This allows rendering existing components with built-in styles and behaviors such as router links, animation libraries, and pre-styled components. Requirements: - You must render the expected element type (e.g. if `<button>` is expected, you cannot render an `<a>`). - Only a single root DOM element can be rendered (no fragments). - You must pass through props and ref to the underlying DOM element, merging with your own prop as appropriate. |
dir | string | - | |
lang | string | - | |
hidden | boolean | - | |
inert | boolean | - | |
translate | "yes" | "no" | - | |
validationBehavior | "native" | "aria" | 'native' | Whether to use native HTML form validation to prevent form submission when the value is missing or invalid, or mark the field as required or invalid via ARIA. |
isDisabled | boolean | - | Whether the input is disabled. |
isReadOnly | boolean | - | Whether the input can be selected but not changed by the user. |
isRequired | boolean | - | Whether user input is required on the input before form submission. |
isInvalid | boolean | - | Whether the input value is invalid. |
validate | ((value: TimeValue) => true | ValidationError) | - | A function that returns an error message if a given value is invalid. Validation errors are displayed to the user when the form is submitted if `validationBehavior="native"`. For realtime validation, use the `isInvalid` prop instead. |
value | TimeValue | - | The current value (controlled). |
defaultValue | TimeValue | - | The default value (uncontrolled). |
id | string | - | The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id). |
name | string | - | The name of the input element, used when submitting an HTML form. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefname). |
form | string | - | The `<form>` element to associate the input with. The value of this attribute must be the id of a `<form>` in the same document. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input#form). |
slot | string | - | A slot name for the component. Slots allow the component to receive props from a parent component. An explicit `null` value indicates that the local props completely override all props received from a parent. |
orientation | Orientation | 'vertical' | The axis the Radio Button(s) should align with. |
children | ReactNode | - | |
wrapWith | ReactElement<unknown, string | JSXElementConstructor<any>> | - | |
ref | Ref<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 |
key | Key | - | |
s | (number)[] | - | Column layout for container size s. |
m | (number)[] | - | Column layout for container size m. |
l | (number)[] | - | Column layout for container size l. |
| Property | Type | Default | Description |
|---|---|---|---|
onClick | MouseEventHandler<HTMLDivElement> | - | |
onClickCapture | MouseEventHandler<HTMLDivElement> | - | |
onAuxClick | MouseEventHandler<HTMLDivElement> | - | |
onAuxClickCapture | MouseEventHandler<HTMLDivElement> | - | |
onContextMenu | MouseEventHandler<HTMLDivElement> | - | |
onContextMenuCapture | MouseEventHandler<HTMLDivElement> | - | |
onDoubleClick | MouseEventHandler<HTMLDivElement> | - | |
onDoubleClickCapture | MouseEventHandler<HTMLDivElement> | - | |
onMouseDown | MouseEventHandler<HTMLDivElement> | - | |
onMouseDownCapture | MouseEventHandler<HTMLDivElement> | - | |
onMouseEnter | MouseEventHandler<HTMLDivElement> | - | |
onMouseLeave | MouseEventHandler<HTMLDivElement> | - | |
onMouseMove | MouseEventHandler<HTMLDivElement> | - | |
onMouseMoveCapture | MouseEventHandler<HTMLDivElement> | - | |
onMouseOut | MouseEventHandler<HTMLDivElement> | - | |
onMouseOutCapture | MouseEventHandler<HTMLDivElement> | - | |
onMouseOver | MouseEventHandler<HTMLDivElement> | - | |
onMouseOverCapture | MouseEventHandler<HTMLDivElement> | - | |
onMouseUp | MouseEventHandler<HTMLDivElement> | - | |
onMouseUpCapture | MouseEventHandler<HTMLDivElement> | - | |
onTouchCancel | TouchEventHandler<HTMLDivElement> | - | |
onTouchCancelCapture | TouchEventHandler<HTMLDivElement> | - | |
onTouchEnd | TouchEventHandler<HTMLDivElement> | - | |
onTouchEndCapture | TouchEventHandler<HTMLDivElement> | - | |
onTouchMove | TouchEventHandler<HTMLDivElement> | - | |
onTouchMoveCapture | TouchEventHandler<HTMLDivElement> | - | |
onTouchStart | TouchEventHandler<HTMLDivElement> | - | |
onTouchStartCapture | TouchEventHandler<HTMLDivElement> | - | |
onPointerDown | PointerEventHandler<HTMLDivElement> | - | |
onPointerDownCapture | PointerEventHandler<HTMLDivElement> | - | |
onPointerMove | PointerEventHandler<HTMLDivElement> | - | |
onPointerMoveCapture | PointerEventHandler<HTMLDivElement> | - | |
onPointerUp | PointerEventHandler<HTMLDivElement> | - | |
onPointerUpCapture | PointerEventHandler<HTMLDivElement> | - | |
onPointerCancel | PointerEventHandler<HTMLDivElement> | - | |
onPointerCancelCapture | PointerEventHandler<HTMLDivElement> | - | |
onPointerEnter | PointerEventHandler<HTMLDivElement> | - | |
onPointerLeave | PointerEventHandler<HTMLDivElement> | - | |
onPointerOver | PointerEventHandler<HTMLDivElement> | - | |
onPointerOverCapture | PointerEventHandler<HTMLDivElement> | - | |
onPointerOut | PointerEventHandler<HTMLDivElement> | - | |
onPointerOutCapture | PointerEventHandler<HTMLDivElement> | - | |
onGotPointerCapture | PointerEventHandler<HTMLDivElement> | - | |
onGotPointerCaptureCapture | PointerEventHandler<HTMLDivElement> | - | |
onLostPointerCapture | PointerEventHandler<HTMLDivElement> | - | |
onLostPointerCaptureCapture | PointerEventHandler<HTMLDivElement> | - | |
onScroll | UIEventHandler<HTMLDivElement> | - | |
onScrollCapture | UIEventHandler<HTMLDivElement> | - | |
onWheel | WheelEventHandler<HTMLDivElement> | - | |
onWheelCapture | WheelEventHandler<HTMLDivElement> | - | |
onAnimationStart | AnimationEventHandler<HTMLDivElement> | - | |
onAnimationStartCapture | AnimationEventHandler<HTMLDivElement> | - | |
onAnimationEnd | AnimationEventHandler<HTMLDivElement> | - | |
onAnimationEndCapture | AnimationEventHandler<HTMLDivElement> | - | |
onAnimationIteration | AnimationEventHandler<HTMLDivElement> | - | |
onAnimationIterationCapture | AnimationEventHandler<HTMLDivElement> | - | |
onTransitionCancel | TransitionEventHandler<HTMLDivElement> | - | |
onTransitionCancelCapture | TransitionEventHandler<HTMLDivElement> | - | |
onTransitionEnd | TransitionEventHandler<HTMLDivElement> | - | |
onTransitionEndCapture | TransitionEventHandler<HTMLDivElement> | - | |
onTransitionRun | TransitionEventHandler<HTMLDivElement> | - | |
onTransitionRunCapture | TransitionEventHandler<HTMLDivElement> | - | |
onTransitionStart | TransitionEventHandler<HTMLDivElement> | - | |
onTransitionStartCapture | TransitionEventHandler<HTMLDivElement> | - | |
onFocus | ((e: FocusEvent<Element, Element>) => void) | - | Handler that is called when the element receives focus. |
onBlur | ((e: FocusEvent<Element, Element>) => void) | - | Handler that is called when the element loses focus. |
onFocusChange | ((isFocused: boolean) => void) | - | Handler that is called when the element's focus status changes. |
onChange | ((value: TimeValue) => void) | - | Handler that is called when the value changes. |
| Property | Type | Default | Description |
|---|---|---|---|
aria-label | string | - | Defines a string value that labels the current element. |
aria-labelledby | string | - | Identifies the element (or elements) that labels the current element. |
aria-describedby | string | - | Identifies the element (or elements) that describes the object. |
aria-details | string | - | Identifies the element (or elements) that provide a detailed, extended description for the object. |
aria-errormessage | string | - | Identifies the element that provides an error message for the object. |