/** * 数值输入组件公共类型定义 * 供 PisellNumber、PisellCurrency、PisellPercent 等组件使用 */ export type { DisplayState, ValidationResult } from '../common'; /** * 数值输入状态 Hook 返回值 */ export interface NumberInputState { /** * 当前值 */ value: number | null | undefined; /** * 是否已被触摸(交互过) */ isTouched: boolean; /** * 是否校验通过 */ isValid: boolean; /** * 错误信息数组 */ errors: string[]; /** * 值变更处理函数 */ handleChange: (value: number | null) => void; /** * 失焦处理函数 */ handleBlur: () => void; /** * 聚焦处理函数 */ handleFocus: () => void; } /** * 基础数值输入 Props(供校验和状态管理使用) */ export interface BaseNumberInputProps { /** * 当前值(受控) */ value?: number | null; /** * 默认值(非受控) */ defaultValue?: number | null; /** * 是否必填 */ required?: boolean; /** * 最小值 */ min?: number; /** * 最大值 */ max?: number; /** * 自定义校验函数 * @param value 当前值 * @returns true 表示通过,false 或错误信息字符串表示不通过 */ validator?: (value: number | null) => boolean | string; /** * 校验触发时机 * - onChange: 输入时即时校验 * - onBlur: 失焦时校验 * - both: 输入和失焦时都校验 */ validateTrigger?: 'onChange' | 'onBlur' | 'both'; /** * 自定义错误提示信息 */ errorMessage?: string; /** * 值变更回调 */ onChange?: (value: number | null) => void; /** * 失焦回调 */ onBlur?: (value: number | null) => void; /** * 聚焦回调 */ onFocus?: () => void; /** * 校验回调 */ onValidate?: (isValid: boolean, errors: string[]) => void; }