react-composable-treeview
v1.1.1
Published
A composable, headless, fully accessible tree view component for react
Maintainers
Readme
Composable Tree View
A composable, headless, fully accessible tree view component for react. This component is following radix philosophy and ARIA authoring practices. Keyboard navigation is fully supported.
Installation
Installation using npm
npm install react-composable-treeviewFile Explorer Exemple
import Accordion from 'react-composable-treeview';
<TreeView.Root>
<TreeView.Group value="/src">
<TreeView.Trigger>
<ChevronDownIcon />
src
</TreeView.Trigger>
<TreeView.Content>
<TreeView.Item value="/src/index.ts">index.ts</TreeView.Item>
<TreeView.Item value="/src/treeView.tsx">treeView.tsx</TreeView.Item>
</TreeView.Content>
</TreeView.Group>
<TreeView.Item value="/tsconfig.json">tsconfig.json</TreeView.Item>
<TreeView.Item value="/package.json">package.json</TreeView.Item>
</TreeView.Root>States
rootValue
The rootValue is a Set which contains the values of open groups. This state can be either controled or uncontroled.
selection
The selection keep track of the curent selected item or group. There can only be one selected element. This state can't be controled.
focus
The focus state keep track of the curent focused item or group. This state is managed the browser. This state can't be controled.
API Reference
Root
Contains all the parts of an tree view
| Prop | Type | Default |
| ----------------- | ----------------------- | ----------- |
| value | Set<string> | new Set() |
| defaultValue | Set<string> | new Set() |
| defaultSelection | string | - |
| onValueChange | (Set<string>) => void | - |
| draggable | boolean | false |
Group
Contains all the parts of a collapsible group.
The index property is required for keybinding to work. In a previous version of this package we tryed to infer the index but this was brittle and non-reactive. Now the package user has to specify the index itself.
| Prop | Type | Default |
| --------- | --------- | ------- |
| value | string | "" |
| index | number | - |
| draggable | boolean | false |
| Data attribute | Values | | -------------- | ------------------ | | data-state | "open" | "closed" | | data-depth | number | | aria-selected | "true" | "false" |
Item
Contains an item.
The index property is required for keybinding to work. In a previous version of this package we tryed to infer the index but this was brittle and non-reactive. Now the package user has to specify the index itself.
| Prop | Type | Default |
| --------- | --------- | ------- |
| value | string | "" |
| index | number | - |
| draggable | boolean | false |
| Data attribute | Values | | -------------- | ----------------- | | data-depth | number | | aria-selected | "true" | "false" | | aria-expanded | "true" | "false" |
Trigger
Toggles the collapsed state of its associated group.
Content
Contains the collapsible content for an item.
