@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
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MakeOptional } from '@mui/x-internals/types';
|
|
2
|
+
import { PickerManager } from '@mui/x-date-pickers/models';
|
|
3
|
+
import { AmPmProps, PickerRangeValue, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
|
|
4
|
+
import { TimeRangeValidationError, RangeFieldSeparatorProps } from '../models';
|
|
5
|
+
import { ExportedValidateTimeRangeProps, ValidateTimeRangeProps } from '../validation/validateTimeRange';
|
|
6
|
+
export declare function useTimeRangeManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(parameters?: UseTimeRangeManagerParameters<TEnableAccessibleFieldDOMStructure>): UseTimeRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure>;
|
|
7
|
+
export interface UseTimeRangeManagerParameters<TEnableAccessibleFieldDOMStructure extends boolean> extends RangeFieldSeparatorProps {
|
|
8
|
+
enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
|
|
9
|
+
}
|
|
10
|
+
export type UseTimeRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TimeRangeValidationError, TimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>, TimeRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>>;
|
|
11
|
+
export interface TimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TimeRangeValidationError>, 'format'>, ExportedValidateTimeRangeProps, AmPmProps, RangeFieldSeparatorProps {
|
|
12
|
+
}
|
|
13
|
+
interface TimeRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure extends boolean> extends UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TimeRangeValidationError>, ValidateTimeRangeProps {
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -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/models/fields.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { UseFieldResponse, FormProps } from '@mui/x-date-pickers/internals';
|
|
3
|
-
import { FieldRef,
|
|
4
|
-
|
|
5
|
-
import { RangePosition } from './range';
|
|
6
|
-
export interface RangeFieldSection extends FieldSection {
|
|
7
|
-
dateName: RangePosition;
|
|
8
|
-
}
|
|
2
|
+
import { UseFieldResponse, FormProps, PickerValue, PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
3
|
+
import { FieldRef, PickerFieldSlotProps } from '@mui/x-date-pickers/models';
|
|
4
|
+
export type { FieldRangeSection } from '@mui/x-date-pickers/internals';
|
|
9
5
|
export type FieldType = 'single-input' | 'multi-input';
|
|
10
6
|
/**
|
|
11
7
|
* Props the `textField` slot of the multi input field can receive when used inside a picker.
|
|
@@ -30,8 +26,8 @@ export interface MultiInputFieldSlotRootProps {
|
|
|
30
26
|
onBlur?: React.FocusEventHandler;
|
|
31
27
|
}
|
|
32
28
|
export interface MultiInputFieldRefs {
|
|
33
|
-
unstableStartFieldRef?: React.Ref<FieldRef<
|
|
34
|
-
unstableEndFieldRef?: React.Ref<FieldRef<
|
|
29
|
+
unstableStartFieldRef?: React.Ref<FieldRef<PickerValue>>;
|
|
30
|
+
unstableEndFieldRef?: React.Ref<FieldRef<PickerValue>>;
|
|
35
31
|
}
|
|
36
32
|
export interface RangeFieldSeparatorProps {
|
|
37
33
|
/**
|
|
@@ -43,9 +39,9 @@ export interface RangeFieldSeparatorProps {
|
|
|
43
39
|
/**
|
|
44
40
|
* Props the `slotProps.field` of a range picker component can receive.
|
|
45
41
|
*/
|
|
46
|
-
export type PickerRangeFieldSlotProps<
|
|
42
|
+
export type PickerRangeFieldSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> = PickerFieldSlotProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure> & RangeFieldSeparatorProps;
|
|
47
43
|
/**
|
|
48
44
|
* Props the text field receives when used with a multi input picker.
|
|
49
45
|
* Only contains what the MUI components are passing to the text field, not what users can pass using the `props.slotProps.textField`.
|
|
50
46
|
*/
|
|
51
|
-
export type BaseMultiInputPickersTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> =
|
|
47
|
+
export type BaseMultiInputPickersTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> = Omit<UseFieldResponse<TEnableAccessibleFieldDOMStructure, MultiInputFieldSlotTextFieldProps>, 'slots' | 'slotProps' | 'clearable' | 'onClear' | 'openPickerButtonPosition' | 'clearButtonPosition' | 'openPickerAriaLabel'>;
|
package/models/index.d.ts
CHANGED
package/models/index.js
CHANGED
package/models/range.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { AdapterDateFnsJalali } from '@mui/x-date-pickers/
|
|
1
|
+
export { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV2';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { AdapterDateFns } from '@mui/x-date-pickers/
|
|
1
|
+
export { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV2';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
4
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
|
-
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"],
|
|
5
|
+
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"],
|
|
6
6
|
_excluded2 = ["isDragging", "rangeDragDay", "draggingDatePosition"];
|
|
7
7
|
import * as React from 'react';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
@@ -15,7 +15,7 @@ import { styled, useThemeProps } from '@mui/material/styles';
|
|
|
15
15
|
import composeClasses from '@mui/utils/composeClasses';
|
|
16
16
|
import useId from '@mui/utils/useId';
|
|
17
17
|
import { Watermark } from '@mui/x-license';
|
|
18
|
-
import { applyDefaultDate, DayCalendar,
|
|
18
|
+
import { applyDefaultDate, DayCalendar, useReduceAnimations, useCalendarState, useDefaultDates, useUtils, DEFAULT_DESKTOP_MODE_MEDIA_QUERY, useControlledValueWithTimezone, useViews, usePickerPrivateContext } from '@mui/x-date-pickers/internals';
|
|
19
19
|
import { warnOnce } from '@mui/x-internals/warning';
|
|
20
20
|
import { getReleaseInfo } from "../internals/utils/releaseInfo.js";
|
|
21
21
|
import { dateRangeCalendarClasses, getDateRangeCalendarUtilityClass } from "./dateRangeCalendarClasses.js";
|
|
@@ -27,6 +27,7 @@ import { useDragRange } from "./useDragRange.js";
|
|
|
27
27
|
import { useRangePosition } from "../internals/hooks/useRangePosition.js";
|
|
28
28
|
import { DAY_RANGE_SIZE, DAY_MARGIN } from "../internals/constants/dimensions.js";
|
|
29
29
|
import { PickersRangeCalendarHeader } from "../PickersRangeCalendarHeader/index.js";
|
|
30
|
+
import { useNullablePickerRangePositionContext } from "../internals/hooks/useNullablePickerRangePositionContext.js";
|
|
30
31
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
31
32
|
const releaseInfo = getReleaseInfo();
|
|
32
33
|
const DateRangeCalendarRoot = styled('div', {
|
|
@@ -75,16 +76,16 @@ const DayCalendarForRange = InnerDayCalendarForRange;
|
|
|
75
76
|
function useDateRangeCalendarDefaultizedProps(props, name) {
|
|
76
77
|
const utils = useUtils();
|
|
77
78
|
const defaultDates = useDefaultDates();
|
|
78
|
-
const defaultReduceAnimations = useDefaultReduceAnimations();
|
|
79
79
|
const themeProps = useThemeProps({
|
|
80
80
|
props,
|
|
81
81
|
name
|
|
82
82
|
});
|
|
83
|
+
const reduceAnimations = useReduceAnimations(themeProps.reduceAnimations);
|
|
83
84
|
return _extends({}, themeProps, {
|
|
84
85
|
renderLoading: themeProps.renderLoading ?? (() => /*#__PURE__*/_jsx("span", {
|
|
85
86
|
children: "..."
|
|
86
87
|
})),
|
|
87
|
-
reduceAnimations
|
|
88
|
+
reduceAnimations,
|
|
88
89
|
loading: props.loading ?? false,
|
|
89
90
|
disablePast: props.disablePast ?? false,
|
|
90
91
|
disableFuture: props.disableFuture ?? false,
|
|
@@ -135,8 +136,8 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
135
136
|
reduceAnimations,
|
|
136
137
|
onMonthChange,
|
|
137
138
|
rangePosition: rangePositionProp,
|
|
138
|
-
defaultRangePosition:
|
|
139
|
-
onRangePositionChange:
|
|
139
|
+
defaultRangePosition: defaultRangePositionProp,
|
|
140
|
+
onRangePositionChange: onRangePositionChangeProp,
|
|
140
141
|
calendars,
|
|
141
142
|
currentMonthCalendarPosition = 1,
|
|
142
143
|
slots,
|
|
@@ -144,6 +145,8 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
144
145
|
loading,
|
|
145
146
|
renderLoading,
|
|
146
147
|
disableHighlightToday,
|
|
148
|
+
focusedView: focusedViewProp,
|
|
149
|
+
onFocusedViewChange,
|
|
147
150
|
readOnly,
|
|
148
151
|
disabled,
|
|
149
152
|
showDaysOutsideCurrentMonth,
|
|
@@ -161,6 +164,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
161
164
|
onViewChange
|
|
162
165
|
} = props,
|
|
163
166
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
167
|
+
const rangePositionContext = useNullablePickerRangePositionContext();
|
|
164
168
|
const {
|
|
165
169
|
value,
|
|
166
170
|
handleValueChange,
|
|
@@ -175,30 +179,33 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
175
179
|
valueManager: rangeValueManager
|
|
176
180
|
});
|
|
177
181
|
const {
|
|
178
|
-
|
|
179
|
-
|
|
182
|
+
view,
|
|
183
|
+
setFocusedView,
|
|
184
|
+
focusedView,
|
|
185
|
+
setValueAndGoToNextView
|
|
180
186
|
} = useViews({
|
|
181
187
|
view: inView,
|
|
182
188
|
views,
|
|
183
189
|
openTo,
|
|
184
190
|
onChange: handleValueChange,
|
|
185
191
|
onViewChange,
|
|
186
|
-
autoFocus
|
|
192
|
+
autoFocus,
|
|
193
|
+
focusedView: focusedViewProp,
|
|
194
|
+
onFocusedViewChange
|
|
187
195
|
});
|
|
188
196
|
const utils = useUtils();
|
|
189
|
-
const now = useNow(timezone);
|
|
190
197
|
const id = useId();
|
|
191
198
|
const {
|
|
192
199
|
rangePosition,
|
|
193
|
-
|
|
200
|
+
setRangePosition
|
|
194
201
|
} = useRangePosition({
|
|
195
|
-
rangePosition: rangePositionProp,
|
|
196
|
-
defaultRangePosition:
|
|
197
|
-
onRangePositionChange:
|
|
202
|
+
rangePosition: rangePositionProp ?? rangePositionContext?.rangePosition,
|
|
203
|
+
defaultRangePosition: defaultRangePositionProp,
|
|
204
|
+
onRangePositionChange: onRangePositionChangeProp ?? rangePositionContext?.setRangePosition
|
|
198
205
|
});
|
|
199
206
|
const handleDatePositionChange = useEventCallback(position => {
|
|
200
207
|
if (rangePosition !== position) {
|
|
201
|
-
|
|
208
|
+
setRangePosition(position);
|
|
202
209
|
}
|
|
203
210
|
});
|
|
204
211
|
const handleSelectedDayChange = useEventCallback((newDate, selectionState, allowRangeFlip = false) => {
|
|
@@ -216,7 +223,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
216
223
|
});
|
|
217
224
|
const isNextSectionAvailable = availableRangePositions.includes(nextSelection);
|
|
218
225
|
if (isNextSectionAvailable) {
|
|
219
|
-
|
|
226
|
+
setRangePosition(nextSelection);
|
|
220
227
|
}
|
|
221
228
|
const isFullRangeSelected = rangePosition === 'end' && isRangeValid(utils, newRange);
|
|
222
229
|
setValueAndGoToNextView(newRange, isFullRangeSelected || !isNextSectionAvailable ? 'finish' : 'partial', view);
|
|
@@ -228,7 +235,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
228
235
|
|
|
229
236
|
// Range going for the start of the start day to the end of the end day.
|
|
230
237
|
// This makes sure that `isWithinRange` works with any time in the start and end day.
|
|
231
|
-
const valueDayRange = React.useMemo(() => [
|
|
238
|
+
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]);
|
|
232
239
|
const _useDragRange = useDragRange({
|
|
233
240
|
disableDragEditing: shouldDisableDragEditing,
|
|
234
241
|
onDrop: handleDrop,
|
|
@@ -271,22 +278,39 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
271
278
|
}, [shouldDisableDate, rangePosition, draggingDatePosition]);
|
|
272
279
|
const {
|
|
273
280
|
calendarState,
|
|
274
|
-
|
|
275
|
-
changeMonth,
|
|
276
|
-
handleChangeMonth,
|
|
281
|
+
setVisibleDate,
|
|
277
282
|
onMonthSwitchingAnimationEnd
|
|
278
283
|
} = useCalendarState({
|
|
279
284
|
value: value[0] || value[1],
|
|
280
285
|
referenceDate,
|
|
281
286
|
disableFuture,
|
|
282
287
|
disablePast,
|
|
283
|
-
disableSwitchToMonthOnDayFocus: true,
|
|
284
288
|
maxDate,
|
|
285
289
|
minDate,
|
|
286
290
|
onMonthChange,
|
|
287
291
|
reduceAnimations,
|
|
288
292
|
shouldDisableDate: wrappedShouldDisableDate,
|
|
289
|
-
timezone
|
|
293
|
+
timezone,
|
|
294
|
+
getCurrentMonthFromVisibleDate: (visibleDate, prevMonth) => {
|
|
295
|
+
const firstVisibleMonth = utils.addMonths(prevMonth, 1 - currentMonthCalendarPosition);
|
|
296
|
+
const lastVisibleMonth = utils.endOfMonth(utils.addMonths(firstVisibleMonth, calendars - 1));
|
|
297
|
+
|
|
298
|
+
// The new focused day is inside the visible calendars,
|
|
299
|
+
// Do not change the current month
|
|
300
|
+
if (utils.isWithinRange(visibleDate, [firstVisibleMonth, lastVisibleMonth])) {
|
|
301
|
+
return prevMonth;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// The new focused day is after the last visible month,
|
|
305
|
+
// Move the current month so that the new focused day is inside the first visible month
|
|
306
|
+
if (utils.isAfter(visibleDate, lastVisibleMonth)) {
|
|
307
|
+
return utils.startOfMonth(utils.addMonths(visibleDate, currentMonthCalendarPosition - 1));
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// The new focused day is before the first visible month,
|
|
311
|
+
// Move the current month so that the new focused day is inside the last visible month
|
|
312
|
+
return utils.startOfMonth(utils.addMonths(visibleDate, currentMonthCalendarPosition - calendars));
|
|
313
|
+
}
|
|
290
314
|
});
|
|
291
315
|
const CalendarHeader = slots?.calendarHeader ?? PickersRangeCalendarHeader;
|
|
292
316
|
const calendarHeaderProps = useSlotProps({
|
|
@@ -297,9 +321,9 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
297
321
|
views: ['day'],
|
|
298
322
|
view: 'day',
|
|
299
323
|
currentMonth: calendarState.currentMonth,
|
|
300
|
-
onMonthChange:
|
|
301
|
-
|
|
302
|
-
|
|
324
|
+
onMonthChange: month => setVisibleDate({
|
|
325
|
+
target: month,
|
|
326
|
+
reason: 'header-navigation'
|
|
303
327
|
}),
|
|
304
328
|
minDate,
|
|
305
329
|
maxDate,
|
|
@@ -313,10 +337,12 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
313
337
|
},
|
|
314
338
|
ownerState
|
|
315
339
|
});
|
|
340
|
+
|
|
341
|
+
// TODO: Move this logic inside the render instead of using an effect
|
|
316
342
|
const prevValue = React.useRef(null);
|
|
317
343
|
React.useEffect(() => {
|
|
318
344
|
const date = rangePosition === 'start' ? value[0] : value[1];
|
|
319
|
-
if (!
|
|
345
|
+
if (!utils.isValid(date)) {
|
|
320
346
|
return;
|
|
321
347
|
}
|
|
322
348
|
const prevDate = rangePosition === 'start' ? prevValue.current?.[0] : prevValue.current?.[1];
|
|
@@ -334,7 +360,10 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
334
360
|
const newMonth = rangePosition === 'start' ? date :
|
|
335
361
|
// If need to focus end, scroll to the state when "end" is displaying in the last calendar
|
|
336
362
|
utils.addMonths(date, -displayingMonthRange);
|
|
337
|
-
|
|
363
|
+
setVisibleDate({
|
|
364
|
+
target: newMonth,
|
|
365
|
+
reason: 'controlled-value-change'
|
|
366
|
+
});
|
|
338
367
|
}
|
|
339
368
|
}, [rangePosition, value]); // eslint-disable-line
|
|
340
369
|
|
|
@@ -417,25 +446,19 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
417
446
|
length: calendars
|
|
418
447
|
}).map((_, index) => utils.addMonths(firstMonth, index));
|
|
419
448
|
}, [utils, calendarState.currentMonth, calendars, currentMonthCalendarPosition]);
|
|
420
|
-
const
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
// 2. Month of the `end` date
|
|
428
|
-
// 3. Month of the current date
|
|
429
|
-
// 4. First visible month
|
|
430
|
-
|
|
431
|
-
if (value[0] != null) {
|
|
432
|
-
return visibleMonths.find(month => utils.isSameMonth(month, value[0]));
|
|
449
|
+
const hasFocus = focusedView !== null;
|
|
450
|
+
const prevOpenViewRef = React.useRef(view);
|
|
451
|
+
React.useEffect(() => {
|
|
452
|
+
// If the view change and the focus was on the previous view
|
|
453
|
+
// Then we update the focus.
|
|
454
|
+
if (prevOpenViewRef.current === view) {
|
|
455
|
+
return;
|
|
433
456
|
}
|
|
434
|
-
if (
|
|
435
|
-
|
|
457
|
+
if (focusedView === prevOpenViewRef.current) {
|
|
458
|
+
setFocusedView(view, true);
|
|
436
459
|
}
|
|
437
|
-
|
|
438
|
-
}, [
|
|
460
|
+
prevOpenViewRef.current = view;
|
|
461
|
+
}, [focusedView, setFocusedView, view]);
|
|
439
462
|
return /*#__PURE__*/_jsxs(DateRangeCalendarRoot, _extends({
|
|
440
463
|
ref: ref,
|
|
441
464
|
className: clsx(classes.root, className),
|
|
@@ -457,20 +480,24 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
457
480
|
className: classes.dayCalendar
|
|
458
481
|
}, calendarState, baseDateValidationProps, commonViewProps, {
|
|
459
482
|
onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,
|
|
460
|
-
onFocusedDayChange:
|
|
483
|
+
onFocusedDayChange: focusedDate => setVisibleDate({
|
|
484
|
+
target: focusedDate,
|
|
485
|
+
reason: 'cell-interaction'
|
|
486
|
+
}),
|
|
461
487
|
reduceAnimations: reduceAnimations,
|
|
462
488
|
selectedDays: value,
|
|
463
489
|
onSelectedDaysChange: handleSelectedDayChange,
|
|
464
490
|
currentMonth: month,
|
|
465
491
|
TransitionProps: CalendarTransitionProps,
|
|
466
492
|
shouldDisableDate: wrappedShouldDisableDate,
|
|
493
|
+
hasFocus: hasFocus,
|
|
494
|
+
onFocusedViewChange: isViewFocused => setFocusedView('day', isViewFocused),
|
|
467
495
|
showDaysOutsideCurrentMonth: calendars === 1 && showDaysOutsideCurrentMonth,
|
|
468
496
|
dayOfWeekFormatter: dayOfWeekFormatter,
|
|
469
497
|
loading: loading,
|
|
470
498
|
renderLoading: renderLoading,
|
|
471
499
|
slots: slotsForDayCalendar,
|
|
472
500
|
slotProps: slotPropsForDayCalendar,
|
|
473
|
-
autoFocus: month === focusedMonth,
|
|
474
501
|
fixedWeekNumber: fixedWeekNumber,
|
|
475
502
|
displayWeekNumber: displayWeekNumber,
|
|
476
503
|
timezone: timezone,
|
|
@@ -63,7 +63,7 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
63
63
|
calendars: PropTypes.oneOf([1, 2, 3]),
|
|
64
64
|
className: PropTypes.string,
|
|
65
65
|
/**
|
|
66
|
-
* If `true`, the
|
|
66
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
67
67
|
* @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
|
|
68
68
|
*/
|
|
69
69
|
closeOnSelect: PropTypes.bool,
|
|
@@ -158,12 +158,10 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
158
158
|
formatDensity: PropTypes.oneOf(['dense', 'spacious']),
|
|
159
159
|
/**
|
|
160
160
|
* Pass a ref to the `input` element.
|
|
161
|
-
* Ignored if the field has several inputs.
|
|
162
161
|
*/
|
|
163
162
|
inputRef: refType,
|
|
164
163
|
/**
|
|
165
164
|
* The label content.
|
|
166
|
-
* Ignored if the field has several inputs.
|
|
167
165
|
*/
|
|
168
166
|
label: PropTypes.node,
|
|
169
167
|
/**
|
|
@@ -189,7 +187,6 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
189
187
|
minDate: PropTypes.object,
|
|
190
188
|
/**
|
|
191
189
|
* Name attribute used by the `input` element in the Field.
|
|
192
|
-
* Ignored if the field has several inputs.
|
|
193
190
|
*/
|
|
194
191
|
name: PropTypes.string,
|
|
195
192
|
/**
|
|
@@ -2,21 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["
|
|
5
|
+
const _excluded = ["toolbarFormat", "className", "classes"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import clsx from 'clsx';
|
|
9
9
|
import Typography from '@mui/material/Typography';
|
|
10
10
|
import { styled, useThemeProps } from '@mui/material/styles';
|
|
11
11
|
import composeClasses from '@mui/utils/composeClasses';
|
|
12
|
-
import { PickersToolbar, PickersToolbarButton, useUtils } from '@mui/x-date-pickers/internals';
|
|
13
|
-
import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
12
|
+
import { PickersToolbar, PickersToolbarButton, useUtils, useToolbarOwnerState } from '@mui/x-date-pickers/internals';
|
|
13
|
+
import { usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
14
14
|
import { getDateRangePickerToolbarUtilityClass } from "./dateRangePickerToolbarClasses.js";
|
|
15
|
+
import { usePickerRangePositionContext } from "../hooks/index.js";
|
|
15
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
-
const useUtilityClasses =
|
|
17
|
-
const {
|
|
18
|
-
classes
|
|
19
|
-
} = ownerState;
|
|
17
|
+
const useUtilityClasses = classes => {
|
|
20
18
|
const slots = {
|
|
21
19
|
root: ['root'],
|
|
22
20
|
container: ['container']
|
|
@@ -52,39 +50,50 @@ const DateRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateRangeP
|
|
|
52
50
|
name: 'MuiDateRangePickerToolbar'
|
|
53
51
|
});
|
|
54
52
|
const {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
toolbarFormat,
|
|
59
|
-
className
|
|
53
|
+
toolbarFormat: toolbarFormatProp,
|
|
54
|
+
className,
|
|
55
|
+
classes: classesProp
|
|
60
56
|
} = props,
|
|
61
57
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
58
|
+
const {
|
|
59
|
+
value
|
|
60
|
+
} = usePickerContext();
|
|
62
61
|
const translations = usePickerTranslations();
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
const ownerState = useToolbarOwnerState();
|
|
63
|
+
const {
|
|
64
|
+
rangePosition,
|
|
65
|
+
setRangePosition
|
|
66
|
+
} = usePickerRangePositionContext();
|
|
67
|
+
const classes = useUtilityClasses(classesProp);
|
|
68
|
+
|
|
69
|
+
// This can't be a default value when spreading because it breaks the API generation.
|
|
70
|
+
const toolbarFormat = toolbarFormatProp ?? utils.formats.shortDate;
|
|
71
|
+
const formatDate = (date, fallback) => {
|
|
72
|
+
if (!utils.isValid(date)) {
|
|
73
|
+
return fallback;
|
|
74
|
+
}
|
|
75
|
+
return utils.formatByString(date, toolbarFormat);
|
|
76
|
+
};
|
|
67
77
|
return /*#__PURE__*/_jsx(DateRangePickerToolbarRoot, _extends({}, other, {
|
|
68
78
|
toolbarTitle: translations.dateRangePickerToolbarTitle,
|
|
69
|
-
isLandscape: false,
|
|
70
79
|
className: clsx(classes.root, className),
|
|
71
80
|
ownerState: ownerState,
|
|
72
81
|
ref: ref,
|
|
73
82
|
children: /*#__PURE__*/_jsxs(DateRangePickerToolbarContainer, {
|
|
74
83
|
className: classes.container,
|
|
75
84
|
children: [/*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
76
|
-
variant:
|
|
77
|
-
value:
|
|
85
|
+
variant: value[0] == null ? 'h6' : 'h5',
|
|
86
|
+
value: formatDate(value[0], translations.start),
|
|
78
87
|
selected: rangePosition === 'start',
|
|
79
|
-
onClick: () =>
|
|
88
|
+
onClick: () => setRangePosition('start')
|
|
80
89
|
}), /*#__PURE__*/_jsxs(Typography, {
|
|
81
90
|
variant: "h5",
|
|
82
91
|
children: ["\xA0", '–', "\xA0"]
|
|
83
92
|
}), /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
84
|
-
variant:
|
|
85
|
-
value:
|
|
93
|
+
variant: value[1] == null ? 'h6' : 'h5',
|
|
94
|
+
value: formatDate(value[1], translations.end),
|
|
86
95
|
selected: rangePosition === 'end',
|
|
87
|
-
onClick: () =>
|
|
96
|
+
onClick: () => setRangePosition('end')
|
|
88
97
|
})]
|
|
89
98
|
})
|
|
90
99
|
}));
|
|
@@ -104,14 +113,6 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
|
|
|
104
113
|
* @default `true` for Desktop, `false` for Mobile.
|
|
105
114
|
*/
|
|
106
115
|
hidden: PropTypes.bool,
|
|
107
|
-
onRangePositionChange: PropTypes.func.isRequired,
|
|
108
|
-
/**
|
|
109
|
-
* Callback called when a toolbar is clicked
|
|
110
|
-
* @template TView
|
|
111
|
-
* @param {TView} view The view to open
|
|
112
|
-
*/
|
|
113
|
-
onViewChange: PropTypes.func.isRequired,
|
|
114
|
-
rangePosition: PropTypes.oneOf(['end', 'start']).isRequired,
|
|
115
116
|
/**
|
|
116
117
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
117
118
|
*/
|
|
@@ -125,15 +126,6 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
|
|
|
125
126
|
* Toolbar value placeholder—it is displayed when the value is empty.
|
|
126
127
|
* @default "––"
|
|
127
128
|
*/
|
|
128
|
-
toolbarPlaceholder: PropTypes.node
|
|
129
|
-
value: PropTypes.arrayOf(PropTypes.object).isRequired,
|
|
130
|
-
/**
|
|
131
|
-
* Currently visible picker view.
|
|
132
|
-
*/
|
|
133
|
-
view: PropTypes.oneOf(['day']).isRequired,
|
|
134
|
-
/**
|
|
135
|
-
* Available views.
|
|
136
|
-
*/
|
|
137
|
-
views: PropTypes.arrayOf(PropTypes.oneOf(['day'])).isRequired
|
|
129
|
+
toolbarPlaceholder: PropTypes.node
|
|
138
130
|
} : void 0;
|
|
139
131
|
export { DateRangePickerToolbar };
|
|
@@ -68,8 +68,8 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
|
|
|
68
68
|
calendars: PropTypes.oneOf([1, 2, 3]),
|
|
69
69
|
className: PropTypes.string,
|
|
70
70
|
/**
|
|
71
|
-
* If `true`, the
|
|
72
|
-
* @default
|
|
71
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
72
|
+
* @default false
|
|
73
73
|
*/
|
|
74
74
|
closeOnSelect: PropTypes.bool,
|
|
75
75
|
/**
|
|
@@ -168,12 +168,10 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
|
|
|
168
168
|
formatDensity: PropTypes.oneOf(['dense', 'spacious']),
|
|
169
169
|
/**
|
|
170
170
|
* Pass a ref to the `input` element.
|
|
171
|
-
* Ignored if the field has several inputs.
|
|
172
171
|
*/
|
|
173
172
|
inputRef: refType,
|
|
174
173
|
/**
|
|
175
174
|
* The label content.
|
|
176
|
-
* Ignored if the field has several inputs.
|
|
177
175
|
*/
|
|
178
176
|
label: PropTypes.node,
|
|
179
177
|
/**
|
|
@@ -222,7 +220,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
|
|
|
222
220
|
minutesStep: PropTypes.number,
|
|
223
221
|
/**
|
|
224
222
|
* Name attribute used by the `input` element in the Field.
|
|
225
|
-
* Ignored if the field has several inputs.
|
|
226
223
|
*/
|
|
227
224
|
name: PropTypes.string,
|
|
228
225
|
/**
|