Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions packages/devui-vue/devui/tree/src/composables/use-draggable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default function useDraggable(
dropType: undefined,
draggingNode: null,
});
const treeIdMapValue = ref<any>({});
const treeIdMapValue = ref<{ [key: string]: string }>({});
watch(
() => renderData.value,
() => {
Expand All @@ -59,7 +59,7 @@ export default function useDraggable(
return false;
}
};
const handlerDropData = (dragNodeId: string | number, dropNodeId: string | number, dropType?: string) => {
const handlerDropData = (dragNodeId: string | number, dropNodeId: string | number, currentDropType?: string) => {
const cloneData = cloneDeep(data.value);
let nowDragNode: IDropNode;
let nowDropNode: IDropNode;
Expand All @@ -81,13 +81,13 @@ export default function useDraggable(
});
};
findDragAndDropNode(cloneData);
if (nowDragNode && nowDropNode && dropType) {
if (nowDragNode && nowDropNode && currentDropType) {
const cloneDrapNode = cloneDeep(nowDragNode.target[nowDragNode.index]);
if (dropType === 'prev') {
if (currentDropType === 'prev') {
nowDropNode.target.splice(nowDropNode.index, 0, cloneDrapNode);
} else if (dropType === 'next') {
} else if (currentDropType === 'next') {
nowDropNode.target.splice(nowDropNode.index + 1, 0, cloneDrapNode);
} else if (dropType === 'inner') {
} else if (currentDropType === 'inner') {
const children = nowDropNode.target[nowDropNode.index].children;
if (Array.isArray(children)) {
children.unshift(cloneDrapNode);
Expand All @@ -106,11 +106,11 @@ export default function useDraggable(
};
const onDragstart = (event: DragEvent, treeNode: TreeItem): void => {
dragState.draggingNode = <Nullable<HTMLElement>>event.target;
const data = {
const treeInfo = {
type: 'tree-node',
nodeId: treeNode.id
};
event.dataTransfer?.setData('Text', JSON.stringify(data));
event.dataTransfer?.setData('Text', JSON.stringify(treeInfo));
};
const onDragover = (event: DragEvent): void => {
if (draggable) {
Expand Down
7 changes: 4 additions & 3 deletions packages/devui-vue/devui/tree/src/composables/use-lazy.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { ref, Ref } from 'vue';
import type { ComponentInternalInstance } from 'vue';
import { TreeData, TreeItem } from '../tree-types';

interface TypeReflectValue {
// 外部传入
id: keyof TypeReflect; // 懒加载节点 id
id: keyof ({ [key: string]: TypeReflectValue });
onGetNodeData: () => Promise<TreeData>; // 懒加载获取数据函数, 当前是节点 children
renderLoading?: (id: string) => any; // loadingTemplate 挂载
renderLoading?: (id: string) => ComponentInternalInstance | null; // loadingTemplate 挂载
// useLazy 内部使用
loadingTargetId?: string; // loadingTemplate 挂载节点 id
dataSource?: TreeData; // 懒加载数据
Expand All @@ -14,7 +15,7 @@ interface TypeReflect {
[key: string]: TypeReflectValue;
}
type TypeHandleInit = (item: TreeItem, value: TypeReflectValue) => void;
type TypeGetLazyData = (key: keyof TypeReflect) => Promise<TreeItem> | any;
type TypeGetLazyData = (key: keyof TypeReflect) => Promise<TreeItem | undefined | unknown>;
type TypeUseLazy = () => {
lazyNodesReflect: Ref<TypeReflect>;
handleInitLazyNodeReflect: TypeHandleInit;
Expand Down
2 changes: 1 addition & 1 deletion packages/devui-vue/devui/tree/src/tree-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export interface TreeItem {
addable?: boolean;
editable?: boolean;
deletable?: boolean;
children?: TreeData;
children?: Array<TreeItem>;
[key: string]: unknown;
}
export interface IDropType {
Expand Down