@nu-art/thunder
Version:
Thunder - React & Typescript based frontend framework
50 lines (49 loc) • 1.79 kB
TypeScript
import * as React from 'react';
export declare type NodeProps = {
item: object | string | number;
path: string;
name: string;
expanded: boolean;
expandToggler: (e: React.MouseEvent) => void;
onClick: (e: React.MouseEvent) => void;
onDoubleClick: (e: React.MouseEvent) => void;
parentArray?: boolean;
};
export declare type TreeNodeAdjuster = (obj: object) => {
data: object;
deltaPath?: string;
};
export declare type PropertyFilter = <T extends object>(obj: T, key: keyof T) => any;
declare type Props = {
id: string;
root: object;
hideRootElement?: boolean;
onNodeClicked?: (path: string, id: string) => void;
onNodeDoubleClicked?: (path: string, id: string) => void;
renderer?: (props: NodeProps) => any;
indentPx?: number;
callBackState?: (key: string, value: any, level: number) => boolean;
nodeAdjuster?: TreeNodeAdjuster;
propertyFilter?: PropertyFilter;
nodesState?: TreeNodeState;
};
export declare type TreeNodeState = {
[path: string]: boolean;
};
declare type TreeState = {
expanded: TreeNodeState;
};
export declare const DefaultTreeRenderer: (props: NodeProps) => JSX.Element;
export declare class Tree extends React.Component<Props, TreeState> {
static defaultProps: Partial<Props>;
constructor(props: Props);
recursivelyExpand: (obj: object, condition: (key: string, value: any, level: number) => boolean) => TreeNodeState;
private recursivelyExpandImpl;
toggleExpanded: (e: React.MouseEvent<Element, MouseEvent>) => void;
onNodeClicked: (e: React.MouseEvent<Element, MouseEvent>) => void;
onNodeDoubleClicked: (e: React.MouseEvent<Element, MouseEvent>) => void;
render(): JSX.Element;
private renderNode;
private renderChildren;
}
export {};