amis 1.8.0-beta.0 → 1.8.0-beta.3

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.
Files changed (217) hide show
  1. package/lib/SchemaRenderer.js +19 -3
  2. package/lib/SchemaRenderer.js.map +2 -2
  3. package/lib/WithRootStore.d.ts +18 -0
  4. package/lib/WithStore.js +2 -1
  5. package/lib/WithStore.js.map +2 -2
  6. package/lib/actions/CmptAction.js +14 -3
  7. package/lib/actions/CmptAction.js.map +2 -2
  8. package/lib/components/BarCode.js +1 -1
  9. package/lib/components/BarCode.js.map +2 -2
  10. package/lib/components/DatePicker.d.ts +3 -0
  11. package/lib/components/DatePicker.js +56 -11
  12. package/lib/components/DatePicker.js.map +2 -2
  13. package/lib/components/DateRangePicker.d.ts +92 -84
  14. package/lib/components/DateRangePicker.js +198 -5
  15. package/lib/components/DateRangePicker.js.map +2 -2
  16. package/lib/components/MonthRangePicker.d.ts +84 -84
  17. package/lib/components/Progress.js +12 -9
  18. package/lib/components/Progress.js.map +2 -2
  19. package/lib/components/Radios.d.ts +1 -1
  20. package/lib/components/Radios.js +3 -5
  21. package/lib/components/Radios.js.map +2 -2
  22. package/lib/components/Range.d.ts +2 -2
  23. package/lib/components/Range.js +24 -11
  24. package/lib/components/Range.js.map +2 -2
  25. package/lib/components/Steps.d.ts +6 -0
  26. package/lib/components/Steps.js +13 -9
  27. package/lib/components/Steps.js.map +2 -2
  28. package/lib/components/calendar/Calendar.js +16 -12
  29. package/lib/components/calendar/Calendar.js.map +2 -2
  30. package/lib/components/calendar/YearsView.js +3 -3
  31. package/lib/components/calendar/YearsView.js.map +2 -2
  32. package/lib/components/formula/Editor.d.ts +3 -1
  33. package/lib/components/formula/Editor.js +20 -2
  34. package/lib/components/formula/Editor.js.map +2 -2
  35. package/lib/components/formula/Picker.d.ts +5 -0
  36. package/lib/components/formula/Picker.js +19 -4
  37. package/lib/components/formula/Picker.js.map +2 -2
  38. package/lib/factory.d.ts +4 -0
  39. package/lib/factory.js +8 -2
  40. package/lib/factory.js.map +2 -2
  41. package/lib/index.js +1 -1
  42. package/lib/locale/de-DE.js +13 -0
  43. package/lib/locale/de-DE.js.map +2 -2
  44. package/lib/locale/en-US.js +13 -0
  45. package/lib/locale/en-US.js.map +2 -2
  46. package/lib/locale/zh-CN.js +13 -0
  47. package/lib/locale/zh-CN.js.map +2 -2
  48. package/lib/renderers/Action.d.ts +2 -0
  49. package/lib/renderers/Action.js +23 -5
  50. package/lib/renderers/Action.js.map +2 -2
  51. package/lib/renderers/Carousel.d.ts +1 -0
  52. package/lib/renderers/Carousel.js +13 -1
  53. package/lib/renderers/Carousel.js.map +2 -2
  54. package/lib/renderers/Dialog.d.ts +4 -0
  55. package/lib/renderers/Dialog.js +4 -3
  56. package/lib/renderers/Dialog.js.map +2 -2
  57. package/lib/renderers/DropDownButton.d.ts +2 -0
  58. package/lib/renderers/DropDownButton.js +13 -4
  59. package/lib/renderers/DropDownButton.js.map +2 -2
  60. package/lib/renderers/Form/Checkboxes.d.ts +2 -2
  61. package/lib/renderers/Form/Checkboxes.js +2 -6
  62. package/lib/renderers/Form/Checkboxes.js.map +2 -2
  63. package/lib/renderers/Form/Combo.js +3 -2
  64. package/lib/renderers/Form/Combo.js.map +2 -2
  65. package/lib/renderers/Form/InputCity.d.ts +3 -0
  66. package/lib/renderers/Form/InputCity.js +44 -2
  67. package/lib/renderers/Form/InputCity.js.map +2 -2
  68. package/lib/renderers/Form/InputDateRange.d.ts +5 -0
  69. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  70. package/lib/renderers/Form/InputFile.js +6 -3
  71. package/lib/renderers/Form/InputFile.js.map +2 -2
  72. package/lib/renderers/Form/InputFormula.d.ts +4 -0
  73. package/lib/renderers/Form/InputFormula.js +2 -2
  74. package/lib/renderers/Form/InputFormula.js.map +2 -2
  75. package/lib/renderers/Form/InputImage.js +6 -3
  76. package/lib/renderers/Form/InputImage.js.map +2 -2
  77. package/lib/renderers/Form/InputRange.js +13 -14
  78. package/lib/renderers/Form/InputRange.js.map +2 -2
  79. package/lib/renderers/Form/InputTable.js +4 -2
  80. package/lib/renderers/Form/InputTable.js.map +2 -2
  81. package/lib/renderers/Form/Item.d.ts +11 -6
  82. package/lib/renderers/Form/index.js +1 -1
  83. package/lib/renderers/Form/index.js.map +2 -2
  84. package/lib/renderers/Form/wrapControl.d.ts +9 -0
  85. package/lib/renderers/Form/wrapControl.js +1 -1
  86. package/lib/renderers/Form/wrapControl.js.map +2 -2
  87. package/lib/renderers/Nav.js +2 -2
  88. package/lib/renderers/Nav.js.map +2 -2
  89. package/lib/renderers/Page.js +2 -3
  90. package/lib/renderers/Page.js.map +2 -2
  91. package/lib/renderers/Progress.d.ts +1 -1
  92. package/lib/renderers/Progress.js +1 -1
  93. package/lib/renderers/Progress.js.map +2 -2
  94. package/lib/renderers/Steps.d.ts +8 -0
  95. package/lib/renderers/Steps.js +2 -2
  96. package/lib/renderers/Steps.js.map +2 -2
  97. package/lib/renderers/Table/TableRow.js +1 -1
  98. package/lib/renderers/Table/TableRow.js.map +2 -2
  99. package/lib/renderers/Table/index.js +7 -3
  100. package/lib/renderers/Table/index.js.map +2 -2
  101. package/lib/renderers/Tabs.d.ts +4 -0
  102. package/lib/renderers/Tabs.js +22 -6
  103. package/lib/renderers/Tabs.js.map +2 -2
  104. package/lib/renderers/Wizard.d.ts +6 -3
  105. package/lib/renderers/Wizard.js +257 -152
  106. package/lib/renderers/Wizard.js.map +2 -2
  107. package/lib/store/index.d.ts +5 -0
  108. package/lib/store/index.js +14 -0
  109. package/lib/store/index.js.map +2 -2
  110. package/lib/store/table.js +4 -4
  111. package/lib/store/table.js.map +2 -2
  112. package/lib/themes/ang-ie11.css +194 -23
  113. package/lib/themes/ang.css +193 -22
  114. package/lib/themes/ang.css.map +1 -1
  115. package/lib/themes/antd-ie11.css +194 -23
  116. package/lib/themes/antd.css +193 -22
  117. package/lib/themes/antd.css.map +1 -1
  118. package/lib/themes/cxd-ie11.css +194 -23
  119. package/lib/themes/cxd.css +193 -22
  120. package/lib/themes/cxd.css.map +1 -1
  121. package/lib/themes/dark-ie11.css +194 -23
  122. package/lib/themes/dark.css +193 -22
  123. package/lib/themes/dark.css.map +1 -1
  124. package/lib/themes/default-ie11.css +194 -23
  125. package/lib/themes/default.css +193 -22
  126. package/lib/themes/default.css.map +1 -1
  127. package/lib/types.d.ts +1 -1
  128. package/lib/types.js.map +1 -1
  129. package/lib/utils/columnsSplit.d.ts +1 -0
  130. package/lib/utils/columnsSplit.js +40 -0
  131. package/lib/utils/columnsSplit.js.map +13 -0
  132. package/lib/utils/debug.d.ts +1 -1
  133. package/lib/utils/debug.js +16 -22
  134. package/lib/utils/debug.js.map +2 -2
  135. package/package.json +1 -1
  136. package/schema.json +181 -30
  137. package/scss/_properties.scss +2 -2
  138. package/scss/components/_barcode.scss +1 -1
  139. package/scss/components/_carousel.scss +1 -0
  140. package/scss/components/_debug.scss +3 -3
  141. package/scss/components/_formula.scss +18 -0
  142. package/scss/components/_progress.scss +3 -8
  143. package/scss/components/_steps.scss +199 -8
  144. package/scss/components/form/_date.scss +14 -0
  145. package/scss/components/form/_editor.scss +2 -1
  146. package/sdk/ang-ie11.css +234 -25
  147. package/sdk/ang.css +233 -24
  148. package/sdk/antd-ie11.css +234 -25
  149. package/sdk/antd.css +233 -24
  150. package/sdk/barcode.js +51 -51
  151. package/sdk/charts.js +14 -14
  152. package/sdk/codemirror.js +7 -7
  153. package/sdk/color-picker.js +65 -65
  154. package/sdk/cropperjs.js +2 -2
  155. package/sdk/cxd-ie11.css +234 -25
  156. package/sdk/cxd.css +233 -24
  157. package/sdk/dark-ie11.css +234 -25
  158. package/sdk/dark.css +233 -24
  159. package/sdk/exceljs.js +1 -1
  160. package/sdk/locale/de-DE.js +13 -0
  161. package/sdk/markdown.js +69 -69
  162. package/sdk/papaparse.js +1 -1
  163. package/sdk/renderers/Form/CityDB.js +1 -1
  164. package/sdk/rest.js +17 -17
  165. package/sdk/rich-text.js +62 -62
  166. package/sdk/sdk-ie11.css +234 -25
  167. package/sdk/sdk.css +233 -24
  168. package/sdk/sdk.js +1290 -1288
  169. package/sdk/thirds/hls.js/hls.js +1 -1
  170. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  171. package/sdk/tinymce.js +57 -57
  172. package/src/SchemaRenderer.tsx +32 -14
  173. package/src/WithStore.tsx +3 -1
  174. package/src/actions/CmptAction.ts +18 -0
  175. package/src/components/BarCode.tsx +2 -2
  176. package/src/components/DatePicker.tsx +77 -22
  177. package/src/components/DateRangePicker.tsx +198 -4
  178. package/src/components/Progress.tsx +8 -12
  179. package/src/components/Radios.tsx +6 -17
  180. package/src/components/Range.tsx +26 -12
  181. package/src/components/Steps.tsx +28 -27
  182. package/src/components/calendar/Calendar.tsx +17 -12
  183. package/src/components/calendar/YearsView.tsx +3 -4
  184. package/src/components/formula/Editor.tsx +34 -3
  185. package/src/components/formula/Picker.tsx +28 -1
  186. package/src/factory.tsx +15 -2
  187. package/src/locale/de-DE.ts +13 -0
  188. package/src/locale/en-US.ts +13 -0
  189. package/src/locale/zh-CN.ts +13 -0
  190. package/src/renderers/Action.tsx +22 -1
  191. package/src/renderers/Carousel.tsx +8 -0
  192. package/src/renderers/Dialog.tsx +17 -3
  193. package/src/renderers/DropDownButton.tsx +14 -3
  194. package/src/renderers/Form/Checkboxes.tsx +5 -18
  195. package/src/renderers/Form/Combo.tsx +2 -3
  196. package/src/renderers/Form/InputCity.tsx +33 -4
  197. package/src/renderers/Form/InputDateRange.tsx +8 -1
  198. package/src/renderers/Form/InputFile.tsx +7 -3
  199. package/src/renderers/Form/InputFormula.tsx +7 -0
  200. package/src/renderers/Form/InputImage.tsx +7 -3
  201. package/src/renderers/Form/InputRange.tsx +18 -16
  202. package/src/renderers/Form/InputTable.tsx +6 -2
  203. package/src/renderers/Form/index.tsx +1 -1
  204. package/src/renderers/Form/wrapControl.tsx +1 -1
  205. package/src/renderers/Nav.tsx +1 -1
  206. package/src/renderers/Page.tsx +1 -2
  207. package/src/renderers/Progress.tsx +2 -2
  208. package/src/renderers/Steps.tsx +14 -0
  209. package/src/renderers/Table/TableRow.tsx +1 -1
  210. package/src/renderers/Table/index.tsx +11 -2
  211. package/src/renderers/Tabs.tsx +75 -28
  212. package/src/renderers/Wizard.tsx +154 -93
  213. package/src/store/index.ts +20 -0
  214. package/src/store/table.ts +4 -4
  215. package/src/types.ts +3 -1
  216. package/src/utils/columnsSplit.tsx +57 -0
  217. package/src/utils/debug.tsx +17 -24
