form.d.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import type { InjectionKey, SetupContext, UnwrapRef } from 'vue';
  2. import type { RuleItem, ValidateError, ValidateFieldsError } from 'async-validator';
  3. import type { ComponentSize } from 'element-plus/es/constants';
  4. import type { FormEmits, FormItemProp, FormItemProps, FormItemValidateState, FormLabelWidthContext, FormProps } from 'element-plus/es/components/form';
  5. import type { Arrayable } from 'element-plus/es/utils';
  6. export interface FormItemRule extends RuleItem {
  7. trigger?: Arrayable<string>;
  8. }
  9. export declare type FormRules = Partial<Record<string, Arrayable<FormItemRule>>>;
  10. export declare type FormValidationResult = Promise<boolean>;
  11. export declare type FormValidateCallback = (isValid: boolean, invalidFields?: ValidateFieldsError) => void;
  12. export interface FormValidateFailure {
  13. errors: ValidateError[] | null;
  14. fields: ValidateFieldsError;
  15. }
  16. export declare type FormContext = FormProps & UnwrapRef<FormLabelWidthContext> & {
  17. emit: SetupContext<FormEmits>['emit'];
  18. addField: (field: FormItemContext) => void;
  19. removeField: (field: FormItemContext) => void;
  20. resetFields: (props?: Arrayable<FormItemProp>) => void;
  21. clearValidate: (props?: Arrayable<FormItemProp>) => void;
  22. validateField: (props?: Arrayable<FormItemProp>, callback?: FormValidateCallback) => FormValidationResult;
  23. };
  24. export interface FormItemContext extends FormItemProps {
  25. $el: HTMLDivElement | undefined;
  26. size: ComponentSize;
  27. validateState: FormItemValidateState;
  28. isGroup: boolean;
  29. labelId: string;
  30. inputIds: string[];
  31. hasLabel: boolean;
  32. addInputId: (id: string) => void;
  33. removeInputId: (id: string) => void;
  34. validate: (trigger: string, callback?: FormValidateCallback) => FormValidationResult;
  35. resetField(): void;
  36. clearValidate(): void;
  37. }
  38. export declare const formContextKey: InjectionKey<FormContext>;
  39. export declare const formItemContextKey: InjectionKey<FormItemContext>;