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); };