Checkbox
Allow users to switch between checked, unchecked, and indeterminate states.
Structure
Reusable Components
It's recommended to use the Checkbox
primitive to create your own custom checkbox component that can be used throughout your application. In the example below, we're using the Checkbox
and Label
components to create a custom checkbox component.
You can then use the MyCheckbox
component in your application like so:
Managing Checked State
The checked
prop is used to determine whether the checkbox is in one of three states: checked, unchecked, or indeterminate. Bits UI provides flexible options for controlling and synchronizing the Checkbox's checked state.
Two-Way Binding
Use the bind:checked
directive for effortless two-way synchronization between your local state and the Checkbox's internal state.
This setup enables toggling the Checkbox via the custom button and ensures the local myChecked
state updates when the Checkbox changes through any internal means (e.g., clicking on the checkbox).
Change Handler
You can also use the onCheckedChange
prop to update local state when the Checkbox's checked
state changes. This is useful when you don't want two-way binding for one reason or another, or you want to perform additional logic when the Checkbox changes.
Disabled State
You can disable the checkbox by setting the disabled
prop to true
.
HTML Forms
If you set the name
prop, a hidden checkbox input will be rendered to submit the value of the checkbox to a form. By default, the checkbox will be submitted with default checkbox values of on
or off
depending on the checked
prop. You can customize the value by setting the value
prop.
API Reference
The button component used to toggle the state of the checkbox.
Property | Type | Description |
---|---|---|
checked bindable prop | enum | The checkbox button's checked state. This can be a boolean or the string 'indeterminate', which would typically display a dash in the checkbox. Default: false |
onCheckedChange | function | A callback that is fired when the checkbox button's checked state changes. Default: undefined |
disabled | boolean | Whether or not the checkbox button is disabled. This prevents the user from interacting with it. Default: false |
required | boolean | Whether or not the checkbox is required. Default: false |
name | string | The name of the checkbox. If provided a hidden input will be render to use for form submission. If not provided, the hidden input will not be rendered. Default: undefined |
value | string | The value of the checkbox. This is what is submitted with the form when the checkbox is checked. Default: undefined |
ref bindable prop | HTMLButtonElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-state | enum | The checkbox's state of checked, unchecked, or indeterminate. |
data-disabled | '' | Present when the checkbox is disabled. |
data-checkbox-root | '' | Present on the root element. |