strive-element
Version:
Vue3 st-element components
47 lines (46 loc) • 1.44 kB
TypeScript
import type { InjectionKey } from 'vue';
import type { RuleItem, ValidateError, ValidateFieldsError } from 'async-validator';
export interface FormItemProps {
label?: string;
prop?: string;
}
export interface FormItemRule extends RuleItem {
trigger?: string;
}
export type FormRules = Record<string, FormItemRule[]>;
export interface FormProps {
model: Record<string, any>;
rules: FormRules;
}
export interface FormContext extends FormProps {
addField: (field: FormItemContext) => void;
removeField: (field: FormItemContext) => void;
}
export interface FormValidateFailure {
errors: ValidateError[] | null;
fields: ValidateFieldsError;
}
export interface ValidateStatusProp {
state: 'init' | 'success' | 'error' | 'loading';
errorMsg: string;
loading: boolean;
}
export interface FormItemContext {
prop: string;
validate: (trigger?: string) => Promise<any>;
resetField(): void;
clearValidate(): void;
}
export declare const formContextKey: InjectionKey<FormContext>;
export declare const formItemContextKey: InjectionKey<FormItemContext>;
export interface FormInstance {
validate: () => Promise<any>;
resetFields: (props?: string[]) => void;
clearValidate: (props?: string[]) => void;
}
export interface FormItemInstance {
validateStatus: ValidateStatusProp;
validate: (trigger?: string) => Promise<any>;
resetField(): void;
clearValidate(): void;
}