import { VNode, Ref, PropType } from 'vue'; import TreeStore, { TreeNode } from '../store'; import { FilterFunctionType } from '../store/tree-store'; import { ITreeNodeOptions } from '../store/tree-node'; import { ignoreEnum, VerticalPositionType, dragHoverPartEnum } from '../const'; import { TreeNodeKeyType, IgnoreType } from '../types'; type AnyPropsArrayType = Array<{ [key: string]: any; }>; type VModelType = TreeNodeKeyType | TreeNodeKeyType[]; interface INonReactiveData { store: TreeStore; blockNodes: TreeNode[]; } declare const _default: import("vue").DefineComponent<{ /** 单选模式下为字符串或数字,多选模式下为数组或者以 separator 分隔的字符串。当即可单选又可多选时,value 是多选的值 */ modelValue: PropType; /** 传入的树数据。数据量大时,不建议通过 props 传入数据,建议用 `setData` 方法代替 */ data: { type: PropType; default: () => never[]; }; /** 供未加载且选中节点查询 title 字段值用的列表,格式与 `data` 一致即可 */ unloadDataList: { type: PropType; default: () => never[]; }; /** 过滤已选时是否在列表后面展示未加载的已选节点 */ showUnloadCheckedNodes: { type: BooleanConstructor; default: boolean; }; /** 数据为空时显示的文本 */ emptyText: { type: StringConstructor; default: string; }; /** 节点标题字段 */ titleField: { type: StringConstructor; default: string; }; /** 节点唯一标识字段 */ keyField: { type: StringConstructor; default: string; }; /** 多选模式下 value 分隔符 */ separator: { type: StringConstructor; default: string; }; /** 是否可多选 */ checkable: { type: BooleanConstructor; default: boolean; }; /** 是否可单选 */ selectable: { type: BooleanConstructor; default: boolean; }; /** 是否可勾选被过滤节点 */ filteredNodeCheckable: { type: BooleanConstructor; default: boolean; }; /** 父子节点是否关联 */ cascade: { type: BooleanConstructor; default: boolean; }; /** 是否只启用子节点,当 `多选且父子不关联` 或 `单选` 时有效 */ enableLeafOnly: { type: BooleanConstructor; default: boolean; }; /** 是否禁用所有节点 */ disableAll: { type: BooleanConstructor; default: boolean; }; /** 是否默认展开所有节点 */ defaultExpandAll: { type: BooleanConstructor; default: boolean; }; /** * 默认展开的节点 key * @deprecated 下一个大版本将废弃,使用 expandedKeys 代替 */ defaultExpandedKeys: { type: PropType; default: () => never[]; }; /** 展开的节点,该 Prop 变化时,树组件将会响应,建议配合事件使用 */ expandedKeys: { type: PropType; default: () => never[]; }; /** 是否可拖拽 */ draggable: { type: BooleanConstructor; default: boolean; }; /** 是否可放置 */ droppable: { type: BooleanConstructor; default: boolean; }; /** 在放置节点之前执行的方法,返回 true 允许放置, false 可阻止放置 */ beforeDropMethod: { type: PropType<(dragNode: TreeNode, dropNode: TreeNode | null, hoverPart: dragHoverPartEnum) => boolean>; default: () => () => true; }; /** 忽略模式 */ ignoreMode: { type: PropType<"none" | "children" | "parents">; default: ignoreEnum; }; /** 异步加载初始化时是否自动加载根节点 */ autoLoad: { type: BooleanConstructor; default: boolean; }; /** 异步加载方法 */ load: PropType<(node: null | TreeNode, resolve: Function, reject: Function) => any>; /** 节点渲染 render 函数 */ render: PropType<(node: TreeNode) => VNode>; renderIcon: PropType<(node: TreeNode) => VNode>; /** 节点过滤方法 */ filterMethod: PropType; /** * 过滤时是否展开所有可见节点 * 有时候可能因为开发者样式设置问题导致虚拟列表失效,而展开数据量又过多从而卡顿 * 加上这个选项并不是为了解决上述问题,而仅仅作为一个可选项 */ expandOnFilter: { type: BooleanConstructor; default: boolean; }; /** 点击已选中节点是否取消选中 */ unselectOnClick: { type: BooleanConstructor; default: boolean; }; /** 是否显示 loading 图标 */ loading: { type: BooleanConstructor; default: boolean; }; /** 根据节点最小高度计算数据总高度 */ nodeMinHeight: { type: NumberConstructor; default: number; }; /** 子节点缩进 */ nodeIndent: { type: NumberConstructor; default: number; }; /** 渲染节点数量,可见节点数大于此值且高度超过(容器可视高度能容纳节点数 + bufferNodeAmount)则不会渲染所有可见节点 */ renderNodeAmount: { type: NumberConstructor; default: number; }; /** 当滚动到视野外的节点个数大于此值时刷新渲染节点 */ bufferNodeAmount: { type: NumberConstructor; default: number; }; /** 节点根元素的 class ,传入函数以对每个节点定制 class */ nodeClassName: { type: (ObjectConstructor | StringConstructor | (() => Array) | (() => (node: TreeNode) => string | object | Array))[]; }; }, { nonReactive: INonReactiveData; /** 未加载选中的节点,展示已选时生成,其他情况下没用 */ unloadCheckedNodes: TreeNode[]; /** 可见节点个数 */ blockLength: Ref; /** 可见节点总高度 */ blockAreaHeight: Ref; /** 顶部填充高度 */ topSpaceHeight: Ref; /** 底部填充高度 */ bottomSpaceHeight: Ref; /** 实际渲染节点个数 */ renderAmount: Ref; /** renderAmount 缓存 */ renderAmountCache: Ref; /** 渲染节点(实际渲染节点) */ renderNodes: Ref; /** 渲染开始下标 */ renderStart: Ref; /** renderStart 缓存 */ renderStartCache: Ref; /** 是否正在载入根节点,组件内部调用 load 时会改变此值 */ isRootLoading: Ref; /** 缓存的 value ,用于 value 变化时与之做比对 */ valueCache: Ref; /** 防抖计时器 id */ debounceTimer: Ref; topSpaceStyles: import("vue").ComputedRef<{ height: string; }>; bottomSpaceStyles: import("vue").ComputedRef<{ height: string; }>; wrapperCls: import("vue").ComputedRef; scrollAreaCls: import("vue").ComputedRef; blockAreaCls: import("vue").ComputedRef; emptyCls: import("vue").ComputedRef; emptyTextDefaultCls: import("vue").ComputedRef; loadingCls: import("vue").ComputedRef; loadingWrapperCls: import("vue").ComputedRef; loadingIconCls: import("vue").ComputedRef; iframeCls: import("vue").ComputedRef; treeNodeListeners: Record; setData: (data: AnyPropsArrayType) => void; setChecked: (key: TreeNodeKeyType, value: boolean) => void; setCheckedKeys: (keys: TreeNodeKeyType[], value: boolean) => void; checkAll: () => void; clearChecked: () => void; setSelected: (key: TreeNodeKeyType, value: boolean) => void; clearSelected: () => void; setExpand: (key: TreeNodeKeyType, value: boolean, expandParent?: boolean) => void; setExpandKeys: (keys: TreeNodeKeyType[], value: boolean) => void; setExpandAll: (value: boolean) => void; getCheckedNodes: (ignoreMode?: IgnoreType) => TreeNode[]; getCheckedKeys: (ignoreMode?: IgnoreType) => TreeNodeKeyType[]; getIndeterminateNodes: () => TreeNode[]; getSelectedNode: () => TreeNode | null; getSelectedKey: () => TreeNodeKeyType | null; getExpandNodes: () => TreeNode[]; getExpandKeys: () => TreeNodeKeyType[]; getCurrentVisibleNodes: () => TreeNode[]; getTreeData: () => TreeNode[]; getFlatData: () => TreeNode[]; getNodesCount: () => number; insertBefore: (insertedNode: TreeNodeKeyType | ITreeNodeOptions, referenceKey: TreeNodeKeyType) => TreeNode | null; insertAfter: (insertedNode: TreeNodeKeyType | ITreeNodeOptions, referenceKey: TreeNodeKeyType) => TreeNode | null; append: (insertedNode: TreeNodeKeyType | ITreeNodeOptions, parentKey: TreeNodeKeyType) => TreeNode | null; prepend: (insertedNode: TreeNodeKeyType | ITreeNodeOptions, parentKey: TreeNodeKeyType) => TreeNode | null; remove: (removedKey: TreeNodeKeyType) => TreeNode | null; filter: (keyword: string, filterMethod?: FilterFunctionType) => void; showCheckedNodes: (showUnloadCheckedNodes?: boolean) => void; loadRootNodes: () => Promise; scrollTo: (key: TreeNodeKeyType, verticalPosition?: VerticalPositionType | number) => void; updateExpandedKeys: () => void; updateUnloadStatus: () => void; handleTreeScroll: () => void; handleNodeCheck: (node: TreeNode) => void; handleNodeSelect: (node: TreeNode) => void; handleNodeExpand: (node: TreeNode) => void; handleNodeDrop: (data: TreeNode, e: DragEvent, hoverPart: dragHoverPartEnum) => void; emitCheckableInput: (checkedNodes: TreeNode[], checkedKeys: TreeNodeKeyType[]) => void; emitSelectableInput: (selectedNode: TreeNode | null, selectedKey: TreeNodeKeyType | null) => void; attachStoreEvents: () => void; resetSpaceHeights: () => void; updateBlockNodes: () => void; updateBlockData: () => void; updateRender: () => void; updateRenderAmount: () => void; updateRenderNodes: (isScroll?: boolean) => void; getNode: (key: TreeNodeKeyType) => TreeNode | null; scrollArea: Ref; iframe: Ref; methods: { setData: (data: AnyPropsArrayType) => void; setChecked: (key: TreeNodeKeyType, value: boolean) => void; onSelectChange: (node: TreeNode) => void; setCheckedKeys: (keys: TreeNodeKeyType[], value: boolean) => void; checkAll: () => void; clearChecked: () => void; setSelected: (key: TreeNodeKeyType, value: boolean) => void; clearSelected: () => void; setExpand: (key: TreeNodeKeyType, value: boolean, expandParent?: boolean) => void; setExpandKeys: (keys: TreeNodeKeyType[], value: boolean) => void; setExpandAll: (value: boolean) => void; setNodeParent: (parentNode: TreeNode, node: TreeNode) => void; getCheckedNodes: (ignoreMode?: IgnoreType) => TreeNode[]; getCheckedKeys: (ignoreMode?: IgnoreType) => TreeNodeKeyType[]; getIndeterminateNodes: () => TreeNode[]; getSelectedNode: () => TreeNode | null; getSelectedKey: () => TreeNodeKeyType | null; getExpandNodes: () => TreeNode[]; getExpandKeys: () => TreeNodeKeyType[]; getCurrentVisibleNodes: () => TreeNode[]; getTreeData: () => TreeNode[]; getFlatData: () => TreeNode[]; getNodesCount: () => number; insertBefore: (insertedNode: TreeNodeKeyType | ITreeNodeOptions, referenceKey: TreeNodeKeyType) => TreeNode | null; insertAfter: (insertedNode: TreeNodeKeyType | ITreeNodeOptions, referenceKey: TreeNodeKeyType) => TreeNode | null; append: (insertedNode: TreeNodeKeyType | ITreeNodeOptions, parentKey: TreeNodeKeyType) => TreeNode | null; prepend: (insertedNode: TreeNodeKeyType | ITreeNodeOptions, parentKey: TreeNodeKeyType) => TreeNode | null; remove: (removedKey: TreeNodeKeyType) => TreeNode | null; filter: (keyword: string, filterMethod?: FilterFunctionType) => void; showCheckedNodes: (showUnloadCheckedNodes?: boolean) => void; loadRootNodes: () => Promise; scrollTo: (key: TreeNodeKeyType, verticalPosition?: VerticalPositionType | number) => void; updateExpandedKeys: () => void; updateUnloadStatus: () => void; handleTreeScroll: () => void; handleNodeCheck: (node: TreeNode) => void; handleNodeSelect: (node: TreeNode) => void; handleNodeExpand: (node: TreeNode) => void; handleNodeDrop: (data: TreeNode, e: DragEvent, hoverPart: dragHoverPartEnum) => void; emitCheckableInput: (checkedNodes: TreeNode[], checkedKeys: TreeNodeKeyType[]) => void; emitSelectableInput: (selectedNode: TreeNode | null, selectedKey: TreeNodeKeyType | null) => void; resetSpaceHeights: () => void; updateBlockNodes: () => void; updateBlockData: () => void; updateRender: () => void; updateRenderAmount: () => void; updateRenderNodes: (isScroll?: boolean) => void; getNode: (key: TreeNodeKeyType) => TreeNode | null; }; }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, string[], string, import("vue").PublicProps, Readonly; /** 传入的树数据。数据量大时,不建议通过 props 传入数据,建议用 `setData` 方法代替 */ data: { type: PropType; default: () => never[]; }; /** 供未加载且选中节点查询 title 字段值用的列表,格式与 `data` 一致即可 */ unloadDataList: { type: PropType; default: () => never[]; }; /** 过滤已选时是否在列表后面展示未加载的已选节点 */ showUnloadCheckedNodes: { type: BooleanConstructor; default: boolean; }; /** 数据为空时显示的文本 */ emptyText: { type: StringConstructor; default: string; }; /** 节点标题字段 */ titleField: { type: StringConstructor; default: string; }; /** 节点唯一标识字段 */ keyField: { type: StringConstructor; default: string; }; /** 多选模式下 value 分隔符 */ separator: { type: StringConstructor; default: string; }; /** 是否可多选 */ checkable: { type: BooleanConstructor; default: boolean; }; /** 是否可单选 */ selectable: { type: BooleanConstructor; default: boolean; }; /** 是否可勾选被过滤节点 */ filteredNodeCheckable: { type: BooleanConstructor; default: boolean; }; /** 父子节点是否关联 */ cascade: { type: BooleanConstructor; default: boolean; }; /** 是否只启用子节点,当 `多选且父子不关联` 或 `单选` 时有效 */ enableLeafOnly: { type: BooleanConstructor; default: boolean; }; /** 是否禁用所有节点 */ disableAll: { type: BooleanConstructor; default: boolean; }; /** 是否默认展开所有节点 */ defaultExpandAll: { type: BooleanConstructor; default: boolean; }; /** * 默认展开的节点 key * @deprecated 下一个大版本将废弃,使用 expandedKeys 代替 */ defaultExpandedKeys: { type: PropType; default: () => never[]; }; /** 展开的节点,该 Prop 变化时,树组件将会响应,建议配合事件使用 */ expandedKeys: { type: PropType; default: () => never[]; }; /** 是否可拖拽 */ draggable: { type: BooleanConstructor; default: boolean; }; /** 是否可放置 */ droppable: { type: BooleanConstructor; default: boolean; }; /** 在放置节点之前执行的方法,返回 true 允许放置, false 可阻止放置 */ beforeDropMethod: { type: PropType<(dragNode: TreeNode, dropNode: TreeNode | null, hoverPart: dragHoverPartEnum) => boolean>; default: () => () => true; }; /** 忽略模式 */ ignoreMode: { type: PropType<"none" | "children" | "parents">; default: ignoreEnum; }; /** 异步加载初始化时是否自动加载根节点 */ autoLoad: { type: BooleanConstructor; default: boolean; }; /** 异步加载方法 */ load: PropType<(node: null | TreeNode, resolve: Function, reject: Function) => any>; /** 节点渲染 render 函数 */ render: PropType<(node: TreeNode) => VNode>; renderIcon: PropType<(node: TreeNode) => VNode>; /** 节点过滤方法 */ filterMethod: PropType; /** * 过滤时是否展开所有可见节点 * 有时候可能因为开发者样式设置问题导致虚拟列表失效,而展开数据量又过多从而卡顿 * 加上这个选项并不是为了解决上述问题,而仅仅作为一个可选项 */ expandOnFilter: { type: BooleanConstructor; default: boolean; }; /** 点击已选中节点是否取消选中 */ unselectOnClick: { type: BooleanConstructor; default: boolean; }; /** 是否显示 loading 图标 */ loading: { type: BooleanConstructor; default: boolean; }; /** 根据节点最小高度计算数据总高度 */ nodeMinHeight: { type: NumberConstructor; default: number; }; /** 子节点缩进 */ nodeIndent: { type: NumberConstructor; default: number; }; /** 渲染节点数量,可见节点数大于此值且高度超过(容器可视高度能容纳节点数 + bufferNodeAmount)则不会渲染所有可见节点 */ renderNodeAmount: { type: NumberConstructor; default: number; }; /** 当滚动到视野外的节点个数大于此值时刷新渲染节点 */ bufferNodeAmount: { type: NumberConstructor; default: number; }; /** 节点根元素的 class ,传入函数以对每个节点定制 class */ nodeClassName: { type: (ObjectConstructor | StringConstructor | (() => Array) | (() => (node: TreeNode) => string | object | Array))[]; }; }>> & { [x: `on${Capitalize}`]: ((...args: any[]) => any) | undefined; }, { data: AnyPropsArrayType; keyField: string; ignoreMode: "none" | "children" | "parents"; filteredNodeCheckable: boolean; cascade: boolean; defaultExpandAll: boolean; expandOnFilter: boolean; titleField: string; checkable: boolean; selectable: boolean; unselectOnClick: boolean; disableAll: boolean; draggable: boolean; droppable: boolean; unloadDataList: AnyPropsArrayType; showUnloadCheckedNodes: boolean; emptyText: string; separator: string; enableLeafOnly: boolean; defaultExpandedKeys: TreeNodeKeyType[]; expandedKeys: TreeNodeKeyType[]; beforeDropMethod: (dragNode: TreeNode, dropNode: TreeNode | null, hoverPart: dragHoverPartEnum) => boolean; autoLoad: boolean; loading: boolean; nodeMinHeight: number; nodeIndent: number; renderNodeAmount: number; bufferNodeAmount: number; }, {}>; export default _default;