@bombillazo/rhf-plus 7.56.1-plus.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 (241) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/__typetest__/__fixtures__/index.d.ts +5 -0
  4. package/dist/__typetest__/__fixtures__/index.d.ts.map +1 -0
  5. package/dist/__typetest__/__fixtures__/pathString.d.ts +4 -0
  6. package/dist/__typetest__/__fixtures__/pathString.d.ts.map +1 -0
  7. package/dist/__typetest__/__fixtures__/traversable.d.ts +14 -0
  8. package/dist/__typetest__/__fixtures__/traversable.d.ts.map +1 -0
  9. package/dist/__typetest__/__fixtures__/tuple.d.ts +15 -0
  10. package/dist/__typetest__/__fixtures__/tuple.d.ts.map +1 -0
  11. package/dist/__typetest__/__fixtures__/type.d.ts +12 -0
  12. package/dist/__typetest__/__fixtures__/type.d.ts.map +1 -0
  13. package/dist/__typetest__/errors.test-d.d.ts +2 -0
  14. package/dist/__typetest__/errors.test-d.d.ts.map +1 -0
  15. package/dist/__typetest__/form.test-d.d.ts +11 -0
  16. package/dist/__typetest__/form.test-d.d.ts.map +1 -0
  17. package/dist/__typetest__/path/common.test-d.d.ts +2 -0
  18. package/dist/__typetest__/path/common.test-d.d.ts.map +1 -0
  19. package/dist/__typetest__/path/eager.test-d.d.ts +2 -0
  20. package/dist/__typetest__/path/eager.test-d.d.ts.map +1 -0
  21. package/dist/__typetest__/use-form-context.test-d.d.ts +2 -0
  22. package/dist/__typetest__/use-form-context.test-d.d.ts.map +1 -0
  23. package/dist/__typetest__/util.test-d.d.ts +2 -0
  24. package/dist/__typetest__/util.test-d.d.ts.map +1 -0
  25. package/dist/constants.d.ts +22 -0
  26. package/dist/constants.d.ts.map +1 -0
  27. package/dist/controller.d.ts +46 -0
  28. package/dist/controller.d.ts.map +1 -0
  29. package/dist/form.d.ts +27 -0
  30. package/dist/form.d.ts.map +1 -0
  31. package/dist/index.cjs.js +2 -0
  32. package/dist/index.cjs.js.map +1 -0
  33. package/dist/index.d.ts +12 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.esm.mjs +2764 -0
  36. package/dist/index.esm.mjs.map +1 -0
  37. package/dist/index.react-server.d.ts +3 -0
  38. package/dist/index.react-server.d.ts.map +1 -0
  39. package/dist/index.umd.js +2 -0
  40. package/dist/index.umd.js.map +1 -0
  41. package/dist/logic/appendErrors.d.ts +4 -0
  42. package/dist/logic/appendErrors.d.ts.map +1 -0
  43. package/dist/logic/createFormControl.d.ts +5 -0
  44. package/dist/logic/createFormControl.d.ts.map +1 -0
  45. package/dist/logic/generateId.d.ts +3 -0
  46. package/dist/logic/generateId.d.ts.map +1 -0
  47. package/dist/logic/generateWatchOutput.d.ts +4 -0
  48. package/dist/logic/generateWatchOutput.d.ts.map +1 -0
  49. package/dist/logic/getCheckboxValue.d.ts +7 -0
  50. package/dist/logic/getCheckboxValue.d.ts.map +1 -0
  51. package/dist/logic/getDirtyFields.d.ts +3 -0
  52. package/dist/logic/getDirtyFields.d.ts.map +1 -0
  53. package/dist/logic/getEventValue.d.ts +3 -0
  54. package/dist/logic/getEventValue.d.ts.map +1 -0
  55. package/dist/logic/getFieldValue.d.ts +3 -0
  56. package/dist/logic/getFieldValue.d.ts.map +1 -0
  57. package/dist/logic/getFieldValueAs.d.ts +4 -0
  58. package/dist/logic/getFieldValueAs.d.ts.map +1 -0
  59. package/dist/logic/getFocusFieldName.d.ts +4 -0
  60. package/dist/logic/getFocusFieldName.d.ts.map +1 -0
  61. package/dist/logic/getNodeParentName.d.ts +3 -0
  62. package/dist/logic/getNodeParentName.d.ts.map +1 -0
  63. package/dist/logic/getProxyFormState.d.ts +4 -0
  64. package/dist/logic/getProxyFormState.d.ts.map +1 -0
  65. package/dist/logic/getRadioValue.d.ts +7 -0
  66. package/dist/logic/getRadioValue.d.ts.map +1 -0
  67. package/dist/logic/getResolverOptions.d.ts +14 -0
  68. package/dist/logic/getResolverOptions.d.ts.map +1 -0
  69. package/dist/logic/getRuleValue.d.ts +4 -0
  70. package/dist/logic/getRuleValue.d.ts.map +1 -0
  71. package/dist/logic/getValidateError.d.ts +3 -0
  72. package/dist/logic/getValidateError.d.ts.map +1 -0
  73. package/dist/logic/getValidationModes.d.ts +4 -0
  74. package/dist/logic/getValidationModes.d.ts.map +1 -0
  75. package/dist/logic/getValueAndMessage.d.ts +7 -0
  76. package/dist/logic/getValueAndMessage.d.ts.map +1 -0
  77. package/dist/logic/hasPromiseValidation.d.ts +4 -0
  78. package/dist/logic/hasPromiseValidation.d.ts.map +1 -0
  79. package/dist/logic/hasValidation.d.ts +4 -0
  80. package/dist/logic/hasValidation.d.ts.map +1 -0
  81. package/dist/logic/index.d.ts +4 -0
  82. package/dist/logic/index.d.ts.map +1 -0
  83. package/dist/logic/isNameInFieldArray.d.ts +4 -0
  84. package/dist/logic/isNameInFieldArray.d.ts.map +1 -0
  85. package/dist/logic/isWatched.d.ts +4 -0
  86. package/dist/logic/isWatched.d.ts.map +1 -0
  87. package/dist/logic/iterateFieldsByAction.d.ts +4 -0
  88. package/dist/logic/iterateFieldsByAction.d.ts.map +1 -0
  89. package/dist/logic/schemaErrorLookup.d.ts +6 -0
  90. package/dist/logic/schemaErrorLookup.d.ts.map +1 -0
  91. package/dist/logic/shouldRenderFormState.d.ts +7 -0
  92. package/dist/logic/shouldRenderFormState.d.ts.map +1 -0
  93. package/dist/logic/shouldSubscribeByName.d.ts +3 -0
  94. package/dist/logic/shouldSubscribeByName.d.ts.map +1 -0
  95. package/dist/logic/skipValidation.d.ts +7 -0
  96. package/dist/logic/skipValidation.d.ts.map +1 -0
  97. package/dist/logic/unsetEmptyArray.d.ts +3 -0
  98. package/dist/logic/unsetEmptyArray.d.ts.map +1 -0
  99. package/dist/logic/updateFieldArrayRootError.d.ts +4 -0
  100. package/dist/logic/updateFieldArrayRootError.d.ts.map +1 -0
  101. package/dist/logic/validateField.d.ts +4 -0
  102. package/dist/logic/validateField.d.ts.map +1 -0
  103. package/dist/react-server.esm.mjs +1816 -0
  104. package/dist/react-server.esm.mjs.map +1 -0
  105. package/dist/types/controller.d.ts +60 -0
  106. package/dist/types/controller.d.ts.map +1 -0
  107. package/dist/types/errors.d.ts +36 -0
  108. package/dist/types/errors.d.ts.map +1 -0
  109. package/dist/types/events.d.ts +2 -0
  110. package/dist/types/events.d.ts.map +1 -0
  111. package/dist/types/fieldArray.d.ts +195 -0
  112. package/dist/types/fieldArray.d.ts.map +1 -0
  113. package/dist/types/fields.d.ts +31 -0
  114. package/dist/types/fields.d.ts.map +1 -0
  115. package/dist/types/form.d.ts +715 -0
  116. package/dist/types/form.d.ts.map +1 -0
  117. package/dist/types/index.d.ts +11 -0
  118. package/dist/types/index.d.ts.map +1 -0
  119. package/dist/types/path/common.d.ts +316 -0
  120. package/dist/types/path/common.d.ts.map +1 -0
  121. package/dist/types/path/eager.d.ts +122 -0
  122. package/dist/types/path/eager.d.ts.map +1 -0
  123. package/dist/types/path/index.d.ts +4 -0
  124. package/dist/types/path/index.d.ts.map +1 -0
  125. package/dist/types/resolvers.d.ts +20 -0
  126. package/dist/types/resolvers.d.ts.map +1 -0
  127. package/dist/types/utils.d.ts +72 -0
  128. package/dist/types/utils.d.ts.map +1 -0
  129. package/dist/types/validator.d.ts +43 -0
  130. package/dist/types/validator.d.ts.map +1 -0
  131. package/dist/useController.d.ts +27 -0
  132. package/dist/useController.d.ts.map +1 -0
  133. package/dist/useDeepEqualEffect.d.ts +3 -0
  134. package/dist/useDeepEqualEffect.d.ts.map +1 -0
  135. package/dist/useFieldArray.d.ts +40 -0
  136. package/dist/useFieldArray.d.ts.map +1 -0
  137. package/dist/useForm.d.ts +32 -0
  138. package/dist/useForm.d.ts.map +1 -0
  139. package/dist/useFormContext.d.ts +65 -0
  140. package/dist/useFormContext.d.ts.map +1 -0
  141. package/dist/useFormState.d.ts +33 -0
  142. package/dist/useFormState.d.ts.map +1 -0
  143. package/dist/useWatch.d.ts +100 -0
  144. package/dist/useWatch.d.ts.map +1 -0
  145. package/dist/utils/append.d.ts +3 -0
  146. package/dist/utils/append.d.ts.map +1 -0
  147. package/dist/utils/cloneObject.d.ts +2 -0
  148. package/dist/utils/cloneObject.d.ts.map +1 -0
  149. package/dist/utils/compact.d.ts +3 -0
  150. package/dist/utils/compact.d.ts.map +1 -0
  151. package/dist/utils/convertToArrayPayload.d.ts +3 -0
  152. package/dist/utils/convertToArrayPayload.d.ts.map +1 -0
  153. package/dist/utils/createId.d.ts +3 -0
  154. package/dist/utils/createId.d.ts.map +1 -0
  155. package/dist/utils/createSubject.d.ts +15 -0
  156. package/dist/utils/createSubject.d.ts.map +1 -0
  157. package/dist/utils/deepEqual.d.ts +2 -0
  158. package/dist/utils/deepEqual.d.ts.map +1 -0
  159. package/dist/utils/deepMerge.d.ts +2 -0
  160. package/dist/utils/deepMerge.d.ts.map +1 -0
  161. package/dist/utils/fillEmptyArray.d.ts +3 -0
  162. package/dist/utils/fillEmptyArray.d.ts.map +1 -0
  163. package/dist/utils/flatten.d.ts +3 -0
  164. package/dist/utils/flatten.d.ts.map +1 -0
  165. package/dist/utils/get.d.ts +3 -0
  166. package/dist/utils/get.d.ts.map +1 -0
  167. package/dist/utils/index.d.ts +5 -0
  168. package/dist/utils/index.d.ts.map +1 -0
  169. package/dist/utils/insert.d.ts +3 -0
  170. package/dist/utils/insert.d.ts.map +1 -0
  171. package/dist/utils/isBoolean.d.ts +3 -0
  172. package/dist/utils/isBoolean.d.ts.map +1 -0
  173. package/dist/utils/isCheckBoxInput.d.ts +4 -0
  174. package/dist/utils/isCheckBoxInput.d.ts.map +1 -0
  175. package/dist/utils/isDateObject.d.ts +3 -0
  176. package/dist/utils/isDateObject.d.ts.map +1 -0
  177. package/dist/utils/isEmptyObject.d.ts +4 -0
  178. package/dist/utils/isEmptyObject.d.ts.map +1 -0
  179. package/dist/utils/isFileInput.d.ts +4 -0
  180. package/dist/utils/isFileInput.d.ts.map +1 -0
  181. package/dist/utils/isFunction.d.ts +3 -0
  182. package/dist/utils/isFunction.d.ts.map +1 -0
  183. package/dist/utils/isHTMLElement.d.ts +3 -0
  184. package/dist/utils/isHTMLElement.d.ts.map +1 -0
  185. package/dist/utils/isKey.d.ts +3 -0
  186. package/dist/utils/isKey.d.ts.map +1 -0
  187. package/dist/utils/isMessage.d.ts +4 -0
  188. package/dist/utils/isMessage.d.ts.map +1 -0
  189. package/dist/utils/isMultipleSelect.d.ts +4 -0
  190. package/dist/utils/isMultipleSelect.d.ts.map +1 -0
  191. package/dist/utils/isNullOrUndefined.d.ts +3 -0
  192. package/dist/utils/isNullOrUndefined.d.ts.map +1 -0
  193. package/dist/utils/isObject.d.ts +4 -0
  194. package/dist/utils/isObject.d.ts.map +1 -0
  195. package/dist/utils/isPlainObject.d.ts +3 -0
  196. package/dist/utils/isPlainObject.d.ts.map +1 -0
  197. package/dist/utils/isPrimitive.d.ts +4 -0
  198. package/dist/utils/isPrimitive.d.ts.map +1 -0
  199. package/dist/utils/isRadioInput.d.ts +4 -0
  200. package/dist/utils/isRadioInput.d.ts.map +1 -0
  201. package/dist/utils/isRadioOrCheckbox.d.ts +4 -0
  202. package/dist/utils/isRadioOrCheckbox.d.ts.map +1 -0
  203. package/dist/utils/isRegex.d.ts +3 -0
  204. package/dist/utils/isRegex.d.ts.map +1 -0
  205. package/dist/utils/isString.d.ts +3 -0
  206. package/dist/utils/isString.d.ts.map +1 -0
  207. package/dist/utils/isUndefined.d.ts +3 -0
  208. package/dist/utils/isUndefined.d.ts.map +1 -0
  209. package/dist/utils/isWeb.d.ts +3 -0
  210. package/dist/utils/isWeb.d.ts.map +1 -0
  211. package/dist/utils/live.d.ts +4 -0
  212. package/dist/utils/live.d.ts.map +1 -0
  213. package/dist/utils/move.d.ts +3 -0
  214. package/dist/utils/move.d.ts.map +1 -0
  215. package/dist/utils/noop.d.ts +2 -0
  216. package/dist/utils/noop.d.ts.map +1 -0
  217. package/dist/utils/objectHasFunction.d.ts +3 -0
  218. package/dist/utils/objectHasFunction.d.ts.map +1 -0
  219. package/dist/utils/omit.d.ts +3 -0
  220. package/dist/utils/omit.d.ts.map +1 -0
  221. package/dist/utils/prepend.d.ts +3 -0
  222. package/dist/utils/prepend.d.ts.map +1 -0
  223. package/dist/utils/remove.d.ts +3 -0
  224. package/dist/utils/remove.d.ts.map +1 -0
  225. package/dist/utils/set.d.ts +4 -0
  226. package/dist/utils/set.d.ts.map +1 -0
  227. package/dist/utils/sleep.d.ts +3 -0
  228. package/dist/utils/sleep.d.ts.map +1 -0
  229. package/dist/utils/stringToPath.d.ts +3 -0
  230. package/dist/utils/stringToPath.d.ts.map +1 -0
  231. package/dist/utils/submit.d.ts +3 -0
  232. package/dist/utils/submit.d.ts.map +1 -0
  233. package/dist/utils/swap.d.ts +3 -0
  234. package/dist/utils/swap.d.ts.map +1 -0
  235. package/dist/utils/unset.d.ts +2 -0
  236. package/dist/utils/unset.d.ts.map +1 -0
  237. package/dist/utils/update.d.ts +3 -0
  238. package/dist/utils/update.d.ts.map +1 -0
  239. package/dist/utils/uuid.d.ts +3 -0
  240. package/dist/utils/uuid.d.ts.map +1 -0
  241. package/package.json +149 -0
