Skip to content

Commit 0a5ca66

Browse files
committed
fix: fix drag block on multiple selection
1 parent f267984 commit 0a5ca66

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/components/canvas/blocks/controllers/BlockController.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,25 +44,31 @@ export class BlockController {
4444

4545
event.stopPropagation();
4646

47-
const selectedBlocksComponents = block.context.graph.rootStore.blocksList.$selectedBlocks.value.map((block) =>
47+
const draggingElements = block.context.graph.rootStore.blocksList.$selectedBlocks.value.map((block) =>
4848
block.getViewComponent()
4949
);
5050

51-
if (!selectedBlocksComponents.includes(block)) {
51+
// Prevent drag if user selected multiple blocks but start drag from non-selected block
52+
if (draggingElements.length && !draggingElements.includes(block)) {
5253
return;
5354
}
5455

56+
// Add current block to list of dragging elements
57+
if (!draggingElements.includes(block)) {
58+
draggingElements.push(block);
59+
}
60+
5561
dragListener(block.context.ownerDocument)
5662
.on(EVENTS.DRAG_START, (_event: MouseEvent) => {
5763
block.context.graph.getGraphLayer().captureEvents(block);
58-
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_START, _event));
64+
dispatchEvents(draggingElements, createCustomDragEvent(EVENTS.DRAG_START, _event));
5965
})
6066
.on(EVENTS.DRAG_UPDATE, (_event: MouseEvent) => {
61-
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_UPDATE, _event));
67+
dispatchEvents(draggingElements, createCustomDragEvent(EVENTS.DRAG_UPDATE, _event));
6268
})
6369
.on(EVENTS.DRAG_END, (_event: MouseEvent) => {
6470
block.context.graph.getGraphLayer().releaseCapture();
65-
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_END, _event));
71+
dispatchEvents(draggingElements, createCustomDragEvent(EVENTS.DRAG_END, _event));
6672
});
6773
});
6874
}

0 commit comments

Comments
 (0)