react-hook-form 7.69.0 → 7.71.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.
Files changed (245) hide show
  1. package/dist/__tests__/controller.server.test.d.ts +2 -0
  2. package/dist/__tests__/controller.server.test.d.ts.map +1 -0
  3. package/dist/__tests__/controller.test.d.ts +2 -0
  4. package/dist/__tests__/controller.test.d.ts.map +1 -0
  5. package/dist/__tests__/form.test.d.ts +2 -0
  6. package/dist/__tests__/form.test.d.ts.map +1 -0
  7. package/dist/__tests__/formStateSubscribe.server.test.d.ts +2 -0
  8. package/dist/__tests__/formStateSubscribe.server.test.d.ts.map +1 -0
  9. package/dist/__tests__/formStateSubscribe.test.d.ts +2 -0
  10. package/dist/__tests__/formStateSubscribe.test.d.ts.map +1 -0
  11. package/dist/__tests__/isPlainObject.test.d.ts +2 -0
  12. package/dist/__tests__/isPlainObject.test.d.ts.map +1 -0
  13. package/dist/__tests__/logic/appendErrors.test.d.ts +2 -0
  14. package/dist/__tests__/logic/appendErrors.test.d.ts.map +1 -0
  15. package/dist/__tests__/logic/createFormControl.test.d.ts +2 -0
  16. package/dist/__tests__/logic/createFormControl.test.d.ts.map +1 -0
  17. package/dist/__tests__/logic/generateId.test.d.ts +2 -0
  18. package/dist/__tests__/logic/generateId.test.d.ts.map +1 -0
  19. package/dist/__tests__/logic/getCheckboxValue.test.d.ts +2 -0
  20. package/dist/__tests__/logic/getCheckboxValue.test.d.ts.map +1 -0
  21. package/dist/__tests__/logic/getDirtyFields.test.d.ts +2 -0
  22. package/dist/__tests__/logic/getDirtyFields.test.d.ts.map +1 -0
  23. package/dist/__tests__/logic/getEventValue.test.d.ts +2 -0
  24. package/dist/__tests__/logic/getEventValue.test.d.ts.map +1 -0
  25. package/dist/__tests__/logic/getFieldValue.test.d.ts +2 -0
  26. package/dist/__tests__/logic/getFieldValue.test.d.ts.map +1 -0
  27. package/dist/__tests__/logic/getFieldValueAs.test.d.ts +2 -0
  28. package/dist/__tests__/logic/getFieldValueAs.test.d.ts.map +1 -0
  29. package/dist/__tests__/logic/getFocusFieldName.test.d.ts +2 -0
  30. package/dist/__tests__/logic/getFocusFieldName.test.d.ts.map +1 -0
  31. package/dist/__tests__/logic/getNodeParentName.test.d.ts +2 -0
  32. package/dist/__tests__/logic/getNodeParentName.test.d.ts.map +1 -0
  33. package/dist/__tests__/logic/getRadioValue.test.d.ts +2 -0
  34. package/dist/__tests__/logic/getRadioValue.test.d.ts.map +1 -0
  35. package/dist/__tests__/logic/getResolverOptions.test.d.ts +2 -0
  36. package/dist/__tests__/logic/getResolverOptions.test.d.ts.map +1 -0
  37. package/dist/__tests__/logic/getRuleValue.test.d.ts +2 -0
  38. package/dist/__tests__/logic/getRuleValue.test.d.ts.map +1 -0
  39. package/dist/__tests__/logic/getValidateError.test.d.ts +2 -0
  40. package/dist/__tests__/logic/getValidateError.test.d.ts.map +1 -0
  41. package/dist/__tests__/logic/getValidationModes.test.d.ts +2 -0
  42. package/dist/__tests__/logic/getValidationModes.test.d.ts.map +1 -0
  43. package/dist/__tests__/logic/getValueAndMessage.test.d.ts +2 -0
  44. package/dist/__tests__/logic/getValueAndMessage.test.d.ts.map +1 -0
  45. package/dist/__tests__/logic/hasPromiseValidation.test.d.ts +2 -0
  46. package/dist/__tests__/logic/hasPromiseValidation.test.d.ts.map +1 -0
  47. package/dist/__tests__/logic/hasValidation.test.d.ts +2 -0
  48. package/dist/__tests__/logic/hasValidation.test.d.ts.map +1 -0
  49. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts +2 -0
  50. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts.map +1 -0
  51. package/dist/__tests__/logic/isWatched.test.d.ts +2 -0
  52. package/dist/__tests__/logic/isWatched.test.d.ts.map +1 -0
  53. package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts +2 -0
  54. package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts.map +1 -0
  55. package/dist/__tests__/logic/schemaErrorLookup.test.d.ts +2 -0
  56. package/dist/__tests__/logic/schemaErrorLookup.test.d.ts.map +1 -0
  57. package/dist/__tests__/logic/shouldRenderFormState.test.d.ts +2 -0
  58. package/dist/__tests__/logic/shouldRenderFormState.test.d.ts.map +1 -0
  59. package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts +2 -0
  60. package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts.map +1 -0
  61. package/dist/__tests__/logic/skipValidation.test.d.ts +2 -0
  62. package/dist/__tests__/logic/skipValidation.test.d.ts.map +1 -0
  63. package/dist/__tests__/logic/unsetEmptyArray.test.d.ts +2 -0
  64. package/dist/__tests__/logic/unsetEmptyArray.test.d.ts.map +1 -0
  65. package/dist/__tests__/logic/validateField.test.d.ts +2 -0
  66. package/dist/__tests__/logic/validateField.test.d.ts.map +1 -0
  67. package/dist/__tests__/type.test.d.ts +2 -0
  68. package/dist/__tests__/type.test.d.ts.map +1 -0
  69. package/dist/__tests__/useController.test.d.ts +2 -0
  70. package/dist/__tests__/useController.test.d.ts.map +1 -0
  71. package/dist/__tests__/useFieldArray/append.test.d.ts +2 -0
  72. package/dist/__tests__/useFieldArray/append.test.d.ts.map +1 -0
  73. package/dist/__tests__/useFieldArray/focus.test.d.ts +2 -0
  74. package/dist/__tests__/useFieldArray/focus.test.d.ts.map +1 -0
  75. package/dist/__tests__/useFieldArray/insert.test.d.ts +2 -0
  76. package/dist/__tests__/useFieldArray/insert.test.d.ts.map +1 -0
  77. package/dist/__tests__/useFieldArray/move.test.d.ts +2 -0
  78. package/dist/__tests__/useFieldArray/move.test.d.ts.map +1 -0
  79. package/dist/__tests__/useFieldArray/prepend.test.d.ts +2 -0
  80. package/dist/__tests__/useFieldArray/prepend.test.d.ts.map +1 -0
  81. package/dist/__tests__/useFieldArray/remove.test.d.ts +2 -0
  82. package/dist/__tests__/useFieldArray/remove.test.d.ts.map +1 -0
  83. package/dist/__tests__/useFieldArray/replace.test.d.ts +2 -0
  84. package/dist/__tests__/useFieldArray/replace.test.d.ts.map +1 -0
  85. package/dist/__tests__/useFieldArray/swap.test.d.ts +2 -0
  86. package/dist/__tests__/useFieldArray/swap.test.d.ts.map +1 -0
  87. package/dist/__tests__/useFieldArray/update.test.d.ts +2 -0
  88. package/dist/__tests__/useFieldArray/update.test.d.ts.map +1 -0
  89. package/dist/__tests__/useFieldArray.test.d.ts +2 -0
  90. package/dist/__tests__/useFieldArray.test.d.ts.map +1 -0
  91. package/dist/__tests__/useForm/clearErrors.test.d.ts +2 -0
  92. package/dist/__tests__/useForm/clearErrors.test.d.ts.map +1 -0
  93. package/dist/__tests__/useForm/formState.test.d.ts +2 -0
  94. package/dist/__tests__/useForm/formState.test.d.ts.map +1 -0
  95. package/dist/__tests__/useForm/getFieldState.test.d.ts +2 -0
  96. package/dist/__tests__/useForm/getFieldState.test.d.ts.map +1 -0
  97. package/dist/__tests__/useForm/getValues.test.d.ts +2 -0
  98. package/dist/__tests__/useForm/getValues.test.d.ts.map +1 -0
  99. package/dist/__tests__/useForm/handleSubmit.test.d.ts +2 -0
  100. package/dist/__tests__/useForm/handleSubmit.test.d.ts.map +1 -0
  101. package/dist/__tests__/useForm/register.test.d.ts +2 -0
  102. package/dist/__tests__/useForm/register.test.d.ts.map +1 -0
  103. package/dist/__tests__/useForm/reset.test.d.ts +2 -0
  104. package/dist/__tests__/useForm/reset.test.d.ts.map +1 -0
  105. package/dist/__tests__/useForm/resetField.test.d.ts +2 -0
  106. package/dist/__tests__/useForm/resetField.test.d.ts.map +1 -0
  107. package/dist/__tests__/useForm/resolver.test.d.ts +2 -0
  108. package/dist/__tests__/useForm/resolver.test.d.ts.map +1 -0
  109. package/dist/__tests__/useForm/setError.test.d.ts +2 -0
  110. package/dist/__tests__/useForm/setError.test.d.ts.map +1 -0
  111. package/dist/__tests__/useForm/setFocus.test.d.ts +2 -0
  112. package/dist/__tests__/useForm/setFocus.test.d.ts.map +1 -0
  113. package/dist/__tests__/useForm/setValue.test.d.ts +2 -0
  114. package/dist/__tests__/useForm/setValue.test.d.ts.map +1 -0
  115. package/dist/__tests__/useForm/subscribe.test.d.ts +2 -0
  116. package/dist/__tests__/useForm/subscribe.test.d.ts.map +1 -0
  117. package/dist/__tests__/useForm/trigger.test.d.ts +2 -0
  118. package/dist/__tests__/useForm/trigger.test.d.ts.map +1 -0
  119. package/dist/__tests__/useForm/unregister.test.d.ts +2 -0
  120. package/dist/__tests__/useForm/unregister.test.d.ts.map +1 -0
  121. package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts +2 -0
  122. package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts.map +1 -0
  123. package/dist/__tests__/useForm/watch.test.d.ts +2 -0
  124. package/dist/__tests__/useForm/watch.test.d.ts.map +1 -0
  125. package/dist/__tests__/useForm.server.test.d.ts +2 -0
  126. package/dist/__tests__/useForm.server.test.d.ts.map +1 -0
  127. package/dist/__tests__/useForm.test.d.ts +2 -0
  128. package/dist/__tests__/useForm.test.d.ts.map +1 -0
  129. package/dist/__tests__/useFormContext.server.test.d.ts +2 -0
  130. package/dist/__tests__/useFormContext.server.test.d.ts.map +1 -0
  131. package/dist/__tests__/useFormContext.test.d.ts +2 -0
  132. package/dist/__tests__/useFormContext.test.d.ts.map +1 -0
  133. package/dist/__tests__/useFormState.test.d.ts +2 -0
  134. package/dist/__tests__/useFormState.test.d.ts.map +1 -0
  135. package/dist/__tests__/useWatch.test.d.ts +2 -0
  136. package/dist/__tests__/useWatch.test.d.ts.map +1 -0
  137. package/dist/__tests__/utils/append.test.d.ts +2 -0
  138. package/dist/__tests__/utils/append.test.d.ts.map +1 -0
  139. package/dist/__tests__/utils/cloneObject.test.d.ts +2 -0
  140. package/dist/__tests__/utils/cloneObject.test.d.ts.map +1 -0
  141. package/dist/__tests__/utils/compact.test.d.ts +2 -0
  142. package/dist/__tests__/utils/compact.test.d.ts.map +1 -0
  143. package/dist/__tests__/utils/convertToArrayPayload.test.d.ts +2 -0
  144. package/dist/__tests__/utils/convertToArrayPayload.test.d.ts.map +1 -0
  145. package/dist/__tests__/utils/createSubject.test.d.ts +2 -0
  146. package/dist/__tests__/utils/createSubject.test.d.ts.map +1 -0
  147. package/dist/__tests__/utils/deepEqual.test.d.ts +2 -0
  148. package/dist/__tests__/utils/deepEqual.test.d.ts.map +1 -0
  149. package/dist/__tests__/utils/deepMerge.test.d.ts +2 -0
  150. package/dist/__tests__/utils/deepMerge.test.d.ts.map +1 -0
  151. package/dist/__tests__/utils/extractFormValues.test.d.ts +2 -0
  152. package/dist/__tests__/utils/extractFormValues.test.d.ts.map +1 -0
  153. package/dist/__tests__/utils/fillEmptyArray.test.d.ts +2 -0
  154. package/dist/__tests__/utils/fillEmptyArray.test.d.ts.map +1 -0
  155. package/dist/__tests__/utils/flatten.test.d.ts +2 -0
  156. package/dist/__tests__/utils/flatten.test.d.ts.map +1 -0
  157. package/dist/__tests__/utils/get.test.d.ts +2 -0
  158. package/dist/__tests__/utils/get.test.d.ts.map +1 -0
  159. package/dist/__tests__/utils/insert.test.d.ts +2 -0
  160. package/dist/__tests__/utils/insert.test.d.ts.map +1 -0
  161. package/dist/__tests__/utils/isBoolean.test.d.ts +2 -0
  162. package/dist/__tests__/utils/isBoolean.test.d.ts.map +1 -0
  163. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts +2 -0
  164. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts.map +1 -0
  165. package/dist/__tests__/utils/isEmptyObject.test.d.ts +2 -0
  166. package/dist/__tests__/utils/isEmptyObject.test.d.ts.map +1 -0
  167. package/dist/__tests__/utils/isFileInput.test.d.ts +2 -0
  168. package/dist/__tests__/utils/isFileInput.test.d.ts.map +1 -0
  169. package/dist/__tests__/utils/isFunction.test.d.ts +2 -0
  170. package/dist/__tests__/utils/isFunction.test.d.ts.map +1 -0
  171. package/dist/__tests__/utils/isHTMLElement.test.d.ts +2 -0
  172. package/dist/__tests__/utils/isHTMLElement.test.d.ts.map +1 -0
  173. package/dist/__tests__/utils/isKey.test.d.ts +2 -0
  174. package/dist/__tests__/utils/isKey.test.d.ts.map +1 -0
  175. package/dist/__tests__/utils/isMultipleSelect.test.d.ts +2 -0
  176. package/dist/__tests__/utils/isMultipleSelect.test.d.ts.map +1 -0
  177. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts +2 -0
  178. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts.map +1 -0
  179. package/dist/__tests__/utils/isObject.test.d.ts +2 -0
  180. package/dist/__tests__/utils/isObject.test.d.ts.map +1 -0
  181. package/dist/__tests__/utils/isPrimitive.test.d.ts +2 -0
  182. package/dist/__tests__/utils/isPrimitive.test.d.ts.map +1 -0
  183. package/dist/__tests__/utils/isRadioInput.test.d.ts +2 -0
  184. package/dist/__tests__/utils/isRadioInput.test.d.ts.map +1 -0
  185. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts +2 -0
  186. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts.map +1 -0
  187. package/dist/__tests__/utils/isRegex.test.d.ts +2 -0
  188. package/dist/__tests__/utils/isRegex.test.d.ts.map +1 -0
  189. package/dist/__tests__/utils/isString.test.d.ts +2 -0
  190. package/dist/__tests__/utils/isString.test.d.ts.map +1 -0
  191. package/dist/__tests__/utils/isUndefined.test.d.ts +2 -0
  192. package/dist/__tests__/utils/isUndefined.test.d.ts.map +1 -0
  193. package/dist/__tests__/utils/live.test.d.ts +2 -0
  194. package/dist/__tests__/utils/live.test.d.ts.map +1 -0
  195. package/dist/__tests__/utils/move.test.d.ts +2 -0
  196. package/dist/__tests__/utils/move.test.d.ts.map +1 -0
  197. package/dist/__tests__/utils/noop.test.d.ts +2 -0
  198. package/dist/__tests__/utils/noop.test.d.ts.map +1 -0
  199. package/dist/__tests__/utils/objectHasFunction.test.d.ts +2 -0
  200. package/dist/__tests__/utils/objectHasFunction.test.d.ts.map +1 -0
  201. package/dist/__tests__/utils/prepend.test.d.ts +2 -0
  202. package/dist/__tests__/utils/prepend.test.d.ts.map +1 -0
  203. package/dist/__tests__/utils/remove.test.d.ts +2 -0
  204. package/dist/__tests__/utils/remove.test.d.ts.map +1 -0
  205. package/dist/__tests__/utils/set.test.d.ts +2 -0
  206. package/dist/__tests__/utils/set.test.d.ts.map +1 -0
  207. package/dist/__tests__/utils/stringToPath.test.d.ts +2 -0
  208. package/dist/__tests__/utils/stringToPath.test.d.ts.map +1 -0
  209. package/dist/__tests__/utils/swap.test.d.ts +2 -0
  210. package/dist/__tests__/utils/swap.test.d.ts.map +1 -0
  211. package/dist/__tests__/utils/unset.test.d.ts +2 -0
  212. package/dist/__tests__/utils/unset.test.d.ts.map +1 -0
  213. package/dist/__tests__/utils/validationModeChecker.test.d.ts +2 -0
  214. package/dist/__tests__/utils/validationModeChecker.test.d.ts.map +1 -0
  215. package/dist/__tests__/watch.server.test.d.ts +2 -0
  216. package/dist/__tests__/watch.server.test.d.ts.map +1 -0
  217. package/dist/__tests__/watch.test.d.ts +2 -0
  218. package/dist/__tests__/watch.test.d.ts.map +1 -0
  219. package/dist/index.cjs.js +1 -1
  220. package/dist/index.cjs.js.map +1 -1
  221. package/dist/index.esm.mjs +147 -83
  222. package/dist/index.esm.mjs.map +1 -1
  223. package/dist/index.umd.js +1 -1
  224. package/dist/index.umd.js.map +1 -1
  225. package/dist/logic/createFormControl.d.ts.map +1 -1
  226. package/dist/react-server.esm.mjs +28 -10
  227. package/dist/react-server.esm.mjs.map +1 -1
  228. package/dist/types/form.d.ts +0 -8
  229. package/dist/types/form.d.ts.map +1 -1
  230. package/dist/types/index.d.ts +1 -0
  231. package/dist/types/index.d.ts.map +1 -1
  232. package/dist/types/utils.d.ts +3 -2
  233. package/dist/types/utils.d.ts.map +1 -1
  234. package/dist/types/watch.d.ts +32 -0
  235. package/dist/types/watch.d.ts.map +1 -0
  236. package/dist/useController.d.ts.map +1 -1
  237. package/dist/useFieldArray.d.ts.map +1 -1
  238. package/dist/useForm.d.ts.map +1 -1
  239. package/dist/useFormContext.d.ts.map +1 -1
  240. package/dist/useFormControlContext.d.ts +12 -0
  241. package/dist/useFormControlContext.d.ts.map +1 -0
  242. package/dist/useFormState.d.ts.map +1 -1
  243. package/dist/watch.d.ts +2 -21
  244. package/dist/watch.d.ts.map +1 -1
  245. package/package.json +32 -33