@@ -0,0 +1,715 @@
1
+ import React from 'react';
2
+ import { VALIDATION_MODE } from '../constants';
3
+ import { Subject, Subscription } from '../utils/createSubject';
4
+ import { ErrorOption, FieldError, FieldErrors } from './errors';
5
+ import { EventType } from './events';
6
+ import { FieldArray } from './fieldArray';
7
+ import { FieldName, FieldRefs, FieldValue, FieldValues, InternalFieldName } from './fields';
8
+ import { FieldArrayPath, FieldPath, FieldPathValue, FieldPathValues } from './path';
9
+ import { Resolver } from './resolvers';
10
+ import { DeepMap, DeepPartial, Noop } from './utils';
11
+ import { RegisterOptions } from './validator';
12
+ declare const $NestedValue: unique symbol;
13
+ /**
14
+ * @deprecated to be removed in the next major version
15
+ */
16
+ export type NestedValue<TValue extends object = object> = {
17
+ [$NestedValue]: never;
18
+ } & TValue;
19
+ export type DefaultValues<TFieldValues> = TFieldValues extends AsyncDefaultValues<TFieldValues> ? DeepPartial<Awaited<TFieldValues>> : DeepPartial<TFieldValues>;
20
+ export type InternalNameSet = Set<InternalFieldName>;
21
+ export type ValidationMode = typeof VALIDATION_MODE;
22
+ export type Mode = keyof ValidationMode;
23
+ export type ValidationModeFlags = {
24
+ isOnSubmit: boolean;
25
+ isOnBlur: boolean;
26
+ isOnChange: boolean;
27
+ isOnAll: boolean;
28
+ isOnTouch: boolean;
29
+ };
30
+ export type CriteriaMode = 'firstError' | 'all';
31
+ export type SubmitHandler<T> = (data: T, event?: React.BaseSyntheticEvent) => unknown | Promise<unknown>;
32
+ export type FormSubmitHandler<TTransformedValues> = (payload: {
33
+ data: TTransformedValues;
34
+ event?: React.BaseSyntheticEvent;
35
+ formData: FormData;
36
+ formDataJson: string;
37
+ method?: 'post' | 'put' | 'delete';
38
+ }) => unknown | Promise<unknown>;
39
+ export type SubmitErrorHandler<TFieldValues extends FieldValues> = (errors: FieldErrors<TFieldValues>, event?: React.BaseSyntheticEvent) => unknown | Promise<unknown>;
40
+ export type SetValueConfig = Partial<{
41
+ shouldValidate: boolean;
42
+ shouldDirty: boolean;
43
+ shouldTouch: boolean;
44
+ }>;
45
+ export type TriggerConfig = Partial<{
46
+ shouldFocus: boolean;
47
+ }>;
48
+ export type ChangeHandler = (event: {
49
+ target: any;
50
+ type?: any;
51
+ }) => Promise<void | boolean>;
52
+ export type DelayCallback = (wait: number) => void;
53
+ type AsyncDefaultValues<TFieldValues> = (payload?: unknown) => Promise<TFieldValues>;
54
+ export type UseFormProps<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues> = Partial<{
55
+ mode: Mode;
56
+ disabled: boolean;
57
+ reValidateMode: Exclude<Mode, 'onTouched' | 'all'>;
58
+ defaultValues: DefaultValues<TFieldValues> | AsyncDefaultValues<TFieldValues>;
59
+ values: TFieldValues;
60
+ errors: FieldErrors<TFieldValues>;
61
+ resetOptions: Parameters<UseFormReset<TFieldValues>>[1];
62
+ resolver: Resolver<TFieldValues, TContext, TTransformedValues>;
63
+ context: TContext;
64
+ shouldFocusError: boolean;
65
+ shouldUnregister: boolean;
66
+ shouldUseNativeValidation: boolean;
67
+ progressive: boolean;
68
+ criteriaMode: CriteriaMode;
69
+ delayError: number;
70
+ id: string;
71
+ formControl?: Omit<UseFormReturn<TFieldValues, TContext, TTransformedValues>, 'formState'>;
72
+ }>;
73
+ export type FieldNamesMarkedBoolean<TFieldValues extends FieldValues> = DeepMap<DeepPartial<TFieldValues>, boolean>;
74
+ export type FormStateProxy<TFieldValues extends FieldValues = FieldValues> = {
75
+ isDirty: boolean;
76
+ isValidating: boolean;
77
+ dirtyFields: FieldNamesMarkedBoolean<TFieldValues>;
78
+ touchedFields: FieldNamesMarkedBoolean<TFieldValues>;
79
+ validatingFields: FieldNamesMarkedBoolean<TFieldValues>;
80
+ errors: boolean;
81
+ isValid: boolean;
82
+ };
83
+ export type ReadFormState = {
84
+ [K in keyof FormStateProxy]: boolean | 'all';
85
+ } & {
86
+ values?: boolean;
87
+ };
88
+ export type FormState<TFieldValues extends FieldValues> = {
89
+ isDirty: boolean;
90
+ isLoading: boolean;
91
+ isSubmitted: boolean;
92
+ isSubmitSuccessful: boolean;
93
+ isSubmitting: boolean;
94
+ isValidating: boolean;
95
+ isValid: boolean;
96
+ disabled: boolean;
97
+ submitCount: number;
98
+ defaultValues?: undefined | Readonly<DeepPartial<TFieldValues>>;
99
+ dirtyFields: Partial<Readonly<FieldNamesMarkedBoolean<TFieldValues>>>;
100
+ touchedFields: Partial<Readonly<FieldNamesMarkedBoolean<TFieldValues>>>;
101
+ validatingFields: Partial<Readonly<FieldNamesMarkedBoolean<TFieldValues>>>;
102
+ errors: FieldErrors<TFieldValues>;
103
+ isReady: boolean;
104
+ };
105
+ export type KeepStateOptions = Partial<{
106
+ keepDirtyValues: boolean;
107
+ keepErrors: boolean;
108
+ keepDirty: boolean;
109
+ keepValues: boolean;
110
+ keepDefaultValues: boolean;
111
+ keepIsSubmitted: boolean;
112
+ keepIsSubmitSuccessful: boolean;
113
+ keepTouched: boolean;
114
+ keepIsValidating: boolean;
115
+ keepIsValid: boolean;
116
+ keepSubmitCount: boolean;
117
+ }>;
118
+ export type SetFieldValue<TFieldValues extends FieldValues> = FieldValue<TFieldValues>;
119
+ export type RefCallBack = (instance: any) => void;
120
+ export type UseFormRegisterReturn<TFieldName extends InternalFieldName = InternalFieldName> = {
121
+ onChange: ChangeHandler;
122
+ onBlur: ChangeHandler;
123
+ ref: RefCallBack;
124
+ name: TFieldName;
125
+ min?: string | number;
126
+ max?: string | number;
127
+ maxLength?: number;
128
+ minLength?: number;
129
+ pattern?: string;
130
+ required?: boolean;
131
+ disabled?: boolean;
132
+ };
133
+ /**
134
+ * Register field into hook form with or without the actual DOM ref. You can invoke register anywhere in the component including at `useEffect`.
135
+ *
136
+ * @remarks
137
+ * [API](https://react-hook-form.com/docs/useform/register) • [Demo](https://codesandbox.io/s/react-hook-form-register-ts-ip2j3) • [Video](https://www.youtube.com/watch?v=JFIpCoajYkA)
138
+ *
139
+ * @param name - the path name to the form field value, name is required and unique
140
+ * @param options - register options include validation, disabled, unregister, value as and dependent validation
141
+ *
142
+ * @returns onChange, onBlur, name, ref, and native contribute attribute if browser validation is enabled.
143
+ *
144
+ * @example
145
+ * ```tsx
146
+ * // Register HTML native input
147
+ * <input {...register("input")} />
148
+ * <select {...register("select")} />
149
+ *
150
+ * // Register options
151
+ * <textarea {...register("textarea", { required: "This is required.", maxLength: 20 })} />
152
+ * <input type="number" {...register("name2", { valueAsNumber: true })} />
153
+ * <input {...register("name3", { deps: ["name2"] })} />
154
+ *
155
+ * // Register custom field at useEffect
156
+ * useEffect(() => {
157
+ * register("name4");
158
+ * register("name5", { value: "hiddenValue" });
159
+ * }, [register])
160
+ *
161
+ * // Register without ref
162
+ * const { onChange, onBlur, name } = register("name6")
163
+ * <input onChange={onChange} onBlur={onBlur} name={name} />
164
+ * ```
165
+ */
166
+ export type UseFormRegister<TFieldValues extends FieldValues> = <TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(name: TFieldName, options?: RegisterOptions<TFieldValues, TFieldName>) => UseFormRegisterReturn<TFieldName>;
167
+ export type SetFocusOptions = Partial<{
168
+ shouldSelect: boolean;
169
+ }>;
170
+ /**
171
+ * Set focus on a registered field. You can start to invoke this method after all fields are mounted to the DOM.
172
+ *
173
+ * @remarks
174
+ * [API](https://react-hook-form.com/docs/useform/setfocus) • [Demo](https://codesandbox.io/s/setfocus-rolus)
175
+ *
176
+ * @param name - the path name to the form field value.
177
+ * @param options - input focus behavior options
178
+ *
179
+ * @example
180
+ * ```tsx
181
+ * useEffect(() => {
182
+ * setFocus("name");
183
+ * }, [setFocus])
184
+ * // shouldSelect allows to select input's content on focus
185
+ * <button onClick={() => setFocus("name", { shouldSelect: true })}>Focus</button>
186
+ * ```
187
+ */
188
+ export type UseFormSetFocus<TFieldValues extends FieldValues> = <TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(name: TFieldName, options?: SetFocusOptions) => void;
189
+ export type UseFormGetValues<TFieldValues extends FieldValues> = {
190
+ /**
191
+ * Get the entire form values when no argument is supplied to this function.
192
+ *
193
+ * @remarks
194
+ * [API](https://react-hook-form.com/docs/useform/getvalues) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-getvalues-txsfg)
195
+ *
196
+ * @returns form values
197
+ *
198
+ * @example
199
+ * ```tsx
200
+ * <button onClick={() => getValues()}>getValues</button>
201
+ *
202
+ * <input {...register("name", {
203
+ * validate: (value, formValues) => formValues.otherField === value;
204
+ * })} />
205
+ * ```
206
+ */
207
+ (): TFieldValues;
208
+ /**
209
+ * Get a single field value.
210
+ *
211
+ * @remarks
212
+ * [API](https://react-hook-form.com/docs/useform/getvalues) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-getvalues-txsfg)
213
+ *
214
+ * @param name - the path name to the form field value.
215
+ *
216
+ * @returns the single field value
217
+ *
218
+ * @example
219
+ * ```tsx
220
+ * <button onClick={() => getValues("name")}>getValues</button>
221
+ *
222
+ * <input {...register("name", {
223
+ * validate: () => getValues('otherField') === "test";
224
+ * })} />
225
+ * ```
226
+ */
227
+ <TFieldName extends FieldPath<TFieldValues>>(name: TFieldName): FieldPathValue<TFieldValues, TFieldName>;
228
+ /**
229
+ * Get an array of field values.
230
+ *
231
+ * @remarks
232
+ * [API](https://react-hook-form.com/docs/useform/getvalues) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-getvalues-txsfg)
233
+ *
234
+ * @param names - an array of field names
235
+ *
236
+ * @returns An array of field values
237
+ *
238
+ * @example
239
+ * ```tsx
240
+ * <button onClick={() => getValues(["name", "name1"])}>getValues</button>
241
+ *
242
+ * <input {...register("name", {
243
+ * validate: () => getValues(["fieldA", "fieldB"]).includes("test");
244
+ * })} />
245
+ * ```
246
+ */
247
+ <TFieldNames extends FieldPath<TFieldValues>[]>(names: readonly [...TFieldNames]): [...FieldPathValues<TFieldValues, TFieldNames>];
248
+ };
249
+ /**
250
+ * This method will return individual field states. It will be useful when you are trying to retrieve the nested value field state in a typesafe approach.
251
+ *
252
+ * @remarks
253
+ * [API](https://react-hook-form.com/docs/useform/getfieldstate) • [Demo](https://codesandbox.io/s/getfieldstate-jvekk)
254
+ *
255
+ * @param name - the path name to the form field value.
256
+ *
257
+ * @returns invalid, isDirty, isTouched and error object
258
+ *
259
+ * @example
260
+ * ```tsx
261
+ * // those formState has to be subscribed
262
+ * const { formState: { dirtyFields, errors, touchedFields } } = formState();
263
+ * getFieldState('name')
264
+ * // Get field state when form state is not subscribed yet
265
+ * getFieldState('name', formState)
266
+ *
267
+ * // It's ok to combine with useFormState
268
+ * const formState = useFormState();
269
+ * getFieldState('name')
270
+ * getFieldState('name', formState)
271
+ * ```
272
+ */
273
+ export type UseFormGetFieldState<TFieldValues extends FieldValues> = <TFieldName extends FieldPath<TFieldValues>>(name: TFieldName, formState?: FormState<TFieldValues>) => {
274
+ invalid: boolean;
275
+ isDirty: boolean;
276
+ isTouched: boolean;
277
+ isValidating: boolean;
278
+ error?: FieldError;
279
+ };
280
+ /**
281
+ * This method will allow you to subscribe to formState without component render
282
+ *
283
+ * @remarks
284
+ * [API](https://react-hook-form.com/docs/useform/subscribe) • [Demo](https://codesandbox.io/s/subscribe)
285
+ *
286
+ * @param options - subscription options on which formState subscribe to
287
+ *
288
+ * @example
289
+ * ```tsx
290
+ const { subscribe } = useForm()
291
+
292
+ useEffect(() => {
293
+ subscribe({
294
+ formState: { isDirty: true },
295
+ callback: () => {}
296
+ })
297
+ })
298
+ * ```
299
+ */
300
+ export type UseFromSubscribe<TFieldValues extends FieldValues> = (payload: {
301
+ name?: string;
302
+ formState?: Partial<ReadFormState>;
303
+ callback: (data: Partial<FormState<TFieldValues>> & {
304
+ values: TFieldValues;
305
+ }) => void;
306
+ exact?: boolean;
307
+ }) => () => void;
308
+ export type UseFormWatch<TFieldValues extends FieldValues> = {
309
+ /**
310
+ * Watch and subscribe to the entire form update/change based on onChange and re-render at the useForm.
311
+ *
312
+ * @remarks
313
+ * [API](https://react-hook-form.com/docs/useform/watch) • [Demo](https://codesandbox.io/s/react-hook-form-watch-v7-ts-8et1d) • [Video](https://www.youtube.com/watch?v=3qLd69WMqKk)
314
+ *
315
+ * @returns return the entire form values
316
+ *
317
+ * @example
318
+ * ```tsx
319
+ * const formValues = watch();
320
+ * ```
321
+ */
322
+ (): TFieldValues;
323
+ /**
324
+ * Watch and subscribe to an array of fields used outside of render.
325
+ *
326
+ * @remarks
327
+ * [API](https://react-hook-form.com/docs/useform/watch) • [Demo](https://codesandbox.io/s/react-hook-form-watch-v7-ts-8et1d) • [Video](https://www.youtube.com/watch?v=3qLd69WMqKk)
328
+ *
329
+ * @param names - an array of field names
330
+ * @param defaultValue - defaultValues for the entire form
331
+ *
332
+ * @returns return an array of field values
333
+ *
334
+ * @example
335
+ * ```tsx
336
+ * const [name, name1] = watch(["name", "name1"]);
337
+ * ```
338
+ */
339
+ <TFieldNames extends readonly FieldPath<TFieldValues>[]>(names: readonly [...TFieldNames], defaultValue?: DeepPartial<TFieldValues>): FieldPathValues<TFieldValues, TFieldNames>;
340
+ /**
341
+ * Watch and subscribe to a single field used outside of render.
342
+ *
343
+ * @remarks
344
+ * [API](https://react-hook-form.com/docs/useform/watch) • [Demo](https://codesandbox.io/s/react-hook-form-watch-v7-ts-8et1d) • [Video](https://www.youtube.com/watch?v=3qLd69WMqKk)
345
+ *
346
+ * @param name - the path name to the form field value.
347
+ * @param defaultValue - defaultValues for the entire form
348
+ *
349
+ * @returns return the single field value
350
+ *
351
+ * @example
352
+ * ```tsx
353
+ * const name = watch("name");
354
+ * ```
355
+ */
356
+ <TFieldName extends FieldPath<TFieldValues>>(name: TFieldName, defaultValue?: FieldPathValue<TFieldValues, TFieldName>): FieldPathValue<TFieldValues, TFieldName>;
357
+ /**
358
+ * Subscribe to field update/change without trigger re-render
359
+ *
360
+ * @remarks
361
+ * [API](https://react-hook-form.com/docs/useform/watch) • [Demo](https://codesandbox.io/s/react-hook-form-watch-v7-ts-8et1d) • [Video](https://www.youtube.com/watch?v=3qLd69WMqKk)
362
+ *
363
+ * @param callback - call back function to subscribe all fields change and return unsubscribe function
364
+ * @param defaultValues - defaultValues for the entire form
365
+ *
366
+ * @returns unsubscribe function
367
+ *
368
+ * @example
369
+ * ```tsx
370
+ * useEffect(() => {
371
+ * const { unsubscribe } = watch((value) => {
372
+ * console.log(value);
373
+ * });
374
+ * return () => unsubscribe();
375
+ * }, [watch])
376
+ * ```
377
+ */
378
+ (callback: WatchObserver<TFieldValues>, defaultValues?: DeepPartial<TFieldValues>): Subscription;
379
+ };
380
+ /**
381
+ * Trigger field or form validation
382
+ *
383
+ * @remarks
384
+ * [API](https://react-hook-form.com/docs/useform/trigger) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-triggervalidation-forked-xs7hl) • [Video](https://www.youtube.com/watch?v=-bcyJCDjksE)
385
+ *
386
+ * @param name - provide empty argument will trigger the entire form validation, an array of field names will validate an array of fields, and a single field name will only trigger that field's validation.
387
+ * @param options - should focus on the error field
388
+ *
389
+ * @returns validation result
390
+ *
391
+ * @example
392
+ * ```tsx
393
+ * useEffect(() => {
394
+ * trigger();
395
+ * }, [trigger])
396
+ *
397
+ * <button onClick={async () => {
398
+ * const result = await trigger(); // result will be a boolean value
399
+ * }}>
400
+ * trigger
401
+ * </button>
402
+ * ```
403
+ */
404
+ export type UseFormTrigger<TFieldValues extends FieldValues> = (name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[], options?: TriggerConfig) => Promise<boolean>;
405
+ /**
406
+ * Clear the entire form errors.
407
+ *
408
+ * @remarks
409
+ * [API](https://react-hook-form.com/docs/useform/clearerrors) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-clearerrors-w3ymx)
410
+ *
411
+ * @param name - the path name to the form field value.
412
+ *
413
+ * @example
414
+ * Clear all errors
415
+ * ```tsx
416
+ * clearErrors(); // clear the entire form error
417
+ * clearErrors(["name", "name1"]) // clear an array of fields' error
418
+ * clearErrors("name2"); // clear a single field error
419
+ * ```
420
+ */
421
+ export type UseFormClearErrors<TFieldValues extends FieldValues> = (name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[] | `root.${string}` | 'root') => void;
422
+ /**
423
+ * Set a single field value, or a group of fields value.
424
+ *
425
+ * @remarks
426
+ * [API](https://react-hook-form.com/docs/useform/setvalue) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-setvalue-8z9hx) • [Video](https://www.youtube.com/watch?v=qpv51sCH3fI)
427
+ *
428
+ * @param name - the path name to the form field value.
429
+ * @param value - field value
430
+ * @param options - should validate or update form state
431
+ *
432
+ * @example
433
+ * ```tsx
434
+ * // Update a single field
435
+ * setValue('name', 'value', {
436
+ * shouldValidate: true, // trigger validation
437
+ * shouldTouch: true, // update touched fields form state
438
+ * shouldDirty: true, // update dirty and dirty fields form state
439
+ * });
440
+ *
441
+ * // Update a group fields
442
+ * setValue('root', {
443
+ * a: 'test', // setValue('root.a', 'data')
444
+ * b: 'test1', // setValue('root.b', 'data')
445
+ * });
446
+ *
447
+ * // Update a nested object field
448
+ * setValue('select', { label: 'test', value: 'Test' });
449
+ * ```
450
+ */
451
+ export type UseFormSetValue<TFieldValues extends FieldValues> = <TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(name: TFieldName, value: FieldPathValue<TFieldValues, TFieldName>, options?: SetValueConfig) => void;
452
+ /**
453
+ * Set an error for the field. When set an error which is not associated to a field then manual `clearErrors` invoke is required.
454
+ *
455
+ * @remarks
456
+ * [API](https://react-hook-form.com/docs/useform/seterror) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-seterror-nfxxu) • [Video](https://www.youtube.com/watch?v=raMqvE0YyIY)
457
+ *
458
+ * @param name - the path name to the form field value.
459
+ * @param error - an error object which contains type and optional message
460
+ * @param options - whether or not to focus on the field
461
+ *
462
+ * @example
463
+ * ```tsx
464
+ * // when the error is not associated with any fields, `clearError` will need to invoke to clear the error
465
+ * const onSubmit = () => setError("serverError", { type: "server", message: "Error occurred"})
466
+ *
467
+ * <button onClick={() => setError("name", { type: "min" })} />
468
+ *
469
+ * // focus on the input after setting the error
470
+ * <button onClick={() => setError("name", { type: "max" }, { shouldFocus: true })} />
471
+ * ```
472
+ */
473
+ export type UseFormSetError<TFieldValues extends FieldValues> = (name: FieldPath<TFieldValues> | `root.${string}` | 'root', error: ErrorOption, options?: {
474
+ shouldFocus: boolean;
475
+ }) => void;
476
+ /**
477
+ * Unregister a field reference and remove its value.
478
+ *
479
+ * @remarks
480
+ * [API](https://react-hook-form.com/docs/useform/unregister) • [Demo](https://codesandbox.io/s/react-hook-form-unregister-4k2ey) • [Video](https://www.youtube.com/watch?v=TM99g_NW5Gk&feature=emb_imp_woyt)
481
+ *
482
+ * @param name - the path name to the form field value.
483
+ * @param options - keep form state options
484
+ *
485
+ * @example
486
+ * ```tsx
487
+ * register("name", { required: true })
488
+ *
489
+ * <button onClick={() => unregister("name")} />
490
+ * // there are various keep options to retain formState
491
+ * <button onClick={() => unregister("name", { keepErrors: true })} />
492
+ * ```
493
+ */
494
+ export type UseFormUnregister<TFieldValues extends FieldValues> = (name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[], options?: Omit<KeepStateOptions, 'keepIsSubmitted' | 'keepSubmitCount' | 'keepValues' | 'keepDefaultValues' | 'keepErrors'> & {
495
+ keepValue?: boolean;
496
+ keepDefaultValue?: boolean;
497
+ keepError?: boolean;
498
+ }) => void;
499
+ /**
500
+ * Validate the entire form. Handle submit and error callback.
501
+ *
502
+ * @remarks
503
+ * [API](https://react-hook-form.com/docs/useform/handlesubmit) • [Demo](https://codesandbox.io/s/react-hook-form-handlesubmit-ts-v7-lcrtu) • [Video](https://www.youtube.com/watch?v=KzcPKB9SOEk)
504
+ *
505
+ * @param onValid - callback function invoked after form pass validation
506
+ * @param onInvalid - callback function invoked when form failed validation
507
+ *
508
+ * @returns callback - return callback function
509
+ *
510
+ * @example
511
+ * ```tsx
512
+ * const onSubmit = (data) => console.log(data);
513
+ * const onError = (error) => console.log(error);
514
+ *
515
+ * <form onSubmit={handleSubmit(onSubmit, onError)} />
516
+ * ```
517
+ */
518
+ export type UseFormHandleSubmit<TFieldValues extends FieldValues, TTransformedValues = TFieldValues> = (onValid: SubmitHandler<TTransformedValues>, onInvalid?: SubmitErrorHandler<TFieldValues>) => (e?: React.BaseSyntheticEvent) => Promise<void>;
519
+ /**
520
+ * Reset a field state and reference.
521
+ *
522
+ * @remarks
523
+ * [API](https://react-hook-form.com/docs/useform/resetfield) • [Demo](https://codesandbox.io/s/priceless-firefly-d0kuv) • [Video](https://www.youtube.com/watch?v=IdLFcNaEFEo)
524
+ *
525
+ * @param name - the path name to the form field value.
526
+ * @param options - keep form state options
527
+ *
528
+ * @example
529
+ * ```tsx
530
+ * <input {...register("firstName", { required: true })} />
531
+ * <button type="button" onClick={() => resetField("firstName"))}>Reset</button>
532
+ * ```
533
+ */
534
+ export type UseFormResetField<TFieldValues extends FieldValues> = <TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(name: TFieldName, options?: Partial<{
535
+ keepDirty: boolean;
536
+ keepTouched: boolean;
537
+ keepError: boolean;
538
+ defaultValue: FieldPathValue<TFieldValues, TFieldName>;
539
+ }>) => void;
540
+ type ResetAction<TFieldValues> = (formValues: TFieldValues) => TFieldValues;
541
+ /**
542
+ * Reset at the entire form state.
543
+ *
544
+ * @remarks
545
+ * [API](https://react-hook-form.com/docs/useform/reset) • [Demo](https://codesandbox.io/s/react-hook-form-reset-v7-ts-pu901) • [Video](https://www.youtube.com/watch?v=qmCLBjyPwVk)
546
+ *
547
+ * @param values - the entire form values to be reset
548
+ * @param keepStateOptions - keep form state options
549
+ *
550
+ * @example
551
+ * ```tsx
552
+ * useEffect(() => {
553
+ * // reset the entire form after component mount or form defaultValues is ready
554
+ * reset({
555
+ * fieldA: "test"
556
+ * fieldB: "test"
557
+ * });
558
+ * }, [reset])
559
+ *
560
+ * // reset by combine with existing form values
561
+ * reset({
562
+ * ...getValues(),
563
+ * fieldB: "test"
564
+ *});
565
+ *
566
+ * // reset and keep form state
567
+ * reset({
568
+ * ...getValues(),
569
+ *}, {
570
+ * keepErrors: true,
571
+ * keepDirty: true
572
+ *});
573
+ * ```
574
+ */
575
+ export type UseFormReset<TFieldValues extends FieldValues> = (values?: DefaultValues<TFieldValues> | TFieldValues | ResetAction<TFieldValues>, keepStateOptions?: KeepStateOptions) => void;
576
+ export type WatchInternal<TFieldValues> = (fieldNames?: InternalFieldName | InternalFieldName[], defaultValue?: DeepPartial<TFieldValues>, isMounted?: boolean, isGlobal?: boolean) => FieldPathValue<FieldValues, InternalFieldName> | FieldPathValues<FieldValues, InternalFieldName[]>;
577
+ export type GetIsDirty = <TName extends InternalFieldName, TData>(name?: TName, data?: TData) => boolean;
578
+ export type FormStateSubjectRef<TFieldValues extends FieldValues> = Subject<Partial<FormState<TFieldValues>> & {
579
+ name?: InternalFieldName;
580
+ values?: TFieldValues;
581
+ type?: EventType;
582
+ }>;
583
+ export type Subjects<TFieldValues extends FieldValues = FieldValues> = {
584
+ array: Subject<{
585
+ name?: InternalFieldName;
586
+ values?: FieldValues;
587
+ }>;
588
+ state: FormStateSubjectRef<TFieldValues>;
589
+ };
590
+ export type Names = {
591
+ mount: InternalNameSet;
592
+ unMount: InternalNameSet;
593
+ disabled: InternalNameSet;
594
+ array: InternalNameSet;
595
+ watch: InternalNameSet;
596
+ focus?: InternalFieldName;
597
+ watchAll?: boolean;
598
+ };
599
+ export type BatchFieldArrayUpdate = <T extends Function, TFieldValues extends FieldValues, TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>>(name: InternalFieldName, updatedFieldArrayValues?: Partial<FieldArray<TFieldValues, TFieldArrayName>>[], method?: T, args?: Partial<{
600
+ argA: unknown;
601
+ argB: unknown;
602
+ }>, shouldSetValue?: boolean, shouldUpdateFieldsAndErrors?: boolean) => void;
603
+ export type FromSubscribe<TFieldValues extends FieldValues> = (payload: {
604
+ name?: string;
605
+ formState?: Partial<ReadFormState>;
606
+ callback: (data: Partial<FormState<TFieldValues>> & {
607
+ values: TFieldValues;
608
+ }) => void;
609
+ exact?: boolean;
610
+ reRenderRoot?: boolean;
611
+ }) => () => void;
612
+ export type Control<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues> = {
613
+ _subjects: Subjects<TFieldValues>;
614
+ _removeUnmounted: Noop;
615
+ _names: Names;
616
+ _state: {
617
+ mount: boolean;
618
+ action: boolean;
619
+ watch: boolean;
620
+ };
621
+ _reset: UseFormReset<TFieldValues>;
622
+ _options: UseFormProps<TFieldValues, TContext, TTransformedValues>;
623
+ _getDirty: GetIsDirty;
624
+ _resetDefaultValues: Noop;
625
+ _formState: FormState<TFieldValues>;
626
+ _setValid: (shouldUpdateValid?: boolean) => void;
627
+ _fields: FieldRefs;
628
+ _formValues: FieldValues;
629
+ _proxyFormState: ReadFormState;
630
+ _defaultValues: Partial<DefaultValues<TFieldValues>>;
631
+ _getWatch: WatchInternal<TFieldValues>;
632
+ _setFieldArray: BatchFieldArrayUpdate;
633
+ _getFieldArray: <TFieldArrayValues>(name: InternalFieldName) => Partial<TFieldArrayValues>[];
634
+ _setErrors: (errors: FieldErrors<TFieldValues>) => void;
635
+ _setDisabledField: (props: {
636
+ disabled?: boolean;
637
+ name: FieldName<any>;
638
+ }) => void;
639
+ _runSchema: (names: InternalFieldName[]) => Promise<{
640
+ errors: FieldErrors;
641
+ }>;
642
+ _disableForm: (disabled?: boolean) => void;
643
+ _subscribe: FromSubscribe<TFieldValues>;
644
+ register: UseFormRegister<TFieldValues>;
645
+ handleSubmit: UseFormHandleSubmit<TFieldValues, TTransformedValues>;
646
+ unregister: UseFormUnregister<TFieldValues>;
647
+ getFieldState: UseFormGetFieldState<TFieldValues>;
648
+ setError: UseFormSetError<TFieldValues>;
649
+ };
650
+ export type WatchObserver<TFieldValues extends FieldValues> = (value: DeepPartial<TFieldValues>, info: {
651
+ name?: FieldPath<TFieldValues>;
652
+ type?: EventType;
653
+ values?: unknown;
654
+ }) => void;
655
+ export type UseFormReturn<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues> = {
656
+ watch: UseFormWatch<TFieldValues>;
657
+ getValues: UseFormGetValues<TFieldValues>;
658
+ getFieldState: UseFormGetFieldState<TFieldValues>;
659
+ setError: UseFormSetError<TFieldValues>;
660
+ clearErrors: UseFormClearErrors<TFieldValues>;
661
+ setValue: UseFormSetValue<TFieldValues>;
662
+ trigger: UseFormTrigger<TFieldValues>;
663
+ formState: FormState<TFieldValues>;
664
+ resetField: UseFormResetField<TFieldValues>;
665
+ reset: UseFormReset<TFieldValues>;
666
+ handleSubmit: UseFormHandleSubmit<TFieldValues, TTransformedValues>;
667
+ unregister: UseFormUnregister<TFieldValues>;
668
+ control: Control<TFieldValues, TContext, TTransformedValues>;
669
+ register: UseFormRegister<TFieldValues>;
670
+ setFocus: UseFormSetFocus<TFieldValues>;
671
+ id: string;
672
+ submit: () => void;
673
+ subscribe: UseFromSubscribe<TFieldValues>;
674
+ };
675
+ export type UseFormStateProps<TFieldValues extends FieldValues, TTransformedValues = TFieldValues> = Partial<{
676
+ control?: Control<TFieldValues, any, TTransformedValues>;
677
+ disabled?: boolean;
678
+ name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[];
679
+ exact?: boolean;
680
+ }>;
681
+ export type UseFormStateReturn<TFieldValues extends FieldValues> = FormState<TFieldValues>;
682
+ export type UseWatchProps<TFieldValues extends FieldValues = FieldValues> = {
683
+ defaultValue?: unknown;
684
+ disabled?: boolean;
685
+ name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[];
686
+ control?: Control<TFieldValues>;
687
+ exact?: boolean;
688
+ };
689
+ export type FormProviderProps<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues> = {
690
+ children: React.ReactNode | React.ReactNode[];
691
+ } & UseFormReturn<TFieldValues, TContext, TTransformedValues>;
692
+ export type FormProps<TFieldValues extends FieldValues, TTransformedValues = TFieldValues> = Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onError' | 'onSubmit'> & Partial<{
693
+ control: Control<TFieldValues, any, TTransformedValues>;
694
+ headers: Record<string, string>;
695
+ validateStatus: (status: number) => boolean;
696
+ onError: ({ response, error, }: {
697
+ response: Response;
698
+ error?: undefined;
699
+ } | {
700
+ response?: undefined;
701
+ error: unknown;
702
+ }) => void;
703
+ onSuccess: ({ response }: {
704
+ response: Response;
705
+ }) => void;
706
+ onSubmit: FormSubmitHandler<TTransformedValues>;
707
+ method: 'post' | 'put' | 'delete';
708
+ children: React.ReactNode | React.ReactNode[];
709
+ render: (props: {
710
+ submit: (e?: React.FormEvent) => void;
711
+ }) => React.ReactNode | React.ReactNode[];
712
+ encType: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain' | 'application/json';
713
+ }>;
714
+ export {};
715
+ //# sourceMappingURL=form.d.ts.map