@@ -20,6 +20,9 @@ import {
2020 useTranslate ,
2121 useRefineContext ,
2222 flattenObjectKeys ,
23+ CreateFormVariables ,
24+ ExtractFormVariables ,
25+ ExtractSubmissionVariables ,
2326} from "@refinedev/core" ;
2427
2528export type UseFormReturnType <
@@ -82,7 +85,7 @@ export type UseFormProps<
8285export const useForm = <
8386 TQueryFnData extends BaseRecord = BaseRecord ,
8487 TError extends HttpError = HttpError ,
85- TVariables extends FieldValues = FieldValues ,
88+ TVariables extends FieldValues | CreateFormVariables < any , any > = FieldValues ,
8689 TContext extends object = { } ,
8790 TData extends BaseRecord = TQueryFnData ,
8891 TResponse extends BaseRecord = TData ,
@@ -195,6 +198,9 @@ export const useForm = <
195198
196199 const { query, onFinish, formLoading, onFinishAutoSave } = useFormCoreResult ;
197200
201+ type FormVariablesType = ExtractFormVariables < TVariables > ; // Added
202+ type SubmissionVariablesType = ExtractSubmissionVariables < TVariables > ;
203+
198204 useEffect ( ( ) => {
199205 const data = query ?. data ?. data ;
200206 if ( ! data ) return ;
@@ -248,17 +254,24 @@ export const useForm = <
248254 return changeValues ;
249255 } ;
250256
251- const handleSubmit : UseFormHandleSubmit < TVariables > =
257+ const handleSubmit : UseFormHandleSubmit < FormVariablesType > =
252258 ( onValid , onInvalid ) => async ( e ) => {
253259 setWarnWhen ( false ) ;
254- return handleSubmitReactHookForm ( onValid , onInvalid ) ( e ) ;
260+
261+ const onValidWrapper = ( variables : TVariables ) => {
262+ const formVariables =
263+ variables as unknown as ExtractFormVariables < TVariables > ;
264+ return onValid ( formVariables ) ;
265+ } ;
266+
267+ return handleSubmitReactHookForm ( onValidWrapper , onInvalid ) ( e ) ;
255268 } ;
256269
257270 const saveButtonProps = {
258271 disabled : formLoading ,
259272 onClick : ( e : React . BaseSyntheticEvent ) => {
260273 handleSubmit (
261- ( v ) => onFinish ( v ) . catch ( ( ) => { } ) ,
274+ ( v ) => onFinish ( v as SubmissionVariablesType ) . catch ( ( ) => { } ) ,
262275 ( ) => false ,
263276 ) ( e ) ;
264277 } ,
0 commit comments