1.0.0 • Published 2 years ago

@attebyte/react-tree-select v1.0.0

Weekly downloads
-
License
GPL-3.0-only
Repository
github
Last release
2 years ago

React Tree Select     

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,
      }
    ]
  }
];

Props

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

PropertyTypeRequired?Description
dataT[]yes*The data to be rendered, if controlled
defaultDataT[]yes*The data to be rendered, if uncontrolled
uniqueIDPropertykeyof TyesThe property of your tree node that uniquely identifies the node
labelPropertykeyof TyesThe property of your node to display
childrenPropertykeyof TyesThe property of your node that holds the node's children
valuePropertykeyof Tyes*Required if you intend to use the tree to select nodes. If using for display purposes only, not required
onChange(data: T[]) => voidyes*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.

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