@form-create/element-ui 2.5.28 → 2.5.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@form-create/element-ui",
3
- "version": "2.5.28",
3
+ "version": "2.5.29",
4
4
  "description": "element-ui动态表单|form-create is a form generation component that can generate dynamic rendering, data collection, verification and submission functions through JSON. Supports 3 UI frameworks, and supports the generation of any Vue components. Built-in 20 kinds of commonly used form components and custom components, no matter how complex forms can be easily handled.",
5
5
  "main": "./dist/form-create.min.js",
6
6
  "module": "./dist/form-create.min.js",
@@ -43,15 +43,15 @@
43
43
  },
44
44
  "homepage": "http://www.form-create.com",
45
45
  "dependencies": {
46
- "@form-create/component-elm-checkbox": "^2.5.27",
46
+ "@form-create/component-elm-checkbox": "^2.5.29",
47
47
  "@form-create/component-elm-frame": "^2.5.27",
48
48
  "@form-create/component-elm-group": "^2.5.28",
49
49
  "@form-create/component-elm-radio": "^2.5.27",
50
50
  "@form-create/component-elm-select": "^2.5.27",
51
51
  "@form-create/component-elm-tree": "^2.5.27",
52
- "@form-create/component-elm-upload": "^2.5.27",
52
+ "@form-create/component-elm-upload": "^2.5.29",
53
53
  "@form-create/component-subform": "^2.5.25",
54
- "@form-create/core": "^2.5.28",
54
+ "@form-create/core": "^2.5.29",
55
55
  "@form-create/utils": "^2.5.27"
56
56
  },
57
57
  "publishConfig": {
@@ -64,5 +64,5 @@
64
64
  "element-ui": "^2.15.9",
65
65
  "v-jsoneditor": "^1.4.2"
66
66
  },
67
- "gitHead": "441d2d1b3ce8b293a0557c869c8f72f4de9ffac5"
67
+ "gitHead": "c213294e1e30ab883ab3d34687decbd6da3fbd78"
68
68
  }
package/src/core/api.js CHANGED
@@ -13,75 +13,42 @@ function tidyBtnProp(btn, def) {
13
13
  export default function extendApi(api, h) {
14
14
  extend(api, {
15
15
  validate(callback) {
16
- let flag;
17
- const forms = api.children;
18
- let len = forms.length;
19
- const validate = () => {
20
- h.$manager.validate((...args) => {
21
- if (!args[0] || !flag) {
22
- flag = args;
23
- }
24
- callback && callback(...flag);
25
- });
26
- };
27
-
28
- const validFn = (args) => {
29
- setTimeout(() => {
30
- if (!args[0]) {
31
- if (!flag) {
32
- flag = args;
33
- }
34
- }
35
- if (!--len) {
36
- validate();
37
- }
38
- });
39
- };
40
-
41
- forms.forEach(form => {
42
- form.validate((...args) => validFn(args))
43
- })
44
-
45
- if (!len) {
46
- validate();
47
- }
16
+ return new Promise((resolve, reject) => {
17
+ const forms = api.children;
18
+ const all = [h.$manager.validate()];
19
+ forms.forEach(v => {
20
+ all.push(v.validate());
21
+ })
22
+ Promise.all(all).then(() => {
23
+ resolve(true);
24
+ callback && callback(true);
25
+ }).catch((e) => {
26
+ reject(e);
27
+ callback && callback(e);
28
+ h.vm.$emit('validate-fail', e, {api});
29
+ })
30
+ });
48
31
  },
49
32
  validateField: (field, callback) => {
50
- const ctx = h.getFieldCtx(field);
51
- if (!ctx) return;
52
- const sub = h.subForm[ctx.id];
53
- let len = 0;
54
- let flag;
55
- const validate = () => {
56
- h.$manager.validateField(ctx.id, (...args) => {
57
- if (args[0]) {
58
- flag = args;
59
- } else if (flag) {
60
- return callback && callback('子表单验证未通过', flag[1]);
61
- }
62
- callback && callback(...flag || args);
63
- });
64
- };
65
- const validFn = (args) => {
66
- setTimeout(() => {
67
- if (!args[0]) {
68
- if (!flag) {
69
- flag = args;
70
- }
71
- }
72
- if (!--len) {
73
- validate();
74
- }
75
- });
76
- };
77
- sub && toArray(sub).forEach(form => {
78
- len++;
79
- form.validate((...args) => validFn(args))
33
+ return new Promise((resolve, reject) => {
34
+ const ctx = h.getFieldCtx(field);
35
+ if (!ctx) return;
36
+ const sub = h.subForm[ctx.id];
37
+ const all = [h.$manager.validateField(ctx.id)];
38
+ toArray(sub).forEach(v => {
39
+ all.push(v.validate().catch(() => {
40
+ return Promise.reject('子表单验证未通过');
41
+ }));
42
+ })
43
+ Promise.all(all).then(() => {
44
+ resolve(null);
45
+ callback && callback(null);
46
+ }).catch((e) => {
47
+ reject(e);
48
+ callback && callback(e);
49
+ h.vm.$emit('validate-field-fail', e, {field, api});
50
+ })
80
51
  });
81
-
82
- if (!len) {
83
- validate();
84
- }
85
52
  },
86
53
  clearValidateState(fields, clearSub = true) {
87
54
  api.helper.tidyFields(fields).forEach(field => {
@@ -32,11 +32,23 @@ function tidyBool(opt, name) {
32
32
  }
33
33
 
34
34
  export default {
35
- validate(call) {
36
- this.form().validate(call);
35
+ validate() {
36
+ const form = this.form();
37
+ if (form) {
38
+ return form.validate();
39
+ }
40
+ return new Promise(v => v());
37
41
  },
38
- validateField(field, call) {
39
- this.form().validateField(field, call);
42
+ validateField(field) {
43
+ const form = this.form();
44
+ if (form) {
45
+ return new Promise((resolve, reject) => {
46
+ form.validateField(field, e => {
47
+ e ? reject(e) : resolve(null);
48
+ });
49
+ })
50
+ }
51
+ return new Promise(v => v());
40
52
  },
41
53
  clearValidateState(ctx) {
42
54
  const fItem = this.vm.$refs[ctx.wrapRef];
package/types/config.d.ts CHANGED
@@ -104,9 +104,9 @@ export interface ApiAttrs {
104
104
 
105
105
  clearSubValidateState(fields?: string | string[]): void;
106
106
 
107
- validate(callback?: ValidateCallback): void;
107
+ validate(callback?: ValidateCallback): Promise<any>;
108
108
 
109
- validateField(field: string, callback?: ValidateFieldCallback): void;
109
+ validateField(field: string, callback?: ValidateFieldCallback): Promise<any>;
110
110
 
111
111
  submitBtnProps(props: Button): void;
112
112