lightdarkdefaultcompact
Getting StartedInstallationChangelogSupportGithubFrameworksAngularVueReactDemosFoundationThemesTypographyIconsPopoversInternationalizationDrag and DropKeyboard NavigationLayoutGetting StartedBlockInlineGridComponentsAccordionAlertAlert GroupBadgeBreadcrumbButtonButton GroupButton ExpandButton HandleButton IconButton ResizeButton SortCardChatCheckboxColorData GridDateDialogDividerDrawerDropdownFileFormat DatetimeFormat NumberFormsForm InteractionsForm ValidationHeaderInputMenuMonthNavPaginationPasswordProgress BarProgress CircleProgress DotRadioRangeRatingSearchSelectStepperSwitchTabsTagTextareaTimeToastToggletipTooltipTreeData GridGetting StartedFooterPlaceholderAsyncResponsiveHeightPaginationBordersHoverLayerRange SelectionCSVColumn AlignmentColumn WidthColumn FixedColumn StickyColumn VisibilityColumn GroupsColumn SpanColumn ResizeDraggable ColumnsDraggable RowsRow HeaderRow Multi SelectRow Single SelectRow HeightRow ActionRow Action BulkRow StickyRow StripeRow FixedRow SortRow Groups

Use the radio input component when you want the user to select a single option from a list of mutually exclusive options.

Example

message text
code
<bp-fieldset>
  <label>label</label>

  <label>radio 1</label>
  <bp-radio value="1" checked></bp-radio>

  <label>radio 2</label>
  <bp-radio value="2"></bp-radio>

  <label>radio 3</label>
  <bp-radio value="3"></bp-radio>

  <bp-field-message>message text</bp-field-message>
</bp-fieldset>
<script type="module">
  const fieldset = document.querySelector('bp-fieldset');
  const radios = Array.from(fieldset.querySelectorAll('bp-radio'));
  fieldset.addEventListener('change', () => console.log(radios.find((r) => r.checked).value));
</script>

Vertical Group

message text success message
code
<bp-form-group layout="vertical">
  <bp-fieldset layout="vertical">
    <label>label</label>

    <label>radio 1</label>
    <bp-radio value="1" checked></bp-radio>

    <label>radio 2</label>
    <bp-radio value="2"></bp-radio>

    <label>radio 3</label>
    <bp-radio value="3"></bp-radio>

    <bp-field-message>message text</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="vertical" status="success">
    <label>success</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="success">success message</bp-field-message>
  </bp-fieldset>
</bp-form-group>
<script type="module">
  document.querySelector('bp-form-group').addEventListener('change', (e) => console.log(e.target));
</script>

Vertical Inline Group

message text disabled message error message success message
code
<bp-form-group layout="vertical-inline">
  <bp-fieldset layout="vertical-inline">
    <label>label</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message>message text</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="vertical-inline" disabled>
    <label>disabled</label>

    <label>radio 1</label>
    <bp-radio checked disabled></bp-radio>

    <label>radio 2</label>
    <bp-radio disabled></bp-radio>

    <label>radio 3</label>
    <bp-radio disabled></bp-radio>

    <bp-field-message>disabled message</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="vertical-inline" status="error">
    <label>error</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="error">error message</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="vertical-inline" status="success">
    <label>success</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="success">success message</bp-field-message>
  </bp-fieldset>
</bp-form-group>

Horizontal Group

message text disabled message error message success message
code
<bp-form-group layout="horizontal">
  <bp-fieldset layout="horizontal">
    <label>label</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message>message text</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="horizontal" disabled>
    <label>disabled</label>

    <label>radio 1</label>
    <bp-radio checked disabled></bp-radio>

    <label>radio 2</label>
    <bp-radio disabled></bp-radio>

    <label>radio 3</label>
    <bp-radio disabled></bp-radio>

    <bp-field-message>disabled message</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="horizontal" status="error">
    <label>error</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="error">error message</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="horizontal" status="success">
    <label>success</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="success">success message</bp-field-message>
  </bp-fieldset>
</bp-form-group>

Horizontal Inline Group

