@form-create/iview 2.5.28 → 2.5.31

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/iview",
3
- "version": "2.5.28",
3
+ "version": "2.5.31",
4
4
  "description": "iview动态表单|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,16 +43,16 @@
43
43
  },
44
44
  "homepage": "http://www.form-create.com",
45
45
  "dependencies": {
46
- "@form-create/component-ivu-checkbox": "^2.5.27",
47
- "@form-create/component-ivu-frame": "^2.5.27",
48
- "@form-create/component-ivu-group": "^2.5.28",
49
- "@form-create/component-ivu-radio": "^2.5.27",
50
- "@form-create/component-ivu-select": "^2.5.27",
51
- "@form-create/component-ivu-tree": "^2.5.27",
52
- "@form-create/component-ivu-upload": "^2.5.27",
46
+ "@form-create/component-ivu-checkbox": "^2.5.31",
47
+ "@form-create/component-ivu-frame": "^2.5.31",
48
+ "@form-create/component-ivu-group": "^2.5.31",
49
+ "@form-create/component-ivu-radio": "^2.5.31",
50
+ "@form-create/component-ivu-select": "^2.5.31",
51
+ "@form-create/component-ivu-tree": "^2.5.31",
52
+ "@form-create/component-ivu-upload": "^2.5.31",
53
53
  "@form-create/component-subform": "^2.5.25",
54
- "@form-create/core": "^2.5.28",
55
- "@form-create/utils": "^2.5.27"
54
+ "@form-create/core": "^2.5.31",
55
+ "@form-create/utils": "^2.5.31"
56
56
  },
57
57
  "publishConfig": {
58
58
  "access": "public"
@@ -64,5 +64,5 @@
64
64
  "iview": "^3.3.3",
65
65
  "v-jsoneditor": "^1.4.2"
66
66
  },
67
- "gitHead": "441d2d1b3ce8b293a0557c869c8f72f4de9ffac5"
67
+ "gitHead": "a963ffacbba371b5589112e605846dc993944dc0"
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('子表单验证未通过');
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 => {
@@ -21,11 +21,27 @@ function tidyBool(opt, name) {
21
21
  }
22
22
 
23
23
  export default {
24
- validate(call) {
25
- this.form().validate(call);
24
+ validate() {
25
+ const form = this.form();
26
+ if (form) {
27
+ return new Promise((resolve, reject) => {
28
+ form.validate().then(flag => {
29
+ flag ? resolve(true) : reject(false);
30
+ })
31
+ });
32
+ }
33
+ return new Promise(v => v());
26
34
  },
27
- validateField(field, call) {
28
- this.form().validateField(field, call);
35
+ validateField(field) {
36
+ const form = this.form();
37
+ if (form) {
38
+ return new Promise((resolve, reject) => {
39
+ form.validateField(field, e => {
40
+ e ? reject(e) : resolve(null);
41
+ })
42
+ })
43
+ }
44
+ return new Promise(v => v());
29
45
  },
30
46
  clearValidateState(ctx) {
31
47
  const fItem = this.vm.$refs[ctx.wrapRef];
package/types/config.d.ts CHANGED
@@ -96,9 +96,9 @@ export interface ApiAttrs {
96
96
 
97
97
  clearSubValidateState(fields?: string | string[]): void;
98
98
 
99
- validate(callback?: (valid?: boolean) => void): void;
99
+ validate(callback?: (valid?: boolean) => void): Promise<any>;
100
100
 
101
- validateField(field: string, callback?: (valid?: boolean) => void): void;
101
+ validateField(field: string, callback?: (valid?: boolean) => void): Promise<any>;
102
102
 
103
103
  submitBtnProps(props: Button): void;
104
104