iglooform 2.3.3 → 2.3.7

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 (137) hide show
  1. package/es/admin-upload/modal.js +1 -1
  2. package/es/card-detail/card-group.js +2 -1
  3. package/es/card-detail/card-item.js +7 -0
  4. package/es/card-detail/card.d.ts +2 -2
  5. package/es/card-detail/card.js +3 -3
  6. package/es/card-detail/style/index.less +28 -2
  7. package/es/card-detail/utils.d.ts +2 -2
  8. package/es/card-detail/utils.js +24 -11
  9. package/es/detail-panel/style/index.less +3 -2
  10. package/es/filter/customize.d.ts +9 -0
  11. package/es/filter/customize.js +21 -0
  12. package/es/filter/index.d.ts +6 -4
  13. package/es/filter/index.js +82 -42
  14. package/es/filter/style/index.less +1 -1
  15. package/es/form/context.d.ts +2 -0
  16. package/es/form/context.js +2 -1
  17. package/es/form/element/index.js +54 -2
  18. package/es/form/index.js +63 -13
  19. package/es/form/page/index.js +31 -2
  20. package/es/form/pages/index.js +46 -26
  21. package/es/form/render/index.js +3 -2
  22. package/es/form/steps/index.js +47 -30
  23. package/es/free-form/context.d.ts +19 -0
  24. package/es/free-form/context.js +7 -0
  25. package/es/free-form/element/index.d.ts +11 -0
  26. package/es/free-form/element/index.js +262 -0
  27. package/es/free-form/element/style/index.d.ts +1 -0
  28. package/es/free-form/element/style/index.js +1 -0
  29. package/es/free-form/element/style/index.less +116 -0
  30. package/es/free-form/index.d.ts +7 -0
  31. package/es/free-form/index.js +203 -0
  32. package/es/free-form/messages.d.ts +48 -0
  33. package/es/free-form/messages.js +49 -0
  34. package/es/free-form/page/index.d.ts +11 -0
  35. package/es/free-form/page/index.js +144 -0
  36. package/es/free-form/page/style/index.d.ts +1 -0
  37. package/es/free-form/page/style/index.js +1 -0
  38. package/es/free-form/page/style/index.less +55 -0
  39. package/es/free-form/style/index.d.ts +1 -0
  40. package/es/free-form/style/index.js +1 -0
  41. package/es/free-form/style/index.less +40 -0
  42. package/es/free-form/utils.d.ts +73 -0
  43. package/es/free-form/utils.js +370 -0
  44. package/es/global-message/style/index.less +30 -0
  45. package/es/index.d.ts +3 -0
  46. package/es/index.js +4 -1
  47. package/es/input/input-date.js +18 -9
  48. package/es/input/phone-number.js +9 -9
  49. package/es/input/style/index.less +17 -14
  50. package/es/layout/index.js +10 -2
  51. package/es/layout/style/index.less +2 -0
  52. package/es/locale/en-US/messages.json +1 -1
  53. package/es/locale/id-ID/messages.json +1 -1
  54. package/es/locale/th-TH/messages.json +1 -1
  55. package/es/locale/vi-VN/messages.json +1 -1
  56. package/es/locale/zh-CN/messages.json +1 -1
  57. package/es/media/media.js +0 -1
  58. package/es/media/preview.js +0 -1
  59. package/es/select/attached-select.js +2 -2
  60. package/es/table/index.js +33 -9
  61. package/es/typography/index.js +2 -2
  62. package/es/typography/style/index.less +4 -1
  63. package/es/upload/index.d.ts +3 -3
  64. package/es/upload/index.js +2 -2
  65. package/es/upload-photo/index.d.ts +2 -2
  66. package/es/upload-photo/index.js +2 -2
  67. package/es/upload-photo/media.js +0 -1
  68. package/es/upload-preview/media.js +0 -1
  69. package/lib/admin-upload/modal.js +1 -1
  70. package/lib/card-detail/card-group.js +2 -1
  71. package/lib/card-detail/card-item.js +7 -0
  72. package/lib/card-detail/card.d.ts +2 -2
  73. package/lib/card-detail/card.js +3 -3
  74. package/lib/card-detail/style/index.less +28 -2
  75. package/lib/card-detail/utils.d.ts +2 -2
  76. package/lib/card-detail/utils.js +25 -12
  77. package/lib/detail-panel/style/index.less +3 -2
  78. package/lib/filter/customize.d.ts +9 -0
  79. package/lib/filter/customize.js +33 -0
  80. package/lib/filter/index.d.ts +6 -4
  81. package/lib/filter/index.js +83 -42
  82. package/lib/filter/style/index.less +1 -1
  83. package/lib/form/context.d.ts +2 -0
  84. package/lib/form/context.js +2 -1
  85. package/lib/form/element/index.js +53 -1
  86. package/lib/form/index.js +62 -12
  87. package/lib/form/page/index.js +29 -1
  88. package/lib/form/pages/index.js +45 -25
  89. package/lib/form/render/index.js +2 -1
  90. package/lib/form/steps/index.js +46 -29
  91. package/lib/free-form/context.d.ts +19 -0
  92. package/lib/free-form/context.js +19 -0
  93. package/lib/free-form/element/index.d.ts +11 -0
  94. package/lib/free-form/element/index.js +288 -0
  95. package/lib/free-form/element/style/index.d.ts +1 -0
  96. package/lib/free-form/element/style/index.js +3 -0
  97. package/lib/free-form/element/style/index.less +116 -0
  98. package/lib/free-form/index.d.ts +7 -0
  99. package/lib/free-form/index.js +220 -0
  100. package/lib/free-form/messages.d.ts +48 -0
  101. package/lib/free-form/messages.js +56 -0
  102. package/lib/free-form/page/index.d.ts +11 -0
  103. package/lib/free-form/page/index.js +164 -0
  104. package/lib/free-form/page/style/index.d.ts +1 -0
  105. package/lib/free-form/page/style/index.js +3 -0
  106. package/lib/free-form/page/style/index.less +55 -0
  107. package/lib/free-form/style/index.d.ts +1 -0
  108. package/lib/free-form/style/index.js +3 -0
  109. package/lib/free-form/style/index.less +40 -0
  110. package/lib/free-form/utils.d.ts +73 -0
  111. package/lib/free-form/utils.js +403 -0
  112. package/lib/global-message/style/index.less +30 -0
  113. package/lib/index.d.ts +3 -0
  114. package/lib/index.js +28 -1
  115. package/lib/input/input-date.js +18 -9
  116. package/lib/input/phone-number.js +9 -9
  117. package/lib/input/style/index.less +17 -14
  118. package/lib/layout/index.js +10 -2
  119. package/lib/layout/style/index.less +2 -0
  120. package/lib/locale/en-US/messages.json +1 -1
  121. package/lib/locale/id-ID/messages.json +1 -1
  122. package/lib/locale/th-TH/messages.json +1 -1
  123. package/lib/locale/vi-VN/messages.json +1 -1
  124. package/lib/locale/zh-CN/messages.json +1 -1
  125. package/lib/media/media.js +0 -1
  126. package/lib/media/preview.js +0 -1
  127. package/lib/select/attached-select.js +2 -2
  128. package/lib/table/index.js +32 -8
  129. package/lib/typography/index.js +2 -2
  130. package/lib/typography/style/index.less +4 -1
  131. package/lib/upload/index.d.ts +3 -3
  132. package/lib/upload/index.js +2 -2
  133. package/lib/upload-photo/index.d.ts +2 -2
  134. package/lib/upload-photo/index.js +2 -2
  135. package/lib/upload-photo/media.js +0 -1
  136. package/lib/upload-preview/media.js +0 -1
  137. package/package.json +1 -1
