Skip to content

Commit

Permalink
📇 fix type infer with UseFormHandleSubmit (react-hook-form#7405)
Browse files Browse the repository at this point in the history
* fix type infer with UseFormHandleSubmit

* update api extrator

* update with test case

* fix newlineKind with lf

* shift down newlineKind

* update type tests

* include no-op generic for handleSubmit

* Revert "include no-op generic for handleSubmit"

This reverts commit 5a2ce64.

* adding no-op generic

* Revert "adding no-op generic"

This reverts commit 46a1295.

* Revert "Revert "adding no-op generic""

This reverts commit 3701247.

* update api extrator

* update test descriptions

* fix incorrect generic

* ignore eslint with reports

* improve isDateObject check

* minor code reduce

* remove git attribute

* Revert "minor code reduce"

This reverts commit 05858e8.
  • Loading branch information
bluebill1049 authored Jan 4, 2022
1 parent 66e7797 commit 70f2902
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 7 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
/coverage
/src/types/global.d.ts
!.*.js
/reports
2 changes: 0 additions & 2 deletions .gitattributes

This file was deleted.

1 change: 1 addition & 0 deletions api-extractor.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"newlineKind": "lf",

/**
* Optionally specifies another JSON config file that this file extends from. This provides a way for
Expand Down
2 changes: 1 addition & 1 deletion reports/api-extractor.md
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ export type UseFormGetValues<TFieldValues extends FieldValues> = {
};

// @public (undocumented)
export type UseFormHandleSubmit<TFieldValues extends FieldValues> = <TSubmitFieldValues extends FieldValues = TFieldValues>(onValid: SubmitHandler<TSubmitFieldValues>, onInvalid?: SubmitErrorHandler<TFieldValues>) => (e?: React_2.BaseSyntheticEvent) => Promise<void>;
export type UseFormHandleSubmit<TFieldValues extends FieldValues> = <_>(onValid: SubmitHandler<TFieldValues>, onInvalid?: SubmitErrorHandler<TFieldValues>) => (e?: React_2.BaseSyntheticEvent) => Promise<void>;

// @public (undocumented)
export type UseFormProps<TFieldValues extends FieldValues = FieldValues, TContext extends object = object> = Partial<{
Expand Down
27 changes: 27 additions & 0 deletions src/__tests__/types/form.test-d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { expectType } from 'tsd';

import { useForm } from '../../useForm';

/** {@link UseFormHandleSubmit} */ {
/** it should infer the correct defaultValues from useForm */ {
/* eslint-disable react-hooks/rules-of-hooks */
const { handleSubmit } = useForm({
defaultValues: {
test: '',
test1: 2,
},
});

handleSubmit((data) => expectType<{ test: string; test1: number }>(data));
}

/** it should infer the correct defaultValues from useForm generic */ {
/* eslint-disable react-hooks/rules-of-hooks */
const { handleSubmit } = useForm<{
test: string;
test1: number;
}>();

handleSubmit((data) => expectType<{ test: string; test1: number }>(data));
}
}
6 changes: 2 additions & 4 deletions src/types/form.ts
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,8 @@ export type UseFormUnregister<TFieldValues extends FieldValues> = (
> & { keepValue?: boolean; keepDefaultValue?: boolean; keepError?: boolean },
) => void;

export type UseFormHandleSubmit<TFieldValues extends FieldValues> = <
TSubmitFieldValues extends FieldValues = TFieldValues,
>(
onValid: SubmitHandler<TSubmitFieldValues>,
export type UseFormHandleSubmit<TFieldValues extends FieldValues> = <_>(
onValid: SubmitHandler<TFieldValues>,
onInvalid?: SubmitErrorHandler<TFieldValues>,
) => (e?: React.BaseSyntheticEvent) => Promise<void>;

Expand Down

0 comments on commit 70f2902

Please sign in to comment.