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