react-hook-form 7.43.6 → 7.43.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/controller.server.test.d.ts +1 -1
- package/dist/__tests__/controller.test.d.ts +1 -1
- package/dist/__tests__/logic/validateField.test.d.ts +1 -1
- package/dist/__tests__/type.test.d.ts +1 -1
- package/dist/__tests__/useController.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/append.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/focus.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/insert.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/move.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/prepend.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/remove.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/replace.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/swap.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray/update.test.d.ts +1 -1
- package/dist/__tests__/useFieldArray.test.d.ts +1 -1
- package/dist/__tests__/useForm/clearErrors.test.d.ts +1 -1
- package/dist/__tests__/useForm/formState.test.d.ts +1 -1
- package/dist/__tests__/useForm/getFieldState.test.d.ts +1 -1
- package/dist/__tests__/useForm/getValues.test.d.ts +1 -1
- package/dist/__tests__/useForm/handleSubmit.test.d.ts +1 -1
- package/dist/__tests__/useForm/register.test.d.ts +1 -1
- package/dist/__tests__/useForm/reset.test.d.ts +1 -1
- package/dist/__tests__/useForm/resetField.test.d.ts +1 -1
- package/dist/__tests__/useForm/resolver.test.d.ts +1 -1
- package/dist/__tests__/useForm/setError.test.d.ts +1 -1
- package/dist/__tests__/useForm/setValue.test.d.ts +1 -1
- package/dist/__tests__/useForm/trigger.test.d.ts +1 -1
- package/dist/__tests__/useForm/unregister.test.d.ts +1 -1
- package/dist/__tests__/useForm/watch.test.d.ts +1 -1
- package/dist/__tests__/useForm.server.test.d.ts +1 -1
- package/dist/__tests__/useForm.test.d.ts +1 -1
- package/dist/__tests__/useFormContext.server.test.d.ts +1 -1
- package/dist/__tests__/useFormContext.test.d.ts +1 -1
- package/dist/__tests__/useFormState.test.d.ts +1 -1
- package/dist/__tests__/useWatch.test.d.ts +1 -1
- package/dist/__typetest__/__fixtures__/index.d.ts +4 -4
- package/dist/__typetest__/__fixtures__/pathString.d.ts +3 -3
- package/dist/__typetest__/__fixtures__/traversable.d.ts +13 -13
- package/dist/__typetest__/__fixtures__/tuple.d.ts +14 -14
- package/dist/__typetest__/__fixtures__/type.d.ts +11 -11
- package/dist/__typetest__/errors.test-d.d.ts +1 -1
- package/dist/__typetest__/form.test-d.d.ts +1 -1
- package/dist/__typetest__/path/common.test-d.d.ts +1 -1
- package/dist/__typetest__/path/eager.test-d.d.ts +1 -1
- package/dist/__typetest__/util.test-d.d.ts +1 -1
- package/dist/constants.d.ts +16 -16
- package/dist/controller.d.ts +46 -46
- package/dist/controller.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.esm.mjs +2174 -2174
- package/dist/index.esm.mjs.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/logic/appendErrors.d.ts +3 -3
- package/dist/logic/createFormControl.d.ts +25 -25
- package/dist/logic/focusFieldBy.d.ts +3 -3
- package/dist/logic/generateId.d.ts +2 -2
- package/dist/logic/generateWatchOutput.d.ts +3 -3
- package/dist/logic/getCheckboxValue.d.ts +6 -6
- package/dist/logic/getDirtyFields.d.ts +2 -2
- package/dist/logic/getEventValue.d.ts +2 -2
- package/dist/logic/getFieldValue.d.ts +2 -2
- package/dist/logic/getFieldValueAs.d.ts +3 -3
- package/dist/logic/getFocusFieldName.d.ts +3 -3
- package/dist/logic/getNodeParentName.d.ts +2 -2
- package/dist/logic/getProxyFormState.d.ts +3 -3
- package/dist/logic/getRadioValue.d.ts +6 -6
- package/dist/logic/getResolverOptions.d.ts +13 -13
- package/dist/logic/getRuleValue.d.ts +3 -3
- package/dist/logic/getValidateError.d.ts +2 -2
- package/dist/logic/getValidationModes.d.ts +9 -9
- package/dist/logic/getValueAndMessage.d.ts +6 -6
- package/dist/logic/hasValidation.d.ts +3 -3
- package/dist/logic/index.d.ts +2 -2
- package/dist/logic/isNameInFieldArray.d.ts +3 -3
- package/dist/logic/isWatched.d.ts +3 -3
- package/dist/logic/schemaErrorLookup.d.ts +5 -5
- package/dist/logic/shouldRenderFormState.d.ts +5 -5
- package/dist/logic/shouldSubscribeByName.d.ts +2 -2
- package/dist/logic/skipValidation.d.ts +11 -11
- package/dist/logic/unsetEmptyArray.d.ts +2 -2
- package/dist/logic/updateFieldArrayRootError.d.ts +3 -3
- package/dist/logic/validateField.d.ts +3 -3
- package/dist/types/controller.d.ts +56 -56
- package/dist/types/errors.d.ts +35 -35
- package/dist/types/events.d.ts +1 -1
- package/dist/types/fieldArray.d.ts +194 -194
- package/dist/types/fields.d.ts +28 -28
- package/dist/types/form.d.ts +627 -627
- package/dist/types/index.d.ts +10 -10
- package/dist/types/path/common.d.ts +315 -315
- package/dist/types/path/eager.d.ts +120 -120
- package/dist/types/path/index.d.ts +3 -3
- package/dist/types/resolvers.d.ts +19 -19
- package/dist/types/utils.d.ts +70 -70
- package/dist/types/validator.d.ts +38 -38
- package/dist/useController.d.ts +26 -26
- package/dist/useFieldArray.d.ts +39 -39
- package/dist/useForm.d.ts +31 -31
- package/dist/useFormContext.d.ts +64 -64
- package/dist/useFormContext.d.ts.map +1 -1
- package/dist/useFormState.d.ts +33 -33
- package/dist/useSubscribe.d.ts +8 -8
- package/dist/useWatch.d.ts +99 -99
- package/dist/utils/append.d.ts +1 -1
- package/dist/utils/cloneObject.d.ts +1 -1
- package/dist/utils/compact.d.ts +2 -2
- package/dist/utils/convertToArrayPayload.d.ts +2 -2
- package/dist/utils/createSubject.d.ts +13 -13
- package/dist/utils/deepEqual.d.ts +1 -1
- package/dist/utils/deepMerge.d.ts +1 -1
- package/dist/utils/fillBooleanArray.d.ts +2 -2
- package/dist/utils/fillEmptyArray.d.ts +2 -2
- package/dist/utils/get.d.ts +2 -2
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/insert.d.ts +2 -2
- package/dist/utils/isBoolean.d.ts +2 -2
- package/dist/utils/isCheckBoxInput.d.ts +3 -3
- package/dist/utils/isDateObject.d.ts +2 -2
- package/dist/utils/isEmptyObject.d.ts +3 -3
- package/dist/utils/isFileInput.d.ts +3 -3
- package/dist/utils/isFunction.d.ts +2 -2
- package/dist/utils/isHTMLElement.d.ts +2 -2
- package/dist/utils/isKey.d.ts +2 -2
- package/dist/utils/isMessage.d.ts +2 -2
- package/dist/utils/isMultipleSelect.d.ts +3 -3
- package/dist/utils/isNullOrUndefined.d.ts +2 -2
- package/dist/utils/isObject.d.ts +3 -3
- package/dist/utils/isPlainObject.d.ts +2 -2
- package/dist/utils/isPrimitive.d.ts +3 -3
- package/dist/utils/isRadioInput.d.ts +3 -3
- package/dist/utils/isRadioOrCheckbox.d.ts +3 -3
- package/dist/utils/isRegex.d.ts +2 -2
- package/dist/utils/isSelectInput.d.ts +3 -3
- package/dist/utils/isString.d.ts +2 -2
- package/dist/utils/isUndefined.d.ts +2 -2
- package/dist/utils/isWeb.d.ts +2 -2
- package/dist/utils/live.d.ts +3 -3
- package/dist/utils/move.d.ts +2 -2
- package/dist/utils/objectHasFunction.d.ts +2 -2
- package/dist/utils/omit.d.ts +2 -2
- package/dist/utils/prepend.d.ts +1 -1
- package/dist/utils/remove.d.ts +2 -2
- package/dist/utils/set.d.ts +2 -2
- package/dist/utils/sleep.d.ts +1 -1
- package/dist/utils/stringToPath.d.ts +2 -2
- package/dist/utils/swap.d.ts +2 -2
- package/dist/utils/unset.d.ts +1 -1
- package/dist/utils/update.d.ts +2 -2
- package/package.json +8 -8
@@ -1,121 +1,121 @@
|
|
1
|
-
import { FieldValues } from '../fields';
|
2
|
-
import { BrowserNativeObject, IsAny, IsEqual, Primitive } from '../utils';
|
3
|
-
import { ArrayKey, IsTuple, TupleKeys } from './common';
|
4
|
-
/**
|
5
|
-
* Helper function to break apart T1 and check if any are equal to T2
|
6
|
-
*
|
7
|
-
* See {@link IsEqual}
|
8
|
-
*/
|
9
|
-
type AnyIsEqual<T1, T2> = T1 extends T2 ? IsEqual<T1, T2> extends true ? true : never : never;
|
10
|
-
/**
|
11
|
-
* Helper type for recursively constructing paths through a type.
|
12
|
-
* This actually constructs the strings and recurses into nested
|
13
|
-
* object types.
|
14
|
-
*
|
15
|
-
* See {@link Path}
|
16
|
-
*/
|
17
|
-
type PathImpl<K extends string | number, V, TraversedTypes> = V extends Primitive | BrowserNativeObject ? `${K}` : true extends AnyIsEqual<TraversedTypes, V> ? `${K}` : `${K}` | `${K}.${PathInternal<V, TraversedTypes | V>}`;
|
18
|
-
/**
|
19
|
-
* Helper type for recursively constructing paths through a type.
|
20
|
-
* This obscures the internal type param TraversedTypes from exported contract.
|
21
|
-
*
|
22
|
-
* See {@link Path}
|
23
|
-
*/
|
24
|
-
type PathInternal<T, TraversedTypes = T> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true ? {
|
25
|
-
[K in TupleKeys<T>]-?: PathImpl<K & string, T[K], TraversedTypes>;
|
26
|
-
}[TupleKeys<T>] : PathImpl<ArrayKey, V, TraversedTypes> : {
|
27
|
-
[K in keyof T]-?: PathImpl<K & string, T[K], TraversedTypes>;
|
28
|
-
}[keyof T];
|
29
|
-
/**
|
30
|
-
* Type which eagerly collects all paths through a type
|
31
|
-
* @typeParam T - type which should be introspected
|
32
|
-
* @example
|
33
|
-
* ```
|
34
|
-
* Path<{foo: {bar: string}}> = 'foo' | 'foo.bar'
|
35
|
-
* ```
|
36
|
-
*/
|
37
|
-
export type Path<T> = T extends any ? PathInternal<T> : never;
|
38
|
-
/**
|
39
|
-
* See {@link Path}
|
40
|
-
*/
|
41
|
-
export type FieldPath<TFieldValues extends FieldValues> = Path<TFieldValues>;
|
42
|
-
/**
|
43
|
-
* Helper type for recursively constructing paths through a type.
|
44
|
-
* This actually constructs the strings and recurses into nested
|
45
|
-
* object types.
|
46
|
-
*
|
47
|
-
* See {@link ArrayPath}
|
48
|
-
*/
|
49
|
-
type ArrayPathImpl<K extends string | number, V, TraversedTypes> = V extends Primitive | BrowserNativeObject ? IsAny<V> extends true ? string : never : V extends ReadonlyArray<infer U> ? U extends Primitive | BrowserNativeObject ? IsAny<V> extends true ? string : never : true extends AnyIsEqual<TraversedTypes, V> ? never : `${K}` | `${K}.${ArrayPathInternal<V, TraversedTypes | V>}` : true extends AnyIsEqual<TraversedTypes, V> ? never : `${K}.${ArrayPathInternal<V, TraversedTypes | V>}`;
|
50
|
-
/**
|
51
|
-
* Helper type for recursively constructing paths through a type.
|
52
|
-
* This obscures the internal type param TraversedTypes from exported contract.
|
53
|
-
*
|
54
|
-
* See {@link ArrayPath}
|
55
|
-
*/
|
56
|
-
type ArrayPathInternal<T, TraversedTypes = T> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true ? {
|
57
|
-
[K in TupleKeys<T>]-?: ArrayPathImpl<K & string, T[K], TraversedTypes>;
|
58
|
-
}[TupleKeys<T>] : ArrayPathImpl<ArrayKey, V, TraversedTypes> : {
|
59
|
-
[K in keyof T]-?: ArrayPathImpl<K & string, T[K], TraversedTypes>;
|
60
|
-
}[keyof T];
|
61
|
-
/**
|
62
|
-
* Type which eagerly collects all paths through a type which point to an array
|
63
|
-
* type.
|
64
|
-
* @typeParam T - type which should be introspected.
|
65
|
-
* @example
|
66
|
-
* ```
|
67
|
-
* Path<{foo: {bar: string[], baz: number[]}}> = 'foo.bar' | 'foo.baz'
|
68
|
-
* ```
|
69
|
-
*/
|
70
|
-
export type ArrayPath<T> = T extends any ? ArrayPathInternal<T> : never;
|
71
|
-
/**
|
72
|
-
* See {@link ArrayPath}
|
73
|
-
*/
|
74
|
-
export type FieldArrayPath<TFieldValues extends FieldValues> = ArrayPath<TFieldValues>;
|
75
|
-
/**
|
76
|
-
* Type to evaluate the type which the given path points to.
|
77
|
-
* @typeParam T - deeply nested type which is indexed by the path
|
78
|
-
* @typeParam P - path into the deeply nested type
|
79
|
-
* @example
|
80
|
-
* ```
|
81
|
-
* PathValue<{foo: {bar: string}}, 'foo.bar'> = string
|
82
|
-
* PathValue<[number, string], '1'> = string
|
83
|
-
* ```
|
84
|
-
*/
|
85
|
-
export type PathValue<T, P extends Path<T> | ArrayPath<T>> = T extends any ? P extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? PathValue<V, R & Path<V>> : never : never : P extends keyof T ? T[P] : P extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? V : never : never : never;
|
86
|
-
/**
|
87
|
-
* See {@link PathValue}
|
88
|
-
*/
|
89
|
-
export type FieldPathValue<TFieldValues extends FieldValues, TFieldPath extends FieldPath<TFieldValues>> = PathValue<TFieldValues, TFieldPath>;
|
90
|
-
/**
|
91
|
-
* See {@link PathValue}
|
92
|
-
*/
|
93
|
-
export type FieldArrayPathValue<TFieldValues extends FieldValues, TFieldArrayPath extends FieldArrayPath<TFieldValues>> = PathValue<TFieldValues, TFieldArrayPath>;
|
94
|
-
/**
|
95
|
-
* Type to evaluate the type which the given paths point to.
|
96
|
-
* @typeParam TFieldValues - field values which are indexed by the paths
|
97
|
-
* @typeParam TPath - paths into the deeply nested field values
|
98
|
-
* @example
|
99
|
-
* ```
|
100
|
-
* FieldPathValues<{foo: {bar: string}}, ['foo', 'foo.bar']>
|
101
|
-
* = [{bar: string}, string]
|
102
|
-
* ```
|
103
|
-
*/
|
104
|
-
export type FieldPathValues<TFieldValues extends FieldValues, TPath extends FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[]> = {} & {
|
105
|
-
[K in keyof TPath]: FieldPathValue<TFieldValues, TPath[K] & FieldPath<TFieldValues>>;
|
106
|
-
};
|
107
|
-
/**
|
108
|
-
* Type which eagerly collects all paths through a fieldType that matches a give type
|
109
|
-
* @typeParam TFieldValues - field values which are indexed by the paths
|
110
|
-
* @typeParam TValue - the value you want to match into each type
|
111
|
-
* @example
|
112
|
-
* ```typescript
|
113
|
-
* FieldPathByValue<{foo: {bar: number}, baz: number, bar: string}, number>
|
114
|
-
* = 'foo.bar' | 'baz'
|
115
|
-
* ```
|
116
|
-
*/
|
117
|
-
export type FieldPathByValue<TFieldValues extends FieldValues, TValue> = {
|
118
|
-
[Key in FieldPath<TFieldValues>]: FieldPathValue<TFieldValues, Key> extends TValue ? Key : never;
|
119
|
-
}[FieldPath<TFieldValues>];
|
120
|
-
export {};
|
1
|
+
import { FieldValues } from '../fields';
|
2
|
+
import { BrowserNativeObject, IsAny, IsEqual, Primitive } from '../utils';
|
3
|
+
import { ArrayKey, IsTuple, TupleKeys } from './common';
|
4
|
+
/**
|
5
|
+
* Helper function to break apart T1 and check if any are equal to T2
|
6
|
+
*
|
7
|
+
* See {@link IsEqual}
|
8
|
+
*/
|
9
|
+
type AnyIsEqual<T1, T2> = T1 extends T2 ? IsEqual<T1, T2> extends true ? true : never : never;
|
10
|
+
/**
|
11
|
+
* Helper type for recursively constructing paths through a type.
|
12
|
+
* This actually constructs the strings and recurses into nested
|
13
|
+
* object types.
|
14
|
+
*
|
15
|
+
* See {@link Path}
|
16
|
+
*/
|
17
|
+
type PathImpl<K extends string | number, V, TraversedTypes> = V extends Primitive | BrowserNativeObject ? `${K}` : true extends AnyIsEqual<TraversedTypes, V> ? `${K}` : `${K}` | `${K}.${PathInternal<V, TraversedTypes | V>}`;
|
18
|
+
/**
|
19
|
+
* Helper type for recursively constructing paths through a type.
|
20
|
+
* This obscures the internal type param TraversedTypes from exported contract.
|
21
|
+
*
|
22
|
+
* See {@link Path}
|
23
|
+
*/
|
24
|
+
type PathInternal<T, TraversedTypes = T> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true ? {
|
25
|
+
[K in TupleKeys<T>]-?: PathImpl<K & string, T[K], TraversedTypes>;
|
26
|
+
}[TupleKeys<T>] : PathImpl<ArrayKey, V, TraversedTypes> : {
|
27
|
+
[K in keyof T]-?: PathImpl<K & string, T[K], TraversedTypes>;
|
28
|
+
}[keyof T];
|
29
|
+
/**
|
30
|
+
* Type which eagerly collects all paths through a type
|
31
|
+
* @typeParam T - type which should be introspected
|
32
|
+
* @example
|
33
|
+
* ```
|
34
|
+
* Path<{foo: {bar: string}}> = 'foo' | 'foo.bar'
|
35
|
+
* ```
|
36
|
+
*/
|
37
|
+
export type Path<T> = T extends any ? PathInternal<T> : never;
|
38
|
+
/**
|
39
|
+
* See {@link Path}
|
40
|
+
*/
|
41
|
+
export type FieldPath<TFieldValues extends FieldValues> = Path<TFieldValues>;
|
42
|
+
/**
|
43
|
+
* Helper type for recursively constructing paths through a type.
|
44
|
+
* This actually constructs the strings and recurses into nested
|
45
|
+
* object types.
|
46
|
+
*
|
47
|
+
* See {@link ArrayPath}
|
48
|
+
*/
|
49
|
+
type ArrayPathImpl<K extends string | number, V, TraversedTypes> = V extends Primitive | BrowserNativeObject ? IsAny<V> extends true ? string : never : V extends ReadonlyArray<infer U> ? U extends Primitive | BrowserNativeObject ? IsAny<V> extends true ? string : never : true extends AnyIsEqual<TraversedTypes, V> ? never : `${K}` | `${K}.${ArrayPathInternal<V, TraversedTypes | V>}` : true extends AnyIsEqual<TraversedTypes, V> ? never : `${K}.${ArrayPathInternal<V, TraversedTypes | V>}`;
|
50
|
+
/**
|
51
|
+
* Helper type for recursively constructing paths through a type.
|
52
|
+
* This obscures the internal type param TraversedTypes from exported contract.
|
53
|
+
*
|
54
|
+
* See {@link ArrayPath}
|
55
|
+
*/
|
56
|
+
type ArrayPathInternal<T, TraversedTypes = T> = T extends ReadonlyArray<infer V> ? IsTuple<T> extends true ? {
|
57
|
+
[K in TupleKeys<T>]-?: ArrayPathImpl<K & string, T[K], TraversedTypes>;
|
58
|
+
}[TupleKeys<T>] : ArrayPathImpl<ArrayKey, V, TraversedTypes> : {
|
59
|
+
[K in keyof T]-?: ArrayPathImpl<K & string, T[K], TraversedTypes>;
|
60
|
+
}[keyof T];
|
61
|
+
/**
|
62
|
+
* Type which eagerly collects all paths through a type which point to an array
|
63
|
+
* type.
|
64
|
+
* @typeParam T - type which should be introspected.
|
65
|
+
* @example
|
66
|
+
* ```
|
67
|
+
* Path<{foo: {bar: string[], baz: number[]}}> = 'foo.bar' | 'foo.baz'
|
68
|
+
* ```
|
69
|
+
*/
|
70
|
+
export type ArrayPath<T> = T extends any ? ArrayPathInternal<T> : never;
|
71
|
+
/**
|
72
|
+
* See {@link ArrayPath}
|
73
|
+
*/
|
74
|
+
export type FieldArrayPath<TFieldValues extends FieldValues> = ArrayPath<TFieldValues>;
|
75
|
+
/**
|
76
|
+
* Type to evaluate the type which the given path points to.
|
77
|
+
* @typeParam T - deeply nested type which is indexed by the path
|
78
|
+
* @typeParam P - path into the deeply nested type
|
79
|
+
* @example
|
80
|
+
* ```
|
81
|
+
* PathValue<{foo: {bar: string}}, 'foo.bar'> = string
|
82
|
+
* PathValue<[number, string], '1'> = string
|
83
|
+
* ```
|
84
|
+
*/
|
85
|
+
export type PathValue<T, P extends Path<T> | ArrayPath<T>> = T extends any ? P extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? PathValue<V, R & Path<V>> : never : never : P extends keyof T ? T[P] : P extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? V : never : never : never;
|
86
|
+
/**
|
87
|
+
* See {@link PathValue}
|
88
|
+
*/
|
89
|
+
export type FieldPathValue<TFieldValues extends FieldValues, TFieldPath extends FieldPath<TFieldValues>> = PathValue<TFieldValues, TFieldPath>;
|
90
|
+
/**
|
91
|
+
* See {@link PathValue}
|
92
|
+
*/
|
93
|
+
export type FieldArrayPathValue<TFieldValues extends FieldValues, TFieldArrayPath extends FieldArrayPath<TFieldValues>> = PathValue<TFieldValues, TFieldArrayPath>;
|
94
|
+
/**
|
95
|
+
* Type to evaluate the type which the given paths point to.
|
96
|
+
* @typeParam TFieldValues - field values which are indexed by the paths
|
97
|
+
* @typeParam TPath - paths into the deeply nested field values
|
98
|
+
* @example
|
99
|
+
* ```
|
100
|
+
* FieldPathValues<{foo: {bar: string}}, ['foo', 'foo.bar']>
|
101
|
+
* = [{bar: string}, string]
|
102
|
+
* ```
|
103
|
+
*/
|
104
|
+
export type FieldPathValues<TFieldValues extends FieldValues, TPath extends FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[]> = {} & {
|
105
|
+
[K in keyof TPath]: FieldPathValue<TFieldValues, TPath[K] & FieldPath<TFieldValues>>;
|
106
|
+
};
|
107
|
+
/**
|
108
|
+
* Type which eagerly collects all paths through a fieldType that matches a give type
|
109
|
+
* @typeParam TFieldValues - field values which are indexed by the paths
|
110
|
+
* @typeParam TValue - the value you want to match into each type
|
111
|
+
* @example
|
112
|
+
* ```typescript
|
113
|
+
* FieldPathByValue<{foo: {bar: number}, baz: number, bar: string}, number>
|
114
|
+
* = 'foo.bar' | 'baz'
|
115
|
+
* ```
|
116
|
+
*/
|
117
|
+
export type FieldPathByValue<TFieldValues extends FieldValues, TValue> = {
|
118
|
+
[Key in FieldPath<TFieldValues>]: FieldPathValue<TFieldValues, Key> extends TValue ? Key : never;
|
119
|
+
}[FieldPath<TFieldValues>];
|
120
|
+
export {};
|
121
121
|
//# sourceMappingURL=eager.d.ts.map
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/** Re-export public API */
|
2
|
-
export { PathString } from './common';
|
3
|
-
export { ArrayPath, FieldArrayPath, FieldArrayPathValue, FieldPath, FieldPathByValue, FieldPathValue, FieldPathValues, Path, PathValue, } from './eager';
|
1
|
+
/** Re-export public API */
|
2
|
+
export { PathString } from './common';
|
3
|
+
export { ArrayPath, FieldArrayPath, FieldArrayPathValue, FieldPath, FieldPathByValue, FieldPathValue, FieldPathValues, Path, PathValue, } from './eager';
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1,20 +1,20 @@
|
|
1
|
-
import { FieldErrors } from './errors';
|
2
|
-
import { Field, FieldName, FieldValues, InternalFieldName } from './fields';
|
3
|
-
import { CriteriaMode } from './form';
|
4
|
-
export type ResolverSuccess<TFieldValues extends FieldValues = FieldValues> = {
|
5
|
-
values: TFieldValues;
|
6
|
-
errors: {};
|
7
|
-
};
|
8
|
-
export type ResolverError<TFieldValues extends FieldValues = FieldValues> = {
|
9
|
-
values: {};
|
10
|
-
errors: FieldErrors<TFieldValues>;
|
11
|
-
};
|
12
|
-
export type ResolverResult<TFieldValues extends FieldValues = FieldValues> = ResolverSuccess<TFieldValues> | ResolverError<TFieldValues>;
|
13
|
-
export interface ResolverOptions<TFieldValues extends FieldValues> {
|
14
|
-
criteriaMode?: CriteriaMode;
|
15
|
-
fields: Record<InternalFieldName, Field['_f']>;
|
16
|
-
names?: FieldName<TFieldValues>[];
|
17
|
-
shouldUseNativeValidation: boolean | undefined;
|
18
|
-
}
|
19
|
-
export type Resolver<TFieldValues extends FieldValues = FieldValues, TContext = any> = (values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>> | ResolverResult<TFieldValues>;
|
1
|
+
import { FieldErrors } from './errors';
|
2
|
+
import { Field, FieldName, FieldValues, InternalFieldName } from './fields';
|
3
|
+
import { CriteriaMode } from './form';
|
4
|
+
export type ResolverSuccess<TFieldValues extends FieldValues = FieldValues> = {
|
5
|
+
values: TFieldValues;
|
6
|
+
errors: {};
|
7
|
+
};
|
8
|
+
export type ResolverError<TFieldValues extends FieldValues = FieldValues> = {
|
9
|
+
values: {};
|
10
|
+
errors: FieldErrors<TFieldValues>;
|
11
|
+
};
|
12
|
+
export type ResolverResult<TFieldValues extends FieldValues = FieldValues> = ResolverSuccess<TFieldValues> | ResolverError<TFieldValues>;
|
13
|
+
export interface ResolverOptions<TFieldValues extends FieldValues> {
|
14
|
+
criteriaMode?: CriteriaMode;
|
15
|
+
fields: Record<InternalFieldName, Field['_f']>;
|
16
|
+
names?: FieldName<TFieldValues>[];
|
17
|
+
shouldUseNativeValidation: boolean | undefined;
|
18
|
+
}
|
19
|
+
export type Resolver<TFieldValues extends FieldValues = FieldValues, TContext = any> = (values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>> | ResolverResult<TFieldValues>;
|
20
20
|
//# sourceMappingURL=resolvers.d.ts.map
|
package/dist/types/utils.d.ts
CHANGED
@@ -1,71 +1,71 @@
|
|
1
|
-
import { NestedValue } from './form';
|
2
|
-
export type Noop = () => void;
|
3
|
-
interface File extends Blob {
|
4
|
-
readonly lastModified: number;
|
5
|
-
readonly name: string;
|
6
|
-
}
|
7
|
-
interface FileList {
|
8
|
-
readonly length: number;
|
9
|
-
item(index: number): File | null;
|
10
|
-
[index: number]: File;
|
11
|
-
}
|
12
|
-
export type Primitive = null | undefined | string | number | boolean | symbol | bigint;
|
13
|
-
export type BrowserNativeObject = Date | FileList | File;
|
14
|
-
export type EmptyObject = {
|
15
|
-
[K in string | number]: never;
|
16
|
-
};
|
17
|
-
export type NonUndefined<T> = T extends undefined ? never : T;
|
18
|
-
export type LiteralUnion<T extends U, U extends Primitive> = T | (U & {
|
19
|
-
_?: never;
|
20
|
-
});
|
21
|
-
export type DeepPartial<T> = T extends BrowserNativeObject | NestedValue ? T : {
|
22
|
-
[K in keyof T]?: DeepPartial<T[K]>;
|
23
|
-
};
|
24
|
-
export type DeepPartialSkipArrayKey<T> = T extends BrowserNativeObject | NestedValue ? T : T extends ReadonlyArray<any> ? {
|
25
|
-
[K in keyof T]: DeepPartialSkipArrayKey<T[K]>;
|
26
|
-
} : {
|
27
|
-
[K in keyof T]?: DeepPartialSkipArrayKey<T[K]>;
|
28
|
-
};
|
29
|
-
/**
|
30
|
-
* Checks whether the type is any
|
31
|
-
* See {@link https://stackoverflow.com/a/49928360/3406963}
|
32
|
-
* @typeParam T - type which may be any
|
33
|
-
* ```
|
34
|
-
* IsAny<any> = true
|
35
|
-
* IsAny<string> = false
|
36
|
-
* ```
|
37
|
-
*/
|
38
|
-
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
39
|
-
/**
|
40
|
-
* Checks whether the type is never
|
41
|
-
* @typeParam T - type which may be never
|
42
|
-
* ```
|
43
|
-
* IsAny<never> = true
|
44
|
-
* IsAny<string> = false
|
45
|
-
* ```
|
46
|
-
*/
|
47
|
-
export type IsNever<T> = [T] extends [never] ? true : false;
|
48
|
-
/**
|
49
|
-
* Checks whether T1 can be exactly (mutually) assigned to T2
|
50
|
-
* @typeParam T1 - type to check
|
51
|
-
* @typeParam T2 - type to check against
|
52
|
-
* ```
|
53
|
-
* IsEqual<string, string> = true
|
54
|
-
* IsEqual<'foo', 'foo'> = true
|
55
|
-
* IsEqual<string, number> = false
|
56
|
-
* IsEqual<string, number> = false
|
57
|
-
* IsEqual<string, 'foo'> = false
|
58
|
-
* IsEqual<'foo', string> = false
|
59
|
-
* IsEqual<'foo' | 'bar', 'foo'> = boolean // 'foo' is assignable, but 'bar' is not (true | false) -> boolean
|
60
|
-
* ```
|
61
|
-
*/
|
62
|
-
export type IsEqual<T1, T2> = T1 extends T2 ? (<G>() => G extends T1 ? 1 : 2) extends <G>() => G extends T2 ? 1 : 2 ? true : false : false;
|
63
|
-
export type DeepMap<T, TValue> = IsAny<T> extends true ? any : T extends BrowserNativeObject | NestedValue ? TValue : T extends object ? {
|
64
|
-
[K in keyof T]: DeepMap<NonUndefined<T[K]>, TValue>;
|
65
|
-
} : TValue;
|
66
|
-
export type IsFlatObject<T extends object> = Extract<Exclude<T[keyof T], NestedValue | Date | FileList>, any[] | object> extends never ? true : false;
|
67
|
-
export type Merge<A, B> = {
|
68
|
-
[K in keyof A | keyof B]?: K extends keyof A & keyof B ? [A[K], B[K]] extends [object, object] ? Merge<A[K], B[K]> : A[K] | B[K] : K extends keyof A ? A[K] : K extends keyof B ? B[K] : never;
|
69
|
-
};
|
70
|
-
export {};
|
1
|
+
import { NestedValue } from './form';
|
2
|
+
export type Noop = () => void;
|
3
|
+
interface File extends Blob {
|
4
|
+
readonly lastModified: number;
|
5
|
+
readonly name: string;
|
6
|
+
}
|
7
|
+
interface FileList {
|
8
|
+
readonly length: number;
|
9
|
+
item(index: number): File | null;
|
10
|
+
[index: number]: File;
|
11
|
+
}
|
12
|
+
export type Primitive = null | undefined | string | number | boolean | symbol | bigint;
|
13
|
+
export type BrowserNativeObject = Date | FileList | File;
|
14
|
+
export type EmptyObject = {
|
15
|
+
[K in string | number]: never;
|
16
|
+
};
|
17
|
+
export type NonUndefined<T> = T extends undefined ? never : T;
|
18
|
+
export type LiteralUnion<T extends U, U extends Primitive> = T | (U & {
|
19
|
+
_?: never;
|
20
|
+
});
|
21
|
+
export type DeepPartial<T> = T extends BrowserNativeObject | NestedValue ? T : {
|
22
|
+
[K in keyof T]?: DeepPartial<T[K]>;
|
23
|
+
};
|
24
|
+
export type DeepPartialSkipArrayKey<T> = T extends BrowserNativeObject | NestedValue ? T : T extends ReadonlyArray<any> ? {
|
25
|
+
[K in keyof T]: DeepPartialSkipArrayKey<T[K]>;
|
26
|
+
} : {
|
27
|
+
[K in keyof T]?: DeepPartialSkipArrayKey<T[K]>;
|
28
|
+
};
|
29
|
+
/**
|
30
|
+
* Checks whether the type is any
|
31
|
+
* See {@link https://stackoverflow.com/a/49928360/3406963}
|
32
|
+
* @typeParam T - type which may be any
|
33
|
+
* ```
|
34
|
+
* IsAny<any> = true
|
35
|
+
* IsAny<string> = false
|
36
|
+
* ```
|
37
|
+
*/
|
38
|
+
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
39
|
+
/**
|
40
|
+
* Checks whether the type is never
|
41
|
+
* @typeParam T - type which may be never
|
42
|
+
* ```
|
43
|
+
* IsAny<never> = true
|
44
|
+
* IsAny<string> = false
|
45
|
+
* ```
|
46
|
+
*/
|
47
|
+
export type IsNever<T> = [T] extends [never] ? true : false;
|
48
|
+
/**
|
49
|
+
* Checks whether T1 can be exactly (mutually) assigned to T2
|
50
|
+
* @typeParam T1 - type to check
|
51
|
+
* @typeParam T2 - type to check against
|
52
|
+
* ```
|
53
|
+
* IsEqual<string, string> = true
|
54
|
+
* IsEqual<'foo', 'foo'> = true
|
55
|
+
* IsEqual<string, number> = false
|
56
|
+
* IsEqual<string, number> = false
|
57
|
+
* IsEqual<string, 'foo'> = false
|
58
|
+
* IsEqual<'foo', string> = false
|
59
|
+
* IsEqual<'foo' | 'bar', 'foo'> = boolean // 'foo' is assignable, but 'bar' is not (true | false) -> boolean
|
60
|
+
* ```
|
61
|
+
*/
|
62
|
+
export type IsEqual<T1, T2> = T1 extends T2 ? (<G>() => G extends T1 ? 1 : 2) extends <G>() => G extends T2 ? 1 : 2 ? true : false : false;
|
63
|
+
export type DeepMap<T, TValue> = IsAny<T> extends true ? any : T extends BrowserNativeObject | NestedValue ? TValue : T extends object ? {
|
64
|
+
[K in keyof T]: DeepMap<NonUndefined<T[K]>, TValue>;
|
65
|
+
} : TValue;
|
66
|
+
export type IsFlatObject<T extends object> = Extract<Exclude<T[keyof T], NestedValue | Date | FileList>, any[] | object> extends never ? true : false;
|
67
|
+
export type Merge<A, B> = {
|
68
|
+
[K in keyof A | keyof B]?: K extends keyof A & keyof B ? [A[K], B[K]] extends [object, object] ? Merge<A[K], B[K]> : A[K] | B[K] : K extends keyof A ? A[K] : K extends keyof B ? B[K] : never;
|
69
|
+
};
|
70
|
+
export {};
|
71
71
|
//# sourceMappingURL=utils.d.ts.map
|
@@ -1,39 +1,39 @@
|
|
1
|
-
import { Message } from './errors';
|
2
|
-
import { FieldValues, InternalFieldName } from './fields';
|
3
|
-
import { FieldPath, FieldPathValue } from './path';
|
4
|
-
export type ValidationValue = boolean | number | string | RegExp;
|
5
|
-
export type ValidationRule<TValidationValue extends ValidationValue = ValidationValue> = TValidationValue | ValidationValueMessage<TValidationValue>;
|
6
|
-
export type ValidationValueMessage<TValidationValue extends ValidationValue = ValidationValue> = {
|
7
|
-
value: TValidationValue;
|
8
|
-
message: Message;
|
9
|
-
};
|
10
|
-
export type ValidateResult = Message | Message[] | boolean | undefined;
|
11
|
-
export type Validate<TFieldValue, TFormValues> = (value: TFieldValue, formValues: TFormValues) => ValidateResult | Promise<ValidateResult>;
|
12
|
-
export type RegisterOptions<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = Partial<{
|
13
|
-
required: Message | ValidationRule<boolean>;
|
14
|
-
min: ValidationRule<number | string>;
|
15
|
-
max: ValidationRule<number | string>;
|
16
|
-
maxLength: ValidationRule<number>;
|
17
|
-
minLength: ValidationRule<number>;
|
18
|
-
validate: Validate<FieldPathValue<TFieldValues, TFieldName>, TFieldValues> | Record<string, Validate<FieldPathValue<TFieldValues, TFieldName>, TFieldValues>>;
|
19
|
-
value: FieldPathValue<TFieldValues, TFieldName>;
|
20
|
-
setValueAs: (value: any) => any;
|
21
|
-
shouldUnregister?: boolean;
|
22
|
-
onChange?: (event: any) => void;
|
23
|
-
onBlur?: (event: any) => void;
|
24
|
-
disabled: boolean;
|
25
|
-
deps: InternalFieldName | InternalFieldName[];
|
26
|
-
}> & ({
|
27
|
-
pattern?: ValidationRule<RegExp>;
|
28
|
-
valueAsNumber?: false;
|
29
|
-
valueAsDate?: false;
|
30
|
-
} | {
|
31
|
-
pattern?: undefined;
|
32
|
-
valueAsNumber?: false;
|
33
|
-
valueAsDate?: true;
|
34
|
-
} | {
|
35
|
-
pattern?: undefined;
|
36
|
-
valueAsNumber?: true;
|
37
|
-
valueAsDate?: false;
|
38
|
-
});
|
1
|
+
import { Message } from './errors';
|
2
|
+
import { FieldValues, InternalFieldName } from './fields';
|
3
|
+
import { FieldPath, FieldPathValue } from './path';
|
4
|
+
export type ValidationValue = boolean | number | string | RegExp;
|
5
|
+
export type ValidationRule<TValidationValue extends ValidationValue = ValidationValue> = TValidationValue | ValidationValueMessage<TValidationValue>;
|
6
|
+
export type ValidationValueMessage<TValidationValue extends ValidationValue = ValidationValue> = {
|
7
|
+
value: TValidationValue;
|
8
|
+
message: Message;
|
9
|
+
};
|
10
|
+
export type ValidateResult = Message | Message[] | boolean | undefined;
|
11
|
+
export type Validate<TFieldValue, TFormValues> = (value: TFieldValue, formValues: TFormValues) => ValidateResult | Promise<ValidateResult>;
|
12
|
+
export type RegisterOptions<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = Partial<{
|
13
|
+
required: Message | ValidationRule<boolean>;
|
14
|
+
min: ValidationRule<number | string>;
|
15
|
+
max: ValidationRule<number | string>;
|
16
|
+
maxLength: ValidationRule<number>;
|
17
|
+
minLength: ValidationRule<number>;
|
18
|
+
validate: Validate<FieldPathValue<TFieldValues, TFieldName>, TFieldValues> | Record<string, Validate<FieldPathValue<TFieldValues, TFieldName>, TFieldValues>>;
|
19
|
+
value: FieldPathValue<TFieldValues, TFieldName>;
|
20
|
+
setValueAs: (value: any) => any;
|
21
|
+
shouldUnregister?: boolean;
|
22
|
+
onChange?: (event: any) => void;
|
23
|
+
onBlur?: (event: any) => void;
|
24
|
+
disabled: boolean;
|
25
|
+
deps: InternalFieldName | InternalFieldName[];
|
26
|
+
}> & ({
|
27
|
+
pattern?: ValidationRule<RegExp>;
|
28
|
+
valueAsNumber?: false;
|
29
|
+
valueAsDate?: false;
|
30
|
+
} | {
|
31
|
+
pattern?: undefined;
|
32
|
+
valueAsNumber?: false;
|
33
|
+
valueAsDate?: true;
|
34
|
+
} | {
|
35
|
+
pattern?: undefined;
|
36
|
+
valueAsNumber?: true;
|
37
|
+
valueAsDate?: false;
|
38
|
+
});
|
39
39
|
//# sourceMappingURL=validator.d.ts.map
|
package/dist/useController.d.ts
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
import { FieldPath, FieldValues, UseControllerProps, UseControllerReturn } from './types';
|
2
|
-
/**
|
3
|
-
* Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.
|
4
|
-
*
|
5
|
-
* @remarks
|
6
|
-
* [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)
|
7
|
-
*
|
8
|
-
* @param props - the path name to the form field value, and validation rules.
|
9
|
-
*
|
10
|
-
* @returns field properties, field and form state. {@link UseControllerReturn}
|
11
|
-
*
|
12
|
-
* @example
|
13
|
-
* ```tsx
|
14
|
-
* function Input(props) {
|
15
|
-
* const { field, fieldState, formState } = useController(props);
|
16
|
-
* return (
|
17
|
-
* <div>
|
18
|
-
* <input {...field} placeholder={props.name} />
|
19
|
-
* <p>{fieldState.isTouched && "Touched"}</p>
|
20
|
-
* <p>{formState.isSubmitted ? "submitted" : ""}</p>
|
21
|
-
* </div>
|
22
|
-
* );
|
23
|
-
* }
|
24
|
-
* ```
|
25
|
-
*/
|
26
|
-
export declare function useController<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: UseControllerProps<TFieldValues, TName>): UseControllerReturn<TFieldValues, TName>;
|
1
|
+
import { FieldPath, FieldValues, UseControllerProps, UseControllerReturn } from './types';
|
2
|
+
/**
|
3
|
+
* Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.
|
4
|
+
*
|
5
|
+
* @remarks
|
6
|
+
* [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)
|
7
|
+
*
|
8
|
+
* @param props - the path name to the form field value, and validation rules.
|
9
|
+
*
|
10
|
+
* @returns field properties, field and form state. {@link UseControllerReturn}
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* ```tsx
|
14
|
+
* function Input(props) {
|
15
|
+
* const { field, fieldState, formState } = useController(props);
|
16
|
+
* return (
|
17
|
+
* <div>
|
18
|
+
* <input {...field} placeholder={props.name} />
|
19
|
+
* <p>{fieldState.isTouched && "Touched"}</p>
|
20
|
+
* <p>{formState.isSubmitted ? "submitted" : ""}</p>
|
21
|
+
* </div>
|
22
|
+
* );
|
23
|
+
* }
|
24
|
+
* ```
|
25
|
+
*/
|
26
|
+
export declare function useController<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: UseControllerProps<TFieldValues, TName>): UseControllerReturn<TFieldValues, TName>;
|
27
27
|
//# sourceMappingURL=useController.d.ts.map
|
package/dist/useFieldArray.d.ts
CHANGED
@@ -1,40 +1,40 @@
|
|
1
|
-
import { FieldArrayPath, FieldValues, UseFieldArrayProps, UseFieldArrayReturn } from './types';
|
2
|
-
/**
|
3
|
-
* A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)
|
4
|
-
*
|
5
|
-
* @remarks
|
6
|
-
* [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)
|
7
|
-
*
|
8
|
-
* @param props - useFieldArray props
|
9
|
-
*
|
10
|
-
* @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}
|
11
|
-
*
|
12
|
-
* @example
|
13
|
-
* ```tsx
|
14
|
-
* function App() {
|
15
|
-
* const { register, control, handleSubmit, reset, trigger, setError } = useForm({
|
16
|
-
* defaultValues: {
|
17
|
-
* test: []
|
18
|
-
* }
|
19
|
-
* });
|
20
|
-
* const { fields, append } = useFieldArray({
|
21
|
-
* control,
|
22
|
-
* name: "test"
|
23
|
-
* });
|
24
|
-
*
|
25
|
-
* return (
|
26
|
-
* <form onSubmit={handleSubmit(data => console.log(data))}>
|
27
|
-
* {fields.map((item, index) => (
|
28
|
-
* <input key={item.id} {...register(`test.${index}.firstName`)} />
|
29
|
-
* ))}
|
30
|
-
* <button type="button" onClick={() => append({ firstName: "bill" })}>
|
31
|
-
* append
|
32
|
-
* </button>
|
33
|
-
* <input type="submit" />
|
34
|
-
* </form>
|
35
|
-
* );
|
36
|
-
* }
|
37
|
-
* ```
|
38
|
-
*/
|
39
|
-
export declare function useFieldArray<TFieldValues extends FieldValues = FieldValues, TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>, TKeyName extends string = 'id'>(props: UseFieldArrayProps<TFieldValues, TFieldArrayName, TKeyName>): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName>;
|
1
|
+
import { FieldArrayPath, FieldValues, UseFieldArrayProps, UseFieldArrayReturn } from './types';
|
2
|
+
/**
|
3
|
+
* A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)
|
4
|
+
*
|
5
|
+
* @remarks
|
6
|
+
* [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)
|
7
|
+
*
|
8
|
+
* @param props - useFieldArray props
|
9
|
+
*
|
10
|
+
* @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* ```tsx
|
14
|
+
* function App() {
|
15
|
+
* const { register, control, handleSubmit, reset, trigger, setError } = useForm({
|
16
|
+
* defaultValues: {
|
17
|
+
* test: []
|
18
|
+
* }
|
19
|
+
* });
|
20
|
+
* const { fields, append } = useFieldArray({
|
21
|
+
* control,
|
22
|
+
* name: "test"
|
23
|
+
* });
|
24
|
+
*
|
25
|
+
* return (
|
26
|
+
* <form onSubmit={handleSubmit(data => console.log(data))}>
|
27
|
+
* {fields.map((item, index) => (
|
28
|
+
* <input key={item.id} {...register(`test.${index}.firstName`)} />
|
29
|
+
* ))}
|
30
|
+
* <button type="button" onClick={() => append({ firstName: "bill" })}>
|
31
|
+
* append
|
32
|
+
* </button>
|
33
|
+
* <input type="submit" />
|
34
|
+
* </form>
|
35
|
+
* );
|
36
|
+
* }
|
37
|
+
* ```
|
38
|
+
*/
|
39
|
+
export declare function useFieldArray<TFieldValues extends FieldValues = FieldValues, TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>, TKeyName extends string = 'id'>(props: UseFieldArrayProps<TFieldValues, TFieldArrayName, TKeyName>): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName>;
|
40
40
|
//# sourceMappingURL=useFieldArray.d.ts.map
|