@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.warn("[useDynamicValidation] useEffect triggered");
18
- console.warn("[useDynamicValidation] activeFields:", activeFields);
19
- console.warn("[useDynamicValidation] statusLoad:", statusLoad);
20
- console.warn("[useDynamicValidation] isValidating:", isValidating);
21
- console.warn("[useDynamicValidation] watchValues:", watchValues);
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.warn("[useDynamicValidation] SKIPPING - conditions not met:", {
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.warn("[useDynamicValidation] currentValues:", currentValues);
32
- console.warn("[useDynamicValidation] lastValuesRef:", lastValuesRef.current);
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.warn(`[useDynamicValidation] Field "${field}":`, {
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.warn("[useDynamicValidation] changedFields:", changedFields);
49
+ console.log("[useDynamicValidation] changedFields:", changedFields);
48
50
  if (changedFields.length > 0) {
49
- const timeoutId = setTimeout(async () => {
50
- console.warn("[useDynamicValidation] Validating fields:", changedFields);
51
- for (const field of 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) {
52
63
  const isValid = await trigger(field);
53
- console.warn(`[useDynamicValidation] trigger("${field}") result:`, isValid);
64
+ console.log(`[useDynamicValidation] trigger("${field}") result:`, isValid);
54
65
  if (isValid) {
55
- console.warn(`[useDynamicValidation] clearErrors("${field}")`);
66
+ console.log(`[useDynamicValidation] clearErrors("${field}")`);
56
67
  clearErrors(field);
57
68
  }
58
69
  }
59
- }, 100);
60
- return () => clearTimeout(timeoutId);
70
+ }, 150);
61
71
  } else {
62
- console.warn("[useDynamicValidation] No changed fields to validate");
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.warn("[useDynamicValidation] activateFieldsValidation called with:", fields);
83
+ console.log("[useDynamicValidation] activateFieldsValidation called with:", fields);
74
84
  if (skipIfValidating && isValidating) {
75
- console.warn("[useDynamicValidation] activateFieldsValidation SKIPPED - isValidating:", isValidating);
85
+ console.log("[useDynamicValidation] activateFieldsValidation SKIPPED - isValidating:", isValidating);
76
86
  return;
77
87
  }
78
88
  const formValues = getValues();
79
89
  setActiveFields(fields);
80
- console.warn("[useDynamicValidation] activeFields SET to:", fields);
90
+ console.log("[useDynamicValidation] activeFields SET to:", fields);
81
91
  const initialValues = getInitialFieldValues(formValues, fields);
82
92
  lastValuesRef.current = initialValues;
83
- console.warn("[useDynamicValidation] lastValuesRef initialized with:", initialValues);
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,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m4l/components",
3
- "version": "9.3.37-JT01122025.beta.3",
3
+ "version": "9.3.37-JT01122025.beta.4",
4
4
  "license": "UNLICENSED",
5
5
  "description": "M4L Components",
6
6
  "lint-staged": {