editable-antd-tree
Version:
This is an editable tree react component based on antd.
65 lines (61 loc) • 2.41 kB
TypeScript
import { DataNode, TreeProps } from 'antd/lib/tree';
import React from 'react';
declare type EditableTreeTitleProps = {
treeData: EditableAntdTreeNode[];
updateTreeData: React.Dispatch<React.SetStateAction<EditableAntdTreeNode[]>>;
expandKey: Function;
node: EditableAntdTreeNode;
deleteNode?: {
caption?: string;
disable?: boolean | ((node: EditableAntdTreeNode) => boolean | undefined);
event?: (node: EditableAntdTreeNode) => void;
};
updateNode?: {
caption?: string;
disable?: boolean | ((node: EditableAntdTreeNode) => boolean | undefined);
event?: (node: EditableAntdTreeNode) => void;
};
createLeaf?: {
caption?: string;
disable?: boolean | ((node: EditableAntdTreeNode) => boolean | undefined);
event?: (node: EditableAntdTreeNode) => void;
};
createParent?: {
caption?: string;
disable?: boolean | ((node: EditableAntdTreeNode) => boolean | undefined);
event?: (node: EditableAntdTreeNode) => void;
};
};
declare type TEditableTreeTitle = Omit<EditableTreeTitleProps, "treeData" | "node" | "expandKey">;
declare const sizes: {
xs: string;
sm: string;
md: string;
lg: string;
xl: string;
};
declare type EditableAntdTreeNode = Omit<DataNode, "title" | "children" | "key"> & {
key: string;
title?: string | null;
parent?: string;
children?: EditableAntdTreeNode[];
};
declare type EditableAntdTreeProps = {
treeData: EditableAntdTreeNode[];
onTreeChange: (tree: EditableAntdTreeNode[]) => void;
switcherIcon?: React.ReactNode;
size?: keyof typeof sizes;
createRootLeaf?: {
caption?: string;
disable?: boolean;
action?: (node: EditableAntdTreeNode) => void;
};
createRootParent?: {
caption?: string;
disable?: boolean;
action?: (node: EditableAntdTreeNode) => void;
};
loadData?: (treeData: EditableAntdTreeNode) => Promise<EditableAntdTreeNode[] | void>;
} & Omit<TreeProps, "switcherIcon" | "treeData" | "loadData"> & TEditableTreeTitle;
declare const EditableAntdTree: ({ treeData, size, switcherIcon, onTreeChange, deleteNode, updateNode, createLeaf, createParent, createRootLeaf, createRootParent, loadData, ...props }: EditableAntdTreeProps) => JSX.Element;
export { EditableAntdTree, EditableAntdTreeNode, EditableAntdTreeProps };