From 7ac942a9e3add8028975c4543fb92efe6de34128 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette Date: Fri, 26 Aug 2022 12:54:02 +0200 Subject: [PATCH] Set `position` non nullable --- .../DateRangePicker/DateRangePickerView.tsx | 21 ++++++++++--------- .../validation/useDateRangeValidation.ts | 16 +++----------- .../src/internal/models/dateRange.ts | 14 +++++++++++++ 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerView.tsx b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerView.tsx index 3ec1c82fad1d..379c940c4726 100644 --- a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerView.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerView.tsx @@ -11,8 +11,13 @@ import { PickerStatePickerProps, DayPickerProps, BaseDateValidationProps, + DayValidationProps, } from '@mui/x-date-pickers/internals'; -import { DateRange, CurrentlySelectingRangeEndProps } from '../internal/models/dateRange'; +import { + DateRange, + CurrentlySelectingRangeEndProps, + DayRangeValidationProps, +} from '../internal/models/dateRange'; import { isRangeValid } from '../internal/utils/date-utils'; import { calculateRangeChange } from './date-range-manager'; import { DateRangePickerToolbar } from './DateRangePickerToolbar'; @@ -38,9 +43,13 @@ export interface DateRangePickerViewSlotsComponentsProps export interface ExportedDateRangePickerViewProps extends ExportedDesktopDateRangeCalendarProps, + DayRangeValidationProps, Omit< ExportedCalendarPickerProps, - 'onYearChange' | 'renderDay' | keyof BaseDateValidationProps + | 'onYearChange' + | 'renderDay' + | keyof BaseDateValidationProps + | keyof DayValidationProps > { /** * Overrideable components. @@ -74,14 +83,6 @@ export interface ExportedDateRangePickerViewProps * className applied to the root component. */ className?: string; - /** - * Disable specific date. @DateIOType - * @template TDate - * @param {TDate} day The date to test. - * @param {string} position The date to test, 'start' or 'end'. - * @returns {boolean} Returns `true` if the date should be disabled. - */ - shouldDisableDate?: (day: TDate, position?: 'start' | 'end') => boolean; } interface DateRangePickerViewProps diff --git a/packages/x-date-pickers-pro/src/internal/hooks/validation/useDateRangeValidation.ts b/packages/x-date-pickers-pro/src/internal/hooks/validation/useDateRangeValidation.ts index 969eb1f59cb2..d4420e9b2dd3 100644 --- a/packages/x-date-pickers-pro/src/internal/hooks/validation/useDateRangeValidation.ts +++ b/packages/x-date-pickers-pro/src/internal/hooks/validation/useDateRangeValidation.ts @@ -5,24 +5,14 @@ import { DateValidationError, validateDate, BaseDateValidationProps, - DayValidationProps, } from '@mui/x-date-pickers/internals'; import { isRangeValid, parseRangeInputValue } from '../../utils/date-utils'; -import { DateRange } from '../../models'; +import { DateRange, DayRangeValidationProps } from '../../models/dateRange'; export interface DateRangeValidationProps - extends DayValidationProps, + extends DayRangeValidationProps, Required>, - ValidationProps> { - /** - * Disable specific date. @DateIOType - * @template TDate - * @param {TDate} day The date to test. - * @param {string} position The date to test, 'start' or 'end'. - * @returns {boolean} Returns `true` if the date should be disabled. - */ - shouldDisableDate?: (day: TDate, position?: 'start' | 'end') => boolean; -} + ValidationProps> {} export const validateDateRange: Validator> = ({ props, diff --git a/packages/x-date-pickers-pro/src/internal/models/dateRange.ts b/packages/x-date-pickers-pro/src/internal/models/dateRange.ts index 79fee141dc0f..1b5245c54874 100644 --- a/packages/x-date-pickers-pro/src/internal/models/dateRange.ts +++ b/packages/x-date-pickers-pro/src/internal/models/dateRange.ts @@ -5,3 +5,17 @@ export interface CurrentlySelectingRangeEndProps { currentlySelectingRangeEnd: 'start' | 'end'; setCurrentlySelectingRangeEnd: (newSelectingEnd: 'start' | 'end') => void; } + +/** + * Props used to validate a day value in range pickers. + */ +export interface DayRangeValidationProps { + /** + * Disable specific date. @DateIOType + * @template TDate + * @param {TDate} day The date to test. + * @param {string} position The date to test, 'start' or 'end'. + * @returns {boolean} Returns `true` if the date should be disabled. + */ + shouldDisableDate?: (day: TDate, position: 'start' | 'end') => boolean; +}