react-form-manage 1.0.0
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/README.md +193 -0
- package/dist/index.cjs +1951 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +1940 -0
- package/dist/index.esm.js.map +1 -0
- package/package.json +60 -0
- package/src/types/components.d.ts +134 -0
|
@@ -0,0 +1,1940 @@
|
|
|
1
|
+
import { join, filter, isNil, set, get, unset, isNumber, last, cloneDeep, uniq, isEqual } from 'lodash';
|
|
2
|
+
import { useTask, useTaskEffect } from 'minh-custom-hooks-release';
|
|
3
|
+
import { useEffect, createContext, useContext, useState, useMemo, useRef, cloneElement } from 'react';
|
|
4
|
+
import { flushSync } from 'react-dom';
|
|
5
|
+
import { useShallow } from 'zustand/react/shallow';
|
|
6
|
+
import { produce } from 'immer';
|
|
7
|
+
import { v4 } from 'uuid';
|
|
8
|
+
import { create } from 'zustand';
|
|
9
|
+
import { Input as Input$1 } from 'antd';
|
|
10
|
+
|
|
11
|
+
function _extends() {
|
|
12
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
13
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
14
|
+
var t = arguments[e];
|
|
15
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
16
|
+
}
|
|
17
|
+
return n;
|
|
18
|
+
}, _extends.apply(null, arguments);
|
|
19
|
+
}
|
|
20
|
+
function _objectWithoutPropertiesLoose(r, e) {
|
|
21
|
+
if (null == r) return {};
|
|
22
|
+
var t = {};
|
|
23
|
+
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
24
|
+
if (-1 !== e.indexOf(n)) continue;
|
|
25
|
+
t[n] = r[n];
|
|
26
|
+
}
|
|
27
|
+
return t;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function getAllNoneObjStringPath(value, prevPath) {
|
|
31
|
+
if (typeof value === "object") {
|
|
32
|
+
return Object.keys(value).reduce(function (prev, cur) {
|
|
33
|
+
return [].concat(prev, getAllNoneObjStringPath(value[cur], join(filter([prevPath, cur], function (v) {
|
|
34
|
+
return !isNil(v) && v !== "";
|
|
35
|
+
}), ".")));
|
|
36
|
+
}, []);
|
|
37
|
+
}
|
|
38
|
+
return [prevPath];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
var useFormStore = create(function (storeSet, storeGet) {
|
|
42
|
+
return {
|
|
43
|
+
forms: {},
|
|
44
|
+
initialValues: {},
|
|
45
|
+
formStates: {},
|
|
46
|
+
cacheData: {},
|
|
47
|
+
formInstances: [],
|
|
48
|
+
submitHistory: {},
|
|
49
|
+
setData: function setData(formName, name, value) {
|
|
50
|
+
return storeSet(produce(function (state) {
|
|
51
|
+
var oldValues = state.forms;
|
|
52
|
+
set(oldValues, formName + "." + name, value);
|
|
53
|
+
}));
|
|
54
|
+
},
|
|
55
|
+
getCacheData: function getCacheData(formName) {
|
|
56
|
+
return get(storeGet(), "cacheData." + formName);
|
|
57
|
+
},
|
|
58
|
+
setCacheData: function setCacheData(formName, name, value) {
|
|
59
|
+
return storeSet(produce(function (state) {
|
|
60
|
+
var oldValues = state.cacheData;
|
|
61
|
+
set(oldValues, formName + "." + name, value);
|
|
62
|
+
}));
|
|
63
|
+
},
|
|
64
|
+
clearCacheData: function clearCacheData(formName) {
|
|
65
|
+
return storeSet(produce(function (state) {
|
|
66
|
+
var oldValues = state.cacheData;
|
|
67
|
+
if (formName) {
|
|
68
|
+
set(oldValues, formName, {});
|
|
69
|
+
} else {
|
|
70
|
+
set(oldValues, "", {});
|
|
71
|
+
}
|
|
72
|
+
}));
|
|
73
|
+
},
|
|
74
|
+
getFormItemValue: function getFormItemValue(formName, name) {
|
|
75
|
+
var _storeGet$forms;
|
|
76
|
+
return get((_storeGet$forms = storeGet().forms) == null ? void 0 : _storeGet$forms[formName], name);
|
|
77
|
+
},
|
|
78
|
+
getFormValues: function getFormValues(formName) {
|
|
79
|
+
var _storeGet$forms2;
|
|
80
|
+
return (_storeGet$forms2 = storeGet().forms) == null ? void 0 : _storeGet$forms2[formName];
|
|
81
|
+
},
|
|
82
|
+
clearFormValues: function clearFormValues(formName) {
|
|
83
|
+
return storeSet(produce(function (state) {
|
|
84
|
+
var oldValues = state.forms;
|
|
85
|
+
|
|
86
|
+
// console.log("Clear form values", formName);
|
|
87
|
+
|
|
88
|
+
unset(oldValues, formName);
|
|
89
|
+
|
|
90
|
+
// console.log(JSON.parse(JSON.stringify(oldValues)));
|
|
91
|
+
}));
|
|
92
|
+
},
|
|
93
|
+
clearFormInitialValues: function clearFormInitialValues(formName) {
|
|
94
|
+
return storeSet(produce(function (state) {
|
|
95
|
+
var oldValues = state.initialValues;
|
|
96
|
+
|
|
97
|
+
// console.log("Clear form initial values", formName);
|
|
98
|
+
|
|
99
|
+
unset(oldValues, formName);
|
|
100
|
+
|
|
101
|
+
// console.log(JSON.parse(JSON.stringify(oldValues)));
|
|
102
|
+
}));
|
|
103
|
+
},
|
|
104
|
+
clearObjKeyItem: function clearObjKeyItem(formName, name) {
|
|
105
|
+
return storeSet(produce(function (state) {
|
|
106
|
+
var oldValues = state.forms;
|
|
107
|
+
|
|
108
|
+
// console.log("Clear item value", formName, name);
|
|
109
|
+
|
|
110
|
+
unset(oldValues, formName + "." + name);
|
|
111
|
+
|
|
112
|
+
// console.log(JSON.parse(JSON.stringify(oldValues)));
|
|
113
|
+
}));
|
|
114
|
+
},
|
|
115
|
+
clearArrItem: function clearArrItem(formName, name) {
|
|
116
|
+
return storeSet(produce(function (state) {
|
|
117
|
+
var oldValues = state.forms;
|
|
118
|
+
console.log("Clear item array value", formName, name);
|
|
119
|
+
var arrPath = name.split(".").slice(0, -1).join(".");
|
|
120
|
+
var elPath = Number(name.split(".").slice(-1).join(""));
|
|
121
|
+
var getArrItem = get(oldValues, formName + "." + arrPath);
|
|
122
|
+
if (isNumber(elPath)) {
|
|
123
|
+
getArrItem.splice(elPath, 1);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// console.log(JSON.parse(JSON.stringify(oldValues)));
|
|
127
|
+
}));
|
|
128
|
+
},
|
|
129
|
+
setFormState: function setFormState(_ref) {
|
|
130
|
+
var formName = _ref.formName,
|
|
131
|
+
isInitied = _ref.isInitied,
|
|
132
|
+
submitState = _ref.submitState;
|
|
133
|
+
return storeSet(produce(function (state) {
|
|
134
|
+
var oldValues = state.formStates;
|
|
135
|
+
var getFormState = get(storeGet().formStates, formName);
|
|
136
|
+
if (isNil(getFormState)) {
|
|
137
|
+
set(oldValues, formName, {
|
|
138
|
+
isInitied: isInitied,
|
|
139
|
+
submitState: submitState
|
|
140
|
+
});
|
|
141
|
+
} else {
|
|
142
|
+
if (!isNil(isInitied)) {
|
|
143
|
+
set(oldValues, formName + ".isInitied", isInitied);
|
|
144
|
+
}
|
|
145
|
+
if (!isNil(submitState)) {
|
|
146
|
+
set(oldValues, formName + ".submitState", submitState);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}));
|
|
150
|
+
},
|
|
151
|
+
clearFormState: function clearFormState(formName) {
|
|
152
|
+
return storeSet(produce(function (state) {
|
|
153
|
+
var oldValues = state.formStates;
|
|
154
|
+
|
|
155
|
+
// console.log("Clear form state", formName);
|
|
156
|
+
|
|
157
|
+
unset(oldValues, formName);
|
|
158
|
+
|
|
159
|
+
// console.log(JSON.parse(JSON.stringify(oldValues)));
|
|
160
|
+
}));
|
|
161
|
+
},
|
|
162
|
+
getFormState: function getFormState(formName) {
|
|
163
|
+
return get(storeGet(), "formStates." + formName);
|
|
164
|
+
},
|
|
165
|
+
setFormInitData: function setFormInitData(formName, initValues) {
|
|
166
|
+
return storeSet(produce(function (state) {
|
|
167
|
+
var oldValues = state.initialValues;
|
|
168
|
+
var listInitPath = getAllNoneObjStringPath(initValues);
|
|
169
|
+
|
|
170
|
+
// console.log({ listInitPath, initValues });
|
|
171
|
+
|
|
172
|
+
listInitPath.forEach(function (k) {
|
|
173
|
+
if (get(initValues, k)) {
|
|
174
|
+
// console.log("init form data values: ", k, get(initValues, k));
|
|
175
|
+
set(oldValues, formName + "." + k, get(initValues, k));
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}));
|
|
179
|
+
},
|
|
180
|
+
getInitData: function getInitData(formName, name) {
|
|
181
|
+
return get(storeGet().initialValues, formName + "." + name);
|
|
182
|
+
},
|
|
183
|
+
setInitData: function setInitData(formName, name, value) {
|
|
184
|
+
return storeSet(produce(function (state) {
|
|
185
|
+
var oldValues = state.initialValues;
|
|
186
|
+
// console.log("Inner init: ", `${formName}.${name}`, value);
|
|
187
|
+
set(oldValues, formName + "." + name, value);
|
|
188
|
+
}));
|
|
189
|
+
},
|
|
190
|
+
setFormInstance: function setFormInstance(_ref2) {
|
|
191
|
+
var formName = _ref2.formName,
|
|
192
|
+
resetFields = _ref2.resetFields,
|
|
193
|
+
submit = _ref2.submit,
|
|
194
|
+
submitAsync = _ref2.submitAsync,
|
|
195
|
+
setFieldValue = _ref2.setFieldValue,
|
|
196
|
+
setFieldValues = _ref2.setFieldValues,
|
|
197
|
+
getFieldValue = _ref2.getFieldValue,
|
|
198
|
+
getFieldValues = _ref2.getFieldValues,
|
|
199
|
+
getFieldErrors = _ref2.getFieldErrors,
|
|
200
|
+
setFieldFocus = _ref2.setFieldFocus;
|
|
201
|
+
return storeSet(produce(function (state) {
|
|
202
|
+
var storeListeners = state.formInstances;
|
|
203
|
+
var findListenerIndex = storeListeners.findIndex(function (l) {
|
|
204
|
+
return l.formName === formName;
|
|
205
|
+
});
|
|
206
|
+
if (findListenerIndex > -1) {
|
|
207
|
+
if (!isNil(resetFields)) {
|
|
208
|
+
storeListeners[findListenerIndex].resetFields = resetFields;
|
|
209
|
+
}
|
|
210
|
+
if (!isNil(submit)) {
|
|
211
|
+
storeListeners[findListenerIndex].submit = submit;
|
|
212
|
+
}
|
|
213
|
+
if (!isNil(setFieldFocus)) {
|
|
214
|
+
storeListeners[findListenerIndex].setFieldFocus = setFieldFocus;
|
|
215
|
+
}
|
|
216
|
+
if (!isNil(submitAsync)) {
|
|
217
|
+
storeListeners[findListenerIndex].submitAsync = submitAsync;
|
|
218
|
+
}
|
|
219
|
+
if (!isNil(setFieldValue)) {
|
|
220
|
+
storeListeners[findListenerIndex].setFieldValue = setFieldValue;
|
|
221
|
+
}
|
|
222
|
+
if (!isNil(setFieldValues)) {
|
|
223
|
+
storeListeners[findListenerIndex].setFieldValues = setFieldValues;
|
|
224
|
+
}
|
|
225
|
+
if (!isNil(getFieldValue)) {
|
|
226
|
+
storeListeners[findListenerIndex].getFieldValue = getFieldValue;
|
|
227
|
+
}
|
|
228
|
+
if (!isNil(getFieldValues)) {
|
|
229
|
+
storeListeners[findListenerIndex].getFieldValues = getFieldValues;
|
|
230
|
+
}
|
|
231
|
+
if (!isNil(getFieldErrors)) {
|
|
232
|
+
storeListeners[findListenerIndex].getFieldErrors = getFieldErrors;
|
|
233
|
+
}
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
storeListeners.push({
|
|
237
|
+
formName: formName,
|
|
238
|
+
resetFields: resetFields,
|
|
239
|
+
submit: submit,
|
|
240
|
+
submitAsync: submitAsync,
|
|
241
|
+
setFieldValue: setFieldValue,
|
|
242
|
+
setFieldValues: setFieldValues,
|
|
243
|
+
getFieldValue: getFieldValue,
|
|
244
|
+
getFieldValues: getFieldValues,
|
|
245
|
+
getFieldErrors: getFieldErrors,
|
|
246
|
+
setFieldFocus: setFieldFocus
|
|
247
|
+
});
|
|
248
|
+
}));
|
|
249
|
+
},
|
|
250
|
+
revokeFormInstance: function revokeFormInstance(_ref3) {
|
|
251
|
+
var formName = _ref3.formName;
|
|
252
|
+
return storeSet(produce(function (state) {
|
|
253
|
+
var instances = state.formInstances;
|
|
254
|
+
var findInstanceIndex = instances.findIndex(function (l) {
|
|
255
|
+
return l.formName == formName;
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
// console.log("Find item for revoke: ", findListenerIndex, formItemId);
|
|
259
|
+
|
|
260
|
+
if (findInstanceIndex > -1) {
|
|
261
|
+
// const listenersInfo = cloneDeep(instances[findInstanceIndex]);
|
|
262
|
+
|
|
263
|
+
instances.splice(findInstanceIndex, 1);
|
|
264
|
+
|
|
265
|
+
// onAfterRevoke(
|
|
266
|
+
// listenersInfo,
|
|
267
|
+
// instances.filter(
|
|
268
|
+
// (l) =>
|
|
269
|
+
// l.name === listenersInfo.name &&
|
|
270
|
+
// l.formName === listenersInfo.formName &&
|
|
271
|
+
// l.formItemId !== listenersInfo.formItemId
|
|
272
|
+
// )
|
|
273
|
+
// );
|
|
274
|
+
}
|
|
275
|
+
}));
|
|
276
|
+
},
|
|
277
|
+
getCurrentSubmit: function getCurrentSubmit(formName) {
|
|
278
|
+
return last(get(storeGet().submitHistory, formName)) || null;
|
|
279
|
+
},
|
|
280
|
+
getSubmitHistory: function getSubmitHistory(formName) {
|
|
281
|
+
return get(storeGet().submitHistory, formName);
|
|
282
|
+
},
|
|
283
|
+
setSubmitHistory: function setSubmitHistory(formName, submitData) {
|
|
284
|
+
return storeSet(produce(function (state) {
|
|
285
|
+
var oldValues = get(state.submitHistory, formName);
|
|
286
|
+
if (oldValues) {
|
|
287
|
+
oldValues.push(submitData);
|
|
288
|
+
oldValues.splice(0, oldValues.length - 3);
|
|
289
|
+
} else {
|
|
290
|
+
set(state.submitHistory, formName, [submitData]);
|
|
291
|
+
}
|
|
292
|
+
console.log("Submit history: ", formName);
|
|
293
|
+
}));
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
});
|
|
297
|
+
var useFormListeners = create(function (storeSet, storeGet) {
|
|
298
|
+
return {
|
|
299
|
+
listeners: [],
|
|
300
|
+
getListener: function getListener(formItemId) {
|
|
301
|
+
return storeGet().listeners.find(function (l) {
|
|
302
|
+
return l.formItemId === formItemId;
|
|
303
|
+
});
|
|
304
|
+
},
|
|
305
|
+
getListeners: function getListeners() {
|
|
306
|
+
return storeGet().listeners;
|
|
307
|
+
},
|
|
308
|
+
setListener: function setListener(_ref4) {
|
|
309
|
+
var formName = _ref4.formName,
|
|
310
|
+
name = _ref4.name,
|
|
311
|
+
onChange = _ref4.onChange,
|
|
312
|
+
onReset = _ref4.onReset,
|
|
313
|
+
isTouched = _ref4.isTouched,
|
|
314
|
+
isDirty = _ref4.isDirty,
|
|
315
|
+
formItemId = _ref4.formItemId,
|
|
316
|
+
internalErrors = _ref4.internalErrors,
|
|
317
|
+
onFocus = _ref4.onFocus,
|
|
318
|
+
emitFocus = _ref4.emitFocus;
|
|
319
|
+
return storeSet(produce(function (state) {
|
|
320
|
+
var storeListeners = state.listeners;
|
|
321
|
+
var findListenerIndex = state.listeners.findIndex(function (l) {
|
|
322
|
+
return l.formItemId === formItemId;
|
|
323
|
+
});
|
|
324
|
+
if (findListenerIndex > -1) {
|
|
325
|
+
if (!isNil(formName)) {
|
|
326
|
+
storeListeners[findListenerIndex].formName = formName;
|
|
327
|
+
}
|
|
328
|
+
if (!isNil(name)) {
|
|
329
|
+
storeListeners[findListenerIndex].name = name;
|
|
330
|
+
}
|
|
331
|
+
if (!isNil(onChange)) {
|
|
332
|
+
storeListeners[findListenerIndex].onChange = onChange;
|
|
333
|
+
}
|
|
334
|
+
if (!isNil(onReset)) {
|
|
335
|
+
storeListeners[findListenerIndex].onReset = onReset;
|
|
336
|
+
}
|
|
337
|
+
if (!isNil(isTouched)) {
|
|
338
|
+
storeListeners[findListenerIndex].isTouched = isTouched;
|
|
339
|
+
}
|
|
340
|
+
if (!isNil(isDirty)) {
|
|
341
|
+
storeListeners[findListenerIndex].isDirty = isDirty;
|
|
342
|
+
}
|
|
343
|
+
if (!isNil(internalErrors)) {
|
|
344
|
+
storeListeners[findListenerIndex].internalErrors = internalErrors;
|
|
345
|
+
}
|
|
346
|
+
if (!isNil(onFocus)) {
|
|
347
|
+
storeListeners[findListenerIndex].onFocus = onFocus;
|
|
348
|
+
}
|
|
349
|
+
if (!isNil(emitFocus)) {
|
|
350
|
+
storeListeners[findListenerIndex].emitFocus = emitFocus;
|
|
351
|
+
}
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
storeListeners.push({
|
|
355
|
+
name: name,
|
|
356
|
+
formName: formName,
|
|
357
|
+
isTouched: isTouched,
|
|
358
|
+
isDirty: isDirty,
|
|
359
|
+
formItemId: formItemId,
|
|
360
|
+
internalErrors: internalErrors,
|
|
361
|
+
onChange: onChange,
|
|
362
|
+
onReset: onReset
|
|
363
|
+
});
|
|
364
|
+
}));
|
|
365
|
+
},
|
|
366
|
+
revokeListener: function revokeListener(formItemId, onAfterRevoke) {
|
|
367
|
+
return storeSet(produce(function (state) {
|
|
368
|
+
var storeListeners = state.listeners;
|
|
369
|
+
var findListenerIndex = storeListeners.findIndex(function (l) {
|
|
370
|
+
return l.formItemId == formItemId;
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
// console.log("Find item for revoke: ", findListenerIndex, formItemId);
|
|
374
|
+
|
|
375
|
+
if (findListenerIndex > -1) {
|
|
376
|
+
var listenersInfo = cloneDeep(storeListeners[findListenerIndex]);
|
|
377
|
+
storeListeners.splice(findListenerIndex, 1);
|
|
378
|
+
onAfterRevoke(listenersInfo, storeListeners.filter(function (l) {
|
|
379
|
+
return l.name === listenersInfo.name && l.formName === listenersInfo.formName && l.formItemId !== listenersInfo.formItemId;
|
|
380
|
+
}));
|
|
381
|
+
}
|
|
382
|
+
}));
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
});
|
|
386
|
+
var useFormCleanUp = create(function (storeSet) {
|
|
387
|
+
return {
|
|
388
|
+
cleanUpStack: [],
|
|
389
|
+
setCleanUpStack: function setCleanUpStack(_ref5) {
|
|
390
|
+
var name = _ref5.name,
|
|
391
|
+
type = _ref5.type,
|
|
392
|
+
itemKey = _ref5.itemKey,
|
|
393
|
+
formName = _ref5.formName;
|
|
394
|
+
return storeSet(produce(function (state) {
|
|
395
|
+
var oldValues = state.cleanUpStack;
|
|
396
|
+
var cleanUpKey = v4();
|
|
397
|
+
oldValues.push({
|
|
398
|
+
name: name,
|
|
399
|
+
type: type,
|
|
400
|
+
key: cleanUpKey,
|
|
401
|
+
itemKey: itemKey,
|
|
402
|
+
formName: formName
|
|
403
|
+
});
|
|
404
|
+
}));
|
|
405
|
+
},
|
|
406
|
+
clearCleanUpStack: function clearCleanUpStack() {
|
|
407
|
+
return storeSet(produce(function (state) {
|
|
408
|
+
state.cleanUpStack = [];
|
|
409
|
+
}));
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
var FormCleanUp = function FormCleanUp() {
|
|
415
|
+
var _useFormCleanUp = useFormCleanUp(useShallow(function (state) {
|
|
416
|
+
return {
|
|
417
|
+
cleanUpStack: state.cleanUpStack,
|
|
418
|
+
clearCleanUpStack: state.clearCleanUpStack
|
|
419
|
+
};
|
|
420
|
+
})),
|
|
421
|
+
cleanUpStack = _useFormCleanUp.cleanUpStack,
|
|
422
|
+
clearCleanUpStack = _useFormCleanUp.clearCleanUpStack;
|
|
423
|
+
var _useFormListeners = useFormListeners(useShallow(function (state) {
|
|
424
|
+
return {
|
|
425
|
+
revokeListener: state.revokeListener
|
|
426
|
+
};
|
|
427
|
+
})),
|
|
428
|
+
revokeListener = _useFormListeners.revokeListener;
|
|
429
|
+
var _useFormStore = useFormStore(useShallow(function (state) {
|
|
430
|
+
return {
|
|
431
|
+
clearObjKeyItem: state.clearObjKeyItem,
|
|
432
|
+
clearArrItem: state.clearArrItem
|
|
433
|
+
};
|
|
434
|
+
})),
|
|
435
|
+
clearObjKeyItem = _useFormStore.clearObjKeyItem,
|
|
436
|
+
clearArrItem = _useFormStore.clearArrItem;
|
|
437
|
+
useEffect(function () {
|
|
438
|
+
if (Array.isArray(cleanUpStack) && cleanUpStack != null && cleanUpStack.length) {
|
|
439
|
+
// console.log("Trigger clean up: ", cleanUpStack);
|
|
440
|
+
cleanUpStack.forEach(function (c) {
|
|
441
|
+
if (c.itemKey) {
|
|
442
|
+
console.log("Revoke in Clean up: ", c);
|
|
443
|
+
revokeListener(c.itemKey, function (listener, same) {
|
|
444
|
+
if (!same.length) {
|
|
445
|
+
console.log("Trigger after revoke: ", listener, same);
|
|
446
|
+
clearObjKeyItem(listener.formName, listener.name);
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
} else {
|
|
450
|
+
if (c.type === "array") {
|
|
451
|
+
console.log(c);
|
|
452
|
+
clearArrItem(c.formName, c.name);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
clearCleanUpStack();
|
|
457
|
+
}
|
|
458
|
+
}, [cleanUpStack]);
|
|
459
|
+
return h(Fragment, null);
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
var _excluded$4 = ["children", "formName", "initialValues", "onFinish", "onReject", "onFinally", "FormElement"];
|
|
463
|
+
function _catch(body, recover) {
|
|
464
|
+
try {
|
|
465
|
+
var result = body();
|
|
466
|
+
} catch (e) {
|
|
467
|
+
return recover(e);
|
|
468
|
+
}
|
|
469
|
+
if (result && result.then) {
|
|
470
|
+
return result.then(void 0, recover);
|
|
471
|
+
}
|
|
472
|
+
return result;
|
|
473
|
+
}
|
|
474
|
+
var FormContext = createContext(null);
|
|
475
|
+
function Form(_ref) {
|
|
476
|
+
var children = _ref.children,
|
|
477
|
+
formName = _ref.formName,
|
|
478
|
+
initialValues = _ref.initialValues,
|
|
479
|
+
onFinish = _ref.onFinish,
|
|
480
|
+
onReject = _ref.onReject,
|
|
481
|
+
onFinally = _ref.onFinally,
|
|
482
|
+
FormElement = _ref.FormElement,
|
|
483
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
484
|
+
var _useFormStore = useFormStore(useShallow(function (state) {
|
|
485
|
+
var _state$formStates;
|
|
486
|
+
return {
|
|
487
|
+
setInitData: state.setFormInitData,
|
|
488
|
+
getFormValues: state.getFormValues,
|
|
489
|
+
setFormState: state.setFormState,
|
|
490
|
+
setFormInstance: state.setFormInstance,
|
|
491
|
+
revokeFormInstance: state.revokeFormInstance,
|
|
492
|
+
setData: state.setData,
|
|
493
|
+
setSubmitHistory: state.setSubmitHistory,
|
|
494
|
+
getFormItemValue: state.getFormItemValue,
|
|
495
|
+
clearFormValues: state.clearFormValues,
|
|
496
|
+
clearFormInitialValues: state.clearFormInitialValues,
|
|
497
|
+
clearFormState: state.clearFormState,
|
|
498
|
+
// Test, nhớ xóa sau khi xong
|
|
499
|
+
formStates: (_state$formStates = state.formStates) == null ? void 0 : _state$formStates[formName]
|
|
500
|
+
};
|
|
501
|
+
})),
|
|
502
|
+
getFormItemValue = _useFormStore.getFormItemValue,
|
|
503
|
+
setInitData = _useFormStore.setInitData,
|
|
504
|
+
setData = _useFormStore.setData,
|
|
505
|
+
getFormValues = _useFormStore.getFormValues,
|
|
506
|
+
setFormState = _useFormStore.setFormState,
|
|
507
|
+
setFormInstance = _useFormStore.setFormInstance,
|
|
508
|
+
revokeFormInstance = _useFormStore.revokeFormInstance,
|
|
509
|
+
setSubmitHistory = _useFormStore.setSubmitHistory,
|
|
510
|
+
clearFormValues = _useFormStore.clearFormValues,
|
|
511
|
+
clearFormInitialValues = _useFormStore.clearFormInitialValues,
|
|
512
|
+
clearFormState = _useFormStore.clearFormState;
|
|
513
|
+
var _useFormListeners = useFormListeners(useShallow(function (state) {
|
|
514
|
+
return {
|
|
515
|
+
getListeners: state.getListeners
|
|
516
|
+
};
|
|
517
|
+
})),
|
|
518
|
+
getListeners = _useFormListeners.getListeners;
|
|
519
|
+
var setFieldValue = function setFieldValue(name, value, options) {
|
|
520
|
+
var listener = getListeners().find(function (l) {
|
|
521
|
+
return l.name === name && l.formName === formName;
|
|
522
|
+
});
|
|
523
|
+
if (listener) {
|
|
524
|
+
listener.onChange(value, options);
|
|
525
|
+
} else {
|
|
526
|
+
setData(formName, name, value);
|
|
527
|
+
}
|
|
528
|
+
};
|
|
529
|
+
var setFieldValues = function setFieldValues(values, options) {
|
|
530
|
+
if (options === void 0) {
|
|
531
|
+
options = {
|
|
532
|
+
notTriggerDirty: false
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
var allStringPath = getAllNoneObjStringPath(values);
|
|
536
|
+
allStringPath.forEach(function (p) {
|
|
537
|
+
var listener = getListeners().find(function (l) {
|
|
538
|
+
return l.name === p && l.formName === formName;
|
|
539
|
+
});
|
|
540
|
+
if (listener) {
|
|
541
|
+
listener.onChange(get(values, listener.name), options);
|
|
542
|
+
} else {
|
|
543
|
+
setData(formName, p, get(values, p));
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
};
|
|
547
|
+
var getFieldValue = function getFieldValue(name) {
|
|
548
|
+
return getFormItemValue(formName, name);
|
|
549
|
+
};
|
|
550
|
+
var getFieldValues = function getFieldValues(names) {
|
|
551
|
+
if (names === void 0) {
|
|
552
|
+
names = [];
|
|
553
|
+
}
|
|
554
|
+
return names.map(function (name) {
|
|
555
|
+
return {
|
|
556
|
+
name: name,
|
|
557
|
+
value: getFormItemValue(formName, name)
|
|
558
|
+
};
|
|
559
|
+
});
|
|
560
|
+
};
|
|
561
|
+
var setFieldFocus = function setFieldFocus(name) {
|
|
562
|
+
var listener = getListeners().find(function (l) {
|
|
563
|
+
return l.name === name && l.formName === formName;
|
|
564
|
+
});
|
|
565
|
+
if (listener && typeof listener.emitFocus === "function") {
|
|
566
|
+
listener.emitFocus();
|
|
567
|
+
}
|
|
568
|
+
};
|
|
569
|
+
var getFieldErrors = function getFieldErrors(names) {
|
|
570
|
+
var listeners = getListeners().filter(function (l) {
|
|
571
|
+
return names.includes(l.name) && l.formName === formName;
|
|
572
|
+
});
|
|
573
|
+
return listeners.map(function (l) {
|
|
574
|
+
return {
|
|
575
|
+
name: l.name,
|
|
576
|
+
errors: l.internalErrors || []
|
|
577
|
+
};
|
|
578
|
+
});
|
|
579
|
+
};
|
|
580
|
+
var getAllFieldErrors = function getAllFieldErrors() {
|
|
581
|
+
var _getListeners;
|
|
582
|
+
return (_getListeners = getListeners()) == null ? void 0 : _getListeners.filter(function (l) {
|
|
583
|
+
var _l$internalErrors;
|
|
584
|
+
return ((_l$internalErrors = l.internalErrors) == null ? void 0 : _l$internalErrors.length) && l.formName === formName;
|
|
585
|
+
}).map(function (l) {
|
|
586
|
+
return {
|
|
587
|
+
name: l.name,
|
|
588
|
+
formName: l.formName,
|
|
589
|
+
formItemId: l.formItemId,
|
|
590
|
+
errors: l.internalErrors
|
|
591
|
+
};
|
|
592
|
+
});
|
|
593
|
+
};
|
|
594
|
+
|
|
595
|
+
// Submit data
|
|
596
|
+
var _useTask = useTask({
|
|
597
|
+
task: function task(props) {
|
|
598
|
+
try {
|
|
599
|
+
var _temp = _catch(function () {
|
|
600
|
+
flushSync(setFormState({
|
|
601
|
+
formName: formName,
|
|
602
|
+
submitState: "submitting"
|
|
603
|
+
}));
|
|
604
|
+
var errorFields = getAllFieldErrors();
|
|
605
|
+
var listeners = getListeners().filter(function (l) {
|
|
606
|
+
return l.formName === formName;
|
|
607
|
+
});
|
|
608
|
+
var formValues = getFormValues(formName);
|
|
609
|
+
var resultValues = cloneDeep(formValues);
|
|
610
|
+
var cleanValues = {};
|
|
611
|
+
uniq(listeners, function (l) {
|
|
612
|
+
return l.name;
|
|
613
|
+
}).forEach(function (l) {
|
|
614
|
+
set(cleanValues, l.name, get(resultValues, l.name));
|
|
615
|
+
});
|
|
616
|
+
var handleIsolateCase = function handleIsolateCase() {
|
|
617
|
+
try {
|
|
618
|
+
var _temp1 = function () {
|
|
619
|
+
if (!(errorFields != null && errorFields.length)) {
|
|
620
|
+
var _temp6 = function _temp6() {
|
|
621
|
+
// if (!isEqual(cleanValues, last(getSubmitHistory(formName)))) {
|
|
622
|
+
// setSubmitHistory(formName, cleanValues);
|
|
623
|
+
// }
|
|
624
|
+
|
|
625
|
+
setSubmitHistory(formName, cleanValues);
|
|
626
|
+
|
|
627
|
+
// if (
|
|
628
|
+
// !isEqual(
|
|
629
|
+
// resultValues,
|
|
630
|
+
// last(submitHistoryWithUnRegisteredValues.current)
|
|
631
|
+
// )
|
|
632
|
+
// ) {
|
|
633
|
+
// submitHistoryWithUnRegisteredValues.current = [
|
|
634
|
+
// ...submitHistoryWithUnRegisteredValues.current,
|
|
635
|
+
// resultValues,
|
|
636
|
+
// ].slice(-10, 10);
|
|
637
|
+
// }
|
|
638
|
+
|
|
639
|
+
// resultWatchQueue.current.forEach((l) => {
|
|
640
|
+
// l.emitSubmitTrigger(cleanValues);
|
|
641
|
+
// l.emitDataChange(cleanValues);
|
|
642
|
+
// l.emitDataWithUnRegisteredValuesChange(resultValues);
|
|
643
|
+
// l.emitSubmitTriggerWithUnRegisteredValues(resultValues);
|
|
644
|
+
// });
|
|
645
|
+
};
|
|
646
|
+
var _temp5 = function () {
|
|
647
|
+
if (typeof (props == null ? void 0 : props.externalFinishCallback) !== "function") {
|
|
648
|
+
var _temp2 = function _temp2(_onFinish) {
|
|
649
|
+
_onFinish;
|
|
650
|
+
};
|
|
651
|
+
return onFinish ? Promise.resolve(onFinish(cleanValues, resultValues)).then(_temp2) : _temp2(onFinish);
|
|
652
|
+
} else {
|
|
653
|
+
var _temp4 = function () {
|
|
654
|
+
if (props != null && props.callBothFinish) {
|
|
655
|
+
var _temp3 = function _temp3(_onFinish2) {
|
|
656
|
+
_onFinish2;
|
|
657
|
+
return Promise.resolve(props == null ? void 0 : props.externalFinishCallback(cleanValues, resultValues)).then(function () {});
|
|
658
|
+
};
|
|
659
|
+
return onFinish ? Promise.resolve(onFinish(cleanValues, resultValues)).then(_temp3) : _temp3(onFinish);
|
|
660
|
+
} else {
|
|
661
|
+
return Promise.resolve(props == null ? void 0 : props.externalFinishCallback(cleanValues, resultValues)).then(function () {});
|
|
662
|
+
}
|
|
663
|
+
}();
|
|
664
|
+
if (_temp4 && _temp4.then) return _temp4.then(function () {});
|
|
665
|
+
}
|
|
666
|
+
}();
|
|
667
|
+
return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
|
|
668
|
+
} else {
|
|
669
|
+
var _temp0 = function () {
|
|
670
|
+
if (typeof (props == null ? void 0 : props.externalRejectCallback) !== "function") {
|
|
671
|
+
var _temp7 = function _temp7(_onReject) {
|
|
672
|
+
_onReject;
|
|
673
|
+
};
|
|
674
|
+
return onReject ? Promise.resolve(onReject(errorFields)).then(_temp7) : _temp7(onReject);
|
|
675
|
+
} else {
|
|
676
|
+
var _temp9 = function () {
|
|
677
|
+
if (props != null && props.callBothReject) {
|
|
678
|
+
var _temp8 = function _temp8(_onReject2) {
|
|
679
|
+
_onReject2;
|
|
680
|
+
return Promise.resolve(props == null ? void 0 : props.externalRejectCallback(errorFields)).then(function () {});
|
|
681
|
+
};
|
|
682
|
+
return onReject ? Promise.resolve(onReject(errorFields)).then(_temp8) : _temp8(onReject);
|
|
683
|
+
} else {
|
|
684
|
+
return Promise.resolve(props == null ? void 0 : props.externalRejectCallback(errorFields)).then(function () {});
|
|
685
|
+
}
|
|
686
|
+
}();
|
|
687
|
+
if (_temp9 && _temp9.then) return _temp9.then(function () {});
|
|
688
|
+
}
|
|
689
|
+
}();
|
|
690
|
+
if (_temp0 && _temp0.then) return _temp0.then(function () {});
|
|
691
|
+
}
|
|
692
|
+
}();
|
|
693
|
+
return Promise.resolve(_temp1 && _temp1.then ? _temp1.then(function () {}) : void 0);
|
|
694
|
+
} catch (e) {
|
|
695
|
+
return Promise.reject(e);
|
|
696
|
+
}
|
|
697
|
+
};
|
|
698
|
+
var handleFinallyCase = function handleFinallyCase() {
|
|
699
|
+
try {
|
|
700
|
+
var _temp13 = function () {
|
|
701
|
+
if (typeof (props == null ? void 0 : props.externalFinallyCallback) !== "function") {
|
|
702
|
+
var _temp10 = function _temp10(_onFinally) {
|
|
703
|
+
_onFinally;
|
|
704
|
+
};
|
|
705
|
+
return onFinally ? Promise.resolve(onFinally({
|
|
706
|
+
errorsField: errorFields,
|
|
707
|
+
values: cleanValues,
|
|
708
|
+
withUnRegisteredValues: resultValues
|
|
709
|
+
})).then(_temp10) : _temp10(onFinally);
|
|
710
|
+
} else {
|
|
711
|
+
var _temp12 = function () {
|
|
712
|
+
if (props != null && props.callBothFinally) {
|
|
713
|
+
var _temp11 = function _temp11(_onFinally2) {
|
|
714
|
+
_onFinally2;
|
|
715
|
+
return Promise.resolve(props == null ? void 0 : props.externalFinallyCallback({
|
|
716
|
+
errorsField: errorFields,
|
|
717
|
+
values: cleanValues,
|
|
718
|
+
withUnRegisteredValues: resultValues
|
|
719
|
+
})).then(function () {});
|
|
720
|
+
};
|
|
721
|
+
return onFinally ? Promise.resolve(onFinally({
|
|
722
|
+
errorsField: errorFields,
|
|
723
|
+
values: cleanValues,
|
|
724
|
+
withUnRegisteredValues: resultValues
|
|
725
|
+
})).then(_temp11) : _temp11(onFinally);
|
|
726
|
+
} else {
|
|
727
|
+
return Promise.resolve(props == null ? void 0 : props.externalFinallyCallback({
|
|
728
|
+
errorsField: errorFields,
|
|
729
|
+
values: cleanValues,
|
|
730
|
+
withUnRegisteredValues: resultValues
|
|
731
|
+
})).then(function () {});
|
|
732
|
+
}
|
|
733
|
+
}();
|
|
734
|
+
if (_temp12 && _temp12.then) return _temp12.then(function () {});
|
|
735
|
+
}
|
|
736
|
+
}();
|
|
737
|
+
return Promise.resolve(_temp13 && _temp13.then ? _temp13.then(function () {}) : void 0);
|
|
738
|
+
} catch (e) {
|
|
739
|
+
return Promise.reject(e);
|
|
740
|
+
}
|
|
741
|
+
};
|
|
742
|
+
return Promise.resolve(Promise.allSettled([handleIsolateCase(), handleFinallyCase()])).then(function () {
|
|
743
|
+
if (errorFields != null && errorFields.length) {
|
|
744
|
+
setFormState({
|
|
745
|
+
formName: formName,
|
|
746
|
+
submitState: "rejected"
|
|
747
|
+
});
|
|
748
|
+
} else {
|
|
749
|
+
setFormState({
|
|
750
|
+
formName: formName,
|
|
751
|
+
submitState: "submitted"
|
|
752
|
+
});
|
|
753
|
+
}
|
|
754
|
+
});
|
|
755
|
+
}, function (error) {
|
|
756
|
+
console.error("Error in form submit: ", error);
|
|
757
|
+
setFormState({
|
|
758
|
+
formName: formName,
|
|
759
|
+
submitState: "rejected"
|
|
760
|
+
});
|
|
761
|
+
});
|
|
762
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
|
|
763
|
+
} catch (e) {
|
|
764
|
+
return Promise.reject(e);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
}),
|
|
768
|
+
runSubmit = _useTask.run,
|
|
769
|
+
runSubmitAsync = _useTask.runAsync,
|
|
770
|
+
reset = _useTask.reset;
|
|
771
|
+
var resetFields = function resetFields(resetOptions) {
|
|
772
|
+
reset();
|
|
773
|
+
flushSync(setFormState({
|
|
774
|
+
formName: formName,
|
|
775
|
+
isInitied: false
|
|
776
|
+
}));
|
|
777
|
+
var totalListenerFields = getListeners();
|
|
778
|
+
if (Array.isArray(resetOptions)) {
|
|
779
|
+
totalListenerFields.forEach(function (l) {
|
|
780
|
+
var findListenerByName = resetOptions.find(function (o) {
|
|
781
|
+
return o.name === l.name;
|
|
782
|
+
});
|
|
783
|
+
if (findListenerByName) {
|
|
784
|
+
l.onReset(findListenerByName == null ? void 0 : findListenerByName.value);
|
|
785
|
+
}
|
|
786
|
+
});
|
|
787
|
+
totalListenerFields.filter(function (l) {
|
|
788
|
+
return resetOptions.find(function (o) {
|
|
789
|
+
return o.name !== l.name;
|
|
790
|
+
});
|
|
791
|
+
}).forEach(function (l) {
|
|
792
|
+
l == null || l.onReset == null || l.onReset();
|
|
793
|
+
});
|
|
794
|
+
} else if (typeof resetOptions === "object") {
|
|
795
|
+
var allStringPath = getAllNoneObjStringPath(resetOptions);
|
|
796
|
+
allStringPath.forEach(function (p) {
|
|
797
|
+
var listener = totalListenerFields.find(function (l) {
|
|
798
|
+
return l.name === p && l.formName === formName;
|
|
799
|
+
});
|
|
800
|
+
if (listener) {
|
|
801
|
+
listener.onChange(get(resetOptions, listener.name));
|
|
802
|
+
} else {
|
|
803
|
+
setData(formName, p, get(resetOptions, p));
|
|
804
|
+
}
|
|
805
|
+
});
|
|
806
|
+
} else {
|
|
807
|
+
totalListenerFields.forEach(function (l) {
|
|
808
|
+
l == null || l.onReset == null || l.onReset();
|
|
809
|
+
});
|
|
810
|
+
}
|
|
811
|
+
setFormState({
|
|
812
|
+
formName: formName,
|
|
813
|
+
isInitied: true
|
|
814
|
+
});
|
|
815
|
+
};
|
|
816
|
+
useEffect(function () {
|
|
817
|
+
setInitData(formName, initialValues);
|
|
818
|
+
setFormState({
|
|
819
|
+
formName: formName,
|
|
820
|
+
isInitied: true,
|
|
821
|
+
submitState: "idle"
|
|
822
|
+
});
|
|
823
|
+
setFormInstance({
|
|
824
|
+
formName: formName,
|
|
825
|
+
resetFields: resetFields,
|
|
826
|
+
submit: runSubmit,
|
|
827
|
+
submitAsync: runSubmitAsync,
|
|
828
|
+
setFieldValue: setFieldValue,
|
|
829
|
+
setFieldValues: setFieldValues,
|
|
830
|
+
getFieldValue: getFieldValue,
|
|
831
|
+
getFieldValues: getFieldValues,
|
|
832
|
+
setFieldFocus: setFieldFocus,
|
|
833
|
+
getFieldErrors: getFieldErrors
|
|
834
|
+
});
|
|
835
|
+
return function () {
|
|
836
|
+
revokeFormInstance({
|
|
837
|
+
formName: formName
|
|
838
|
+
});
|
|
839
|
+
clearFormInitialValues(formName);
|
|
840
|
+
clearFormValues(formName);
|
|
841
|
+
clearFormState(formName);
|
|
842
|
+
};
|
|
843
|
+
}, []);
|
|
844
|
+
return h(FormContext.Provider, {
|
|
845
|
+
value: {
|
|
846
|
+
formName: formName
|
|
847
|
+
}
|
|
848
|
+
}, FormElement ? h(FormElement, _extends({
|
|
849
|
+
onSubmit: function onSubmit(e) {
|
|
850
|
+
e.preventDefault();
|
|
851
|
+
e.stopPropagation();
|
|
852
|
+
runSubmit();
|
|
853
|
+
}
|
|
854
|
+
}, props), children) : h("form", _extends({
|
|
855
|
+
onSubmit: function onSubmit(e) {
|
|
856
|
+
e.preventDefault();
|
|
857
|
+
e.stopPropagation();
|
|
858
|
+
runSubmit();
|
|
859
|
+
}
|
|
860
|
+
}, props), children), h(FormCleanUp, null));
|
|
861
|
+
}
|
|
862
|
+
function useFormContext() {
|
|
863
|
+
var c = useContext(FormContext);
|
|
864
|
+
if (!c) throw new Error("Must be use inside FormProvider");
|
|
865
|
+
return c;
|
|
866
|
+
}
|
|
867
|
+
function useForm(formNameOrFormInstance) {
|
|
868
|
+
var formInstance = useFormStore(function (state) {
|
|
869
|
+
return state.formInstances.find(function (i) {
|
|
870
|
+
var _formNameOrFormInstan;
|
|
871
|
+
return i.formName === ((_formNameOrFormInstan = formNameOrFormInstance == null ? void 0 : formNameOrFormInstance.formName) != null ? _formNameOrFormInstan : formNameOrFormInstance);
|
|
872
|
+
});
|
|
873
|
+
});
|
|
874
|
+
return [formInstance];
|
|
875
|
+
}
|
|
876
|
+
function useWatch(name, formNameOrFormInstance) {
|
|
877
|
+
var _useForm = useForm(formNameOrFormInstance),
|
|
878
|
+
formInstance = _useForm[0];
|
|
879
|
+
var value = useFormStore(function (state) {
|
|
880
|
+
var _formInstance$formNam;
|
|
881
|
+
return state.getFormItemValue((_formInstance$formNam = formInstance == null ? void 0 : formInstance.formName) != null ? _formInstance$formNam : formNameOrFormInstance, name);
|
|
882
|
+
});
|
|
883
|
+
return value;
|
|
884
|
+
}
|
|
885
|
+
function useSubmitDataWatch(_ref2) {
|
|
886
|
+
var formNameOrFormInstance = _ref2.formNameOrFormInstance,
|
|
887
|
+
_ref2$triggerWhenChan = _ref2.triggerWhenChange,
|
|
888
|
+
triggerWhenChange = _ref2$triggerWhenChan === void 0 ? false : _ref2$triggerWhenChan,
|
|
889
|
+
mapFn = _ref2.mapFn;
|
|
890
|
+
var _useForm2 = useForm(formNameOrFormInstance),
|
|
891
|
+
formInstance = _useForm2[0];
|
|
892
|
+
var value = useFormStore(function (state) {
|
|
893
|
+
return last(get(state.submitHistory, formInstance == null ? void 0 : formInstance.formName));
|
|
894
|
+
});
|
|
895
|
+
var _useState = useState(mapFn ? mapFn(value, null) : value),
|
|
896
|
+
submitData = _useState[0],
|
|
897
|
+
setSubmitData = _useState[1];
|
|
898
|
+
useEffect(function () {
|
|
899
|
+
if (!triggerWhenChange || !isEqual(submitData, value)) {
|
|
900
|
+
setSubmitData(mapFn ? mapFn(value, submitData) : value);
|
|
901
|
+
}
|
|
902
|
+
}, [value, triggerWhenChange]);
|
|
903
|
+
return submitData;
|
|
904
|
+
}
|
|
905
|
+
var useFormStateWatch = function useFormStateWatch(formNameOrFormInstance) {
|
|
906
|
+
var _useForm3 = useForm(formNameOrFormInstance),
|
|
907
|
+
formInstance = _useForm3[0];
|
|
908
|
+
var formState = useFormStore(function (state) {
|
|
909
|
+
var _state$formStates2;
|
|
910
|
+
return (_state$formStates2 = state.formStates) == null ? void 0 : _state$formStates2[formInstance == null ? void 0 : formInstance.formName];
|
|
911
|
+
});
|
|
912
|
+
return formState;
|
|
913
|
+
};
|
|
914
|
+
Form.useForm = useForm;
|
|
915
|
+
Form.useWatch = useWatch;
|
|
916
|
+
Form.useSubmitDataWatch = useSubmitDataWatch;
|
|
917
|
+
Form.useFormStateWatch = useFormStateWatch;
|
|
918
|
+
|
|
919
|
+
// ESM re-declaration of validation constants to match src/constants/validation.ts
|
|
920
|
+
var IS_STRING_NUMBER_REGEX = /^\d+$/;
|
|
921
|
+
var IS_USERNAME_REGEX = /^[a-zA-Z0-9._]{3,16}$/;
|
|
922
|
+
var IS_PASSWORD_REGEX = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
|
|
923
|
+
var IS_POSITIVE_STRING_NUMBER_REGEX = /^[1-9]\d*$/;
|
|
924
|
+
var IS_POSITIVE_INTEGER_STRING_NUMBER_REGEX = /^(?:0|[1-9]\d*)(?:\.\d+)?$/;
|
|
925
|
+
var IS_VIETNAMESE_PHONE_NUMBER_REGEX = /^(?:\+84|0)[\s\-\.]?(?:3[2-9]|5[6|8|9]|7[06-9]|8[1-5]|9[0-9])[\s\-\.]?\d[\d\s\-\.]{6,8}$/;
|
|
926
|
+
var IS_EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
|
927
|
+
var IS_NAME_REGEX = /^[A-Za-zÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚĂĐĨŨƠàáâãèéêìíòóôõùúăđĩũơƯĂÂÊÔƠƯăâêôơưÇçÝýỳỵỷỹ\s]{2,50}$/;
|
|
928
|
+
var IS_NOSPACE_STRING_AND_NUMBER_REGEX = /^[A-Za-zÀ-ỹ0-9]+$/;
|
|
929
|
+
var IS_STRING_AND_NUMBER_REGEX = /^[A-Za-zÀ-ỹ0-9][A-Za-zÀ-ỹ0-9\s]*$/;
|
|
930
|
+
var IS_NO_SPACE_ALPHABET_STRING_AND_NUMBER_REGEX = /^[A-Za-z0-9]+$/;
|
|
931
|
+
var IS_ALPHABET_STRING_AND_NUMBER_REGEX = /^[A-Za-z0-9]+(?:\s[A-Za-z0-9]+)*$/;
|
|
932
|
+
var IS_NO_SPACE_ALPHABET_STRING_REGEX = /^[A-Za-z]+$/;
|
|
933
|
+
|
|
934
|
+
var _iteratorSymbol = typeof Symbol !== "undefined" ? Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator")) : "@@iterator";
|
|
935
|
+
function _settle(pact, state, value) {
|
|
936
|
+
if (!pact.s) {
|
|
937
|
+
if (value instanceof _Pact) {
|
|
938
|
+
if (value.s) {
|
|
939
|
+
if (state & 1) {
|
|
940
|
+
state = value.s;
|
|
941
|
+
}
|
|
942
|
+
value = value.v;
|
|
943
|
+
} else {
|
|
944
|
+
value.o = _settle.bind(null, pact, state);
|
|
945
|
+
return;
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
if (value && value.then) {
|
|
949
|
+
value.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));
|
|
950
|
+
return;
|
|
951
|
+
}
|
|
952
|
+
pact.s = state;
|
|
953
|
+
pact.v = value;
|
|
954
|
+
var observer = pact.o;
|
|
955
|
+
if (observer) {
|
|
956
|
+
observer(pact);
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
var _Pact = /*#__PURE__*/function () {
|
|
961
|
+
function _Pact() {}
|
|
962
|
+
_Pact.prototype.then = function (onFulfilled, onRejected) {
|
|
963
|
+
var result = new _Pact();
|
|
964
|
+
var state = this.s;
|
|
965
|
+
if (state) {
|
|
966
|
+
var callback = state & 1 ? onFulfilled : onRejected;
|
|
967
|
+
if (callback) {
|
|
968
|
+
try {
|
|
969
|
+
_settle(result, 1, callback(this.v));
|
|
970
|
+
} catch (e) {
|
|
971
|
+
_settle(result, 2, e);
|
|
972
|
+
}
|
|
973
|
+
return result;
|
|
974
|
+
} else {
|
|
975
|
+
return this;
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
this.o = function (_this) {
|
|
979
|
+
try {
|
|
980
|
+
var value = _this.v;
|
|
981
|
+
if (_this.s & 1) {
|
|
982
|
+
_settle(result, 1, onFulfilled ? onFulfilled(value) : value);
|
|
983
|
+
} else if (onRejected) {
|
|
984
|
+
_settle(result, 1, onRejected(value));
|
|
985
|
+
} else {
|
|
986
|
+
_settle(result, 2, value);
|
|
987
|
+
}
|
|
988
|
+
} catch (e) {
|
|
989
|
+
_settle(result, 2, e);
|
|
990
|
+
}
|
|
991
|
+
};
|
|
992
|
+
return result;
|
|
993
|
+
};
|
|
994
|
+
return _Pact;
|
|
995
|
+
}();
|
|
996
|
+
function _isSettledPact(thenable) {
|
|
997
|
+
return thenable instanceof _Pact && thenable.s & 1;
|
|
998
|
+
}
|
|
999
|
+
function _forTo(array, body, check) {
|
|
1000
|
+
var i = -1,
|
|
1001
|
+
pact,
|
|
1002
|
+
reject;
|
|
1003
|
+
function _cycle(result) {
|
|
1004
|
+
try {
|
|
1005
|
+
while (++i < array.length && (!check || !check())) {
|
|
1006
|
+
result = body(i);
|
|
1007
|
+
if (result && result.then) {
|
|
1008
|
+
if (_isSettledPact(result)) {
|
|
1009
|
+
result = result.v;
|
|
1010
|
+
} else {
|
|
1011
|
+
result.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));
|
|
1012
|
+
return;
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
if (pact) {
|
|
1017
|
+
_settle(pact, 1, result);
|
|
1018
|
+
} else {
|
|
1019
|
+
pact = result;
|
|
1020
|
+
}
|
|
1021
|
+
} catch (e) {
|
|
1022
|
+
_settle(pact || (pact = new _Pact()), 2, e);
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
_cycle();
|
|
1026
|
+
return pact;
|
|
1027
|
+
}
|
|
1028
|
+
var VALID_PREMITIVE_TYPE = ["string", "number", "undefined"];
|
|
1029
|
+
function _forOf(target, body, check) {
|
|
1030
|
+
if (typeof target[_iteratorSymbol] === "function") {
|
|
1031
|
+
var iterator = target[_iteratorSymbol](),
|
|
1032
|
+
step,
|
|
1033
|
+
pact,
|
|
1034
|
+
reject;
|
|
1035
|
+
function _cycle(result) {
|
|
1036
|
+
try {
|
|
1037
|
+
while (!(step = iterator.next()).done && (!check || !check())) {
|
|
1038
|
+
result = body(step.value);
|
|
1039
|
+
if (result && result.then) {
|
|
1040
|
+
if (_isSettledPact(result)) {
|
|
1041
|
+
result = result.v;
|
|
1042
|
+
} else {
|
|
1043
|
+
result.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));
|
|
1044
|
+
return;
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
if (pact) {
|
|
1049
|
+
_settle(pact, 1, result);
|
|
1050
|
+
} else {
|
|
1051
|
+
pact = result;
|
|
1052
|
+
}
|
|
1053
|
+
} catch (e) {
|
|
1054
|
+
_settle(pact || (pact = new _Pact()), 2, e);
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
_cycle();
|
|
1058
|
+
if (iterator.return) {
|
|
1059
|
+
var _fixup = function (value) {
|
|
1060
|
+
try {
|
|
1061
|
+
if (!step.done) {
|
|
1062
|
+
iterator.return();
|
|
1063
|
+
}
|
|
1064
|
+
} catch (e) {}
|
|
1065
|
+
return value;
|
|
1066
|
+
};
|
|
1067
|
+
if (pact && pact.then) {
|
|
1068
|
+
return pact.then(_fixup, function (e) {
|
|
1069
|
+
throw _fixup(e);
|
|
1070
|
+
});
|
|
1071
|
+
}
|
|
1072
|
+
_fixup();
|
|
1073
|
+
}
|
|
1074
|
+
return pact;
|
|
1075
|
+
}
|
|
1076
|
+
// No support for Symbol.iterator
|
|
1077
|
+
if (!("length" in target)) {
|
|
1078
|
+
throw new TypeError("Object is not iterable");
|
|
1079
|
+
}
|
|
1080
|
+
// Handle live collections properly
|
|
1081
|
+
var values = [];
|
|
1082
|
+
for (var i = 0; i < target.length; i++) {
|
|
1083
|
+
values.push(target[i]);
|
|
1084
|
+
}
|
|
1085
|
+
return _forTo(values, function (i) {
|
|
1086
|
+
return body(values[i]);
|
|
1087
|
+
}, check);
|
|
1088
|
+
}
|
|
1089
|
+
function useFormItemControl(_ref) {
|
|
1090
|
+
var formName = _ref.formName,
|
|
1091
|
+
form = _ref.form,
|
|
1092
|
+
name = _ref.name,
|
|
1093
|
+
initialValue = _ref.initialValue,
|
|
1094
|
+
formItemId = _ref.formItemId,
|
|
1095
|
+
rules = _ref.rules,
|
|
1096
|
+
elementRef = _ref.elementRef;
|
|
1097
|
+
var contextForm = useFormContext();
|
|
1098
|
+
var _useFormStore = useFormStore(useShallow(function (state) {
|
|
1099
|
+
return {
|
|
1100
|
+
value: get(state.forms, (formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)) + "." + name),
|
|
1101
|
+
setData: state.setData,
|
|
1102
|
+
getCacheData: state.getCacheData,
|
|
1103
|
+
getFormValues: state.getFormValues
|
|
1104
|
+
};
|
|
1105
|
+
})),
|
|
1106
|
+
value = _useFormStore.value,
|
|
1107
|
+
setData = _useFormStore.setData,
|
|
1108
|
+
getCacheData = _useFormStore.getCacheData,
|
|
1109
|
+
getFormValues = _useFormStore.getFormValues;
|
|
1110
|
+
var _useFormCleanUp = useFormCleanUp(useShallow(function (state) {
|
|
1111
|
+
return {
|
|
1112
|
+
setCleanUpStack: state.setCleanUpStack
|
|
1113
|
+
};
|
|
1114
|
+
})),
|
|
1115
|
+
setCleanUpStack = _useFormCleanUp.setCleanUpStack;
|
|
1116
|
+
var _useFormStore2 = useFormStore(useShallow(function (state) {
|
|
1117
|
+
// console.log(
|
|
1118
|
+
// "Shallow get initValue: ",
|
|
1119
|
+
// formName || form?.formName || contextForm?.formName,
|
|
1120
|
+
// name,
|
|
1121
|
+
// get(
|
|
1122
|
+
// state.initialValues,
|
|
1123
|
+
// `${formName || form?.formName || contextForm?.formName}.${name}`
|
|
1124
|
+
// )
|
|
1125
|
+
// );
|
|
1126
|
+
return {
|
|
1127
|
+
initValue: get(state.initialValues, (formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)) + "." + name),
|
|
1128
|
+
setInitData: state.setInitData,
|
|
1129
|
+
getInitData: state.getInitData
|
|
1130
|
+
};
|
|
1131
|
+
})),
|
|
1132
|
+
internalInitValue = _useFormStore2.initValue,
|
|
1133
|
+
setInitData = _useFormStore2.setInitData,
|
|
1134
|
+
getInitData = _useFormStore2.getInitData;
|
|
1135
|
+
var _useFormListeners = useFormListeners(useShallow(function (state) {
|
|
1136
|
+
// console.log(
|
|
1137
|
+
// "Get listener from store: ",
|
|
1138
|
+
// state.listeners.find((l) => l.formItemId === formItemId)
|
|
1139
|
+
// );
|
|
1140
|
+
return {
|
|
1141
|
+
listener: state.listeners.find(function (l) {
|
|
1142
|
+
return l.formItemId === formItemId;
|
|
1143
|
+
}),
|
|
1144
|
+
setListener: state.setListener
|
|
1145
|
+
};
|
|
1146
|
+
})),
|
|
1147
|
+
listener = _useFormListeners.listener,
|
|
1148
|
+
setListener = _useFormListeners.setListener;
|
|
1149
|
+
var onInitData = function onInitData(value) {
|
|
1150
|
+
// console.log(
|
|
1151
|
+
// "Init:",
|
|
1152
|
+
// formName || form?.formName || contextForm?.formName,
|
|
1153
|
+
// name,
|
|
1154
|
+
// value
|
|
1155
|
+
// );
|
|
1156
|
+
setInitData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, value);
|
|
1157
|
+
};
|
|
1158
|
+
var onFocus = function onFocus() {
|
|
1159
|
+
setListener({
|
|
1160
|
+
formItemId: formItemId,
|
|
1161
|
+
isTouched: true,
|
|
1162
|
+
isDirty: listener == null ? void 0 : listener.isDirty
|
|
1163
|
+
});
|
|
1164
|
+
};
|
|
1165
|
+
var emitFocus = function emitFocus() {
|
|
1166
|
+
if (elementRef != null && elementRef.current) {
|
|
1167
|
+
elementRef.current.focus();
|
|
1168
|
+
}
|
|
1169
|
+
};
|
|
1170
|
+
var onChange = function onChange(value, options) {
|
|
1171
|
+
if ((options == null ? void 0 : options.notTriggerDirty) !== true) {
|
|
1172
|
+
setListener({
|
|
1173
|
+
formItemId: formItemId,
|
|
1174
|
+
isDirty: true,
|
|
1175
|
+
isTouched: listener == null ? void 0 : listener.isTouched
|
|
1176
|
+
});
|
|
1177
|
+
}
|
|
1178
|
+
setData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, value);
|
|
1179
|
+
};
|
|
1180
|
+
var onReset = function onReset(value) {
|
|
1181
|
+
console.log("Reset", value, getInitData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name));
|
|
1182
|
+
onChange(isNil(value) ? getInitData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name) : value);
|
|
1183
|
+
};
|
|
1184
|
+
|
|
1185
|
+
// validate field rules
|
|
1186
|
+
var internalRules = useMemo(function () {
|
|
1187
|
+
return rules || [];
|
|
1188
|
+
}, [rules]);
|
|
1189
|
+
var _useTaskEffect = useTaskEffect({
|
|
1190
|
+
task: function task() {
|
|
1191
|
+
try {
|
|
1192
|
+
var _temp2 = function _temp2() {
|
|
1193
|
+
setListener({
|
|
1194
|
+
formItemId: formItemId,
|
|
1195
|
+
internalErrors: listErrors
|
|
1196
|
+
});
|
|
1197
|
+
return listErrors;
|
|
1198
|
+
};
|
|
1199
|
+
var listErrors = [];
|
|
1200
|
+
var formValues = getFormValues(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName));
|
|
1201
|
+
var ruleToTask = internalRules == null ? void 0 : internalRules.map(function (r, index) {
|
|
1202
|
+
return function () {
|
|
1203
|
+
try {
|
|
1204
|
+
var _temp4 = function _temp4(_result) {
|
|
1205
|
+
if (_exit) return _result;
|
|
1206
|
+
if (VALID_PREMITIVE_TYPE.includes(typeof value)) {
|
|
1207
|
+
var _fieldValue$toString;
|
|
1208
|
+
// REQUIRE
|
|
1209
|
+
if (r.required && !((fieldValue == null || (_fieldValue$toString = fieldValue.toString()) == null || (_fieldValue$toString = _fieldValue$toString.trim()) == null ? void 0 : _fieldValue$toString.length) > 0)) {
|
|
1210
|
+
// tempMessage.push("This field is required!");
|
|
1211
|
+
listErrors.push({
|
|
1212
|
+
ruleName: ruleName,
|
|
1213
|
+
message: r.message
|
|
1214
|
+
});
|
|
1215
|
+
return;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
// Min Max
|
|
1219
|
+
if (!isNil(r.min) || !isNil(r.max)) {
|
|
1220
|
+
var _r$min, _r$max;
|
|
1221
|
+
if (isNil(value)) {
|
|
1222
|
+
listErrors.push({
|
|
1223
|
+
ruleName: ruleName,
|
|
1224
|
+
message: r.message
|
|
1225
|
+
});
|
|
1226
|
+
return;
|
|
1227
|
+
}
|
|
1228
|
+
if (((_r$min = r.min) != null ? _r$min : Number.MIN_SAFE_INTEGER) <= ((_r$max = r.max) != null ? _r$max : Number.MAX_SAFE_INTEGER)) {
|
|
1229
|
+
if (!isNil(r.min)) {
|
|
1230
|
+
if (!isNaN(Number(fieldValue)) && Number(fieldValue) <= r.min) {
|
|
1231
|
+
// tempMessage.push(MIN_INVALID_MESSAGE);
|
|
1232
|
+
listErrors.push({
|
|
1233
|
+
ruleName: ruleName,
|
|
1234
|
+
message: r.message
|
|
1235
|
+
});
|
|
1236
|
+
return;
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
if (!isNil(r.max)) {
|
|
1240
|
+
if (!isNaN(Number(fieldValue)) && Number(fieldValue) >= r.max) {
|
|
1241
|
+
// tempMessage.push(MAX_INVALID_MESSAGE);
|
|
1242
|
+
listErrors.push({
|
|
1243
|
+
ruleName: ruleName,
|
|
1244
|
+
message: r.message
|
|
1245
|
+
});
|
|
1246
|
+
return;
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
// MIN LENGTH MAX LENGTH
|
|
1253
|
+
if (!isNil(r.minLength) || !isNil(r.maxLength)) {
|
|
1254
|
+
var _r$minLength, _r$maxLength;
|
|
1255
|
+
if (((_r$minLength = r.minLength) != null ? _r$minLength : Number.MIN_SAFE_INTEGER) <= ((_r$maxLength = r.maxLength) != null ? _r$maxLength : Number.MAX_SAFE_INTEGER)) {
|
|
1256
|
+
if (!isNil(r.minLength)) {
|
|
1257
|
+
if ((fieldValue == null ? void 0 : fieldValue.length) <= r.minLength) {
|
|
1258
|
+
// tempMessage.push(MIN_INVALID_LENGTH_MESSAGE);
|
|
1259
|
+
listErrors.push({
|
|
1260
|
+
ruleName: ruleName,
|
|
1261
|
+
message: r.message
|
|
1262
|
+
});
|
|
1263
|
+
return;
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
if (!isNil(r.maxLength)) {
|
|
1267
|
+
if ((fieldValue == null ? void 0 : fieldValue.length) >= r.maxLength) {
|
|
1268
|
+
// tempMessage.push(MAX_INVALID_LENGTH_MESSAGE);
|
|
1269
|
+
listErrors.push({
|
|
1270
|
+
ruleName: ruleName,
|
|
1271
|
+
message: r.message
|
|
1272
|
+
});
|
|
1273
|
+
return;
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
// Password
|
|
1280
|
+
if (r.isPassword && !IS_PASSWORD_REGEX.test(fieldValue)) {
|
|
1281
|
+
// tempMessage.push(IS_PASSWORD_INVALID_MESSAGE);
|
|
1282
|
+
listErrors.push({
|
|
1283
|
+
ruleName: ruleName,
|
|
1284
|
+
message: r.message
|
|
1285
|
+
});
|
|
1286
|
+
return;
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
// Username
|
|
1290
|
+
if (r.isUsername && !IS_USERNAME_REGEX.test(fieldValue)) {
|
|
1291
|
+
// tempMessage.push(IS_USERNAME_INVALID_MESSAGE);
|
|
1292
|
+
listErrors.push({
|
|
1293
|
+
ruleName: ruleName,
|
|
1294
|
+
message: r.message
|
|
1295
|
+
});
|
|
1296
|
+
return;
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
// Is Vietnamese Phone number
|
|
1300
|
+
if (r.isPhoneNumber && !IS_VIETNAMESE_PHONE_NUMBER_REGEX.test(fieldValue)) {
|
|
1301
|
+
// tempMessage.push(IS_VIETNAMESE_PHONE_NUMBER_INVALID_MESSAGE);
|
|
1302
|
+
listErrors.push({
|
|
1303
|
+
ruleName: ruleName,
|
|
1304
|
+
message: r.message
|
|
1305
|
+
});
|
|
1306
|
+
return;
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
// String number
|
|
1310
|
+
if (r.isStringNumber && !IS_STRING_NUMBER_REGEX.test(fieldValue)) {
|
|
1311
|
+
// tempMessage.push(IS_STRING_NUMBER_INVALID_MESSAGE);
|
|
1312
|
+
listErrors.push({
|
|
1313
|
+
ruleName: ruleName,
|
|
1314
|
+
message: r.message
|
|
1315
|
+
});
|
|
1316
|
+
return;
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
// String positive number
|
|
1320
|
+
if (r.isPositiveStringNumber && !IS_POSITIVE_STRING_NUMBER_REGEX.test(fieldValue)) {
|
|
1321
|
+
// tempMessage.push(IS_POSITIVE_STRING_NUMBER_INVALID_MESSAGE);
|
|
1322
|
+
listErrors.push({
|
|
1323
|
+
ruleName: ruleName,
|
|
1324
|
+
message: r.message
|
|
1325
|
+
});
|
|
1326
|
+
return;
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1329
|
+
// String positive integer number
|
|
1330
|
+
if (r.isPositiveIntegerStringNumber && !IS_POSITIVE_INTEGER_STRING_NUMBER_REGEX.test(fieldValue)) {
|
|
1331
|
+
// tempMessage.push(
|
|
1332
|
+
listErrors.push({
|
|
1333
|
+
ruleName: ruleName,
|
|
1334
|
+
message: r.message
|
|
1335
|
+
});
|
|
1336
|
+
return;
|
|
1337
|
+
// IS_POSITIVE_INTEGER_STRING_NUMBER_INVALID_MESSAGE
|
|
1338
|
+
// );
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
// Email
|
|
1342
|
+
if (r.isEmail && !IS_EMAIL_REGEX.test(fieldValue)) {
|
|
1343
|
+
// tempMessage.push(IS_EMAIL_INVALID_MESSAGE);
|
|
1344
|
+
listErrors.push({
|
|
1345
|
+
ruleName: ruleName,
|
|
1346
|
+
message: r.message
|
|
1347
|
+
});
|
|
1348
|
+
return;
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
// Vietnamese Name
|
|
1352
|
+
if (r.isVietnameseName && !IS_NAME_REGEX.test(fieldValue)) {
|
|
1353
|
+
// tempMessage.push(IS_NAME_INVALID_MESSAGE);
|
|
1354
|
+
listErrors.push({
|
|
1355
|
+
ruleName: ruleName,
|
|
1356
|
+
message: r.message
|
|
1357
|
+
});
|
|
1358
|
+
return;
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
// String and number without whitespace
|
|
1362
|
+
if (r.isNoSpaceStringAndNumber && !IS_NOSPACE_STRING_AND_NUMBER_REGEX.test(fieldValue)) {
|
|
1363
|
+
// tempMessage.push(IS_NOSPACE_STRING_AND_NUMBER_MESSAGE);
|
|
1364
|
+
listErrors.push({
|
|
1365
|
+
ruleName: ruleName,
|
|
1366
|
+
message: r.message
|
|
1367
|
+
});
|
|
1368
|
+
return;
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
// String and number with
|
|
1372
|
+
if (r.isStringAndNumber && !IS_STRING_AND_NUMBER_REGEX.test(fieldValue)) {
|
|
1373
|
+
// tempMessage.push(IS_STRING_AND_NUMBER_MESSAGE);
|
|
1374
|
+
listErrors.push({
|
|
1375
|
+
ruleName: ruleName,
|
|
1376
|
+
message: r.message
|
|
1377
|
+
});
|
|
1378
|
+
return;
|
|
1379
|
+
}
|
|
1380
|
+
if (r.isNoSpaceOnlyAlphabetStringAndNumber && !IS_NO_SPACE_ALPHABET_STRING_AND_NUMBER_REGEX.test(fieldValue)) {
|
|
1381
|
+
// tempMessage.push(IS_NO_SPACE_ALPHABET_STRING_AND_NUMBER_MESSAGE);
|
|
1382
|
+
listErrors.push({
|
|
1383
|
+
ruleName: ruleName,
|
|
1384
|
+
message: r.message
|
|
1385
|
+
});
|
|
1386
|
+
return;
|
|
1387
|
+
}
|
|
1388
|
+
if (r.isOnlyAlphabetStringAndNumber && !IS_ALPHABET_STRING_AND_NUMBER_REGEX.test(fieldValue)) {
|
|
1389
|
+
// tempMessage.push(IS_ALPHABET_STRING_AND_NUMBER_MESSAGE);
|
|
1390
|
+
listErrors.push({
|
|
1391
|
+
ruleName: ruleName,
|
|
1392
|
+
message: r.message
|
|
1393
|
+
});
|
|
1394
|
+
return;
|
|
1395
|
+
}
|
|
1396
|
+
if (r.isNoSpaceAlphabetString && !IS_NO_SPACE_ALPHABET_STRING_REGEX.test(fieldValue)) {
|
|
1397
|
+
// tempMessage.push(IS_NO_SPACE_ALPHABET_STRING_MESSAGE);
|
|
1398
|
+
listErrors.push({
|
|
1399
|
+
ruleName: ruleName,
|
|
1400
|
+
message: r.message
|
|
1401
|
+
});
|
|
1402
|
+
}
|
|
1403
|
+
}
|
|
1404
|
+
};
|
|
1405
|
+
var _exit;
|
|
1406
|
+
var ruleName = (r == null ? void 0 : r.name) || index;
|
|
1407
|
+
var fieldValue = value == null || value.toString == null ? void 0 : value.toString();
|
|
1408
|
+
var _temp3 = function () {
|
|
1409
|
+
if (typeof r.handler === "function") {
|
|
1410
|
+
return Promise.resolve(r.handler(value, formValues)).then(function (_r$handler) {
|
|
1411
|
+
if (!_r$handler) {
|
|
1412
|
+
listErrors.push({
|
|
1413
|
+
ruleName: ruleName,
|
|
1414
|
+
message: r.message
|
|
1415
|
+
});
|
|
1416
|
+
_exit = 1;
|
|
1417
|
+
}
|
|
1418
|
+
});
|
|
1419
|
+
}
|
|
1420
|
+
}();
|
|
1421
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
|
1422
|
+
} catch (e) {
|
|
1423
|
+
return Promise.reject(e);
|
|
1424
|
+
}
|
|
1425
|
+
};
|
|
1426
|
+
});
|
|
1427
|
+
|
|
1428
|
+
// console.log("Trigger validate: ", listErrors);
|
|
1429
|
+
var _temp = _forOf(ruleToTask, function (rAsync) {
|
|
1430
|
+
return Promise.resolve(rAsync()).then(function () {});
|
|
1431
|
+
});
|
|
1432
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
|
1433
|
+
} catch (e) {
|
|
1434
|
+
return Promise.reject(e);
|
|
1435
|
+
}
|
|
1436
|
+
},
|
|
1437
|
+
deps: [internalRules, value],
|
|
1438
|
+
onError: function onError(err) {
|
|
1439
|
+
console.log(err);
|
|
1440
|
+
}
|
|
1441
|
+
}),
|
|
1442
|
+
errors = _useTaskEffect.data,
|
|
1443
|
+
state = _useTaskEffect.state;
|
|
1444
|
+
|
|
1445
|
+
// useEffect(() => {
|
|
1446
|
+
// console.log({ name, errors });
|
|
1447
|
+
// }, [errors]);
|
|
1448
|
+
|
|
1449
|
+
// useEffect(() => {
|
|
1450
|
+
// console.log({ name, listener });
|
|
1451
|
+
// }, [listener]);
|
|
1452
|
+
|
|
1453
|
+
useEffect(function () {
|
|
1454
|
+
// console.log({ internalInitValue, value, initialValue });
|
|
1455
|
+
// console.log("Init item value: ", name, value, internalInitValue);
|
|
1456
|
+
// console.log("internalInitValue: ", internalInitValue);
|
|
1457
|
+
|
|
1458
|
+
if (!value) {
|
|
1459
|
+
if (!internalInitValue) {
|
|
1460
|
+
if (!isNil(initialValue)) {
|
|
1461
|
+
console.log("On init data", initialValue);
|
|
1462
|
+
onInitData(initialValue);
|
|
1463
|
+
}
|
|
1464
|
+
} else {
|
|
1465
|
+
onChange(internalInitValue);
|
|
1466
|
+
}
|
|
1467
|
+
}
|
|
1468
|
+
}, [internalInitValue]);
|
|
1469
|
+
useEffect(function () {
|
|
1470
|
+
if (!listener) {
|
|
1471
|
+
setListener({
|
|
1472
|
+
onChange: onChange,
|
|
1473
|
+
emitFocus: emitFocus,
|
|
1474
|
+
isTouched: false,
|
|
1475
|
+
isDirty: false,
|
|
1476
|
+
name: name,
|
|
1477
|
+
formName: formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName),
|
|
1478
|
+
formItemId: formItemId,
|
|
1479
|
+
onReset: onReset
|
|
1480
|
+
});
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
// return () => {
|
|
1484
|
+
// console.log("Revoke listener", listener);
|
|
1485
|
+
|
|
1486
|
+
// };
|
|
1487
|
+
}, []);
|
|
1488
|
+
useEffect(function () {
|
|
1489
|
+
if (listener) {
|
|
1490
|
+
setListener({
|
|
1491
|
+
formItemId: formItemId,
|
|
1492
|
+
onChange: onChange,
|
|
1493
|
+
name: name,
|
|
1494
|
+
formName: formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName),
|
|
1495
|
+
onReset: onReset,
|
|
1496
|
+
isTouched: listener == null ? void 0 : listener.isTouched,
|
|
1497
|
+
isDirty: listener == null ? void 0 : listener.isDirty
|
|
1498
|
+
});
|
|
1499
|
+
}
|
|
1500
|
+
var cacheData = getCacheData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName));
|
|
1501
|
+
|
|
1502
|
+
// console.log("Get cache Data after list change: ", cacheData);
|
|
1503
|
+
|
|
1504
|
+
if (cacheData) {
|
|
1505
|
+
var getNewDataFromCache = get(cacheData, name);
|
|
1506
|
+
|
|
1507
|
+
// console.log("Init data when change form ite: ", name, cacheData);
|
|
1508
|
+
|
|
1509
|
+
if (!getNewDataFromCache) {
|
|
1510
|
+
onChange(initialValue);
|
|
1511
|
+
} else onChange(getNewDataFromCache);
|
|
1512
|
+
}
|
|
1513
|
+
}, [name, formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)]);
|
|
1514
|
+
useEffect(function () {
|
|
1515
|
+
return function () {
|
|
1516
|
+
setCleanUpStack({
|
|
1517
|
+
itemKey: formItemId
|
|
1518
|
+
});
|
|
1519
|
+
};
|
|
1520
|
+
}, []);
|
|
1521
|
+
return {
|
|
1522
|
+
value: value,
|
|
1523
|
+
onChange: onChange,
|
|
1524
|
+
state: state,
|
|
1525
|
+
errors: errors,
|
|
1526
|
+
onFocus: onFocus,
|
|
1527
|
+
isDirty: listener == null ? void 0 : listener.isDirty
|
|
1528
|
+
};
|
|
1529
|
+
}
|
|
1530
|
+
|
|
1531
|
+
function FormItem(_ref) {
|
|
1532
|
+
var _cloneElement;
|
|
1533
|
+
var children = _ref.children,
|
|
1534
|
+
name = _ref.name,
|
|
1535
|
+
formName = _ref.formName,
|
|
1536
|
+
initialValue = _ref.initialValue,
|
|
1537
|
+
externalFormItemId = _ref.formItemId,
|
|
1538
|
+
rules = _ref.rules,
|
|
1539
|
+
_ref$valuePropName = _ref.valuePropName,
|
|
1540
|
+
valuePropName = _ref$valuePropName === void 0 ? "value" : _ref$valuePropName,
|
|
1541
|
+
getValueFromEvent = _ref.getValueFromEvent;
|
|
1542
|
+
var elRef = useRef();
|
|
1543
|
+
var _useState = useState(externalFormItemId != null ? externalFormItemId : v4()),
|
|
1544
|
+
formItemId = _useState[0];
|
|
1545
|
+
var _useFormItemControl = useFormItemControl({
|
|
1546
|
+
formName: formName,
|
|
1547
|
+
name: name,
|
|
1548
|
+
initialValue: initialValue,
|
|
1549
|
+
formItemId: formItemId,
|
|
1550
|
+
rules: rules,
|
|
1551
|
+
elementRef: elRef
|
|
1552
|
+
}),
|
|
1553
|
+
value = _useFormItemControl.value,
|
|
1554
|
+
_onChange = _useFormItemControl.onChange,
|
|
1555
|
+
errors = _useFormItemControl.errors,
|
|
1556
|
+
state = _useFormItemControl.state,
|
|
1557
|
+
onFocus = _useFormItemControl.onFocus,
|
|
1558
|
+
isDirty = _useFormItemControl.isDirty;
|
|
1559
|
+
// console.log("re-render", formName, name);
|
|
1560
|
+
|
|
1561
|
+
// useEffect(() => {
|
|
1562
|
+
// console.log({ value });
|
|
1563
|
+
// }, [value]);
|
|
1564
|
+
|
|
1565
|
+
return cloneElement(children, (_cloneElement = {}, _cloneElement[valuePropName] = value, _cloneElement.onChange = function onChange(e) {
|
|
1566
|
+
var val = e;
|
|
1567
|
+
if (getValueFromEvent && typeof getValueFromEvent === "function") {
|
|
1568
|
+
val = getValueFromEvent(e);
|
|
1569
|
+
} else {
|
|
1570
|
+
if (e && e.target) {
|
|
1571
|
+
val = e.target.value;
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
_onChange(val);
|
|
1575
|
+
}, _cloneElement.isDirty = isDirty, _cloneElement.errors = errors, _cloneElement.onFocus = onFocus, _cloneElement.validateState = state, _cloneElement.ref = elRef, _cloneElement));
|
|
1576
|
+
}
|
|
1577
|
+
|
|
1578
|
+
function useFormListControl(_ref) {
|
|
1579
|
+
var name = _ref.name,
|
|
1580
|
+
form = _ref.form,
|
|
1581
|
+
initialValues = _ref.initialValues,
|
|
1582
|
+
formName = _ref.formName;
|
|
1583
|
+
var contextForm = useFormContext();
|
|
1584
|
+
var getFormValues = useFormStore(function (state) {
|
|
1585
|
+
return state.getFormValues;
|
|
1586
|
+
});
|
|
1587
|
+
var _useState = useState(),
|
|
1588
|
+
listFormInitValues = _useState[0],
|
|
1589
|
+
setListFormInitValues = _useState[1];
|
|
1590
|
+
var _useFormStore = useFormStore(useShallow(function (state) {
|
|
1591
|
+
return {
|
|
1592
|
+
cacheData: state.cacheData,
|
|
1593
|
+
clearCacheData: state.clearCacheData,
|
|
1594
|
+
setCacheData: state.setCacheData
|
|
1595
|
+
};
|
|
1596
|
+
})),
|
|
1597
|
+
clearCacheData = _useFormStore.clearCacheData,
|
|
1598
|
+
setCacheData = _useFormStore.setCacheData;
|
|
1599
|
+
var _useFormCleanUp = useFormCleanUp(useShallow(function (state) {
|
|
1600
|
+
return {
|
|
1601
|
+
setCleanUpStack: state.setCleanUpStack
|
|
1602
|
+
};
|
|
1603
|
+
})),
|
|
1604
|
+
setCleanUpStack = _useFormCleanUp.setCleanUpStack;
|
|
1605
|
+
var _useFormStore2 = useFormStore(useShallow(function (state) {
|
|
1606
|
+
// console.log(
|
|
1607
|
+
// "Shallow get initValue: ",
|
|
1608
|
+
// formName || form?.formName || contextForm?.formName,
|
|
1609
|
+
// name,
|
|
1610
|
+
// get(
|
|
1611
|
+
// state.initialValues,
|
|
1612
|
+
// `${formName || form?.formName || contextForm?.formName}.${name}`
|
|
1613
|
+
// )
|
|
1614
|
+
// );
|
|
1615
|
+
return {
|
|
1616
|
+
initValue: get(state.initialValues, (formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)) + "." + name),
|
|
1617
|
+
formState: get(state.formStates, formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)),
|
|
1618
|
+
setInitData: state.setInitData,
|
|
1619
|
+
getFormState: state.getFormState
|
|
1620
|
+
};
|
|
1621
|
+
})),
|
|
1622
|
+
internalInitValue = _useFormStore2.initValue,
|
|
1623
|
+
formState = _useFormStore2.formState;
|
|
1624
|
+
var _useState2 = useState([]),
|
|
1625
|
+
listFields = _useState2[0],
|
|
1626
|
+
setListFields = _useState2[1];
|
|
1627
|
+
var handleCacheListField = function handleCacheListField(prev, cur) {
|
|
1628
|
+
var currentFormValues = cloneDeep(getFormValues(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)));
|
|
1629
|
+
var formDataBeforeChange = get(currentFormValues, name);
|
|
1630
|
+
var mapPrevWithKey = formDataBeforeChange.map(function (d, index) {
|
|
1631
|
+
var findPrev = prev.find(function (p, pIndex) {
|
|
1632
|
+
return pIndex === index;
|
|
1633
|
+
});
|
|
1634
|
+
if (!findPrev) return undefined;
|
|
1635
|
+
return {
|
|
1636
|
+
key: findPrev.key,
|
|
1637
|
+
value: d
|
|
1638
|
+
};
|
|
1639
|
+
}).filter(Boolean);
|
|
1640
|
+
var mapCurWithKey = cur.map(function (c) {
|
|
1641
|
+
return mapPrevWithKey.find(function (m) {
|
|
1642
|
+
return m.key === c.key;
|
|
1643
|
+
}) || c;
|
|
1644
|
+
});
|
|
1645
|
+
var getNewValueCache = mapCurWithKey.filter(Boolean).map(function (c) {
|
|
1646
|
+
return c.value;
|
|
1647
|
+
});
|
|
1648
|
+
var startRemoveIndex = formDataBeforeChange.length - getNewValueCache.length;
|
|
1649
|
+
// console.log("Before list fields: ", prev);
|
|
1650
|
+
// console.log("After list fields: ", cur);
|
|
1651
|
+
// console.log("Before change arr value: ", formDataBeforeChange);
|
|
1652
|
+
// console.log("Mapping prev value with prev fields: ", mapPrevWithKey);
|
|
1653
|
+
// console.log("Mapping Cur value with prev fields: ", mapCurWithKey);
|
|
1654
|
+
// console.log("After change arr value: ", getNewValueCache);
|
|
1655
|
+
|
|
1656
|
+
// Nếu số phần tử trước khi thay đổi mảng lớn hơn thì đẩy 2 phần tử còn lại vào clean up stack để clear
|
|
1657
|
+
if (startRemoveIndex > 0) {
|
|
1658
|
+
Array.from(Array(startRemoveIndex)).map(function (_, index) {
|
|
1659
|
+
return getNewValueCache.length + index;
|
|
1660
|
+
}).forEach(function (index) {
|
|
1661
|
+
// console.log("Data for cleanup arr element: ", {
|
|
1662
|
+
// formName: formName || form?.formName || contextForm?.formName,
|
|
1663
|
+
// name: `${name}.${index}`,
|
|
1664
|
+
// type: "array",
|
|
1665
|
+
// });
|
|
1666
|
+
setCleanUpStack({
|
|
1667
|
+
formName: formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName),
|
|
1668
|
+
name: name + "." + index,
|
|
1669
|
+
type: "array"
|
|
1670
|
+
});
|
|
1671
|
+
});
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1674
|
+
// console.log({ getNewValueCache });
|
|
1675
|
+
setCacheData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, getNewValueCache);
|
|
1676
|
+
};
|
|
1677
|
+
var add = function add(index) {
|
|
1678
|
+
setListFields(function (prev) {
|
|
1679
|
+
if (index > prev.length) return prev;
|
|
1680
|
+
if (index < 0) return prev;
|
|
1681
|
+
if (index === prev.length) {
|
|
1682
|
+
var newName = name + "." + prev.length;
|
|
1683
|
+
var newKey = v4();
|
|
1684
|
+
var _result = [].concat(prev, [{
|
|
1685
|
+
name: newName,
|
|
1686
|
+
key: newKey
|
|
1687
|
+
}]);
|
|
1688
|
+
return _result;
|
|
1689
|
+
}
|
|
1690
|
+
var clonePrev = [].concat(prev);
|
|
1691
|
+
var result = clonePrev.reduce(function (prev, cur, curIndex) {
|
|
1692
|
+
var newKey = v4();
|
|
1693
|
+
if (curIndex === index) return [].concat(prev, [{
|
|
1694
|
+
key: newKey
|
|
1695
|
+
}, cur]);
|
|
1696
|
+
return [].concat(prev, [cur]);
|
|
1697
|
+
}, []).map(function (r, index) {
|
|
1698
|
+
return {
|
|
1699
|
+
name: name + "." + index,
|
|
1700
|
+
key: r.key
|
|
1701
|
+
};
|
|
1702
|
+
});
|
|
1703
|
+
handleCacheListField(prev, result);
|
|
1704
|
+
return result;
|
|
1705
|
+
});
|
|
1706
|
+
};
|
|
1707
|
+
var remove = function remove(_ref2) {
|
|
1708
|
+
var index = _ref2.index,
|
|
1709
|
+
key = _ref2.key;
|
|
1710
|
+
setListFields(function (prev) {
|
|
1711
|
+
if (!isNil(key)) {
|
|
1712
|
+
var clonePrev = [].concat(prev);
|
|
1713
|
+
var removedItem = clonePrev.filter(function (d) {
|
|
1714
|
+
return d.key !== key;
|
|
1715
|
+
});
|
|
1716
|
+
console.log("Remove data: ", removedItem);
|
|
1717
|
+
var result = removedItem.map(function (r, index) {
|
|
1718
|
+
return {
|
|
1719
|
+
name: name + "." + index,
|
|
1720
|
+
key: r.key
|
|
1721
|
+
};
|
|
1722
|
+
});
|
|
1723
|
+
handleCacheListField(prev, result);
|
|
1724
|
+
return result;
|
|
1725
|
+
}
|
|
1726
|
+
if (!isNil(index)) {
|
|
1727
|
+
if (index > prev.length - 1 || index < 0) return prev;
|
|
1728
|
+
var _clonePrev = [].concat(prev);
|
|
1729
|
+
_clonePrev.splice(index, 1);
|
|
1730
|
+
var _result2 = _clonePrev.map(function (r, index) {
|
|
1731
|
+
return {
|
|
1732
|
+
name: name + "." + index,
|
|
1733
|
+
key: r.key
|
|
1734
|
+
};
|
|
1735
|
+
});
|
|
1736
|
+
handleCacheListField(prev, _result2);
|
|
1737
|
+
return _result2;
|
|
1738
|
+
}
|
|
1739
|
+
return prev;
|
|
1740
|
+
});
|
|
1741
|
+
};
|
|
1742
|
+
var move = function move(_ref3) {
|
|
1743
|
+
var from = _ref3.from,
|
|
1744
|
+
fromKey = _ref3.fromKey,
|
|
1745
|
+
to = _ref3.to;
|
|
1746
|
+
setListFields(function (prev) {
|
|
1747
|
+
console.log("move list item: ", {
|
|
1748
|
+
from: from,
|
|
1749
|
+
to: to
|
|
1750
|
+
});
|
|
1751
|
+
if (from >= listFields.length || from < 0 || to >= listFields.length || to < 0 || from === to) return prev;
|
|
1752
|
+
console.log("Trigger move item: ");
|
|
1753
|
+
if (!isNil(fromKey)) {
|
|
1754
|
+
var findItemIndex = prev.findIndex(function (p) {
|
|
1755
|
+
return p.key === fromKey;
|
|
1756
|
+
});
|
|
1757
|
+
if (findItemIndex < 0) return prev;
|
|
1758
|
+
var moveItem = cloneDeep(listFields[findItemIndex]);
|
|
1759
|
+
var result = prev.reduce(function (prev, cur, curIndex) {
|
|
1760
|
+
if (findItemIndex === curIndex) return [].concat(prev);
|
|
1761
|
+
if (to === curIndex) {
|
|
1762
|
+
if (findItemIndex > to) return [].concat(prev, [moveItem, cur]);else return [].concat(prev, [cur, moveItem]);
|
|
1763
|
+
} else {
|
|
1764
|
+
return [].concat(prev, [cur]);
|
|
1765
|
+
}
|
|
1766
|
+
}, []).map(function (i, index) {
|
|
1767
|
+
return {
|
|
1768
|
+
key: i.key,
|
|
1769
|
+
name: name + "." + index
|
|
1770
|
+
};
|
|
1771
|
+
});
|
|
1772
|
+
handleCacheListField(prev, result);
|
|
1773
|
+
return result;
|
|
1774
|
+
} else if (!isNil(from)) {
|
|
1775
|
+
console.log("Trigger from index: ");
|
|
1776
|
+
var _moveItem = cloneDeep(listFields[from]);
|
|
1777
|
+
var _result3 = prev.reduce(function (prev, cur, curIndex) {
|
|
1778
|
+
if (from === curIndex) return [].concat(prev);
|
|
1779
|
+
if (to === curIndex) {
|
|
1780
|
+
if (from > to) return [].concat(prev, [_moveItem, cur]);else return [].concat(prev, [cur, _moveItem]);
|
|
1781
|
+
} else {
|
|
1782
|
+
return [].concat(prev, [cur]);
|
|
1783
|
+
}
|
|
1784
|
+
}, []).map(function (i, index) {
|
|
1785
|
+
return {
|
|
1786
|
+
key: i.key,
|
|
1787
|
+
name: name + "." + index
|
|
1788
|
+
};
|
|
1789
|
+
});
|
|
1790
|
+
console.log({
|
|
1791
|
+
result: _result3
|
|
1792
|
+
});
|
|
1793
|
+
handleCacheListField(prev, _result3);
|
|
1794
|
+
return _result3;
|
|
1795
|
+
}
|
|
1796
|
+
return prev;
|
|
1797
|
+
});
|
|
1798
|
+
};
|
|
1799
|
+
useEffect(function () {
|
|
1800
|
+
console.log("Trigger init", formState == null ? void 0 : formState.isInitied, internalInitValue);
|
|
1801
|
+
if (formState != null && formState.isInitied) {
|
|
1802
|
+
if (Array.isArray(listFormInitValues)) {
|
|
1803
|
+
var result = listFormInitValues.map(function (_, i) {
|
|
1804
|
+
var itemName = name + "." + i;
|
|
1805
|
+
var key = v4();
|
|
1806
|
+
return {
|
|
1807
|
+
key: key,
|
|
1808
|
+
name: itemName
|
|
1809
|
+
};
|
|
1810
|
+
});
|
|
1811
|
+
console.log("Get local init values: ", listFormInitValues, result);
|
|
1812
|
+
setListFields(result);
|
|
1813
|
+
setCacheData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, listFormInitValues);
|
|
1814
|
+
return;
|
|
1815
|
+
}
|
|
1816
|
+
if (Array.isArray(internalInitValue)) {
|
|
1817
|
+
var _result4 = internalInitValue.map(function (_, i) {
|
|
1818
|
+
var itemName = name + "." + i;
|
|
1819
|
+
var key = v4();
|
|
1820
|
+
return {
|
|
1821
|
+
key: key,
|
|
1822
|
+
name: itemName
|
|
1823
|
+
};
|
|
1824
|
+
});
|
|
1825
|
+
|
|
1826
|
+
// console.log("Get form init values: ", internalInitValue, result);
|
|
1827
|
+
|
|
1828
|
+
setListFields(_result4);
|
|
1829
|
+
setListFormInitValues(internalInitValue);
|
|
1830
|
+
return;
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
// console.log({ initialValues });
|
|
1834
|
+
|
|
1835
|
+
// console.log("After init: ", { result: cloneDeep(result) });
|
|
1836
|
+
|
|
1837
|
+
if (Array.isArray(initialValues)) {
|
|
1838
|
+
var _result5 = initialValues.map(function (_, i) {
|
|
1839
|
+
var itemName = name + "." + i;
|
|
1840
|
+
var key = v4();
|
|
1841
|
+
return {
|
|
1842
|
+
key: key,
|
|
1843
|
+
name: itemName
|
|
1844
|
+
};
|
|
1845
|
+
});
|
|
1846
|
+
if (initialValues) {
|
|
1847
|
+
setCacheData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, initialValues);
|
|
1848
|
+
}
|
|
1849
|
+
setListFields(_result5);
|
|
1850
|
+
setListFormInitValues(initialValues);
|
|
1851
|
+
|
|
1852
|
+
// console.log("Get form init values: ", internalInitValue, result);
|
|
1853
|
+
|
|
1854
|
+
return;
|
|
1855
|
+
}
|
|
1856
|
+
}
|
|
1857
|
+
}, [formState == null ? void 0 : formState.isInitied]);
|
|
1858
|
+
|
|
1859
|
+
// useEffect(() => {
|
|
1860
|
+
// console.log("Show form list init values: ", { internalInitValue });
|
|
1861
|
+
// }, [internalInitValue]);
|
|
1862
|
+
|
|
1863
|
+
// useEffect(() => {
|
|
1864
|
+
// console.log("List fields update: ", listFields);
|
|
1865
|
+
// }, [listFields]);
|
|
1866
|
+
|
|
1867
|
+
useEffect(function () {
|
|
1868
|
+
// console.log({ listFields });
|
|
1869
|
+
return function () {
|
|
1870
|
+
// console.log("Cleanup listfield change");
|
|
1871
|
+
clearCacheData();
|
|
1872
|
+
};
|
|
1873
|
+
}, [listFields]);
|
|
1874
|
+
return {
|
|
1875
|
+
listFields: listFields,
|
|
1876
|
+
move: move,
|
|
1877
|
+
add: add,
|
|
1878
|
+
remove: remove
|
|
1879
|
+
};
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
var _excluded$3 = ["listFields"];
|
|
1883
|
+
var FormList = function FormList(_ref) {
|
|
1884
|
+
var name = _ref.name,
|
|
1885
|
+
initialValues = _ref.initialValues,
|
|
1886
|
+
form = _ref.form,
|
|
1887
|
+
formName = _ref.formName,
|
|
1888
|
+
children = _ref.children;
|
|
1889
|
+
var _useTestRrenderListCo = useFormListControl({
|
|
1890
|
+
name: name,
|
|
1891
|
+
initialValues: initialValues,
|
|
1892
|
+
form: form,
|
|
1893
|
+
formName: formName
|
|
1894
|
+
}),
|
|
1895
|
+
listFields = _useTestRrenderListCo.listFields,
|
|
1896
|
+
actions = _objectWithoutPropertiesLoose(_useTestRrenderListCo, _excluded$3);
|
|
1897
|
+
return children(listFields, _extends({}, actions));
|
|
1898
|
+
};
|
|
1899
|
+
|
|
1900
|
+
var _excluded$2 = ["onChange", "ref"];
|
|
1901
|
+
var Input = function Input(_ref) {
|
|
1902
|
+
var _onChange = _ref.onChange,
|
|
1903
|
+
ref = _ref.ref,
|
|
1904
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
1905
|
+
return h("input", _extends({
|
|
1906
|
+
ref: ref,
|
|
1907
|
+
onChange: function onChange(e) {
|
|
1908
|
+
_onChange && _onChange(e.target.value);
|
|
1909
|
+
}
|
|
1910
|
+
}, props));
|
|
1911
|
+
};
|
|
1912
|
+
|
|
1913
|
+
var _excluded$1 = ["onChange", "isValidating"];
|
|
1914
|
+
var AntInput = function AntInput(_ref) {
|
|
1915
|
+
var _onChange = _ref.onChange,
|
|
1916
|
+
isValidating = _ref.isValidating,
|
|
1917
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
1918
|
+
return h(Input$1, _extends({}, props, {
|
|
1919
|
+
onChange: function onChange(e) {
|
|
1920
|
+
_onChange && _onChange(e.target.value);
|
|
1921
|
+
},
|
|
1922
|
+
disabled: isValidating
|
|
1923
|
+
}));
|
|
1924
|
+
};
|
|
1925
|
+
|
|
1926
|
+
var _excluded = ["children", "errors"];
|
|
1927
|
+
var InputWrapper = function InputWrapper(_ref) {
|
|
1928
|
+
var children = _ref.children,
|
|
1929
|
+
_ref$errors = _ref.errors,
|
|
1930
|
+
errors = _ref$errors === void 0 ? [] : _ref$errors,
|
|
1931
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
1932
|
+
return h("div", null, cloneElement(children, props), (props.isDirty || props.formState === "submitted") && (errors == null ? void 0 : errors.map(function (r) {
|
|
1933
|
+
return h("div", {
|
|
1934
|
+
key: props.name + "-" + props.formItemId + "-" + r.ruleName
|
|
1935
|
+
}, r == null ? void 0 : r.message);
|
|
1936
|
+
})));
|
|
1937
|
+
};
|
|
1938
|
+
|
|
1939
|
+
export { AntInput, FormItem, FormList, Input, InputWrapper, Form as default, useForm, useFormItemControl, useFormListControl, useFormStateWatch, useSubmitDataWatch, useWatch };
|
|
1940
|
+
//# sourceMappingURL=index.esm.js.map
|