@fesjs/fes-design
Version:
fes-design for PC
107 lines (106 loc) • 3.58 kB
TypeScript
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: [];
}