iglooform 2.5.42 → 2.5.44

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.
@@ -62,7 +62,7 @@ var IglooDatePicker = function IglooDatePicker(_ref) {
62
62
  setFocus = _useState2[1];
63
63
 
64
64
  return _jsx(_DatePicker, _objectSpread(_objectSpread({}, omit(props, formMethods)), {}, {
65
- value: value ? moment(value) : value,
65
+ value: moment(value),
66
66
  placeholder: placeholder || dateFormater,
67
67
  format: format || dateFormater,
68
68
  inputReadOnly: true,
@@ -89,7 +89,7 @@ IglooDatePicker.formItemPropsHandler = function (_ref2) {
89
89
  return moment(value).format(format || dateFormater);
90
90
  },
91
91
  valueFormater: function valueFormater(value) {
92
- return value ? +moment(value) : value;
92
+ return +moment(value);
93
93
  },
94
94
  'element-allowClear': false
95
95
  };
package/es/form/index.js CHANGED
@@ -95,22 +95,24 @@ var IglooForm = function IglooForm(props, ref) {
95
95
 
96
96
  var handleSubmit = /*#__PURE__*/function () {
97
97
  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
98
- var errors;
98
+ var allValues, errors;
99
99
  return regeneratorRuntime.wrap(function _callee$(_context) {
100
100
  while (1) {
101
101
  switch (_context.prev = _context.next) {
102
102
  case 0:
103
+ allValues = form.getFieldsValue(true);
104
+
103
105
  if (!(typeof onSubmit === 'function')) {
104
- _context.next = 10;
106
+ _context.next = 11;
105
107
  break;
106
108
  }
107
109
 
108
110
  setSubmitting(true);
109
- _context.prev = 2;
110
- _context.next = 5;
111
- return onSubmit(values);
111
+ _context.prev = 3;
112
+ _context.next = 6;
113
+ return onSubmit(values, allValues);
112
114
 
113
- case 5:
115
+ case 6:
114
116
  errors = _context.sent;
115
117
 
116
118
  if (Array.isArray(errors)) {
@@ -118,17 +120,17 @@ var IglooForm = function IglooForm(props, ref) {
118
120
  form.scrollToField(errors[0].name);
119
121
  }
120
122
 
121
- case 7:
122
- _context.prev = 7;
123
+ case 8:
124
+ _context.prev = 8;
123
125
  setSubmitting(false);
124
- return _context.finish(7);
126
+ return _context.finish(8);
125
127
 
126
- case 10:
128
+ case 11:
127
129
  case "end":
128
130
  return _context.stop();
129
131
  }
130
132
  }
131
- }, _callee, null, [[2,, 7, 10]]);
133
+ }, _callee, null, [[3,, 8, 11]]);
132
134
  }));
133
135
 
134
136
  return function handleSubmit(_x) {
@@ -139,7 +141,7 @@ var IglooForm = function IglooForm(props, ref) {
139
141
  useImperativeHandle(ref, function () {
140
142
  return {
141
143
  getValues: function () {
142
- var _getValues = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
144
+ var _getValues = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(getAll) {
143
145
  return regeneratorRuntime.wrap(function _callee2$(_context2) {
144
146
  while (1) {
145
147
  switch (_context2.prev = _context2.next) {
@@ -148,7 +150,7 @@ var IglooForm = function IglooForm(props, ref) {
148
150
  return form.validateFields();
149
151
 
150
152
  case 2:
151
- return _context2.abrupt("return", form.getFieldsValue());
153
+ return _context2.abrupt("return", getAll ? form.getFieldsValue(true) : form.getFieldsValue());
152
154
 
153
155
  case 3:
154
156
  case "end":
@@ -158,7 +160,7 @@ var IglooForm = function IglooForm(props, ref) {
158
160
  }, _callee2);
159
161
  }));
160
162
 
161
- function getValues() {
163
+ function getValues(_x2) {
162
164
  return _getValues.apply(this, arguments);
163
165
  }
164
166
 
@@ -241,6 +243,7 @@ var IglooForm = function IglooForm(props, ref) {
241
243
  validateMessages: validateMessages || messages,
242
244
  initialValues: initialValues,
243
245
  scrollToFirstError: true,
246
+ preserve: true,
244
247
  children: [type === 'Pages' && _jsx(Pages, {
245
248
  config: config
246
249
  }), type === 'Page' && _jsx(Page, {
package/es/types.d.ts CHANGED
@@ -21,7 +21,7 @@ export interface FormBasicConfig {
21
21
  initialValues?: any;
22
22
  form?: FormInstance;
23
23
  onCancel?(): void;
24
- onSubmit?(values: Object): any;
24
+ onSubmit?(values: Object, allValues?: Object): any;
25
25
  requiredMark?: boolean;
26
26
  showSubmitButton?: boolean;
27
27
  getScrollContainer?: () => HTMLElement | null;
@@ -103,11 +103,19 @@ export interface FormItemExtraConfig extends FormItemProps {
103
103
  relativeRangeStart?: {
104
104
  type: 'day' | 'month' | 'year';
105
105
  quantity: number;
106
+ pattern?: string;
107
+ dependField?: NamePath;
106
108
  };
107
109
  relativeRangeEnd?: {
108
110
  type: 'day' | 'month' | 'year';
109
111
  quantity: number;
112
+ pattern?: string;
113
+ dependField?: NamePath;
110
114
  };
115
+ validationCode?: {
116
+ code: string;
117
+ errorMessage: string;
118
+ }[];
111
119
  length?: number;
112
120
  minLength?: number;
113
121
  maxLength?: number;
@@ -1,4 +1,4 @@
1
- var _excluded = ["type", "name", "required", "requiredAsserts", "showOptional", "rules", "initialValue", "normalize", "mergeRules", "getValueFromEvent", "getValueProps", "extra", "help", "label", "previewLabel", "extraLabel", "copyValue", "selectValue", "span", "halfRow", "fullRow", "valuePropName", "dependencies", "asserts", "messageVariables", "requiredMessage", "previewFormater", "disabled", "ignore", "shouldRender", "valueFormater", "antdDependencies", "dateLimitationType", "absoluteRangeEnd", "absoluteRangeStart", "relativeRangeStart", "relativeRangeEnd"],
1
+ var _excluded = ["type", "name", "required", "requiredAsserts", "showOptional", "rules", "initialValue", "normalize", "mergeRules", "getValueFromEvent", "getValueProps", "extra", "help", "label", "previewLabel", "extraLabel", "copyValue", "selectValue", "span", "halfRow", "fullRow", "valuePropName", "dependencies", "asserts", "messageVariables", "requiredMessage", "previewFormater", "disabled", "ignore", "shouldRender", "valueFormater", "antdDependencies", "dateLimitationType", "absoluteRangeEnd", "absoluteRangeStart", "relativeRangeStart", "relativeRangeEnd", "dependField", "validationCode"],
2
2
  _excluded2 = ["initialValue", "normalize", "rules", "extra", "help", "getValueFromEvent", "span", "valuePropName", "fullRow", "halfRow", "messageVariables", "requiredMessage", "previewFormater", "valueFormater", "required", "requiredMark", "className"];
3
3
 
4
4
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
@@ -103,11 +103,7 @@ export var testAssert = function testAssert(form, assert) {
103
103
  return true;
104
104
  };
105
105
 
106
- var calcRequired = function calcRequired() {
107
- var required = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
108
- var form = arguments.length > 1 ? arguments[1] : undefined;
109
- var requiredAsserts = arguments.length > 2 ? arguments[2] : undefined;
110
-
106
+ var calcRequired = function calcRequired(required, form, requiredAsserts) {
111
107
  if (Array.isArray(requiredAsserts)) {
112
108
  return requiredAsserts.every(function (assert) {
113
109
  return form && testAssert(form, assert);
@@ -120,7 +116,8 @@ var calcRequired = function calcRequired() {
120
116
  export var calcFormItemProps = function calcFormItemProps(config, extraProps, form, parentName) {
121
117
  var type = config.type,
122
118
  nameProp = config.name,
123
- required = config.required,
119
+ _config$required = config.required,
120
+ required = _config$required === void 0 ? true : _config$required,
124
121
  requiredAsserts = config.requiredAsserts,
125
122
  _config$showOptional = config.showOptional,
126
123
  showOptional = _config$showOptional === void 0 ? false : _config$showOptional,
@@ -160,6 +157,9 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
160
157
  absoluteRangeStart = config.absoluteRangeStart,
161
158
  relativeRangeStart = config.relativeRangeStart,
162
159
  relativeRangeEnd = config.relativeRangeEnd,
160
+ dependField = config.dependField,
161
+ _config$validationCod = config.validationCode,
162
+ validationCode = _config$validationCod === void 0 ? [] : _config$validationCod,
163
163
  rest = _objectWithoutProperties(config, _excluded);
164
164
 
165
165
  invariant(nameProp !== undefined || type === 'Divider' || type === 'Section' || type === 'Typography' || !type, "name property is required for form item config (type: ".concat(type, ")"));
@@ -184,14 +184,13 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
184
184
  extraValueFormater = _extraProps$valueForm === void 0 ? function (value) {
185
185
  return value;
186
186
  } : _extraProps$valueForm,
187
- _extraProps$required = extraProps.required,
188
- extraRequired = _extraProps$required === void 0 ? true : _extraProps$required,
187
+ extraRequired = extraProps.required,
189
188
  _extraProps$requiredM = extraProps.requiredMark,
190
189
  requiredMark = _extraProps$requiredM === void 0 ? false : _extraProps$requiredM,
191
190
  className = extraProps.className,
192
191
  extraRest = _objectWithoutProperties(extraProps, _excluded2);
193
192
 
194
- var rules = calcRequired(required || extraRequired, form, requiredAsserts) ? [{
193
+ var rules = calcRequired(required !== null && required !== void 0 ? required : extraRequired, form, requiredAsserts) ? [{
195
194
  required: type !== 'Declaration',
196
195
  message: requiredMessage || extraRequiredMessage
197
196
  }].concat(_toConsumableArray(propsRules)) : _toConsumableArray(propsRules);
@@ -221,71 +220,84 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
221
220
  elementProps.disabled = calcDisabled(disabled, form) || copiedValue.disabled || selectedValue.disabled;
222
221
 
223
222
  if (dateLimitationType) {
224
- if (['DatePicker', 'BuddhistDatePicker'].includes(type)) {
225
- var rangeStart = Number.MIN_SAFE_INTEGER;
226
- var rangeEnd = Number.MAX_SAFE_INTEGER;
223
+ var rangeStart;
224
+ var rangeEnd;
227
225
 
228
- if (dateLimitationType === 'absolute' && absoluteRangeStart) {
229
- rangeStart = +moment(absoluteRangeStart).startOf('day');
230
- }
226
+ if (dateLimitationType === 'absolute' && absoluteRangeStart) {
227
+ rangeStart = moment(absoluteRangeStart).startOf('day');
228
+ }
231
229
 
232
- if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.quantity) !== undefined) {
233
- rangeStart = +moment().add(relativeRangeStart.quantity, relativeRangeStart.type).startOf('day');
234
- }
230
+ if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.quantity) !== undefined) {
231
+ var dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
232
+ rangeStart = moment(dependFieldValue).add(relativeRangeStart.quantity, relativeRangeStart.type).startOf('day');
233
+ }
235
234
 
236
- if (dateLimitationType === 'absolute' && absoluteRangeEnd) {
237
- rangeEnd = +moment(absoluteRangeEnd).endOf('day');
238
- }
235
+ if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.pattern)) {
236
+ var result = Array.from(relativeRangeStart.pattern.matchAll(/^(([-|+]{0,1}\d+)y){0,1}(([-|+]{0,1}\d+)m){0,1}(([-|+]{0,1}\d+)d){0,1}$/g));
237
+
238
+ if (result.length) {
239
+ var year = result[0][2] || 0;
240
+ var month = result[0][4] || 0;
241
+ var day = result[0][6] || 0;
239
242
 
240
- if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.quantity) !== undefined) {
241
- rangeEnd = +moment().add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
243
+ var _dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
244
+
245
+ rangeStart = moment(_dependFieldValue).add(year, 'year').add(month, 'month').add(day, 'day').startOf('day');
242
246
  }
247
+ }
243
248
 
244
- elementProps.disabledDate = function (current) {
245
- return +current < rangeStart || +current > (rangeEnd || Number.MAX_SAFE_INTEGER);
246
- };
249
+ if (dateLimitationType === 'absolute' && absoluteRangeEnd) {
250
+ rangeEnd = moment(absoluteRangeEnd).endOf('day');
247
251
  }
248
252
 
249
- if (type === 'InputDate') {
250
- var _rangeStart;
253
+ if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.quantity) !== undefined) {
254
+ var _dependFieldValue2 = relativeRangeEnd.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeEnd.dependField) : undefined;
251
255
 
252
- var _rangeEnd;
256
+ rangeEnd = moment(_dependFieldValue2).add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
257
+ }
253
258
 
254
- if (dateLimitationType === 'absolute' && absoluteRangeStart) {
255
- _rangeStart = moment(absoluteRangeStart).startOf('day');
256
- }
259
+ if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.pattern)) {
260
+ var _result = Array.from(relativeRangeEnd.pattern.matchAll(/^(([-|+]{0,1}\d+)y){0,1}(([-|+]{0,1}\d+)m){0,1}(([-|+]{0,1}\d+)d){0,1}$/g));
257
261
 
258
- if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.quantity) !== undefined) {
259
- _rangeStart = moment().add(relativeRangeStart.quantity, relativeRangeStart.type).startOf('day');
260
- }
262
+ if (_result.length) {
263
+ var _year = _result[0][2] || 0;
261
264
 
262
- if (dateLimitationType === 'absolute' && absoluteRangeEnd) {
263
- _rangeEnd = moment(absoluteRangeEnd).endOf('day');
264
- }
265
+ var _month = _result[0][4] || 0;
266
+
267
+ var _day = _result[0][6] || 0;
265
268
 
266
- if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.quantity) !== undefined) {
267
- _rangeEnd = moment().add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
269
+ var _dependFieldValue3 = relativeRangeEnd.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeEnd.dependField) : undefined;
270
+
271
+ rangeEnd = moment(_dependFieldValue3).add(_year, 'year').add(_month, 'month').add(_day, 'day').endOf('day');
268
272
  }
273
+ }
269
274
 
275
+ if (['DatePicker', 'BuddhistDatePicker'].includes(type)) {
276
+ elementProps.disabledDate = function (current) {
277
+ return +current < (rangeStart ? +rangeStart : Number.MIN_SAFE_INTEGER) || +current > (rangeEnd ? +rangeEnd : Number.MAX_SAFE_INTEGER);
278
+ };
279
+ }
280
+
281
+ if (type === 'InputDate') {
270
282
  rules.push({
271
283
  validator: function validator(_, date) {
272
284
  var trimedDate = date.replaceAll(/\s/g, '');
273
285
  var format = elementProps.format ? elementProps.format.replaceAll(/\s/g, '') : 'DD/MM/YYYY';
274
286
 
275
- if (_rangeStart && moment(trimedDate, format) < _rangeStart) {
287
+ if (rangeStart && moment(trimedDate, format) < rangeStart) {
276
288
  return Promise.reject(_jsx(FormattedMessage, {
277
289
  id: "Please input a date after {date}",
278
290
  values: {
279
- date: _rangeStart.format(format)
291
+ date: rangeStart.format(format)
280
292
  }
281
293
  }));
282
294
  }
283
295
 
284
- if (_rangeEnd && moment(trimedDate, format) > _rangeEnd) {
296
+ if (rangeEnd && moment(trimedDate, format) > rangeEnd) {
285
297
  return Promise.reject(_jsx(FormattedMessage, {
286
298
  id: "Please input a date before {date}",
287
299
  values: {
288
- date: _rangeEnd.format(format)
300
+ date: rangeEnd.format(format)
289
301
  }
290
302
  }));
291
303
  }
@@ -296,6 +308,27 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
296
308
  }
297
309
  }
298
310
 
311
+ if (validationCode.length) {
312
+ rules.push.apply(rules, _toConsumableArray(validationCode.map(function (_ref2) {
313
+ var code = _ref2.code,
314
+ errorMessage = _ref2.errorMessage;
315
+ return {
316
+ validator: function validator(_, value) {
317
+ try {
318
+ var fn = eval(code);
319
+ var formValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
320
+
321
+ var _result2 = fn(value, formValues);
322
+
323
+ return _result2 ? Promise.resolve() : Promise.reject(errorMessage);
324
+ } catch (_unused) {
325
+ return Promise.reject(errorMessage);
326
+ }
327
+ }
328
+ };
329
+ })));
330
+ }
331
+
299
332
  return {
300
333
  colProps: {
301
334
  span: extraFullRow && fullRow === undefined || fullRow || extraHalfRow && halfRow === undefined || halfRow ? 24 : span || extraSpan || 12,
@@ -307,7 +340,7 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
307
340
  formItemProps: {
308
341
  name: name,
309
342
  className: className,
310
- initialValue: (valueFormater || extraValueFormater)(initialValue || extraInitialValue),
343
+ initialValue: (valueFormater || extraValueFormater)(initialValue !== null && initialValue !== void 0 ? initialValue : extraInitialValue),
311
344
  copiedValue: copiedValue,
312
345
  selectedValue: selectedValue,
313
346
  normalize: normalize || extraNormalize,
@@ -89,7 +89,7 @@ var IglooDatePicker = function IglooDatePicker(_ref) {
89
89
  setFocus = _useState2[1];
90
90
 
91
91
  return (0, _jsxRuntime.jsx)(_datePicker.default, _objectSpread(_objectSpread({}, (0, _omit.default)(props, _formMethods.default)), {}, {
92
- value: value ? (0, _moment.default)(value) : value,
92
+ value: (0, _moment.default)(value),
93
93
  placeholder: placeholder || dateFormater,
94
94
  format: format || dateFormater,
95
95
  inputReadOnly: true,
@@ -116,7 +116,7 @@ IglooDatePicker.formItemPropsHandler = function (_ref2) {
116
116
  return (0, _moment.default)(value).format(format || dateFormater);
117
117
  },
118
118
  valueFormater: function valueFormater(value) {
119
- return value ? +(0, _moment.default)(value) : value;
119
+ return +(0, _moment.default)(value);
120
120
  },
121
121
  'element-allowClear': false
122
122
  };
package/lib/form/index.js CHANGED
@@ -117,22 +117,24 @@ var IglooForm = function IglooForm(props, ref) {
117
117
 
118
118
  var handleSubmit = /*#__PURE__*/function () {
119
119
  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
120
- var errors;
120
+ var allValues, errors;
121
121
  return regeneratorRuntime.wrap(function _callee$(_context) {
122
122
  while (1) {
123
123
  switch (_context.prev = _context.next) {
124
124
  case 0:
125
+ allValues = form.getFieldsValue(true);
126
+
125
127
  if (!(typeof onSubmit === 'function')) {
126
- _context.next = 10;
128
+ _context.next = 11;
127
129
  break;
128
130
  }
129
131
 
130
132
  setSubmitting(true);
131
- _context.prev = 2;
132
- _context.next = 5;
133
- return onSubmit(values);
133
+ _context.prev = 3;
134
+ _context.next = 6;
135
+ return onSubmit(values, allValues);
134
136
 
135
- case 5:
137
+ case 6:
136
138
  errors = _context.sent;
137
139
 
138
140
  if (Array.isArray(errors)) {
@@ -140,17 +142,17 @@ var IglooForm = function IglooForm(props, ref) {
140
142
  form.scrollToField(errors[0].name);
141
143
  }
142
144
 
143
- case 7:
144
- _context.prev = 7;
145
+ case 8:
146
+ _context.prev = 8;
145
147
  setSubmitting(false);
146
- return _context.finish(7);
148
+ return _context.finish(8);
147
149
 
148
- case 10:
150
+ case 11:
149
151
  case "end":
150
152
  return _context.stop();
151
153
  }
152
154
  }
153
- }, _callee, null, [[2,, 7, 10]]);
155
+ }, _callee, null, [[3,, 8, 11]]);
154
156
  }));
155
157
 
156
158
  return function handleSubmit(_x) {
@@ -161,7 +163,7 @@ var IglooForm = function IglooForm(props, ref) {
161
163
  (0, _react.useImperativeHandle)(ref, function () {
162
164
  return {
163
165
  getValues: function () {
164
- var _getValues = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
166
+ var _getValues = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(getAll) {
165
167
  return regeneratorRuntime.wrap(function _callee2$(_context2) {
166
168
  while (1) {
167
169
  switch (_context2.prev = _context2.next) {
@@ -170,7 +172,7 @@ var IglooForm = function IglooForm(props, ref) {
170
172
  return form.validateFields();
171
173
 
172
174
  case 2:
173
- return _context2.abrupt("return", form.getFieldsValue());
175
+ return _context2.abrupt("return", getAll ? form.getFieldsValue(true) : form.getFieldsValue());
174
176
 
175
177
  case 3:
176
178
  case "end":
@@ -180,7 +182,7 @@ var IglooForm = function IglooForm(props, ref) {
180
182
  }, _callee2);
181
183
  }));
182
184
 
183
- function getValues() {
185
+ function getValues(_x2) {
184
186
  return _getValues.apply(this, arguments);
185
187
  }
186
188
 
@@ -263,6 +265,7 @@ var IglooForm = function IglooForm(props, ref) {
263
265
  validateMessages: validateMessages || _messages.default,
264
266
  initialValues: initialValues,
265
267
  scrollToFirstError: true,
268
+ preserve: true,
266
269
  children: [type === 'Pages' && (0, _jsxRuntime.jsx)(_pages.default, {
267
270
  config: config
268
271
  }), type === 'Page' && (0, _jsxRuntime.jsx)(_page.default, {
package/lib/types.d.ts CHANGED
@@ -21,7 +21,7 @@ export interface FormBasicConfig {
21
21
  initialValues?: any;
22
22
  form?: FormInstance;
23
23
  onCancel?(): void;
24
- onSubmit?(values: Object): any;
24
+ onSubmit?(values: Object, allValues?: Object): any;
25
25
  requiredMark?: boolean;
26
26
  showSubmitButton?: boolean;
27
27
  getScrollContainer?: () => HTMLElement | null;
@@ -103,11 +103,19 @@ export interface FormItemExtraConfig extends FormItemProps {
103
103
  relativeRangeStart?: {
104
104
  type: 'day' | 'month' | 'year';
105
105
  quantity: number;
106
+ pattern?: string;
107
+ dependField?: NamePath;
106
108
  };
107
109
  relativeRangeEnd?: {
108
110
  type: 'day' | 'month' | 'year';
109
111
  quantity: number;
112
+ pattern?: string;
113
+ dependField?: NamePath;
110
114
  };
115
+ validationCode?: {
116
+ code: string;
117
+ errorMessage: string;
118
+ }[];
111
119
  length?: number;
112
120
  minLength?: number;
113
121
  maxLength?: number;