Checkbox Group
The CheckboxGroup
allows users to select one or more items from a list of choices.
Usage
import { CheckboxGroup } from "@newfold/ui-component-library";
const options = [
{ label: 'Option 1', value: '1' },
{ label: 'Option 2', value: '2' },
{ label: 'Option 3', value: '3' },
{ label: 'Option 4', value: '4' }
];
<CheckboxGroup
id="checkbox-group"
label="A checkbox group"
onChange={handleChange}
options={options}
values={['1', '3']}
/>
Options
You can pass options to the CheckboxGroup
component in two ways.
You can pass them as an array of objects to the options
prop, or
you can pass them as children to the component.
1. Options as Array
Use the options
prop to pass an array of options to the component.
Each option must be an object with a string label
and a string value
property.
<CheckboxGroup
id="checkbox-group-array"
label="A checkbox group"
onChange={handleChange}
options={[
{ label: 'Option 1', value: '1' },
{ label: 'Option 2', value: '2' },
{ label: 'Option 3', value: '3' },
{ label: 'Option 4', value: '4' }
]}
values={['1', '3']}
/>
If you want to have pre-selected options, you must pass an array to the
values
prop with the values of the options you wish to be selected.
2. Options as Children
You can pass options as children to the component. Each child must be
an instance of CheckboxGroup.Checkbox
sub-component.
<CheckboxGroup
id="checkbox-group-children"
label="A checkbox group"
name="checkbox-group-children"
onChange={handleChange}
>
<CheckboxGroup.Checkbox
checked
id="checkbox-group-option-1"
label="Option 1"
name="checkbox-group-children"
value="1"
/>
<CheckboxGroup.Checkbox
id="checkbox-group-option-2"
label="Option 2"
name="checkbox-group-children"
value="2"
/>
<CheckboxGroup.Checkbox
id="checkbox-group-option-3"
label="Option 3"
name="checkbox-group-children"
value="3"
/>
<CheckboxGroup.Checkbox
id="checkbox-group-option-4"
label="Option 4"
name="checkbox-group-children"
value="4"
/>
</CheckboxGroup>
This method is uncontrolled. So you have to manage the state of each
checkbox individually. And since the CheckboxGroup.Checkbox
sub-component is mostly
a wrapper around the native input[type="checkbox"]
element, you can use the checked
attribute as a prop to do that.
Label
Use the label
prop to add a label to the CheckboxGroup
component.
<CheckboxGroup
id="checkbox-group-label"
onChange={handleChange}
options={options}
values={selectedValues}
label="This is a label"
/>
Description
Use the description
prop to add a description to the CheckboxGroup
component.
<CheckboxGroup
id="checkbox-group-description"
onChange={handleChange}
options={options}
values={selectedValues}
label="This is a label"
description="This is a description for the checkbox group"
/>
Disabled
Use the disabled
prop to disable the CheckboxGroup
component.
<CheckboxGroup
id="checkbox-group-disabled"
label="Disabled checkbox group"
onChange={handleChange}
options={options}
values={selectedValues}
disabled
/>
Props
Attribute | Type | Description | Default |
---|---|---|---|
id | string | | The id of the checkbox group. | - |
name | string | | - | - |
values | array | | The values of the selected checkboxes. | - |
options | array | | The options for the checkbox group. | - |
children | node | | You can use `CheckboxGroup.Checkbox` sub-components as children instead of passing `options`. | - |
label | string | | The label for the checkbox group. | - |
description | string | | The description for the checkbox group. | - |
onChange | function | | The function to call when the checkbox group changes. The function will receive the new values (array) as an argument. | - |
disabled | bool | | Whether the checkbox group is disabled. | - |
className | string | | - | - |