From 31706bfc21742e2b314e4a0119a7fad776e4b172 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 13 Nov 2025 21:08:20 +0100 Subject: [PATCH] https://github.com/emsesp/EMS-ESP32/discussions/2728#discussioncomment-14957216 --- interface/src/utils/binding.ts | 49 +++++++++++++++++----------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/interface/src/utils/binding.ts b/interface/src/utils/binding.ts index 75cacaaa3..b250c04fe 100644 --- a/interface/src/utils/binding.ts +++ b/interface/src/utils/binding.ts @@ -25,6 +25,7 @@ export const extractEventValue = ( normalizedValue.endsWith('.') || normalizedValue === '-' || normalizedValue === '-.' || + normalizedValue === '-0' || endsWithDecimalAndZeros; if (isIncomplete) { @@ -45,15 +46,15 @@ type UpdateEntity = (state: (prevState: Readonly) => S) => void; */ export const updateValue = >(updateEntity: UpdateEntity) => - (event: React.ChangeEvent): void => { - const { name } = event.target; - const value = extractEventValue(event); + (event: React.ChangeEvent): void => { + const { name } = event.target; + const value = extractEventValue(event); - updateEntity((prevState) => ({ - ...prevState, - [name]: value - })); - }; + updateEntity((prevState) => ({ + ...prevState, + [name]: value + })); + }; /** * Creates an event handler that tracks dirty flags for modified fields. @@ -66,22 +67,22 @@ export const updateValueDirty = setDirtyFlags: React.Dispatch>, updateDataValue: (updater: (prevState: T) => T) => void ) => - (event: React.ChangeEvent): void => { - const { name } = event.target; - const updatedValue = extractEventValue(event); + (event: React.ChangeEvent): void => { + const { name } = event.target; + const updatedValue = extractEventValue(event); - updateDataValue((prevState) => ({ - ...prevState, - [name]: updatedValue - })); + updateDataValue((prevState) => ({ + ...prevState, + [name]: updatedValue + })); - const isDirty = origData[name] !== updatedValue; - const wasDirty = dirtyFlags.includes(name); + const isDirty = origData[name] !== updatedValue; + const wasDirty = dirtyFlags.includes(name); - // Only update dirty flags if the state changed - if (isDirty !== wasDirty) { - setDirtyFlags( - isDirty ? [...dirtyFlags, name] : dirtyFlags.filter((f) => f !== name) - ); - } - }; + // Only update dirty flags if the state changed + if (isDirty !== wasDirty) { + setDirtyFlags( + isDirty ? [...dirtyFlags, name] : dirtyFlags.filter((f) => f !== name) + ); + } + };