Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pickers] Add TValidationProps generic to the PickerManager interface #16832

Merged
merged 1 commit into from
Mar 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 2 additions & 12 deletions packages/x-date-pickers-pro/src/managers/useDateRangeManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ export type UseDateRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure ex
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
DateRangeValidationError,
DateRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>,
DateRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>
ValidateDateRangeProps,
DateRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>
>;

export interface DateRangeManagerFieldInternalProps<
Expand All @@ -70,13 +70,3 @@ export interface DateRangeManagerFieldInternalProps<
>,
RangeFieldSeparatorProps,
ExportedValidateDateRangeProps {}

interface DateRangeManagerFieldInternalPropsWithDefaults<
TEnableAccessibleFieldDOMStructure extends boolean,
> extends UseFieldInternalProps<
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
DateRangeValidationError
>,
ValidateDateRangeProps,
RangeFieldSeparatorProps {}
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ export type UseDateTimeRangeManagerReturnValue<TEnableAccessibleFieldDOMStructur
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
DateTimeRangeValidationError,
DateTimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>,
DateTimeRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>
ValidateDateTimeRangeProps,
DateTimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>
>;

export interface DateTimeRangeManagerFieldInternalProps<
Expand All @@ -73,13 +73,3 @@ export interface DateTimeRangeManagerFieldInternalProps<
ExportedValidateDateTimeRangeProps,
AmPmProps,
RangeFieldSeparatorProps {}

interface DateTimeRangeManagerFieldInternalPropsWithDefaults<
TEnableAccessibleFieldDOMStructure extends boolean,
> extends UseFieldInternalProps<
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
DateTimeRangeValidationError
>,
ValidateDateTimeRangeProps,
RangeFieldSeparatorProps {}
13 changes: 2 additions & 11 deletions packages/x-date-pickers-pro/src/managers/useTimeRangeManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ export type UseTimeRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure ex
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
TimeRangeValidationError,
TimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>,
TimeRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>
ValidateTimeRangeProps,
TimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>
>;

export interface TimeRangeManagerFieldInternalProps<
Expand All @@ -76,12 +76,3 @@ export interface TimeRangeManagerFieldInternalProps<
ExportedValidateTimeRangeProps,
AmPmProps,
RangeFieldSeparatorProps {}

interface TimeRangeManagerFieldInternalPropsWithDefaults<
TEnableAccessibleFieldDOMStructure extends boolean,
> extends UseFieldInternalProps<
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
TimeRangeValidationError
>,
ValidateTimeRangeProps {}
17 changes: 13 additions & 4 deletions packages/x-date-pickers/src/internals/models/manager.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type { PickerManager } from '../../models';
import type { UseFieldInternalProps } from '../hooks/useField';

export type PickerAnyManager = PickerManager<any, any, any, any, any>;

Expand All @@ -7,15 +8,15 @@ type PickerManagerProperties<TManager extends PickerAnyManager> =
infer TValue,
infer TEnableAccessibleFieldDOMStructure,
infer TError,
infer TFieldInternalProps,
infer TFieldInternalPropsWithDefaults
infer TValidationProps,
infer TFieldInternalProps
>
? {
value: TValue;
enableAccessibleFieldDOMStructure: TEnableAccessibleFieldDOMStructure;
error: TError;
validationProps: TValidationProps;
fieldInternalProps: TFieldInternalProps;
fieldInternalPropsWithDefaults: TFieldInternalPropsWithDefaults;
}
: never;

Expand All @@ -28,8 +29,16 @@ export type PickerManagerError<TManager extends PickerAnyManager> =
export type PickerManagerFieldInternalProps<TManager extends PickerAnyManager> =
PickerManagerProperties<TManager>['fieldInternalProps'];

export type PickerManagerValidationProps<TManager extends PickerAnyManager> =
PickerManagerProperties<TManager>['validationProps'];

export type PickerManagerFieldInternalPropsWithDefaults<TManager extends PickerAnyManager> =
PickerManagerProperties<TManager>['fieldInternalPropsWithDefaults'];
UseFieldInternalProps<
PickerManagerValue<TManager>,
PickerManagerEnableAccessibleFieldDOMStructure<TManager>,
PickerManagerError<TManager>
> &
PickerManagerValidationProps<TManager>;

export type PickerManagerEnableAccessibleFieldDOMStructure<TManager extends PickerAnyManager> =
PickerManagerProperties<TManager>['enableAccessibleFieldDOMStructure'];
20 changes: 7 additions & 13 deletions packages/x-date-pickers/src/managers/useDateManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
ValidateDatePropsToDefault,
ValidateDateProps,
} from '../validation/validateDate';
import { PickerValue } from '../internals/models';
import { PickerManagerFieldInternalPropsWithDefaults, PickerValue } from '../internals/models';

export function useDateManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(
parameters: UseDateManagerParameters<TEnableAccessibleFieldDOMStructure> = {},
Expand Down Expand Up @@ -70,8 +70,8 @@ export type UseDateManagerReturnValue<TEnableAccessibleFieldDOMStructure extends
PickerValue,
TEnableAccessibleFieldDOMStructure,
DateValidationError,
DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>,
DateManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>
ValidateDateProps,
DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>
>;

export interface DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean>
Expand All @@ -81,15 +81,6 @@ export interface DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructur
>,
ExportedValidateDateProps {}

interface DateManagerFieldInternalPropsWithDefaults<
TEnableAccessibleFieldDOMStructure extends boolean,
> extends UseFieldInternalProps<
PickerValue,
TEnableAccessibleFieldDOMStructure,
DateValidationError
>,
ValidateDateProps {}

type DateManagerFieldPropsToDefault = 'format' | ValidateDatePropsToDefault;

interface GetDateFieldInternalPropsDefaultsParameters
Expand All @@ -98,4 +89,7 @@ interface GetDateFieldInternalPropsDefaultsParameters
}

