import { CSSProperties, InputHTMLAttributes, ReactNode } from 'react';
import { type SizeType } from '../config-provider';
export declare type InputNumberValueChangeReason = 'manual' | 'increase' | 'decrease' | 'outOfRange';
/**
* @title InputNumber
*/
export interface InputNumberProps extends Omit, 'prefix' | 'className' | 'size' | 'onChange' | 'onKeyDown'> {
style?: CSSProperties;
className?: string | string[];
/**
* 数字变化步长
* @defaultValue 1
*/
step?: number;
/**
* 数字精度。设置精度小于`step`的小数位时,取`step`的小数个数。
*/
precision?: number;
/**
* 最小值
* @defaultValue -Infinity
*/
min?: number;
/**
* 最大值
* @defaultValue Infinity
*/
max?: number;
/**
* 是否禁用
*/
disabled?: boolean;
/**
* 静态模式
*/
quickStatic?: boolean;
/**
* 快速编辑(默认无边框)
*/
quickEdit?: boolean;
/**
* 状态
*/
status?: 'error' | 'warning';
/**
* 是否只读
*/
readOnly?: boolean;
/**
* 严格模式下,`onChange` 回调将返回字符串类型
*/
strictMode?: boolean;
/**
* 初始值
*/
defaultValue?: number | string;
/**
* 当前值
*/
value?: undefined | number | string;
/**
* 默认显示文案
*/
placeholder?: string;
/**
* `embed` - 按钮内嵌模式,`button` - 左右按钮模式
* @defaultValue embed
*/
mode?: 'embed' | 'button';
/**
* 不同尺寸的数字输入框。分别对应 `24px`, `28px`, `32px`
*/
size?: SizeType;
/**
* 显示前缀
*/
prefix?: ReactNode;
/**
* 显示后缀
*/
suffix?: ReactNode;
/**
* 定义输入框展示值
*/
formatter?: (value: number | string, info: {
userTyping: boolean;
input: string;
}) => string;
/**
* 从 formatter 转换为数字,和 formatter 搭配使用。
* @defaultValue (input) => input.replace(/[^\w\.-]+/g, '')
*/
parser?: (value: string) => number | string;
/**
* 变化回调
*/
onChange?: (value: number, reason?: InputNumberValueChangeReason) => void;
/**
* 输入框聚焦事件的回调
*/
onFocus?: (e: any) => void;
/**
* 输入框失去聚焦事件的回调
*/
onBlur?: (e: any) => void;
/**
* 键盘事件回调
*/
onKeyDown?: (e: Event) => void;
/**
* 隐藏右侧按钮
*/
hideControl?: boolean;
/**
* 配置图标
*/
icons?: {
up?: ReactNode;
down?: ReactNode;
plus?: ReactNode;
minus?: ReactNode;
};
}