@m4l/components 9.3.37-JT01122025.beta.3 → 9.3.37-JT01122025.beta.4
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.
|
@@ -13,14 +13,16 @@ function useDynamicValidation() {
|
|
|
13
13
|
name: activeFields.length > 0 ? activeFields : ["__dummy__"]
|
|
14
14
|
});
|
|
15
15
|
const lastValuesRef = useRef({});
|
|
16
|
+
const pendingFieldsRef = useRef(/* @__PURE__ */ new Set());
|
|
17
|
+
const validationTimeoutRef = useRef(null);
|
|
16
18
|
useEffect(() => {
|
|
17
|
-
console.
|
|
18
|
-
console.
|
|
19
|
-
console.
|
|
20
|
-
console.
|
|
21
|
-
console.
|
|
19
|
+
console.log("[useDynamicValidation] useEffect triggered");
|
|
20
|
+
console.log("[useDynamicValidation] activeFields:", activeFields);
|
|
21
|
+
console.log("[useDynamicValidation] statusLoad:", statusLoad);
|
|
22
|
+
console.log("[useDynamicValidation] isValidating:", isValidating);
|
|
23
|
+
console.log("[useDynamicValidation] watchValues:", watchValues);
|
|
22
24
|
if (activeFields.length === 0 || statusLoad !== "ready" || isValidating) {
|
|
23
|
-
console.
|
|
25
|
+
console.log("[useDynamicValidation] SKIPPING - conditions not met:", {
|
|
24
26
|
noActiveFields: activeFields.length === 0,
|
|
25
27
|
statusLoadNotReady: statusLoad !== "ready",
|
|
26
28
|
isValidating
|
|
@@ -28,13 +30,13 @@ function useDynamicValidation() {
|
|
|
28
30
|
return;
|
|
29
31
|
}
|
|
30
32
|
const currentValues = parseWatchedValues(watchValues, activeFields);
|
|
31
|
-
console.
|
|
32
|
-
console.
|
|
33
|
+
console.log("[useDynamicValidation] currentValues:", currentValues);
|
|
34
|
+
console.log("[useDynamicValidation] lastValuesRef:", lastValuesRef.current);
|
|
33
35
|
const changedFields = activeFields.filter((field) => {
|
|
34
36
|
const currentValue = currentValues[field];
|
|
35
37
|
const lastValue = lastValuesRef.current[field];
|
|
36
38
|
const hasChanged = JSON.stringify(currentValue) !== JSON.stringify(lastValue);
|
|
37
|
-
console.
|
|
39
|
+
console.log(`[useDynamicValidation] Field "${field}":`, {
|
|
38
40
|
currentValue,
|
|
39
41
|
lastValue,
|
|
40
42
|
hasChanged
|
|
@@ -44,22 +46,30 @@ function useDynamicValidation() {
|
|
|
44
46
|
}
|
|
45
47
|
return hasChanged;
|
|
46
48
|
});
|
|
47
|
-
console.
|
|
49
|
+
console.log("[useDynamicValidation] changedFields:", changedFields);
|
|
48
50
|
if (changedFields.length > 0) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
changedFields.forEach((field) => pendingFieldsRef.current.add(field));
|
|
52
|
+
console.log("[useDynamicValidation] pendingFields:", Array.from(pendingFieldsRef.current));
|
|
53
|
+
if (validationTimeoutRef.current) {
|
|
54
|
+
clearTimeout(validationTimeoutRef.current);
|
|
55
|
+
console.log("[useDynamicValidation] Previous timeout cancelled, rescheduling with accumulated fields");
|
|
56
|
+
}
|
|
57
|
+
validationTimeoutRef.current = setTimeout(async () => {
|
|
58
|
+
const fieldsToValidate = Array.from(pendingFieldsRef.current);
|
|
59
|
+
pendingFieldsRef.current.clear();
|
|
60
|
+
validationTimeoutRef.current = null;
|
|
61
|
+
console.log("[useDynamicValidation] Validating accumulated fields:", fieldsToValidate);
|
|
62
|
+
for (const field of fieldsToValidate) {
|
|
52
63
|
const isValid = await trigger(field);
|
|
53
|
-
console.
|
|
64
|
+
console.log(`[useDynamicValidation] trigger("${field}") result:`, isValid);
|
|
54
65
|
if (isValid) {
|
|
55
|
-
console.
|
|
66
|
+
console.log(`[useDynamicValidation] clearErrors("${field}")`);
|
|
56
67
|
clearErrors(field);
|
|
57
68
|
}
|
|
58
69
|
}
|
|
59
|
-
},
|
|
60
|
-
return () => clearTimeout(timeoutId);
|
|
70
|
+
}, 150);
|
|
61
71
|
} else {
|
|
62
|
-
console.
|
|
72
|
+
console.log("[useDynamicValidation] No changed fields to validate");
|
|
63
73
|
}
|
|
64
74
|
}, [activeFields, trigger, clearErrors, watchValues, statusLoad, isValidating]);
|
|
65
75
|
const startExternalValidation = useCallback(() => {
|
|
@@ -70,23 +80,28 @@ function useDynamicValidation() {
|
|
|
70
80
|
}, []);
|
|
71
81
|
const activateFieldsValidation = useCallback(
|
|
72
82
|
(fields, skipIfValidating = true) => {
|
|
73
|
-
console.
|
|
83
|
+
console.log("[useDynamicValidation] activateFieldsValidation called with:", fields);
|
|
74
84
|
if (skipIfValidating && isValidating) {
|
|
75
|
-
console.
|
|
85
|
+
console.log("[useDynamicValidation] activateFieldsValidation SKIPPED - isValidating:", isValidating);
|
|
76
86
|
return;
|
|
77
87
|
}
|
|
78
88
|
const formValues = getValues();
|
|
79
89
|
setActiveFields(fields);
|
|
80
|
-
console.
|
|
90
|
+
console.log("[useDynamicValidation] activeFields SET to:", fields);
|
|
81
91
|
const initialValues = getInitialFieldValues(formValues, fields);
|
|
82
92
|
lastValuesRef.current = initialValues;
|
|
83
|
-
console.
|
|
93
|
+
console.log("[useDynamicValidation] lastValuesRef initialized with:", initialValues);
|
|
84
94
|
},
|
|
85
95
|
[getValues, isValidating]
|
|
86
96
|
);
|
|
87
97
|
const clearAllValidation = useCallback(() => {
|
|
88
98
|
setActiveFields([]);
|
|
89
99
|
lastValuesRef.current = {};
|
|
100
|
+
pendingFieldsRef.current.clear();
|
|
101
|
+
if (validationTimeoutRef.current) {
|
|
102
|
+
clearTimeout(validationTimeoutRef.current);
|
|
103
|
+
validationTimeoutRef.current = null;
|
|
104
|
+
}
|
|
90
105
|
}, []);
|
|
91
106
|
return {
|
|
92
107
|
activateFieldsValidation,
|