import { IsEmailOptions } from 'validator/es/lib/isEmail'; import { IsURLOptions } from 'validator/es/lib/isURL'; export interface TdFormProps { colon?: { type: BooleanConstructor; value?: boolean; }; data?: { type: ObjectConstructor; value?: FormData; }; errorMessage?: { type: ObjectConstructor; value?: FormErrorMessage; }; labelAlign?: { type: StringConstructor; value?: 'left' | 'right' | 'top'; }; labelWidth?: { type: null; value?: string | number; }; requiredMark?: { type: BooleanConstructor; value?: boolean; }; requiredMarkPosition?: { type: StringConstructor; value?: 'left' | 'right'; }; resetType?: { type: StringConstructor; value?: 'empty' | 'initial'; }; rules?: { type: ObjectConstructor; value?: FormRules; }; scrollToFirstError?: { type: StringConstructor; value?: '' | 'smooth' | 'auto'; }; showErrorMessage?: { type: BooleanConstructor; value?: boolean; }; submitWithWarningMessage?: { type: BooleanConstructor; value?: boolean; }; } export interface FormInstanceFunctions { clearValidate: { type: undefined; value?: (fields?: Array) => void; required?: boolean; }; reset: { type: undefined; value?: (params?: FormResetParams) => void; required?: boolean; }; setValidateMessage: { type: undefined; value?: (message: FormValidateMessage) => void; required?: boolean; }; submit: { type: undefined; value?: (params?: { showErrorMessage?: boolean; }) => void; required?: boolean; }; validate: { type: undefined; value?: (params?: FormValidateParams) => Promise>; required?: boolean; }; } export interface FormRule { boolean?: boolean; date?: boolean | IsDateOptions; email?: boolean | IsEmailOptions; enum?: Array; idcard?: boolean; len?: number | boolean; max?: number | boolean; message?: string; min?: number | boolean; number?: boolean; pattern?: RegExp | string; required?: boolean; telnumber?: boolean; trigger?: ValidateTriggerType; type?: 'error' | 'warning'; url?: boolean | IsURLOptions; validator?: CustomValidator; whitespace?: boolean; } export interface FormErrorMessage { boolean?: string; date?: string; enum?: string; idcard?: string; len?: string; max?: string; min?: string; number?: string; pattern?: string; required?: string; telnumber?: string; url?: string; validator?: string; whitespace?: string; } export declare type FormRules = { [field in keyof T]?: Array; }; export interface FormResetParams { type?: 'initial' | 'empty'; fields?: Array; } export declare type FormValidateMessage = { [field in keyof FormData]: FormItemValidateMessage[]; }; export interface FormItemValidateMessage { type: 'warning' | 'error'; message: string; } export interface FormValidateParams { fields?: Array; showErrorMessage?: boolean; trigger?: ValidateTriggerType; } export declare type ValidateTriggerType = 'blur' | 'change' | 'submit' | 'all'; export declare type FormValidateResult = boolean | ValidateResultObj; export declare type ValidateResultObj = { [key in keyof T]: boolean | ValidateResultList; }; export declare type ValidateResultList = Array; export declare type AllValidateResult = CustomValidateObj | ValidateResultType; export interface ValidateResultType extends FormRule { result: boolean; } export declare type Data = { [key: string]: any; }; export interface IsDateOptions { format: string; strictMode: boolean; delimiters: string[]; } export declare type CustomValidator = (val: ValueType, context?: { formData: Data; name: string; }) => CustomValidateResolveType | Promise; export declare type CustomValidateResolveType = boolean | CustomValidateObj; export interface CustomValidateObj { result: boolean; message: string; type?: 'error' | 'warning' | 'success'; } export declare type ValueType = any;