Skip to content

Commit 9bbf827

Browse files
committed
fix: 修复工作区已有内容时无法正确拖动导入的问题
- 文件的 drag 优先由 FileImporter 接管,避免 messageItem 的 drop.stop 导致无法收到事件
1 parent 379436b commit 9bbf827

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

src/components/common/FileImporter.vue

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
<div
33
class="file-importer"
44
:class="{ 'is-file-dragging': isFileDragging }"
5-
@dragenter="handleDragEnter"
6-
@dragover="handleDragOver"
7-
@dragleave="handleDragLeave"
8-
@drop="handleDrop"
5+
@dragenter.capture="handleDragEnter"
6+
@dragover.capture="handleDragOver"
7+
@dragleave.capture="handleDragLeave"
8+
@drop.capture="handleDrop"
99
>
1010
<slot />
1111

@@ -41,13 +41,16 @@ function resetFileDragging() {
4141
function handleDragEnter(event: DragEvent) {
4242
if (!hasFileTransfer(event)) return;
4343
event.preventDefault();
44+
// 避免 messageItem 的 drop.stop 阻止事件冒泡导致无法收到 drag 事件
45+
event.stopPropagation();
4446
fileDragDepth.value += 1;
4547
isFileDragging.value = true;
4648
}
4749
4850
function handleDragOver(event: DragEvent) {
4951
if (!hasFileTransfer(event)) return;
5052
event.preventDefault();
53+
event.stopPropagation();
5154
isFileDragging.value = true;
5255
if (event.dataTransfer) {
5356
event.dataTransfer.dropEffect = 'copy';
@@ -57,6 +60,7 @@ function handleDragOver(event: DragEvent) {
5760
function handleDragLeave(event: DragEvent) {
5861
if (!hasFileTransfer(event)) return;
5962
event.preventDefault();
63+
event.stopPropagation();
6064
fileDragDepth.value = Math.max(0, fileDragDepth.value - 1);
6165
if (fileDragDepth.value === 0) {
6266
isFileDragging.value = false;
@@ -66,6 +70,7 @@ function handleDragLeave(event: DragEvent) {
6670
async function handleDrop(event: DragEvent) {
6771
if (!hasFileTransfer(event)) return;
6872
event.preventDefault();
73+
event.stopPropagation();
6974
const files = event.dataTransfer?.files;
7075
resetFileDragging();
7176

0 commit comments

Comments
 (0)