Radio
Radio is an input control that lets users select a single value from several options.
#
Importimport { Radio, RadioGroup } from '@volue/wave-react';
#
Examples#
BasicPrefer placing radios underneath one another (vertically stacked) to aid in a user’s ability to scan the form.
#
ControlledIt is most common to set up Radio
as a controlled component, meaning that React state drives its value. To achieve this you must provide isChecked
and onChange
properties.
The defaultChecked
prop will have no effect in a controlled radio.
#
RadioGroupRadio
should always appear in groups of 2 or more. Use RadioGroup
component to wrap multiple, related options.
RadioGroup
helps managing the checked state of its children Radio
components and conveniently passes some shared props to each.
Make sure to pass value
prop to each Radio
within a group.
Include at most 6 options in a group. Radios can facilitate the comparison of choice, but if there's a chance the group might later expand to include more than 6 options, use Select component instead, which allows the user to choose between a larger set of options.
Use the same name
attribute on all radios in the group. It's recommended to pass the name
prop to the RadioGroup
, instead of passing it to each Radio
component. This ensures that the same name
is given for all <RadioGroup>
inputs.
Mark the radio group as disabled by passing true
to the isDisabled
prop. All descendant inputs will be disabled.
#
Radio with help textIn cases where the radio requires additional context, you can display this information as help text. This helps keep radio labels concise.
Avoid lengthy text labels. Be clear and brief with radio labels so they are easily scanned.
#
With Form FieldForm Field component should be used to label groups of related options. The same goes for connecting helper text and/or validation feedback message.
When providing a top-level label for a group of radio inputs that are already labelled, it doesn't make sense for the FormField.Label
to render an HTML <label>
element. The as
prop should be provided with another element type, such as span
.
Don't validate each option in a group, always treat validation on the group as a whole.
#
SizesRadio
component comes in two different sizes: medium
and small
. By default, it uses medium
size.
#
Size inheritanceRadio
automatically inherits size, when placed inside a FormField component.
#
Customizing appearanceRadio
API allows you to easily implement custom behaviours and appearances.
#
API Reference#
RadioIn addition to the props below, you can pass Flex props to control the layout.
Prop | Type | Default |
---|---|---|
as | enum | div |
css | StitchesCss | No default value |
value | string | number | No default value |
name | string | No default value |
id | string | No default value |
defaultChecked | boolean | false |
isChecked | boolean | No default value |
onChange | function | No default value |
onFocus | function | No default value |
onBlur | function | No default value |
isDisabled | boolean | No default value |
isReadOnly | boolean | No default value |
isRequired | boolean | No default value |
validationStatus | enum | No default value |
size | enum | No default value |
#
Radio.IndicatorProp | Type | Default |
---|---|---|
css | StitchesCss | No default value |
#
Radio.LabelProp | Type | Default |
---|---|---|
as | enum | label |
css | StitchesCss | No default value |
#
Radio.HelperTextIn addition to the props below, you can pass Text props.
Prop | Type | Default |
---|---|---|
css | StitchesCss | No default value |
#
RadioGroupProp | Type | Default |
---|---|---|
defaultValue | string | number | No default value |
value | string | number | No default value |
name | string | No default value |
onChange | function | No default value |
isDisabled | boolean | No default value |