import type { InputHTMLAttributes, KeyboardEvent, ReactElement, CSSProperties, ReactNode, LegacyRef } from "react";
export type InputNativeProps = InputHTMLAttributes;
export interface BaseComponentProps {
className?: string;
style?: CSSProperties;
children?: ReactNode;
}
export interface AdornmentProps {
/**
* 是否有边框
* - startAdornment,展示右边框
* - endAdornment,展示左边框
*
* @default false
* */
border?: boolean;
className?: BaseComponentProps["className"];
style?: BaseComponentProps["style"];
}
export interface InputProps extends Omit, Omit {
/**
* 自动获取焦点
*
* @default false
* */
autoFocus?: boolean;
/**
* 组件颜色
*
* @default "primary"
* */
color?: "primary" | "success" | "error" | "wraning" | string;
/**
* 输入框前添加元素
* */
startAdornment?: ReactElement;
/**
* 输入框后添加元素
* */
endAdornment?: ReactElement;
/**
*
*
* 输入框中间盖在input上面的节点,需要同时满足value为空
* */
centerAdornment?: ReactElement;
/**
* 错误状态,一般是从上级表单组件继承的值
*
* @default false
* */
error?: boolean;
/**
* 可以取到input元素节点。如果是ref,则会被传递到根元素中
* */
inputRef?: LegacyRef;
/**
* 与父级容器宽度相等
*
* @default false
* */
fullWidth?: boolean;
/**
* 组件变体,可选值为 outlined、standard
* - outlined 带边框
* - standard 标准,表示只带下边框
*
* @default "standard"
* */
variant?: "outlined" | "standard";
/**
* 有无圆角,默认有圆角。`variant` 为 `outlined` 时有效。
*
* @default false
* */
square?: boolean;
/**
* 若有传入 startAdornment,startAdornmentProps则是传递给它的属性
* */
startAdornmentProps?: AdornmentProps;
/**
* 若有传入 endAdornment,endAdornmentProps则是传递给它的属性
* */
endAdornmentProps?: AdornmentProps;
/**
* 按下回车事件
* */
onPressEnter?: (event: KeyboardEvent) => void;
dark?: boolean;
/**
* 输入框文案居左/右
*
* @default right
*/
textAlign?: "left" | "right";
classes?: {
inputRoot?: string;
inputRootContainer?: string;
};
}
export interface NumberInputProps extends InputProps {
/**
* 精度
*/
scale?: number;
/**
* 末位步长,一般价格末位可能需要修正
*/
step?: number;
/**
* 最大值
*/
max?: number;
/**
* 最小
*/
min?: number;
/**
* 错误写入
*/
setError?: () => void;
/**
* 是否做字符修正, 价格需要
*/
limitInputStep?: boolean;
/**
* input的值
*/
value?: any;
/**
* 是否错误
*/
error?: boolean;
/**
* 值更新
*/
onChange?: (val: string) => void;
/**
* 是否显示 负号 默认不显示
*/
allowNegative?: boolean;
/**
* 失去焦点
*/
proOnBlur?: (v: any) => void;
/**
* 获得焦点
*/
proOnFocus?: (v: any) => void;
/**
* i输入框的id
*/
name?: any;
}