Radio
is a form component, that shows a radio input with its label. It is used to allow users to choose single option from the list.
If you want to let a user select multiple options, use the Checkbox component.
Radio.Group
is a component that makes it easier to handle group of radios.
Import
import { Radio } from '@contentful/f36-components';// orimport { Radio } from '@contentful/f36-forms';
Examples
Using as a controlled input
Controlled components in React are those in which form data is handled by the component’s state.
For using the Radio
as a controlled input, you need to:
- Pass the
isChecked
property, with this property it will already be a controlled component; - Pass a
onChange
handler, so you can use it to update the value ofisChecked
;
Setting the isChecked
will already define it as a controlled input.
Using as an uncontrolled input
Uncontrolled components are those for which the form data is handled by the DOM itself. “Uncontrolled” refers to the fact that these components are not controlled by React state.
You can use the Radio
as an uncontrolled input, for that you can:
- Set the
defaultChecked
property, it will ensure that the checked state can be altered normally. - Don't set the
isChecked
as it will make the input controlled.
Using with Radio.Group
We also provide the Radio.Group
component that helps when using multiple radios. You can pass some common properties on the Radio.Group
level and they will be passed to the radios inside the group.
spacing
: This will set how much space should be between the inputs;name
: By setting this property on theRadio.Group
level, you will set it automatically for all the radios in the group;defaultValue
: This accepts a value that set thedefaultChecked
property for the radio that have the same value (uncontrolled);value
: Same asdefaultValue
but this one sets theisChecked
property, making the radio group controlled (controlled);onChange
: Handler that will be executed when any radio inside the group receives the event of change.
Radio.Group
is a recommended way of using Radio
when using it within forms.
Props (API reference)
Radio
- Name
aria-label
DescriptionValue to be set as aria-label if not passing a children
string - Name
className
DescriptionCSS class to be appended to the root element
string - Name
defaultChecked
DescriptionDefines initial checked state for an uncontrolled component
falsetrue - Name
helpText
DescriptionOptional text to be added as help text bellow the label
string - Name
id
DescriptionSets the id of the input
string - Name
inputProps
DescriptionAdditional props that are passed to the input element
Partial<DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>> - Name
isChecked
DescriptionDefines if the element is checked, onChange will be required
falsetrue - Name
isDisabled
DescriptionApplies disabled styles
falsetrue - Name
isInvalid
DescriptionApplies invalid styles
falsetrue - Name
isRequired
DescriptionValidate the input
falsetrue - Name
label
string - Name
name
DescriptionSet the name of the input
string - Name
onBlur
DescriptionAllows to listen to an event when an element loses focus
FocusEventHandler<HTMLInputElement | HTMLTextAreaElement> - Name
onChange
DescriptionAllows to listen to an input’s change in value
ChangeEventHandler<HTMLInputElement> - Name
onFocus
DescriptionAllows to listen to an event when an element get focused
FocusEventHandler<HTMLInputElement | HTMLTextAreaElement> - Name
onKeyDown
DescriptionAllows to listen to an event when a key is pressed
KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement> - Name
resize
DescriptionSets whether an element is resizable, and if so, in which directions
"none""both""horizontal""vertical" - Name
testId
DescriptionA [data-test-id] attribute used for testing purposes
string - Name
value
DescriptionSet the value of the input
string - Name
willBlurOnEsc
DescriptionBoolean property that allows to blur on escape
falsetrue
Radio.Group
- Name
children(required)
DescriptionElements that should be in the group
ReactNode - Name
className
DescriptionCSS class to be appended to the root element
string - Name
defaultValue
DescriptionValue of the radio that should be checked for uncontrolled inputs
string - Name
name
DescriptionName that will be assigned to all checkboxes inside the group, unless a different name is passed to the checkbox
string - Name
onBlur
DescriptionHandler that will be triggered when any checkbox inside the group loses focus
FocusEventHandler<HTMLInputElement> - Name
onChange
DescriptionHandler that will be triggered when any checkbox inside the group has their checked state changed
ChangeEventHandler<HTMLInputElement> - Name
testId
DescriptionA [data-test-id] attribute used for testing purposes
string - Name
value
DescriptionValue of the radio that should be checked for controlled inputs
string
Content guidelines
- Use direct, succinct copy that helps a user to successfully complete a form
- Do not use punctuation for labels
- Use sentence style caps (in which only the first word of a sentence or term is capitalized)
Accessibility
- To ensure
Radio
meets accessibility standards, providename
andid
- When using
Radio.Group
it should be wrapped in a<FormControl as="fieldset">
and have a<FormControl.Label as="legend">