From 4f6556d31857d921490237db12d1b3e999b3253c Mon Sep 17 00:00:00 2001 From: mixelburg Date: Sat, 20 Jun 2026 22:11:40 +0000 Subject: [PATCH] fix(form-core): export FormListenerFieldProps to fix TS4023 declaration emit Extract the inline {formApi, fieldApi} callback props type from FormListeners into a named exported FormListenerFieldProps interface. Previously, exporting a formOptions() result that included listeners failed with TS4023 because TypeScript could not serialize the anonymous type into a .d.ts file. --- packages/form-core/src/FormApi.ts | 58 +++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/packages/form-core/src/FormApi.ts b/packages/form-core/src/FormApi.ts index 2317fb2b9..eaadf12e7 100644 --- a/packages/form-core/src/FormApi.ts +++ b/packages/form-core/src/FormApi.ts @@ -220,6 +220,37 @@ export interface FormValidators< onDynamicAsyncDebounceMs?: number } +export interface FormListenerFieldProps< + TFormData, + TOnMount extends undefined | FormValidateOrFn, + TOnChange extends undefined | FormValidateOrFn, + TOnChangeAsync extends undefined | FormAsyncValidateOrFn, + TOnBlur extends undefined | FormValidateOrFn, + TOnBlurAsync extends undefined | FormAsyncValidateOrFn, + TOnSubmit extends undefined | FormValidateOrFn, + TOnSubmitAsync extends undefined | FormAsyncValidateOrFn, + TOnDynamic extends undefined | FormValidateOrFn, + TOnDynamicAsync extends undefined | FormAsyncValidateOrFn, + TOnServer extends undefined | FormAsyncValidateOrFn, + TSubmitMeta = never, +> { + formApi: FormApi< + TFormData, + TOnMount, + TOnChange, + TOnChangeAsync, + TOnBlur, + TOnBlurAsync, + TOnSubmit, + TOnSubmitAsync, + TOnDynamic, + TOnDynamicAsync, + TOnServer, + TSubmitMeta + > + fieldApi: AnyFieldApi +} + export interface FormListeners< TFormData, TOnMount extends undefined | FormValidateOrFn, @@ -234,8 +265,8 @@ export interface FormListeners< TOnServer extends undefined | FormAsyncValidateOrFn, TSubmitMeta = never, > { - onChange?: (props: { - formApi: FormApi< + onChange?: ( + props: FormListenerFieldProps< TFormData, TOnMount, TOnChange, @@ -248,13 +279,12 @@ export interface FormListeners< TOnDynamicAsync, TOnServer, TSubmitMeta - > - fieldApi: AnyFieldApi - }) => void + >, + ) => void onChangeDebounceMs?: number - onBlur?: (props: { - formApi: FormApi< + onBlur?: ( + props: FormListenerFieldProps< TFormData, TOnMount, TOnChange, @@ -267,9 +297,8 @@ export interface FormListeners< TOnDynamicAsync, TOnServer, TSubmitMeta - > - fieldApi: AnyFieldApi - }) => void + >, + ) => void onBlurDebounceMs?: number onMount?: (props: { @@ -307,8 +336,8 @@ export interface FormListeners< meta: TSubmitMeta }) => void - onFieldUnmount?: (props: { - formApi: FormApi< + onFieldUnmount?: ( + props: FormListenerFieldProps< TFormData, TOnMount, TOnChange, @@ -321,9 +350,8 @@ export interface FormListeners< TOnDynamicAsync, TOnServer, TSubmitMeta - > - fieldApi: AnyFieldApi - }) => void + >, + ) => void } /**