From 8ae0b7818b7bae787e5533737eadcfeabe921e22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Mon, 30 Oct 2023 14:36:52 +0100 Subject: [PATCH] feat (frontend): pressing "-" at the beginning of a number component will add a minus sign --- frontend/src/components/NumberComponent.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/NumberComponent.tsx b/frontend/src/components/NumberComponent.tsx index bdf8002..9a91127 100644 --- a/frontend/src/components/NumberComponent.tsx +++ b/frontend/src/components/NumberComponent.tsx @@ -139,7 +139,9 @@ export const NumberComponent = React.memo((props: NumberComponentProps) => { renderCount.current++; // Set the cursor position after the component re-renders - const inputElement = document.getElementsByName(id)[0] as HTMLInputElement; + const inputElement = document.getElementsByName( + fullAccessPath + )[0] as HTMLInputElement; if (inputElement && cursorPosition !== null) { inputElement.setSelectionRange(cursorPosition, cursorPosition); } @@ -215,6 +217,16 @@ export const NumberComponent = React.memo((props: NumberComponentProps) => { // Select everything when pressing Ctrl + a target.setSelectionRange(0, target.value.length); return; + } else if (key === '-') { + if (selectionStart === 0 && !value.startsWith('-')) { + newValue = '-' + value; + selectionStart++; + } else if (value.startsWith('-') && selectionStart === 1) { + newValue = value.substring(1); // remove minus sign + selectionStart--; + } else { + return; // Ignore "-" pressed in other positions + } } else if (!isNaN(key) && key !== ' ') { // Check if a number key or a decimal point key is pressed ({ value: newValue, selectionStart } = handleNumericKey(