react-hyper-tree
Version:
Fully customizable react tree component
40 lines (39 loc) • 2.11 kB
TypeScript
import { TreeView, IFilter, ISort, TreeNode, InsertChildType, InsertSiblingType, IData } from './node';
export interface IUseTreeState {
id: string;
data: any;
filter?: IFilter;
sort?: ISort;
defaultOpened?: boolean | (number | string)[];
multipleSelect?: boolean;
refreshAsyncNodes?: boolean;
idKey?: string;
childrenKey?: string;
}
export declare type IDropType = 'before' | 'children' | 'after';
export declare const useTreeState: ({ id, data, filter, sort, defaultOpened, multipleSelect, refreshAsyncNodes, idKey, childrenKey }: IUseTreeState) => {
instance: TreeView;
handlers: {
setChildren: (parent: TreeNode | string | number, children: TreeNode[], type?: InsertChildType | undefined, reset?: boolean | undefined) => void;
setLoading: (node: TreeNode | string | number, loading?: boolean | undefined) => void;
setOpen: (node: TreeNode | string | number, toggle?: any) => Promise<void>;
setRawChildren: (parent: TreeNode | string | number, children: IData[], type?: InsertChildType | undefined, reset?: boolean | undefined) => void;
setSelected: (node: TreeNode | string | number, selected?: boolean | undefined) => void;
setSiblings: (node: TreeNode | string | number, siblings: TreeNode[], type: InsertSiblingType) => void;
setNodeData: (node: TreeNode | string | number, dataToSet: IData) => void;
getNode: (node: TreeNode | string | number) => TreeNode | null;
getNodeData: (node: TreeNode | string | number) => IData | undefined;
selectAll: () => void;
unselectAll: () => void;
draggableHandlers: {
handleDragStart: (e: React.DragEvent) => void;
handleDragEnter: (node: TreeNode, type: string | boolean) => (e: React.DragEvent) => void;
handleDragLeave: (node: TreeNode) => (e: React.DragEvent) => void;
handleDrop: (sourceNode: TreeNode) => (e: React.DragEvent) => void;
};
};
required: {
isDragging: boolean;
data: TreeNode[];
};
};