UNPKG

@kenshooui/react-tree

Version:

React Tree is a straight forward component that allows a user to display and manage a hierarchical structure of items in a clear and comfortable way.

205 lines (128 loc) 5.45 kB
# React Tree React Tree is a straight forward component that allows a user to display and manage a hierarchical structure of items in a clear and comfortable way. The basic tree is built using @emotion/core, and supports both styling and component renderers customizations. Examples can be found - [here](https://github.com/kenshoo/react-tree/blob/master/packages/docs/stories/core.stories.js) <p align="center"> <img src="https://grid.kenshoo.com/resources-frontend/latest/react-tree/core/demo.gif" width="288" /> </p> ### Installation **Installation using npm:** ``` npm install @kenshooui/react-tree --save ``` **Installation using Yarn:** ``` yarn add @kenshooui/react-tree ``` ### How to use <!-- example --> ```jsx import ReactTree from "@kenshooui/react-tree"; const structure = [ ["Profiles", "Performance", "Clicks"], ["Profiles", "Performance", "Imp"], ["Profiles", "Attribute", "Agency"], ["Profiles", "Attribute", "Progress"], ["Profiles", "Attribute", "Create Date"], ["Campaigns", "Performance", "Clicks"], ["Campaigns", "Performance", "Cost"], ["Campaigns", "Performance", "CTR"], ["Campaigns", "Attribute", "campaign name"], ["Ad Groups", "Attribute", "Ad Group Name"] ]; <ReactTree structure={structure} title={"Add filter criteria"} onSelect={() => {}} />; ``` ### Props Can be found - [here](https://github.com/kenshoo/react-tree#props) <br/> ### Customization #### Styling The basic tree gets "styles" object property. <br/> If the "styles" object is empty, the basic tree will use the default styles. <br/> The "styles" object can override any of the following: - container - tree container - header - tree header. Displays tree title or item's parents - headerBackIcon - back icon - item - a single item from the hierarchical tree. - highlight - the style of the searched (highlighted) letters of an item - searchItemInitial: the style of the basic ("not searched") letters of an item - parents - the style of parents sub-title on search - items - items list container - noResults - displayed when there are no found items - noResultsIcon - the icon displayed when there are no found items - noResultsText - the massage displayed when there are no found items - input - search input - searchInput - the icon of the search input - clearInput - the icon of the search input "clear" button - forwardIcon - the icon that is part of the item component. Displayed when the item has children. - selectedItem - the style of the selectedItem item - inputWrapper - the style of input wrapper <br/> #### Renderers You can replace the renderers of the following components: <br/> **Container** Use the `treeContainerRenderer` to replace the default component. Each treeContainer receives the following props: `containerRef` - Holds a reference to the tree container component `children` - Holds all sub components (like header, input, items, etc..) `getStyles` - Gets relevant styles `styles` - Enables using customized styles <br/> **Header** Use the `headerRenderer` to replace the default component. Each header receives the following props: `headerRef` - Holds a reference to the header component `parents` - Holds the parents of the current level. <br/> For example for the following structure: ["Profiles", "Performance", "Clicks"] - In the first level the parents are: [""] - In the second level the parents are: ["Profile"] - In the third level the parents are: ["Profile, "Performance"] `onClick` - Triggers the back event on click `title` - The title of the header. Displayed on the first level. `getStyles` - Gets relevant styles `styles` - Enables using customized styles `backIconRenderer` - Use the `backIconRenderer` to replace the default back button component. <br/> **Input** Use the `inputRenderer` to replace the default component. Each header receives the following props: `inputRef` - Holds a reference to the input component `searchTerm` - Holds the searched value `onInputChange` - Triggers set searchTerm event on change `getStyles` - Gets relevant styles `styles` - Enables using customized styles `inputIconRenderer` - Use the `inputIconRenderer` to replace the default input icon component. `clearIconRenderer` - Use the `clearIconRenderer` to replace the default clear input icon component. <br/> **Items** Use the `itemsRenderer` to replace the default component. Each header receives the following props: `getStyles` - Gets relevant styles `styles` - Enables using customized styles `children` - All items <br/> **Item** Use the `itemRenderer` to replace the default component Each header receives the following props: `getStyles` - Gets relevant styles `styles` - Enables using customized styles `searchTerm` - Holds the searched value `item` - Represents an item from the given structure `onClick` - Is called when clicking on an item `forwardIconRenderer` - Use the `forwardIconRenderer` to replace the default forward icon component `selectedItem` - Represents the current selected item. Is relevant when markSelectedItem = true <br/> **No Results** Use the `noResultsRenderer` to replace the default component. `getStyles` - Gets relevant styles `styles` - Enables using customized styles `text` - Displayed when there are no results `noResultsIconRenderer` - Use the `noResultsIconRenderer` to replace the default no results warning icon component.