UNPKG

@sensilla-cloud/react-file-tree

Version:

Virtualized tree for displaying hierarchy in a traditional file-tree format

51 lines (50 loc) 1.39 kB
import React from 'react'; export interface Node { id: string | number; name: string; data?: any; children?: Node[]; expanded?: boolean; disabled?: boolean; selected?: boolean; selectable?: boolean; } export type NodeState = { expanded: boolean; depth: number; selected: boolean; disabled: boolean; selectable: boolean; parent: Node | null; }; export type RenderOptions = Partial<{ childClassName: string; expandTool: React.ReactNode; collapseTool: React.ReactNode; indentWidth: number; }>; export 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; export type FilterFn = (node: Node, filter: string) => boolean; export 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; } export type TreeType = React.FC<TreeProps>;