Skip to content

Commit 4f6556d

Browse files
committed
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.
1 parent 254f157 commit 4f6556d

1 file changed

Lines changed: 43 additions & 15 deletions

File tree

packages/form-core/src/FormApi.ts

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,37 @@ export interface FormValidators<
220220
onDynamicAsyncDebounceMs?: number
221221
}
222222

223+
export interface FormListenerFieldProps<
224+
TFormData,
225+
TOnMount extends undefined | FormValidateOrFn<TFormData>,
226+
TOnChange extends undefined | FormValidateOrFn<TFormData>,
227+
TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
228+
TOnBlur extends undefined | FormValidateOrFn<TFormData>,
229+
TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
230+
TOnSubmit extends undefined | FormValidateOrFn<TFormData>,
231+
TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
232+
TOnDynamic extends undefined | FormValidateOrFn<TFormData>,
233+
TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
234+
TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
235+
TSubmitMeta = never,
236+
> {
237+
formApi: FormApi<
238+
TFormData,
239+
TOnMount,
240+
TOnChange,
241+
TOnChangeAsync,
242+
TOnBlur,
243+
TOnBlurAsync,
244+
TOnSubmit,
245+
TOnSubmitAsync,
246+
TOnDynamic,
247+
TOnDynamicAsync,
248+
TOnServer,
249+
TSubmitMeta
250+
>
251+
fieldApi: AnyFieldApi
252+
}
253+
223254
export interface FormListeners<
224255
TFormData,
225256
TOnMount extends undefined | FormValidateOrFn<TFormData>,
@@ -234,8 +265,8 @@ export interface FormListeners<
234265
TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
235266
TSubmitMeta = never,
236267
> {
237-
onChange?: (props: {
238-
formApi: FormApi<
268+
onChange?: (
269+
props: FormListenerFieldProps<
239270
TFormData,
240271
TOnMount,
241272
TOnChange,
@@ -248,13 +279,12 @@ export interface FormListeners<
248279
TOnDynamicAsync,
249280
TOnServer,
250281
TSubmitMeta
251-
>
252-
fieldApi: AnyFieldApi
253-
}) => void
282+
>,
283+
) => void
254284
onChangeDebounceMs?: number
255285

256-
onBlur?: (props: {
257-
formApi: FormApi<
286+
onBlur?: (
287+
props: FormListenerFieldProps<
258288
TFormData,
259289
TOnMount,
260290
TOnChange,
@@ -267,9 +297,8 @@ export interface FormListeners<
267297
TOnDynamicAsync,
268298
TOnServer,
269299
TSubmitMeta
270-
>
271-
fieldApi: AnyFieldApi
272-
}) => void
300+
>,
301+
) => void
273302
onBlurDebounceMs?: number
274303

275304
onMount?: (props: {
@@ -307,8 +336,8 @@ export interface FormListeners<
307336
meta: TSubmitMeta
308337
}) => void
309338

310-
onFieldUnmount?: (props: {
311-
formApi: FormApi<
339+
onFieldUnmount?: (
340+
props: FormListenerFieldProps<
312341
TFormData,
313342
TOnMount,
314343
TOnChange,
@@ -321,9 +350,8 @@ export interface FormListeners<
321350
TOnDynamicAsync,
322351
TOnServer,
323352
TSubmitMeta
324-
>
325-
fieldApi: AnyFieldApi
326-
}) => void
353+
>,
354+
) => void
327355
}
328356

329357
/**

0 commit comments

Comments
 (0)