<Checkboxes>

Generates a group of checkboxes.

Although checkboxes are a practical alternative to a using a <Select multiple /> and behave very like a list box.

Usage

This is a stateless controlled component. You must respond to onValue to update the selected value.

const [values, setValues] = useState(initialValues);

<Checkboxes
  options={options}
  values={values}
  onValues={setValues}
/>;

Props

name: String

Optional. name attribute for each checkbox.

Use the html option on an option if any checkbox needs a unique name.

options: Array<any>

The options to display. See options.

Checkboxes take an additional description property that allows an optional description to be added to a checkbox.

mapOption: (option: any) => Option | string

Map an option into label, value, disabled and group. See options

values: Array<any>

The currently selected option

onChange: (event: Event) => void

Change event added to each checkbox.

onValues: (option: Array<any>) => void

Called with the selected option when a user selects an option.

classPrefix: string = "react-combo-boxes-checkbox'

By default the component is built using BEM style class names. This sets the prefix for all those classes.

Set to falsey to remove the BEM classes.

groupClassPrefix: string = "react-combo-boxes-checkbox-group'

BEM class prefix for groups.

Set to falsey to remove the BEM classes.

render props

A number of render methods are provided to customise the appearance of the component.

Each render method has the signature

(
  // The props set on the <ComboBox>
  props: object,
  // The state of the component
  state: {
    // Current option
    option: Option;
    // Is the current option selected
    checked: boolean;
    // Current group
    group: Group;
  },
  // The props passed into the component
  componentProps: object;
) => React.ReactNode

The render functions available are:

Name Default value Description
renderWrapper ({ key, ...props }) => <div key={key} {...props} /> Renders the wrapper for each checkbox
renderInput (props) => <input {...props} /> Renders the checkbox input
renderLabel (props) => <label {...props} /> Renders label for a checkbox
renderLabelWrapper (props) => <Fragment {...props} /> Allows an element to wraps the label and description
renderDescription (props) => <div {...props} /> Renders the optional description for checkbox
renderGroup ({ key, ...props }) => <div key={key} {...props} /> Wraps a group of options
renderGroupLabel (props) => <div {...props} /> Renders the visible label for a group. This will be ignored by a screen-reader
renderGroupAccessibleLabel (props) => <span {...props} /> Renders the accessible label for a group. This will be read out before each option