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;
@@ -2,5 +2,6 @@ import React from 'react';
2
2
  export default /*#__PURE__*/React.createContext({
3
3
  getScrollContainer: function getScrollContainer() {
4
4
  return window;
5
- }
5
+ },
6
+ registerDependencies: function registerDependencies() {}
6
7
  });
@@ -19,8 +19,20 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
19
19
 
20
20
  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; }
21
21
 
22
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
+
24
+ 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."); }
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ 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; }
31
+
32
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
33
+
22
34
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
23
- import { useContext, useEffect, useRef } from 'react';
35
+ import { useContext, useEffect, useRef, useReducer } from 'react';
24
36
  import { CloseCircleFilled } from '@ant-design/icons';
25
37
  import { calcFormItemProps } from '../utils';
26
38
  import Section from '../section';
@@ -44,8 +56,48 @@ var Element = function Element(_ref) {
44
56
 
45
57
  var _useContext = useContext(FormContext),
46
58
  form = _useContext.form,
47
- requiredMark = _useContext.requiredMark;
59
+ requiredMark = _useContext.requiredMark,
60
+ registerDependencies = _useContext.registerDependencies;
61
+
62
+ var _useReducer = useReducer(function (r) {
63
+ return r + 1;
64
+ }, 0),
65
+ _useReducer2 = _slicedToArray(_useReducer, 2),
66
+ _ = _useReducer2[0],
67
+ dispatch = _useReducer2[1];
68
+
69
+ useEffect(function () {
70
+ var dependencies = config.dependencies,
71
+ asserts = config.asserts,
72
+ copyValue = config.copyValue,
73
+ selectValue = config.selectValue,
74
+ shouldRender = config.shouldRender;
75
+ var dependentField = dependencies || [];
76
+
77
+ if (asserts && asserts.length) {
78
+ asserts.forEach(function (_ref2) {
79
+ var field = _ref2.field;
80
+ return dependentField.push(field);
81
+ });
82
+ }
83
+
84
+ if (copyValue) {
85
+ dependentField.push(copyValue.assert.field);
86
+ }
87
+
88
+ if (selectValue && selectValue.length) {
89
+ selectValue.forEach(function (_ref3) {
90
+ var assert = _ref3.assert;
91
+ return dependentField.push(assert.field);
92
+ });
93
+ }
94
+
95
+ if (shouldRender) {
96
+ dependentField.push('SUBSCRIBE_ALL');
97
+ }
48
98
 
99
+ registerDependencies(dependentField, dispatch);
100
+ }, []);
49
101
  invariant(type !== 'Pages' && type !== 'Page', "".concat(type, " should not be inner form item"));
50
102
 
51
103
  var _useComponent = useComponent(config),
package/es/form/index.js CHANGED
@@ -29,7 +29,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
29
29
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
30
30
 
31
31
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
- import { useState, useReducer, useImperativeHandle, forwardRef } from 'react';
32
+ import { useState, useImperativeHandle, forwardRef } from 'react';
33
33
  import Pages from './pages';
34
34
  import Page from './page';
35
35
  import Steps from './steps';
@@ -59,13 +59,6 @@ var IglooForm = function IglooForm(props, ref) {
59
59
  return window;
60
60
  } : _props$getScrollConta;
61
61
 
62
- var _useReducer = useReducer(function (r) {
63
- return r + 1;
64
- }, 0),
65
- _useReducer2 = _slicedToArray(_useReducer, 2),
66
- _ = _useReducer2[0],
67
- dispatch = _useReducer2[1];
68
-
69
62
  var _Form$useForm = _Form.useForm(),
70
63
  _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
71
64
  innerForm = _Form$useForm2[0];
@@ -75,9 +68,14 @@ var IglooForm = function IglooForm(props, ref) {
75
68
  submitting = _useState2[0],
76
69
  setSubmitting = _useState2[1];
77
70
 
78
- var _useState3 = useState(formProp || innerForm),
79
- _useState4 = _slicedToArray(_useState3, 1),
80
- form = _useState4[0];
71
+ var _useState3 = useState({}),
72
+ _useState4 = _slicedToArray(_useState3, 2),
73
+ dependents = _useState4[0],
74
+ setDependents = _useState4[1];
75
+
76
+ var _useState5 = useState(formProp || innerForm),
77
+ _useState6 = _slicedToArray(_useState5, 1),
78
+ form = _useState6[0];
81
79
 
82
80
  var type = config.type;
83
81
  invariant(type, "Contianer type should be one of ['Pages', 'Page', 'Steps', 'Login']");
@@ -158,6 +156,57 @@ var IglooForm = function IglooForm(props, ref) {
158
156
  }()
159
157
  };
160
158
  });
