Radio buttons are a common way to allow users to make a single selection from a list of options. Since only one radio button can be selected at a time (within the same group), each available choice must be its own item and label. Upon selection of a radio item in a group, the group cannot be easily reset to zero selections.
label or the radio element itself to select an option.<dt-radio name="Value" value="Value" label="Radio label"/> <dt-radio name="Disabled" value="Disabled" label="Radio label thats been disabled" disabled/> <dt-radio name="CheckedDisabled" value="Checked" label="Radio label thats been disabled & checked" :model-value="true" disabled />
<dt-radio-group legend="Advanced missed call routing" model-value=""> <dt-radio name="ValueWDesc" value="Value" label="To voicemail" description="So they can hear your voice"/> <dt-radio name="DisabledWDesc" value="Disabled" label="Disabled" description="With Description" disabled /> </dt-radio-group>
<dt-radio-group legend="Advanced missed call routing" model-value=""> <dt-radio name="ValidationMessages" value="Validation Message Warning" label="To voicemail" validation-state="warning" :messages="[{ message: `So they can hear your voice`, type: `warning` }]" /> <dt-radio name="ValidationMessages" value="Validation Message Critical" label="To a message (no voicemail)" validation-state="critical" :messages="[{ message: `Because they probably don't need to leave a message anyway.`, type: `critical` }]" /> <dt-radio name="ValidationMessages" value="Validation Message Positive" label="To a team member or room phone" validation-state="positive" :messages="[{ message: `Because someone else might be able to talk to them.`, type: `positive` }]" /> </dt-radio-group>
<dt-radio name="ValueWSlot" value="Value" > With Slotted Label </dt-radio>
<dt-radio name="ValueWSlottedDescription" value="Value" label="With" > <template #description> Slotted Description </template> </dt-radio>
Use the label-size prop to override the default label size.
<dt-radio name="labelSizeExample1" value="xs" label="Extra small label" :label-size="100" checked /> <dt-radio name="labelSizeExample1" value="sm" label="Small label" :label-size="200" /> <dt-radio name="labelSizeExample1" value="md" label="Medium label (default)" :label-size="300" /> <dt-radio name="labelSizeExample1" value="lg" label="Large label" :label-size="400" />
The best accessibility is semantic HTML. Most screen readers understand how to parse inputs if they're correctly formatted. When it comes to radio input, there are a few things to keep in mind:
id attribute.for attribute. This correlates with the radio's id.fieldset to group them and a legend to title the group. For further information, please visit Gov.UK's article, "Using the fieldset and legend elements".aria-required property and use the validation message for input errors.aria-describedby with the id of the validation message.aria-describedby with the id of the validation message.import { DtRadio } from '@dialpad/dialtone-vue';
Name
|
Type
|
|---|---|
default | slot for Radio Label |
description | slot for Radio Description |
Name
|
Default
|
Type
|
|---|---|---|
description | '' | string Describes the input |
descriptionChildProps | {} | object A set of props that are passed into the description container |
descriptionClass | '' | string|array|object Used to customize the description container |
disabled | false | boolean Disables the input |
indeterminate | false | boolean Indeterminate State, toggling indeterminate checkbox will uncheck |
inputClass | '' | string|array|object Used to customize the input element |
label | '' | string A provided label for the input |
labelChildProps | {} | object A set of props that are passed into the label container |
labelClass | '' | string|array|object Used to customize the label container |
labelSize | null |
"100"
|
"200"
|
"300"
|
"400"
Overrides the label text size. |
labelStrength | null |
"bold"
|
"semibold"
|
"medium"
|
"normal"
Overrides the label font weight. |
messages | [] | array Validation messages |
messagesChildProps | {} | object A set of props that are passed into the validation messages component |
messagesClass | '' | string|array|object Used to customize the validation messages component |
name | '' | string The name of the input |
showLabel | true |
"true"
|
"false"
Determines visibility of radio label. |
showMessages | true |
"true"
|
"false"
Used to hide / show the validation messages |
v-model | false | boolean Used to set the checked state of the checkable input |
validationState | '' | string The validation state of the input |
value | '' | string|number A provided value for the radio |
Name
|
Type
|
|---|---|
focus | FocusEvent Native input focus event |
focusin | undefined Native input focusin event |
focusout | undefined Native input focusout event |
update:modelValue | String | Number Event fired to sync the modelValue prop with the parent component |
Class
|
Applies to
|
Description
|
|---|
Radio documentation last updated Friday, September 4, 2026
fix/popover-modal-zindex-scope