-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.d.ts
More file actions
87 lines (78 loc) · 2.42 KB
/
index.d.ts
File metadata and controls
87 lines (78 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import {
Dispatch,
SetStateAction,
ChangeEvent,
HTMLProps,
HTMLInputTypeAttribute,
} from "react"
type TFieldValue = HTMLProps<HTMLInputElement>
export type TypeUseModelsInput<FieldValues> = {
name: keyof FieldValues
type?: HTMLInputTypeAttribute
onChange?: (e: ChangeEvent<HTMLInputElement>) => void
}
export type TypeUseModelsInputProps<FieldValues> = Readonly<
Required<TypeUseModelsInput<FieldValues>> & {
value: TFieldValue["value"]
}
>
export type TypeUseModelsTextarea<FieldValues> = {
name: keyof FieldValues
onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void
}
export type TypeUseModelsTextareaProps<FieldValues> = Readonly<
Required<TypeUseModelsTextarea<FieldValues>> & {
value: TFieldValue["value"]
}
>
export type TypeUseModelsRadio<FieldValues> = {
name: keyof FieldValues
value?: string | null
onChange?: (e: ChangeEvent<HTMLInputElement>) => void
}
export type TypeUseModelsRadioProps<FieldValues> = Readonly<
Required<TypeUseModelsRadio<FieldValues>> & {
value: TFieldValue["value"]
}
>
export type TypeUseModelsCheckbox<FieldValues> = {
name: keyof FieldValues
truevalue?: TFieldValue["value"]
falsevalue?: TFieldValue["value"]
onChange?: (e: ChangeEvent<HTMLInputElement>) => void
}
export type TypeUseModelsCheckboxProps<FieldValues> = Readonly<
Required<TypeUseModelsCheckbox<FieldValues>> & {
value: TFieldValue["value"]
checked: TFieldValue["checked"]
}
>
export type TypeUseModelsConfig<FieldValues> = {
defaultState?: FieldValues
}
export interface TypeUseModels<FieldValues> {
models: FieldValues
register: {
input: (
options: TypeUseModelsInput<FieldValues>
) => TypeUseModelsInputProps<FieldValues>
textarea: (
options: TypeUseModelsTextarea<FieldValues>
) => TypeUseModelsTextareaProps<FieldValues>
radio: (
options: TypeUseModelsRadio<FieldValues>
) => TypeUseModelsRadioProps<FieldValues>
checkbox: (
options: TypeUseModelsCheckbox<FieldValues>
) => TypeUseModelsCheckboxProps<FieldValues>
}
updateModel: <T extends keyof FieldValues>(
name: T,
value: FieldValues[T]
) => void
setModels: Dispatch<SetStateAction<FieldValues>>
}
export const useModels: <T>(
options?: TypeUseModelsConfig<T>
) => TypeUseModels<T>
export default useModels