UNPKG

3.33 kBTypeScriptView Raw
1import { VXETableComponent } from './component'
2import { FormItemOptions } from './form-item'
3
4/**
5 * 表单
6 */
7export declare class Form extends VXETableComponent {
8 loading?: boolean;
9 data?: any;
10 span?: string | number;
11 align?: 'left' | 'center' | 'right';
12 titleAlign?: 'left' | 'center' | 'right';
13 titleWidth?: string | number;
14 titleColon?: boolean;
15 items?: FormItemOptions[];
16 rules?: FormVaildRules;
17 preventSubmit?: boolean;
18 validConfig?: {
19 autoPos?: boolean;
20 };
21
22 // methods
23 /**
24 * 重置表单
25 */
26 reset(): Promise<any>;
27 /**
28 * 对表单进行校验,参数为一个回调函数。该回调函数会在校验结束后被调用 callback(errMap)。若不传入回调函数,则会返回一个 promise
29 * @param callback 回调函数
30 */
31 validate(callback?: (errMap?: FormValidErrMapParams) => void): Promise<any>;
32 /**
33 * 对表单执行项进行校验,参数为一个回调函数。该回调函数会在校验结束后被调用 callback(errMap)。若不传入回调函数,则会返回一个 promise
34 * @param callback 回调函数
35 */
36 validateField(callback?: (errMap?: FormValidErrMapParams) => void): Promise<any>;
37 /**
38 * 手动清除校验状态,如果指定 field 则清除指定的项,否则清除整个表单
39 * @param field 字段名
40 */
41 clearValidate(field?: string): Promise<any>;
42 /**
43 * 更新项状态
44 * 当使用自定义渲染时可能会用到
45 * @param scope 插槽对象
46 */
47 updateStatus(scope: any): Promise<any>;
48 /**
49 * 获取表单项列表
50 */
51 getItems(): FormItemOptions[];
52 /**
53 * 手动切换折叠状态
54 */
55 toggleCollapse(): Promise<any>;
56 [key: string]: any;
57}
58
59export function FormValidatorMethod(params: FormValidErrParams): void;
60export function FormValidatorMethod(params: FormValidErrParams): Error;
61export function FormValidatorMethod(params: FormValidErrParams): Promise<any>;
62
63export interface FormRule {
64 /**
65 * 是否必填
66 */
67 required?: boolean;
68 /**
69 * 最小长度/值
70 */
71 min?: number;
72 /**
73 * 最大长度/值
74 */
75 max?: number;
76 /**
77 * 数据类型
78 */
79 type?: 'number' | 'string';
80 /**
81 * 使用正则表达式校验
82 */
83 pattern?: string | RegExp;
84 /**
85 * 使用自定义校验函数,接收一个 Promise
86 * @param params 参数
87 */
88 validator?: typeof FormValidatorMethod;
89 /**
90 * 提示消息
91 */
92 message?: string;
93 trigger?: 'change';
94 maxWidth?: number;
95}
96
97/**
98 * 校验规则配置项
99 */
100export interface FormVaildRules {
101 [field: string]: FormRule[];
102}
103
104export interface FormValidErrParams {
105 $form: Form,
106 itemValue: any,
107 rule: FormRule;
108 rules: FormRule[];
109 data: any;
110 property: string;
111}
112
113export interface FormValidErrMapParams {
114 [field: string]: FormValidErrParams[];
115}
116
117export interface FormOptions {
118 loading?: boolean;
119 data?: any;
120 span?: string | number;
121 size?: string;
122 align?: 'left' | 'center' | 'right';
123 titleAlign?: 'left' | 'center' | 'right';
124 titleWidth?: string | number;
125 titleColon?: boolean;
126 items?: FormItemOptions[];
127 rules?: FormVaildRules;
128 preventSubmit?: boolean;
129 validConfig?: {
130 autoPos?: boolean;
131 };
132 [key: string]: any;
133}