From 4f3abc3ae5efd578af10b991a9e6d1cf9ed57a1d Mon Sep 17 00:00:00 2001 From: nite-knite Date: Tue, 16 Sep 2025 21:37:57 +0800 Subject: [PATCH] chore: extract regex logic --- web/app/components/base/input/index.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/web/app/components/base/input/index.tsx b/web/app/components/base/input/index.tsx index 68db39d687..881aa1d610 100644 --- a/web/app/components/base/input/index.tsx +++ b/web/app/components/base/input/index.tsx @@ -33,6 +33,8 @@ export type InputProps = { ref?: React.Ref } & Omit, 'size'> & VariantProps +const removeLeadingZeros = (value: string) => value.replace(/^(-?)0+(?=\d)/, '$1') + const Input = ({ size, disabled, @@ -55,7 +57,7 @@ const Input = ({ const handleNumberChange: ChangeEventHandler = (e) => { if (value === 0) { // remove leading zeros - const formattedValue = e.target.value.replace(/^(-?)0+(?=\d)/, '$1') + const formattedValue = removeLeadingZeros(e.target.value) if (e.target.value !== formattedValue) e.target.value = formattedValue } @@ -63,12 +65,16 @@ const Input = ({ } const handleNumberBlur: FocusEventHandler = (e) => { // remove leading zeros - const formattedValue = e.target.value.replace(/^(-?)0+(?=\d)/, '$1') + const formattedValue = removeLeadingZeros(e.target.value) if (e.target.value !== formattedValue) { e.target.value = formattedValue onChange({ ...e, type: 'change', + target: { + ...e.target, + value: formattedValue, + }, }) } onBlur(e)