Skip to content

Commit

Permalink
TTransformedValues generic in a few more places
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinresol committed May 21, 2024
1 parent 7570504 commit 7a42748
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 37 deletions.
58 changes: 29 additions & 29 deletions reports/api-extractor.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export type Control<TFieldValues extends FieldValues = FieldValues, TContext = a
watch: boolean;
};
_reset: UseFormReset<TFieldValues>;
_options: UseFormProps<TFieldValues, TContext>;
_options: UseFormProps<TFieldValues, TContext, TTransformedValues>;
_getDirty: GetIsDirty;
_resetDefaultValues: Noop;
_formState: FormState<TFieldValues>;
Expand Down Expand Up @@ -84,7 +84,7 @@ export type Control<TFieldValues extends FieldValues = FieldValues, TContext = a
};

// @public
export const Controller: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: ControllerProps<TFieldValues, TName>) => ReactElement<any, string | JSXElementConstructor<any>>;
export const Controller: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TTransformedValues extends FieldValues = TFieldValues>(props: ControllerProps<TFieldValues, TName, TTransformedValues>) => ReactElement<any, string | JSXElementConstructor<any>>;

// @public (undocumented)
export type ControllerFieldState = {
Expand All @@ -96,13 +96,13 @@ export type ControllerFieldState = {
};

// @public
export type ControllerProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
export type ControllerProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TTransformedValues extends FieldValues = TFieldValues> = {
render: ({ field, fieldState, formState, }: {
field: ControllerRenderProps<TFieldValues, TName>;
fieldState: ControllerFieldState;
formState: UseFormStateReturn<TFieldValues>;
}) => React_2.ReactElement;
} & UseControllerProps<TFieldValues, TName>;
} & UseControllerProps<TFieldValues, TName, TTransformedValues>;

