Skip to content

Commit 48c7bcc

Browse files
Tree: optimize not-allowed dropping cursor (#11631)
1 parent 7bee91a commit 48c7bcc

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

examples/docs/zh-CN/tree.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@
263263
}
264264
},
265265
allowDrag(draggingNode) {
266-
return draggingNode.data.label.indexOf('三级 3-1-1') === -1;
266+
return draggingNode.data.label.indexOf('三级 3-2-2') === -1;
267267
},
268268
loadNode(node, resolve) {
269269
if (node.level === 0) {
@@ -1173,7 +1173,7 @@
11731173
}
11741174
},
11751175
allowDrag(draggingNode) {
1176-
return draggingNode.data.label.indexOf('三级 3-1-1') === -1;
1176+
return draggingNode.data.label.indexOf('三级 3-2-2') === -1;
11771177
}
11781178
}
11791179
};

packages/tree/src/tree.vue

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,12 +362,12 @@
362362
let dropPrev = true;
363363
let dropInner = true;
364364
let dropNext = true;
365+
let userAllowDropInner = true;
365366
if (typeof this.allowDrop === 'function') {
366367
dropPrev = this.allowDrop(draggingNode.node, dropNode.node, 'prev');
367-
dropInner = this.allowDrop(draggingNode.node, dropNode.node, 'inner');
368+
userAllowDropInner = dropInner = this.allowDrop(draggingNode.node, dropNode.node, 'inner');
368369
dropNext = this.allowDrop(draggingNode.node, dropNode.node, 'next');
369370
}
370-
dragState.allowDrop = dropInner;
371371
event.dataTransfer.dropEffect = dropInner ? 'move' : 'none';
372372
if ((dropPrev || dropInner || dropNext) && oldDropNode !== dropNode) {
373373
if (oldDropNode) {
@@ -399,8 +399,8 @@
399399
const treePosition = this.$el.getBoundingClientRect();
400400
401401
let dropType;
402-
const prevPercent = dropPrev ? (dropInner ? 0.25 : (dropNext ? 0.5 : 1)) : -1;
403-
const nextPercent = dropNext ? (dropInner ? 0.75 : (dropPrev ? 0.5 : 0)) : 1;
402+
const prevPercent = dropPrev ? (dropInner ? 0.25 : (dropNext ? 0.45 : 1)) : -1;
403+
const nextPercent = dropNext ? (dropInner ? 0.75 : (dropPrev ? 0.55 : 0)) : 1;
404404
405405
let indicatorTop = -9999;
406406
const distance = event.clientY - targetPosition.top;
@@ -430,6 +430,7 @@
430430
}
431431
432432
dragState.showDropIndicator = dropType === 'before' || dropType === 'after';
433+
dragState.allowDrop = dragState.showDropIndicator || userAllowDropInner;
433434
dragState.dropType = dropType;
434435
this.$emit('node-drag-over', draggingNode.node, dropNode.node, event);
435436
});

0 commit comments

Comments
 (0)