UNPKG

tdesign-mobile-vue

Version:
139 lines (138 loc) 4.6 kB
import { IsEmailOptions } from 'validator/es/lib/isEmail'; import { IsURLOptions } from 'validator/es/lib/isURL'; import { TNode, FormResetEvent, FormSubmitEvent } from '../common'; export interface TdFormProps<FormData extends Data = Data> { colon?: boolean; contentAlign?: 'left' | 'right'; data?: FormData; disabled?: boolean; errorMessage?: FormErrorMessage; labelAlign?: 'left' | 'right' | 'top'; labelWidth?: string | number; preventSubmitDefault?: boolean; requiredMark?: boolean; resetType?: 'empty' | 'initial'; rules?: FormRules<FormData>; scrollToFirstError?: '' | 'smooth' | 'auto'; showErrorMessage?: boolean; submitWithWarningMessage?: boolean; onReset?: (context: { e?: FormResetEvent; }) => void; onSubmit?: (context: SubmitContext<FormData>) => void; onValidate?: (result: ValidateResultContext<FormData>) => void; } export interface FormInstanceFunctions<FormData extends Data = Data> { clearValidate: (fields?: Array<keyof FormData>) => void; reset: (params?: FormResetParams<FormData>) => void; setValidateMessage: (message: FormValidateMessage<FormData>) => void; submit: (params?: { showErrorMessage?: boolean; }) => void; validate: (params?: FormValidateParams) => Promise<FormValidateResult<FormData>>; validateOnly: (params?: Pick<FormValidateParams, 'fields' | 'trigger'>) => Promise<FormValidateResult<FormData>>; } export interface TdFormItemProps { arrow?: boolean; contentAlign?: 'left' | 'right'; for?: string; help?: string | TNode; label?: string | TNode; labelAlign?: 'left' | 'right' | 'top'; labelWidth?: string | number; name?: string | number; requiredMark?: boolean; rules?: Array<FormRule>; showErrorMessage?: boolean; } export interface FormRule { boolean?: boolean; date?: boolean | IsDateOptions; email?: boolean | IsEmailOptions; enum?: Array<string>; idcard?: boolean; len?: number | boolean; max?: number | boolean; message?: string; min?: number | boolean; number?: boolean; pattern?: RegExp; required?: boolean; telnumber?: boolean; trigger?: 'change' | 'blur'; 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; } export declare type FormRules<T extends Data> = { [field in keyof T]?: Array<FormRule>; }; export interface SubmitContext<T extends Data = Data> { e?: FormSubmitEvent; validateResult: FormValidateResult<T>; firstError?: string; fields?: any; } export declare type FormValidateResult<T> = boolean | ValidateResultObj<T>; export declare type ValidateResultObj<T> = { [key in keyof T]: boolean | ValidateResultList; }; export declare type ValidateResultList = Array<AllValidateResult>; export declare type AllValidateResult = CustomValidateObj | ValidateResultType; export interface ValidateResultType extends FormRule { result: boolean; } export declare type ValidateResult<T> = { [key in keyof T]: boolean | ErrorList; }; export declare type ErrorList = Array<FormRule>; export declare type ValidateResultContext<T extends Data> = Omit<SubmitContext<T>, 'e'>; export interface FormResetParams<FormData> { type?: 'initial' | 'empty'; fields?: Array<keyof FormData>; } export declare type FormValidateMessage<FormData> = { [field in keyof FormData]: FormItemValidateMessage[]; }; export interface FormItemValidateMessage { type: 'warning' | 'error'; message: string; } export interface FormValidateParams { fields?: Array<string>; showErrorMessage?: boolean; trigger?: ValidateTriggerType; } export declare type ValidateTriggerType = 'blur' | 'change' | 'all'; export declare type Data = { [key: string]: any; }; export interface IsDateOptions { format: string; strictMode: boolean; delimiters: string[]; } export declare type CustomValidator = (val: ValueType) => CustomValidateResolveType | Promise<CustomValidateResolveType>; export declare type CustomValidateResolveType = boolean | CustomValidateObj; export interface CustomValidateObj { result: boolean; message: string; type?: 'error' | 'warning' | 'success'; } export declare type ValueType = any;