react-hook-form 7.72.1 → 7.74.0
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/README.md +3 -20
- package/dist/form.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.mjs +88 -48
- 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/validateField.d.ts.map +1 -1
- package/dist/react-server.esm.mjs +68 -33
- package/dist/react-server.esm.mjs.map +1 -1
- package/dist/types/form.d.ts +2 -0
- package/dist/types/form.d.ts.map +1 -1
- package/dist/useController.d.ts.map +1 -1
- package/dist/useFieldArray.d.ts.map +1 -1
- package/dist/utils/deepEqual.d.ts +1 -1
- package/dist/utils/deepEqual.d.ts.map +1 -1
- package/dist/utils/unset.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/controller.server.test.d.ts +0 -2
- package/dist/__tests__/controller.server.test.d.ts.map +0 -1
- package/dist/__tests__/controller.test.d.ts +0 -2
- package/dist/__tests__/controller.test.d.ts.map +0 -1
- package/dist/__tests__/form.test.d.ts +0 -2
- package/dist/__tests__/form.test.d.ts.map +0 -1
- package/dist/__tests__/formStateSubscribe.server.test.d.ts +0 -2
- package/dist/__tests__/formStateSubscribe.server.test.d.ts.map +0 -1
- package/dist/__tests__/formStateSubscribe.test.d.ts +0 -2
- package/dist/__tests__/formStateSubscribe.test.d.ts.map +0 -1
- package/dist/__tests__/isPlainObject.test.d.ts +0 -2
- package/dist/__tests__/isPlainObject.test.d.ts.map +0 -1
- package/dist/__tests__/logic/appendErrors.test.d.ts +0 -2
- package/dist/__tests__/logic/appendErrors.test.d.ts.map +0 -1
- package/dist/__tests__/logic/createFormControl.test.d.ts +0 -2
- package/dist/__tests__/logic/createFormControl.test.d.ts.map +0 -1
- package/dist/__tests__/logic/generateId.test.d.ts +0 -2
- package/dist/__tests__/logic/generateId.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getCheckboxValue.test.d.ts +0 -2
- package/dist/__tests__/logic/getCheckboxValue.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getDirtyFields.test.d.ts +0 -2
- package/dist/__tests__/logic/getDirtyFields.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getEventValue.test.d.ts +0 -2
- package/dist/__tests__/logic/getEventValue.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getFieldValue.test.d.ts +0 -2
- package/dist/__tests__/logic/getFieldValue.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getFieldValueAs.test.d.ts +0 -2
- package/dist/__tests__/logic/getFieldValueAs.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getFocusFieldName.test.d.ts +0 -2
- package/dist/__tests__/logic/getFocusFieldName.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getNodeParentName.test.d.ts +0 -2
- package/dist/__tests__/logic/getNodeParentName.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getRadioValue.test.d.ts +0 -2
- package/dist/__tests__/logic/getRadioValue.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getResolverOptions.test.d.ts +0 -2
- package/dist/__tests__/logic/getResolverOptions.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getRuleValue.test.d.ts +0 -2
- package/dist/__tests__/logic/getRuleValue.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getValidateError.test.d.ts +0 -2
- package/dist/__tests__/logic/getValidateError.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getValidationModes.test.d.ts +0 -2
- package/dist/__tests__/logic/getValidationModes.test.d.ts.map +0 -1
- package/dist/__tests__/logic/getValueAndMessage.test.d.ts +0 -2
- package/dist/__tests__/logic/getValueAndMessage.test.d.ts.map +0 -1
- package/dist/__tests__/logic/hasPromiseValidation.test.d.ts +0 -2
- package/dist/__tests__/logic/hasPromiseValidation.test.d.ts.map +0 -1
- package/dist/__tests__/logic/hasValidation.test.d.ts +0 -2
- package/dist/__tests__/logic/hasValidation.test.d.ts.map +0 -1
- package/dist/__tests__/logic/isNameInFieldArray.test.d.ts +0 -2
- package/dist/__tests__/logic/isNameInFieldArray.test.d.ts.map +0 -1
- package/dist/__tests__/logic/isWatched.test.d.ts +0 -2
- package/dist/__tests__/logic/isWatched.test.d.ts.map +0 -1
- package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts +0 -2
- package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts.map +0 -1
- package/dist/__tests__/logic/schemaErrorLookup.test.d.ts +0 -2
- package/dist/__tests__/logic/schemaErrorLookup.test.d.ts.map +0 -1
- package/dist/__tests__/logic/shouldRenderFormState.test.d.ts +0 -2
- package/dist/__tests__/logic/shouldRenderFormState.test.d.ts.map +0 -1
- package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts +0 -2
- package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts.map +0 -1
- package/dist/__tests__/logic/skipValidation.test.d.ts +0 -2
- package/dist/__tests__/logic/skipValidation.test.d.ts.map +0 -1
- package/dist/__tests__/logic/unsetEmptyArray.test.d.ts +0 -2
- package/dist/__tests__/logic/unsetEmptyArray.test.d.ts.map +0 -1
- package/dist/__tests__/logic/validateField.test.d.ts +0 -2
- package/dist/__tests__/logic/validateField.test.d.ts.map +0 -1
- package/dist/__tests__/type.test.d.ts +0 -2
- package/dist/__tests__/type.test.d.ts.map +0 -1
- package/dist/__tests__/useController.test.d.ts +0 -2
- package/dist/__tests__/useController.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/append.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/append.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/dirtyFields.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/dirtyFields.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/focus.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/focus.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/insert.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/insert.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/move.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/move.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/prepend.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/prepend.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/remove.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/remove.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/replace.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/replace.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/swap.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/swap.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray/update.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray/update.test.d.ts.map +0 -1
- package/dist/__tests__/useFieldArray.test.d.ts +0 -2
- package/dist/__tests__/useFieldArray.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/clearErrors.test.d.ts +0 -2
- package/dist/__tests__/useForm/clearErrors.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/formState.test.d.ts +0 -2
- package/dist/__tests__/useForm/formState.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/getFieldState.test.d.ts +0 -2
- package/dist/__tests__/useForm/getFieldState.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/getValues.test.d.ts +0 -2
- package/dist/__tests__/useForm/getValues.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/handleSubmit.test.d.ts +0 -2
- package/dist/__tests__/useForm/handleSubmit.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/register.test.d.ts +0 -2
- package/dist/__tests__/useForm/register.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/reset.test.d.ts +0 -2
- package/dist/__tests__/useForm/reset.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/resetField.test.d.ts +0 -2
- package/dist/__tests__/useForm/resetField.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/resolver.test.d.ts +0 -2
- package/dist/__tests__/useForm/resolver.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/setError.test.d.ts +0 -2
- package/dist/__tests__/useForm/setError.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/setFocus.test.d.ts +0 -2
- package/dist/__tests__/useForm/setFocus.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/setValue.test.d.ts +0 -2
- package/dist/__tests__/useForm/setValue.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/subscribe.test.d.ts +0 -2
- package/dist/__tests__/useForm/subscribe.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/trigger.test.d.ts +0 -2
- package/dist/__tests__/useForm/trigger.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/unregister.test.d.ts +0 -2
- package/dist/__tests__/useForm/unregister.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts +0 -2
- package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts.map +0 -1
- package/dist/__tests__/useForm/watch.test.d.ts +0 -2
- package/dist/__tests__/useForm/watch.test.d.ts.map +0 -1
- package/dist/__tests__/useForm.server.test.d.ts +0 -2
- package/dist/__tests__/useForm.server.test.d.ts.map +0 -1
- package/dist/__tests__/useForm.test.d.ts +0 -2
- package/dist/__tests__/useForm.test.d.ts.map +0 -1
- package/dist/__tests__/useFormContext.server.test.d.ts +0 -2
- package/dist/__tests__/useFormContext.server.test.d.ts.map +0 -1
- package/dist/__tests__/useFormContext.test.d.ts +0 -2
- package/dist/__tests__/useFormContext.test.d.ts.map +0 -1
- package/dist/__tests__/useFormState.test.d.ts +0 -2
- package/dist/__tests__/useFormState.test.d.ts.map +0 -1
- package/dist/__tests__/useWatch.test.d.ts +0 -2
- package/dist/__tests__/useWatch.test.d.ts.map +0 -1
- package/dist/__tests__/utils/append.test.d.ts +0 -2
- package/dist/__tests__/utils/append.test.d.ts.map +0 -1
- package/dist/__tests__/utils/cloneObject.test.d.ts +0 -2
- package/dist/__tests__/utils/cloneObject.test.d.ts.map +0 -1
- package/dist/__tests__/utils/compact.test.d.ts +0 -2
- package/dist/__tests__/utils/compact.test.d.ts.map +0 -1
- package/dist/__tests__/utils/convertToArrayPayload.test.d.ts +0 -2
- package/dist/__tests__/utils/convertToArrayPayload.test.d.ts.map +0 -1
- package/dist/__tests__/utils/createSubject.test.d.ts +0 -2
- package/dist/__tests__/utils/createSubject.test.d.ts.map +0 -1
- package/dist/__tests__/utils/deepEqual.test.d.ts +0 -2
- package/dist/__tests__/utils/deepEqual.test.d.ts.map +0 -1
- package/dist/__tests__/utils/deepMerge.test.d.ts +0 -2
- package/dist/__tests__/utils/deepMerge.test.d.ts.map +0 -1
- package/dist/__tests__/utils/extractFormValues.test.d.ts +0 -2
- package/dist/__tests__/utils/extractFormValues.test.d.ts.map +0 -1
- package/dist/__tests__/utils/fillEmptyArray.test.d.ts +0 -2
- package/dist/__tests__/utils/fillEmptyArray.test.d.ts.map +0 -1
- package/dist/__tests__/utils/flatten.test.d.ts +0 -2
- package/dist/__tests__/utils/flatten.test.d.ts.map +0 -1
- package/dist/__tests__/utils/get.test.d.ts +0 -2
- package/dist/__tests__/utils/get.test.d.ts.map +0 -1
- package/dist/__tests__/utils/insert.test.d.ts +0 -2
- package/dist/__tests__/utils/insert.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isBoolean.test.d.ts +0 -2
- package/dist/__tests__/utils/isBoolean.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isCheckBoxInput.test.d.ts +0 -2
- package/dist/__tests__/utils/isCheckBoxInput.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isEmptyObject.test.d.ts +0 -2
- package/dist/__tests__/utils/isEmptyObject.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isFileInput.test.d.ts +0 -2
- package/dist/__tests__/utils/isFileInput.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isFunction.test.d.ts +0 -2
- package/dist/__tests__/utils/isFunction.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isHTMLElement.test.d.ts +0 -2
- package/dist/__tests__/utils/isHTMLElement.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isKey.test.d.ts +0 -2
- package/dist/__tests__/utils/isKey.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isMultipleSelect.test.d.ts +0 -2
- package/dist/__tests__/utils/isMultipleSelect.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isNullOrUndefined.test.d.ts +0 -2
- package/dist/__tests__/utils/isNullOrUndefined.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isObject.test.d.ts +0 -2
- package/dist/__tests__/utils/isObject.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isPrimitive.test.d.ts +0 -2
- package/dist/__tests__/utils/isPrimitive.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isRadioInput.test.d.ts +0 -2
- package/dist/__tests__/utils/isRadioInput.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts +0 -2
- package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isRegex.test.d.ts +0 -2
- package/dist/__tests__/utils/isRegex.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isString.test.d.ts +0 -2
- package/dist/__tests__/utils/isString.test.d.ts.map +0 -1
- package/dist/__tests__/utils/isUndefined.test.d.ts +0 -2
- package/dist/__tests__/utils/isUndefined.test.d.ts.map +0 -1
- package/dist/__tests__/utils/live.test.d.ts +0 -2
- package/dist/__tests__/utils/live.test.d.ts.map +0 -1
- package/dist/__tests__/utils/move.test.d.ts +0 -2
- package/dist/__tests__/utils/move.test.d.ts.map +0 -1
- package/dist/__tests__/utils/noop.test.d.ts +0 -2
- package/dist/__tests__/utils/noop.test.d.ts.map +0 -1
- package/dist/__tests__/utils/objectHasFunction.test.d.ts +0 -2
- package/dist/__tests__/utils/objectHasFunction.test.d.ts.map +0 -1
- package/dist/__tests__/utils/prepend.test.d.ts +0 -2
- package/dist/__tests__/utils/prepend.test.d.ts.map +0 -1
- package/dist/__tests__/utils/remove.test.d.ts +0 -2
- package/dist/__tests__/utils/remove.test.d.ts.map +0 -1
- package/dist/__tests__/utils/set.test.d.ts +0 -2
- package/dist/__tests__/utils/set.test.d.ts.map +0 -1
- package/dist/__tests__/utils/stringToPath.test.d.ts +0 -2
- package/dist/__tests__/utils/stringToPath.test.d.ts.map +0 -1
- package/dist/__tests__/utils/swap.test.d.ts +0 -2
- package/dist/__tests__/utils/swap.test.d.ts.map +0 -1
- package/dist/__tests__/utils/unset.test.d.ts +0 -2
- package/dist/__tests__/utils/unset.test.d.ts.map +0 -1
- package/dist/__tests__/utils/update.test.d.ts +0 -2
- package/dist/__tests__/utils/update.test.d.ts.map +0 -1
- package/dist/__tests__/utils/validationModeChecker.test.d.ts +0 -2
- package/dist/__tests__/utils/validationModeChecker.test.d.ts.map +0 -1
- package/dist/__tests__/watch.server.test.d.ts +0 -2
- package/dist/__tests__/watch.server.test.d.ts.map +0 -1
- package/dist/__tests__/watch.test.d.ts +0 -2
- package/dist/__tests__/watch.test.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAaV,WAAW,EAiBX,YAAY,EAIZ,aAAa,
|
|
1
|
+
{"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAaV,WAAW,EAiBX,YAAY,EAIZ,aAAa,EAYd,MAAM,UAAU,CAAC;AAsDlB,wBAAgB,iBAAiB,CAC/B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,QAAQ,GAAG,GAAG,EACd,kBAAkB,GAAG,YAAY,EAEjC,KAAK,GAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAM,GACnE,IAAI,CACL,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EACzD,WAAW,CACZ,GAAG;IACF,WAAW,EAAE,IAAI,CACf,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EACzD,WAAW,CACZ,CAAC;CACH,CAwnDA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateField.d.ts","sourceRoot":"","sources":["../../src/logic/validateField.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EAEL,WAAW,EACX,mBAAmB,EACnB,eAAe,EAKhB,MAAM,UAAU,CAAC;yBAqBI,CAAC,SAAS,WAAW,EACzC,OAAO,KAAK,EACZ,oBAAoB,eAAe,EACnC,YAAY,CAAC,EACb,0BAA0B,OAAO,EACjC,4BAA4B,OAAO,EACnC,eAAe,OAAO,KACrB,OAAO,CAAC,mBAAmB,CAAC;AAP/B,
|
|
1
|
+
{"version":3,"file":"validateField.d.ts","sourceRoot":"","sources":["../../src/logic/validateField.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EAEL,WAAW,EACX,mBAAmB,EACnB,eAAe,EAKhB,MAAM,UAAU,CAAC;yBAqBI,CAAC,SAAS,WAAW,EACzC,OAAO,KAAK,EACZ,oBAAoB,eAAe,EACnC,YAAY,CAAC,EACb,0BAA0B,OAAO,EACjC,4BAA4B,OAAO,EACnC,eAAe,OAAO,KACrB,OAAO,CAAC,mBAAmB,CAAC;AAP/B,wBA8PE"}
|
|
@@ -108,7 +108,10 @@ var createSubject = () => {
|
|
|
108
108
|
|
|
109
109
|
var isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);
|
|
110
110
|
|
|
111
|
-
function deepEqual(object1, object2,
|
|
111
|
+
function deepEqual(object1, object2, visited = new WeakSet()) {
|
|
112
|
+
if (object1 === object2) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
112
115
|
if (isPrimitive(object1) || isPrimitive(object2)) {
|
|
113
116
|
return Object.is(object1, object2);
|
|
114
117
|
}
|
|
@@ -120,14 +123,14 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
|
|
|
120
123
|
if (keys1.length !== keys2.length) {
|
|
121
124
|
return false;
|
|
122
125
|
}
|
|
123
|
-
if (
|
|
126
|
+
if (visited.has(object1) || visited.has(object2)) {
|
|
124
127
|
return true;
|
|
125
128
|
}
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
visited.add(object1);
|
|
130
|
+
visited.add(object2);
|
|
128
131
|
for (const key of keys1) {
|
|
129
132
|
const val1 = object1[key];
|
|
130
|
-
if (!
|
|
133
|
+
if (!(key in object2)) {
|
|
131
134
|
return false;
|
|
132
135
|
}
|
|
133
136
|
if (key !== 'ref') {
|
|
@@ -135,7 +138,7 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
|
|
|
135
138
|
if ((isDateObject(val1) && isDateObject(val2)) ||
|
|
136
139
|
((isObject(val1) || Array.isArray(val1)) &&
|
|
137
140
|
(isObject(val2) || Array.isArray(val2)))
|
|
138
|
-
? !deepEqual(val1, val2,
|
|
141
|
+
? !deepEqual(val1, val2, visited)
|
|
139
142
|
: !Object.is(val1, val2)) {
|
|
140
143
|
return false;
|
|
141
144
|
}
|
|
@@ -174,7 +177,10 @@ var get = (object, path, defaultValue) => {
|
|
|
174
177
|
if (!path || !isObject(object)) {
|
|
175
178
|
return defaultValue;
|
|
176
179
|
}
|
|
177
|
-
const
|
|
180
|
+
const paths = isKey(path) ? [path] : stringToPath(path);
|
|
181
|
+
const result = paths.reduce((result, key) => {
|
|
182
|
+
return isNullOrUndefined(result) ? undefined : result[key];
|
|
183
|
+
}, object);
|
|
178
184
|
return isUndefined(result) || result === object
|
|
179
185
|
? isUndefined(object[path])
|
|
180
186
|
? defaultValue
|
|
@@ -240,7 +246,12 @@ function baseGet(object, updatePath) {
|
|
|
240
246
|
const length = updatePath.slice(0, -1).length;
|
|
241
247
|
let index = 0;
|
|
242
248
|
while (index < length) {
|
|
243
|
-
|
|
249
|
+
if (isNullOrUndefined(object)) {
|
|
250
|
+
object = undefined;
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
object = object[updatePath[index]];
|
|
254
|
+
index++;
|
|
244
255
|
}
|
|
245
256
|
return object;
|
|
246
257
|
}
|
|
@@ -253,6 +264,10 @@ function isEmptyArray(obj) {
|
|
|
253
264
|
return true;
|
|
254
265
|
}
|
|
255
266
|
function unset(object, path) {
|
|
267
|
+
if (isString(path) && Object.prototype.hasOwnProperty.call(object, path)) {
|
|
268
|
+
delete object[path];
|
|
269
|
+
return object;
|
|
270
|
+
}
|
|
256
271
|
const paths = Array.isArray(path)
|
|
257
272
|
? path
|
|
258
273
|
: isKey(path)
|
|
@@ -617,7 +632,8 @@ var validateField = async (field, disabledFieldNames, formValues, validateAllFie
|
|
|
617
632
|
isUndefined(inputValue)) ||
|
|
618
633
|
(isHTMLElement(ref) && ref.value === '') ||
|
|
619
634
|
inputValue === '' ||
|
|
620
|
-
(Array.isArray(inputValue) && !inputValue.length)
|
|
635
|
+
(Array.isArray(inputValue) && !inputValue.length) ||
|
|
636
|
+
(valueAsNumber && typeof inputValue === 'number' && isNaN(inputValue));
|
|
621
637
|
const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);
|
|
622
638
|
const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {
|
|
623
639
|
const message = exceedMax ? maxLengthMessage : minLengthMessage;
|
|
@@ -1217,7 +1233,7 @@ function createFormControl(props = {}) {
|
|
|
1217
1233
|
updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);
|
|
1218
1234
|
options.shouldValidate && trigger(name);
|
|
1219
1235
|
};
|
|
1220
|
-
const
|
|
1236
|
+
const setFieldValues = (name, value, options) => {
|
|
1221
1237
|
for (const fieldKey in value) {
|
|
1222
1238
|
if (!value.hasOwnProperty(fieldKey)) {
|
|
1223
1239
|
return;
|
|
@@ -1229,7 +1245,7 @@ function createFormControl(props = {}) {
|
|
|
1229
1245
|
isObject(fieldValue) ||
|
|
1230
1246
|
(field && !field._f)) &&
|
|
1231
1247
|
!isDateObject(fieldValue)
|
|
1232
|
-
?
|
|
1248
|
+
? setFieldValues(fieldName, fieldValue, options)
|
|
1233
1249
|
: setFieldValue(fieldName, fieldValue, options);
|
|
1234
1250
|
}
|
|
1235
1251
|
};
|
|
@@ -1237,17 +1253,15 @@ function createFormControl(props = {}) {
|
|
|
1237
1253
|
const field = get(_fields, name);
|
|
1238
1254
|
const isFieldArray = _names.array.has(name);
|
|
1239
1255
|
const cloneValue = cloneObject(value);
|
|
1256
|
+
const previousValue = get(_formValues, name);
|
|
1257
|
+
const isValueUnchanged = deepEqual(previousValue, cloneValue);
|
|
1240
1258
|
set(_formValues, name, cloneValue);
|
|
1241
1259
|
if (isFieldArray) {
|
|
1242
1260
|
_subjects.array.next({
|
|
1243
1261
|
name,
|
|
1244
1262
|
values: cloneObject(_formValues),
|
|
1245
1263
|
});
|
|
1246
|
-
if (
|
|
1247
|
-
_proxyFormState.dirtyFields ||
|
|
1248
|
-
_proxySubscribeFormState.isDirty ||
|
|
1249
|
-
_proxySubscribeFormState.dirtyFields) &&
|
|
1250
|
-
options.shouldDirty) {
|
|
1264
|
+
if (options.shouldDirty) {
|
|
1251
1265
|
_updateDirtyFields(name);
|
|
1252
1266
|
_subjects.state.next({
|
|
1253
1267
|
name,
|
|
@@ -1257,22 +1271,41 @@ function createFormControl(props = {}) {
|
|
|
1257
1271
|
}
|
|
1258
1272
|
}
|
|
1259
1273
|
else {
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1274
|
+
const isEmpty = (Array.isArray(cloneValue) && !cloneValue.length) ||
|
|
1275
|
+
isEmptyObject(cloneValue);
|
|
1276
|
+
if (!field || field._f || isNullOrUndefined(cloneValue) || isEmpty) {
|
|
1277
|
+
setFieldValue(name, cloneValue, options);
|
|
1278
|
+
}
|
|
1279
|
+
else {
|
|
1280
|
+
setFieldValues(name, cloneValue, options);
|
|
1281
|
+
}
|
|
1263
1282
|
}
|
|
1264
|
-
if (
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1283
|
+
if (!isValueUnchanged) {
|
|
1284
|
+
if (isWatched(name, _names)) {
|
|
1285
|
+
_subjects.state.next({
|
|
1286
|
+
..._formState,
|
|
1287
|
+
name,
|
|
1288
|
+
values: cloneObject(_formValues),
|
|
1289
|
+
});
|
|
1290
|
+
}
|
|
1291
|
+
else {
|
|
1292
|
+
_subjects.state.next({
|
|
1293
|
+
name: _state.mount ? name : undefined,
|
|
1294
|
+
values: cloneObject(_formValues),
|
|
1295
|
+
});
|
|
1296
|
+
}
|
|
1270
1297
|
}
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1298
|
+
};
|
|
1299
|
+
const setValues = (formValues) => {
|
|
1300
|
+
const updatedFormValues = isFunction(formValues)
|
|
1301
|
+
? formValues(_formValues)
|
|
1302
|
+
: formValues;
|
|
1303
|
+
if (!deepEqual(_formValues, updatedFormValues)) {
|
|
1304
|
+
_formValues = {
|
|
1305
|
+
..._formValues,
|
|
1306
|
+
...updatedFormValues,
|
|
1307
|
+
};
|
|
1308
|
+
_subjects.state.next({ ..._formState, values: _formValues });
|
|
1276
1309
|
}
|
|
1277
1310
|
};
|
|
1278
1311
|
const onChange = async (event) => {
|
|
@@ -1491,15 +1524,16 @@ function createFormControl(props = {}) {
|
|
|
1491
1524
|
const watch = (name, defaultValue) => isFunction(name)
|
|
1492
1525
|
? _subjects.state.subscribe({
|
|
1493
1526
|
next: (payload) => 'values' in payload &&
|
|
1494
|
-
name(_getWatch(undefined, defaultValue), payload),
|
|
1527
|
+
name(payload.values || _getWatch(undefined, defaultValue), payload),
|
|
1495
1528
|
})
|
|
1496
1529
|
: _getWatch(name, defaultValue, true);
|
|
1497
1530
|
const _subscribe = (props) => _subjects.state.subscribe({
|
|
1498
1531
|
next: (formState) => {
|
|
1499
1532
|
if (shouldSubscribeByName(props.name, formState.name, props.exact) &&
|
|
1500
1533
|
shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {
|
|
1534
|
+
const snapshot = { ..._formValues };
|
|
1501
1535
|
props.callback({
|
|
1502
|
-
values:
|
|
1536
|
+
values: snapshot,
|
|
1503
1537
|
..._formState,
|
|
1504
1538
|
...formState,
|
|
1505
1539
|
defaultValues: _defaultValues,
|
|
@@ -1561,7 +1595,7 @@ function createFormControl(props = {}) {
|
|
|
1561
1595
|
const register = (name, options = {}) => {
|
|
1562
1596
|
let field = get(_fields, name);
|
|
1563
1597
|
const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);
|
|
1564
|
-
const shouldRevalidateRemount = !_names.registerName.has(name) && field && !field._f.mount;
|
|
1598
|
+
const shouldRevalidateRemount = !_names.registerName.has(name) && field && field._f && !field._f.mount;
|
|
1565
1599
|
set(_fields, name, {
|
|
1566
1600
|
...(field || {}),
|
|
1567
1601
|
_f: {
|
|
@@ -1971,6 +2005,7 @@ function createFormControl(props = {}) {
|
|
|
1971
2005
|
handleSubmit,
|
|
1972
2006
|
watch,
|
|
1973
2007
|
setValue,
|
|
2008
|
+
setValues,
|
|
1974
2009
|
getValues,
|
|
1975
2010
|
reset,
|
|
1976
2011
|
resetField,
|