Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-accessible-treeview

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-accessible-treeview

A react component that implements the treeview pattern as described by the WAI-ARIA Authoring Practices.

  • 1.1.0
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

react-accessible-treeview

A react component that implements the treeview pattern as described by the WAI-ARIA Authoring Practices.

Documentation and demo https://react-accessible-treeview.netlify.com/

Prop Types

Prop nameTypeDefault valueDescription
dataarray[node]requiredTree data
nodeRendererfuncrequiredRender prop for the node (see below for more details)
onSelectfuncnoopFunction called when a node changes its selected state
onExpandfuncnoopFunction called when a node changes its expanded state
classNamestring""className to add to the outermost dom element, al ul with role = "tree"
multiSelectboolfalseAllows multiple nodes to be selected
propagateSelectboolfalseIf true, selecting a node will also select its descendants
propagateSelectUpwardsboolfalseIf true, selecting a node will update the state of its parent (e.g. a parent node in a checkbox will be automatically selected if all of its children are selected
propagateCollapseboolfalseIf true, collapsing a node will also collapse its descendants
expandOnKeyboardSelectboolfalseSelecting a node with a keyboard (using Space or Enter) will also toggle its expanded state
togglableSelectboolfalseWether the selected state is togglable
defaultSelectedIdsarray[]Array with the ids of the default selected nodes
defaultExpandedIdsarray[]Array with the ids of the default expanded nodes
defaultDisabledIdsarray[]Array with the ids of the default disabled nodes
clickActionenumSELECTAction to perform on click. One of: EXCLUSIVE_SELECT, FOCUS, SELECT



data

An array of nodes. Nodes are objects with the following structure:

PropertyTypeDefaultDescription
idnumberrequiredA nonnegative interger that uniquely identifies the node
namestringrequiredUsed to match on key press
childrenarray[id]requiredAn array with the ids of the children nodes.
parentidrequiredThe parent of the node. null for the root node

The first item of the array represents the root node and won't be displayed.

Example:

const data = [
  { name: "", children: [1, 4, 9, 10, 11], id: 0, parent: null },
  { name: "src", children: [2, 3], id: 1, parent: 0 },
  { name: "index.js", id: 2, parent: 1 },
  { name: "styles.css", id: 3, parent: 1 },
  { name: "node_modules", children: [5, 7], id: 4, parent: 0 },
  { name: "react-accessible-treeview", children: [6], id: 5, parent: 4 },
  { name: "bundle.js", id: 6, parent: 5 },
  { name: "react", children: [8], id: 7, parent: 4 },
  { name: "bundle.js", id: 8, parent: 7 },
  { name: ".npmignore", id: 9, parent: 0 },
  { name: "package.json", id: 10, parent: 0 },
  { name: "webpack.config.js", id: 11, parent: 0 }
];

The array can also be generated from a nested object using the flattenTree helper (see the examples below).



nodeRenderer

  • Arguments: An object containing the following properties:
PropertyTypeDescription
elementobjectThe object that represents the rendered node
getNodePropsfunctionA function which gives back the props to pass to the node
isBranchboolWhether the rendered node is a branch node
isSelectedboolWhether the rendered node is selected
isExpandedbool or undefinedIf the node is a branch node, whether it is expanded, else undefined
tabbableIdintegerId of the currently tabbable (tabindex = 0) node
expandedIdsarrayAn array formed of the ids of the expanded nodes
levelnumberA positive integer that corresponds to the aria-level attribute
setsizenumberA positive integer that corresponds to the aria-setsize attribute
posinsetnumberA positive integer that corresponds to the aria-posinset attribute
handleSelectfunctionFunction to assign to the onClick event handler of the element(s) that will toggle the selected state
handleExpandfunctionFunction to assign to the onClick event handler of the element(s) that will toggle the expanded state
dispatchfunctionFunction to dispatch actions



onSelect

  • Arguments: onSelect({element, isBranch, isExpanded, selectedIds, expandedIds, tabbableId, halfSelectedIds, lastInteractedWith}) Note: the function uses the state after the selection.

onExpand

  • Arguments: onExpand({element, isBranch, isExpanded, selectedIds, expandedIds, tabbableId, halfSelectedIds, lastInteractedWith}) Note: the function uses the state _after the expansion.



Keyboard Navigation

Follows the same convention described in https://www.w3.org/TR/wai-aria-practices/examples/treeview/treeview-1/treeview-1b.html.

KeyFunction
Enter or SpaceUpdates the selected node to the current node and triggers onSelect
Down Arrow
  • Moves focus to the next node that is tabbable without opening or closing a node.
  • If focus is on the last node, does nothing.
Up arrow
  • Moves focus to the previous node that is tabbable without opening or closing a node.
  • If focus is on the first node, does nothing.
Right Arrow
  • When focus is on a closed node, opens the node; focus does not move.
  • When focus is on an end node, does nothing.
  • When focus is on a open node, moves focus to the first child node.
Left Arrow
  • When focus is on an open node, closes the node.
  • When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.
  • When focus is on a root node that is also either an end node or a closed node, does nothing.
HomeMoves focus to first node without opening or closing a node.
EndMoves focus to the last node that can be focused without expanding any nodes that are closed.
a-z, A-Z
  • Focus moves to the next node with a name that starts with the typed character.
  • Search wraps to first node if a matching name is not found among the nodes that follow the focused node.
  • Search ignores nodes that are descendants of closed nodes.
* (asterisk)
  • Expands all closed sibling nodes that are at the same level as the focused node.
  • Focus does not move.
Shift + Down Arrow Moves focus to and toggles the selection state of the next node.
Shift + Up ArrowMoves focus to and toggles the selection state of the previous node.
Ctrl + A Selects all nodes in the tree. If all nodes are selected, it unselects all nodes.



Mouse Navigation

KeyFunction
Clicktoggle parent nodes and also performs one of clickActions = SELECT, EXCLUSIVE_SELECT, FOCUS
Ctrl+ClickIf multiselect is true, selects the node without dropping the current selected ones. If false, it selects the clicked node. Doesn't toggle parents.
Shift+ClickIf multiselect is true, selects from the node without dropping the current selected ones. If false, it focus the clicked node. Doesn't toggle parents.



Click actions

VariantFunction
SELECTSelect the clicked node (default).
EXCLUSIVE_SELECTSelect the clicked node and deselects the rest.
FOCUSFocus the clicked node



Keywords

FAQs

Package last updated on 11 Aug 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc