|
1 | 1 | import React from 'react';
|
2 |
| - |
3 |
| -export type NonUndefined<T> = T extends undefined ? never : T; |
4 |
| - |
5 |
| -export type Assign<T extends object, U extends object> = T & Omit<U, keyof T>; |
6 |
| - |
7 |
| -export type DeepMap<T, TValue> = { |
8 |
| - [K in keyof T]?: IsAny<T[K]> extends true |
9 |
| - ? any |
10 |
| - : NonUndefined<T[K]> extends NestedValue | Date | FileList |
11 |
| - ? TValue |
12 |
| - : NonUndefined<T[K]> extends object |
13 |
| - ? DeepMap<T[K], TValue> |
14 |
| - : NonUndefined<T[K]> extends Array<infer U> |
15 |
| - ? IsAny<U> extends true |
16 |
| - ? Array<any> |
17 |
| - : U extends NestedValue | Date | FileList |
18 |
| - ? Array<TValue> |
19 |
| - : U extends object |
20 |
| - ? Array<DeepMap<U, TValue>> |
21 |
| - : Array<TValue> |
22 |
| - : TValue; |
23 |
| -}; |
24 |
| - |
25 |
| -export type IsAny<T> = boolean extends (T extends never ? true : false) |
26 |
| - ? true |
27 |
| - : false; |
28 |
| - |
29 |
| -export type IsFlatObject<T extends object> = Extract< |
30 |
| - Exclude<T[keyof T], NestedValue | Date | FileList>, |
31 |
| - any[] | object |
32 |
| -> extends never |
33 |
| - ? true |
34 |
| - : false; |
35 |
| - |
36 |
| -declare const $NestedValue: unique symbol; |
37 |
| - |
38 |
| -export type FieldValues = Record<string, any>; |
39 |
| - |
40 |
| -export type FieldName<TFieldValues extends FieldValues> = IsFlatObject< |
41 |
| - TFieldValues |
42 |
| -> extends true |
43 |
| - ? Extract<keyof TFieldValues, string> |
44 |
| - : string; |
45 |
| - |
46 |
| -export type NestedValue<TValue extends any[] | object = any[] | object> = { |
47 |
| - [$NestedValue]: never; |
48 |
| -} & TValue; |
49 |
| - |
50 |
| -export type Ref = FieldElement; |
51 |
| - |
52 |
| -export type CustomElement<TFieldValues extends FieldValues> = { |
53 |
| - name: FieldName<TFieldValues>; |
54 |
| - type?: string; |
55 |
| - value?: any; |
56 |
| - checked?: boolean; |
57 |
| - options?: HTMLOptionsCollection; |
58 |
| - files?: FileList | null; |
59 |
| - focus?: () => void; |
60 |
| -}; |
61 |
| - |
62 |
| -export type FieldElement<TFieldValues extends FieldValues = FieldValues> = |
63 |
| - | HTMLInputElement |
64 |
| - | HTMLSelectElement |
65 |
| - | HTMLTextAreaElement |
66 |
| - | CustomElement<TFieldValues>; |
67 |
| - |
68 |
| -export type Message = string; |
69 |
| - |
70 |
| -export type ValidateResult = Message | Message[] | boolean | undefined; |
71 |
| - |
72 |
| -export type MultipleFieldErrors = Record<string, ValidateResult>; |
73 |
| - |
74 |
| -export type FieldError = { |
75 |
| - type: string; |
76 |
| - ref?: Ref; |
77 |
| - types?: MultipleFieldErrors; |
78 |
| - message?: Message; |
79 |
| - isManual?: boolean; |
80 |
| -}; |
81 |
| - |
82 |
| -export type FieldErrors< |
83 |
| - TFieldValues extends FieldValues = FieldValues |
84 |
| -> = DeepMap<TFieldValues, FieldError>; |
| 2 | +import { |
| 3 | + Assign, |
| 4 | + FieldName, |
| 5 | + Message, |
| 6 | + MultipleFieldErrors, |
| 7 | + FieldErrors, |
| 8 | +} from 'react-hook-form'; |
85 | 9 |
|
86 | 10 | export type FieldValuesFromFieldErrors<
|
87 | 11 | TFieldErrors
|
|
0 commit comments