Skip to main content

Radio

A radio button is an interactive element that allows users to select a single option from a predefined set of choices.

Overview

GitHub Workflow Status GitHub Workflow Status

pie-radio is a Web Component built using Lit. It offers a simple and accessible radio button component for web applications.

This component can be easily integrated into various frontend frameworks and customised through a set of properties.

Installation

To install pie-radio in your application, run the following on your command line:

npm i @justeattakeaway/pie-webc
yarn add @justeattakeaway/pie-webc

Props

PropOptionsDescriptionDefault
checkedtrue
false
The checked state of the radio.false
defaultCheckedtrue
false
The default checked state of the radio (not necessarily the same as the current checked state). Used when the radio is part of a form that is reset.false
disabledtrue
false
Same as the HTML disabled attribute - indicates whether or not the radio is disabled.false
namestring
The name of the radio (used as a key/value pair with value). This is required in order to work properly with forms.undefined
requiredtrue
false
Same as native required attribute. If any radio button in a same-named group of radio buttons has the required attribute, a radio button in that group must be checked, although it doesn't have to be the one with the attribute applied.false
valuestring
The value of the radio (used as a key/value pair in HTML forms with name).undefined
status"default"
"error"
The status of the radio component. Can be default or error."default"

Slots

SlotDescription
default
The default slot is used for the radio label text.

Events

EventDescription
change
Fires when the radio is checked (but not when unchecked).
input
Should fire whenever a user toggles the radio.

Examples

For HTML:

// import as module into a js file e.g. main.js
import '@justeattakeaway/pie-webc/components/radio.js'
<!-- pass js file into <script> tag -->
<pie-radio></pie-radio>
<script>
    const pieRadio = document.querySelector('pie-radio');
    // Properties can be set like any JS object
    pieRadio.checked = checked;
</script>

For Native JS Applications, Vue, Angular, Svelte etc.:

// Vue templates (using Nuxt 3)
import '@justeattakeaway/pie-webc/components/radio.js';

// Setup code omitted
<pie-radio :checked="checked" value="value" @change="handleRadioChange"></pie-radio>

For React Applications. When using the React version of the component, please make sure you also include React as a dependency in your project as well. See Peer Dependencies section.

import { PieRadio } from '@justeattakeaway/pie-webc/react/radio.js';

// Setup code omitted
<PieRadio
    checked={isRadioChecked}
    value="value"
    onInput={handleRadioInput}>
    {`checked: ${isRadioChecked}`}
</PieRadio>

For NextJS 13, please directly import from the individual component package. All other template usage is the same as above.

// React templates (using Next 13 and SSR)
import { PieRadio } from '@justeattakeaway/pie-radio/dist/react';

Changelog