@@ -45,7 +45,7 @@ var Wizard = /** @class */ (function (_super) {
45
45
  }
46
46
  })
47
47
  .then(function (value) {
48
- onInit && onInit(store.data);
48
+ _this.handleInitEvent(store.data);
49
49
  var state = {
50
50
  currentStep: typeof _this.props.startStep === 'string'
51
51
  ? parseInt((0, tpl_builtin_1.tokenize)(_this.props.startStep, _this.props.data))
@@ -74,7 +74,7 @@ var Wizard = /** @class */ (function (_super) {
74
74
  currentStep: typeof this.props.startStep === 'string'
75
75
  ? parseInt((0, tpl_builtin_1.tokenize)(this.props.startStep, this.props.data))
76
76
  : 1
77
- }, function () { return onInit && onInit(store.data); });
77
+ }, function () { return _this.handleInitEvent(store.data); });
78
78
  }
79
79
  var dom = (0, react_dom_1.findDOMNode)(this);
80
80
  if (!(dom instanceof Element)) {
@@ -105,6 +105,37 @@ var Wizard = /** @class */ (function (_super) {
105
105
  parent && parent.removeEventListener('scroll', this.affixDetect);
106
106
  this.unSensor && this.unSensor();
107
107
  };
108
+ Wizard.prototype.dispatchEvent = function (action, value) {
109
+ var _a;
110
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
111
+ var _b, dispatchEvent, data, rendererEvent;
112
+ return (0, tslib_1.__generator)(this, function (_c) {
113
+ switch (_c.label) {
114
+ case 0:
115
+ _b = this.props, dispatchEvent = _b.dispatchEvent, data = _b.data;
116
+ return [4 /*yield*/, dispatchEvent(action, (0, helper_1.createObject)(data, value ? { value: value } : {}))];
117
+ case 1:
118
+ rendererEvent = _c.sent();
119
+ return [2 /*return*/, (_a = rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) !== null && _a !== void 0 ? _a : false];
120
+ }
121
+ });
122
+ });
123
+ };
124
+ Wizard.prototype.handleInitEvent = function (data) {
125
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
126
+ var onInit;
127
+ return (0, tslib_1.__generator)(this, function (_a) {
128
+ switch (_a.label) {
129
+ case 0:
130
+ onInit = this.props.onInit;
131
+ return [4 /*yield*/, this.dispatchEvent('inited', data)];
132
+ case 1:
133
+ (_a.sent()) && onInit && onInit(data);
134
+ return [2 /*return*/];
135
+ }
136
+ });
137
+ });
138
+ };
108
139
  Wizard.prototype.affixDetect = function () {
109
140
  if (!this.props.affixFooter ||
110
141
  !this.affixDom.current ||
@@ -128,14 +159,28 @@ var Wizard = /** @class */ (function (_super) {
128
159
  affixed ? affixDom.classList.add('in') : affixDom.classList.remove('in');
129
160
  };
130
161
  Wizard.prototype.gotoStep = function (index) {
131
- var steps = this.props.steps || [];
132
- index = Math.max(Math.min(steps.length, index), 1);
133
- if (index != this.state.currentStep) {
134
- this.setState({
135
- currentStep: index,
136
- completeStep: Math.max(this.state.completeStep, index - 1)
162
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
163
+ var steps;
164
+ return (0, tslib_1.__generator)(this, function (_a) {
165
+ switch (_a.label) {
166
+ case 0:
167
+ steps = this.props.steps || [];
168
+ index = Math.max(Math.min(steps.length, index), 1);
169
+ if (!(index != this.state.currentStep)) return [3 /*break*/, 2];
170
+ return [4 /*yield*/, this.dispatchEvent('stepChange')];
171
+ case 1:
172
+ if (_a.sent()) {
173
+ return [2 /*return*/];
174
+ }
175
+ this.setState({
176
+ currentStep: index,
177
+ completeStep: Math.max(this.state.completeStep, index - 1)
178
+ });
179
+ _a.label = 2;
180
+ case 2: return [2 /*return*/];
181
+ }
137
182
  });
138
- }
183
+ });
139
184
  };
140
185
  Wizard.prototype.formRef = function (ref) {
141
186
  if (ref) {
@@ -235,8 +280,8 @@ var Wizard = /** @class */ (function (_super) {
235
280
  Wizard.prototype.handleAction = function (e, action, data, throwErrors, delegate) {
236
281
  var _this = this;
237
282
  if (throwErrors === void 0) { throwErrors = false; }
238
- var _a = this.props, onAction = _a.onAction, store = _a.store, env = _a.env;
239
- if (action.actionType === 'next' || action.type === 'submit') {
283
+ var _a = this.props, onAction = _a.onAction, store = _a.store, env = _a.env, steps = _a.steps;
284
+ if (action.actionType === 'next' || action.type === 'submit' || action.actionType === 'step-submit') {
240
285
  this.form.doAction((0, tslib_1.__assign)((0, tslib_1.__assign)({}, action), { actionType: 'submit' }), data);
241
286
  }
242
287
  else if (action.actionType === 'prev') {
@@ -294,6 +339,15 @@ var Wizard = /** @class */ (function (_super) {
294
339
  else if (action.actionType === 'reload') {
295
340
  action.target && this.reloadTarget(action.target, data);
296
341
  }
342
+ else if (action.actionType === 'goto-step') {
343
+ var targetStep = data.step;
344
+ if (targetStep !== undefined && targetStep <= steps.length && targetStep >= 0) {
345
+ this.gotoStep(data.step);
346
+ }
347
+ }
348
+ else if (action.actionType === 'submit') {
349
+ this.finalSubmit();
350
+ }
297
351
  else if (onAction) {
298
352
  onAction(e, action, data, throwErrors, delegate || this.context);
299
353
  }
@@ -322,8 +376,24 @@ var Wizard = /** @class */ (function (_super) {
322
376
  });
323
377
  };
324
378
  Wizard.prototype.handleChange = function (values) {
325
- var store = this.props.store;
326
- store.updateData(values);
379
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
380
+ var store, previous, final;
381
+ return (0, tslib_1.__generator)(this, function (_a) {
382
+ switch (_a.label) {
383
+ case 0:
384
+ store = this.props.store;
385
+ previous = store.data;
386
+ final = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, previous), values);
387
+ return [4 /*yield*/, this.dispatchEvent('change', final)];
388
+ case 1:
389
+ if (_a.sent()) {
390
+ return [2 /*return*/];
391
+ }
392
+ store.updateData(values);
393
+ return [2 /*return*/];
394
+ }
395
+ });
396
+ });
327
397
  };
328
398
  Wizard.prototype.handleInit = function (values) {
329
399
  var step = this.state.currentStep;
@@ -342,150 +412,185 @@ var Wizard = /** @class */ (function (_super) {
342
412
  });
343
413
  store.updateData(reseted);
344
414
  };
345
- // 接管里面 form 的提交,不能直接让 form 提交,因为 wizard 自己需要知道进度。
346
- Wizard.prototype.handleSubmit = function (values, action) {
347
- var _a, _b;
348
- var _this = this;
349
- var _c = this.props, store = _c.store, steps = _c.steps, api = _c.api, asyncApi = _c.asyncApi, finishedField = _c.finishedField, target = _c.target, redirect = _c.redirect, reload = _c.reload, env = _c.env, onFinished = _c.onFinished;
350
- var step = steps[this.state.currentStep - 1];
351
- store.updateData(values);
352
- if (this.state.currentStep < steps.length) {
353
- var finnalAsyncApi_1 = action.asyncApi || step.asyncApi;
354
- (0, api_1.isEffectiveApi)(finnalAsyncApi_1, store.data) &&
355
- store.updateData((_a = {},
356
- _a[finishedField || 'finished'] = false,
357
- _a));
358
- if ((0, api_1.isEffectiveApi)(action.api || step.api, store.data)) {
359
- store
360
- .saveRemote(action.api || step.api, store.data, {
361
- onSuccess: function () {
362
- if (!(0, api_1.isEffectiveApi)(finnalAsyncApi_1, store.data) ||
363
- store.data[finishedField || 'finished']) {
364
- return;
415
+ Wizard.prototype.finalSubmit = function (values, action) {
416
+ if (values === void 0) { values = {}; }
417
+ if (action === void 0) { action = { type: 'submit' }; }
418
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
419
+ var _a, store, steps, api, asyncApi, finishedField, target, redirect, reload, env, onFinished, step, finnalAsyncApi_1, formStore;
420
+ var _b;
421
+ var _this = this;
422
+ return (0, tslib_1.__generator)(this, function (_c) {
423
+ switch (_c.label) {
424
+ case 0:
425
+ _a = this.props, store = _a.store, steps = _a.steps, api = _a.api, asyncApi = _a.asyncApi, finishedField = _a.finishedField, target = _a.target, redirect = _a.redirect, reload = _a.reload, env = _a.env, onFinished = _a.onFinished;
426
+ return [4 /*yield*/, this.dispatchEvent('finished', store.data)];
427
+ case 1:
428
+ if (_c.sent()) {
429
+ return [2 /*return*/];
365
430
  }
366
- return (0, helper_1.until)(function () { return store.checkRemote(finnalAsyncApi_1, store.data); }, function (ret) { return ret && ret[finishedField || 'finished']; }, function (cancel) { return (_this.asyncCancel = cancel); });
367
- },
368
- onFailed: function (json) {
369
- if (json.status === 422 && json.errors && _this.form) {
370
- _this.form.props.store.setFormItemErrors(json.errors);
431
+ step = steps[this.state.currentStep - 1];
432
+ store.updateData(values);
433
+ // 最后一步
434
+ if (target) {
435
+ this.submitToTarget(target, store.data);
436
+ this.setState({ completeStep: steps.length });
371
437
  }
372
- }
373
- })
374
- .then(function (value) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
375
- var feedback, confirmed;
376
- return (0, tslib_1.__generator)(this, function (_a) {
377
- switch (_a.label) {
378
- case 0:
379
- feedback = action.feedback;
380
- if (!(feedback && (0, helper_1.isVisible)(feedback, value))) return [3 /*break*/, 2];
381
- return [4 /*yield*/, this.openFeedback(feedback, value)];
382
- case 1:
383
- confirmed = _a.sent();
384
- // 如果 feedback 配置了,取消就跳过原有逻辑。
385
- if (feedback.skipRestOnCancel && !confirmed) {
386
- throw new helper_1.SkipOperation();
387
- }
388
- else if (feedback.skipRestOnConfirm && confirmed) {
389
- throw new helper_1.SkipOperation();
390
- }
391
- _a.label = 2;
392
- case 2:
393
- this.gotoStep(value && typeof value.step === 'number'
394
- ? value.step
395
- : this.state.currentStep + 1);
396
- return [2 /*return*/];
438
+ else if (action.api || step.api || api) {
439
+ finnalAsyncApi_1 = action.asyncApi || step.asyncApi || asyncApi;
440
+ (0, api_1.isEffectiveApi)(finnalAsyncApi_1, store.data) &&
441
+ store.updateData((_b = {},
442
+ _b[finishedField || 'finished'] = false,
443
+ _b));
444
+ formStore = this.form
445
+ ? this.form.props.store
446
+ : store;
447
+ store.markSaving(true);
448
+ formStore
449
+ .saveRemote(action.api || step.api || api, store.data, {
450
+ onSuccess: function () {
451
+ _this.dispatchEvent('submitSucc', store.data);
452
+ if (!(0, api_1.isEffectiveApi)(finnalAsyncApi_1, store.data) ||
453
+ store.data[finishedField || 'finished']) {
454
+ return;
455
+ }
456
+ return (0, helper_1.until)(function () { return store.checkRemote(finnalAsyncApi_1, store.data); }, function (ret) { return ret && ret[finishedField || 'finished']; }, function (cancel) { return (_this.asyncCancel = cancel); });
457
+ },
458
+ onFailed: function (json) { return _this.dispatchEvent('submitFail', json); }
459
+ })
460
+ .then(function (value) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
461
+ var feedback, confirmed, finalRedirect;
462
+ return (0, tslib_1.__generator)(this, function (_a) {
463
+ switch (_a.label) {
464
+ case 0:
465
+ feedback = action.feedback;
466
+ if (!(feedback && (0, helper_1.isVisible)(feedback, value))) return [3 /*break*/, 2];
467
+ return [4 /*yield*/, this.openFeedback(feedback, value)];
468
+ case 1:
469
+ confirmed = _a.sent();
470
+ // 如果 feedback 配置了,取消就跳过原有逻辑。
471
+ if (feedback.skipRestOnCancel && !confirmed) {
472
+ throw new helper_1.SkipOperation();
473
+ }
474
+ else if (feedback.skipRestOnConfirm && confirmed) {
475
+ throw new helper_1.SkipOperation();
476
+ }
477
+ _a.label = 2;
478
+ case 2:
479
+ this.setState({ completeStep: steps.length });
480
+ store.updateData((0, tslib_1.__assign)((0, tslib_1.__assign)({}, store.data), value));
481
+ store.markSaving(false);
482
+ if (value && typeof value.step === 'number') {
483
+ this.gotoStep(value.step);
484
+ }
485
+ else if (onFinished && onFinished(value, action) === false) {
486
+ // 如果是 false 后面的操作就不执行
487
+ return [2 /*return*/, value];
488
+ }
489
+ finalRedirect = (action.redirect || step.redirect || redirect) &&
490
+ (0, tpl_1.filter)(action.redirect || step.redirect || redirect, store.data);
491
+ if (finalRedirect) {
492
+ env.jumpTo(finalRedirect, action);
493
+ }
494
+ else if (action.reload || step.reload || reload) {
495
+ this.reloadTarget(action.reload || step.reload || reload, store.data);
496
+ }
497
+ return [2 /*return*/, value];
498
+ }
499
+ });
500
+ }); })
501
+ .catch(function (error) {
502
+ _this.dispatchEvent('submitFail', error);
503
+ store.markSaving(false);
504
+ console.error(error);
505
+ });
397
506
  }
398
- });
399
- }); })
400
- .catch(function (reason) {
401
- if (reason instanceof helper_1.SkipOperation) {
402
- return;
403
- }
404
- // do nothing
405
- });
406
- }
407
- else {
408
- this.gotoStep(this.state.currentStep + 1);
409
- }
410
- }
411
- else {
412
- // 最后一步
413
- if (target) {
414
- this.submitToTarget(target, store.data);
415
- this.setState({ completeStep: steps.length });
416
- }
417
- else if (action.api || step.api || api) {
418
- var finnalAsyncApi_2 = action.asyncApi || step.asyncApi || asyncApi;
419
- (0, api_1.isEffectiveApi)(finnalAsyncApi_2, store.data) &&
420
- store.updateData((_b = {},
421
- _b[finishedField || 'finished'] = false,
422
- _b));
423
- var formStore = this.form
424
- ? this.form.props.store
425
- : store;
426
- store.markSaving(true);
427
- formStore
428
- .saveRemote(action.api || step.api || api, store.data, {
429
- onSuccess: function () {
430
- if (!(0, api_1.isEffectiveApi)(finnalAsyncApi_2, store.data) ||
431
- store.data[finishedField || 'finished']) {
432
- return;
507
+ else {
508
+ onFinished && onFinished(store.data, action);
509
+ this.setState({ completeStep: steps.length });
433
510
  }
434
- return (0, helper_1.until)(function () { return store.checkRemote(finnalAsyncApi_2, store.data); }, function (ret) { return ret && ret[finishedField || 'finished']; }, function (cancel) { return (_this.asyncCancel = cancel); });
435
- }
436
- })
437
- .then(function (value) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
438
- var feedback, confirmed, finalRedirect;
439
- return (0, tslib_1.__generator)(this, function (_a) {
440
- switch (_a.label) {
441
- case 0:
442
- feedback = action.feedback;
443
- if (!(feedback && (0, helper_1.isVisible)(feedback, value))) return [3 /*break*/, 2];
444
- return [4 /*yield*/, this.openFeedback(feedback, value)];
445
- case 1:
446
- confirmed = _a.sent();
447
- // 如果 feedback 配置了,取消就跳过原有逻辑。
448
- if (feedback.skipRestOnCancel && !confirmed) {
449
- throw new helper_1.SkipOperation();
450
- }
451
- else if (feedback.skipRestOnConfirm && confirmed) {
452
- throw new helper_1.SkipOperation();
453
- }
454
- _a.label = 2;
455
- case 2:
456
- this.setState({ completeStep: steps.length });
457
- store.updateData((0, tslib_1.__assign)((0, tslib_1.__assign)({}, store.data), value));
458
- store.markSaving(false);
459
- if (value && typeof value.step === 'number') {
460
- this.gotoStep(value.step);
461
- }
462
- else if (onFinished && onFinished(value, action) === false) {
463
- // 如果是 false 后面的操作就不执行
464
- return [2 /*return*/, value];
511
+ return [2 /*return*/];
512
+ }
513
+ });
514
+ });
515
+ };
516
+ // 接管里面 form 的提交,不能直接让 form 提交,因为 wizard 自己需要知道进度。
517
+ Wizard.prototype.handleSubmit = function (values, action) {
518
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
519
+ var _a, store, steps, finishedField, step, finnalAsyncApi_2;
520
+ var _b;
521
+ var _this = this;
522
+ return (0, tslib_1.__generator)(this, function (_c) {
523
+ _a = this.props, store = _a.store, steps = _a.steps, finishedField = _a.finishedField;
524
+ if (this.state.currentStep < steps.length) {
525
+ step = steps[this.state.currentStep - 1];
526
+ store.updateData(values);
527
+ finnalAsyncApi_2 = action.asyncApi || step.asyncApi;
528
+ (0, api_1.isEffectiveApi)(finnalAsyncApi_2, store.data) &&
529
+ store.updateData((_b = {},
530
+ _b[finishedField || 'finished'] = false,
531
+ _b));
532
+ if ((0, api_1.isEffectiveApi)(action.api || step.api, store.data)) {
533
+ store
534
+ .saveRemote(action.api || step.api, store.data, {
535
+ onSuccess: function () {
536
+ _this.dispatchEvent('stepSubmitSucc', store.data);
537
+ if (!(0, api_1.isEffectiveApi)(finnalAsyncApi_2, store.data) ||
538
+ store.data[finishedField || 'finished']) {
539
+ return;
465
540
  }
466
- finalRedirect = (action.redirect || step.redirect || redirect) &&
467
- (0, tpl_1.filter)(action.redirect || step.redirect || redirect, store.data);
468
- if (finalRedirect) {
469
- env.jumpTo(finalRedirect, action);
541
+ return (0, helper_1.until)(function () { return store.checkRemote(finnalAsyncApi_2, store.data); }, function (ret) { return ret && ret[finishedField || 'finished']; }, function (cancel) { return (_this.asyncCancel = cancel); });
542
+ },
543
+ onFailed: function (json) {
544
+ _this.dispatchEvent('stepSubmitFail', json);
545
+ if (json.status === 422 && json.errors && _this.form) {
546
+ _this.form.props.store.setFormItemErrors(json.errors);
470
547
  }
471
- else if (action.reload || step.reload || reload) {
472
- this.reloadTarget(action.reload || step.reload || reload, store.data);
548
+ }
549
+ })
550
+ .then(function (value) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
551
+ var feedback, confirmed;
552
+ return (0, tslib_1.__generator)(this, function (_a) {
553
+ switch (_a.label) {
554
+ case 0:
555
+ feedback = action.feedback;
556
+ if (!(feedback && (0, helper_1.isVisible)(feedback, value))) return [3 /*break*/, 2];
557
+ return [4 /*yield*/, this.openFeedback(feedback, value)];
558
+ case 1:
559
+ confirmed = _a.sent();
560
+ // 如果 feedback 配置了,取消就跳过原有逻辑。
561
+ if (feedback.skipRestOnCancel && !confirmed) {
562
+ throw new helper_1.SkipOperation();
563
+ }
564
+ else if (feedback.skipRestOnConfirm && confirmed) {
565
+ throw new helper_1.SkipOperation();
566
+ }
567
+ _a.label = 2;
568
+ case 2:
569
+ this.gotoStep(value && typeof value.step === 'number'
570
+ ? value.step
571
+ : this.state.currentStep + 1);
572
+ return [2 /*return*/];
473
573
  }
474
- return [2 /*return*/, value];
475
- }
476
- });
477
- }); })
478
- .catch(function (e) {
479
- store.markSaving(false);
480
- console.error(e);
481
- });
482
- }
483
- else {
484
- onFinished && onFinished(store.data, action);
485
- this.setState({ completeStep: steps.length });
486
- }
487
- }
488
- return false;
574
+ });
575
+ }); })
576
+ .catch(function (reason) {
577
+ _this.dispatchEvent('stepSubmitFail', reason);
578
+ if (reason instanceof helper_1.SkipOperation) {
579
+ return;
580
+ }
581
+ // do nothing
582
+ });
583
+ }
584
+ else {
585
+ this.gotoStep(this.state.currentStep + 1);
586
+ }
587
+ }
588
+ else {
589
+ this.finalSubmit(values, action);
590
+ }
591
+ return [2 /*return*/, false];
592
+ });
593
+ });
489
594
  };
