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} 82