@bombillazo/rhf-plus 7.64.0-plus.0 → 7.64.0-plus.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.
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.mjs +50 -7
- package/dist/index.esm.mjs.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/logic/createFormControl.d.ts.map +1 -1
- package/dist/logic/skipValidation.d.ts +18 -5
- package/dist/logic/skipValidation.d.ts.map +1 -1
- package/dist/react-server.esm.mjs +32 -6
- package/dist/react-server.esm.mjs.map +1 -1
- package/dist/types/controller.d.ts +4 -2
- package/dist/types/controller.d.ts.map +1 -1
- package/dist/types/validator.d.ts +3 -0
- package/dist/types/validator.d.ts.map +1 -1
- package/dist/useController.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.mjs
CHANGED
|
@@ -453,6 +453,8 @@ function useController(props) {
|
|
|
453
453
|
...props.rules,
|
|
454
454
|
value,
|
|
455
455
|
...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),
|
|
456
|
+
...(props.mode ? { mode: props.mode } : {}),
|
|
457
|
+
...(props.reValidateMode ? { reValidateMode: props.reValidateMode } : {}),
|
|
456
458
|
}));
|
|
457
459
|
const mergedRules = React.useMemo(() => mergeMissingKeysAsUndefined(_previousRules.current, props.rules), [props.rules]);
|
|
458
460
|
// Update register props when rules change
|
|
@@ -461,9 +463,20 @@ function useController(props) {
|
|
|
461
463
|
...mergedRules,
|
|
462
464
|
value,
|
|
463
465
|
...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),
|
|
466
|
+
...(props.mode ? { mode: props.mode } : {}),
|
|
467
|
+
...(props.reValidateMode ? { reValidateMode: props.reValidateMode } : {}),
|
|
464
468
|
});
|
|
465
469
|
_previousRules.current = props.rules;
|
|
466
|
-
}, [
|
|
470
|
+
}, [
|
|
471
|
+
mergedRules,
|
|
472
|
+
props.rules,
|
|
473
|
+
value,
|
|
474
|
+
props.disabled,
|
|
475
|
+
props.mode,
|
|
476
|
+
props.reValidateMode,
|
|
477
|
+
control,
|
|
478
|
+
name,
|
|
479
|
+
]);
|
|
467
480
|
_props.current = props;
|
|
468
481
|
const fieldState = React.useMemo(() => Object.defineProperties({}, {
|
|
469
482
|
invalid: {
|
|
@@ -577,6 +590,10 @@ function useController(props) {
|
|
|
577
590
|
...(isBoolean(_props.current.disabled)
|
|
578
591
|
? { disabled: _props.current.disabled }
|
|
579
592
|
: {}),
|
|
593
|
+
...(_props.current.mode ? { mode: _props.current.mode } : {}),
|
|
594
|
+
...(_props.current.reValidateMode
|
|
595
|
+
? { reValidateMode: _props.current.reValidateMode }
|
|
596
|
+
: {}),
|
|
580
597
|
});
|
|
581
598
|
const updateMounted = (name, value) => {
|
|
582
599
|
const field = get(control._fields, name);
|
|
@@ -1196,21 +1213,37 @@ var skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode,
|
|
|
1196
1213
|
/**
|
|
1197
1214
|
* Need to keep this order of parameters for backward compatibility
|
|
1198
1215
|
*/
|
|
1199
|
-
isFocusEvent
|
|
1216
|
+
isFocusEvent,
|
|
1217
|
+
/**
|
|
1218
|
+
* Optional field-level validation mode that overrides form-level mode.
|
|
1219
|
+
* When provided, this field's mode takes precedence over the form's mode.
|
|
1220
|
+
* Partial because only the relevant flags (e.g., isOnChange, isOnBlur) need to be checked.
|
|
1221
|
+
*/
|
|
1222
|
+
fieldMode,
|
|
1223
|
+
/**
|
|
1224
|
+
* Optional field-level revalidation mode that overrides form-level reValidateMode.
|
|
1225
|
+
* When provided, this field's reValidateMode takes precedence after form submission.
|
|
1226
|
+
* Only includes isOnBlur and isOnChange as these are the only valid revalidation modes.
|
|
1227
|
+
*/
|
|
1228
|
+
fieldReValidateMode) => {
|
|
1229
|
+
// Use field-level modes if provided, otherwise fallback to form-level modes
|
|
1230
|
+
// This allows individual fields to have different validation timing than the form
|
|
1231
|
+
const effectiveMode = fieldMode || mode;
|
|
1232
|
+
const effectiveReValidateMode = fieldReValidateMode || reValidateMode;
|
|
1200
1233
|
// Focus events should always skip validation
|
|
1201
1234
|
if (isFocusEvent) {
|
|
1202
1235
|
return true;
|
|
1203
1236
|
}
|
|
1204
|
-
if (
|
|
1237
|
+
if (effectiveMode.isOnAll) {
|
|
1205
1238
|
return false;
|
|
1206
1239
|
}
|
|
1207
|
-
else if (!isSubmitted &&
|
|
1240
|
+
else if (!isSubmitted && effectiveMode.isOnTouch) {
|
|
1208
1241
|
return !(isTouched || isBlurEvent);
|
|
1209
1242
|
}
|
|
1210
|
-
else if (isSubmitted ?
|
|
1243
|
+
else if (isSubmitted ? effectiveReValidateMode.isOnBlur : effectiveMode.isOnBlur) {
|
|
1211
1244
|
return !isBlurEvent;
|
|
1212
1245
|
}
|
|
1213
|
-
else if (isSubmitted ?
|
|
1246
|
+
else if (isSubmitted ? effectiveReValidateMode.isOnChange : effectiveMode.isOnChange) {
|
|
1214
1247
|
return isBlurEvent;
|
|
1215
1248
|
}
|
|
1216
1249
|
return true;
|
|
@@ -1955,6 +1988,16 @@ function createFormControl(props = {}) {
|
|
|
1955
1988
|
};
|
|
1956
1989
|
const validationModeBeforeSubmit = getValidationModes(_options.mode);
|
|
1957
1990
|
const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);
|
|
1991
|
+
// Extract field-level validation modes if they exist
|
|
1992
|
+
// Field-level modes take precedence over form-level modes, allowing
|
|
1993
|
+
// individual fields to override when they validate (mode) and when they
|
|
1994
|
+
// revalidate after form submission (reValidateMode)
|
|
1995
|
+
const fieldMode = (field === null || field === void 0 ? void 0 : field._f.mode)
|
|
1996
|
+
? getValidationModes(field._f.mode)
|
|
1997
|
+
: undefined;
|
|
1998
|
+
const fieldReValidateMode = (field === null || field === void 0 ? void 0 : field._f.reValidateMode)
|
|
1999
|
+
? getValidationModes(field._f.reValidateMode)
|
|
2000
|
+
: undefined;
|
|
1958
2001
|
if (field) {
|
|
1959
2002
|
// Check if field is disabled and should not process events
|
|
1960
2003
|
const isFieldDisabled = isBoolean(field._f.disabled)
|
|
@@ -2013,7 +2056,7 @@ function createFormControl(props = {}) {
|
|
|
2013
2056
|
!_options.resolver &&
|
|
2014
2057
|
!get(_formState.errors, name) &&
|
|
2015
2058
|
!field._f.deps) ||
|
|
2016
|
-
skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit, isFocusEvent);
|
|
2059
|
+
skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit, isFocusEvent, fieldMode, fieldReValidateMode);
|
|
2017
2060
|
const watched = isWatched(name, _names, isBlurEvent || isFocusEvent);
|
|
2018
2061
|
set(_formValues, name, fieldValue);
|
|
2019
2062
|
if (isBlurEvent) {
|