react-hook-form 7.25.3 → 8.0.0-alpha.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 (110) hide show
  1. package/README.md +6 -0
  2. package/dist/__typetests__/__fixtures__/index.d.ts +2 -0
  3. package/dist/__typetests__/__fixtures__/index.d.ts.map +1 -0
  4. package/dist/__typetests__/__fixtures__/type.d.ts +12 -0
  5. package/dist/__typetests__/__fixtures__/type.d.ts.map +1 -0
  6. package/dist/__typetests__/types/__fixtures__/index.d.ts +4 -0
  7. package/dist/__typetests__/types/__fixtures__/index.d.ts.map +1 -0
  8. package/dist/__typetests__/types/__fixtures__/pathString.d.ts +4 -0
  9. package/dist/__typetests__/types/__fixtures__/pathString.d.ts.map +1 -0
  10. package/dist/__typetests__/types/__fixtures__/traversable.d.ts +14 -0
  11. package/dist/__typetests__/types/__fixtures__/traversable.d.ts.map +1 -0
  12. package/dist/__typetests__/types/__fixtures__/tuple.d.ts +15 -0
  13. package/dist/__typetests__/types/__fixtures__/tuple.d.ts.map +1 -0
  14. package/dist/__typetests__/types/form.test-d.d.ts +2 -0
  15. package/dist/__typetests__/types/form.test-d.d.ts.map +1 -0
  16. package/dist/__typetests__/types/path/auto.test-d.d.ts +2 -0
  17. package/dist/__typetests__/types/path/auto.test-d.d.ts.map +1 -0
  18. package/dist/__typetests__/types/path/internal/autoCompletePath.test-d.d.ts +2 -0
  19. package/dist/__typetests__/types/path/internal/autoCompletePath.test-d.d.ts.map +1 -0
  20. package/dist/__typetests__/types/path/internal/hasPath.test-d.d.ts +2 -0
  21. package/dist/__typetests__/types/path/internal/hasPath.test-d.d.ts.map +1 -0
  22. package/dist/__typetests__/types/path/internal/keys.test-d.d.ts +2 -0
  23. package/dist/__typetests__/types/path/internal/keys.test-d.d.ts.map +1 -0
  24. package/dist/__typetests__/types/path/internal/pathGetValue.test-d.d.ts +2 -0
  25. package/dist/__typetests__/types/path/internal/pathGetValue.test-d.d.ts.map +1 -0
  26. package/dist/__typetests__/types/path/internal/pathSetValue.test-d.d.ts +2 -0
  27. package/dist/__typetests__/types/path/internal/pathSetValue.test-d.d.ts.map +1 -0
  28. package/dist/__typetests__/types/path/internal/pathTuple.test-d.d.ts +2 -0
  29. package/dist/__typetests__/types/path/internal/pathTuple.test-d.d.ts.map +1 -0
  30. package/dist/__typetests__/types/path/internal/utils.test-d.d.ts +2 -0
  31. package/dist/__typetests__/types/path/internal/utils.test-d.d.ts.map +1 -0
  32. package/dist/__typetests__/types/path/lazy.test-d.d.ts +2 -0
  33. package/dist/__typetests__/types/path/lazy.test-d.d.ts.map +1 -0
  34. package/dist/__typetests__/types/path/value.test-d.d.ts +2 -0
  35. package/dist/__typetests__/types/path/value.test-d.d.ts.map +1 -0
  36. package/dist/__typetests__/types/util.test-d.d.ts +2 -0
  37. package/dist/__typetests__/types/util.test-d.d.ts.map +1 -0
  38. package/dist/__typetests__/utils/join.test-d.d.ts +2 -0
  39. package/dist/__typetests__/utils/join.test-d.d.ts.map +1 -0
  40. package/dist/__typetests__/utils/of.test-d.d.ts +2 -0
  41. package/dist/__typetests__/utils/of.test-d.d.ts.map +1 -0
  42. package/dist/controller.d.ts +1 -1
  43. package/dist/controller.d.ts.map +1 -1
  44. package/dist/index.cjs.js +1 -1
  45. package/dist/index.cjs.js.map +1 -1
  46. package/dist/index.esm.mjs +40 -11
  47. package/dist/index.esm.mjs.map +1 -1
  48. package/dist/index.umd.js +1 -1
  49. package/dist/index.umd.js.map +1 -1
  50. package/dist/logic/createFormControl.d.ts.map +1 -1
  51. package/dist/logic/getResolverOptions.d.ts +2 -2
  52. package/dist/logic/hasValidation.d.ts +1 -1
  53. package/dist/logic/validateField.d.ts.map +1 -1
  54. package/dist/types/controller.d.ts +6 -6
  55. package/dist/types/controller.d.ts.map +1 -1
  56. package/dist/types/fieldArray.d.ts +7 -9
  57. package/dist/types/fieldArray.d.ts.map +1 -1
  58. package/dist/types/form.d.ts +22 -23
  59. package/dist/types/form.d.ts.map +1 -1
  60. package/dist/types/path/auto.d.ts +76 -0
  61. package/dist/types/path/auto.d.ts.map +1 -0
  62. package/dist/types/path/branded.d.ts +61 -0
  63. package/dist/types/path/branded.d.ts.map +1 -0
  64. package/dist/types/path/index.d.ts +7 -3
  65. package/dist/types/path/index.d.ts.map +1 -1
  66. package/dist/types/path/internal/autoCompletePath.d.ts +173 -0
  67. package/dist/types/path/internal/autoCompletePath.d.ts.map +1 -0
  68. package/dist/types/path/internal/hasPath.d.ts +56 -0
  69. package/dist/types/path/internal/hasPath.d.ts.map +1 -0
  70. package/dist/types/path/internal/keys.d.ts +103 -0
  71. package/dist/types/path/internal/keys.d.ts.map +1 -0
  72. package/dist/types/path/internal/pathGetValue.d.ts +76 -0
  73. package/dist/types/path/internal/pathGetValue.d.ts.map +1 -0
  74. package/dist/types/path/internal/pathSetValue.d.ts +96 -0
  75. package/dist/types/path/internal/pathSetValue.d.ts.map +1 -0
  76. package/dist/types/path/internal/pathTuple.d.ts +73 -0
  77. package/dist/types/path/internal/pathTuple.d.ts.map +1 -0
  78. package/dist/types/path/internal/utils.d.ts +84 -0
  79. package/dist/types/path/internal/utils.d.ts.map +1 -0
  80. package/dist/types/path/lazy.d.ts +62 -0
  81. package/dist/types/path/lazy.d.ts.map +1 -0
  82. package/dist/types/path/pathString.d.ts +6 -0
  83. package/dist/types/path/pathString.d.ts.map +1 -0
  84. package/dist/types/path/value.d.ts +49 -0
  85. package/dist/types/path/value.d.ts.map +1 -0
  86. package/dist/types/utils.d.ts +11 -2
  87. package/dist/types/utils.d.ts.map +1 -1
  88. package/dist/types/validator.d.ts +2 -2
  89. package/dist/types/validator.d.ts.map +1 -1
  90. package/dist/useController.d.ts +2 -2
  91. package/dist/useController.d.ts.map +1 -1
  92. package/dist/useFieldArray.d.ts +1 -1
  93. package/dist/useFieldArray.d.ts.map +1 -1
  94. package/dist/useFormState.d.ts +2 -2
  95. package/dist/useFormState.d.ts.map +1 -1
  96. package/dist/useWatch.d.ts +6 -7
  97. package/dist/useWatch.d.ts.map +1 -1
  98. package/dist/utils/index.d.ts +3 -1
  99. package/dist/utils/index.d.ts.map +1 -1
  100. package/dist/utils/join.d.ts +16 -0
  101. package/dist/utils/join.d.ts.map +1 -0
  102. package/dist/utils/of.d.ts +13 -0
  103. package/dist/utils/of.d.ts.map +1 -0
  104. package/package.json +9 -9
  105. package/dist/types/path/common.d.ts +0 -316
  106. package/dist/types/path/common.d.ts.map +0 -1
  107. package/dist/types/path/eager.d.ts +0 -82
  108. package/dist/types/path/eager.d.ts.map +0 -1
  109. package/dist/utils/omitKeys.d.ts +0 -3
  110. package/dist/utils/omitKeys.d.ts.map +0 -1
