acud
Version:
acg react 组件库
71 lines (70 loc) • 2.25 kB
TypeScript
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<DataNode>;
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<RcTreeProps> {
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<PopoverUtil> | ((data: DataNode) => Array<PopoverUtil>);
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<HTMLDivElement>;
node: EventDataNode;
dragNode: EventDataNode;
dragNodesKeys: Key[];
dropPosition: number;
dropToGap: boolean;
}
type TreeComponent = React.ForwardRefExoticComponent<TreeProps & React.RefAttributes<RcTree<RcDataNode>>> & {
TreeNode: typeof TreeNode;
};
declare const Tree: TreeComponent;
export default Tree;