A checkbox group allows a user to select multiple items from a list of options.
Vanilla CSS theme
--tint CSS variable used by the Vanilla CSS examples.Value
Use the value or defaultValue prop to set the selected items, and onChange to handle selection changes.
Current selection: soccer, baseball
import {CheckboxGroup} from './CheckboxGroup';
import {Checkbox} from './Checkbox';
import {useState} from 'react';
function Example() {
let [selected, setSelected] = useState(['soccer', 'baseball']);
return (
<>
<CheckboxGroup
label="Favorite sports"
value={selected}
onChange={setSelected}>
<Checkbox value="soccer">Soccer</Checkbox>
<Checkbox value="baseball">Baseball</Checkbox>
<Checkbox value="basketball">Basketball</Checkbox>
</CheckboxGroup>
<p>Current selection: {selected.join(', ')}</p>
</>
);
}
Forms
Use the name prop to submit the selected checkboxes to the server. Set the isRequired prop on the <CheckboxGroup> to validate the user selects at least one checkbox, or on individual checkboxes. See the Forms guide to learn more.
import {CheckboxGroup} from './CheckboxGroup';
import {Checkbox} from './Checkbox';
import {Button} from './Button';
import {Form} from './Form';;
<Form>
<div style={{display: 'flex', gap: 32, flexWrap: 'wrap'}}>
<CheckboxGroup
label="Sandwich condiments"
name="condiments"
isRequired>
<Checkbox value="lettuce">Lettuce</Checkbox>
<Checkbox value="tomato">Tomato</Checkbox>
<Checkbox value="onion">Onion</Checkbox>
<Checkbox value="sprouts">Sprouts</Checkbox>
</CheckboxGroup>
<CheckboxGroup label="Agree to the following" name="terms">
<Checkbox value="terms" isRequired>Terms and conditions</Checkbox>
<Checkbox value="privacy" isRequired>Privacy policy</Checkbox>
<Checkbox value="cookies" isRequired>Cookie policy</Checkbox>
</CheckboxGroup>
</div>
<Button type="submit" style={{marginTop: 8}}>Submit</Button>
</Form>
API
<CheckboxGroup>
<Label />
<Checkbox />
<Text slot="description" />
<FieldError />
</CheckboxGroup>
CheckboxGroup
| Name | Type | |
|---|---|---|
isDisabled | boolean | |
Whether the input is disabled. | ||
isReadOnly | boolean | |
Whether the input can be selected but not changed by the user. | ||
children | ChildrenOrFunction | |
The children of the component. A function may be provided to alter the children based on component state. | ||
value | string | |
The current value (controlled). | ||
defaultValue | string | |
The default value (uncontrolled). | ||
onChange | | |
Handler that is called when the value changes. | ||
Default className: react-aria-CheckboxGroup
| Render Prop | CSS Selector |
|---|---|
isDisabled | CSS Selector: [data-disabled]
|
| Whether the checkbox group is disabled. | |
isReadOnly | CSS Selector: [data-readonly]
|
| Whether the checkbox group is read only. | |
isRequired | CSS Selector: [data-required]
|
| Whether the checkbox group is required. | |
isInvalid | CSS Selector: [data-invalid]
|
| Whether the checkbox group is invalid. | |
state | CSS Selector: — |
| State of the checkbox group. | |