1.2.1 • Published 1 year ago
hierarchical-tree v1.2.1
hierarchical-tree
Introduction
This is utility support to convert array to hierarchical tree faster. And it supported for more function:
- Move node to node's children
- Swap node
- Delete node
- Insert node data ....
Usage
import TreeModules from "hierarchical-tree";
const { TreeFactory } = TreeModules;
const data = [
{id: "1", name: 'parent1'},
{id: "21", name: 'children2-1', parentId: "2"},
{id: "2", name: 'parent2'},
{id: "11", name: 'children1-1', parentId: "1"},
{id: "12", name: 'children1-2', parentId: "1"},
{id: "13", name: 'children1-3', parentId: "1"},
];
const tree = new TreeFactory(data);
const treeData = treeData.getData();
const treeJSON = treeData.getJSON();
Module
module.exports = {
TreeFactory,
HierarchicalTree,
constants: { TREE_ACTION_TRANSFER, DEFAULT_ROOT }
};
Input interface
Your input data required some field bellow | Properties | Description | Type | --- | --- | --- | | id | uniq id | string | | name | name for node | string | | parentId | parentId of node | string or undefined
Api
!TIP You can follow this interface for detail:
interface AbstractTreeNode {
id: string;
name: string;
parentId?: string;
children: AbstractTreeNode[];
parent?: AbstractTreeNode;
level?: number;
root?: AbstractTreeNode;
_init: (props: TreeNodeProps) => this;
_setRoot: (node: AbstractTreeNode) => AbstractTreeNode;
setLevel: (val: number) => void;
setParent: (data: AbstractTreeNode) => void;
move: ({ from, to, type }: TransferParams) => number | undefined;
swap: ({ from, to, type }: TransferParams) => number | undefined;
removeChild: (id: string) => number | undefined;
appendChild: (children: AbstractTreeNode[], index?: number) => number | undefined;
findDeep: (id: string) => AbstractTreeNode | undefined;
getRelativePath: () => string;
}
enum TREE_ACTION_TRANSFER {
ID = 'id',
PATH = 'path',
NODE = 'node',
}
interface TransferParams {
from?: AbstractTreeNode | string;
to: AbstractTreeNode | string;
type?: TREE_ACTION_TRANSFER | string;
}
interface JSONData extends Pick<AbstractTreeNode, 'id' | 'name' | 'parentId' | 'children' | 'level'> {}
If you want to contribute to development. Please come to CONTRIBUTING