iglooform 2.5.43 → 2.5.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/date-picker/index.js +2 -2
- package/es/form/index.js +17 -14
- package/es/types.d.ts +9 -1
- package/es/utils/form-utils.js +73 -37
- package/lib/date-picker/index.js +2 -2
- package/lib/form/index.js +17 -14
- package/lib/types.d.ts +9 -1
- package/lib/utils/form-utils.js +73 -37
- package/package.json +1 -1
package/es/date-picker/index.js
CHANGED
|
@@ -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:
|
|
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
|
|
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 =
|
|
106
|
+
_context.next = 11;
|
|
105
107
|
break;
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
setSubmitting(true);
|
|
109
|
-
_context.prev =
|
|
110
|
-
_context.next =
|
|
111
|
-
return onSubmit(values);
|
|
111
|
+
_context.prev = 3;
|
|
112
|
+
_context.next = 6;
|
|
113
|
+
return onSubmit(values, allValues);
|
|
112
114
|
|
|
113
|
-
case
|
|
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
|
|
122
|
-
_context.prev =
|
|
123
|
+
case 8:
|
|
124
|
+
_context.prev = 8;
|
|
123
125
|
setSubmitting(false);
|
|
124
|
-
return _context.finish(
|
|
126
|
+
return _context.finish(8);
|
|
125
127
|
|
|
126
|
-
case
|
|
128
|
+
case 11:
|
|
127
129
|
case "end":
|
|
128
130
|
return _context.stop();
|
|
129
131
|
}
|
|
130
132
|
}
|
|
131
|
-
}, _callee, null, [[
|
|
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;
|
package/es/utils/form-utils.js
CHANGED
|
@@ -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", "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; } } }; }
|
|
@@ -157,6 +157,8 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
|
|
|
157
157
|
absoluteRangeStart = config.absoluteRangeStart,
|
|
158
158
|
relativeRangeStart = config.relativeRangeStart,
|
|
159
159
|
relativeRangeEnd = config.relativeRangeEnd,
|
|
160
|
+
_config$validationCod = config.validationCode,
|
|
161
|
+
validationCode = _config$validationCod === void 0 ? [] : _config$validationCod,
|
|
160
162
|
rest = _objectWithoutProperties(config, _excluded);
|
|
161
163
|
|
|
162
164
|
invariant(nameProp !== undefined || type === 'Divider' || type === 'Section' || type === 'Typography' || !type, "name property is required for form item config (type: ".concat(type, ")"));
|
|
@@ -217,71 +219,84 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
|
|
|
217
219
|
elementProps.disabled = calcDisabled(disabled, form) || copiedValue.disabled || selectedValue.disabled;
|
|
218
220
|
|
|
219
221
|
if (dateLimitationType) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
var rangeEnd = Number.MAX_SAFE_INTEGER;
|
|
222
|
+
var rangeStart;
|
|
223
|
+
var rangeEnd;
|
|
223
224
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
225
|
+
if (dateLimitationType === 'absolute' && absoluteRangeStart) {
|
|
226
|
+
rangeStart = moment(absoluteRangeStart).startOf('day');
|
|
227
|
+
}
|
|
227
228
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
229
|
+
if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.quantity) !== undefined) {
|
|
230
|
+
var dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
|
|
231
|
+
rangeStart = moment(dependFieldValue).add(relativeRangeStart.quantity, relativeRangeStart.type).startOf('day');
|
|
232
|
+
}
|
|
231
233
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
234
|
+
if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.pattern)) {
|
|
235
|
+
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));
|
|
236
|
+
|
|
237
|
+
if (result.length) {
|
|
238
|
+
var year = result[0][2] || 0;
|
|
239
|
+
var month = result[0][4] || 0;
|
|
240
|
+
var day = result[0][6] || 0;
|
|
241
|
+
|
|
242
|
+
var _dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
|
|
235
243
|
|
|
236
|
-
|
|
237
|
-
rangeEnd = +moment().add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
|
|
244
|
+
rangeStart = moment(_dependFieldValue).add(year, 'year').add(month, 'month').add(day, 'day').startOf('day');
|
|
238
245
|
}
|
|
246
|
+
}
|
|
239
247
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
};
|
|
248
|
+
if (dateLimitationType === 'absolute' && absoluteRangeEnd) {
|
|
249
|
+
rangeEnd = moment(absoluteRangeEnd).endOf('day');
|
|
243
250
|
}
|
|
244
251
|
|
|
245
|
-
if (
|
|
246
|
-
var
|
|
252
|
+
if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.quantity) !== undefined) {
|
|
253
|
+
var _dependFieldValue2 = relativeRangeEnd.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeEnd.dependField) : undefined;
|
|
247
254
|
|
|
248
|
-
|
|
255
|
+
rangeEnd = moment(_dependFieldValue2).add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
|
|
256
|
+
}
|
|
249
257
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
258
|
+
if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.pattern)) {
|
|
259
|
+
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));
|
|
253
260
|
|
|
254
|
-
if (
|
|
255
|
-
|
|
256
|
-
}
|
|
261
|
+
if (_result.length) {
|
|
262
|
+
var _year = _result[0][2] || 0;
|
|
257
263
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
264
|
+
var _month = _result[0][4] || 0;
|
|
265
|
+
|
|
266
|
+
var _day = _result[0][6] || 0;
|
|
261
267
|
|
|
262
|
-
|
|
263
|
-
|
|
268
|
+
var _dependFieldValue3 = relativeRangeEnd.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeEnd.dependField) : undefined;
|
|
269
|
+
|
|
270
|
+
rangeEnd = moment(_dependFieldValue3).add(_year, 'year').add(_month, 'month').add(_day, 'day').endOf('day');
|
|
264
271
|
}
|
|
272
|
+
}
|
|
265
273
|
|
|
274
|
+
if (['DatePicker', 'BuddhistDatePicker'].includes(type)) {
|
|
275
|
+
elementProps.disabledDate = function (current) {
|
|
276
|
+
return +current < (rangeStart ? +rangeStart : Number.MIN_SAFE_INTEGER) || +current > (rangeEnd ? +rangeEnd : Number.MAX_SAFE_INTEGER);
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (type === 'InputDate') {
|
|
266
281
|
rules.push({
|
|
267
282
|
validator: function validator(_, date) {
|
|
268
283
|
var trimedDate = date.replaceAll(/\s/g, '');
|
|
269
284
|
var format = elementProps.format ? elementProps.format.replaceAll(/\s/g, '') : 'DD/MM/YYYY';
|
|
270
285
|
|
|
271
|
-
if (
|
|
286
|
+
if (rangeStart && moment(trimedDate, format) < rangeStart) {
|
|
272
287
|
return Promise.reject(_jsx(FormattedMessage, {
|
|
273
288
|
id: "Please input a date after {date}",
|
|
274
289
|
values: {
|
|
275
|
-
date:
|
|
290
|
+
date: rangeStart.format(format)
|
|
276
291
|
}
|
|
277
292
|
}));
|
|
278
293
|
}
|
|
279
294
|
|
|
280
|
-
if (
|
|
295
|
+
if (rangeEnd && moment(trimedDate, format) > rangeEnd) {
|
|
281
296
|
return Promise.reject(_jsx(FormattedMessage, {
|
|
282
297
|
id: "Please input a date before {date}",
|
|
283
298
|
values: {
|
|
284
|
-
date:
|
|
299
|
+
date: rangeEnd.format(format)
|
|
285
300
|
}
|
|
286
301
|
}));
|
|
287
302
|
}
|
|
@@ -292,6 +307,27 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
|
|
|
292
307
|
}
|
|
293
308
|
}
|
|
294
309
|
|
|
310
|
+
if (validationCode.length) {
|
|
311
|
+
rules.push.apply(rules, _toConsumableArray(validationCode.map(function (_ref2) {
|
|
312
|
+
var code = _ref2.code,
|
|
313
|
+
errorMessage = _ref2.errorMessage;
|
|
314
|
+
return {
|
|
315
|
+
validator: function validator(_, value) {
|
|
316
|
+
try {
|
|
317
|
+
var fn = eval(code);
|
|
318
|
+
var formValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
|
|
319
|
+
|
|
320
|
+
var _result2 = fn(value, formValues);
|
|
321
|
+
|
|
322
|
+
return _result2 ? Promise.resolve() : Promise.reject(errorMessage);
|
|
323
|
+
} catch (_unused) {
|
|
324
|
+
return Promise.reject(errorMessage);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
})));
|
|
329
|
+
}
|
|
330
|
+
|
|
295
331
|
return {
|
|
296
332
|
colProps: {
|
|
297
333
|
span: extraFullRow && fullRow === undefined || fullRow || extraHalfRow && halfRow === undefined || halfRow ? 24 : span || extraSpan || 12,
|
|
@@ -303,7 +339,7 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
|
|
|
303
339
|
formItemProps: {
|
|
304
340
|
name: name,
|
|
305
341
|
className: className,
|
|
306
|
-
initialValue: (valueFormater || extraValueFormater)(initialValue
|
|
342
|
+
initialValue: (valueFormater || extraValueFormater)(initialValue !== null && initialValue !== void 0 ? initialValue : extraInitialValue),
|
|
307
343
|
copiedValue: copiedValue,
|
|
308
344
|
selectedValue: selectedValue,
|
|
309
345
|
normalize: normalize || extraNormalize,
|
package/lib/date-picker/index.js
CHANGED
|
@@ -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:
|
|
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
|
|
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 =
|
|
128
|
+
_context.next = 11;
|
|
127
129
|
break;
|
|
128
130
|
}
|
|
129
131
|
|
|
130
132
|
setSubmitting(true);
|
|
131
|
-
_context.prev =
|
|
132
|
-
_context.next =
|
|
133
|
-
return onSubmit(values);
|
|
133
|
+
_context.prev = 3;
|
|
134
|
+
_context.next = 6;
|
|
135
|
+
return onSubmit(values, allValues);
|
|
134
136
|
|
|
135
|
-
case
|
|
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
|
|
144
|
-
_context.prev =
|
|
145
|
+
case 8:
|
|
146
|
+
_context.prev = 8;
|
|
145
147
|
setSubmitting(false);
|
|
146
|
-
return _context.finish(
|
|
148
|
+
return _context.finish(8);
|
|
147
149
|
|
|
148
|
-
case
|
|
150
|
+
case 11:
|
|
149
151
|
case "end":
|
|
150
152
|
return _context.stop();
|
|
151
153
|
}
|
|
152
154
|
}
|
|
153
|
-
}, _callee, null, [[
|
|
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;
|
package/lib/utils/form-utils.js
CHANGED
|
@@ -15,7 +15,7 @@ var _formattedMessage = _interopRequireDefault(require("../locale/formatted-mess
|
|
|
15
15
|
|
|
16
16
|
var _moment = _interopRequireDefault(require("moment"));
|
|
17
17
|
|
|
18
|
-
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"],
|
|
18
|
+
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", "validationCode"],
|
|
19
19
|
_excluded2 = ["initialValue", "normalize", "rules", "extra", "help", "getValueFromEvent", "span", "valuePropName", "fullRow", "halfRow", "messageVariables", "requiredMessage", "previewFormater", "valueFormater", "required", "requiredMark", "className"];
|
|
20
20
|
|
|
21
21
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -176,6 +176,8 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
|
|
|
176
176
|
absoluteRangeStart = config.absoluteRangeStart,
|
|
177
177
|
relativeRangeStart = config.relativeRangeStart,
|
|
178
178
|
relativeRangeEnd = config.relativeRangeEnd,
|
|
179
|
+
_config$validationCod = config.validationCode,
|
|
180
|
+
validationCode = _config$validationCod === void 0 ? [] : _config$validationCod,
|
|
179
181
|
rest = _objectWithoutProperties(config, _excluded);
|
|
180
182
|
|
|
181
183
|
(0, _invariant.default)(nameProp !== undefined || type === 'Divider' || type === 'Section' || type === 'Typography' || !type, "name property is required for form item config (type: ".concat(type, ")"));
|
|
@@ -236,71 +238,84 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
|
|
|
236
238
|
elementProps.disabled = calcDisabled(disabled, form) || copiedValue.disabled || selectedValue.disabled;
|
|
237
239
|
|
|
238
240
|
if (dateLimitationType) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
var rangeEnd = Number.MAX_SAFE_INTEGER;
|
|
241
|
+
var rangeStart;
|
|
242
|
+
var rangeEnd;
|
|
242
243
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
244
|
+
if (dateLimitationType === 'absolute' && absoluteRangeStart) {
|
|
245
|
+
rangeStart = (0, _moment.default)(absoluteRangeStart).startOf('day');
|
|
246
|
+
}
|
|
246
247
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
248
|
+
if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.quantity) !== undefined) {
|
|
249
|
+
var dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
|
|
250
|
+
rangeStart = (0, _moment.default)(dependFieldValue).add(relativeRangeStart.quantity, relativeRangeStart.type).startOf('day');
|
|
251
|
+
}
|
|
250
252
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
253
|
+
if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.pattern)) {
|
|
254
|
+
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));
|
|
255
|
+
|
|
256
|
+
if (result.length) {
|
|
257
|
+
var year = result[0][2] || 0;
|
|
258
|
+
var month = result[0][4] || 0;
|
|
259
|
+
var day = result[0][6] || 0;
|
|
260
|
+
|
|
261
|
+
var _dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
|
|
254
262
|
|
|
255
|
-
|
|
256
|
-
rangeEnd = +(0, _moment.default)().add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
|
|
263
|
+
rangeStart = (0, _moment.default)(_dependFieldValue).add(year, 'year').add(month, 'month').add(day, 'day').startOf('day');
|
|
257
264
|
}
|
|
265
|
+
}
|
|
258
266
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
};
|
|
267
|
+
if (dateLimitationType === 'absolute' && absoluteRangeEnd) {
|
|
268
|
+
rangeEnd = (0, _moment.default)(absoluteRangeEnd).endOf('day');
|
|
262
269
|
}
|
|
263
270
|
|
|
264
|
-
if (
|
|
265
|
-
var
|
|
271
|
+
if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.quantity) !== undefined) {
|
|
272
|
+
var _dependFieldValue2 = relativeRangeEnd.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeEnd.dependField) : undefined;
|
|
266
273
|
|
|
267
|
-
|
|
274
|
+
rangeEnd = (0, _moment.default)(_dependFieldValue2).add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
|
|
275
|
+
}
|
|
268
276
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
277
|
+
if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.pattern)) {
|
|
278
|
+
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));
|
|
272
279
|
|
|
273
|
-
if (
|
|
274
|
-
|
|
275
|
-
}
|
|
280
|
+
if (_result.length) {
|
|
281
|
+
var _year = _result[0][2] || 0;
|
|
276
282
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
283
|
+
var _month = _result[0][4] || 0;
|
|
284
|
+
|
|
285
|
+
var _day = _result[0][6] || 0;
|
|
280
286
|
|
|
281
|
-
|
|
282
|
-
|
|
287
|
+
var _dependFieldValue3 = relativeRangeEnd.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeEnd.dependField) : undefined;
|
|
288
|
+
|
|
289
|
+
rangeEnd = (0, _moment.default)(_dependFieldValue3).add(_year, 'year').add(_month, 'month').add(_day, 'day').endOf('day');
|
|
283
290
|
}
|
|
291
|
+
}
|
|
284
292
|
|
|
293
|
+
if (['DatePicker', 'BuddhistDatePicker'].includes(type)) {
|
|
294
|
+
elementProps.disabledDate = function (current) {
|
|
295
|
+
return +current < (rangeStart ? +rangeStart : Number.MIN_SAFE_INTEGER) || +current > (rangeEnd ? +rangeEnd : Number.MAX_SAFE_INTEGER);
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
if (type === 'InputDate') {
|
|
285
300
|
rules.push({
|
|
286
301
|
validator: function validator(_, date) {
|
|
287
302
|
var trimedDate = date.replaceAll(/\s/g, '');
|
|
288
303
|
var format = elementProps.format ? elementProps.format.replaceAll(/\s/g, '') : 'DD/MM/YYYY';
|
|
289
304
|
|
|
290
|
-
if (
|
|
305
|
+
if (rangeStart && (0, _moment.default)(trimedDate, format) < rangeStart) {
|
|
291
306
|
return Promise.reject((0, _jsxRuntime.jsx)(_formattedMessage.default, {
|
|
292
307
|
id: "Please input a date after {date}",
|
|
293
308
|
values: {
|
|
294
|
-
date:
|
|
309
|
+
date: rangeStart.format(format)
|
|
295
310
|
}
|
|
296
311
|
}));
|
|
297
312
|
}
|
|
298
313
|
|
|
299
|
-
if (
|
|
314
|
+
if (rangeEnd && (0, _moment.default)(trimedDate, format) > rangeEnd) {
|
|
300
315
|
return Promise.reject((0, _jsxRuntime.jsx)(_formattedMessage.default, {
|
|
301
316
|
id: "Please input a date before {date}",
|
|
302
317
|
values: {
|
|
303
|
-
date:
|
|
318
|
+
date: rangeEnd.format(format)
|
|
304
319
|
}
|
|
305
320
|
}));
|
|
306
321
|
}
|
|
@@ -311,6 +326,27 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
|
|
|
311
326
|
}
|
|
312
327
|
}
|
|
313
328
|
|
|
329
|
+
if (validationCode.length) {
|
|
330
|
+
rules.push.apply(rules, _toConsumableArray(validationCode.map(function (_ref2) {
|
|
331
|
+
var code = _ref2.code,
|
|
332
|
+
errorMessage = _ref2.errorMessage;
|
|
333
|
+
return {
|
|
334
|
+
validator: function validator(_, value) {
|
|
335
|
+
try {
|
|
336
|
+
var fn = eval(code);
|
|
337
|
+
var formValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
|
|
338
|
+
|
|
339
|
+
var _result2 = fn(value, formValues);
|
|
340
|
+
|
|
341
|
+
return _result2 ? Promise.resolve() : Promise.reject(errorMessage);
|
|
342
|
+
} catch (_unused) {
|
|
343
|
+
return Promise.reject(errorMessage);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
})));
|
|
348
|
+
}
|
|
349
|
+
|
|
314
350
|
return {
|
|
315
351
|
colProps: {
|
|
316
352
|
span: extraFullRow && fullRow === undefined || fullRow || extraHalfRow && halfRow === undefined || halfRow ? 24 : span || extraSpan || 12,
|
|
@@ -322,7 +358,7 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
|
|
|
322
358
|
formItemProps: {
|
|
323
359
|
name: name,
|
|
324
360
|
className: className,
|
|
325
|
-
initialValue: (valueFormater || extraValueFormater)(initialValue
|
|
361
|
+
initialValue: (valueFormater || extraValueFormater)(initialValue !== null && initialValue !== void 0 ? initialValue : extraInitialValue),
|
|
326
362
|
copiedValue: copiedValue,
|
|
327
363
|
selectedValue: selectedValue,
|
|
328
364
|
normalize: normalize || extraNormalize,
|