From 278edd60104cc30d2a786ff7b0e096b15c5737e1 Mon Sep 17 00:00:00 2001 From: Alex Grozav Date: Tue, 23 Jul 2024 10:16:56 +0300 Subject: [PATCH] feat(editor): Add undo/redo when moving nodes in new canvas (no-changelog) (#10137) --- .../src/components/canvas/Canvas.spec.ts | 13 ++--- .../src/components/canvas/Canvas.vue | 14 +++-- .../__tests__/useCanvasOperations.spec.ts | 54 +++++++++++++++++++ .../src/composables/useCanvasOperations.ts | 45 ++++++++++++---- packages/editor-ui/src/types/canvas.ts | 2 + packages/editor-ui/src/views/NodeView.v2.vue | 22 ++++++-- 6 files changed, 126 insertions(+), 24 deletions(-) diff --git a/packages/editor-ui/src/components/canvas/Canvas.spec.ts b/packages/editor-ui/src/components/canvas/Canvas.spec.ts index f9868e7a48..9a3293738e 100644 --- a/packages/editor-ui/src/components/canvas/Canvas.spec.ts +++ b/packages/editor-ui/src/components/canvas/Canvas.spec.ts @@ -8,8 +8,7 @@ import { createCanvasConnection, createCanvasNodeElement } from '@/__tests__/dat import { NodeConnectionType } from 'n8n-workflow'; import type { useDeviceSupport } from 'n8n-design-system'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-expect-error +// @ts-expect-error Initialize window object global.window = jsdom.window as unknown as Window & typeof globalThis; vi.mock('n8n-design-system', async (importOriginal) => { @@ -100,12 +99,14 @@ describe('Canvas', () => { await fireEvent.mouseDown(node, { view: window }); await fireEvent.mouseMove(node, { view: window, - clientX: 100, - clientY: 100, + clientX: 96, + clientY: 96, }); await fireEvent.mouseUp(node, { view: window }); - // Snap to 16px grid: 100 -> 96 - expect(emitted()['update:node:position']).toEqual([['1', { x: 96, y: 96 }]]); + // Snap to 20px grid: 96 -> 100 + expect(emitted()['update:nodes:position']).toEqual([ + [[{ id: '1', position: { x: 100, y: 100 } }]], + ]); }); }); diff --git a/packages/editor-ui/src/components/canvas/Canvas.vue b/packages/editor-ui/src/components/canvas/Canvas.vue index cc3f8490c9..4fdbc71503 100644 --- a/packages/editor-ui/src/components/canvas/Canvas.vue +++ b/packages/editor-ui/src/components/canvas/Canvas.vue @@ -1,5 +1,5 @@