message text disabled message error message success message
code
<bp-form-group layout="horizontal-inline">
  <bp-fieldset layout="horizontal-inline">
    <label>label</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message>message text</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="horizontal-inline">
    <label>disabled</label>

    <label>radio 1</label>
    <bp-radio checked disabled></bp-radio>

    <label>radio 2</label>
    <bp-radio disabled></bp-radio>

    <label>radio 3</label>
    <bp-radio disabled></bp-radio>

    <bp-field-message>disabled message</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="horizontal-inline" status="error">
    <label>error</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="error">error message</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="horizontal-inline" status="success">
    <label>success</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="success">success message</bp-field-message>
  </bp-fieldset>
</bp-form-group>

Compact Group

message text disabled message error message success message
code
<bp-form-group layout="compact">
  <bp-fieldset layout="compact">
    <label>label</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message>message text</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="compact" disabled>
    <label>disabled</label>

    <label>radio 1</label>
    <bp-radio checked disabled></bp-radio>

    <label>radio 2</label>
    <bp-radio disabled></bp-radio>

    <label>radio 3</label>
    <bp-radio disabled></bp-radio>

    <bp-field-message>disabled message</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="compact" status="error">
    <label>error</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="error">error message</bp-field-message>
  </bp-fieldset>

  <bp-fieldset layout="compact" status="success">
    <label>success</label>

    <label>radio 1</label>
    <bp-radio checked></bp-radio>

    <label>radio 2</label>
    <bp-radio></bp-radio>

    <label>radio 3</label>
    <bp-radio></bp-radio>

    <bp-field-message status="success">success message</bp-field-message>
  </bp-fieldset>
</bp-form-group>

Install

NPM

// npm package
import '@blueprintui/components/include/radio.js';

CDN

<script type="module">
  import 'https://cdn.jsdelivr.net/npm/@blueprintui/components/include/radio.js/+esm';
</script>

Accessibility

  • Ensure that each radio input option has a unique label
  • Use clear and concise labels to ensure that the purpose and options of the radio input component are easily understood by screen reader users.
  • Provide alternative text for the radio input component as a whole using the aria-label attribute if necessary.

bp-radio

Events

NameTypesDescription
changeInputEventoccurs when the value changes

Properties

NameTypesDescription
valuestring | number | FormData | Filedetermines initial value of the control
checkedbooleandetermines whether element is checked
indeterminateboolean
disabledbooleandetermines if element is mutable or focusable
requiredbooleanindicates that the user must specify a value for the input before the owning form can be submitted
readonlybooleanmakes the element not mutable, meaning the user can not edit the control
multiplebooleandetermines he form control accepts one or more values
autocompletestringprovide automated assistance in filling out form field values, and guidance to the browser as to the type of information expected in the field
typestringstring specifying the type of control to render
namestringrepresents the name of the current
element as a string.
patternstringregular expression the form control's value should match
placeholderstringdefines a short hint to help the user with data entry when a form control has no value
minLengthnumberdefines minimum number of characters
maxLengthnumberdefines maximum number of characters
minnumberdefines the most negative value in the range of permitted values
maxnumberdefines the greatest value in the range of permitted values
sizenumberdetermines number of characters
formAssociatedboolean
valueAsNumber
composedLabel
focus
reset

Attributes

NameTypesDescription
valuestring | number | FormData | Filedetermines initial value of the control
checkedbooleandetermines whether element is checked
indeterminateboolean
disabledbooleandetermines if element is mutable or focusable
requiredbooleanindicates that the user must specify a value for the input before the owning form can be submitted
readonlybooleanmakes the element not mutable, meaning the user can not edit the control
multiplebooleandetermines he form control accepts one or more values
autocompletestringprovide automated assistance in filling out form field values, and guidance to the browser as to the type of information expected in the field
typestringstring specifying the type of control to render
patternstringregular expression the form control's value should match
placeholderstringdefines a short hint to help the user with data entry when a form control has no value
minLengthnumberdefines minimum number of characters
maxLengthnumberdefines maximum number of characters
minnumberdefines the most negative value in the range of permitted values
maxnumberdefines the greatest value in the range of permitted values
sizenumberdetermines number of characters