UNPKG

@eccenca/gui-elements

Version:

GUI elements based on other libraries, usable in React application, written in Typescript.

45 lines (44 loc) 2.13 kB
import * as React from "react"; import { Tree as BlueprintTree, TreeNode as BlueprintTreeNode, TreeNodeInfo as BlueprintTreeNodeInfo, TreeProps as BlueprintTreeProps } from "@blueprintjs/core"; import { IconProps } from "./../Icon/Icon"; import { TestIconProps } from "./../Icon/TestIcon"; export interface TreeNodeInfo<T = {}> extends Omit<BlueprintTreeNodeInfo<T>, "childNodes" | "icon"> { /** * Child tree nodes of this node. */ childNodes?: Array<TreeNodeInfo<T>>; /** * `<Icon />` element to render next to the node's label. */ icon?: React.ReactElement<IconProps> | React.ReactElement<TestIconProps>; } export interface TreeNodeProps<T = {}> extends TreeNodeInfo<T> { children?: React.ReactNode; contentRef?: (node: TreeNode<T>, element: HTMLDivElement | null) => void; depth: number; key?: string | number; onClick?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void; onCollapse?: (node: TreeNode<T>, e: React.MouseEvent<HTMLSpanElement>) => void; onContextMenu?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void; onDoubleClick?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void; onExpand?: (node: TreeNode<T>, e: React.MouseEvent<HTMLSpanElement>) => void; onMouseEnter?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void; onMouseLeave?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void; path: number[]; } export declare class TreeNode<T = {}> extends BlueprintTreeNode<TreeNodeProps<T>> { } export declare class TreeNodeShadow<T = {}> extends React.Component<TreeNodeProps<T>> { } export interface TreeProps<T = {}> extends Omit<BlueprintTreeProps<T>, "contents"> { /** * Tree contents. */ contents: ReadonlyArray<TreeNodeInfo<T>>; } /** * Tree component to display a tree structure. * Have a look to the underlaying [BlueprintJS Tree](https://blueprintjs.com/docs/#core/components/tree) component for examples how to use handlers. * Use only our `<Icon />` elements in the tree nodes! */ export declare const Tree: typeof BlueprintTree;