From 00b0dc42bfc87e94d8a3253c0dee0905088f8c11 Mon Sep 17 00:00:00 2001 From: vegard Date: Thu, 19 Mar 2026 19:45:54 +0000 Subject: [PATCH] Fiks workspace-modifikatorer i canvas toolbar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Legg til stopPropagation på toolbar-div for å hindre at pointer/click-events bobler opp til canvas-container og starter pan/lasso - Zoom-knapper zoomer nå mot viewport-senter (som musehjul) med ±15% steg - Fullskjerm z-index økt til 9999 (over header) - Grid-linjer doblet i opacity (6% → 12%) for synlighet i mørkt tema - Toolbar-separator bruker CSS-variabel i stedet for hardkodet lys farge --- docs/fikseliste.md | 2 +- .../src/lib/components/canvas/Canvas.svelte | 32 +++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/docs/fikseliste.md b/docs/fikseliste.md index 6f946d5..17e2cda 100644 --- a/docs/fikseliste.md +++ b/docs/fikseliste.md @@ -12,7 +12,7 @@ Funnet ved manuell testing av frontend. Fikses som en samlet sesjon. - Lukk → fjern panel fra workspace - [x] Kanban-panel kan nå lukkes (samme fix) - [x] Ingen footer — canvas har full høyde. -- [ ] Workspace-modifikatorer (zoom-knapper, fullskjerm, snap-to-grid, tilpass) er uvirksomme. Zoom via musehjul fungerer. +- [x] Workspace-modifikatorer (zoom-knapper, fullskjerm, snap-to-grid, tilpass) fikset: stopPropagation på toolbar, zoom mot viewport-senter (±15%), fullskjerm z-index 9999, grid-linjer synligere. ## Header / innstillinger diff --git a/frontend/src/lib/components/canvas/Canvas.svelte b/frontend/src/lib/components/canvas/Canvas.svelte index 8a4a861..ba6bb05 100644 --- a/frontend/src/lib/components/canvas/Canvas.svelte +++ b/frontend/src/lib/components/canvas/Canvas.svelte @@ -394,6 +394,19 @@ } } + // --- Toolbar zoom (zoom toward viewport center) --- + function zoomStep(delta: number) { + const cx = viewport.width / 2; + const cy = viewport.height / 2; + const newZoom = clampZoom(camera.zoom * (1 + delta)); + const scale = newZoom / camera.zoom; + camera = { + x: cx - scale * (cx - camera.x), + y: cy - scale * (cy - camera.y), + zoom: newZoom, + }; + } + // --- Fullscreen --- function toggleFullscreen() { isFullscreen = !isFullscreen; @@ -456,18 +469,19 @@ aria-label="Canvas" > -
+ +
e.stopPropagation()} onpointerdown={(e) => e.stopPropagation()}> {Math.round(camera.zoom * 100)}%