@@ -1 +1 @@
1
- {"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAaV,WAAW,EAiBX,YAAY,EAIZ,aAAa,EAUd,MAAM,UAAU,CAAC;AAqDlB,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,CAw9CA"}
1
+ {"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAaV,WAAW,EAiBX,YAAY,EAIZ,aAAa,EAUd,MAAM,UAAU,CAAC;AAqDlB,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,CAu+CA"}
@@ -107,7 +107,7 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
107
107
  return Object.is(object1, object2);
108
108
  }
109
109
  if (isDateObject(object1) && isDateObject(object2)) {
110
- return object1.getTime() === object2.getTime();
110
+ return Object.is(object1.getTime(), object2.getTime());
111
111
  }
112
112
  const keys1 = Object.keys(object1);
113
113
  const keys2 = Object.keys(object2);
@@ -1053,7 +1053,7 @@ function createFormControl(props = {}) {
1053
1053
  }
1054
1054
  if (fieldError[_f.name]) {
1055
1055
  context.valid = false;
1056
- if (shouldOnlyCheckValid) {
1056
+ if (shouldOnlyCheckValid || props.shouldUseNativeValidation) {
1057
1057
  break;
1058
1058
  }
1059
1059
  }
@@ -1188,11 +1188,19 @@ function createFormControl(props = {}) {
1188
1188
  ? setValues(name, cloneValue, options)
1189
1189
  : setFieldValue(name, cloneValue, options);
1190
1190
  }
1191
- isWatched(name, _names) && _subjects.state.next({ ..._formState, name });
1192
- _subjects.state.next({
1193
- name: _state.mount ? name : undefined,
1194
- values: cloneObject(_formValues),
1195
- });
1191
+ if (isWatched(name, _names)) {
1192
+ _subjects.state.next({
1193
+ ..._formState,
1194
+ name,
1195
+ values: cloneObject(_formValues),
1196
+ });
1197
+ }
1198
+ else {
1199
+ _subjects.state.next({
1200
+ name: _state.mount ? name : undefined,
1201
+ values: cloneObject(_formValues),
1202
+ });
1203
+ }
1196
1204
  };
