react-form-manage 1.0.5 → 1.0.6-beta.1

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