159
+
160
+ var registerDependencies = function registerDependencies(field, updater) {
161
+ if (Array.isArray(field)) {
162
+ setDependents(function (deps) {
163
+ var newDeps = _objectSpread({}, deps);
164
+
165
+ field.forEach(function (name) {
166
+ var key = Array.isArray(name) ? name.join() : name;
167
+
168
+ if (!newDeps[key]) {
169
+ newDeps[key] = [];
170
+ }
171
+
172
+ newDeps[key].push(updater);
173
+ });
174
+ return newDeps;
175
+ });
176
+ return;
177
+ }
178
+
179
+ setDependents(function (deps) {
180
+ var newDeps = _objectSpread({}, deps);
181
+
182
+ var key = Array.isArray(field) ? field.join() : field;
183
+
184
+ if (!newDeps[key]) {
185
+ newDeps[key] = [];
186
+ }
187
+
188
+ newDeps[key].push(updater);
189
+ return newDeps;
190
+ });
191
+ };
192
+
193
+ var handleValuesChange = function handleValuesChange(changedFields) {
194
+ var changedField = changedFields[0].name;
195
+ var changedKey = Array.isArray(changedField) ? changedField.join() : changedField;
196
+
197
+ if (dependents[changedKey]) {
198
+ dependents[changedKey].forEach(function (updater) {
199
+ return updater();
200
+ });
201
+ }
202
+
203
+ if (dependents['SUBSCRIBE_ALL']) {
204
+ dependents['SUBSCRIBE_ALL'].forEach(function (updater) {
205
+ return updater();
206
+ });
207
+ }
208
+ };
209
+
161
210
  return _jsx("div", Object.assign({
162
211
  className: classNames(className, {
163
212
  'igloo-form-without-button': !showSubmitButton
@@ -171,13 +220,14 @@ var IglooForm = function IglooForm(props, ref) {
171
220
  submitting: submitting,
172
221
  requiredMark: requiredMark,
173
222
  showSubmitButton: showSubmitButton,
174
- getScrollContainer: getScrollContainer
223
+ getScrollContainer: getScrollContainer,
224
+ registerDependencies: registerDependencies
175
225
  }, locales)
176
226
  }, {
177
227
  children: _jsxs(_Form, Object.assign({
178
228
  form: form,
179
229
  onFinish: handleSubmit,
180
- onValuesChange: dispatch,
230
+ onFieldsChange: handleValuesChange,
181
231
  colon: false,
182
232
  validateMessages: validateMessages || messages,
183
233
  initialValues: initialValues,
@@ -4,8 +4,21 @@ import "antd/es/col/style";
4
4
  import _Col from "antd/es/col";
5
5
  import "antd/es/row/style";
6
6
  import _Row from "antd/es/row";
7
+
8
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
+
10
+ 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."); }
11
+
12
+ 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); }
13
+
14
+ 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; }
15
+
16
+ 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; }
17
+
18
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
+
7
20
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
- import { useContext } from 'react';
21
+ import { useContext, useEffect, useReducer } from 'react';
9
22
  import Button from '../../button';
10
23
  import Element from '../element';
11
24
  import { calcNamePath } from '../utils';
@@ -20,6 +33,7 @@ var Page = function Page(_ref) {
20
33
  elements = _ref$config$elements === void 0 ? [] : _ref$config$elements,
21
34
  name = _ref$config.name,
22
35
  getButtonDisabledState = _ref$config.getButtonDisabledState,
36
+ shouldRender = _ref$config.shouldRender,
23
37
  _ref$showFooter = _ref.showFooter,
24
38
  showFooter = _ref$showFooter === void 0 ? true : _ref$showFooter;
25
39
 
@@ -29,12 +43,27 @@ var Page = function Page(_ref) {
29
43
  submitText = _useContext.submitText,
30
44
  submitting = _useContext.submitting,
31
45
  showSubmitButton = _useContext.showSubmitButton,
32
- form = _useContext.form;
46
+ form = _useContext.form,
47
+ registerDependencies = _useContext.registerDependencies;
48
+
49
+ var _useReducer = useReducer(function (r) {
50
+ return r + 1;
51
+ }, 0),
52
+ _useReducer2 = _slicedToArray(_useReducer, 2),
53
+ _ = _useReducer2[0],
54
+ dispatch = _useReducer2[1];
33
55
 
34
56
  var _useContext2 = useContext(LocaleContext),
35
57
  formatMessage = _useContext2.formatMessage;
36
58
 
37
59
  var buttonDisabled = getButtonDisabledState && form && getButtonDisabledState(form);
60
+ useEffect(function () {
61
+ var subscribe = Boolean(shouldRender) || Boolean(getButtonDisabledState);
62
+
63
+ if (subscribe) {
64
+ registerDependencies('SUBSCRIBE_ALL', dispatch);
65
+ }
66
+ }, []);
38
67
  return _jsxs("div", Object.assign({
39
68
  className: 'igloo-page-container'
40
69
  }, {
@@ -20,7 +20,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
20
20
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
21
 
22
22
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
23
- import { useState, useContext } from 'react';
23
+ import { useState, useContext, useReducer, useEffect } from 'react';
24
24
  import Button from '../../button';
25
25
  import Page from '../page';
26
26
  import { calcNamePath } from '../utils';
@@ -42,6 +42,13 @@ var Pages = function Pages(_ref) {
42
42
  current = _useState2[0],
43
43
  setCurrent = _useState2[1];
44
44
 
45
+ var _useReducer = useReducer(function (r) {
46
+ return r + 1;
47
+ }, 0),
48
+ _useReducer2 = _slicedToArray(_useReducer, 2),
49
+ _ = _useReducer2[0],
50
+ dispatch = _useReducer2[1];
51
+
45
52
  var _useContext = useContext(LocaleContext),
46
53
  formatMessage = _useContext.formatMessage;
47
54
 
@@ -51,7 +58,21 @@ var Pages = function Pages(_ref) {
51
58
  previewText = _useContext2.previewText,
52
59
  nextText = _useContext2.nextText,
53
60
  submitting = _useContext2.submitting,
54
- showSubmitButton = _useContext2.showSubmitButton;
61
+ showSubmitButton = _useContext2.showSubmitButton,
62
+ registerDependencies = _useContext2.registerDependencies;
63
+
64
+ useEffect(function () {
65
+ var subscribe = elements.some(function (_ref2) {
66
+ var shouldRender = _ref2.shouldRender,
67
+ getButtonDisabledState = _ref2.getButtonDisabledState,
68
+ getPreviousDisabledState = _ref2.getPreviousDisabledState;
69
+ return Boolean(shouldRender) || Boolean(getButtonDisabledState) || Boolean(getPreviousDisabledState);
70
+ });
71
+
72
+ if (subscribe) {
73
+ registerDependencies('SUBSCRIBE_ALL', dispatch);
74
+ }
75
+ }, []);
55
76
 
56
77
  var _useBreakpoint = useBreakpoint(),
57
78
  md = _useBreakpoint.md;
@@ -62,10 +83,10 @@ var Pages = function Pages(_ref) {
62
83
  });
63
84
 
64
85
  var handleNext = /*#__PURE__*/function () {
65
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
86
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
66
87
  var _allFields$filter;
67
88
 
68
- var allFields, _renderElements$curre, currentName, handleNext, namePath, fields, errorFields, errors;
89
+ var allFields, _renderElements$curre, currentName, handleNext, namePath, fields, errors;
69
90
 
70
91
  return regeneratorRuntime.wrap(function _callee$(_context) {
71
92
  while (1) {
@@ -74,11 +95,11 @@ var Pages = function Pages(_ref) {
74
95
  allFields = (form === null || form === void 0 ? void 0 : form.getFieldsError()) || [];
75
96
  _renderElements$curre = renderElements[current], currentName = _renderElements$curre.name, handleNext = _renderElements$curre.handleNext;
76
97
  namePath = calcNamePath(name, currentName);
77
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref3) {
78
- var name = _ref3.name;
79
- return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
80
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref4) {
98
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
81
99
  var name = _ref4.name;
100
+ return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
101
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
102
+ var name = _ref5.name;
82
103
  return name;
83
104
  });
84
105
  _context.prev = 4;
@@ -86,58 +107,57 @@ var Pages = function Pages(_ref) {
86
107
  return form === null || form === void 0 ? void 0 : form.validateFields(fields);
87
108
 
88
109
  case 7:
89
- _context.next = 14;
110
+ _context.next = 13;
90
111
  break;
91
112
 
92
113
  case 9:
93
114
  _context.prev = 9;
94
115
  _context.t0 = _context["catch"](4);
95
- errorFields = _context.t0.errorFields;
96
- form === null || form === void 0 ? void 0 : form.scrollToField(errorFields[0].name);
116
+ form === null || form === void 0 ? void 0 : form.scrollToField(_context.t0.errorFields[0].name);
97
117
  return _context.abrupt("return");
98
118
 
99
- case 14:
119
+ case 13:
100
120
  if (!(typeof handleNext === 'function')) {
101
- _context.next = 26;
121
+ _context.next = 25;
102
122
  break;
103
123
  }
104
124
 
105
- _context.prev = 15;
106
- _context.next = 18;
125
+ _context.prev = 14;
126
+ _context.next = 17;
107
127
  return handleNext(form === null || form === void 0 ? void 0 : form.getFieldsValue(fields));
108
128
 
109
- case 18:
129
+ case 17:
110
130
  errors = _context.sent;
111
131
 
112
132
  if (!Array.isArray(errors)) {
113
- _context.next = 21;
133
+ _context.next = 20;
114
134
  break;
115
135
  }
116
136
 
117
137
  return _context.abrupt("return", form === null || form === void 0 ? void 0 : form.setFields(errors));
118
138
 
119
- case 21:
120
- _context.next = 26;
139
+ case 20:
140
+ _context.next = 25;
121
141
  break;
122
142
 
123
- case 23:
124
- _context.prev = 23;
125
- _context.t1 = _context["catch"](15);
143
+ case 22:
144
+ _context.prev = 22;
145
+ _context.t1 = _context["catch"](14);
126
146
  return _context.abrupt("return");
127
147
 
128
- case 26:
148
+ case 25:
129
149
  setCurrent(current + 1);
130
150
 
131
- case 27:
151
+ case 26:
132
152
  case "end":
133
153
  return _context.stop();
134
154
  }
135
155
  }
136
- }, _callee, null, [[4, 9], [15, 23]]);
156
+ }, _callee, null, [[4, 9], [14, 22]]);
137
157
  }));
138
158
 
139
159
  return function handleNext() {
140
- return _ref2.apply(this, arguments);
160
+ return _ref3.apply(this, arguments);
141
161
  };
142
162
  }();
143
163
 
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useContext } from 'react';
2
+ import { useContext, useCallback } from 'react';
3
3
  import FormContext from '../context';
4
4
 
5
5
  var RenderElement = function RenderElement(_ref) {
@@ -16,7 +16,8 @@ var RenderElement = function RenderElement(_ref) {
16
16
  var _useContext = useContext(FormContext),
17
17
  form = _useContext.form;
18
18
 
19
- return render(preview, form, value, onChange, setShowStepButton);
19
+ var memoedRender = useCallback(render, [render]);
20
+ return memoedRender(preview, form, value, onChange, setShowStepButton);
20
21
  };
21
22
 
22
23
  RenderElement.formItemPropsHandler = function (_ref2) {
@@ -15,7 +15,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
15
15
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
16
 
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
- import { useState, useContext, useEffect } from 'react';
18
+ import { useState, useContext, useEffect, useReducer } from 'react';
19
19
  import Step from '../step';
20
20
  import { calcNamePath } from '../utils';
21
21
  import FormContext from '../context';
@@ -46,20 +46,38 @@ var Steps = function Steps(_ref) {
46
46
  shouldScroll = _useState6[0],
47
47
  setShouldScroll = _useState6[1];
48
48
 
49
- var _useContext = useContext(FormContext),
50
- form = _useContext.form;
49
+ var _useReducer = useReducer(function (r) {
50
+ return r + 1;
51
+ }, 0),
52
+ _useReducer2 = _slicedToArray(_useReducer, 2),
53
+ _ = _useReducer2[0],
54
+ dispatch = _useReducer2[1];
51
55
 
52
- useEffect(function () {}, [current]);
56
+ var _useContext = useContext(FormContext),
57
+ form = _useContext.form,
58
+ registerDependencies = _useContext.registerDependencies;
59
+
60
+ useEffect(function () {
61
+ var subscribe = elements.some(function (_ref2) {
62
+ var shouldRender = _ref2.shouldRender,
63
+ getButtonDisabledState = _ref2.getButtonDisabledState;
64
+ return Boolean(shouldRender) || Boolean(getButtonDisabledState);
65
+ });
66
+
67
+ if (subscribe) {
68
+ registerDependencies('SUBSCRIBE_ALL', dispatch);
69
+ }
70
+ }, []);
53
71
  var renderElements = elements.filter(function (step) {
54
72
  step.key = step.name || step.key || Math.random();
55
73
  return typeof step.shouldRender !== 'function' || step.shouldRender(form);
56
74
  });
57
75
 
58
76
  var handleNext = /*#__PURE__*/function () {
59
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
77
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
60
78
  var _allFields$filter;
61
79
 
62
- var allFields, _renderElements$curre, currentName, handleNext, namePath, fields, errorFields, errors;
80
+ var allFields, _renderElements$curre, currentName, handleNext, namePath, fields, errors;
63
81
 
64
82
  return regeneratorRuntime.wrap(function _callee$(_context) {
65
83
  while (1) {
@@ -68,11 +86,11 @@ var Steps = function Steps(_ref) {
68
86
  allFields = (form === null || form === void 0 ? void 0 : form.getFieldsError()) || [];
69
87
  _renderElements$curre = renderElements[current], currentName = _renderElements$curre.name, handleNext = _renderElements$curre.handleNext;
70
88
  namePath = calcNamePath(name, currentName);
71
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref3) {
72
- var name = _ref3.name;
73
- return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
74
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref4) {
89
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
75
90
  var name = _ref4.name;
91
+ return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
92
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
93
+ var name = _ref5.name;
76
94
  return name;
77
95
  });
78
96
  _context.prev = 4;
@@ -80,60 +98,59 @@ var Steps = function Steps(_ref) {
80
98
  return form === null || form === void 0 ? void 0 : form.validateFields(fields);
81
99
 
82
100
  case 7:
83
- _context.next = 14;
101
+ _context.next = 13;
84
102
  break;
85
103
 
86
104
  case 9:
87
105
  _context.prev = 9;
88
106
  _context.t0 = _context["catch"](4);
89
- errorFields = _context.t0.errorFields;
90
- form === null || form === void 0 ? void 0 : form.scrollToField(errorFields[0].name);
107
+ form === null || form === void 0 ? void 0 : form.scrollToField(_context.t0.errorFields[0].name);
91
108
  return _context.abrupt("return");
92
109
 
93
- case 14:
110
+ case 13:
94
111
  if (!(typeof handleNext === 'function')) {
95
- _context.next = 26;
112
+ _context.next = 25;
96
113
  break;
97
114
  }
98
115
 
99
- _context.prev = 15;
100
- _context.next = 18;
116
+ _context.prev = 14;
117
+ _context.next = 17;
101
118
  return handleNext(form === null || form === void 0 ? void 0 : form.getFieldsValue(fields));
102
119
 
103
- case 18:
120
+ case 17:
104
121
  errors = _context.sent;
105
122
 
106
123
  if (!Array.isArray(errors)) {
107
- _context.next = 21;
124
+ _context.next = 20;
108
125
  break;
109
126
  }
110
127
 
111
128
  return _context.abrupt("return", form === null || form === void 0 ? void 0 : form.setFields(errors));
112
129
 
113
- case 21:
114
- _context.next = 26;
130
+ case 20:
131
+ _context.next = 25;
115
132
  break;
116
133
 
117
- case 23:
118
- _context.prev = 23;
119
- _context.t1 = _context["catch"](15);
134
+ case 22:
135
+ _context.prev = 22;
136
+ _context.t1 = _context["catch"](14);
120
137
  return _context.abrupt("return");
121
138
 
122
- case 26:
139
+ case 25:
123
140
  setCurrent(last || current + 1);
124
141
  setLast(0);
125
142
  setShouldScroll(true);
126
143
 
127
- case 29:
144
+ case 28:
128
145
  case "end":
129
146
  return _context.stop();
130
147
  }
131
148
  }
132
- }, _callee, null, [[4, 9], [15, 23]]);
149
+ }, _callee, null, [[4, 9], [14, 22]]);
133
150
  }));
134
151
 
135
152
  return function handleNext() {
136
- return _ref2.apply(this, arguments);
153
+ return _ref3.apply(this, arguments);
137
154
  };
138
155
  }();
139
156
 
@@ -154,7 +171,7 @@ var Steps = function Steps(_ref) {
154
171
  return _jsx(Step, {
155
172
  config: child,
156
173
  parentName: calcNamePath(parentName, name),
157
- index: child.key,
174
+ index: index,
158
175
  total: renderElements.length,
159
176
  preview: current > index,
160
177
  edit: current === index,
@@ -162,7 +179,7 @@ var Steps = function Steps(_ref) {
162
179
  handleEdit: handleEdit,
163
180
  showLastIndex: showLastIndex,
164
181
  shouldScroll: shouldScroll
165
- }, index);
182
+ }, child.key);
166
183
  })
167
184
  }), void 0)
168
185
  }), void 0);