From 55d7d7ef7697a4393ddf7b386f0aeb831a83b89a Mon Sep 17 00:00:00 2001 From: twwu Date: Tue, 1 Jul 2025 11:24:30 +0800 Subject: [PATCH] fix: Update default value handling for number input in useInitialData hook --- .../components/base/input-number/index.tsx | 54 ++++++++++++------- .../rag-pipeline/hooks/use-input-fields.ts | 2 +- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/web/app/components/base/input-number/index.tsx b/web/app/components/base/input-number/index.tsx index 98efc94462..9024575abd 100644 --- a/web/app/components/base/input-number/index.tsx +++ b/web/app/components/base/input-number/index.tsx @@ -1,4 +1,4 @@ -import type { FC } from 'react' +import { type FC, useCallback } from 'react' import { RiArrowDownSLine, RiArrowUpSLine } from '@remixicon/react' import Input, { type InputProps } from '../input' import classNames from '@/utils/classnames' @@ -19,13 +19,28 @@ export type InputNumberProps = { } & Omit export const InputNumber: FC = (props) => { - const { unit, className, onChange, amount = 1, value, size = 'regular', max, min, defaultValue, wrapClassName, controlWrapClassName, controlClassName, disabled, ...rest } = props + const { + unit, + className, + onChange, + amount = 1, + value, + size = 'regular', + max, + min, + defaultValue, + wrapClassName, + controlWrapClassName, + controlClassName, + disabled, + ...rest + } = props - const isValidValue = (v: number) => { + const isValidValue = useCallback((v: number) => { if (typeof max === 'number' && v > max) return false return !(typeof min === 'number' && v < min) - } + }, [max, min]) const inc = () => { if (disabled) return @@ -52,6 +67,20 @@ export const InputNumber: FC = (props) => { onChange(newValue) } + const handleInputChange = useCallback((e: React.ChangeEvent) => { + if (e.target.value === '') { + onChange(undefined) + return + } + const parsed = Number(e.target.value) + if (Number.isNaN(parsed)) + return + + if (!isValidValue(parsed)) + return + onChange(parsed) + }, [isValidValue, onChange]) + return
= (props) => { max={max} min={min} disabled={disabled} - onChange={(e) => { - if (e.target.value === '') - onChange(undefined) - - const parsed = Number(e.target.value) - if (Number.isNaN(parsed)) - return - - if (!isValidValue(parsed)) - return - onChange(parsed) - }} + onChange={handleInputChange} unit={unit} size={size} />