@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
|
@@ -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
|
/**
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BaseSingleInputFieldProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
2
2
|
import { DesktopDateRangePickerProps, DesktopDateRangePickerSlots, DesktopDateRangePickerSlotProps } from '../DesktopDateRangePicker';
|
|
3
3
|
import { MobileDateRangePickerProps, MobileDateRangePickerSlots, MobileDateRangePickerSlotProps } from '../MobileDateRangePicker';
|
|
4
|
-
import { DateRangeValidationError, RangeFieldSection } from '../models';
|
|
5
4
|
import { ValidateDateRangeProps } from '../validation';
|
|
6
5
|
export interface DateRangePickerSlots extends DesktopDateRangePickerSlots, MobileDateRangePickerSlots {
|
|
7
6
|
}
|
|
@@ -24,8 +23,13 @@ export interface DateRangePickerProps<TEnableAccessibleFieldDOMStructure extends
|
|
|
24
23
|
* @default {}
|
|
25
24
|
*/
|
|
26
25
|
slotProps?: DateRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>;
|
|
26
|
+
/**
|
|
27
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
28
|
+
* @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
|
|
29
|
+
*/
|
|
30
|
+
closeOnSelect?: boolean;
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
29
33
|
* Props the field can receive when used inside a date range picker (<DateRangePicker />, <DesktopDateRangePicker /> or <MobileDateRangePicker /> component).
|
|
30
34
|
*/
|
|
31
|
-
export type DateRangePickerFieldProps
|
|
35
|
+
export type DateRangePickerFieldProps = ValidateDateRangeProps & BaseSingleInputFieldProps<PickerRangeValue>;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { BaseToolbarProps, ExportedBaseToolbarProps
|
|
3
|
-
import { UseRangePositionResponse } from '../internals/hooks/useRangePosition';
|
|
2
|
+
import { BaseToolbarProps, ExportedBaseToolbarProps } from '@mui/x-date-pickers/internals';
|
|
4
3
|
import { DateRangePickerToolbarClasses } from './dateRangePickerToolbarClasses';
|
|
5
|
-
export interface DateRangePickerToolbarProps extends ExportedDateRangePickerToolbarProps, Omit<BaseToolbarProps
|
|
4
|
+
export interface DateRangePickerToolbarProps extends ExportedDateRangePickerToolbarProps, Omit<BaseToolbarProps, 'onChange' | 'isLandscape'> {
|
|
6
5
|
}
|
|
7
6
|
export interface ExportedDateRangePickerToolbarProps extends ExportedBaseToolbarProps {
|
|
8
7
|
/**
|
|
@@ -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 };
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DefaultizedProps } from '@mui/x-internals/types';
|
|
3
3
|
import { LocalizedComponent } from '@mui/x-date-pickers/locales';
|
|
4
|
-
import {
|
|
4
|
+
import { BasePickerInputProps, PickerViewRendererLookup, PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
5
5
|
import { DateRangeValidationError } from '../models';
|
|
6
6
|
import { DateRangeCalendarSlots, DateRangeCalendarSlotProps, ExportedDateRangeCalendarProps } from '../DateRangeCalendar';
|
|
7
7
|
import { DateRangePickerToolbarProps, ExportedDateRangePickerToolbarProps } from './DateRangePickerToolbar';
|
|
8
8
|
import { DateRangeViewRendererProps } from '../dateRangeViewRenderers';
|
|
9
|
+
import { ValidateDateRangePropsToDefault } from '../validation/validateDateRange';
|
|
9
10
|
export interface BaseDateRangePickerSlots extends DateRangeCalendarSlots {
|
|
10
11
|
/**
|
|
11
12
|
* Custom component for the toolbar rendered above the views.
|
|
@@ -32,8 +33,8 @@ export interface BaseDateRangePickerProps extends Omit<BasePickerInputProps<Pick
|
|
|
32
33
|
* If `null`, the section will only have field editing.
|
|
33
34
|
* If `undefined`, internally defined view will be used.
|
|
34
35
|
*/
|
|
35
|
-
viewRenderers?: Partial<PickerViewRendererLookup<PickerRangeValue, 'day', DateRangeViewRendererProps<'day'
|
|
36
|
+
viewRenderers?: Partial<PickerViewRendererLookup<PickerRangeValue, 'day', DateRangeViewRendererProps<'day'>>>;
|
|
36
37
|
}
|
|
37
|
-
type UseDateRangePickerDefaultizedProps<Props extends BaseDateRangePickerProps> = LocalizedComponent<DefaultizedProps<Props,
|
|
38
|
+
type UseDateRangePickerDefaultizedProps<Props extends BaseDateRangePickerProps> = LocalizedComponent<DefaultizedProps<Props, ValidateDateRangePropsToDefault>>;
|
|
38
39
|
export declare function useDateRangePickerDefaultizedProps<Props extends BaseDateRangePickerProps>(props: Props, name: string): UseDateRangePickerDefaultizedProps<Props>;
|
|
39
40
|
export {};
|
|
@@ -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
|
/**
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BaseSingleInputFieldProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
2
2
|
import { DesktopDateTimeRangePickerProps, DesktopDateTimeRangePickerSlots, DesktopDateTimeRangePickerSlotProps } from '../DesktopDateTimeRangePicker';
|
|
3
3
|
import { MobileDateTimeRangePickerProps, MobileDateTimeRangePickerSlots, MobileDateTimeRangePickerSlotProps } from '../MobileDateTimeRangePicker';
|
|
4
|
-
import { DateTimeRangeValidationError, RangeFieldSection } from '../models';
|
|
5
4
|
import type { ValidateDateTimeRangeProps } from '../validation';
|
|
6
5
|
export interface DateTimeRangePickerSlots extends DesktopDateTimeRangePickerSlots, MobileDateTimeRangePickerSlots {
|
|
7
6
|
}
|
|
@@ -28,4 +27,4 @@ export interface DateTimeRangePickerProps<TEnableAccessibleFieldDOMStructure ext
|
|
|
28
27
|
/**
|
|
29
28
|
* Props the field can receive when used inside a date time range picker (<DateTimeRangePicker />, <DesktopDateTimeRangePicker /> or <MobileDateTimeRangePicker /> component).
|
|
30
29
|
*/
|
|
31
|
-
export type DateTimeRangePickerFieldProps
|
|
30
|
+
export type DateTimeRangePickerFieldProps = ValidateDateTimeRangeProps & BaseSingleInputFieldProps<PickerRangeValue>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ExportedBaseTabsProps } from '@mui/x-date-pickers/internals';
|
|
3
3
|
import { DateTimeRangePickerTabsClasses } from './dateTimeRangePickerTabsClasses';
|
|
4
|
-
import { UseRangePositionResponse } from '../internals/hooks/useRangePosition';
|
|
5
4
|
export interface ExportedDateTimeRangePickerTabsProps extends ExportedBaseTabsProps {
|
|
6
5
|
/**
|
|
7
6
|
* Toggles visibility of the tabs allowing view switching.
|
|
@@ -12,18 +11,18 @@ export interface ExportedDateTimeRangePickerTabsProps extends ExportedBaseTabsPr
|
|
|
12
11
|
* Date tab icon.
|
|
13
12
|
* @default DateRangeIcon
|
|
14
13
|
*/
|
|
15
|
-
dateIcon?: React.ReactElement
|
|
14
|
+
dateIcon?: React.ReactElement<any>;
|
|
16
15
|
/**
|
|
17
16
|
* Time tab icon.
|
|
18
17
|
* @default TimeIcon
|
|
19
18
|
*/
|
|
20
|
-
timeIcon?: React.ReactElement
|
|
19
|
+
timeIcon?: React.ReactElement<any>;
|
|
21
20
|
/**
|
|
22
21
|
* Override or extend the styles applied to the component.
|
|
23
22
|
*/
|
|
24
23
|
classes?: Partial<DateTimeRangePickerTabsClasses>;
|
|
25
24
|
}
|
|
26
|
-
export interface DateTimeRangePickerTabsProps extends ExportedDateTimeRangePickerTabsProps
|
|
25
|
+
export interface DateTimeRangePickerTabsProps extends ExportedDateTimeRangePickerTabsProps {
|
|
27
26
|
}
|
|
28
27
|
declare const DateTimeRangePickerTabs: {
|
|
29
28
|
(inProps: DateTimeRangePickerTabsProps): React.JSX.Element | null;
|