diff --git a/src/lib/components/common/Slider.svelte b/src/lib/components/common/Slider.svelte index 8100b9a..2bbd19b 100644 --- a/src/lib/components/common/Slider.svelte +++ b/src/lib/components/common/Slider.svelte @@ -37,16 +37,27 @@ return `background: linear-gradient(to right, var(--brand-primary) 0%, var(--brand-primary) ${percentage}%, var(--stroke) ${percentage}%, var(--stroke) 100%)` }) - function handleInput(e: Event) { + function applySnap(e: Event): void { if (snapToCenter !== undefined) { + const target = e.target as HTMLInputElement + const raw = parseFloat(target.value) const mid = (min + max) / 2 - if (Math.abs(value - mid) <= snapToCenter) { + if (Math.abs(raw - mid) <= snapToCenter) { value = mid - ;(e.target as HTMLInputElement).value = String(mid) + target.value = String(mid) } } + } + + function handleInput(e: Event) { + applySnap(e) oninput?.(e) } + + function handleChange(e: Event) { + applySnap(e) + onchange?.(e) + }