react-hook-form 7.73.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.
Files changed (240) hide show
  1. package/README.md +1 -2
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.esm.mjs +24 -11
  5. package/dist/index.esm.mjs.map +1 -1
  6. package/dist/index.umd.js +1 -1
  7. package/dist/index.umd.js.map +1 -1
  8. package/dist/logic/createFormControl.d.ts.map +1 -1
  9. package/dist/logic/validateField.d.ts.map +1 -1
  10. package/dist/react-server.esm.mjs +24 -5
  11. package/dist/react-server.esm.mjs.map +1 -1
  12. package/dist/types/form.d.ts +2 -0
  13. package/dist/types/form.d.ts.map +1 -1
  14. package/dist/useController.d.ts.map +1 -1
  15. package/dist/utils/unset.d.ts.map +1 -1
  16. package/package.json +1 -1
  17. package/dist/__tests__/controller.server.test.d.ts +0 -2
  18. package/dist/__tests__/controller.server.test.d.ts.map +0 -1
  19. package/dist/__tests__/controller.test.d.ts +0 -2
  20. package/dist/__tests__/controller.test.d.ts.map +0 -1
  21. package/dist/__tests__/form.test.d.ts +0 -2
  22. package/dist/__tests__/form.test.d.ts.map +0 -1
  23. package/dist/__tests__/formStateSubscribe.server.test.d.ts +0 -2
  24. package/dist/__tests__/formStateSubscribe.server.test.d.ts.map +0 -1
  25. package/dist/__tests__/formStateSubscribe.test.d.ts +0 -2
  26. package/dist/__tests__/formStateSubscribe.test.d.ts.map +0 -1
  27. package/dist/__tests__/isPlainObject.test.d.ts +0 -2
  28. package/dist/__tests__/isPlainObject.test.d.ts.map +0 -1
  29. package/dist/__tests__/logic/appendErrors.test.d.ts +0 -2
  30. package/dist/__tests__/logic/appendErrors.test.d.ts.map +0 -1
  31. package/dist/__tests__/logic/createFormControl.test.d.ts +0 -2
  32. package/dist/__tests__/logic/createFormControl.test.d.ts.map +0 -1
  33. package/dist/__tests__/logic/generateId.test.d.ts +0 -2
  34. package/dist/__tests__/logic/generateId.test.d.ts.map +0 -1
  35. package/dist/__tests__/logic/getCheckboxValue.test.d.ts +0 -2
  36. package/dist/__tests__/logic/getCheckboxValue.test.d.ts.map +0 -1
  37. package/dist/__tests__/logic/getDirtyFields.test.d.ts +0 -2
  38. package/dist/__tests__/logic/getDirtyFields.test.d.ts.map +0 -1
  39. package/dist/__tests__/logic/getEventValue.test.d.ts +0 -2
  40. package/dist/__tests__/logic/getEventValue.test.d.ts.map +0 -1
  41. package/dist/__tests__/logic/getFieldValue.test.d.ts +0 -2
  42. package/dist/__tests__/logic/getFieldValue.test.d.ts.map +0 -1
  43. package/dist/__tests__/logic/getFieldValueAs.test.d.ts +0 -2
  44. package/dist/__tests__/logic/getFieldValueAs.test.d.ts.map +0 -1
  45. package/dist/__tests__/logic/getFocusFieldName.test.d.ts +0 -2
  46. package/dist/__tests__/logic/getFocusFieldName.test.d.ts.map +0 -1
  47. package/dist/__tests__/logic/getNodeParentName.test.d.ts +0 -2
  48. package/dist/__tests__/logic/getNodeParentName.test.d.ts.map +0 -1
  49. package/dist/__tests__/logic/getRadioValue.test.d.ts +0 -2
  50. package/dist/__tests__/logic/getRadioValue.test.d.ts.map +0 -1
  51. package/dist/__tests__/logic/getResolverOptions.test.d.ts +0 -2
  52. package/dist/__tests__/logic/getResolverOptions.test.d.ts.map +0 -1
  53. package/dist/__tests__/logic/getRuleValue.test.d.ts +0 -2
  54. package/dist/__tests__/logic/getRuleValue.test.d.ts.map +0 -1
  55. package/dist/__tests__/logic/getValidateError.test.d.ts +0 -2
  56. package/dist/__tests__/logic/getValidateError.test.d.ts.map +0 -1
  57. package/dist/__tests__/logic/getValidationModes.test.d.ts +0 -2
  58. package/dist/__tests__/logic/getValidationModes.test.d.ts.map +0 -1
  59. package/dist/__tests__/logic/getValueAndMessage.test.d.ts +0 -2
  60. package/dist/__tests__/logic/getValueAndMessage.test.d.ts.map +0 -1
  61. package/dist/__tests__/logic/hasPromiseValidation.test.d.ts +0 -2
  62. package/dist/__tests__/logic/hasPromiseValidation.test.d.ts.map +0 -1
  63. package/dist/__tests__/logic/hasValidation.test.d.ts +0 -2
  64. package/dist/__tests__/logic/hasValidation.test.d.ts.map +0 -1
  65. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts +0 -2
  66. package/dist/__tests__/logic/isNameInFieldArray.test.d.ts.map +0 -1
  67. package/dist/__tests__/logic/isWatched.test.d.ts +0 -2
  68. package/dist/__tests__/logic/isWatched.test.d.ts.map +0 -1
  69. package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts +0 -2
  70. package/dist/__tests__/logic/iterateFieldsByAction.test.d.ts.map +0 -1
  71. package/dist/__tests__/logic/schemaErrorLookup.test.d.ts +0 -2
  72. package/dist/__tests__/logic/schemaErrorLookup.test.d.ts.map +0 -1
  73. package/dist/__tests__/logic/shouldRenderFormState.test.d.ts +0 -2
  74. package/dist/__tests__/logic/shouldRenderFormState.test.d.ts.map +0 -1
  75. package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts +0 -2
  76. package/dist/__tests__/logic/shouldSubscribeByName.test.d.ts.map +0 -1
  77. package/dist/__tests__/logic/skipValidation.test.d.ts +0 -2
  78. package/dist/__tests__/logic/skipValidation.test.d.ts.map +0 -1
  79. package/dist/__tests__/logic/unsetEmptyArray.test.d.ts +0 -2
  80. package/dist/__tests__/logic/unsetEmptyArray.test.d.ts.map +0 -1
  81. package/dist/__tests__/logic/validateField.test.d.ts +0 -2
  82. package/dist/__tests__/logic/validateField.test.d.ts.map +0 -1
  83. package/dist/__tests__/nested-null.test.d.ts +0 -2
  84. package/dist/__tests__/nested-null.test.d.ts.map +0 -1
  85. package/dist/__tests__/type.test.d.ts +0 -2
  86. package/dist/__tests__/type.test.d.ts.map +0 -1
  87. package/dist/__tests__/useController.test.d.ts +0 -2
  88. package/dist/__tests__/useController.test.d.ts.map +0 -1
  89. package/dist/__tests__/useFieldArray/append.test.d.ts +0 -2
  90. package/dist/__tests__/useFieldArray/append.test.d.ts.map +0 -1
  91. package/dist/__tests__/useFieldArray/dirtyFields.test.d.ts +0 -2
  92. package/dist/__tests__/useFieldArray/dirtyFields.test.d.ts.map +0 -1
  93. package/dist/__tests__/useFieldArray/focus.test.d.ts +0 -2
  94. package/dist/__tests__/useFieldArray/focus.test.d.ts.map +0 -1
  95. package/dist/__tests__/useFieldArray/insert.test.d.ts +0 -2
  96. package/dist/__tests__/useFieldArray/insert.test.d.ts.map +0 -1
  97. package/dist/__tests__/useFieldArray/move.test.d.ts +0 -2
  98. package/dist/__tests__/useFieldArray/move.test.d.ts.map +0 -1
  99. package/dist/__tests__/useFieldArray/prepend.test.d.ts +0 -2
  100. package/dist/__tests__/useFieldArray/prepend.test.d.ts.map +0 -1
  101. package/dist/__tests__/useFieldArray/remove.test.d.ts +0 -2
  102. package/dist/__tests__/useFieldArray/remove.test.d.ts.map +0 -1
  103. package/dist/__tests__/useFieldArray/replace.test.d.ts +0 -2
  104. package/dist/__tests__/useFieldArray/replace.test.d.ts.map +0 -1
  105. package/dist/__tests__/useFieldArray/swap.test.d.ts +0 -2
  106. package/dist/__tests__/useFieldArray/swap.test.d.ts.map +0 -1
  107. package/dist/__tests__/useFieldArray/update.test.d.ts +0 -2
  108. package/dist/__tests__/useFieldArray/update.test.d.ts.map +0 -1
  109. package/dist/__tests__/useFieldArray.test.d.ts +0 -2
  110. package/dist/__tests__/useFieldArray.test.d.ts.map +0 -1
  111. package/dist/__tests__/useForm/clearErrors.test.d.ts +0 -2
  112. package/dist/__tests__/useForm/clearErrors.test.d.ts.map +0 -1
  113. package/dist/__tests__/useForm/formState.test.d.ts +0 -2
  114. package/dist/__tests__/useForm/formState.test.d.ts.map +0 -1
  115. package/dist/__tests__/useForm/getFieldState.test.d.ts +0 -2
  116. package/dist/__tests__/useForm/getFieldState.test.d.ts.map +0 -1
  117. package/dist/__tests__/useForm/getValues.test.d.ts +0 -2
  118. package/dist/__tests__/useForm/getValues.test.d.ts.map +0 -1
  119. package/dist/__tests__/useForm/handleSubmit.test.d.ts +0 -2
  120. package/dist/__tests__/useForm/handleSubmit.test.d.ts.map +0 -1
  121. package/dist/__tests__/useForm/register.test.d.ts +0 -2
  122. package/dist/__tests__/useForm/register.test.d.ts.map +0 -1
  123. package/dist/__tests__/useForm/reset.test.d.ts +0 -2
  124. package/dist/__tests__/useForm/reset.test.d.ts.map +0 -1
  125. package/dist/__tests__/useForm/resetField.test.d.ts +0 -2
  126. package/dist/__tests__/useForm/resetField.test.d.ts.map +0 -1
  127. package/dist/__tests__/useForm/resolver.test.d.ts +0 -2
  128. package/dist/__tests__/useForm/resolver.test.d.ts.map +0 -1
  129. package/dist/__tests__/useForm/setError.test.d.ts +0 -2
  130. package/dist/__tests__/useForm/setError.test.d.ts.map +0 -1
  131. package/dist/__tests__/useForm/setFocus.test.d.ts +0 -2
  132. package/dist/__tests__/useForm/setFocus.test.d.ts.map +0 -1
  133. package/dist/__tests__/useForm/setValue.test.d.ts +0 -2
  134. package/dist/__tests__/useForm/setValue.test.d.ts.map +0 -1
  135. package/dist/__tests__/useForm/subscribe.test.d.ts +0 -2
  136. package/dist/__tests__/useForm/subscribe.test.d.ts.map +0 -1
  137. package/dist/__tests__/useForm/trigger.test.d.ts +0 -2
  138. package/dist/__tests__/useForm/trigger.test.d.ts.map +0 -1
  139. package/dist/__tests__/useForm/unregister.test.d.ts +0 -2
  140. package/dist/__tests__/useForm/unregister.test.d.ts.map +0 -1
  141. package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts +0 -2
  142. package/dist/__tests__/useForm/useFormWithNullValues.test.d.ts.map +0 -1
  143. package/dist/__tests__/useForm/watch.test.d.ts +0 -2
  144. package/dist/__tests__/useForm/watch.test.d.ts.map +0 -1
  145. package/dist/__tests__/useForm.server.test.d.ts +0 -2
  146. package/dist/__tests__/useForm.server.test.d.ts.map +0 -1
  147. package/dist/__tests__/useForm.test.d.ts +0 -2
  148. package/dist/__tests__/useForm.test.d.ts.map +0 -1
  149. package/dist/__tests__/useFormContext.server.test.d.ts +0 -2
  150. package/dist/__tests__/useFormContext.server.test.d.ts.map +0 -1
  151. package/dist/__tests__/useFormContext.test.d.ts +0 -2
  152. package/dist/__tests__/useFormContext.test.d.ts.map +0 -1
  153. package/dist/__tests__/useFormState.test.d.ts +0 -2
  154. package/dist/__tests__/useFormState.test.d.ts.map +0 -1
  155. package/dist/__tests__/useWatch.test.d.ts +0 -2
  156. package/dist/__tests__/useWatch.test.d.ts.map +0 -1
  157. package/dist/__tests__/utils/append.test.d.ts +0 -2
  158. package/dist/__tests__/utils/append.test.d.ts.map +0 -1
  159. package/dist/__tests__/utils/cloneObject.test.d.ts +0 -2
  160. package/dist/__tests__/utils/cloneObject.test.d.ts.map +0 -1
  161. package/dist/__tests__/utils/compact.test.d.ts +0 -2
  162. package/dist/__tests__/utils/compact.test.d.ts.map +0 -1
  163. package/dist/__tests__/utils/convertToArrayPayload.test.d.ts +0 -2
  164. package/dist/__tests__/utils/convertToArrayPayload.test.d.ts.map +0 -1
  165. package/dist/__tests__/utils/createSubject.test.d.ts +0 -2
  166. package/dist/__tests__/utils/createSubject.test.d.ts.map +0 -1
  167. package/dist/__tests__/utils/deepEqual.test.d.ts +0 -2
  168. package/dist/__tests__/utils/deepEqual.test.d.ts.map +0 -1
  169. package/dist/__tests__/utils/deepMerge.test.d.ts +0 -2
  170. package/dist/__tests__/utils/deepMerge.test.d.ts.map +0 -1
  171. package/dist/__tests__/utils/extractFormValues.test.d.ts +0 -2
  172. package/dist/__tests__/utils/extractFormValues.test.d.ts.map +0 -1
  173. package/dist/__tests__/utils/fillEmptyArray.test.d.ts +0 -2
  174. package/dist/__tests__/utils/fillEmptyArray.test.d.ts.map +0 -1
  175. package/dist/__tests__/utils/flatten.test.d.ts +0 -2
  176. package/dist/__tests__/utils/flatten.test.d.ts.map +0 -1
  177. package/dist/__tests__/utils/get.test.d.ts +0 -2
  178. package/dist/__tests__/utils/get.test.d.ts.map +0 -1
  179. package/dist/__tests__/utils/insert.test.d.ts +0 -2
  180. package/dist/__tests__/utils/insert.test.d.ts.map +0 -1
  181. package/dist/__tests__/utils/isBoolean.test.d.ts +0 -2
  182. package/dist/__tests__/utils/isBoolean.test.d.ts.map +0 -1
  183. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts +0 -2
  184. package/dist/__tests__/utils/isCheckBoxInput.test.d.ts.map +0 -1
  185. package/dist/__tests__/utils/isEmptyObject.test.d.ts +0 -2
  186. package/dist/__tests__/utils/isEmptyObject.test.d.ts.map +0 -1
  187. package/dist/__tests__/utils/isFileInput.test.d.ts +0 -2
  188. package/dist/__tests__/utils/isFileInput.test.d.ts.map +0 -1
  189. package/dist/__tests__/utils/isFunction.test.d.ts +0 -2
  190. package/dist/__tests__/utils/isFunction.test.d.ts.map +0 -1
  191. package/dist/__tests__/utils/isHTMLElement.test.d.ts +0 -2
  192. package/dist/__tests__/utils/isHTMLElement.test.d.ts.map +0 -1
  193. package/dist/__tests__/utils/isKey.test.d.ts +0 -2
  194. package/dist/__tests__/utils/isKey.test.d.ts.map +0 -1
  195. package/dist/__tests__/utils/isMultipleSelect.test.d.ts +0 -2
  196. package/dist/__tests__/utils/isMultipleSelect.test.d.ts.map +0 -1
  197. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts +0 -2
  198. package/dist/__tests__/utils/isNullOrUndefined.test.d.ts.map +0 -1
  199. package/dist/__tests__/utils/isObject.test.d.ts +0 -2
  200. package/dist/__tests__/utils/isObject.test.d.ts.map +0 -1
  201. package/dist/__tests__/utils/isPrimitive.test.d.ts +0 -2
  202. package/dist/__tests__/utils/isPrimitive.test.d.ts.map +0 -1
  203. package/dist/__tests__/utils/isRadioInput.test.d.ts +0 -2
  204. package/dist/__tests__/utils/isRadioInput.test.d.ts.map +0 -1
  205. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts +0 -2
  206. package/dist/__tests__/utils/isRadioOrCheckbox.test.d.ts.map +0 -1
  207. package/dist/__tests__/utils/isRegex.test.d.ts +0 -2
  208. package/dist/__tests__/utils/isRegex.test.d.ts.map +0 -1
  209. package/dist/__tests__/utils/isString.test.d.ts +0 -2
  210. package/dist/__tests__/utils/isString.test.d.ts.map +0 -1
  211. package/dist/__tests__/utils/isUndefined.test.d.ts +0 -2
  212. package/dist/__tests__/utils/isUndefined.test.d.ts.map +0 -1
  213. package/dist/__tests__/utils/live.test.d.ts +0 -2
  214. package/dist/__tests__/utils/live.test.d.ts.map +0 -1
  215. package/dist/__tests__/utils/move.test.d.ts +0 -2
  216. package/dist/__tests__/utils/move.test.d.ts.map +0 -1
  217. package/dist/__tests__/utils/noop.test.d.ts +0 -2
  218. package/dist/__tests__/utils/noop.test.d.ts.map +0 -1
  219. package/dist/__tests__/utils/objectHasFunction.test.d.ts +0 -2
  220. package/dist/__tests__/utils/objectHasFunction.test.d.ts.map +0 -1
  221. package/dist/__tests__/utils/prepend.test.d.ts +0 -2
  222. package/dist/__tests__/utils/prepend.test.d.ts.map +0 -1
  223. package/dist/__tests__/utils/remove.test.d.ts +0 -2
  224. package/dist/__tests__/utils/remove.test.d.ts.map +0 -1
  225. package/dist/__tests__/utils/set.test.d.ts +0 -2
  226. package/dist/__tests__/utils/set.test.d.ts.map +0 -1
  227. package/dist/__tests__/utils/stringToPath.test.d.ts +0 -2
  228. package/dist/__tests__/utils/stringToPath.test.d.ts.map +0 -1
  229. package/dist/__tests__/utils/swap.test.d.ts +0 -2
  230. package/dist/__tests__/utils/swap.test.d.ts.map +0 -1
  231. package/dist/__tests__/utils/unset.test.d.ts +0 -2
  232. package/dist/__tests__/utils/unset.test.d.ts.map +0 -1
  233. package/dist/__tests__/utils/update.test.d.ts +0 -2
  234. package/dist/__tests__/utils/update.test.d.ts.map +0 -1
  235. package/dist/__tests__/utils/validationModeChecker.test.d.ts +0 -2
  236. package/dist/__tests__/utils/validationModeChecker.test.d.ts.map +0 -1
  237. package/dist/__tests__/watch.server.test.d.ts +0 -2
  238. package/dist/__tests__/watch.server.test.d.ts.map +0 -1
  239. package/dist/__tests__/watch.test.d.ts +0 -2
  240. package/dist/__tests__/watch.test.d.ts.map +0 -1
