@rc-component/input-number
Version:
React input-number component
66 lines (65 loc) • 2.58 kB
TypeScript
import { ValueType } from '@rc-component/mini-decimal';
import * as React from 'react';
import { BaseInputProps } from '@rc-component/input/lib/interface';
import { InputFocusOptions } from '@rc-component/input/lib/utils/commonUtils';
export type { ValueType };
export interface InputNumberRef extends HTMLInputElement {
focus: (options?: InputFocusOptions) => void;
blur: () => void;
nativeElement: HTMLElement;
}
type SemanticName = 'actions' | 'input';
export interface InputNumberProps<T extends ValueType = ValueType> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onInput' | 'onChange' | 'prefix' | 'suffix'> {
/** value will show as string */
stringMode?: boolean;
defaultValue?: T;
value?: T | null;
prefixCls?: string;
className?: string;
style?: React.CSSProperties;
min?: T;
max?: T;
step?: ValueType;
tabIndex?: number;
controls?: boolean;
prefix?: React.ReactNode;
suffix?: React.ReactNode;
addonBefore?: React.ReactNode;
addonAfter?: React.ReactNode;
classNames?: BaseInputProps['classNames'] & Partial<Record<SemanticName, string>>;
styles?: BaseInputProps['styles'] & Partial<Record<SemanticName, React.CSSProperties>>;
upHandler?: React.ReactNode;
downHandler?: React.ReactNode;
keyboard?: boolean;
changeOnWheel?: boolean;
/** Parse display value to validate number */
parser?: (displayValue: string | undefined) => T;
/** Transform `value` to display value show in input */
formatter?: (value: T | undefined, info: {
userTyping: boolean;
input: string;
}) => string;
/** Syntactic sugar of `formatter`. Config precision of display. */
precision?: number;
/** Syntactic sugar of `formatter`. Config decimal separator of display. */
decimalSeparator?: string;
onInput?: (text: string) => void;
onChange?: (value: T | null) => void;
onPressEnter?: React.KeyboardEventHandler<HTMLInputElement>;
onStep?: (value: T, info: {
offset: ValueType;
type: 'up' | 'down';
emitter: 'handler' | 'keyboard' | 'wheel';
}) => void;
/**
* Trigger change onBlur event.
* If disabled, user must press enter or click handler to confirm the value update
*/
changeOnBlur?: boolean;
}
declare const InputNumber: (<T extends ValueType = ValueType>(props: React.PropsWithChildren<InputNumberProps<T>> & {
ref?: React.Ref<HTMLInputElement>;
}) => React.ReactElement) & {
displayName?: string;
};
export default InputNumber;