From a13e142ee2907e0a23d80be6e45cd16a086d899d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20G=C3=B3mez=20Morales?= Date: Fri, 18 Oct 2024 09:26:13 +0200 Subject: [PATCH] fix(editor): Add striped background to readonly canvas (no-changelog) (#11297) --- .../src/components/canvas/Canvas.spec.ts | 13 +++++++ .../src/components/canvas/Canvas.vue | 8 ++++- .../CanvasBackgroundStripedPattern.vue | 36 +++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 packages/editor-ui/src/components/canvas/elements/CanvasBackgroundStripedPattern.vue diff --git a/packages/editor-ui/src/components/canvas/Canvas.spec.ts b/packages/editor-ui/src/components/canvas/Canvas.spec.ts index 5ab4c6e96e..8e53425532 100644 --- a/packages/editor-ui/src/components/canvas/Canvas.spec.ts +++ b/packages/editor-ui/src/components/canvas/Canvas.spec.ts @@ -207,4 +207,17 @@ describe('Canvas', () => { await waitFor(() => expect(getByTestId('canvas-minimap')).not.toBeVisible()); }); }); + + describe('background', () => { + it('should render default background', () => { + const { container } = renderComponent(); + expect(container.querySelector('#pattern-canvas')).toBeInTheDocument(); + }); + + it('should render striped background', () => { + const { container } = renderComponent({ props: { readOnly: true } }); + expect(container.querySelector('#pattern-canvas')).not.toBeInTheDocument(); + expect(container.querySelector('#diagonalHatch')).toBeInTheDocument(); + }); + }); }); diff --git a/packages/editor-ui/src/components/canvas/Canvas.vue b/packages/editor-ui/src/components/canvas/Canvas.vue index 521406ade5..7037b0a580 100644 --- a/packages/editor-ui/src/components/canvas/Canvas.vue +++ b/packages/editor-ui/src/components/canvas/Canvas.vue @@ -32,6 +32,7 @@ import { CanvasKey } from '@/constants'; import { onKeyDown, onKeyUp, useDebounceFn } from '@vueuse/core'; import CanvasArrowHeadMarker from './elements/edges/CanvasArrowHeadMarker.vue'; import { CanvasNodeRenderType } from '@/types'; +import CanvasBackgroundStripedPattern from './elements/CanvasBackgroundStripedPattern.vue'; const $style = useCssModule(); @@ -110,6 +111,7 @@ const { onPaneReady, findNode, onNodesInitialized, + viewport, } = useVueFlow({ id: props.id, deleteKeyCode: null }); const isPaneReady = ref(false); @@ -562,7 +564,11 @@ provide(CanvasKey, { - + + + +/* eslint-disable vue/no-multiple-template-root */ +/** + * @see https://github.com/bcakmakoglu/vue-flow/blob/master/packages/background/src/Background.vue + */ +import { computed } from 'vue'; +const props = defineProps<{ + x: number; + y: number; + zoom: number; +}>(); + +const scaledGap = computed(() => 20 * props.zoom || 1); +const patternOffset = computed(() => scaledGap.value / 2); + + + + +