1197
1205
  const onChange = async (event) => {
1198
1206
  _state.mount = true;
@@ -1438,7 +1446,11 @@ function createFormControl(props = {}) {
1438
1446
  if ((isBoolean(disabled) && _state.mount) ||
1439
1447
  !!disabled ||
1440
1448
  _names.disabled.has(name)) {
1449
+ const wasDisabled = _names.disabled.has(name);
1450
+ const isDisabled = !!disabled;
1451
+ const disabledStateChanged = wasDisabled !== isDisabled;
1441
1452
  disabled ? _names.disabled.add(name) : _names.disabled.delete(name);
1453
+ disabledStateChanged && _state.mount && !_state.action && _setValid();
1442
1454
  }
1443
1455
  };
1444
1456
  const register = (name, options = {}) => {
@@ -1640,9 +1652,15 @@ function createFormControl(props = {}) {
1640
1652
  ...Object.keys(getDirtyFields(_defaultValues, _formValues)),
1641
1653
  ]);
1642
1654
  for (const fieldName of Array.from(fieldsToCheck)) {
1643
- get(_formState.dirtyFields, fieldName)
1644
- ? set(values, fieldName, get(_formValues, fieldName))
1645
- : setValue(fieldName, get(values, fieldName));
1655
+ const isDirty = get(_formState.dirtyFields, fieldName);
1656
+ const existingValue = get(_formValues, fieldName);
1657
+ const newValue = get(values, fieldName);
1658
+ if (isDirty && !isUndefined(existingValue)) {
1659
+ set(values, fieldName, existingValue);
1660
+ }
1661
+ else if (!isDirty && !isUndefined(newValue)) {
1662
+ setValue(fieldName, newValue);
1663
+ }
1646
1664
  }
1647
1665
  }
1648
1666
  else {