UNPKG

@shopify/polaris

Version:

Shopify’s product component library

129 lines (97 loc) 3.2 kB
--- name: Radio button category: Forms keywords: - RadioButton - selection - choices - options - pick - single selection form - choice form - option button - radio button form --- # Radio button Use radio buttons to present each item in a list of options where merchants must make a single selection. --- ## Purpose Put the merchant first by identifying the problem they face and the component that helps them solve it. ### Problem Sometimes only one choice or option is available to merchants. There are only a few choices to display, and the [choice list component](/components/forms/choice-list) can’t be used. ### Solution Radio buttons present multiple items and require merchants to pick only one thing from a list. --- ## Best practices Radio buttons should: * Always be used with an associated label component. * Be part of a list of radio buttons that: * Include at least two or more choices. * Are used to have merchants select only one option. * Include mutually exclusive options—this means that each option must be independent from every other option in the list. For example: Red, blue, and yellow are mutually exclusive. Red, blue, yellow, red/blue are not mutually exclusive. * List options in a rational order that makes logical sense. --- ## Content guidelines ### Radio button labels Radio button labels should: * Be introduced with a colon or a heading * Start with a capital letter <!-- usagelist --> #### Do - Option 1 #### Don’t - option 1 <!-- end --> * Not end in punctuation if it’s a single sentence, word, or a fragment <!-- usagelist --> #### Do - Red #### Don’t - Red; <!-- end --> ## Examples ### Default radio button Use radio buttons where merchants must make a single selection. ```jsx class RadioButtonExample extends React.Component { state = { value: 'disabled', }; handleChange = (checked, newValue) => { this.setState({value: newValue}); } render() { const {value} = this.state; return ( <Stack vertical> <RadioButton label="Accounts are disabled" helpText="Customers will only be able to check out as guests." checked={(value === 'disabled')} id="disabled" name="accounts" onChange={this.handleChange} /> <RadioButton label="Accounts are optional" helpText="Customers will be able to check out with a customer account or as a guest." id="optional" name="accounts" checked={(value === 'optional')} onChange={this.handleChange} /> </Stack> ); } } ``` --- ## Related components * To make simple lists of radio buttons easier to build, [use the choice list component](/components/forms/choice-list) * For long lists of options, [consider the select component](/components/forms/select) to avoid overwhelming merchants * To present merchants with a list of checkboxes, [use the choice list component](/components/forms/choice-list) with the “allow multiple” option * To display non-interactive list of related content, [use the content list component](/components/tables-and-lists/list)