Skip to content

Attebyte/react-tree-select

Repository files navigation

React Tree Select   React Icon   React Icon

A simple, highly customizable tree component.
View Full Documentation

Installation

Install using the package manager of your choice.

npm i @attebyte/react-tree-select
yarn add @attebyte/react-tree-select

Getting Started

Simply pass your tree shaped data to TreeSelect along with the required properties.

import TreeSelect from '@attebyte/react-tree-select';
import '@attebyte/react-tree-select/dist/style.css';

function App() {
  return (
    <>
      <TreeSelect
        defaultData={ExampleData}
        labelProperty={'label'}
        valueProperty={'included'}
        childrenProperty={'children'}
        uniqueIDProperty={'value'}

        />
    </>
  )
}

export default App
const ExampleData: ExampleNode[] = [
  {
    label: 'Root 1',
    value: 1,
    children: [
      {
        label: 'Child 1',
        value: 2,
        children: [
          {
            label: 'Grandchild 1',
            value: 3,
          },
          {
            label: 'Grandchild 2',
            value: 4,
          }
        ]
      },
      {
        label: 'Child 2',
        value: 5,
      }
    ]
  },
  {
    label: 'Root 2',
    value: 6,
    children: [
      {
        label: 'Child 3',
        value: 7,
      },
      {
        label: 'Child 4',
        value: 8,
      }
    ]
  }
];

Example GIF

Props

Commonly required props for most use cases. To see a full list of available properties, see our full documentation.

Property Type Required? Description
data T[] yes* The data to be rendered, if controlled
defaultData T[] yes* The data to be rendered, if uncontrolled
uniqueIDProperty keyof T yes The property of your tree node that uniquely identifies the node
labelProperty keyof T yes The property of your node to display
childrenProperty keyof T yes The property of your node that holds the node's children
valueProperty keyof T yes* Required if you intend to use the tree to select nodes. If using for display purposes only, not required
onChange (data: T[]) => void yes* Required if you intend to use the the tree to select nodes. Called every time a node selection is changed with the updated tree

Customization

This library is built with customization in mind and contains minimal default styles using tailwind. The library consists of 4 replacable parts:

  • TreeNode - The container for an individual node
  • NodeLabel - The label displyed within each node
  • NodeCheck - The checkbox used to select a node or indicate descendent's selections
  • ExpandIcon - Icon to indicate if a node has children or is collapsed / expanded For additional information and examples of customization, please see our full documentation.



Buy Me A Coffee Logo

This is my first open source project and feedback is always appreciated. Twitter

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published