import { DefineComponent, ComponentOptionsMixin, PublicProps, ExtractPropTypes, PropType } from 'vue'; import { NodeAction, ShowNodeActionsType, SortableDragOptions, TreeNodeData, NodeReorderEvent, InlineInputOptions, TreeSearchLoadMoreFunction, TreePropsConfig } from './type'; import { TreeNode } from '../../yc-line-tree/src/type'; import { default as Sortable } from 'sortablejs'; /** * 树节点对象类型(el-tree-v2 内部使用) */ /** * Props 定义 * 使用 TreeNodeData 类型以支持业务层的泛型扩展 */ interface Props { /** 树形数据(业务层可使用 TreeNodeData 定义) */ treeData?: TreeNodeData[]; /** 默认展开的节点 key 列表 */ expandedKeys?: (string | number)[]; /** 搜索框占位符 */ placeholder?: string; /** 节点唯一标识字段名 */ nodeKey?: string; /** 是否显示节点操作按钮(支持函数动态判断) */ showNodeActions?: ShowNodeActionsType; /** 节点操作菜单配置(点击操作按钮时显示的下拉菜单) */ nodeActions?: NodeAction[]; /** 是否高亮当前选中节点 */ highlightCurrent?: boolean; /** 自定义过滤方法 */ filterMethod?: (value: string, data: TreeNodeData, node: TreeNode) => boolean; /** 是否显示卡片边框和圆角 */ showCardStyle?: boolean; /** 是否显示复选框 */ showCheckbox?: boolean; /** 默认选中的节点 key 列表 */ defaultCheckedKeys?: (string | number)[]; /** el-tree-v2 的 props 配置(label、children 等字段映射) */ treeProps?: TreePropsConfig; /** 是否启用拖拽功能(使用 SortableJS 实现) */ draggable?: boolean; /** SortableJS 拖拽配置选项 */ sortableDragOptions?: Partial; /** 是否只允许同级拖拽(true=只能在同一层级内拖拽,false=允许跨层级拖拽) */ sameLevelDragOnly?: boolean; /** 搜索模式:local(静态搜索) | remote(远程搜索) */ searchMode?: 'local' | 'remote'; /** 远程搜索的分页加载函数(searchMode 为 remote 时使用) */ searchLoadMore?: TreeSearchLoadMoreFunction; /** 远程搜索的每页数量 */ searchPageSize?: number; /** 远程搜索选中的值变化回调 */ onSearchChange?: (value: string | number) => void; /** 卡片内边距,支持字符串(如 '20px')或数字(会自动添加 px),默认 16 */ padding?: string | number; /** 搜索输入框自定义 class,会追加到默认的 'search-input' class 之后 */ searchInputClass?: string; } /** * 复选框选中信息类型 */ interface CheckedInfo { checkedKeys: (string | number)[]; checkedNodes: TreeNodeData[]; halfCheckedKeys: (string | number)[]; halfCheckedNodes: TreeNodeData[]; } declare const _default: __VLS_WithTemplateSlots< DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps, { treeData: () => never[]; expandedKeys: () => never[]; placeholder: string; nodeKey: string; showNodeActions: boolean; nodeActions: undefined; highlightCurrent: boolean; filterMethod: undefined; showCardStyle: boolean; showCheckbox: boolean; defaultCheckedKeys: () => never[]; treeProps: () => { label: string; children: string; }; draggable: boolean; sortableDragOptions: () => {}; sameLevelDragOnly: boolean; searchMode: string; searchLoadMore: undefined; searchPageSize: number; onSearchChange: undefined; padding: number; searchInputClass: undefined; }>, { /** * 滚动到指定节点 */ scrollToNode: (key: string | number) => void; /** * 设置当前选中节点(高亮) */ setCurrentKey: (key: string | number) => void; /** * 设置节点展开/收起状态 */ setExpanded: (key: string | number, expanded: boolean) => void; /** * 获取选中节点的 key 数组 */ getCheckedKeys: (leafOnly?: boolean) => any; /** * 获取选中节点的数据数组 */ getCheckedNodes: (leafOnly?: boolean, includeHalfChecked?: boolean) => any; /** * 设置选中的节点 */ setCheckedKeys: (keys: (string | number)[], leafOnly?: boolean) => void; /** * 获取完整的 tree 实例 */ getTreeInstance: () => any; /** * 显示内联输入框 */ showInlineInput: (targetKey: string | number, placeholder?: string, options?: InlineInputOptions | undefined) => void; /** * 隐藏内联输入框 */ hideInlineInput: () => void; }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, { check: (data: TreeNodeData, checkedInfo: CheckedInfo) => void; "node-click": (data: TreeNodeData, node: TreeNode) => void; "action-click": (actionCode: string, data: TreeNodeData, node: TreeNode) => void; "add-node": (parentNodeKey: string | number, nodeName: string, callback: (success: boolean) => void) => void; "update-node": (targetNodeKey: string | number, nodeName: string, callback: (success: boolean) => void) => void; "update:expandedKeys": (keys: (string | number)[]) => void; "node-expand": (data: TreeNodeData, node: TreeNode) => void; "node-collapse": (data: TreeNodeData, node: TreeNode) => void; "drag-start": (evt: Sortable.SortableEvent) => void; "drag-end": (evt: Sortable.SortableEvent) => void; "drag-update": (evt: Sortable.SortableEvent) => void; "node-reorder": (event: NodeReorderEvent>) => void; }, string, PublicProps, Readonly< ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps, { treeData: () => never[]; expandedKeys: () => never[]; placeholder: string; nodeKey: string; showNodeActions: boolean; nodeActions: undefined; highlightCurrent: boolean; filterMethod: undefined; showCardStyle: boolean; showCheckbox: boolean; defaultCheckedKeys: () => never[]; treeProps: () => { label: string; children: string; }; draggable: boolean; sortableDragOptions: () => {}; sameLevelDragOnly: boolean; searchMode: string; searchLoadMore: undefined; searchPageSize: number; onSearchChange: undefined; padding: number; searchInputClass: undefined; }>>> & { onCheck?: ((data: TreeNodeData, checkedInfo: CheckedInfo) => any) | undefined; "onNode-click"?: ((data: TreeNodeData, node: TreeNode) => any) | undefined; "onAction-click"?: ((actionCode: string, data: TreeNodeData, node: TreeNode) => any) | undefined; "onAdd-node"?: ((parentNodeKey: string | number, nodeName: string, callback: (success: boolean) => void) => any) | undefined; "onUpdate-node"?: ((targetNodeKey: string | number, nodeName: string, callback: (success: boolean) => void) => any) | undefined; "onUpdate:expandedKeys"?: ((keys: (string | number)[]) => any) | undefined; "onNode-expand"?: ((data: TreeNodeData, node: TreeNode) => any) | undefined; "onNode-collapse"?: ((data: TreeNodeData, node: TreeNode) => any) | undefined; "onDrag-start"?: ((evt: Sortable.SortableEvent) => any) | undefined; "onDrag-end"?: ((evt: Sortable.SortableEvent) => any) | undefined; "onDrag-update"?: ((evt: Sortable.SortableEvent) => any) | undefined; "onNode-reorder"?: ((event: NodeReorderEvent>) => any) | undefined; }, { filterMethod: (value: string, data: TreeNodeData, node: TreeNode) => boolean; draggable: boolean; placeholder: string; padding: string | number; treeProps: TreePropsConfig; treeData: TreeNodeData[]; searchMode: "local" | "remote"; expandedKeys: (string | number)[]; nodeKey: string; showNodeActions: ShowNodeActionsType; nodeActions: NodeAction[]; highlightCurrent: boolean; showCardStyle: boolean; showCheckbox: boolean; defaultCheckedKeys: (string | number)[]; sortableDragOptions: Partial; sameLevelDragOnly: boolean; searchLoadMore: TreeSearchLoadMoreFunction; searchPageSize: number; onSearchChange: (value: string | number) => void; searchInputClass: string; }, {}>, { header?(_: {}): any; "under-search-input"?(_: {}): any; "node-label"?(_: { node: any; data: any; highlightedLabel: string; }): any; "node-actions"?(_: { node: any; data: any; }): any; }>; export default _default; type __VLS_NonUndefinedable = T extends undefined ? never : T; type __VLS_TypePropsToRuntimeProps = { [K in keyof T]-?: {} extends Pick ? { type: PropType<__VLS_NonUndefinedable>; } : { type: PropType; required: true; }; }; type __VLS_WithDefaults = { [K in keyof Pick]: K extends keyof D ? __VLS_Prettify : P[K]; }; type __VLS_Prettify = { [K in keyof T]: T[K]; } & {}; type __VLS_WithTemplateSlots = T & { new (): { $slots: S; }; };