From 0865605f74040ec0970b32eab110e9e02de308c6 Mon Sep 17 00:00:00 2001 From: prathmesh703 <146568950+prathmesh703@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:14:58 +0530 Subject: [PATCH] Fix some number input widgets becoming selected after dragging left/right in Firefox (#2250) * fixes drag * Cleanup --------- Co-authored-by: Keavon Chambers --- frontend/src/components/widgets/inputs/NumberInput.svelte | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/widgets/inputs/NumberInput.svelte b/frontend/src/components/widgets/inputs/NumberInput.svelte index 0c4c2280..08b75a5e 100644 --- a/frontend/src/components/widgets/inputs/NumberInput.svelte +++ b/frontend/src/components/widgets/inputs/NumberInput.svelte @@ -59,6 +59,7 @@ let self: FieldInput | undefined; let inputRangeElement: HTMLInputElement | undefined; let text = displayText(value, unit); + let isDragging = false; let editing = false; // Stays in sync with a binding to the actual input range slider element. let rangeSliderValue = value !== undefined ? value : 0; @@ -187,6 +188,8 @@ editing = true; self?.selectAllText(text); + // Workaround for weird behavior in Firefox: + if (isDragging) self?.unFocus(); } // Called only when `value` is changed from the element via user input and committed, either with the @@ -281,7 +284,7 @@ const onMove = () => { if (alreadyActedGuard) return; alreadyActedGuard = true; - + isDragging = true; beginDrag(e); removeEventListener("pointermove", onMove); }; @@ -289,7 +292,7 @@ const onUp = () => { if (alreadyActedGuard) return; alreadyActedGuard = true; - + isDragging = false; self?.focus(); removeEventListener("pointerup", onUp); };