@@ -223,7 +223,7 @@
223
223
  }
224
224
 
225
225
  .igloo-form-filter-drop-down-container-content {
226
- .igloo-form-filter-drop-dwon-container-content-group {
226
+ .igloo-form-filter-drop-down-container-content-group {
227
227
  .igloo-form-filter-drop-down-container-content-group-title {
228
228
  display: flex;
229
229
  justify-content: space-between;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FormInstance } from 'antd/es/form';
3
+ import { FormItemName } from '@/types';
3
4
  declare const _default: React.Context<{
4
5
  form?: FormInstance<any> | undefined;
5
6
  onCancel?(): void;
@@ -13,5 +14,6 @@ declare const _default: React.Context<{
13
14
  requiredMark?: boolean | undefined;
14
15
  showSubmitButton?: boolean | undefined;
15
16
  getScrollContainer: () => HTMLElement | Window | null;
17
+ registerDependencies: (name: FormItemName | FormItemName[], updater: Function) => void;
16
18
  }>;
17
19
  export default _default;
@@ -12,7 +12,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
12
12
  var _default = /*#__PURE__*/_react.default.createContext({
13
13
  getScrollContainer: function getScrollContainer() {
14
14
  return window;
15
- }
15
+ },
16
+ registerDependencies: function registerDependencies() {}
16
17
  });
17
18
 
18
19
  exports.default = _default;
@@ -58,6 +58,18 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
58
58
 
59
59
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
60
60
 
61
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
62
+
63
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
64
+
65
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
66
+
67
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
68
+
69
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
70
+
71
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
72
+
61
73
  var useBreakpoint = _grid.default.useBreakpoint;
62
74
 
63
75
  var Element = function Element(_ref) {
@@ -72,8 +84,48 @@ var Element = function Element(_ref) {
72
84
 
73
85
  var _useContext = (0, _react.useContext)(_context.default),
74
86
  form = _useContext.form,
75
- requiredMark = _useContext.requiredMark;
87
+ requiredMark = _useContext.requiredMark,
88
+ registerDependencies = _useContext.registerDependencies;
89
+
90
+ var _useReducer = (0, _react.useReducer)(function (r) {
91
+ return r + 1;
92
+ }, 0),
93
+ _useReducer2 = _slicedToArray(_useReducer, 2),
94
+ _ = _useReducer2[0],
95
+ dispatch = _useReducer2[1];
96
+
97
+ (0, _react.useEffect)(function () {
98
+ var dependencies = config.dependencies,
99
+ asserts = config.asserts,
100
+ copyValue = config.copyValue,
101
+ selectValue = config.selectValue,
102
+ shouldRender = config.shouldRender;
103
+ var dependentField = dependencies || [];
104
+
105
+ if (asserts && asserts.length) {
106
+ asserts.forEach(function (_ref2) {
107
+ var field = _ref2.field;
108
+ return dependentField.push(field);
109
+ });
110
+ }
111
+
112
+ if (copyValue) {
113
+ dependentField.push(copyValue.assert.field);
114
+ }
115
+
116
+ if (selectValue && selectValue.length) {
117
+ selectValue.forEach(function (_ref3) {
118
+ var assert = _ref3.assert;
119
+ return dependentField.push(assert.field);
120
+ });
121
+ }
122
+
123
+ if (shouldRender) {
124
+ dependentField.push('SUBSCRIBE_ALL');
125
+ }
76
126
 
127
+ registerDependencies(dependentField, dispatch);
128
+ }, []);
77
129
  (0, _invariant.default)(type !== 'Pages' && type !== 'Page', "".concat(type, " should not be inner form item"));
78
130
 
79
131
  var _useComponent = (0, _elements.default)(config),
package/lib/form/index.js CHANGED
@@ -80,13 +80,6 @@ var IglooForm = function IglooForm(props, ref) {
80
80
  return window;
81
81
  } : _props$getScrollConta;
82
82
 
83
- var _useReducer = (0, _react.useReducer)(function (r) {
84
- return r + 1;
85
- }, 0),
86
- _useReducer2 = _slicedToArray(_useReducer, 2),
87
- _ = _useReducer2[0],
88
- dispatch = _useReducer2[1];
89
-
90
83
  var _Form$useForm = _form.default.useForm(),
91
84
  _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
92
85
  innerForm = _Form$useForm2[0];
@@ -96,9 +89,14 @@ var IglooForm = function IglooForm(props, ref) {
96
89
  submitting = _useState2[0],
97
90
  setSubmitting = _useState2[1];
98
91
 
99
- var _useState3 = (0, _react.useState)(formProp || innerForm),
100
- _useState4 = _slicedToArray(_useState3, 1),
101
- form = _useState4[0];
92
+ var _useState3 = (0, _react.useState)({}),
93
+ _useState4 = _slicedToArray(_useState3, 2),
94
+ dependents = _useState4[0],
95
+ setDependents = _useState4[1];
96
+
97
+ var _useState5 = (0, _react.useState)(formProp || innerForm),
98
+ _useState6 = _slicedToArray(_useState5, 1),
99
+ form = _useState6[0];
102
100
 
103
101
  var type = config.type;
104
102
  (0, _invariant.default)(type, "Contianer type should be one of ['Pages', 'Page', 'Steps', 'Login']");
@@ -179,6 +177,57 @@ var IglooForm = function IglooForm(props, ref) {
179
177
  }()
180
178
  };
181
179
  });
180
+
181
+ var registerDependencies = function registerDependencies(field, updater) {
182
+ if (Array.isArray(field)) {
183
+ setDependents(function (deps) {
184
+ var newDeps = _objectSpread({}, deps);
185
+
186
+ field.forEach(function (name) {
187
+ var key = Array.isArray(name) ? name.join() : name;
188
+
189
+ if (!newDeps[key]) {
190
+ newDeps[key] = [];
191
+ }
192
+
193
+ newDeps[key].push(updater);
194
+ });
195
+ return newDeps;
196
+ });
197
+ return;
198
+ }
199
+
200
+ setDependents(function (deps) {
201
+ var newDeps = _objectSpread({}, deps);
202
+
203
+ var key = Array.isArray(field) ? field.join() : field;
204
+
205
+ if (!newDeps[key]) {
206
+ newDeps[key] = [];
207
+ }
208
+
209
+ newDeps[key].push(updater);
210
+ return newDeps;
211
+ });
212
+ };
213
+
214
+ var handleValuesChange = function handleValuesChange(changedFields) {
215
+ var changedField = changedFields[0].name;
216
+ var changedKey = Array.isArray(changedField) ? changedField.join() : changedField;
217
+
218
+ if (dependents[changedKey]) {
219
+ dependents[changedKey].forEach(function (updater) {
220
+ return updater();
221
+ });
222
+ }
223
+
224
+ if (dependents['SUBSCRIBE_ALL']) {
225
+ dependents['SUBSCRIBE_ALL'].forEach(function (updater) {
226
+ return updater();
227
+ });
228
+ }
229
+ };
230
+
182
231
  return (0, _jsxRuntime.jsx)("div", Object.assign({
183
232
  className: (0, _classnames.default)(className, {
184
233
  'igloo-form-without-button': !showSubmitButton
@@ -192,13 +241,14 @@ var IglooForm = function IglooForm(props, ref) {
192
241
  submitting: submitting,
193
242
  requiredMark: requiredMark,
194
243
  showSubmitButton: showSubmitButton,
195
- getScrollContainer: getScrollContainer
244
+ getScrollContainer: getScrollContainer,
245
+ registerDependencies: registerDependencies
196
246
  }, locales)
197
247
  }, {
198
248
  children: (0, _jsxRuntime.jsxs)(_form.default, Object.assign({
199
249
  form: form,
200
250
  onFinish: handleSubmit,
201
- onValuesChange: dispatch,
251
+ onFieldsChange: handleValuesChange,
202
252
  colon: false,
203
253
  validateMessages: validateMessages || _messages.default,
204
254
  initialValues: initialValues,
@@ -35,6 +35,18 @@ require("./style/index.less");
35
35
 
36
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
37
 
38
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
39
+
40
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
41
+
42
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
43
+
44
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
45
+
46
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
47
+
48
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
49
+
38
50
  var Page = function Page(_ref) {
39
51
  var parentName = _ref.parentName,
40
52
  _ref$config = _ref.config,
@@ -42,6 +54,7 @@ var Page = function Page(_ref) {
42
54
  elements = _ref$config$elements === void 0 ? [] : _ref$config$elements,
43
55
  name = _ref$config.name,
44
56
  getButtonDisabledState = _ref$config.getButtonDisabledState,
57
+ shouldRender = _ref$config.shouldRender,
45
58
  _ref$showFooter = _ref.showFooter,
46
59
  showFooter = _ref$showFooter === void 0 ? true : _ref$showFooter;
47
60
 
@@ -51,12 +64,27 @@ var Page = function Page(_ref) {
51
64
  submitText = _useContext.submitText,
52
65
  submitting = _useContext.submitting,
53
66
  showSubmitButton = _useContext.showSubmitButton,
54
- form = _useContext.form;
67
+ form = _useContext.form,
68
+ registerDependencies = _useContext.registerDependencies;
69
+
70
+ var _useReducer = (0, _react.useReducer)(function (r) {
71
+ return r + 1;
72
+ }, 0),
73
+ _useReducer2 = _slicedToArray(_useReducer, 2),
74
+ _ = _useReducer2[0],
75
+ dispatch = _useReducer2[1];
55
76
 
56
77
  var _useContext2 = (0, _react.useContext)(_locale.LocaleContext),
57
78
  formatMessage = _useContext2.formatMessage;
58
79
 
59
80
  var buttonDisabled = getButtonDisabledState && form && getButtonDisabledState(form);
81
+ (0, _react.useEffect)(function () {
82
+ var subscribe = Boolean(shouldRender) || Boolean(getButtonDisabledState);
83
+
84
+ if (subscribe) {
85
+ registerDependencies('SUBSCRIBE_ALL', dispatch);
86
+ }
87
+ }, []);
60
88
  return (0, _jsxRuntime.jsxs)("div", Object.assign({
61
89
  className: 'igloo-page-container'
62
90
  }, {
@@ -64,6 +64,13 @@ var Pages = function Pages(_ref) {
64
64
  current = _useState2[0],
65
65
  setCurrent = _useState2[1];
66
66
 
67
+ var _useReducer = (0, _react.useReducer)(function (r) {
68
+ return r + 1;
69
+ }, 0),
70
+ _useReducer2 = _slicedToArray(_useReducer, 2),
71
+ _ = _useReducer2[0],
72
+ dispatch = _useReducer2[1];
73
+
67
74
  var _useContext = (0, _react.useContext)(_locale.LocaleContext),
68
75
  formatMessage = _useContext.formatMessage;
69
76
 
@@ -73,7 +80,21 @@ var Pages = function Pages(_ref) {
73
80
  previewText = _useContext2.previewText,
74
81
  nextText = _useContext2.nextText,
75
82
  submitting = _useContext2.submitting,
76
- showSubmitButton = _useContext2.showSubmitButton;
83
+ showSubmitButton = _useContext2.showSubmitButton,
84
+ registerDependencies = _useContext2.registerDependencies;
85
+
86
+ (0, _react.useEffect)(function () {
87
+ var subscribe = elements.some(function (_ref2) {
88
+ var shouldRender = _ref2.shouldRender,
89
+ getButtonDisabledState = _ref2.getButtonDisabledState,
90
+ getPreviousDisabledState = _ref2.getPreviousDisabledState;
91
+ return Boolean(shouldRender) || Boolean(getButtonDisabledState) || Boolean(getPreviousDisabledState);
92
+ });
93
+
94
+ if (subscribe) {
95
+ registerDependencies('SUBSCRIBE_ALL', dispatch);
96
+ }
97
+ }, []);
77
98
 
78
99
  var _useBreakpoint = useBreakpoint(),
79
100
  md = _useBreakpoint.md;
@@ -84,10 +105,10 @@ var Pages = function Pages(_ref) {
84
105
  });
85
106
 
86
107
  var handleNext = /*#__PURE__*/function () {
87
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
108
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
88
109
  var _allFields$filter;
89
110
 
90
- var allFields, _renderElements$curre, currentName, handleNext, namePath, fields, errorFields, errors;
111
+ var allFields, _renderElements$curre, currentName, handleNext, namePath, fields, errors;
91
112
 
92
113
  return regeneratorRuntime.wrap(function _callee$(_context) {
93
114
  while (1) {
@@ -96,11 +117,11 @@ var Pages = function Pages(_ref) {
96
117
  allFields = (form === null || form === void 0 ? void 0 : form.getFieldsError()) || [];
97
118
  _renderElements$curre = renderElements[current], currentName = _renderElements$curre.name, handleNext = _renderElements$curre.handleNext;
98
119
  namePath = (0, _utils.calcNamePath)(name, currentName);
99
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref3) {
100
- var name = _ref3.name;
101
- return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
102
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref4) {
120
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
103
121
  var name = _ref4.name;
122
+ return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
123
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
124
+ var name = _ref5.name;
104
125
  return name;
105
126
  });
106
127
  _context.prev = 4;
@@ -108,58 +129,57 @@ var Pages = function Pages(_ref) {
108
129
  return form === null || form === void 0 ? void 0 : form.validateFields(fields);
109
130
 
110
131
  case 7:
111
- _context.next = 14;
132
+ _context.next = 13;
112
133
  break;
113
134
 
114
135
  case 9:
115
136
  _context.prev = 9;
116
137
  _context.t0 = _context["catch"](4);
117
- errorFields = _context.t0.errorFields;
118
- form === null || form === void 0 ? void 0 : form.scrollToField(errorFields[0].name);
138
+ form === null || form === void 0 ? void 0 : form.scrollToField(_context.t0.errorFields[0].name);
119
139
  return _context.abrupt("return");
120
140
 
121
- case 14:
141
+ case 13:
122
142
  if (!(typeof handleNext === 'function')) {
123
- _context.next = 26;
143
+ _context.next = 25;
124
144
  break;
125
145
  }
126
146
 
127
- _context.prev = 15;
128
- _context.next = 18;
147
+ _context.prev = 14;
148
+ _context.next = 17;
129
149
  return handleNext(form === null || form === void 0 ? void 0 : form.getFieldsValue(fields));
130
150
 
131
- case 18:
151
+ case 17:
132
152
  errors = _context.sent;
133
153
 
134
154
  if (!Array.isArray(errors)) {
135
- _context.next = 21;
155
+ _context.next = 20;
136
156
  break;
137
157
  }
138
158
 
139
159
  return _context.abrupt("return", form === null || form === void 0 ? void 0 : form.setFields(errors));
140
160
 
141
- case 21:
142
- _context.next = 26;
161
+ case 20:
162
+ _context.next = 25;
143
163
  break;
144
164
 
145
- case 23:
146
- _context.prev = 23;
147
- _context.t1 = _context["catch"](15);
165
+ case 22:
166
+ _context.prev = 22;
167
+ _context.t1 = _context["catch"](14);
148
168
  return _context.abrupt("return");
149
169
 
150
- case 26:
170
+ case 25:
151
171
  setCurrent(current + 1);
152
172
 
153
- case 27:
173
+ case 26:
154
174
  case "end":
155
175
  return _context.stop();
156
176
  }
157
177
  }
158
- }, _callee, null, [[4, 9], [15, 23]]);
178
+ }, _callee, null, [[4, 9], [14, 22]]);
159
179
  }));
160
180
 
161
181
  return function handleNext() {
162
- return _ref2.apply(this, arguments);
182
+ return _ref3.apply(this, arguments);
163
183
  };
164
184
  }();
165
185
 
@@ -27,7 +27,8 @@ var RenderElement = function RenderElement(_ref) {
27
27
  var _useContext = (0, _react.useContext)(_context.default),
28
28
  form = _useContext.form;
29
29
 
30
- return render(preview, form, value, onChange, setShowStepButton);
30
+ var memoedRender = (0, _react.useCallback)(render, [render]);
31
+ return memoedRender(preview, form, value, onChange, setShowStepButton);
31
32
  };
32
33
 
33
34
  RenderElement.formItemPropsHandler = function (_ref2) {
@@ -61,20 +61,38 @@ var Steps = function Steps(_ref) {
61
61
  shouldScroll = _useState6[0],
62
62
  setShouldScroll = _useState6[1];
63
63
 
64
- var _useContext = (0, _react.useContext)(_context2.default),
65
- form = _useContext.form;
64
+ var _useReducer = (0, _react.useReducer)(function (r) {
65
+ return r + 1;
66
+ }, 0),
67
+ _useReducer2 = _slicedToArray(_useReducer, 2),
68
+ _ = _useReducer2[0],
69
+ dispatch = _useReducer2[1];
66
70
 
67
- (0, _react.useEffect)(function () {}, [current]);
71
+ var _useContext = (0, _react.useContext)(_context2.default),
72
+ form = _useContext.form,
73
+ registerDependencies = _useContext.registerDependencies;
74
+
75
+ (0, _react.useEffect)(function () {
76
+ var subscribe = elements.some(function (_ref2) {
77
+ var shouldRender = _ref2.shouldRender,
78
+ getButtonDisabledState = _ref2.getButtonDisabledState;
79
+ return Boolean(shouldRender) || Boolean(getButtonDisabledState);
80
+ });
81
+
82
+ if (subscribe) {
83
+ registerDependencies('SUBSCRIBE_ALL', dispatch);
84
+ }
85
+ }, []);
68
86
  var renderElements = elements.filter(function (step) {
69
87
  step.key = step.name || step.key || Math.random();
70
88
  return typeof step.shouldRender !== 'function' || step.shouldRender(form);
71
89
  });
72
90
 
73
91
  var handleNext = /*#__PURE__*/function () {
74
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
92
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
75
93
  var _allFields$filter;
76
94
 
77
- var allFields, _renderElements$curre, currentName, handleNext, namePath, fields, errorFields, errors;
95
+ var allFields, _renderElements$curre, currentName, handleNext, namePath, fields, errors;
78
96
 
79
97
  return regeneratorRuntime.wrap(function _callee$(_context) {
80
98
  while (1) {
@@ -83,11 +101,11 @@ var Steps = function Steps(_ref) {
83
101
  allFields = (form === null || form === void 0 ? void 0 : form.getFieldsError()) || [];
84
102
  _renderElements$curre = renderElements[current], currentName = _renderElements$curre.name, handleNext = _renderElements$curre.handleNext;
85
103
  namePath = (0, _utils.calcNamePath)(name, currentName);
86
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref3) {
87
- var name = _ref3.name;
88
- return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
89
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref4) {
104
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
90
105
  var name = _ref4.name;
106
+ return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
107
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
108
+ var name = _ref5.name;
91
109
  return name;
92
110
  });
93
111
  _context.prev = 4;
@@ -95,60 +113,59 @@ var Steps = function Steps(_ref) {
95
113
  return form === null || form === void 0 ? void 0 : form.validateFields(fields);
96
114
 
97
115
  case 7:
98
- _context.next = 14;
116
+ _context.next = 13;
99
117
  break;
100
118
 
101
119
  case 9:
102
120
  _context.prev = 9;
103
121
  _context.t0 = _context["catch"](4);
104
- errorFields = _context.t0.errorFields;
105
- form === null || form === void 0 ? void 0 : form.scrollToField(errorFields[0].name);
122
+ form === null || form === void 0 ? void 0 : form.scrollToField(_context.t0.errorFields[0].name);
106
123
  return _context.abrupt("return");
107
124
 
108
- case 14:
125
+ case 13:
109
126
  if (!(typeof handleNext === 'function')) {
110
- _context.next = 26;
127
+ _context.next = 25;
111
128
  break;
112
129
  }
113
130
 
114
- _context.prev = 15;
115
- _context.next = 18;
131
+ _context.prev = 14;
132
+ _context.next = 17;
116
133
  return handleNext(form === null || form === void 0 ? void 0 : form.getFieldsValue(fields));
117
134
 
118
- case 18:
135
+ case 17:
119
136
  errors = _context.sent;
120
137
 
121
138
  if (!Array.isArray(errors)) {
122
- _context.next = 21;
139
+ _context.next = 20;
123
140
  break;
124
141
  }
125
142
 
126
143
  return _context.abrupt("return", form === null || form === void 0 ? void 0 : form.setFields(errors));
127
144
 
128
- case 21:
129
- _context.next = 26;
145
+ case 20:
146
+ _context.next = 25;
130
147
  break;
131
148
 
132
- case 23:
133
- _context.prev = 23;
134
- _context.t1 = _context["catch"](15);
149
+ case 22:
150
+ _context.prev = 22;
151
+ _context.t1 = _context["catch"](14);
135
152
  return _context.abrupt("return");
136
153
 
137
- case 26:
154
+ case 25:
138
155
  setCurrent(last || current + 1);
139
156
  setLast(0);
140
157
  setShouldScroll(true);
141
158
 
142
- case 29:
159
+ case 28:
143
160
  case "end":
144
161
  return _context.stop();
145
162
  }
146
163
  }
147
- }, _callee, null, [[4, 9], [15, 23]]);
164
+ }, _callee, null, [[4, 9], [14, 22]]);
148
165
  }));
149
166
 
150
167
  return function handleNext() {
151
- return _ref2.apply(this, arguments);
168
+ return _ref3.apply(this, arguments);
152
169
  };
153
170
  }();
154
171
 
@@ -169,7 +186,7 @@ var Steps = function Steps(_ref) {
169
186
  return (0, _jsxRuntime.jsx)(_step.default, {
170
187
  config: child,
171
188
  parentName: (0, _utils.calcNamePath)(parentName, name),
172
- index: child.key,
189
+ index: index,
173
190
  total: renderElements.length,
174
191
  preview: current > index,
175
192
  edit: current === index,
@@ -177,7 +194,7 @@ var Steps = function Steps(_ref) {
177
194
  handleEdit: handleEdit,
178
195
  showLastIndex: showLastIndex,
179
196
  shouldScroll: shouldScroll
180
- }, index);
197
+ }, child.key);
181
198
  })
182
199
  }), void 0)
183
200
  }), void 0);