Skip to main content

Radio Group

View as Markdown

An easily stylable radio button component.

Choose an option:

Features

Installation

typo3 ui:add radio-group

Read more about installing Components and Primitives.

Examples

Disabled Items

Disable specific radio options.

Select plan:

Disabled Group

Disable the entire radio group.

Disabled group:

No Default Value

Start with no option selected by default.

Select your gender:

API Reference

The following tables cover the available props of the Fluid Primitives. For a full list of available client side props and methods, see the Zag.js Machine API.

radioGroup.root

Provides shared radio group state and semantics. Renders a <div> element.

NameDescriptionRequiredDefault
defaultValuestring
The initial value of the checked radio when rendered. Use when you don't need to control the value of the radio group. Inherited from a surrounding field when available.
No
-
namestring
The name of the input fields in the radio. Useful for form submission. Inherited from a surrounding field when available.
No
-
formstring
The associate form of the underlying input.
No
-
disabledboolean
If `true`, the radio group will be disabled. Inherited from a surrounding field when available.
No
-
readOnlyboolean
Whether the radio group is read-only. Inherited from a surrounding field when available.
No
-
requiredboolean
If `true`, the radio group is marked as required. Inherited from a surrounding field when available.
No
-
orientationEnum\Orientation
Orientation of the radio group.
No
Vertical
invalidboolean
If `true`, the radio group is marked as invalid. Inherited from a surrounding field when available.
No
-
asChildboolean
If true the component uses its child only without the component template. Like Radix UI asChild or Base UI render props.
No
-
rootIdstring
The root ID of the component, used for hydration and identification.
No
-
idsarray
The IDs of of the component parts for composition.
No
[]
controlledboolean
If true, the component is meant to be initialized manually inside another component
No
false
classstring
The CSS class(es) to be applied to the component.
No
-
attributesarray
Additional attributes that should be rendered on the component where ui:attributes is used.
No
[]

Rendered data attributes

AttributeDescription
data-scoperadio-group
data-partroot
data-orientationThe orientation of the radio-group
data-disabledPresent when disabled
data-invalidPresent when invalid
data-requiredPresent when required

radioGroup.label

Labels the radio group. Renders a <span> element.

NameDescriptionRequiredDefault
asChildboolean
If true the component uses its child only without the component template. Like Radix UI asChild or Base UI render props.
No
-
classstring
The CSS class(es) to be applied to the component.
No
-
attributesarray
Additional attributes that should be rendered on the component where ui:attributes is used.
No
[]

Rendered data attributes

AttributeDescription
data-scoperadio-group
data-partlabel
data-orientationThe orientation of the label
data-disabledPresent when disabled
data-invalidPresent when invalid
data-requiredPresent when required

radioGroup.item

Wraps a single radio item and makes it clickable. Renders a <label> element.

NameDescriptionRequiredDefault
valuestring
The value of the radio item.
Yes
-
disabledboolean
Whether the radio item is disabled.
No
-
invalidboolean
Whether the radio item is invalid.
No
-
asChildboolean
If true the component uses its child only without the component template. Like Radix UI asChild or Base UI render props.
No
-
classstring
The CSS class(es) to be applied to the component.
No
-
attributesarray
Additional attributes that should be rendered on the component where ui:attributes is used.
No
[]

radioGroup.itemHiddenInput

Provides the native radio input for form submission. Renders an <input> element.

NameDescriptionRequiredDefault
asChildboolean
If true the component uses its child only without the component template. Like Radix UI asChild or Base UI render props.
No
-
classstring
The CSS class(es) to be applied to the component.
No
-
attributesarray
Additional attributes that should be rendered on the component where ui:attributes is used.
No
[]

radioGroup.itemControl

Displays the visual radio control. Renders a <div> element.

NameDescriptionRequiredDefault
asChildboolean
If true the component uses its child only without the component template. Like Radix UI asChild or Base UI render props.
No
-
classstring
The CSS class(es) to be applied to the component.
No
-
attributesarray
Additional attributes that should be rendered on the component where ui:attributes is used.
No
[]

Rendered data attributes

AttributeDescription
data-scoperadio-group
data-partitem-control
data-activePresent when active or pressed

radioGroup.itemText

Displays the visible label text for a radio item. Renders a <span> element.

NameDescriptionRequiredDefault
asChildboolean
If true the component uses its child only without the component template. Like Radix UI asChild or Base UI render props.
No
-
classstring
The CSS class(es) to be applied to the component.
No
-
attributesarray
Additional attributes that should be rendered on the component where ui:attributes is used.
No
[]

radioGroup.indicator

Displays the moving selection indicator. Renders a <div> element.

NameDescriptionRequiredDefault
asChildboolean
If true the component uses its child only without the component template. Like Radix UI asChild or Base UI render props.
No
-
classstring
The CSS class(es) to be applied to the component.
No
-
attributesarray
Additional attributes that should be rendered on the component where ui:attributes is used.
No
[]

Rendered data attributes

AttributeDescription
data-scoperadio-group
data-partindicator
data-disabledPresent when disabled
data-orientationThe orientation of the indicator

Machine JavaScript API

NameTypeDescription
valuestring | nullThe current value of the radio group
setValue(value: string) => voidFunction to set the value of the radio group
clearValueVoidFunctionFunction to clear the value of the radio group
focusVoidFunctionFunction to focus the radio group
getItemState(props: ItemProps) => ItemStateReturns the state details of a radio input

Accessibility

KeyDescription
TabMoves focus to either the checked radio item or the first radio item in the group.
SpaceWhen focus is on an unchecked radio item, checks it.
ArrowDownMoves focus and checks the next radio item in the group.
ArrowRightMoves focus and checks the next radio item in the group.
ArrowUpMoves focus to the previous radio item in the group.
ArrowLeftMoves focus to the previous radio item in the group.

Anatomy

<primitives:radioGroup.root>
    <primitives:radioGroup.item>
        <primitives:radioGroup.itemControl />
        <primitives:radioGroup.itemText />
        <primitives:radioGroup.itemHiddenInput />
    </primitives:radioGroup.item>
    <primitives:radioGroup.indicator />
</primitives:radioGroup.root>