iglooform 2.5.43 → 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.
- 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 +74 -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 +74 -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", "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; } } }; }
|
|
@@ -157,6 +157,9 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
|
|
|
157
157
|
absoluteRangeStart = config.absoluteRangeStart,
|
|
158
158
|
relativeRangeStart = config.relativeRangeStart,
|
|
159
159
|
relativeRangeEnd = config.relativeRangeEnd,
|
|
160
|
+
dependField = config.dependField,
|
|
161
|
+
_config$validationCod = config.validationCode,
|
|
162
|
+
validationCode = _config$validationCod === void 0 ? [] : _config$validationCod,
|
|
160
163
|
rest = _objectWithoutProperties(config, _excluded);
|
|
161
164
|
|
|
162
165
|
invariant(nameProp !== undefined || type === 'Divider' || type === 'Section' || type === 'Typography' || !type, "name property is required for form item config (type: ".concat(type, ")"));
|
|
@@ -217,71 +220,84 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
|
|
|
217
220
|
elementProps.disabled = calcDisabled(disabled, form) || copiedValue.disabled || selectedValue.disabled;
|
|
218
221
|
|
|
219
222
|
if (dateLimitationType) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
var rangeEnd = Number.MAX_SAFE_INTEGER;
|
|
223
|
+
var rangeStart;
|
|
224
|
+
var rangeEnd;
|
|
223
225
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
226
|
+
if (dateLimitationType === 'absolute' && absoluteRangeStart) {
|
|
227
|
+
rangeStart = moment(absoluteRangeStart).startOf('day');
|
|
228
|
+
}
|
|
227
229
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
+
}
|
|
231
234
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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;
|
|
242
|
+
|
|
243
|
+
var _dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
|
|
235
244
|
|
|
236
|
-
|
|
237
|
-
rangeEnd = +moment().add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
|
|
245
|
+
rangeStart = moment(_dependFieldValue).add(year, 'year').add(month, 'month').add(day, 'day').startOf('day');
|
|
238
246
|
}
|
|
247
|
+
}
|
|
239
248
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
};
|
|
249
|
+
if (dateLimitationType === 'absolute' && absoluteRangeEnd) {
|
|
250
|
+
rangeEnd = moment(absoluteRangeEnd).endOf('day');
|
|
243
251
|
}
|
|
244
252
|
|
|
245
|
-
if (
|
|
246
|
-
var
|
|
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;
|
|
247
255
|
|
|
248
|
-
|
|
256
|
+
rangeEnd = moment(_dependFieldValue2).add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
|
|
257
|
+
}
|
|
249
258
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
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));
|
|
253
261
|
|
|
254
|
-
if (
|
|
255
|
-
|
|
256
|
-
}
|
|
262
|
+
if (_result.length) {
|
|
263
|
+
var _year = _result[0][2] || 0;
|
|
257
264
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
265
|
+
var _month = _result[0][4] || 0;
|
|
266
|
+
|
|
267
|
+
var _day = _result[0][6] || 0;
|
|
261
268
|
|
|
262
|
-
|
|
263
|
-
|
|
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');
|
|
264
272
|
}
|
|
273
|
+
}
|
|
265
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') {
|
|
266
282
|
rules.push({
|
|
267
283
|
validator: function validator(_, date) {
|
|
268
284
|
var trimedDate = date.replaceAll(/\s/g, '');
|
|
269
285
|
var format = elementProps.format ? elementProps.format.replaceAll(/\s/g, '') : 'DD/MM/YYYY';
|
|
270
286
|
|
|
271
|
-
if (
|
|
287
|
+
if (rangeStart && moment(trimedDate, format) < rangeStart) {
|
|
272
288
|
return Promise.reject(_jsx(FormattedMessage, {
|
|
273
289
|
id: "Please input a date after {date}",
|
|
274
290
|
values: {
|
|
275
|
-
date:
|
|
291
|
+
date: rangeStart.format(format)
|
|
276
292
|
}
|
|
277
293
|
}));
|
|
278
294
|
}
|
|
279
295
|
|
|
280
|
-
if (
|
|
296
|
+
if (rangeEnd && moment(trimedDate, format) > rangeEnd) {
|
|
281
297
|
return Promise.reject(_jsx(FormattedMessage, {
|
|
282
298
|
id: "Please input a date before {date}",
|
|
283
299
|
values: {
|
|
284
|
-
date:
|
|
300
|
+
date: rangeEnd.format(format)
|
|
285
301
|
}
|
|
286
302
|
}));
|
|
287
303
|
}
|
|
@@ -292,6 +308,27 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
|
|
|
292
308
|
}
|
|
293
309
|
}
|
|
294
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
|
+
|
|
295
332
|
return {
|
|
296
333
|
colProps: {
|
|
297
334
|
span: extraFullRow && fullRow === undefined || fullRow || extraHalfRow && halfRow === undefined || halfRow ? 24 : span || extraSpan || 12,
|
|
@@ -303,7 +340,7 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
|
|
|
303
340
|
formItemProps: {
|
|
304
341
|
name: name,
|
|
305
342
|
className: className,
|
|
306
|
-
initialValue: (valueFormater || extraValueFormater)(initialValue
|
|
343
|
+
initialValue: (valueFormater || extraValueFormater)(initialValue !== null && initialValue !== void 0 ? initialValue : extraInitialValue),
|
|
307
344
|
copiedValue: copiedValue,
|
|
308
345
|
selectedValue: selectedValue,
|
|
309
346
|
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", "dependField", "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,9 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
|
|
|
176
176
|
absoluteRangeStart = config.absoluteRangeStart,
|
|
177
177
|
relativeRangeStart = config.relativeRangeStart,
|
|
178
178
|
relativeRangeEnd = config.relativeRangeEnd,
|
|
179
|
+
dependField = config.dependField,
|
|
180
|
+
_config$validationCod = config.validationCode,
|
|
181
|
+
validationCode = _config$validationCod === void 0 ? [] : _config$validationCod,
|
|
179
182
|
rest = _objectWithoutProperties(config, _excluded);
|
|
180
183
|
|
|
181
184
|
(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 +239,84 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
|
|
|
236
239
|
elementProps.disabled = calcDisabled(disabled, form) || copiedValue.disabled || selectedValue.disabled;
|
|
237
240
|
|
|
238
241
|
if (dateLimitationType) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
var rangeEnd = Number.MAX_SAFE_INTEGER;
|
|
242
|
+
var rangeStart;
|
|
243
|
+
var rangeEnd;
|
|
242
244
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
245
|
+
if (dateLimitationType === 'absolute' && absoluteRangeStart) {
|
|
246
|
+
rangeStart = (0, _moment.default)(absoluteRangeStart).startOf('day');
|
|
247
|
+
}
|
|
246
248
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
249
|
+
if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.quantity) !== undefined) {
|
|
250
|
+
var dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
|
|
251
|
+
rangeStart = (0, _moment.default)(dependFieldValue).add(relativeRangeStart.quantity, relativeRangeStart.type).startOf('day');
|
|
252
|
+
}
|
|
250
253
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
+
if (dateLimitationType === 'relative' && (relativeRangeStart === null || relativeRangeStart === void 0 ? void 0 : relativeRangeStart.pattern)) {
|
|
255
|
+
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));
|
|
256
|
+
|
|
257
|
+
if (result.length) {
|
|
258
|
+
var year = result[0][2] || 0;
|
|
259
|
+
var month = result[0][4] || 0;
|
|
260
|
+
var day = result[0][6] || 0;
|
|
261
|
+
|
|
262
|
+
var _dependFieldValue = relativeRangeStart.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeStart.dependField) : undefined;
|
|
254
263
|
|
|
255
|
-
|
|
256
|
-
rangeEnd = +(0, _moment.default)().add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
|
|
264
|
+
rangeStart = (0, _moment.default)(_dependFieldValue).add(year, 'year').add(month, 'month').add(day, 'day').startOf('day');
|
|
257
265
|
}
|
|
266
|
+
}
|
|
258
267
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
};
|
|
268
|
+
if (dateLimitationType === 'absolute' && absoluteRangeEnd) {
|
|
269
|
+
rangeEnd = (0, _moment.default)(absoluteRangeEnd).endOf('day');
|
|
262
270
|
}
|
|
263
271
|
|
|
264
|
-
if (
|
|
265
|
-
var
|
|
272
|
+
if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.quantity) !== undefined) {
|
|
273
|
+
var _dependFieldValue2 = relativeRangeEnd.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeEnd.dependField) : undefined;
|
|
266
274
|
|
|
267
|
-
|
|
275
|
+
rangeEnd = (0, _moment.default)(_dependFieldValue2).add(relativeRangeEnd.quantity, relativeRangeEnd.type).endOf('day');
|
|
276
|
+
}
|
|
268
277
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
278
|
+
if (dateLimitationType === 'relative' && (relativeRangeEnd === null || relativeRangeEnd === void 0 ? void 0 : relativeRangeEnd.pattern)) {
|
|
279
|
+
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
280
|
|
|
273
|
-
if (
|
|
274
|
-
|
|
275
|
-
}
|
|
281
|
+
if (_result.length) {
|
|
282
|
+
var _year = _result[0][2] || 0;
|
|
276
283
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
284
|
+
var _month = _result[0][4] || 0;
|
|
285
|
+
|
|
286
|
+
var _day = _result[0][6] || 0;
|
|
280
287
|
|
|
281
|
-
|
|
282
|
-
|
|
288
|
+
var _dependFieldValue3 = relativeRangeEnd.dependField ? form === null || form === void 0 ? void 0 : form.getFieldValue(relativeRangeEnd.dependField) : undefined;
|
|
289
|
+
|
|
290
|
+
rangeEnd = (0, _moment.default)(_dependFieldValue3).add(_year, 'year').add(_month, 'month').add(_day, 'day').endOf('day');
|
|
283
291
|
}
|
|
292
|
+
}
|
|
284
293
|
|
|
294
|
+
if (['DatePicker', 'BuddhistDatePicker'].includes(type)) {
|
|
295
|
+
elementProps.disabledDate = function (current) {
|
|
296
|
+
return +current < (rangeStart ? +rangeStart : Number.MIN_SAFE_INTEGER) || +current > (rangeEnd ? +rangeEnd : Number.MAX_SAFE_INTEGER);
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
if (type === 'InputDate') {
|
|
285
301
|
rules.push({
|
|
286
302
|
validator: function validator(_, date) {
|
|
287
303
|
var trimedDate = date.replaceAll(/\s/g, '');
|
|
288
304
|
var format = elementProps.format ? elementProps.format.replaceAll(/\s/g, '') : 'DD/MM/YYYY';
|
|
289
305
|
|
|
290
|
-
if (
|
|
306
|
+
if (rangeStart && (0, _moment.default)(trimedDate, format) < rangeStart) {
|
|
291
307
|
return Promise.reject((0, _jsxRuntime.jsx)(_formattedMessage.default, {
|
|
292
308
|
id: "Please input a date after {date}",
|
|
293
309
|
values: {
|
|
294
|
-
date:
|
|
310
|
+
date: rangeStart.format(format)
|
|
295
311
|
}
|
|
296
312
|
}));
|
|
297
313
|
}
|
|
298
314
|
|
|
299
|
-
if (
|
|
315
|
+
if (rangeEnd && (0, _moment.default)(trimedDate, format) > rangeEnd) {
|
|
300
316
|
return Promise.reject((0, _jsxRuntime.jsx)(_formattedMessage.default, {
|
|
301
317
|
id: "Please input a date before {date}",
|
|
302
318
|
values: {
|
|
303
|
-
date:
|
|
319
|
+
date: rangeEnd.format(format)
|
|
304
320
|
}
|
|
305
321
|
}));
|
|
306
322
|
}
|
|
@@ -311,6 +327,27 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
|
|
|
311
327
|
}
|
|
312
328
|
}
|
|
313
329
|
|
|
330
|
+
if (validationCode.length) {
|
|
331
|
+
rules.push.apply(rules, _toConsumableArray(validationCode.map(function (_ref2) {
|
|
332
|
+
var code = _ref2.code,
|
|
333
|
+
errorMessage = _ref2.errorMessage;
|
|
334
|
+
return {
|
|
335
|
+
validator: function validator(_, value) {
|
|
336
|
+
try {
|
|
337
|
+
var fn = eval(code);
|
|
338
|
+
var formValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
|
|
339
|
+
|
|
340
|
+
var _result2 = fn(value, formValues);
|
|
341
|
+
|
|
342
|
+
return _result2 ? Promise.resolve() : Promise.reject(errorMessage);
|
|
343
|
+
} catch (_unused) {
|
|
344
|
+
return Promise.reject(errorMessage);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
})));
|
|
349
|
+
}
|
|
350
|
+
|
|
314
351
|
return {
|
|
315
352
|
colProps: {
|
|
316
353
|
span: extraFullRow && fullRow === undefined || fullRow || extraHalfRow && halfRow === undefined || halfRow ? 24 : span || extraSpan || 12,
|
|
@@ -322,7 +359,7 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
|
|
|
322
359
|
formItemProps: {
|
|
323
360
|
name: name,
|
|
324
361
|
className: className,
|
|
325
|
-
initialValue: (valueFormater || extraValueFormater)(initialValue
|
|
362
|
+
initialValue: (valueFormater || extraValueFormater)(initialValue !== null && initialValue !== void 0 ? initialValue : extraInitialValue),
|
|
326
363
|
copiedValue: copiedValue,
|
|
327
364
|
selectedValue: selectedValue,
|
|
328
365
|
normalize: normalize || extraNormalize,
|