List Selection
Used for managing selection state in list collections.
The useListSelection hook manages selection state in lists and collections. It supports single and multiple selection
modes with operations like select, deselect, toggle, and clear.
import { createListCollection, useListSelection } from '@ark-ui/react/collection'
const collection = createListCollection({
items: [
{ label: 'Apple', value: 'apple' },
{ label: 'Banana', value: 'banana' },
{ label: 'Cherry', value: 'cherry' },
],
})
const selection = useListSelection({
collection,
selectionMode: 'single',
deselectable: true,
})
console.log(selection.selectedValues) // ['apple', 'banana', 'cherry']
Examples
Basic
By default, the hook supports single selection mode that can be deselected.
Set
deselectabletofalseto prevent deselecting the current selection.
Example not foundExample not foundExample not foundExample not foundMultiple Selection
Set selectionMode to multiple to allow multiple items to be selected.
Example not foundExample not foundExample not foundExample not foundRange Selection
Here's an example of how to implement range selection that extends the selection from the first selected item to the clicked item.
Example not foundExample not foundExample not foundExample not foundAPI Reference
Props
- collection (
ListCollection<T>) - The collection to manage selection for - selectionMode (
'single' | 'multiple' | 'none', default:'single') - The selection mode - deselectable (
boolean, default:true) - Whether selected items can be deselected - initialSelectedValues (
string[], default:[]) - Initial selected values - resetOnCollectionChange (
boolean, default:false) - Whether to reset selection when collection changes
Return Value
The hook returns an object with the following properties and methods:
State Properties
- selectedValues (
string[]) - Array of currently selected values - isEmpty (
boolean) - Whether no items are selected - firstSelectedValue (
string | null) - The first selected value in collection order - lastSelectedValue (
string | null) - The last selected value in collection order
Query Methods
- isSelected (
(value: string | null) => boolean) - Check if a value is selected - canSelect (
(value: string) => boolean) - Check if a value can be selected - isAllSelected (
() => boolean) - Check if all items are selected - isSomeSelected (
() => boolean) - Check if some items are selected
Selection Methods
- select (
(value: string, forceToggle?: boolean) => void) - Select a value - deselect (
(value: string) => void) - Deselect a value - toggle (
(value: string) => void) - Toggle selection of a value - replace (
(value: string | null) => void) - Replace selection with a single value - extend (
(anchorValue: string, targetValue: string) => void) - Extend selection from anchor to target - setSelectedValues (
(values: string[]) => void) - Set the selected values - setSelection (
(values: string[]) => void) - Set the selection (alias for setSelectedValues) - clear (
() => void) - Clear all selections - resetSelection (
() => void) - Reset selection to initial state