// @public (undocumented)
export type ControllerRenderProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
Expand Down Expand Up @@ -260,11 +260,11 @@ export type FieldValue<TFieldValues extends FieldValues> = TFieldValues[Internal
export type FieldValues = Record<string, any>;

// @public
export function Form<T extends FieldValues, U extends FieldValues | undefined = undefined>(props: FormProps<T, U>): React_2.JSX.Element;
export function Form<T extends FieldValues, U extends FieldValues = T>(props: FormProps<T, U>): React_2.JSX.Element;

// @public (undocumented)
export type FormProps<TFieldValues extends FieldValues, TTransformedValues extends FieldValues | undefined = undefined> = Omit<React_2.FormHTMLAttributes<HTMLFormElement>, 'onError' | 'onSubmit'> & Partial<{
control: Control<TFieldValues>;
export type FormProps<TFieldValues extends FieldValues, TTransformedValues extends FieldValues = TFieldValues> = Omit<React_2.FormHTMLAttributes<HTMLFormElement>, 'onError' | 'onSubmit'> & Partial<{
control: Control<TFieldValues, any, TTransformedValues>;
headers: Record<string, string>;
validateStatus: (status: number) => boolean;
onError: ({ response, error, }: {
Expand Down Expand Up @@ -502,7 +502,7 @@ export type RegisterOptions<TFieldValues extends FieldValues = FieldValues, TFie
});

// @public (undocumented)
export type Resolver<TFieldValues extends FieldValues = FieldValues, TContext = any> = (values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>> | ResolverResult<TFieldValues>;
export type Resolver<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues extends FieldValues = TFieldValues> = (values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues, TTransformedValues>> | ResolverResult<TFieldValues, TTransformedValues>;

// @public (undocumented)
export type ResolverError<TFieldValues extends FieldValues = FieldValues> = {
Expand All @@ -523,7 +523,7 @@ export interface ResolverOptions<TFieldValues extends FieldValues> {
}

// @public (undocumented)
export type ResolverResult<TFieldValues extends FieldValues = FieldValues> = ResolverSuccess<TFieldValues> | ResolverError<TFieldValues>;
export type ResolverResult<TFieldValues extends FieldValues = FieldValues, TTransformedValues extends FieldValues = TFieldValues> = ResolverSuccess<TTransformedValues> | ResolverError<TFieldValues>;

// @public (undocumented)
export type ResolverSuccess<TFieldValues extends FieldValues = FieldValues> = {
Expand Down Expand Up @@ -580,15 +580,15 @@ export type UnpackNestedValue<T> = T extends NestedValue<infer U> ? U : T extend
} : T;

// @public
export function useController<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: UseControllerProps<TFieldValues, TName>): UseControllerReturn<TFieldValues, TName>;
export function useController<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TTransformedValues extends FieldValues = TFieldValues>(props: UseControllerProps<TFieldValues, TName, TTransformedValues>): UseControllerReturn<TFieldValues, TName>;

// @public (undocumented)
export type UseControllerProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
export type UseControllerProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TTransformedValues extends FieldValues = TFieldValues> = {
name: TName;
rules?: Omit<RegisterOptions<TFieldValues, TName>, 'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'>;
shouldUnregister?: boolean;
defaultValue?: FieldPathValue<TFieldValues, TName>;
control?: Control<TFieldValues>;
control?: Control<TFieldValues, any, TTransformedValues>;
disabled?: boolean;
};

Expand All @@ -615,10 +615,10 @@ export type UseFieldArrayMove = (indexA: number, indexB: number) => void;
export type UseFieldArrayPrepend<TFieldValues extends FieldValues, TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>> = (value: FieldArray<TFieldValues, TFieldArrayName> | FieldArray<TFieldValues, TFieldArrayName>[], options?: FieldArrayMethodProps) => void;

// @public (undocumented)
export type UseFieldArrayProps<TFieldValues extends FieldValues = FieldValues, TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>, TKeyName extends string = 'id'> = {
export type UseFieldArrayProps<TFieldValues extends FieldValues = FieldValues, TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>, TKeyName extends string = 'id', TTransformedValues extends FieldValues = TFieldValues> = {
name: TFieldArrayName;
keyName?: TKeyName;
control?: Control<TFieldValues>;
control?: Control<TFieldValues, any, TTransformedValues>;
rules?: {
validate?: Validate<FieldArray<TFieldValues, TFieldArrayName>[], TFieldValues> | Record<string, Validate<FieldArray<TFieldValues, TFieldArrayName>[], TFieldValues>>;
} & Pick<RegisterOptions<TFieldValues>, 'maxLength' | 'minLength' | 'required'>;
Expand Down Expand Up @@ -651,7 +651,7 @@ export type UseFieldArraySwap = (indexA: number, indexB: number) => void;
export type UseFieldArrayUpdate<TFieldValues extends FieldValues, TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>> = (index: number, value: FieldArray<TFieldValues, TFieldArrayName>) => void;

// @public
export function useForm<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues extends FieldValues = TFieldValues>(props?: UseFormProps<TFieldValues, TContext>): UseFormReturn<TFieldValues, TContext, TTransformedValues>;
export function useForm<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues extends FieldValues = TFieldValues>(props?: UseFormProps<TFieldValues, TContext, TTransformedValues>): UseFormReturn<TFieldValues, TContext, TTransformedValues>;

// @public
export type UseFormClearErrors<TFieldValues extends FieldValues> = (name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[] | `root.${string}` | 'root') => void;
Expand Down Expand Up @@ -679,15 +679,15 @@ export type UseFormGetValues<TFieldValues extends FieldValues> = {
export type UseFormHandleSubmit<TFieldValues extends FieldValues, TTransformedValues extends FieldValues = TFieldValues> = (onValid: SubmitHandler<TTransformedValues>, onInvalid?: SubmitErrorHandler<TFieldValues>) => (e?: React_2.BaseSyntheticEvent) => Promise<void>;

// @public (undocumented)
export type UseFormProps<TFieldValues extends FieldValues = FieldValues, TContext = any> = Partial<{
export type UseFormProps<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues extends FieldValues = TFieldValues> = Partial<{
mode: Mode;
disabled: boolean;
reValidateMode: Exclude<Mode, 'onTouched' | 'all'>;
defaultValues: DefaultValues<TFieldValues> | AsyncDefaultValues<TFieldValues>;
values: TFieldValues;
errors: FieldErrors<TFieldValues>;
resetOptions: Parameters<UseFormReset<TFieldValues>>[1];
resolver: Resolver<TFieldValues, TContext>;
resolver: Resolver<TFieldValues, TContext, TTransformedValues>;
context: TContext;
shouldFocusError: boolean;
shouldUnregister: boolean;
Expand Down Expand Up @@ -759,11 +759,11 @@ export type UseFormSetFocus<TFieldValues extends FieldValues> = <TFieldName exte
export type UseFormSetValue<TFieldValues extends FieldValues> = <TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(name: TFieldName, value: FieldPathValue<TFieldValues, TFieldName>, options?: SetValueConfig) => void;

// @public
export function useFormState<TFieldValues extends FieldValues = FieldValues>(props?: UseFormStateProps<TFieldValues>): UseFormStateReturn<TFieldValues>;
export function useFormState<TFieldValues extends FieldValues = FieldValues, TTransformedValues extends FieldValues = TFieldValues>(props?: UseFormStateProps<TFieldValues, TTransformedValues>): UseFormStateReturn<TFieldValues>;

// @public (undocumented)
export type UseFormStateProps<TFieldValues extends FieldValues> = Partial<{
control?: Control<TFieldValues>;
export type UseFormStateProps<TFieldValues extends FieldValues, TTransformedValues extends FieldValues = TFieldValues> = Partial<{
control?: Control<TFieldValues, any, TTransformedValues>;
disabled?: boolean;
name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[];
exact?: boolean;
Expand Down Expand Up @@ -791,27 +791,27 @@ export type UseFormWatch<TFieldValues extends FieldValues> = {
};

// @public
export function useWatch<TFieldValues extends FieldValues = FieldValues>(props: {
export function useWatch<TFieldValues extends FieldValues = FieldValues, TTransformedValues extends FieldValues = TFieldValues>(props: {
defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;
control?: Control<TFieldValues>;
control?: Control<TFieldValues, any, TTransformedValues>;
disabled?: boolean;
exact?: boolean;
}): DeepPartialSkipArrayKey<TFieldValues>;

// @public
export function useWatch<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: {
export function useWatch<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TTransformedValues extends FieldValues = TFieldValues>(props: {
name: TFieldName;
defaultValue?: FieldPathValue<TFieldValues, TFieldName>;
control?: Control<TFieldValues>;
control?: Control<TFieldValues, any, TTransformedValues>;
disabled?: boolean;
exact?: boolean;
}): FieldPathValue<TFieldValues, TFieldName>;

// @public
export function useWatch<TFieldValues extends FieldValues = FieldValues, TFieldNames extends readonly FieldPath<TFieldValues>[] = readonly FieldPath<TFieldValues>[]>(props: {
export function useWatch<TFieldValues extends FieldValues = FieldValues, TFieldNames extends readonly FieldPath<TFieldValues>[] = readonly FieldPath<TFieldValues>[], TTransformedValues extends FieldValues = TFieldValues>(props: {
name: readonly [...TFieldNames];
defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;
control?: Control<TFieldValues>;
control?: Control<TFieldValues, any, TTransformedValues>;
disabled?: boolean;
exact?: boolean;
}): FieldPathValues<TFieldValues, TFieldNames>;
Expand All @@ -820,11 +820,11 @@ export function useWatch<TFieldValues extends FieldValues = FieldValues, TFieldN
export function useWatch<TFieldValues extends FieldValues = FieldValues>(): DeepPartialSkipArrayKey<TFieldValues>;

// @public (undocumented)
export type UseWatchProps<TFieldValues extends FieldValues = FieldValues> = {
export type UseWatchProps<TFieldValues extends FieldValues = FieldValues, TTransformedValues extends FieldValues = TFieldValues> = {
defaultValue?: unknown;
disabled?: boolean;
name?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[] | readonly FieldPath<TFieldValues>[];
control?: Control<TFieldValues>;
control?: Control<TFieldValues, any, TTransformedValues>;
exact?: boolean;
};

Expand Down Expand Up @@ -872,7 +872,7 @@ export type WatchObserver<TFieldValues extends FieldValues> = (value: DeepPartia

// Warnings were encountered during analysis:
//
// src/types/form.ts:444:3 - (ae-forgotten-export) The symbol "Subscription" needs to be exported by the entry point index.d.ts
// src/types/form.ts:445:3 - (ae-forgotten-export) The symbol "Subscription" needs to be exported by the entry point index.d.ts

// (No @packageDocumentation comment for this package)

Expand Down
2 changes: 1 addition & 1 deletion src/logic/createFormControl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ export function createFormControl<
TContext = any,
TTransformedValues extends FieldValues = TFieldValues,
>(
props: UseFormProps<TFieldValues, TContext> = {},
props: UseFormProps<TFieldValues, TContext, TTransformedValues> = {},
): Omit<
UseFormReturn<TFieldValues, TContext, TTransformedValues>,
'formState'
Expand Down
5 changes: 3 additions & 2 deletions src/types/form.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ type AsyncDefaultValues<TFieldValues> = (
export type UseFormProps<
TFieldValues extends FieldValues = FieldValues,
TContext = any,
TTransformedValues extends FieldValues = TFieldValues,
> = Partial<{
mode: Mode;
disabled: boolean;
Expand All @@ -115,7 +116,7 @@ export type UseFormProps<
values: TFieldValues;
errors: FieldErrors<TFieldValues>;
resetOptions: Parameters<UseFormReset<TFieldValues>>[1];
resolver: Resolver<TFieldValues, TContext>;
resolver: Resolver<TFieldValues, TContext, TTransformedValues>;
context: TContext;
shouldFocusError: boolean;
shouldUnregister: boolean;
Expand Down Expand Up @@ -774,7 +775,7 @@ export type Control<
watch: boolean;
};
_reset: UseFormReset<TFieldValues>;
_options: UseFormProps<TFieldValues, TContext>;
_options: UseFormProps<TFieldValues, TContext, TTransformedValues>;
_getDirty: GetIsDirty;
_resetDefaultValues: Noop;
_formState: FormState<TFieldValues>;
Expand Down
12 changes: 8 additions & 4 deletions src/types/resolvers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ export type ResolverError<TFieldValues extends FieldValues = FieldValues> = {
errors: FieldErrors<TFieldValues>;
};

export type ResolverResult<TFieldValues extends FieldValues = FieldValues> =
| ResolverSuccess<TFieldValues>
| ResolverError<TFieldValues>;
export type ResolverResult<
TFieldValues extends FieldValues = FieldValues,
TTransformedValues extends FieldValues = TFieldValues,
> = ResolverSuccess<TTransformedValues> | ResolverError<TFieldValues>;

export interface ResolverOptions<TFieldValues extends FieldValues> {
criteriaMode?: CriteriaMode;
Expand All @@ -26,8 +27,11 @@ export interface ResolverOptions<TFieldValues extends FieldValues> {
export type Resolver<
TFieldValues extends FieldValues = FieldValues,
TContext = any,
TTransformedValues extends FieldValues = TFieldValues,
> = (
values: TFieldValues,
context: TContext | undefined,
options: ResolverOptions<TFieldValues>,
) => Promise<ResolverResult<TFieldValues>> | ResolverResult<TFieldValues>;
) =>
| Promise<ResolverResult<TFieldValues, TTransformedValues>>
| ResolverResult<TFieldValues, TTransformedValues>;
2 changes: 1 addition & 1 deletion src/useForm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export function useForm<
TContext = any,
TTransformedValues extends FieldValues = TFieldValues,
>(
props: UseFormProps<TFieldValues, TContext> = {},
props: UseFormProps<TFieldValues, TContext, TTransformedValues> = {},
): UseFormReturn<TFieldValues, TContext, TTransformedValues> {
const _formControl = React.useRef<
UseFormReturn<TFieldValues, TContext, TTransformedValues> | undefined
Expand Down

0 comments on commit 7a42748

Please sign in to comment.