Skip to content

Commit 1129199

Browse files
authored
Merge pull request #88 from easyops-cn/steve/fix-context-menu
fix(): stop context menu event propagation from cell
2 parents b2188b4 + 3310e21 commit 1129199

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

bricks/diagram/src/draw-canvas/CellComponent.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ export function CellComponent({
266266
return;
267267
}
268268
event.preventDefault();
269+
event.stopPropagation();
269270
onSwitchActiveTarget(cellToTarget(cell));
270271
onCellContextMenu({
271272
cell,

bricks/diagram/src/draw-canvas/index.spec.tsx

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,28 @@ describe("eo-draw-canvas", () => {
876876
locked: false,
877877
});
878878

879-
expect(onCanvasContextMenu).toHaveBeenCalled();
879+
// Context-menu event propagation is stopped.
880+
expect(onCanvasContextMenu).not.toHaveBeenCalled();
881+
882+
act(() => {
883+
fireEvent.contextMenu(element.shadowRoot!.querySelector("svg")!, {
884+
clientX: 100,
885+
clientY: 200,
886+
});
887+
});
888+
889+
expect(onCanvasContextMenu).toBeCalledWith({
890+
clientX: 100,
891+
clientY: 200,
892+
view: {
893+
x: 100,
894+
y: 200,
895+
},
896+
});
897+
898+
// Active target is reset to null when right-click the canvas space area.
899+
await act(() => new Promise((resolve) => setTimeout(resolve, 1)));
900+
expect(onActiveTargetChange).toHaveBeenCalledWith(null);
880901

881902
act(() => {
882903
document.body.removeChild(element);

bricks/diagram/src/draw-canvas/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1384,8 +1384,9 @@ function LegacyEoDrawCanvasComponent(
13841384
(event: React.MouseEvent<SVGElement>) => {
13851385
event.preventDefault();
13861386
onCanvasContextMenu([event.clientX, event.clientY]);
1387+
onSwitchActiveTarget?.(null);
13871388
},
1388-
[onCanvasContextMenu]
1389+
[onCanvasContextMenu, onSwitchActiveTarget]
13891390
);
13901391
useEffect(() => {
13911392
const root = rootRef.current;

0 commit comments

Comments
 (0)