This package was heavily inspired by [react-checkbox-group](https://github.com/ziad-saab/react-checkbox-group) after it stopped working the way I used it. `<Checkbox />` elements suddenly had to be direct children of `<CheckboxGroup>` (which was impossibl
This package was heavily inspired by react-checkbox-group after it stopped working the way I used it. elements suddenly had to be direct children of (which was impossible for my use case) or the CheckboxGroup explicitly needed to have a checkboxDepth prop (which was not flexible enough for me). So I decided to write my own component based on React's (then) new Context API.
Big thank you to Ziad Saab for the inspiration!
```
npm install react-checkbox-context
or
``
yarn add react-checkbox-context
What does react-checkbox-context do and how does it do that? Let me borrow the example from react-checkbox-group since the API is mostly identical:
This is your average checkbox group:
`jsx`
Repetitive, hard to manipulate and easily desynchronized. Lift up name and onChange, and give the group an initial checked values array:
`jsx
import { Checkbox, CheckboxGroup } from 'react-checkbox-context';
`
Since this component uses React's Context API, elements can by anywhere inside of a and do not have to be a direct descendant! So this is easily possible without having to specify any checkboxDepth props or the like:
`jsx`
onChange={(event, selectedValues) => {
console.log(selectedValues);
}}
>
Attention: When migrating from react-checkbox-group please note that the prop name to pass the values to a CheckboxGroup is named values instead of value.
| Prop | Type | Description |
| ---------- | ------------------------------------------------ | ---------------------------------------------------------- |
| onChange | (event: ChangeEvent, values: string[]) => void | Will be called on every time a checkbox changes its state. |name
| | string | Name for all checkboxes within one |values
| | string[] | Values of the elements marked as checked |
Status of checkboxes (checked/unchecked) can be controlled from outside by passing new values to (e.g. ).
The Checkbox component passes all of its props the the underlying element. All valid HTML attributes can be used with the exception of checked, name, onChange as they will be set by the parent component.
- Add more tests, more specifically a test if onChange` events are fired correctly.
MIT.