@@ -44,9 +44,17 @@ export type Deserializer<T extends object, K extends keyof T, State = DefaultSta
4444 props : FormInputProps < T , K , State , Error >
4545) => T [ K ] | T [ K ] [ keyof T [ K ] ] ;
4646
47- function defaultSerializer < T extends object , K extends keyof T , State = DefaultState , Error extends string = string > (
47+ export type SerializeProps < T extends object , K extends keyof T > = {
48+ dateAsNumber ?: boolean ;
49+ setUndefinedOnUncheck ?: boolean ;
50+ setNullOnUncheck ?: boolean ;
51+ type ?: FormInputType ;
52+ value ?: T [ K ] | T [ K ] [ keyof T [ K ] ] ;
53+ } ;
54+
55+ export function defaultSerializer < T extends object , K extends keyof T > (
4856 currentValue : T [ K ] | T [ K ] [ keyof T [ K ] ] ,
49- props : FormInputProps < T , K , State , Error >
57+ props : SerializeProps < T , K >
5058) : boolean | string {
5159 switch ( props . type ) {
5260 case "datetime-local" :
@@ -84,11 +92,11 @@ function defaultSerializer<T extends object, K extends keyof T, State = DefaultS
8492 }
8593}
8694
87- function defaultDeserializer < T extends object , K extends keyof T , State = DefaultState , Error extends string = string > (
95+ export function defaultDeserializer < T extends object , K extends keyof T > (
8896 inputValue : string ,
8997 inputChecked : boolean ,
90- currentValue : any ,
91- props : FormInputProps < T , K , State , Error >
98+ currentValue : T [ K ] ,
99+ props : SerializeProps < T , K >
92100) {
93101 switch ( props . type ) {
94102 case "number" : {
@@ -148,11 +156,8 @@ export type FormInputProps<T extends object, K extends keyof T = keyof T, State
148156 dirtyClassName ?: string ;
149157 dirtyStyle ?: React . CSSProperties ;
150158 disableOnSubmitting ?: boolean ;
151- dateAsNumber ?: boolean ;
152- setNullOnUncheck ?: boolean ;
153- setUndefinedOnUncheck ?: boolean ;
154159 hideWhenNull ?: boolean ;
155- } ;
160+ } & SerializeProps < T , K > ;
156161
157162/**
158163 * The builtin form input. You must always specify **form** and **name**. Use the **type** prop to specify what type of field it represents.
@@ -209,7 +214,7 @@ export function FormInput<T extends object, K extends keyof T, State extends Def
209214 onChange = { ( ev ) => {
210215 setValue ( ( deserializer ?? defaultDeserializer ) ( ev . target . value , ev . target . checked , currentValue , props ) ) ;
211216 } }
212- name = { name + "" }
217+ name = { name as string }
213218 type = { type }
214219 { ...rest }
215220 />
0 commit comments