@sensilla-cloud/react-file-tree
Version:
Virtualized tree for displaying hierarchy in a traditional file-tree format
56 lines (52 loc) • 1.48 kB
TypeScript
import React from 'react';
interface Node {
id: string | number;
name: string;
data?: any;
children?: Node[];
expanded?: boolean;
disabled?: boolean;
selected?: boolean;
selectable?: boolean;
}
type NodeState = {
expanded: boolean;
depth: number;
selected: boolean;
disabled: boolean;
selectable: boolean;
parent: Node | null;
};
type RenderOptions = Partial<{
childClassName: string;
expandTool: React.ReactNode;
collapseTool: React.ReactNode;
indentWidth: number;
}>;
type ChildRenderer = (node: Node, state: NodeState, props: TreeProps, callbacks: {
expand: (node: Node) => void;
collapse: (node: Node) => void;
select: (node: Node) => void;
deselect: (node: Node) => void;
}) => JSX.Element;
type FilterFn = (node: Node, filter: string) => boolean;
interface TreeProps {
data: Node[];
className?: string;
childRenderer?: ChildRenderer;
renderOptions?: RenderOptions;
virtual?: boolean;
onExpand?: (node: Node) => void;
onCollapse?: (node: Node) => void;
selectable?: boolean;
multiSelect?: boolean;
onSelect?: (node: Node) => void;
onDeselect?: (node: Node) => void;
disabled?: boolean;
filterable?: boolean;
filter?: string;
filterFn?: FilterFn;
}
type TreeType = React.FC<TreeProps>;
declare const Tree: TreeType;
export { ChildRenderer, FilterFn, Node, NodeState, RenderOptions, TreeProps, TreeType, Tree as default };