@mui/x-date-pickers-pro 8.0.0-alpha.1 → 8.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
- package/CHANGELOG.md +2007 -230
- package/DateRangeCalendar/DateRangeCalendar.js +73 -46
- package/DateRangePicker/DateRangePicker.js +1 -4
- package/DateRangePicker/DateRangePicker.types.d.ts +6 -2
- package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
- package/DateRangePicker/DateRangePickerToolbar.js +33 -41
- package/DateRangePicker/shared.d.ts +4 -3
- package/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
- package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +1 -2
- package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +4 -5
- package/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -5
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +81 -109
- package/DateTimeRangePicker/shared.d.ts +6 -5
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
- package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +7 -2
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
- package/MobileDateRangePicker/MobileDateRangePicker.js +6 -8
- package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -16
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
- package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +9 -4
- package/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
- package/MultiInputDateRangeField/index.d.ts +5 -3
- package/MultiInputDateRangeField/index.js +2 -2
- package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.d.ts +6 -0
- package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +9 -4
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
- package/MultiInputDateTimeRangeField/index.d.ts +5 -3
- package/MultiInputDateTimeRangeField/index.js +2 -2
- package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.d.ts +6 -0
- package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +9 -4
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
- package/MultiInputTimeRangeField/index.d.ts +5 -3
- package/MultiInputTimeRangeField/index.js +2 -2
- package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.d.ts +6 -0
- package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
- package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
- package/README.md +8 -5
- package/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
- package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -16
- package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
- package/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -17
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -17
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
- package/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
- package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
- package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
- package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/hooks/index.d.ts +2 -0
- package/hooks/index.js +2 -0
- package/hooks/package.json +6 -0
- package/hooks/useMultiInputRangeField/index.d.ts +1 -0
- package/hooks/useMultiInputRangeField/index.js +1 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +53 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +17 -0
- package/{modern/internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +17 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
- package/hooks/usePickerRangePositionContext.d.ts +7 -0
- package/hooks/usePickerRangePositionContext.js +15 -0
- package/index.d.ts +2 -0
- package/index.js +4 -2
- package/internals/hooks/models/index.d.ts +1 -1
- package/internals/hooks/models/useRangePicker.d.ts +8 -11
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +8 -10
- package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +25 -16
- package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
- package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
- package/internals/hooks/useRangePosition.d.ts +4 -3
- package/internals/hooks/useRangePosition.js +1 -1
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -12
- package/internals/models/dateTimeRange.d.ts +1 -6
- package/internals/models/fields.d.ts +7 -11
- package/internals/models/index.d.ts +0 -1
- package/internals/models/index.js +0 -1
- package/internals/models/managers.d.ts +3 -0
- package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.d.ts +3 -0
- package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
- package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +72 -0
- package/internals/utils/createMultiInputRangeField/index.d.ts +3 -0
- package/internals/utils/createMultiInputRangeField/index.js +2 -0
- package/internals/utils/date-fields-utils.d.ts +6 -6
- package/internals/utils/date-range-manager.js +2 -1
- package/internals/utils/releaseInfo.js +1 -1
- package/internals/utils/valueManagers.d.ts +4 -3
- package/internals/utils/valueManagers.js +7 -7
- package/managers/index.d.ts +6 -0
- package/managers/index.js +3 -0
- package/managers/package.json +6 -0
- package/managers/useDateRangeManager.d.ts +15 -0
- package/managers/useDateRangeManager.js +33 -0
- package/managers/useDateTimeRangeManager.d.ts +15 -0
- package/managers/useDateTimeRangeManager.js +33 -0
- package/managers/useTimeRangeManager.d.ts +15 -0
- package/managers/useTimeRangeManager.js +31 -0
- package/models/fields.d.ts +7 -11
- package/models/index.d.ts +1 -2
- package/models/index.js +1 -2
- package/models/range.d.ts +0 -2
- package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/modern/DateRangeCalendar/DateRangeCalendar.js +73 -46
- package/modern/DateRangePicker/DateRangePicker.js +1 -4
- package/modern/DateRangePicker/DateRangePickerToolbar.js +33 -41
- package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
- package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
- package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +81 -109
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
- package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +6 -8
- package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -16
- package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
- package/modern/MultiInputDateRangeField/index.js +2 -2
- package/modern/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
- package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
- package/modern/MultiInputDateTimeRangeField/index.js +2 -2
- package/modern/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
- package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
- package/modern/MultiInputTimeRangeField/index.js +2 -2
- package/modern/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
- package/modern/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
- package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
- package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
- package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
- package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
- package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
- package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
- package/modern/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
- package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/modern/hooks/index.js +2 -0
- package/modern/hooks/useMultiInputRangeField/index.js +1 -0
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
- package/{internals/hooks/useMultiInputFieldSelectedSections.js → modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
- package/modern/hooks/usePickerRangePositionContext.js +15 -0
- package/modern/index.js +4 -2
- package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
- package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
- package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
- package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
- package/modern/internals/hooks/useRangePosition.js +1 -1
- package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
- package/modern/internals/models/index.js +0 -1
- package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
- package/modern/internals/utils/createMultiInputRangeField/index.js +2 -0
- package/modern/internals/utils/date-range-manager.js +2 -1
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/modern/internals/utils/valueManagers.js +7 -7
- package/modern/managers/index.js +3 -0
- package/modern/managers/useDateRangeManager.js +33 -0
- package/modern/managers/useDateTimeRangeManager.js +33 -0
- package/modern/managers/useTimeRangeManager.js +31 -0
- package/modern/models/index.js +1 -2
- package/modern/validation/validateDateRange.js +8 -0
- package/modern/validation/validateDateTimeRange.js +4 -0
- package/modern/validation/validateTimeRange.js +8 -0
- package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/node/DateRangeCalendar/DateRangeCalendar.js +72 -45
- package/node/DateRangePicker/DateRangePicker.js +1 -4
- package/node/DateRangePicker/DateRangePickerToolbar.js +31 -39
- package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
- package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +33 -31
- package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +80 -108
- package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
- package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
- package/node/MobileDateRangePicker/MobileDateRangePicker.js +6 -8
- package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -16
- package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +14 -124
- package/node/MultiInputDateRangeField/index.js +3 -9
- package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
- package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -124
- package/node/MultiInputDateTimeRangeField/index.js +3 -9
- package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
- package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +15 -125
- package/node/MultiInputTimeRangeField/index.js +3 -9
- package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
- package/node/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
- package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +22 -32
- package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
- package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +22 -32
- package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
- package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +22 -32
- package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
- package/node/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
- package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/node/hooks/index.js +19 -0
- package/node/hooks/useMultiInputRangeField/index.js +12 -0
- package/node/hooks/useMultiInputRangeField/useMultiInputRangeField.js +155 -0
- package/node/{internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +11 -10
- package/node/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +66 -0
- package/node/hooks/usePickerRangePositionContext.js +22 -0
- package/node/index.js +23 -1
- package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
- package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +52 -65
- package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
- package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
- package/node/internals/hooks/useRangePosition.js +1 -1
- package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +16 -29
- package/node/internals/models/index.js +0 -11
- package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +143 -0
- package/node/internals/utils/createMultiInputRangeField/index.js +19 -0
- package/node/internals/utils/date-range-manager.js +2 -1
- package/node/internals/utils/releaseInfo.js +1 -1
- package/node/internals/utils/valueManagers.js +7 -7
- package/node/managers/index.js +26 -0
- package/node/managers/useDateRangeManager.js +40 -0
- package/node/managers/useDateTimeRangeManager.js +40 -0
- package/node/managers/useTimeRangeManager.js +38 -0
- package/node/models/index.js +0 -22
- package/node/validation/validateDateRange.js +8 -0
- package/node/validation/validateDateTimeRange.js +4 -0
- package/node/validation/validateTimeRange.js +8 -0
- package/package.json +6 -6
- package/themeAugmentation/overrides.d.ts +6 -4
- package/themeAugmentation/props.d.ts +2 -2
- package/validation/validateDateRange.d.ts +9 -1
- package/validation/validateDateRange.js +8 -0
- package/validation/validateDateTimeRange.d.ts +6 -2
- package/validation/validateDateTimeRange.js +4 -0
- package/validation/validateTimeRange.d.ts +9 -1
- package/validation/validateTimeRange.js +8 -0
- package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -53
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -54
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -54
- package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +0 -21
- package/internals/hooks/useMultiInputRangeField/shared.d.ts +0 -1
- package/internals/hooks/useMultiInputRangeField/shared.js +0 -9
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +0 -3
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +0 -3
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
- package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +0 -11
- package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +0 -3
- package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
- package/internals/models/timeRange.d.ts +0 -6
- package/internals/models/timeRange.js +0 -1
- package/models/dateRange.d.ts +0 -7
- package/models/dateRange.js +0 -1
- package/models/multiInputRangeFieldClasses.d.ts +0 -7
- package/models/multiInputRangeFieldClasses.js +0 -1
- package/modern/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
- package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
- package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
- package/modern/internals/hooks/useMultiInputRangeField/shared.js +0 -9
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
- package/modern/internals/models/timeRange.js +0 -1
- package/modern/models/dateRange.js +0 -1
- package/modern/models/multiInputRangeFieldClasses.js +0 -1
- package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -5
- package/node/internals/hooks/useMultiInputRangeField/shared.js +0 -16
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -121
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -121
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -5
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -121
- package/node/internals/models/timeRange.js +0 -5
- package/node/models/dateRange.js +0 -5
- package/node/models/multiInputRangeFieldClasses.js +0 -5
- /package/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
- /package/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
- /package/{MultiInputTimeRangeField/MultiInputTimeRangeField.types.js → modern/internals/models/managers.js} +0 -0
- /package/{internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js → modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
- /package/node/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
- /package/node/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
|
@@ -8,7 +8,8 @@ export function calculateRangeChange({
|
|
|
8
8
|
shouldMergeDateAndTime = false,
|
|
9
9
|
referenceDate
|
|
10
10
|
}) {
|
|
11
|
-
const
|
|
11
|
+
const start = !utils.isValid(range[0]) ? null : range[0];
|
|
12
|
+
const end = !utils.isValid(range[1]) ? null : range[1];
|
|
12
13
|
if (shouldMergeDateAndTime && selectedDate) {
|
|
13
14
|
// If there is a date already selected, then we want to keep its time
|
|
14
15
|
if (start && rangePosition === 'start') {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ponyfillGlobal } from '@mui/utils';
|
|
2
2
|
export const getReleaseInfo = () => {
|
|
3
|
-
const releaseInfo = "
|
|
3
|
+
const releaseInfo = "MTczODg4MjgwMDAwMA==";
|
|
4
4
|
if (process.env.NODE_ENV !== 'production') {
|
|
5
5
|
// A simple hack to set the value in the test environment (has no build step).
|
|
6
6
|
// eslint-disable-next-line no-useless-concat
|
|
@@ -12,8 +12,8 @@ export const rangeValueManager = {
|
|
|
12
12
|
referenceDate: referenceDateProp
|
|
13
13
|
} = _ref,
|
|
14
14
|
params = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
15
|
-
const shouldKeepStartDate =
|
|
16
|
-
const shouldKeepEndDate =
|
|
15
|
+
const shouldKeepStartDate = params.utils.isValid(value[0]);
|
|
16
|
+
const shouldKeepEndDate = params.utils.isValid(value[1]);
|
|
17
17
|
if (shouldKeepStartDate && shouldKeepEndDate) {
|
|
18
18
|
return value;
|
|
19
19
|
}
|
|
@@ -26,8 +26,8 @@ export const rangeValueManager = {
|
|
|
26
26
|
hasError: error => error[0] != null || error[1] != null,
|
|
27
27
|
defaultErrorState: [null, null],
|
|
28
28
|
getTimezone: (utils, value) => {
|
|
29
|
-
const timezoneStart =
|
|
30
|
-
const timezoneEnd =
|
|
29
|
+
const timezoneStart = utils.isValid(value[0]) ? utils.getTimezone(value[0]) : null;
|
|
30
|
+
const timezoneEnd = utils.isValid(value[1]) ? utils.getTimezone(value[1]) : null;
|
|
31
31
|
if (timezoneStart != null && timezoneEnd != null && timezoneStart !== timezoneEnd) {
|
|
32
32
|
throw new Error('MUI X: The timezone of the start and the end date should be the same.');
|
|
33
33
|
}
|
|
@@ -39,8 +39,8 @@ export const getRangeFieldValueManager = ({
|
|
|
39
39
|
dateSeparator = '–'
|
|
40
40
|
}) => ({
|
|
41
41
|
updateReferenceValue: (utils, value, prevReferenceValue) => {
|
|
42
|
-
const shouldKeepStartDate =
|
|
43
|
-
const shouldKeepEndDate =
|
|
42
|
+
const shouldKeepStartDate = utils.isValid(value[0]);
|
|
43
|
+
const shouldKeepEndDate = utils.isValid(value[1]);
|
|
44
44
|
if (!shouldKeepStartDate && !shouldKeepEndDate) {
|
|
45
45
|
return prevReferenceValue;
|
|
46
46
|
}
|
|
@@ -111,7 +111,7 @@ export const getRangeFieldValueManager = ({
|
|
|
111
111
|
},
|
|
112
112
|
getNewValuesFromNewActiveDate: newActiveDate => ({
|
|
113
113
|
value: updateDateInRange(newActiveDate, state.value),
|
|
114
|
-
referenceValue:
|
|
114
|
+
referenceValue: !utils.isValid(newActiveDate) ? state.referenceValue : updateDateInRange(newActiveDate, state.referenceValue)
|
|
115
115
|
})
|
|
116
116
|
};
|
|
117
117
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { getDateFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
|
|
6
|
+
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
7
|
+
import { validateDateRange } from "../validation/index.js";
|
|
8
|
+
export function useDateRangeManager(parameters = {}) {
|
|
9
|
+
const {
|
|
10
|
+
enableAccessibleFieldDOMStructure = true,
|
|
11
|
+
dateSeparator
|
|
12
|
+
} = parameters;
|
|
13
|
+
return React.useMemo(() => ({
|
|
14
|
+
valueType: 'date',
|
|
15
|
+
validator: validateDateRange,
|
|
16
|
+
internal_valueManager: rangeValueManager,
|
|
17
|
+
internal_fieldValueManager: getRangeFieldValueManager({
|
|
18
|
+
dateSeparator
|
|
19
|
+
}),
|
|
20
|
+
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
|
|
21
|
+
internal_applyDefaultsToFieldInternalProps: ({
|
|
22
|
+
internalProps,
|
|
23
|
+
utils,
|
|
24
|
+
defaultDates
|
|
25
|
+
}) => _extends({}, internalProps, getDateFieldInternalPropsDefaults({
|
|
26
|
+
defaultDates,
|
|
27
|
+
utils,
|
|
28
|
+
internalProps
|
|
29
|
+
})),
|
|
30
|
+
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
31
|
+
internal_getOpenPickerButtonAriaLabel: () => ''
|
|
32
|
+
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
33
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { getDateTimeFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
|
|
6
|
+
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
7
|
+
import { validateDateTimeRange } from "../validation/index.js";
|
|
8
|
+
export function useDateTimeRangeManager(parameters = {}) {
|
|
9
|
+
const {
|
|
10
|
+
enableAccessibleFieldDOMStructure = true,
|
|
11
|
+
dateSeparator
|
|
12
|
+
} = parameters;
|
|
13
|
+
return React.useMemo(() => ({
|
|
14
|
+
valueType: 'date-time',
|
|
15
|
+
validator: validateDateTimeRange,
|
|
16
|
+
internal_valueManager: rangeValueManager,
|
|
17
|
+
internal_fieldValueManager: getRangeFieldValueManager({
|
|
18
|
+
dateSeparator
|
|
19
|
+
}),
|
|
20
|
+
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
|
|
21
|
+
internal_applyDefaultsToFieldInternalProps: ({
|
|
22
|
+
internalProps,
|
|
23
|
+
utils,
|
|
24
|
+
defaultDates
|
|
25
|
+
}) => _extends({}, internalProps, getDateTimeFieldInternalPropsDefaults({
|
|
26
|
+
internalProps,
|
|
27
|
+
utils,
|
|
28
|
+
defaultDates
|
|
29
|
+
})),
|
|
30
|
+
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
31
|
+
internal_getOpenPickerButtonAriaLabel: () => ''
|
|
32
|
+
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
33
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { getTimeFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
|
|
6
|
+
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
7
|
+
import { validateTimeRange } from "../validation/index.js";
|
|
8
|
+
export function useTimeRangeManager(parameters = {}) {
|
|
9
|
+
const {
|
|
10
|
+
enableAccessibleFieldDOMStructure = true,
|
|
11
|
+
dateSeparator
|
|
12
|
+
} = parameters;
|
|
13
|
+
return React.useMemo(() => ({
|
|
14
|
+
valueType: 'time',
|
|
15
|
+
validator: validateTimeRange,
|
|
16
|
+
internal_valueManager: rangeValueManager,
|
|
17
|
+
internal_fieldValueManager: getRangeFieldValueManager({
|
|
18
|
+
dateSeparator
|
|
19
|
+
}),
|
|
20
|
+
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
|
|
21
|
+
internal_applyDefaultsToFieldInternalProps: ({
|
|
22
|
+
internalProps,
|
|
23
|
+
utils
|
|
24
|
+
}) => _extends({}, internalProps, getTimeFieldInternalPropsDefaults({
|
|
25
|
+
utils,
|
|
26
|
+
internalProps
|
|
27
|
+
})),
|
|
28
|
+
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
29
|
+
internal_getOpenPickerButtonAriaLabel: () => ''
|
|
30
|
+
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
31
|
+
}
|
package/modern/models/index.js
CHANGED
|
@@ -9,6 +9,14 @@ import { rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
|
9
9
|
* Validation props used by the Date Range Picker, Date Range Field and Date Range Calendar components.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Validation props as received by the validateDateRange method.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Name of the props that should be defaulted before being passed to the validateDateRange method.
|
|
18
|
+
*/
|
|
19
|
+
|
|
12
20
|
export const validateDateRange = ({
|
|
13
21
|
adapter,
|
|
14
22
|
value,
|
|
@@ -9,6 +9,10 @@ import { rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
|
9
9
|
* Validation props used by the Date Time Range Picker and Date Time Range Field.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Validation props as received by the validateDateTimeRange method.
|
|
14
|
+
*/
|
|
15
|
+
|
|
12
16
|
export const validateDateTimeRange = ({
|
|
13
17
|
adapter,
|
|
14
18
|
value,
|
|
@@ -6,6 +6,14 @@ import { rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
|
6
6
|
* Validation props used by the Time Range Picker and Time Range Field.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Validation props as received by the validateTimeRange method.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Name of the props that should be defaulted before being passed to the validateTimeRange method.
|
|
15
|
+
*/
|
|
16
|
+
|
|
9
17
|
export const validateTimeRange = ({
|
|
10
18
|
adapter,
|
|
11
19
|
value,
|
|
@@ -9,4 +9,4 @@ Object.defineProperty(exports, "AdapterDateFnsJalali", {
|
|
|
9
9
|
return _AdapterDateFnsJalaliV.AdapterDateFnsJalali;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
var _AdapterDateFnsJalaliV = require("@mui/x-date-pickers/
|
|
12
|
+
var _AdapterDateFnsJalaliV = require("@mui/x-date-pickers/AdapterDateFnsJalaliV2");
|
|
@@ -32,8 +32,9 @@ var _useDragRange2 = require("./useDragRange");
|
|
|
32
32
|
var _useRangePosition = require("../internals/hooks/useRangePosition");
|
|
33
33
|
var _dimensions = require("../internals/constants/dimensions");
|
|
34
34
|
var _PickersRangeCalendarHeader = require("../PickersRangeCalendarHeader");
|
|
35
|
+
var _useNullablePickerRangePositionContext = require("../internals/hooks/useNullablePickerRangePositionContext");
|
|
35
36
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
36
|
-
const _excluded = ["value", "defaultValue", "referenceDate", "onChange", "className", "classes", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "rangePosition", "defaultRangePosition", "onRangePositionChange", "calendars", "currentMonthCalendarPosition", "slots", "slotProps", "loading", "renderLoading", "disableHighlightToday", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber", "timezone", "availableRangePositions", "views", "view", "openTo", "onViewChange"],
|
|
37
|
+
const _excluded = ["value", "defaultValue", "referenceDate", "onChange", "className", "classes", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "rangePosition", "defaultRangePosition", "onRangePositionChange", "calendars", "currentMonthCalendarPosition", "slots", "slotProps", "loading", "renderLoading", "disableHighlightToday", "focusedView", "onFocusedViewChange", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber", "timezone", "availableRangePositions", "views", "view", "openTo", "onViewChange"],
|
|
37
38
|
_excluded2 = ["isDragging", "rangeDragDay", "draggingDatePosition"];
|
|
38
39
|
const releaseInfo = (0, _releaseInfo.getReleaseInfo)();
|
|
39
40
|
const DateRangeCalendarRoot = (0, _styles.styled)('div', {
|
|
@@ -82,16 +83,16 @@ const DayCalendarForRange = InnerDayCalendarForRange;
|
|
|
82
83
|
function useDateRangeCalendarDefaultizedProps(props, name) {
|
|
83
84
|
const utils = (0, _internals.useUtils)();
|
|
84
85
|
const defaultDates = (0, _internals.useDefaultDates)();
|
|
85
|
-
const defaultReduceAnimations = (0, _internals.useDefaultReduceAnimations)();
|
|
86
86
|
const themeProps = (0, _styles.useThemeProps)({
|
|
87
87
|
props,
|
|
88
88
|
name
|
|
89
89
|
});
|
|
90
|
+
const reduceAnimations = (0, _internals.useReduceAnimations)(themeProps.reduceAnimations);
|
|
90
91
|
return (0, _extends2.default)({}, themeProps, {
|
|
91
92
|
renderLoading: themeProps.renderLoading ?? (() => /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
92
93
|
children: "..."
|
|
93
94
|
})),
|
|
94
|
-
reduceAnimations
|
|
95
|
+
reduceAnimations,
|
|
95
96
|
loading: props.loading ?? false,
|
|
96
97
|
disablePast: props.disablePast ?? false,
|
|
97
98
|
disableFuture: props.disableFuture ?? false,
|
|
@@ -142,8 +143,8 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
142
143
|
reduceAnimations,
|
|
143
144
|
onMonthChange,
|
|
144
145
|
rangePosition: rangePositionProp,
|
|
145
|
-
defaultRangePosition:
|
|
146
|
-
onRangePositionChange:
|
|
146
|
+
defaultRangePosition: defaultRangePositionProp,
|
|
147
|
+
onRangePositionChange: onRangePositionChangeProp,
|
|
147
148
|
calendars,
|
|
148
149
|
currentMonthCalendarPosition = 1,
|
|
149
150
|
slots,
|
|
@@ -151,6 +152,8 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
151
152
|
loading,
|
|
152
153
|
renderLoading,
|
|
153
154
|
disableHighlightToday,
|
|
155
|
+
focusedView: focusedViewProp,
|
|
156
|
+
onFocusedViewChange,
|
|
154
157
|
readOnly,
|
|
155
158
|
disabled,
|
|
156
159
|
showDaysOutsideCurrentMonth,
|
|
@@ -168,6 +171,7 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
168
171
|
onViewChange
|
|
169
172
|
} = props,
|
|
170
173
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
174
|
+
const rangePositionContext = (0, _useNullablePickerRangePositionContext.useNullablePickerRangePositionContext)();
|
|
171
175
|
const {
|
|
172
176
|
value,
|
|
173
177
|
handleValueChange,
|
|
@@ -182,30 +186,33 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
182
186
|
valueManager: _valueManagers.rangeValueManager
|
|
183
187
|
});
|
|
184
188
|
const {
|
|
185
|
-
|
|
186
|
-
|
|
189
|
+
view,
|
|
190
|
+
setFocusedView,
|
|
191
|
+
focusedView,
|
|
192
|
+
setValueAndGoToNextView
|
|
187
193
|
} = (0, _internals.useViews)({
|
|
188
194
|
view: inView,
|
|
189
195
|
views,
|
|
190
196
|
openTo,
|
|
191
197
|
onChange: handleValueChange,
|
|
192
198
|
onViewChange,
|
|
193
|
-
autoFocus
|
|
199
|
+
autoFocus,
|
|
200
|
+
focusedView: focusedViewProp,
|
|
201
|
+
onFocusedViewChange
|
|
194
202
|
});
|
|
195
203
|
const utils = (0, _internals.useUtils)();
|
|
196
|
-
const now = (0, _internals.useNow)(timezone);
|
|
197
204
|
const id = (0, _useId.default)();
|
|
198
205
|
const {
|
|
199
206
|
rangePosition,
|
|
200
|
-
|
|
207
|
+
setRangePosition
|
|
201
208
|
} = (0, _useRangePosition.useRangePosition)({
|
|
202
|
-
rangePosition: rangePositionProp,
|
|
203
|
-
defaultRangePosition:
|
|
204
|
-
onRangePositionChange:
|
|
209
|
+
rangePosition: rangePositionProp ?? rangePositionContext?.rangePosition,
|
|
210
|
+
defaultRangePosition: defaultRangePositionProp,
|
|
211
|
+
onRangePositionChange: onRangePositionChangeProp ?? rangePositionContext?.setRangePosition
|
|
205
212
|
});
|
|
206
213
|
const handleDatePositionChange = (0, _useEventCallback.default)(position => {
|
|
207
214
|
if (rangePosition !== position) {
|
|
208
|
-
|
|
215
|
+
setRangePosition(position);
|
|
209
216
|
}
|
|
210
217
|
});
|
|
211
218
|
const handleSelectedDayChange = (0, _useEventCallback.default)((newDate, selectionState, allowRangeFlip = false) => {
|
|
@@ -223,7 +230,7 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
223
230
|
});
|
|
224
231
|
const isNextSectionAvailable = availableRangePositions.includes(nextSelection);
|
|
225
232
|
if (isNextSectionAvailable) {
|
|
226
|
-
|
|
233
|
+
setRangePosition(nextSelection);
|
|
227
234
|
}
|
|
228
235
|
const isFullRangeSelected = rangePosition === 'end' && (0, _dateUtils.isRangeValid)(utils, newRange);
|
|
229
236
|
setValueAndGoToNextView(newRange, isFullRangeSelected || !isNextSectionAvailable ? 'finish' : 'partial', view);
|
|
@@ -235,7 +242,7 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
235
242
|
|
|
236
243
|
// Range going for the start of the start day to the end of the end day.
|
|
237
244
|
// This makes sure that `isWithinRange` works with any time in the start and end day.
|
|
238
|
-
const valueDayRange = React.useMemo(() => [
|
|
245
|
+
const valueDayRange = React.useMemo(() => [!utils.isValid(value[0]) ? value[0] : utils.startOfDay(value[0]), !utils.isValid(value[1]) ? value[1] : utils.endOfDay(value[1])], [value, utils]);
|
|
239
246
|
const _useDragRange = (0, _useDragRange2.useDragRange)({
|
|
240
247
|
disableDragEditing: shouldDisableDragEditing,
|
|
241
248
|
onDrop: handleDrop,
|
|
@@ -278,22 +285,39 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
278
285
|
}, [shouldDisableDate, rangePosition, draggingDatePosition]);
|
|
279
286
|
const {
|
|
280
287
|
calendarState,
|
|
281
|
-
|
|
282
|
-
changeMonth,
|
|
283
|
-
handleChangeMonth,
|
|
288
|
+
setVisibleDate,
|
|
284
289
|
onMonthSwitchingAnimationEnd
|
|
285
290
|
} = (0, _internals.useCalendarState)({
|
|
286
291
|
value: value[0] || value[1],
|
|
287
292
|
referenceDate,
|
|
288
293
|
disableFuture,
|
|
289
294
|
disablePast,
|
|
290
|
-
disableSwitchToMonthOnDayFocus: true,
|
|
291
295
|
maxDate,
|
|
292
296
|
minDate,
|
|
293
297
|
onMonthChange,
|
|
294
298
|
reduceAnimations,
|
|
295
299
|
shouldDisableDate: wrappedShouldDisableDate,
|
|
296
|
-
timezone
|
|
300
|
+
timezone,
|
|
301
|
+
getCurrentMonthFromVisibleDate: (visibleDate, prevMonth) => {
|
|
302
|
+
const firstVisibleMonth = utils.addMonths(prevMonth, 1 - currentMonthCalendarPosition);
|
|
303
|
+
const lastVisibleMonth = utils.endOfMonth(utils.addMonths(firstVisibleMonth, calendars - 1));
|
|
304
|
+
|
|
305
|
+
// The new focused day is inside the visible calendars,
|
|
306
|
+
// Do not change the current month
|
|
307
|
+
if (utils.isWithinRange(visibleDate, [firstVisibleMonth, lastVisibleMonth])) {
|
|
308
|
+
return prevMonth;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// The new focused day is after the last visible month,
|
|
312
|
+
// Move the current month so that the new focused day is inside the first visible month
|
|
313
|
+
if (utils.isAfter(visibleDate, lastVisibleMonth)) {
|
|
314
|
+
return utils.startOfMonth(utils.addMonths(visibleDate, currentMonthCalendarPosition - 1));
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// The new focused day is before the first visible month,
|
|
318
|
+
// Move the current month so that the new focused day is inside the last visible month
|
|
319
|
+
return utils.startOfMonth(utils.addMonths(visibleDate, currentMonthCalendarPosition - calendars));
|
|
320
|
+
}
|
|
297
321
|
});
|
|
298
322
|
const CalendarHeader = slots?.calendarHeader ?? _PickersRangeCalendarHeader.PickersRangeCalendarHeader;
|
|
299
323
|
const calendarHeaderProps = (0, _useSlotProps.default)({
|
|
@@ -304,9 +328,9 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
304
328
|
views: ['day'],
|
|
305
329
|
view: 'day',
|
|
306
330
|
currentMonth: calendarState.currentMonth,
|
|
307
|
-
onMonthChange:
|
|
308
|
-
|
|
309
|
-
|
|
331
|
+
onMonthChange: month => setVisibleDate({
|
|
332
|
+
target: month,
|
|
333
|
+
reason: 'header-navigation'
|
|
310
334
|
}),
|
|
311
335
|
minDate,
|
|
312
336
|
maxDate,
|
|
@@ -320,10 +344,12 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
320
344
|
},
|
|
321
345
|
ownerState
|
|
322
346
|
});
|
|
347
|
+
|
|
348
|
+
// TODO: Move this logic inside the render instead of using an effect
|
|
323
349
|
const prevValue = React.useRef(null);
|
|
324
350
|
React.useEffect(() => {
|
|
325
351
|
const date = rangePosition === 'start' ? value[0] : value[1];
|
|
326
|
-
if (!
|
|
352
|
+
if (!utils.isValid(date)) {
|
|
327
353
|
return;
|
|
328
354
|
}
|
|
329
355
|
const prevDate = rangePosition === 'start' ? prevValue.current?.[0] : prevValue.current?.[1];
|
|
@@ -341,7 +367,10 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
341
367
|
const newMonth = rangePosition === 'start' ? date :
|
|
342
368
|
// If need to focus end, scroll to the state when "end" is displaying in the last calendar
|
|
343
369
|
utils.addMonths(date, -displayingMonthRange);
|
|
344
|
-
|
|
370
|
+
setVisibleDate({
|
|
371
|
+
target: newMonth,
|
|
372
|
+
reason: 'controlled-value-change'
|
|
373
|
+
});
|
|
345
374
|
}
|
|
346
375
|
}, [rangePosition, value]); // eslint-disable-line
|
|
347
376
|
|
|
@@ -424,25 +453,19 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
424
453
|
length: calendars
|
|
425
454
|
}).map((_, index) => utils.addMonths(firstMonth, index));
|
|
426
455
|
}, [utils, calendarState.currentMonth, calendars, currentMonthCalendarPosition]);
|
|
427
|
-
const
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
// 2. Month of the `end` date
|
|
435
|
-
// 3. Month of the current date
|
|
436
|
-
// 4. First visible month
|
|
437
|
-
|
|
438
|
-
if (value[0] != null) {
|
|
439
|
-
return visibleMonths.find(month => utils.isSameMonth(month, value[0]));
|
|
456
|
+
const hasFocus = focusedView !== null;
|
|
457
|
+
const prevOpenViewRef = React.useRef(view);
|
|
458
|
+
React.useEffect(() => {
|
|
459
|
+
// If the view change and the focus was on the previous view
|
|
460
|
+
// Then we update the focus.
|
|
461
|
+
if (prevOpenViewRef.current === view) {
|
|
462
|
+
return;
|
|
440
463
|
}
|
|
441
|
-
if (
|
|
442
|
-
|
|
464
|
+
if (focusedView === prevOpenViewRef.current) {
|
|
465
|
+
setFocusedView(view, true);
|
|
443
466
|
}
|
|
444
|
-
|
|
445
|
-
}, [
|
|
467
|
+
prevOpenViewRef.current = view;
|
|
468
|
+
}, [focusedView, setFocusedView, view]);
|
|
446
469
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(DateRangeCalendarRoot, (0, _extends2.default)({
|
|
447
470
|
ref: ref,
|
|
448
471
|
className: (0, _clsx.default)(classes.root, className),
|
|
@@ -464,20 +487,24 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
464
487
|
className: classes.dayCalendar
|
|
465
488
|
}, calendarState, baseDateValidationProps, commonViewProps, {
|
|
466
489
|
onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,
|
|
467
|
-
onFocusedDayChange:
|
|
490
|
+
onFocusedDayChange: focusedDate => setVisibleDate({
|
|
491
|
+
target: focusedDate,
|
|
492
|
+
reason: 'cell-interaction'
|
|
493
|
+
}),
|
|
468
494
|
reduceAnimations: reduceAnimations,
|
|
469
495
|
selectedDays: value,
|
|
470
496
|
onSelectedDaysChange: handleSelectedDayChange,
|
|
471
497
|
currentMonth: month,
|
|
472
498
|
TransitionProps: CalendarTransitionProps,
|
|
473
499
|
shouldDisableDate: wrappedShouldDisableDate,
|
|
500
|
+
hasFocus: hasFocus,
|
|
501
|
+
onFocusedViewChange: isViewFocused => setFocusedView('day', isViewFocused),
|
|
474
502
|
showDaysOutsideCurrentMonth: calendars === 1 && showDaysOutsideCurrentMonth,
|
|
475
503
|
dayOfWeekFormatter: dayOfWeekFormatter,
|
|
476
504
|
loading: loading,
|
|
477
505
|
renderLoading: renderLoading,
|
|
478
506
|
slots: slotsForDayCalendar,
|
|
479
507
|
slotProps: slotPropsForDayCalendar,
|
|
480
|
-
autoFocus: month === focusedMonth,
|
|
481
508
|
fixedWeekNumber: fixedWeekNumber,
|
|
482
509
|
displayWeekNumber: displayWeekNumber,
|
|
483
510
|
timezone: timezone,
|
|
@@ -70,7 +70,7 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
70
70
|
calendars: _propTypes.default.oneOf([1, 2, 3]),
|
|
71
71
|
className: _propTypes.default.string,
|
|
72
72
|
/**
|
|
73
|
-
* If `true`, the
|
|
73
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
74
74
|
* @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
|
|
75
75
|
*/
|
|
76
76
|
closeOnSelect: _propTypes.default.bool,
|
|
@@ -165,12 +165,10 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
165
165
|
formatDensity: _propTypes.default.oneOf(['dense', 'spacious']),
|
|
166
166
|
/**
|
|
167
167
|
* Pass a ref to the `input` element.
|
|
168
|
-
* Ignored if the field has several inputs.
|
|
169
168
|
*/
|
|
170
169
|
inputRef: _utils.refType,
|
|
171
170
|
/**
|
|
172
171
|
* The label content.
|
|
173
|
-
* Ignored if the field has several inputs.
|
|
174
172
|
*/
|
|
175
173
|
label: _propTypes.default.node,
|
|
176
174
|
/**
|
|
@@ -196,7 +194,6 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
196
194
|
minDate: _propTypes.default.object,
|
|
197
195
|
/**
|
|
198
196
|
* Name attribute used by the `input` element in the Field.
|
|
199
|
-
* Ignored if the field has several inputs.
|
|
200
197
|
*/
|
|
201
198
|
name: _propTypes.default.string,
|
|
202
199
|
/**
|
|
@@ -18,12 +18,10 @@ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"
|
|
|
18
18
|
var _internals = require("@mui/x-date-pickers/internals");
|
|
19
19
|
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
20
20
|
var _dateRangePickerToolbarClasses = require("./dateRangePickerToolbarClasses");
|
|
21
|
+
var _hooks2 = require("../hooks");
|
|
21
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
-
const _excluded = ["
|
|
23
|
-
const useUtilityClasses =
|
|
24
|
-
const {
|
|
25
|
-
classes
|
|
26
|
-
} = ownerState;
|
|
23
|
+
const _excluded = ["toolbarFormat", "className", "classes"];
|
|
24
|
+
const useUtilityClasses = classes => {
|
|
27
25
|
const slots = {
|
|
28
26
|
root: ['root'],
|
|
29
27
|
container: ['container']
|
|
@@ -59,39 +57,50 @@ const DateRangePickerToolbar = exports.DateRangePickerToolbar = /*#__PURE__*/Rea
|
|
|
59
57
|
name: 'MuiDateRangePickerToolbar'
|
|
60
58
|
});
|
|
61
59
|
const {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
toolbarFormat,
|
|
66
|
-
className
|
|
60
|
+
toolbarFormat: toolbarFormatProp,
|
|
61
|
+
className,
|
|
62
|
+
classes: classesProp
|
|
67
63
|
} = props,
|
|
68
64
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
65
|
+
const {
|
|
66
|
+
value
|
|
67
|
+
} = (0, _hooks.usePickerContext)();
|
|
69
68
|
const translations = (0, _hooks.usePickerTranslations)();
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
const ownerState = (0, _internals.useToolbarOwnerState)();
|
|
70
|
+
const {
|
|
71
|
+
rangePosition,
|
|
72
|
+
setRangePosition
|
|
73
|
+
} = (0, _hooks2.usePickerRangePositionContext)();
|
|
74
|
+
const classes = useUtilityClasses(classesProp);
|
|
75
|
+
|
|
76
|
+
// This can't be a default value when spreading because it breaks the API generation.
|
|
77
|
+
const toolbarFormat = toolbarFormatProp ?? utils.formats.shortDate;
|
|
78
|
+
const formatDate = (date, fallback) => {
|
|
79
|
+
if (!utils.isValid(date)) {
|
|
80
|
+
return fallback;
|
|
81
|
+
}
|
|
82
|
+
return utils.formatByString(date, toolbarFormat);
|
|
83
|
+
};
|
|
74
84
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(DateRangePickerToolbarRoot, (0, _extends2.default)({}, other, {
|
|
75
85
|
toolbarTitle: translations.dateRangePickerToolbarTitle,
|
|
76
|
-
isLandscape: false,
|
|
77
86
|
className: (0, _clsx.default)(classes.root, className),
|
|
78
87
|
ownerState: ownerState,
|
|
79
88
|
ref: ref,
|
|
80
89
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(DateRangePickerToolbarContainer, {
|
|
81
90
|
className: classes.container,
|
|
82
91
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersToolbarButton, {
|
|
83
|
-
variant:
|
|
84
|
-
value:
|
|
92
|
+
variant: value[0] == null ? 'h6' : 'h5',
|
|
93
|
+
value: formatDate(value[0], translations.start),
|
|
85
94
|
selected: rangePosition === 'start',
|
|
86
|
-
onClick: () =>
|
|
95
|
+
onClick: () => setRangePosition('start')
|
|
87
96
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
|
|
88
97
|
variant: "h5",
|
|
89
98
|
children: ["\xA0", '–', "\xA0"]
|
|
90
99
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersToolbarButton, {
|
|
91
|
-
variant:
|
|
92
|
-
value:
|
|
100
|
+
variant: value[1] == null ? 'h6' : 'h5',
|
|
101
|
+
value: formatDate(value[1], translations.end),
|
|
93
102
|
selected: rangePosition === 'end',
|
|
94
|
-
onClick: () =>
|
|
103
|
+
onClick: () => setRangePosition('end')
|
|
95
104
|
})]
|
|
96
105
|
})
|
|
97
106
|
}));
|
|
@@ -111,14 +120,6 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
|
|
|
111
120
|
* @default `true` for Desktop, `false` for Mobile.
|
|
112
121
|
*/
|
|
113
122
|
hidden: _propTypes.default.bool,
|
|
114
|
-
onRangePositionChange: _propTypes.default.func.isRequired,
|
|
115
|
-
/**
|
|
116
|
-
* Callback called when a toolbar is clicked
|
|
117
|
-
* @template TView
|
|
118
|
-
* @param {TView} view The view to open
|
|
119
|
-
*/
|
|
120
|
-
onViewChange: _propTypes.default.func.isRequired,
|
|
121
|
-
rangePosition: _propTypes.default.oneOf(['end', 'start']).isRequired,
|
|
122
123
|
/**
|
|
123
124
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
124
125
|
*/
|
|
@@ -132,14 +133,5 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
|
|
|
132
133
|
* Toolbar value placeholder—it is displayed when the value is empty.
|
|
133
134
|
* @default "––"
|
|
134
135
|
*/
|
|
135
|
-
toolbarPlaceholder: _propTypes.default.node
|
|
136
|
-
value: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
|
|
137
|
-
/**
|
|
138
|
-
* Currently visible picker view.
|
|
139
|
-
*/
|
|
140
|
-
view: _propTypes.default.oneOf(['day']).isRequired,
|
|
141
|
-
/**
|
|
142
|
-
* Available views.
|
|
143
|
-
*/
|
|
144
|
-
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day'])).isRequired
|
|
136
|
+
toolbarPlaceholder: _propTypes.default.node
|
|
145
137
|
} : void 0;
|