@accessible/checkbox v4.0.2
An accessible checkbox component for React. This library allows you to create your own a checkbox with your own styles while maintaining the ability to focus and update a checkbox input with the keyboard.
Quick Start
Check out the example on CodeSandbox
import {Checkbox, Checkmark} from '@accessible/checkbox'
const MyCheckbox = () => (
<label className='my-checkbox'>
<Checkbox name='my-field-name'>
<span className='my-checkbox'>
<Checkmark checkedClass='checked' uncheckedClass='unchecked'>
<span className='checkmark' />
</Checkmark>
</span>
</Checkbox>
Check me!
</label>
)API
<Checkbox>
Creates a visually hidden checkbox input that is focusable and accessible via keyboard navigation.
All props passed to this component are applied to the <input>. This also creates a context
provider enabling the other components in this library to access the checkbox's state
deep in the tree.
Props
| Prop | Type | Default | Required? | Description |
|---|---|---|---|---|
| checked | boolean | undefined | No | Makes the checkbox a controlled component which can no longer be updated with check, uncheck, and toggle controls. |
| defaultChecked | boolean | undefined | No | Set this to true to make the checkbox checked by default. |
| onChange | (checked: boolean) => any | undefined | No | Called each time the checked state changes. |
| children | React.ReactNode | undefined | No | Your custom styled checkbox. |
<Checkmark>
A convenient component for conditionally adding class names and styles when the component is checked/unchecked.
Props
| Prop | Type | Default | Required? | Description |
|---|---|---|---|---|
| uncheckedClass | string | undefined | No | This class name will be applied to the child element when the checkbox is unchecked. |
| checkedClass | string | undefined | No | This class name will be applied to the child element when the checkbox is checked. |
| uncheckedStyle | React.CSSProperties | undefined | No | These styles will be applied to the child element when the checkbox is unchecked. |
| checkedStyle | React.CSSProperties | undefined | No | These styles name will be applied to the child element when the checkbox is checked. |
| children | React.ReactNode | undefined | Yes | The child you wish to render when the checkbox is checked. |
<Checked>
The child of this component will only render when the <Checkbox> is in
a checked state. It must be a child of a <Checkbox>.
Props
| Prop | Type | Default | Required? | Description |
|---|---|---|---|---|
| children | React.ReactNode | undefined | Yes | The child you wish to render when the checkbox is checked. |
<Unchecked>
The child of this component will only render when the <Checkbox> is in
an unchecked state. It must be a child of a <Checkbox>.
Props
| Prop | Type | Default | Required? | Description |
|---|---|---|---|---|
| children | React.ReactNode | undefined | Yes | The child you wish to render when the checkbox is unchecked. |
<Toggle>
This component clones its child and adds an onClick handler to toggle the <Checkbox> between
checked and unchecked states. It must be a child of a <Checkbox>.
Props
| Prop | Type | Default | Required? | Description |
|---|---|---|---|---|
| children | React.ReactNode | undefined | Yes | The child you wish to render when the checkbox is unchecked. |
useCheckbox()
A React hook that returns the CheckboxContextValue for the nearest <Checkbox> parent.
CheckboxContextValue
interface CheckboxContextValue {
// Does the checkbox have a `checked` property?
checked: boolean
// Is the checkbox currently focused?
focused: boolean
// Is the checkbox currently disabled?
disabled: boolean
// Checks the checkbox
check: () => void
// Unchecks the checkbox
uncheck: () => void
// Toggles the checkbox `checked` property
toggle: () => void
}LICENSE
MIT