Radio
Radios are used when only one choice may be selected in a series of options.
When to use
- When the user should see all available options.
Examples
As with many of our components, there is also an uncontrolled version, StatefulRadioGroup, which manages its own state.
Overrides
Additionally, you can fully customize any part of the Radio through the overrides prop. The Radio consists of multiple subcomponents that are listed bellow and you can override each one of them. To help you identify the names of these subcomponents, you can highlight them through this selector:
Note: You should always use longhand CSS properties. Mixing shorthands and longhands will lead into strange behaviors!
API
Radio API
autoFocus boolean = false
Focus the radio on initial render.
checked boolean = false
Check or uncheck the control.
children React$Node
Label of radio.
React$Nodedescription string
Add more detail about a radio element.
disabled boolean = false
Disable the checkbox from being changed.
inputRef ElementRef<*> = ()
Used to get a ref to the input element. Useful for programmatically focusing the input
ElementRef*isError boolean = false
Renders checkbox in errored state.
labelPlacement union
How to position the label relative to the checkbox itself.
One of "top", "right", "bottom", "left"name string
Passed to the input element name attribute
onBlur function = () => undefined
handler for blur events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonChange function = () => undefined
Handler for change events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonFocus function = () => undefined
handler for focus events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonMouseEnter function = () => undefined
Handler for mouseenter events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonMouseLeave function = () => undefined
Handler for mouseleave events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonMouseDown function = () => undefined
Handler for mousedown events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonMouseUp function = () => undefined
Handler for mouseup events on trigger element.
SyntheticInputEventHTMLInputElement => mixedoverrides object = {}
RadioMarkInner { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioMarkOuter { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Label { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Root { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Input { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Description { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioGroupRoot { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*required boolean
Marks the checkbox as required.
value string
Passed to the input element value attribute
RadioGroup API
"aria-label" string
Used to define a string that labels the radio group. Use this prop if the label is not visible on screen. If the label is visible, use the 'aria-labeledby' prop instead.
"aria-labelledby" string
Establishes a relationship between the radio group and its label. Screen readers use this attribute to catalog the object on a page so that users can navigate between them.
overrides object = {}
This prop will be deprecated in the next major update. Pass overrides to the 'Radio' component instead.
RadioMarkInner { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioMarkOuter { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Label { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Root { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Input { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Description { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioGroupRoot { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*children Array<Node>
As children in React native approach represents radio buttons inside of Radio Group. Can use Radio from this package.
ArrayNodevalue string = ""
The value of radio button, which is preselected.
disabled boolean = false
Disabled all radio group from being changed. To disable some of radios provide disabled flag in each of them.
required boolean = false
Set if the control is required to be checked.
isError boolean = false
Sets radio group into error state.
autoFocus boolean = false
Set to be focused (active) on selected\checked radio.
align string = "vertical"
How to position radio buttons in the group.
name string = ""
String value for the name of RadioGroup, it is used to group buttons. If missed default is random ID string.
labelPlacement union = "right"
How to position the label relative to the radio itself.
One of "top", "right", "bottom", "left"onChange function = () => undefined
Handler for change events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonMouseEnter function = () => undefined
Handler for mouseenter events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonMouseLeave function = () => undefined
Handler for mouseleave events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonFocus function = () => undefined
Handler for focus events on trigger element.
SyntheticInputEventHTMLInputElement => mixedonBlur function = () => undefined
Handler for blur events on trigger element.
SyntheticInputEventHTMLInputElement => mixedStatefulRadioGroup API
overrides object
RadioMarkInner { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioMarkOuter { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Label { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Root { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Input { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Description { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioGroupRoot { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*children Array<Node>
A list of Radio components.
ArrayNodeinitialState object
Initial state populated into the component
value string autoFocus boolean
Set to be focused (active) on selected\checked radio.
onChange function
Handler for change events on trigger element.
SyntheticInputEventHTMLInputElement => mixedStatefulRadioGroupContainer API
overrides object
RadioMarkInner { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioMarkOuter { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Label { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Root { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Input { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Description { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioGroupRoot { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*children function
Should return RadioGroup instance with standard or customized inner elements.
"aria-label" string "aria-labelledby" string overrides RadioMarkInner { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioMarkOuter { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Label { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Root { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Input { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*Description { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*RadioGroupRoot { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*children ArrayNodevalue string disabled boolean required boolean isError boolean autoFocus boolean align string name string labelPlacement One of "top", "right", "bottom", "left"onChange function SyntheticInputEventHTMLInputElement => mixedonMouseEnter function SyntheticInputEventHTMLInputElement => mixedonMouseLeave function SyntheticInputEventHTMLInputElement => mixedonFocus function SyntheticInputEventHTMLInputElement => mixedonBlur function SyntheticInputEventHTMLInputElement => mixed => NodeinitialState object = { value: "" }
Initial state populated into the component
value string stateReducer function = (type, nextState) => undefined
Reducer function to manipulate internal state updates.
function string, value string , value string , SyntheticInputEventHTMLInputElement => value string onChange function = () => undefined
Handler for change events on trigger element.
SyntheticInputEventHTMLInputElement => mixedautoFocus boolean
Set to be focused (active) on selected\checked radio.
Radio exports
You can import this module like so:
import {StatefulRadioGroup} from 'baseui/radio'
It exports the following components or utility functions:
- StatefulRadioGroup
- StatefulContainer
- RadioGroup
- StyledRoot
- StyledLabel
- StyledInput
- StyledDescription
- StyledRadioMarkInner
- StyledRadioMarkOuter
- StyledRadioGroupRoot
- Radio