@@ -408,7 +408,6 @@ function useController(props) {
408
408
  exact,
409
409
  });
410
410
  const _props = React.useRef(props);
411
- const _previousNameRef = React.useRef(undefined);
412
411
  const _registerProps = React.useRef(control.register(name, {
413
412
  ...props.rules,
414
413
  value,
@@ -474,10 +473,6 @@ function useController(props) {
474
473
  }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);
475
474
  React.useEffect(() => {
476
475
  const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;
477
- const previousName = _previousNameRef.current;
478
- if (previousName && previousName !== name && !isArrayField) {
479
- control.unregister(previousName);
480
- }
481
476
  control.register(name, {
482
477
  ..._props.current.rules,
483
478
  ...(isBoolean(_props.current.disabled)
@@ -499,7 +494,6 @@ function useController(props) {
499
494
  }
500
495
  }
501
496
  !isArrayField && control.register(name);
502
- _previousNameRef.current = name;
503
497
  return () => {
504
498
  (isArrayField
505
499
  ? _shouldUnregisterField && !control._state.action
@@ -883,7 +877,12 @@ function baseGet(object, updatePath) {
883
877
  const length = updatePath.slice(0, -1).length;
884
878
  let index = 0;
885
879
  while (index < length) {
886
- object = isUndefined(object) ? index++ : object[updatePath[index++]];
880
+ if (isNullOrUndefined(object)) {
881
+ object = undefined;
882
+ break;
883
+ }
884
+ object = object[updatePath[index]];
885
+ index++;
887
886
  }
888
887
  return object;
889
888
  }
@@ -1241,7 +1240,8 @@ var validateField = async (field, disabledFieldNames, formValues, validateAllFie
1241
1240
  isUndefined(inputValue)) ||
1242
1241
  (isHTMLElement(ref) && ref.value === '') ||
1243
1242
  inputValue === '' ||
1244
- (Array.isArray(inputValue) && !inputValue.length);
1243
+ (Array.isArray(inputValue) && !inputValue.length) ||
1244
+ (valueAsNumber && typeof inputValue === 'number' && isNaN(inputValue));
1245
1245
  const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);
1246
1246
  const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {
1247
1247
  const message = exceedMax ? maxLengthMessage : minLengthMessage;
@@ -1841,7 +1841,7 @@ function createFormControl(props = {}) {
1841
1841
  updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);
1842
1842
  options.shouldValidate && trigger(name);
1843
1843
  };
1844
- const setValues = (name, value, options) => {
1844
+ const setFieldValues = (name, value, options) => {
1845
1845
  for (const fieldKey in value) {
1846
1846
  if (!value.hasOwnProperty(fieldKey)) {
1847
1847
  return;
@@ -1853,7 +1853,7 @@ function createFormControl(props = {}) {
1853
1853
  isObject(fieldValue) ||
1854
1854
  (field && !field._f)) &&
1855
1855
  !isDateObject(fieldValue)
1856
- ? setValues(fieldName, fieldValue, options)
1856
+ ? setFieldValues(fieldName, fieldValue, options)
1857
1857
  : setFieldValue(fieldName, fieldValue, options);
1858
1858
  }
1859
1859
  };
@@ -1885,7 +1885,7 @@ function createFormControl(props = {}) {
1885
1885
  setFieldValue(name, cloneValue, options);
1886
1886
  }
1887
1887
  else {
1888
- setValues(name, cloneValue, options);
1888
+ setFieldValues(name, cloneValue, options);
1889
1889
  }
1890
1890
  }
1891
1891
  if (!isValueUnchanged) {
@@ -1904,6 +1904,18 @@ function createFormControl(props = {}) {
1904
1904
  }
1905
1905
  }
1906
1906
  };
1907
+ const setValues = (formValues) => {
1908
+ const updatedFormValues = isFunction(formValues)
1909
+ ? formValues(_formValues)
1910
+ : formValues;
1911
+ if (!deepEqual(_formValues, updatedFormValues)) {
1912
+ _formValues = {
1913
+ ..._formValues,
1914
+ ...updatedFormValues,
1915
+ };
1916
+ _subjects.state.next({ ..._formState, values: _formValues });
1917
+ }
1918
+ };
1907
1919
  const onChange = async (event) => {
1908
1920
  _state.mount = true;
1909
1921
  const target = event.target;
@@ -2601,6 +2613,7 @@ function createFormControl(props = {}) {
2601
2613
  handleSubmit,
2602
2614
  watch,
2603
2615
  setValue,
2616
+ setValues,
2604
2617
  getValues,
2605
2618
  reset,
2606
2619
  resetField,