interface GetDateFieldInternalPropsDefaultsReturnValue
extends Pick<DateManagerFieldInternalPropsWithDefaults<true>, DateManagerFieldPropsToDefault> {}
extends Pick<
PickerManagerFieldInternalPropsWithDefaults<UseDateManagerReturnValue<true>>,
DateManagerFieldPropsToDefault
> {}
17 changes: 4 additions & 13 deletions packages/x-date-pickers/src/managers/useDateTimeManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {
ValidateDateTimeProps,
ValidateDateTimePropsToDefault,
} from '../validation/validateDateTime';
import { PickerValue } from '../internals/models';
import { PickerManagerFieldInternalPropsWithDefaults, PickerValue } from '../internals/models';

export function useDateTimeManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(
parameters: UseDateTimeManagerParameters<TEnableAccessibleFieldDOMStructure> = {},
Expand Down Expand Up @@ -88,8 +88,8 @@ export type UseDateTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure ext
PickerValue,
TEnableAccessibleFieldDOMStructure,
DateTimeValidationError,
DateTimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>,
DateTimeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>
ValidateDateTimeProps,
DateTimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>
>;

export interface DateTimeManagerFieldInternalProps<
Expand All @@ -105,15 +105,6 @@ export interface DateTimeManagerFieldInternalProps<
ExportedValidateDateTimeProps,
AmPmProps {}

interface DateTimeManagerFieldInternalPropsWithDefaults<
TEnableAccessibleFieldDOMStructure extends boolean,
> extends UseFieldInternalProps<
PickerValue,
TEnableAccessibleFieldDOMStructure,
DateTimeValidationError
>,
ValidateDateTimeProps {}

type DateTimeManagerFieldPropsToDefault =
| 'format'
// minTime and maxTime can still be undefined after applying defaults.
Expand All @@ -131,6 +122,6 @@ interface GetDateTimeFieldInternalPropsDefaultsParameters

interface GetDateTimeFieldInternalPropsDefaultsReturnValue
extends Pick<
DateTimeManagerFieldInternalPropsWithDefaults<true>,
PickerManagerFieldInternalPropsWithDefaults<UseDateTimeManagerReturnValue<true>>,
DateTimeManagerFieldPropsToDefault | 'disableIgnoringDatePartForTimeValidation'
> {}
20 changes: 7 additions & 13 deletions packages/x-date-pickers/src/managers/useTimeManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
ValidateTimeProps,
ValidateTimePropsToDefault,
} from '../validation/validateTime';
import { PickerValue } from '../internals/models';
import { PickerManagerFieldInternalPropsWithDefaults, PickerValue } from '../internals/models';

export function useTimeManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(
parameters: UseTimeManagerParameters<TEnableAccessibleFieldDOMStructure> = {},
Expand Down Expand Up @@ -73,8 +73,8 @@ export type UseTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure extends
PickerValue,
TEnableAccessibleFieldDOMStructure,
TimeValidationError,
TimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>,
TimeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>
ValidateTimeProps,
TimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>
>;

export interface TimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean>
Expand All @@ -85,15 +85,6 @@ export interface TimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructur
ExportedValidateTimeProps,
AmPmProps {}

interface TimeManagerFieldInternalPropsWithDefaults<
TEnableAccessibleFieldDOMStructure extends boolean,
> extends UseFieldInternalProps<
PickerValue,
TEnableAccessibleFieldDOMStructure,
TimeValidationError
>,
ValidateTimeProps {}

type TimeManagerFieldPropsToDefault = 'format' | ValidateTimePropsToDefault;

interface GetTimeFieldInternalPropsDefaultsParameters
Expand All @@ -102,4 +93,7 @@ interface GetTimeFieldInternalPropsDefaultsParameters
}

interface GetTimeFieldInternalPropsDefaultsReturnValue
extends Pick<TimeManagerFieldInternalPropsWithDefaults<true>, TimeManagerFieldPropsToDefault> {}
extends Pick<
PickerManagerFieldInternalPropsWithDefaults<UseTimeManagerReturnValue<true>>,
TimeManagerFieldPropsToDefault
> {}
10 changes: 3 additions & 7 deletions packages/x-date-pickers/src/models/manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,8 @@ export interface PickerManager<
TValue extends PickerValidValue,
TEnableAccessibleFieldDOMStructure extends boolean,
TError,
TValidationProps extends {},
TFieldInternalProps extends {},
TFieldInternalPropsWithDefaults extends UseFieldInternalProps<
TValue,
TEnableAccessibleFieldDOMStructure,
TError
>,
> {
/**
* The type of the value (e.g. 'date', 'date-time', 'time').
Expand All @@ -55,7 +51,7 @@ export interface PickerManager<
* });
* ```
*/
validator: Validator<TValue, TError, TFieldInternalPropsWithDefaults>;
validator: Validator<TValue, TError, TValidationProps>;
/**
* Object containing basic methods to interact with the value of the picker or field.
* This property is not part of the public API and should not be used directly.
Expand Down Expand Up @@ -83,7 +79,7 @@ export interface PickerManager<
*/
internal_applyDefaultsToFieldInternalProps: (
parameters: ApplyDefaultsToFieldInternalPropsParameters<TFieldInternalProps>,
) => TFieldInternalPropsWithDefaults;
) => UseFieldInternalProps<TValue, TEnableAccessibleFieldDOMStructure, TError> & TValidationProps;
/**
* Returns the aria-label to apply on the button that opens the picker.
* @param {GetOpenPickerButtonAriaLabelParameters<TValue>} params The parameters to get the aria-label.
Expand Down