@@ -88,7 +88,10 @@ export interface InputNumberProps<T extends ValueType = ValueType>
8888 /** Parse display value to validate number */
8989 parser ?: ( displayValue : string | undefined , info : { prevValue : string } ) => T ;
9090 /** Transform `value` to display value show in input */
91- formatter ?: ( value : T | undefined , info : { userTyping : boolean ; input : string , prevValue : string } ) => string ;
91+ formatter ?: (
92+ value : T | undefined ,
93+ info : { userTyping : boolean ; input : string ; prevValue : string } ,
94+ ) => string ;
9295 /** Syntactic sugar of `formatter`. Config precision of display. */
9396 precision ?: number ;
9497 /** Syntactic sugar of `formatter`. Config decimal separator of display. */
@@ -171,8 +174,8 @@ const InternalInputNumber = React.forwardRef(
171174 }
172175 }
173176
174-
175177 const prevValueRef = React . useRef < string | number > ( '' ) ;
178+ const inputValueRef = React . useRef < string | number > ( '' ) ;
176179
177180 // ====================== Formatter ======================
178181 /**
@@ -222,11 +225,14 @@ const InternalInputNumber = React.forwardRef(
222225 ) ;
223226
224227 // >>> Formatter
225- const inputValueRef = React . useRef < string | number > ( '' ) ;
226228 const mergedFormatter = React . useCallback (
227229 ( number : string , userTyping : boolean ) => {
228230 if ( formatter ) {
229- return formatter ( number , { userTyping, input : String ( inputValueRef . current ) , prevValue : String ( prevValueRef . current ) } ) ;
231+ return formatter ( number , {
232+ userTyping,
233+ input : String ( inputValueRef . current ) ,
234+ prevValue : String ( prevValueRef . current ) ,
235+ } ) ;
230236 }
231237
232238 let str = typeof number === 'number' ? num2str ( number ) : number ;
@@ -389,14 +395,12 @@ const InternalInputNumber = React.forwardRef(
389395 const collectInputValue = ( inputStr : string ) => {
390396 recordCursor ( ) ;
391397
392-
393398 // Update inputValue in case input can not parse as number
394399 // Refresh ref value immediately since it may used by formatter
395- prevValueRef . current = inputValueRef . current
400+ prevValueRef . current = inputValueRef . current ;
396401 inputValueRef . current = inputStr ;
397402 setInternalInputValue ( inputStr ) ;
398403
399-
400404 // Parse number
401405 if ( ! compositionRef . current ) {
402406 const finalValue = mergedParser ( inputStr ) ;
@@ -488,8 +492,8 @@ const InternalInputNumber = React.forwardRef(
488492 if ( value !== undefined ) {
489493 // Reset back with controlled value first
490494 setInputValue ( decimalValue , false ) ;
491- } else if ( ! formatValue . isNaN ( ) ) {
492- // Reset input back since no validate value
495+ } else {
496+ // Format value
493497 setInputValue ( formatValue , false ) ;
494498 }
495499 } ;
@@ -533,7 +537,7 @@ const InternalInputNumber = React.forwardRef(
533537 const onWheel = ( event ) => {
534538 if ( wheel === false ) {
535539 return ;
536- } ;
540+ }
537541 // moving mouse wheel rises wheel event with deltaY < 0
538542 // scroll value grows from top to bottom, as screen Y coordinate
539543 onInternalStep ( event . deltaY < 0 ) ;
@@ -546,7 +550,7 @@ const InternalInputNumber = React.forwardRef(
546550 // https://stackoverflow.com/questions/63663025/react-onwheel-handler-cant-preventdefault-because-its-a-passive-event-listenev
547551 input . addEventListener ( 'wheel' , onWheel ) ;
548552 return ( ) => input . removeEventListener ( 'wheel' , onWheel ) ;
549- } ;
553+ }
550554 } , [ onInternalStep ] ) ;
551555
552556 // >>> Focus & Blur
0 commit comments