tdesign-react
Version:
TDesign Component for React
160 lines (159 loc) • 4.76 kB
TypeScript
/**
* 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC
* */
import { InputProps } from '../input';
import { TNode } from '../common';
import { MouseEvent, KeyboardEvent, FocusEvent, FormEvent, CompositionEvent } from 'react';
export interface TdInputNumberProps<T = InputNumberValue> {
/**
* 文本内容位置,居左/居中/居右
*/
align?: 'left' | 'center' | 'right';
/**
* 是否允许输入超过 `max` `min` 范围外的数字。为保障用户体验,仅在失去焦点时进行数字范围矫正。默认允许超出,数字超出范围时,输入框变红提醒
* @default true
*/
allowInputOverLimit?: boolean;
/**
* 宽度随内容自适应
* @default false
*/
autoWidth?: boolean;
/**
* [小数位数](https://en.wiktionary.org/wiki/decimal_place)
*/
decimalPlaces?: InputNumberDecimalPlaces;
/**
* 禁用组件
*/
disabled?: boolean;
/**
* 格式化输入框展示值。第二个事件参数 `context.fixedNumber` 表示处理过小数位数 `decimalPlaces` 的数字
*/
format?: (value: InputNumberValue, context?: {
fixedNumber?: InputNumberValue;
}) => InputNumberValue;
/**
* 透传 Input 输入框组件全部属性
*/
inputProps?: InputProps;
/**
* 左侧文本
*/
label?: TNode;
/**
* 是否作为大数使用。JS 支持的最大数字位数是 16 位,超过 16 位的数字需作为字符串大数处理。此时,数据类型必须保持为字符串,否则会丢失数据
* @default false
*/
largeNumber?: boolean;
/**
* 最大值。如果是大数,请传入字符串
* @default Infinity
*/
max?: InputNumberValue;
/**
* 最小值。如果是大数,请传入字符串
* @default -Infinity
*/
min?: InputNumberValue;
/**
* 占位符
*/
placeholder?: string;
/**
* 只读状态
*/
readonly?: boolean;
/**
* 组件尺寸
* @default medium
*/
size?: 'small' | 'medium' | 'large';
/**
* 文本框状态
* @default default
*/
status?: 'default' | 'success' | 'warning' | 'error';
/**
* 数值改变步数,可以是小数。如果是大数,请保证数据类型为字符串
* @default 1
*/
step?: InputNumberValue;
/**
* 后置内容
*/
suffix?: TNode;
/**
* 按钮布局
* @default row
*/
theme?: 'column' | 'row' | 'normal';
/**
* 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式
*/
tips?: TNode;
/**
* 数字输入框的值。当值为 '' 时,输入框显示为空
*/
value?: T;
/**
* 数字输入框的值。当值为 '' 时,输入框显示为空,非受控属性
*/
defaultValue?: T;
/**
* 失去焦点时触发
*/
onBlur?: (value: InputNumberValue, context: {
e: FocusEvent<HTMLDivElement>;
}) => void;
/**
* 值变化时触发,`type` 表示触发本次变化的来源
*/
onChange?: (value: T, context: ChangeContext) => void;
/**
* 回车键按下时触发
*/
onEnter?: (value: InputNumberValue, context: {
e: KeyboardEvent<HTMLDivElement>;
}) => void;
/**
* 获取焦点时触发
*/
onFocus?: (value: InputNumberValue, context: {
e: FocusEvent<HTMLDivElement>;
}) => void;
/**
* 键盘按下时触发
*/
onKeydown?: (value: InputNumberValue, context: {
e: KeyboardEvent<HTMLDivElement>;
}) => void;
/**
* 按下字符键时触发(keydown -> keypress -> keyup)
*/
onKeypress?: (value: InputNumberValue, context: {
e: KeyboardEvent<HTMLDivElement>;
}) => void;
/**
* 释放键盘时触发
*/
onKeyup?: (value: InputNumberValue, context: {
e: KeyboardEvent<HTMLDivElement>;
}) => void;
/**
* 最大值或最小值校验结束后触发,`exceed-maximum` 表示超出最大值,`below-minimum` 表示小于最小值
*/
onValidate?: (context: {
error?: 'exceed-maximum' | 'below-minimum';
}) => void;
}
export type InputNumberDecimalPlaces = number | {
enableRound: boolean;
places: number;
};
export type InputNumberValue = number | string;
export interface ChangeContext {
type: ChangeSource;
e: FormEvent<HTMLInputElement> | MouseEvent<HTMLDivElement | SVGElement> | FocusEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement> | CompositionEvent<HTMLDivElement>;
}
export type ChangeSource = 'add' | 'reduce' | 'input' | 'blur' | 'enter' | 'clear' | 'props';