Demos
Basic
const cities = [ { value: 'oslo', title: 'Oslo', description: 'Capital of Norway', }, { value: 'stockholm', title: 'Stockholm', description: 'Capital of Sweden', }, { value: 'copenhagen', title: 'Copenhagen', description: 'Capital of Denmark', }, { value: 'helsinki', title: 'Helsinki', description: 'Capital of Finland', }, { value: 'reykjavik', title: 'Reykjavik', description: 'Capital of Iceland', }, ] render(<Field.MultiSelection label="Select cities" data={cities} />)
With Select all
This example uses field width medium.
const cities = [ { value: 'oslo', title: 'Oslo', text: 'Capital of Norway', }, { value: 'stockholm', title: 'Stockholm', text: 'Capital of Sweden', }, { value: 'copenhagen', title: 'Copenhagen', text: 'Capital of Denmark', }, { value: 'helsinki', title: 'Helsinki', text: 'Capital of Finland', }, { value: 'reykjavik', title: 'Reykjavik', text: 'Capital of Iceland', }, ] render( <Field.MultiSelection label="Select cities" data={cities} showSelectAll width="medium" /> )
With search
render( <Field.MultiSelection label="Select fruits" data={fruits} showSearchField /> )
With confirm and cancel
const cities = [ { value: 'oslo', title: 'Oslo', text: 'Capital of Norway', }, { value: 'stockholm', title: 'Stockholm', text: 'Capital of Sweden', }, { value: 'copenhagen', title: 'Copenhagen', text: 'Capital of Denmark', }, { value: 'helsinki', title: 'Helsinki', text: 'Capital of Finland', }, { value: 'reykjavik', title: 'Reykjavik', text: 'Capital of Iceland', }, ] render( <Field.MultiSelection label="Select cities" data={cities} showSearchField showSelectAll showConfirmButton /> )
With nested items
<Field.MultiSelection label="Select regions" showSelectAll data={[ { value: 'scandinavia', title: 'Scandinavia', children: [ { value: 'oslo', title: 'Oslo', text: 'Capital of Norway', }, { value: 'stockholm', title: 'Stockholm', text: 'Capital of Sweden', }, { value: 'copenhagen', title: 'Copenhagen', text: 'Capital of Denmark', }, ], }, { value: 'nordic', title: 'Other Nordic', children: [ { value: 'helsinki', title: 'Helsinki', text: 'Capital of Finland', }, { value: 'reykjavik', title: 'Reykjavik', text: 'Capital of Iceland', }, ], }, ]} />
With selected item tags
const cities = [ { value: 'oslo', title: 'Oslo', text: 'Capital of Norway', }, { value: 'stockholm', title: 'Stockholm', text: 'Capital of Sweden', }, { value: 'copenhagen', title: 'Copenhagen', text: 'Capital of Denmark', }, { value: 'helsinki', title: 'Helsinki', text: 'Capital of Finland', }, { value: 'reykjavik', title: 'Reykjavik', text: 'Capital of Iceland', }, ] render( <Field.MultiSelection label="Select cities" data={cities} value={['stockholm']} showSelectedTags /> )
With many selected items
When showSelectedTags is enabled and the number of items exceeds the selectedItemsCollapsibleThreshold (default: 10), an accordion appears to collapse/expand the selected items. A "Clear all" button also appears to the right for quickly deselecting all items.
const items = Array.from( { length: 30, }, (_, i) => ({ value: `item${i + 1}`, title: `Item ${i + 1}`, description: `Description for item ${i + 1}`, }) ) render( <Field.MultiSelection label="Select items" data={items} value={items.slice(0, 25).map((item) => item.value)} showSelectedTags showSelectAll showSearchField /> )
With disabled items
<Field.MultiSelection label="Select available languages" data={[ { value: 'nodejs', title: 'Node.js', text: 'JavaScript runtime', }, { value: 'python', title: 'Python', text: 'General purpose language', disabled: true, }, { value: 'rust', title: 'Rust', text: 'Systems programming language', }, { value: 'golang', title: 'Go', text: 'Compiled language', disabled: true, }, { value: 'java', title: 'Java', text: 'Enterprise language', }, ]} />
Inline variant
The inline variant renders the item list inline without a popover. This is useful when you want the options to be always visible.
const cities = [ { value: 'oslo', title: 'Oslo', }, { value: 'stockholm', title: 'Stockholm', }, { value: 'copenhagen', title: 'Copenhagen', }, { value: 'helsinki', title: 'Helsinki', }, { value: 'reykjavik', title: 'Reykjavik', }, ] render( <Field.MultiSelection label="Select cities" variant="inline" value={['stockholm']} data={cities} showSelectAll showSearchField showSelectedTags /> )
Using dataPath from Form context
<Form.Handler data={{ colors: [ { value: 'red', title: 'Red', text: 'Primary color', }, { value: 'green', title: 'Green', text: 'Secondary color', }, { value: 'blue', title: 'Blue', text: 'Tertiary color', }, { value: 'yellow', title: 'Yellow', text: 'Accent color', }, ], }} > <Field.MultiSelection label="Select colors" dataPath="/colors" value={['red']} help={{ title: 'Help text', content: 'Additional information about this field', }} /> </Form.Handler>
Disabled field
const cities = [ { value: 'oslo', title: 'Oslo', text: 'Capital of Norway', }, { value: 'stockholm', title: 'Stockholm', text: 'Capital of Sweden', }, { value: 'copenhagen', title: 'Copenhagen', text: 'Capital of Denmark', }, { value: 'helsinki', title: 'Helsinki', text: 'Capital of Finland', }, { value: 'reykjavik', title: 'Reykjavik', text: 'Capital of Iceland', }, ] render( <Field.MultiSelection label="Disabled field" disabled data={cities} /> )
With minimum required items
const cities = [ { value: 'oslo', title: 'Oslo', text: 'Capital of Norway', }, { value: 'stockholm', title: 'Stockholm', text: 'Capital of Sweden', }, { value: 'copenhagen', title: 'Copenhagen', text: 'Capital of Denmark', }, { value: 'helsinki', title: 'Helsinki', text: 'Capital of Finland', }, { value: 'reykjavik', title: 'Reykjavik', text: 'Capital of Iceland', }, ] render( <Form.Handler> <Form.Card> <Field.MultiSelection label="Select cities" path="/cities" required minItems={2} data={cities} showSearchField showSelectedTags /> <Form.SubmitButton /> </Form.Card> </Form.Handler> )