|
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