From bb847b7a77fec6c635f9dc31c26d299cc0b772fe Mon Sep 17 00:00:00 2001 From: moklick Date: Wed, 17 May 2023 11:55:35 +0200 Subject: [PATCH] refactor(svelte): disable zoom buttons when min/max is reached --- .../src/lib/plugins/Controls/ControlButton.svelte | 12 ++++++++++++ .../svelte/src/lib/plugins/Controls/Controls.svelte | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/lib/plugins/Controls/ControlButton.svelte b/packages/svelte/src/lib/plugins/Controls/ControlButton.svelte index b761a1f8..d8260902 100644 --- a/packages/svelte/src/lib/plugins/Controls/ControlButton.svelte +++ b/packages/svelte/src/lib/plugins/Controls/ControlButton.svelte @@ -31,9 +31,21 @@ padding: 5px; } + .svelte-flow__controls-button:hover { + background: #f4f4f4; + } + .svelte-flow__controls-button :global(svg) { width: 100%; max-width: 12px; max-height: 12px; } + + .svelte-flow__controls-button:disabled { + pointer-events: none; + } + + .svelte-flow__controls-button:disabled :global(svg) { + fill-opacity: 0.4; + } diff --git a/packages/svelte/src/lib/plugins/Controls/Controls.svelte b/packages/svelte/src/lib/plugins/Controls/Controls.svelte index 26464975..3501b156 100644 --- a/packages/svelte/src/lib/plugins/Controls/Controls.svelte +++ b/packages/svelte/src/lib/plugins/Controls/Controls.svelte @@ -17,9 +17,11 @@ export let showFitView: $$Props['showFitView'] = true; export let showInteractive: $$Props['showInteractive'] = true; - const { zoomIn, zoomOut, fitView } = useStore(); + const { zoomIn, zoomOut, fitView, transform, minZoom, maxZoom } = useStore(); const isInteractive = true; + $: minZoomReached = $transform[2] <= $minZoom; + $: maxZoomReached = $transform[2] >= $maxZoom; const onZoomInHandler = () => { zoomIn(); @@ -50,6 +52,7 @@ class="svelte-flow__controls-zoomin" title="zoom in" aria-label="zoom in" + disabled={maxZoomReached} > @@ -59,6 +62,7 @@ class="svelte-flow__controls-zoomout" title="zoom out" aria-label="zoom out" + disabled={minZoomReached} >