import React from 'react'; import RcTree, { TreeNode, TreeProps as RcTreeProps, TreeNodeProps } from 'rc-tree'; import { BaseInputProps } from '../input/Input'; import type { EventDataNode as RcEventDataNode, DataNode as RcDataNode, Key } from 'rc-tree/lib/interface'; export interface DataNode extends RcDataNode { isEditable?: boolean; } export type EventDataNode = RcEventDataNode; export type TreeIcon = React.ReactNode | ((treeNode: TreeNodeProps) => React.ReactNode); declare enum DataChangeType { SAVE = "save", EDITINPUTCHANGE = "editInputChange", DELETE = "delete", ADD = "add", DROP = "drop" } declare enum UtilType { Add = "Add", Edit = "Edit", Delete = "Delete" } interface PopoverUtil { text: string; onClick: UtilType | ((data?: DataNode, treeData?: DataNode[]) => any); disabled?: boolean; key?: string; } export interface TreeProps extends Partial { treeData?: DataNode[]; showLine?: boolean; className?: string; multiple?: boolean; checkable?: boolean; selectable?: boolean; draggable?: boolean; searchable?: boolean; searchPlaceholder?: string; editable?: boolean; editInputProps?: BaseInputProps; showIconUtil?: boolean; showPopoverUtil?: boolean; customPopoverUtil?: Array | ((data: DataNode) => Array); showIcon?: boolean; icon?: TreeIcon; switchIcon?: TreeIcon; children?: React.ReactNode; onDataChange?: (treeData: DataNode[], changingData: DataNode, changeType: DataChangeType) => void; titleEllipsis?: boolean; popoverZIndex?: number; } export interface TreeNodeBaseEvent { node: EventDataNode; nativeEvent: MouseEvent; } export interface TreeNodeExpandedEvent extends TreeNodeBaseEvent { expanded: boolean; } export interface TreeNodeDropEvent { event: React.DragEvent; node: EventDataNode; dragNode: EventDataNode; dragNodesKeys: Key[]; dropPosition: number; dropToGap: boolean; } type TreeComponent = React.ForwardRefExoticComponent>> & { TreeNode: typeof TreeNode; }; declare const Tree: TreeComponent; export default Tree;