@@ -227,7 +227,7 @@ function useController(props) {
227
227
  control,
228
228
  name,
229
229
  });
230
- const _registerProps = React.useRef(control.register(name, Object.assign(Object.assign({}, props.rules), { value })));
230
+ const _registerProps = React.useRef(control.register(name, Object.assign(Object.assign({}, props.rules), { value: value })));
231
231
  React.useEffect(() => {
232
232
  const updateMounted = (name, value) => {
233
233
  const field = get(control._fields, name);
@@ -247,7 +247,7 @@ function useController(props) {
247
247
  }, [name, control, isArrayField, shouldUnregister]);
248
248
  return {
249
249
  field: {
250
- name,
250
+ name: name,
251
251
  value,
252
252
  onChange: React.useCallback((event) => {
253
253
  _registerProps.current.onChange({
@@ -288,6 +288,37 @@ const Controller = (props) => props.render(useController(props));
288
288
  var appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria
289
289
  ? Object.assign(Object.assign({}, errors[name]), { types: Object.assign(Object.assign({}, (errors[name] && errors[name].types ? errors[name].types : {})), { [type]: message || true }) }) : {};
290
290
 
291
+ /**
292
+ * Function for joining two paths / path strings to a {@link TypedFieldPath}.
293
+ * @param path - base path
294
+ * @param childPath - the path which should be appended to the base path
295
+ * @example
296
+ * ```
297
+ * type Baz = { baz: string }
298
+ * type FooBarBaz = { foo: { bar: Baz }}
299
+ *
300
+ * const path: TypedFieldPath<FooBarBaz, Baz> = of('foo.bar')
301
+ * const joinedPath: TypedFieldPath<FooBar, string> = join(path, 'baz')
302
+ * ```
303
+ */
304
+ function join(path, childPath) {
305
+ return `${path}.${childPath}`;
306
+ }
307
+
308
+ /**
309
+ * Function for creating a {@link TypedFieldPath} from a path string.
310
+ * @param path - path string
311
+ * @example
312
+ * ```
313
+ * type FooBar = { foo: { bar: string }}
314
+ *
315
+ * const path: TypedFieldPath<FooBar, string> = of('foo.bar')
316
+ * ```
317
+ */
318
+ function of(path) {
319
+ return path;
320
+ }
321
+
291
322
  var isKey = (value) => /^\w*$/.test(value);
292
323
 
293
324
  var stringToPath = (input) => compact(input.replace(/["|']|\]/g, '').split(/\.|\[/));
@@ -434,7 +465,7 @@ var updateAt = (fieldValues, index, value) => {
434
465
 
435
466
  const useFieldArray = (props) => {
436
467
  const methods = useFormContext();
437
- const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;
468
+ const { control = methods.control, name, shouldUnregister } = props;
438
469
  const [fields, setFields] = React.useState(control._getFieldArray(name));
439
470
  const ids = React.useRef(control._getFieldArray(name).map(generateId));
440
471
  const _fieldIds = React.useRef(fields);
@@ -569,7 +600,7 @@ const useFieldArray = (props) => {
569
600
  (control._options.shouldUnregister || shouldUnregister) &&
570
601
  control.unregister(name);
571
602
  };
572
- }, [name, control, keyName, shouldUnregister]);
603
+ }, [name, control, shouldUnregister]);
573
604
  return {
574
605
  swap: React.useCallback(swap, [updateValues, name, control]),
575
606
  move: React.useCallback(move, [updateValues, name, control]),
@@ -579,7 +610,7 @@ const useFieldArray = (props) => {
579
610
  insert: React.useCallback(insert$1, [updateValues, name, control]),
580
611
  update: React.useCallback(update, [updateValues, name, control]),
581
612
  replace: React.useCallback(replace, [updateValues, name, control]),
582
- fields: React.useMemo(() => fields.map((field, index) => (Object.assign(Object.assign({}, field), { [keyName]: ids.current[index] || generateId() }))), [fields, keyName]),
613
+ fields: React.useMemo(() => fields.map((field, index) => (Object.assign(Object.assign({}, field), { id: ids.current[index] || generateId() }))), [fields]),
583
614
  };
584
615
  };
585
616
 
@@ -970,8 +1001,7 @@ var validateField = async (field, inputValue, validateAllFieldCriteria, shouldUs
970
1001
  const maxOutput = getValueAndMessage(max);
971
1002
  const minOutput = getValueAndMessage(min);
972
1003
  if (!isNaN(inputValue)) {
973
- const valueNumber = ref.valueAsNumber ||
974
- parseFloat(inputValue);
1004
+ const valueNumber = ref.valueAsNumber || +inputValue;
975
1005
  if (!isNullOrUndefined(maxOutput.value)) {
976
1006
  exceedMax = valueNumber > maxOutput.value;
977
1007
  }
@@ -1549,7 +1579,7 @@ function createFormControl(props = {}) {
1549
1579
  }
1550
1580
  _subjects.watch.next({});
1551
1581
  _subjects.state.next(Object.assign(Object.assign({}, _formState), (!options.keepDirty ? {} : { isDirty: _getDirty() })));
1552
- !options.keepIsValid && _updateValid();
1582
+ _proxyFormState.isValid && _updateValid();
1553
1583
  };
1554
1584
  const register = (name, options = {}) => {
1555
1585
  let field = get(_fields, name);
@@ -1733,8 +1763,7 @@ function createFormControl(props = {}) {
1733
1763
  watchAll: false,
1734
1764
  focus: '',
1735
1765
  };
1736
- _stateFlags.mount =
1737
- !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;
1766
+ _stateFlags.mount = !_proxyFormState.isValid;
1738
1767
  _stateFlags.watch = !!props.shouldUnregister;
1739
1768
  _subjects.state.next({
1740
1769
  submitCount: keepStateOptions.keepSubmitCount
@@ -1877,5 +1906,5 @@ function useForm(props = {}) {
1877
1906
  return _formControl.current;
1878
1907
  }
1879
1908
 
1880
- export { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };
1909
+ export { Controller, FormProvider, appendErrors, get, join, of, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };
1881
1910
  //# sourceMappingURL=index.esm.mjs.map