@@ -63,6 +63,8 @@ export interface InputNumberProps<T extends ValueType = ValueType>
6363  /** value will show as string */ 
6464  stringMode ?: boolean ; 
6565
66+   type ?: 'input'  |  'spinner' ; 
67+ 
6668  defaultValue ?: T ; 
6769  value ?: T  |  null ; 
6870
@@ -84,6 +86,8 @@ export interface InputNumberProps<T extends ValueType = ValueType>
8486  // Customize handler node 
8587  upHandler ?: React . ReactNode ; 
8688  downHandler ?: React . ReactNode ; 
89+   spinnerUpHandler ?: React . ReactNode ; 
90+   spinnerDownHandler ?: React . ReactNode ; 
8791  keyboard ?: boolean ; 
8892  changeOnWheel ?: boolean ; 
8993
@@ -119,6 +123,7 @@ type InternalInputNumberProps = Omit<InputNumberProps, 'prefix' | 'suffix'> & {
119123const  InternalInputNumber  =  React . forwardRef ( 
120124  ( props : InternalInputNumberProps ,  ref : React . Ref < HTMLInputElement > )  =>  { 
121125    const  { 
126+       type, 
122127      prefixCls, 
123128      className, 
124129      style, 
@@ -131,6 +136,8 @@ const InternalInputNumber = React.forwardRef(
131136      readOnly, 
132137      upHandler, 
133138      downHandler, 
139+       spinnerUpHandler, 
140+       spinnerDownHandler, 
134141      keyboard, 
135142      changeOnWheel =  false , 
136143      controls =  true , 
@@ -607,7 +614,7 @@ const InternalInputNumber = React.forwardRef(
607614        onCompositionEnd = { onCompositionEnd } 
608615        onBeforeInput = { onBeforeInput } 
609616      > 
610-         { controls  &&  ( 
617+         { type   ===   'input'   &&   controls  &&  ( 
611618          < StepHandler 
612619            prefixCls = { prefixCls } 
613620            upNode = { upHandler } 
@@ -617,6 +624,17 @@ const InternalInputNumber = React.forwardRef(
617624            onStep = { onInternalStep } 
618625          /> 
619626        ) } 
627+ 
628+         { type  ===  'spinner'  &&  controls  &&  ( 
629+           < StepHandler 
630+             prefixCls = { prefixCls } 
631+             downNode = { spinnerDownHandler  ||  downHandler } 
632+             downDisabled = { downDisabled } 
633+             upHidden 
634+             onStep = { onInternalStep } 
635+           /> 
636+         ) } 
637+ 
620638        < div  className = { `${ inputClassName }  } > 
621639          < input 
622640            autoComplete = "off" 
@@ -634,13 +652,24 @@ const InternalInputNumber = React.forwardRef(
634652            readOnly = { readOnly } 
635653          /> 
636654        </ div > 
655+ 
656+         { type  ===  'spinner'  &&  controls  &&  ( 
657+           < StepHandler 
658+             prefixCls = { prefixCls } 
659+             upNode = { spinnerUpHandler  ||  upHandler } 
660+             upDisabled = { upDisabled } 
661+             downHidden 
662+             onStep = { onInternalStep } 
663+           /> 
664+         ) } 
637665      </ div > 
638666    ) ; 
639667  } , 
640668) ; 
641669
642670const  InputNumber  =  React . forwardRef < InputNumberRef ,  InputNumberProps > ( ( props ,  ref )  =>  { 
643671  const  { 
672+     type =  'input' , 
644673    disabled, 
645674    style, 
646675    prefixCls =  'rc-input-number' , 
@@ -675,7 +704,7 @@ const InputNumber = React.forwardRef<InputNumberRef, InputNumberProps>((props, r
675704  return  ( 
676705    < SemanticContext . Provider  value = { memoizedValue } > 
677706      < BaseInput 
678-         className = { className } 
707+         className = { clsx ( ` ${ prefixCls } -type- ${ type } ` ,   className ) } 
679708        triggerFocus = { focus } 
680709        prefixCls = { prefixCls } 
681710        value = { value } 
@@ -696,6 +725,7 @@ const InputNumber = React.forwardRef<InputNumberRef, InputNumberProps>((props, r
696725        ref = { holderRef } 
697726      > 
698727        < InternalInputNumber 
728+           type = { type } 
699729          prefixCls = { prefixCls } 
700730          disabled = { disabled } 
701731          ref = { inputFocusRef } 
0 commit comments