From e04b980dff8a71fd6ef06c19f5966f8e8ab86703 Mon Sep 17 00:00:00 2001 From: Alex Grozav Date: Tue, 1 Oct 2024 16:43:47 +0300 Subject: [PATCH] feat(editor): Improve edges and connection lines rendering on new canvas (no-changelog) (#11036) --- .../edges/CanvasConnectionLine.spec.ts | 4 +-- .../elements/edges/CanvasConnectionLine.vue | 21 ++++++++++- .../canvas/elements/edges/CanvasEdge.spec.ts | 26 +++++++++++++- .../canvas/elements/edges/CanvasEdge.vue | 13 ++++--- .../canvas/elements/edges/utils/edgePath.ts | 36 +++++++++++-------- 5 files changed, 78 insertions(+), 22 deletions(-) diff --git a/packages/editor-ui/src/components/canvas/elements/edges/CanvasConnectionLine.spec.ts b/packages/editor-ui/src/components/canvas/elements/edges/CanvasConnectionLine.spec.ts index 7591a8666..812dd7eff 100644 --- a/packages/editor-ui/src/components/canvas/elements/edges/CanvasConnectionLine.spec.ts +++ b/packages/editor-ui/src/components/canvas/elements/edges/CanvasConnectionLine.spec.ts @@ -50,7 +50,7 @@ describe('CanvasConnectionLine', () => { expect(edge).toHaveAttribute( 'd', - 'M0 0L 32,0Q 40,0 40,8L 40,132Q 40,140 32,140L1 140L0 140M0 140L-40 140L -132,140Q -140,140 -140,132L -140,-92Q -140,-100 -132,-100L-100 -100', + 'M0 0L 24,0Q 40,0 40,16L 40,124Q 40,140 24,140L1 140L0 140M0 140L-40 140L -124,140Q -140,140 -140,124L -140,-84Q -140,-100 -124,-100L-100 -100', ); }); @@ -71,7 +71,7 @@ describe('CanvasConnectionLine', () => { expect(edge).toHaveAttribute( 'd', - 'M-72 -290L -57,-290Q -52,-290 -52,-285L -52,-165Q -52,-160 -57,-160L -359,-160Q -364,-160 -364,-155L -364,-35Q -364,-30 -359,-30L-344 -30', + 'M-72 -290L -62,-290Q -52,-290 -52,-280L -52,-176Q -52,-160 -68,-160L -348,-160Q -364,-160 -364,-144L -364,-40Q -364,-30 -354,-30L-344 -30', ); }); }); diff --git a/packages/editor-ui/src/components/canvas/elements/edges/CanvasConnectionLine.vue b/packages/editor-ui/src/components/canvas/elements/edges/CanvasConnectionLine.vue index 86b1a5971..8cb47fab9 100644 --- a/packages/editor-ui/src/components/canvas/elements/edges/CanvasConnectionLine.vue +++ b/packages/editor-ui/src/components/canvas/elements/edges/CanvasConnectionLine.vue @@ -4,16 +4,35 @@ import type { ConnectionLineProps } from '@vue-flow/core'; import { BaseEdge } from '@vue-flow/core'; import { computed, useCssModule } from 'vue'; import { getCustomPath } from './utils/edgePath'; +import { useCanvas } from '@/composables/useCanvas'; +import { NodeConnectionType } from 'n8n-workflow'; +import { parseCanvasConnectionHandleString } from '@/utils/canvasUtilsV2'; const props = defineProps(); const $style = useCssModule(); +const { connectingHandle } = useCanvas(); + +const connectionType = computed( + () => parseCanvasConnectionHandleString(connectingHandle.value?.handleId).type, +); + +const edgeColor = computed(() => { + if (connectionType.value !== NodeConnectionType.Main) { + return 'var(--node-type-supplemental-color)'; + } else { + return 'var(--color-foreground-xdark)'; + } +}); + const edgeStyle = computed(() => ({ + ...(connectionType.value === NodeConnectionType.Main ? {} : { strokeDasharray: '8,8' }), strokeWidth: 2, + stroke: edgeColor.value, })); -const path = computed(() => getCustomPath(props)); +const path = computed(() => getCustomPath(props, { connectionType: connectionType.value }));