Skip to content

Commit 0f6de7b

Browse files
jxhhdxkagol
authored andcommitted
fix(tree): 修复拖拽到其它 Tree 节点时会焦距的问题
1 parent 7fb2f28 commit 0f6de7b

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

packages/devui-vue/devui/tree/src/components/tree-node.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export default defineComponent({
3131
onDragstart,
3232
onDragover,
3333
onDragleave,
34-
onDrop
34+
onDrop,
35+
onDragend,
3536
} = inject(USE_TREE_TOKEN) as Partial<IUseTree>;
3637
const treeInstance = inject(TREE_INSTANCE) as ComponentInternalInstance | null;
3738
const ns = useNamespace('tree');
@@ -88,6 +89,7 @@ export default defineComponent({
8889
onDragover: (event: DragEvent) => onDragover?.(event),
8990
onDragleave: (event: DragEvent) => onDragleave?.(event),
9091
onDrop: (event: DragEvent) => onDrop?.(event, data.value),
92+
onDragend: (event: DragEvent) => onDragend?.(event),
9193
};
9294
}
9395
return (

packages/devui-vue/devui/tree/src/composables/use-dragdrop.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ export function useDragdrop(props: TreeProps, data: Ref<IInnerTreeNode[]>) {
9191
return cloneData;
9292
};
9393

94+
const clearDragDropInfo = () => {
95+
dragState.dropType = undefined;
96+
dragState.draggingNode = null;
97+
dragState.draggingTreeNode = null;
98+
};
99+
94100
const onDragstart = (event: DragEvent, treeNode: IInnerTreeNode): void => {
95101
event.stopPropagation();
96102
dragState.draggingNode = event.target as HTMLElement | null;
@@ -189,17 +195,22 @@ export function useDragdrop(props: TreeProps, data: Ref<IInnerTreeNode[]>) {
189195
} catch (e) {
190196
console.error(e);
191197
}
192-
dragState.dropType = undefined;
193-
dragState.draggingNode = null;
194-
dragState.draggingTreeNode = null;
198+
clearDragDropInfo();
195199
}
196200
};
197201

202+
const onDragend = (event: DragEvent) => {
203+
event.preventDefault();
204+
event.stopPropagation();
205+
clearDragDropInfo();
206+
};
207+
198208
return {
199209
onDragstart,
200210
onDragover,
201211
onDragleave,
202212
onDrop,
213+
onDragend,
203214
};
204215
};
205216
}

packages/devui-vue/devui/tree/src/composables/use-tree-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ export interface IUseDraggable {
147147
onDragover: (event: DragEvent) => void;
148148
onDragleave: (event: DragEvent) => void;
149149
onDrop: (event: DragEvent, dropNode: IInnerTreeNode) => void;
150+
onDragend: (event: DragEvent) => void;
150151
}
151152

152153
export interface IDropNode {

0 commit comments

Comments
 (0)