490
595
  Wizard.prototype.handleDialogConfirm = function (values, action, targets) {
491
596
  var store = this.props.store;
@@ -691,7 +796,7 @@ var Wizard = /** @class */ (function (_super) {
691
796
  helper_1.autobind,
692
797
  (0, tslib_1.__metadata)("design:type", Function),
693
798
  (0, tslib_1.__metadata)("design:paramtypes", [Object]),
694
- (0, tslib_1.__metadata)("design:returntype", void 0)
799
+ (0, tslib_1.__metadata)("design:returntype", Promise)
695
800
  ], Wizard.prototype, "handleChange", null);
696
801
  (0, tslib_1.__decorate)([
697
802
  helper_1.autobind,
@@ -709,7 +814,7 @@ var Wizard = /** @class */ (function (_super) {
709
814
  helper_1.autobind,
710
815
  (0, tslib_1.__metadata)("design:type", Function),
711
816
  (0, tslib_1.__metadata)("design:paramtypes", [Object, typeof (_d = typeof types_1.Action !== "undefined" && types_1.Action) === "function" ? _d : Object]),
712
- (0, tslib_1.__metadata)("design:returntype", void 0)
817
+ (0, tslib_1.__metadata)("design:returntype", Promise)
713
818
  ], Wizard.prototype, "handleSubmit", null);
714
819
  (0, tslib_1.__decorate)([
715
820
  helper_1.autobind,