UNPKG

@fesjs/fes-design

Version:
107 lines (106 loc) 3.58 kB
import type { CSSProperties, ExtractPropTypes, PropType, Ref, ToRefs } from 'vue'; import type { RuleItem } from 'async-validator'; import type { ExtractPublicPropTypes } from '../_util/interface'; export interface FormRuleItem extends RuleItem { trigger?: string | string[]; } export type FormRules = Record<string, FormRuleItem | FormRuleItem[]>; export declare const formProps: { readonly model: ObjectConstructor; readonly rules: { readonly type: PropType<FormRules>; readonly default: () => FormRules; }; readonly layout: { readonly type: PropType<"horizontal" | "inline">; readonly default: "horizontal"; }; readonly span: { readonly type: NumberConstructor; readonly default: 6; }; readonly inlineItemGap: { readonly type: PropType<string | number>; readonly default: 11; }; readonly inlineItemWidth: PropType<string | number>; readonly labelPosition: { readonly type: PropType<"left" | "right" | "top">; readonly default: "left"; }; readonly labelWidth: PropType<string | number>; readonly labelClass: StringConstructor; readonly showMessage: { readonly type: BooleanConstructor; readonly default: true; }; readonly disabled: { readonly type: BooleanConstructor; readonly default: false; }; readonly align: { readonly type: PropType<"center" | "flex-start" | "baseline">; readonly default: "flex-start"; }; }; export type FormProps = ExtractPublicPropTypes<typeof formProps>; export declare const formItemProps: { readonly prop: StringConstructor; readonly value: { readonly type: PropType<string | number | boolean | object>; readonly default: undefined; }; readonly label: StringConstructor; readonly labelWidth: PropType<string | number>; readonly labelClass: StringConstructor; readonly contentStyle: { readonly type: PropType<string | CSSProperties | CSSProperties[]>; readonly default: () => {}; }; readonly span: { readonly type: NumberConstructor; readonly default: number; }; readonly showMessage: { readonly type: PropType<boolean>; readonly default: boolean; }; readonly disabled: { readonly type: PropType<boolean>; readonly default: () => boolean | null | undefined; }; readonly rules: { readonly type: PropType<FormRuleItem[]>; readonly default: () => FormRuleItem[]; }; readonly align: { readonly type: PropType<"center" | "flex-start" | "baseline">; readonly default: string; }; }; export type FormItemProps = ExtractPublicPropTypes<typeof formItemProps>; export type AddFieldType = (formItemProp: string, formItemContext: Field) => void; export type removeField = (formItemProp: string) => void; export type PropsType = Partial<ExtractPropTypes<typeof formProps>>; export type FormInjectKey = ToRefs<PropsType> & { addField: AddFieldType; removeField: removeField; }; export interface FormItemInject { validate: (eventName: string) => void; setRuleDefaultType?: (ruleType: string) => void; isError?: Ref<boolean>; isFormDisabled?: Ref<boolean>; } export interface Field { prop: string; value: any; rules: FormRuleItem[]; validateRules: (trigger?: string | string[]) => Promise<any>; clearValidate: () => void; resetField: () => void; } export interface ValidateResult { name: string; errors: []; }