UNPKG

3 kBTypeScriptView Raw
1import * as React from "react";
2import { Props, MaybeElement } from "../../common/props";
3import { IconName } from "../icon/icon";
4export declare type TreeNodeInfo<T = {}> = ITreeNode<T>;
5/** @deprecated use TreeNodeInfo */
6export interface ITreeNode<T = {}> extends Props {
7 /**
8 * Child tree nodes of this node.
9 */
10 childNodes?: Array<TreeNodeInfo<T>>;
11 /**
12 * Whether this tree node is non-interactive. Enabling this prop will ignore
13 * mouse event handlers (in particular click, down, enter, leave).
14 */
15 disabled?: boolean;
16 /**
17 * Whether the caret to expand/collapse a node should be shown.
18 * If not specified, this will be true if the node has children and false otherwise.
19 */
20 hasCaret?: boolean;
21 /**
22 * The name of a Blueprint icon (or an icon element) to render next to the node's label.
23 */
24 icon?: IconName | MaybeElement;
25 /**
26 * A unique identifier for the node.
27 */
28 id: string | number;
29 /**
30 */
31 isExpanded?: boolean;
32 /**
33 * Whether this node is selected.
34 *
35 * @default false
36 */
37 isSelected?: boolean;
38 /**
39 * The main label for the node.
40 */
41 label: string | JSX.Element;
42 /**
43 * A secondary label/component that is displayed at the right side of the node.
44 */
45 secondaryLabel?: string | MaybeElement;
46 /**
47 * An optional custom user object to associate with the node.
48 * This property can then be used in the `onClick`, `onContextMenu` and `onDoubleClick`
49 * event handlers for doing custom logic per node.
50 */
51 nodeData?: T;
52}
53export declare type TreeNodeProps<T = {}> = ITreeNodeProps<T>;
54export interface ITreeNodeProps<T = {}> extends TreeNodeInfo<T> {
55 children?: React.ReactNode;
56 contentRef?: (node: TreeNode<T>, element: HTMLDivElement | null) => void;
57 depth: number;
58 key?: string | number;
59 onClick?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
60 onCollapse?: (node: TreeNode<T>, e: React.MouseEvent<HTMLSpanElement>) => void;
61 onContextMenu?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
62 onDoubleClick?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
63 onExpand?: (node: TreeNode<T>, e: React.MouseEvent<HTMLSpanElement>) => void;
64 onMouseEnter?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
65 onMouseLeave?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
66 path: number[];
67}
68export declare class TreeNode<T = {}> extends React.Component<ITreeNodeProps<T>> {
69 static displayName: string;
70 static ofType<U>(): new (props: ITreeNodeProps<U>) => TreeNode<U>;
71 render(): JSX.Element;
72 private maybeRenderCaret;
73 private maybeRenderSecondaryLabel;
74 private handleCaretClick;
75 private handleClick;
76 private handleContentRef;
77 private handleContextMenu;
78 private handleDoubleClick;
79 private handleMouseEnter;
80 private handleMouseLeave;
81}