Radio Group
Allows users to select a single option from a list of mutually exclusive choices.
Structure
Reusable Components
It's recommended to use the RadioGroup
primitives to create your own custom components that can be used throughout your application.
In the example below, we're creating a custom MyRadioGroup
component that takes in an array of items and renders a radio group with those items along with a Label
component for each item.
You can then use the MyRadioGroup
component in your application like so:
Managing Value State
The value
prop is used to determine which radio group item(s) are currently checked. Bits UI provides flexible options for controlling and synchronizing the Radio Group's value.
Two-Way Binding
Use the bind:value
directive for effortless two-way synchronization between your local state and the Radio Group's internal state.
This setup enables toggling the Radio Group's value to "apple" via the custom button and ensures the local myValue
state updates when the Radio Group changes through any internal means (e.g., clicking on an item's button).
Change Handler
You can also use the onValueChange
prop to update local state when the Radio Group's value
state changes. This is useful when you don't want two-way binding for one reason or another, or you want to perform additional logic when the Radio Group changes.
With HTML Forms
If you set the name
prop on the RadioGroup.Root
component, a hidden input element will be rendered to submit the value of the radio group to a form.
Disabling Items
You can disable a radio group item by setting the disabled
prop to true
.
API Reference
The radio group component used to group radio items under a common name for form submission.
Property | Type | Description |
---|---|---|
value bindable prop | string | The value of the currently selected radio item. You can bind to this value to control the radio group's value from outside the component. Default: undefined |
onValueChange | function | A callback that is fired when the radio group's value changes. Default: undefined |
disabled | boolean | Whether or not the radio group is disabled. This prevents the user from interacting with it. Default: false |
required | boolean | Whether or not the radio group is required. Default: false |
name | string | The name of the radio group used in form submission. If provided, a hidden input element will be rendered to submit the value of the radio group. Default: undefined |
loop | boolean | Whether or not the radio group should loop through the items when navigating with the arrow keys. Default: false |
orientation | enum | The orientation of the radio group. This will determine how keyboard navigation will work within the component. Default: 'vertical' |
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-orientation | enum | The orientation of the radio group. |
data-radio-group-root | '' | Present on the root element. |
An radio item, which must be a child of the RadioGroup.Root
component.
Property | Type | Description |
---|---|---|
value required prop | string | The value of the radio item. This should be unique for each radio item in the group. Default: undefined |
disabled | boolean | Whether or not the radio item is disabled. This prevents the user from interacting with it. Default: false |
ref bindable prop | HTMLButtonElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-disabled | '' | Present when the radio item is disabled. |
data-value | '' | The value of the radio item. |
data-state | enum | The radio item's checked state. |
data-orientation | enum | The orientation of the parent radio group. |
data-radio-group-item | '' | Present on the radio item element. |