@mui/x-date-pickers-pro 8.0.0-alpha.1 → 8.0.0-alpha.10
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 +1903 -231
- package/DateRangeCalendar/DateRangeCalendar.js +15 -13
- 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 +4 -8
- package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -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/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 +15 -13
- 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 +4 -8
- package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -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/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 +14 -12
- 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 +4 -8
- package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -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/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,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
|
/**
|
|
@@ -7,11 +7,12 @@ import { styled, useThemeProps } from '@mui/material/styles';
|
|
|
7
7
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
9
9
|
import { TimeIcon, DateRangeIcon, ArrowLeftIcon, ArrowRightIcon } from '@mui/x-date-pickers/icons';
|
|
10
|
-
import { isDatePickerView } from '@mui/x-date-pickers/internals';
|
|
11
|
-
import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
10
|
+
import { isDatePickerView, usePickerPrivateContext } from '@mui/x-date-pickers/internals';
|
|
11
|
+
import { usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
12
12
|
import IconButton from '@mui/material/IconButton';
|
|
13
13
|
import Button from '@mui/material/Button';
|
|
14
14
|
import { getDateTimeRangePickerTabsUtilityClass } from "./dateTimeRangePickerTabsClasses.js";
|
|
15
|
+
import { usePickerRangePositionContext } from "../hooks/index.js";
|
|
15
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
17
|
const viewToTab = (view, rangePosition) => {
|
|
17
18
|
if (isDatePickerView(view)) {
|
|
@@ -25,10 +26,7 @@ const tabToView = tab => {
|
|
|
25
26
|
}
|
|
26
27
|
return 'hours';
|
|
27
28
|
};
|
|
28
|
-
const useUtilityClasses =
|
|
29
|
-
const {
|
|
30
|
-
classes
|
|
31
|
-
} = ownerState;
|
|
29
|
+
const useUtilityClasses = classes => {
|
|
32
30
|
const slots = {
|
|
33
31
|
root: ['root'],
|
|
34
32
|
tabButton: ['tabButton'],
|
|
@@ -72,18 +70,26 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(inProps) {
|
|
|
72
70
|
});
|
|
73
71
|
const {
|
|
74
72
|
dateIcon = /*#__PURE__*/_jsx(DateRangeIcon, {}),
|
|
75
|
-
onViewChange,
|
|
76
73
|
timeIcon = /*#__PURE__*/_jsx(TimeIcon, {}),
|
|
77
|
-
view,
|
|
78
74
|
hidden = typeof window === 'undefined' || window.innerHeight < 667,
|
|
79
|
-
rangePosition,
|
|
80
|
-
onRangePositionChange,
|
|
81
75
|
className,
|
|
76
|
+
classes: classesProp,
|
|
82
77
|
sx
|
|
83
78
|
} = props;
|
|
84
79
|
const translations = usePickerTranslations();
|
|
85
|
-
const
|
|
86
|
-
|
|
80
|
+
const {
|
|
81
|
+
ownerState
|
|
82
|
+
} = usePickerPrivateContext();
|
|
83
|
+
const {
|
|
84
|
+
view,
|
|
85
|
+
setView
|
|
86
|
+
} = usePickerContext();
|
|
87
|
+
const classes = useUtilityClasses(classesProp);
|
|
88
|
+
const {
|
|
89
|
+
rangePosition,
|
|
90
|
+
setRangePosition
|
|
91
|
+
} = usePickerRangePositionContext();
|
|
92
|
+
const value = React.useMemo(() => view == null ? null : viewToTab(view, rangePosition), [view, rangePosition]);
|
|
87
93
|
const isPreviousHidden = value === 'start-date';
|
|
88
94
|
const isNextHidden = value === 'end-time';
|
|
89
95
|
const tabLabel = React.useMemo(() => {
|
|
@@ -102,26 +108,34 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(inProps) {
|
|
|
102
108
|
}, [translations.endDate, translations.endTime, translations.startDate, translations.startTime, value]);
|
|
103
109
|
const handleRangePositionChange = useEventCallback(newTab => {
|
|
104
110
|
if (newTab.includes('start')) {
|
|
105
|
-
|
|
111
|
+
setRangePosition('start');
|
|
106
112
|
} else {
|
|
107
|
-
|
|
113
|
+
setRangePosition('end');
|
|
108
114
|
}
|
|
109
115
|
});
|
|
110
116
|
const changeToPreviousTab = useEventCallback(() => {
|
|
111
|
-
const previousTab = tabOptions[tabOptions.indexOf(value) - 1];
|
|
112
|
-
|
|
117
|
+
const previousTab = value == null ? tabOptions[0] : tabOptions[tabOptions.indexOf(value) - 1];
|
|
118
|
+
setView(tabToView(previousTab));
|
|
113
119
|
handleRangePositionChange(previousTab);
|
|
114
120
|
});
|
|
115
121
|
const changeToNextTab = useEventCallback(() => {
|
|
116
|
-
const nextTab = tabOptions[tabOptions.indexOf(value) + 1];
|
|
117
|
-
|
|
122
|
+
const nextTab = value == null ? tabOptions[0] : tabOptions[tabOptions.indexOf(value) + 1];
|
|
123
|
+
setView(tabToView(nextTab));
|
|
118
124
|
handleRangePositionChange(nextTab);
|
|
119
125
|
});
|
|
120
126
|
if (hidden) {
|
|
121
127
|
return null;
|
|
122
128
|
}
|
|
129
|
+
let startIcon;
|
|
130
|
+
if (view == null) {
|
|
131
|
+
startIcon = null;
|
|
132
|
+
} else if (isDatePickerView(view)) {
|
|
133
|
+
startIcon = dateIcon;
|
|
134
|
+
} else {
|
|
135
|
+
startIcon = timeIcon;
|
|
136
|
+
}
|
|
123
137
|
return /*#__PURE__*/_jsxs(DateTimeRangePickerTabsRoot, {
|
|
124
|
-
ownerState:
|
|
138
|
+
ownerState: ownerState,
|
|
125
139
|
className: clsx(classes.root, className),
|
|
126
140
|
sx: sx,
|
|
127
141
|
children: [!isPreviousHidden ? /*#__PURE__*/_jsx(IconButton, {
|
|
@@ -132,7 +146,7 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(inProps) {
|
|
|
132
146
|
}) : /*#__PURE__*/_jsx(DateTimeRangePickerTabFiller, {
|
|
133
147
|
className: classes.filler
|
|
134
148
|
}), /*#__PURE__*/_jsx(DateTimeRangePickerTab, {
|
|
135
|
-
startIcon:
|
|
149
|
+
startIcon: startIcon,
|
|
136
150
|
className: classes.tabButton,
|
|
137
151
|
size: "large",
|
|
138
152
|
children: tabLabel
|
|
@@ -166,14 +180,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerTabs.propTypes = {
|
|
|
166
180
|
* @default `window.innerHeight < 667` for `DesktopDateTimeRangePicker` and `MobileDateTimeRangePicker`
|
|
167
181
|
*/
|
|
168
182
|
hidden: PropTypes.bool,
|
|
169
|
-
onRangePositionChange: PropTypes.func.isRequired,
|
|
170
|
-
/**
|
|
171
|
-
* Callback called when a tab is clicked.
|
|
172
|
-
* @template TView
|
|
173
|
-
* @param {TView} view The view to open
|
|
174
|
-
*/
|
|
175
|
-
onViewChange: PropTypes.func.isRequired,
|
|
176
|
-
rangePosition: PropTypes.oneOf(['end', 'start']).isRequired,
|
|
177
183
|
/**
|
|
178
184
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
179
185
|
*/
|
|
@@ -182,10 +188,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerTabs.propTypes = {
|
|
|
182
188
|
* Time tab icon.
|
|
183
189
|
* @default TimeIcon
|
|
184
190
|
*/
|
|
185
|
-
timeIcon: PropTypes.element
|
|
186
|
-
/**
|
|
187
|
-
* Currently visible picker view.
|
|
188
|
-
*/
|
|
189
|
-
view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired
|
|
191
|
+
timeIcon: PropTypes.element
|
|
190
192
|
} : void 0;
|
|
191
193
|
export { DateTimeRangePickerTabs };
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["
|
|
3
|
+
const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
|
|
4
4
|
import { isInternalTimeView, useUtils } from '@mui/x-date-pickers/internals';
|
|
5
5
|
import { isRangeValid } from "../internals/utils/date-utils.js";
|
|
6
6
|
import { calculateRangeChange } from "../internals/utils/date-range-manager.js";
|
|
7
|
+
import { usePickerRangePositionContext } from "../hooks/index.js";
|
|
7
8
|
/**
|
|
8
9
|
* @ignore - internal component.
|
|
9
10
|
*/
|
|
10
|
-
function DateTimeRangePickerTimeWrapper(props
|
|
11
|
+
function DateTimeRangePickerTimeWrapper(props) {
|
|
11
12
|
const utils = useUtils();
|
|
12
13
|
const {
|
|
13
|
-
rangePosition,
|
|
14
|
-
onRangePositionChange,
|
|
15
14
|
viewRenderer,
|
|
16
15
|
value,
|
|
17
16
|
onChange,
|
|
@@ -20,6 +19,10 @@ function DateTimeRangePickerTimeWrapper(props, ref) {
|
|
|
20
19
|
views
|
|
21
20
|
} = props,
|
|
22
21
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
22
|
+
const {
|
|
23
|
+
rangePosition,
|
|
24
|
+
setRangePosition
|
|
25
|
+
} = usePickerRangePositionContext();
|
|
23
26
|
if (!viewRenderer) {
|
|
24
27
|
return null;
|
|
25
28
|
}
|
|
@@ -42,12 +45,11 @@ function DateTimeRangePickerTimeWrapper(props, ref) {
|
|
|
42
45
|
// reset view to the first time view and swap range position after selecting the last time view (start or end position)
|
|
43
46
|
if (selectedView === timeViews[timeViews.length - 1] && onViewChange) {
|
|
44
47
|
onViewChange(views[0]);
|
|
45
|
-
|
|
48
|
+
setRangePosition(rangePosition === 'start' ? 'end' : 'start');
|
|
46
49
|
}
|
|
47
50
|
onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView);
|
|
48
51
|
};
|
|
49
52
|
return viewRenderer(_extends({}, other, {
|
|
50
|
-
ref,
|
|
51
53
|
views,
|
|
52
54
|
onViewChange,
|
|
53
55
|
value: currentValue,
|
|
@@ -2,22 +2,20 @@
|
|
|
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 = ["className", "classes", "classes", "ampm", "hidden", "toolbarFormat", "toolbarPlaceholder", "titleId", "sx"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import clsx from 'clsx';
|
|
9
9
|
import { styled, useThemeProps } from '@mui/material/styles';
|
|
10
10
|
import composeClasses from '@mui/utils/composeClasses';
|
|
11
|
-
import { useUtils } from '@mui/x-date-pickers/internals';
|
|
11
|
+
import { useUtils, useToolbarOwnerState, DateTimePickerToolbarOverrideContext } from '@mui/x-date-pickers/internals';
|
|
12
12
|
import { usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
13
13
|
import { DateTimePickerToolbar } from '@mui/x-date-pickers/DateTimePicker';
|
|
14
14
|
import { getDateTimeRangePickerToolbarUtilityClass } from "./dateTimeRangePickerToolbarClasses.js";
|
|
15
15
|
import { calculateRangeChange } from "../internals/utils/date-range-manager.js";
|
|
16
|
+
import { usePickerRangePositionContext } from "../hooks/index.js";
|
|
16
17
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
-
const useUtilityClasses =
|
|
18
|
-
const {
|
|
19
|
-
classes
|
|
20
|
-
} = ownerState;
|
|
18
|
+
const useUtilityClasses = classes => {
|
|
21
19
|
const slots = {
|
|
22
20
|
root: ['root'],
|
|
23
21
|
startToolbar: ['startToolbar'],
|
|
@@ -39,36 +37,13 @@ const DateTimeRangePickerToolbarStart = styled(DateTimePickerToolbar, {
|
|
|
39
37
|
overridesResolver: (_, styles) => styles.startToolbar
|
|
40
38
|
})({
|
|
41
39
|
borderBottom: 'none',
|
|
42
|
-
|
|
43
|
-
props: ({
|
|
44
|
-
toolbarVariant
|
|
45
|
-
}) => toolbarVariant !== 'desktop',
|
|
46
|
-
style: {
|
|
47
|
-
padding: '12px 8px 0 12px'
|
|
48
|
-
}
|
|
49
|
-
}, {
|
|
50
|
-
props: {
|
|
51
|
-
toolbarVariant: 'desktop'
|
|
52
|
-
},
|
|
53
|
-
style: {
|
|
54
|
-
paddingBottom: 0
|
|
55
|
-
}
|
|
56
|
-
}]
|
|
40
|
+
paddingBottom: 0
|
|
57
41
|
});
|
|
58
42
|
const DateTimeRangePickerToolbarEnd = styled(DateTimePickerToolbar, {
|
|
59
43
|
name: 'MuiDateTimeRangePickerToolbar',
|
|
60
44
|
slot: 'EndToolbar',
|
|
61
45
|
overridesResolver: (_, styles) => styles.endToolbar
|
|
62
|
-
})({
|
|
63
|
-
variants: [{
|
|
64
|
-
props: ({
|
|
65
|
-
toolbarVariant
|
|
66
|
-
}) => toolbarVariant !== 'desktop',
|
|
67
|
-
style: {
|
|
68
|
-
padding: '12px 8px 12px 12px'
|
|
69
|
-
}
|
|
70
|
-
}]
|
|
71
|
-
});
|
|
46
|
+
})({});
|
|
72
47
|
const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTimeRangePickerToolbar(inProps, ref) {
|
|
73
48
|
const props = useThemeProps({
|
|
74
49
|
props: inProps,
|
|
@@ -76,15 +51,8 @@ const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTi
|
|
|
76
51
|
});
|
|
77
52
|
const utils = useUtils();
|
|
78
53
|
const {
|
|
79
|
-
value: [start, end],
|
|
80
|
-
rangePosition,
|
|
81
|
-
onRangePositionChange,
|
|
82
54
|
className,
|
|
83
|
-
|
|
84
|
-
onChange,
|
|
85
|
-
view,
|
|
86
|
-
isLandscape,
|
|
87
|
-
views,
|
|
55
|
+
classes: classesProp,
|
|
88
56
|
ampm,
|
|
89
57
|
hidden,
|
|
90
58
|
toolbarFormat,
|
|
@@ -94,11 +62,22 @@ const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTi
|
|
|
94
62
|
} = props,
|
|
95
63
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
96
64
|
const {
|
|
65
|
+
value,
|
|
66
|
+
setValue,
|
|
97
67
|
disabled,
|
|
98
|
-
readOnly
|
|
68
|
+
readOnly,
|
|
69
|
+
view,
|
|
70
|
+
setView,
|
|
71
|
+
views
|
|
99
72
|
} = usePickerContext();
|
|
73
|
+
const translations = usePickerTranslations();
|
|
74
|
+
const ownerState = useToolbarOwnerState();
|
|
75
|
+
const {
|
|
76
|
+
rangePosition,
|
|
77
|
+
setRangePosition
|
|
78
|
+
} = usePickerRangePositionContext();
|
|
79
|
+
const classes = useUtilityClasses(classesProp);
|
|
100
80
|
const commonToolbarProps = {
|
|
101
|
-
isLandscape,
|
|
102
81
|
views,
|
|
103
82
|
ampm,
|
|
104
83
|
disabled,
|
|
@@ -107,41 +86,58 @@ const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTi
|
|
|
107
86
|
toolbarFormat,
|
|
108
87
|
toolbarPlaceholder
|
|
109
88
|
};
|
|
110
|
-
const
|
|
111
|
-
const ownerState = props;
|
|
112
|
-
const classes = useUtilityClasses(ownerState);
|
|
113
|
-
const handleStartRangeViewChange = React.useCallback(newView => {
|
|
114
|
-
if (newView === 'year' || newView === 'month') {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
if (rangePosition !== 'start') {
|
|
118
|
-
onRangePositionChange('start');
|
|
119
|
-
}
|
|
120
|
-
onViewChange(newView);
|
|
121
|
-
}, [onRangePositionChange, onViewChange, rangePosition]);
|
|
122
|
-
const handleEndRangeViewChange = React.useCallback(newView => {
|
|
123
|
-
if (newView === 'year' || newView === 'month') {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (rangePosition !== 'end') {
|
|
127
|
-
onRangePositionChange('end');
|
|
128
|
-
}
|
|
129
|
-
onViewChange(newView);
|
|
130
|
-
}, [onRangePositionChange, onViewChange, rangePosition]);
|
|
131
|
-
const handleOnChange = React.useCallback(newDate => {
|
|
89
|
+
const wrappedSetValue = React.useCallback(newDate => {
|
|
132
90
|
const {
|
|
133
91
|
nextSelection,
|
|
134
92
|
newRange
|
|
135
93
|
} = calculateRangeChange({
|
|
136
94
|
newDate,
|
|
137
95
|
utils,
|
|
138
|
-
range:
|
|
96
|
+
range: value,
|
|
139
97
|
rangePosition,
|
|
140
98
|
allowRangeFlip: true
|
|
141
99
|
});
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
100
|
+
setRangePosition(nextSelection);
|
|
101
|
+
setValue(newRange, {
|
|
102
|
+
changeImportance: 'set'
|
|
103
|
+
});
|
|
104
|
+
}, [setValue, setRangePosition, value, rangePosition, utils]);
|
|
105
|
+
const startOverrides = React.useMemo(() => {
|
|
106
|
+
const handleStartRangeViewChange = newView => {
|
|
107
|
+
if (newView === 'year' || newView === 'month') {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (rangePosition !== 'start') {
|
|
111
|
+
setRangePosition('start');
|
|
112
|
+
}
|
|
113
|
+
setView(newView);
|
|
114
|
+
};
|
|
115
|
+
return {
|
|
116
|
+
value: value[0],
|
|
117
|
+
setValue: wrappedSetValue,
|
|
118
|
+
forceDesktopVariant: true,
|
|
119
|
+
setView: handleStartRangeViewChange,
|
|
120
|
+
view: rangePosition === 'start' ? view : null
|
|
121
|
+
};
|
|
122
|
+
}, [value, wrappedSetValue, rangePosition, view, setRangePosition, setView]);
|
|
123
|
+
const endOverrides = React.useMemo(() => {
|
|
124
|
+
const handleEndRangeViewChange = newView => {
|
|
125
|
+
if (newView === 'year' || newView === 'month') {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (rangePosition !== 'end') {
|
|
129
|
+
setRangePosition('end');
|
|
130
|
+
}
|
|
131
|
+
setView(newView);
|
|
132
|
+
};
|
|
133
|
+
return {
|
|
134
|
+
value: value[1],
|
|
135
|
+
setValue: wrappedSetValue,
|
|
136
|
+
forceDesktopVariant: true,
|
|
137
|
+
setView: handleEndRangeViewChange,
|
|
138
|
+
view: rangePosition === 'end' ? view : null
|
|
139
|
+
};
|
|
140
|
+
}, [value, wrappedSetValue, rangePosition, view, setRangePosition, setView]);
|
|
145
141
|
if (hidden) {
|
|
146
142
|
return null;
|
|
147
143
|
}
|
|
@@ -151,27 +147,23 @@ const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTi
|
|
|
151
147
|
ref: ref,
|
|
152
148
|
sx: sx
|
|
153
149
|
}, other, {
|
|
154
|
-
children: [/*#__PURE__*/_jsx(
|
|
155
|
-
value:
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
className: classes.endToolbar,
|
|
172
|
-
onChange: handleOnChange,
|
|
173
|
-
titleId: titleId ? `${titleId}-end-toolbar` : undefined
|
|
174
|
-
}, commonToolbarProps))]
|
|
150
|
+
children: [/*#__PURE__*/_jsx(DateTimePickerToolbarOverrideContext.Provider, {
|
|
151
|
+
value: startOverrides,
|
|
152
|
+
children: /*#__PURE__*/_jsx(DateTimeRangePickerToolbarStart, _extends({
|
|
153
|
+
toolbarTitle: translations.start,
|
|
154
|
+
ownerState: ownerState,
|
|
155
|
+
className: classes.startToolbar,
|
|
156
|
+
titleId: titleId ? `${titleId}-start-toolbar` : undefined
|
|
157
|
+
}, commonToolbarProps))
|
|
158
|
+
}), /*#__PURE__*/_jsx(DateTimePickerToolbarOverrideContext.Provider, {
|
|
159
|
+
value: endOverrides,
|
|
160
|
+
children: /*#__PURE__*/_jsx(DateTimeRangePickerToolbarEnd, _extends({
|
|
161
|
+
toolbarTitle: translations.end,
|
|
162
|
+
ownerState: ownerState,
|
|
163
|
+
className: classes.endToolbar,
|
|
164
|
+
titleId: titleId ? `${titleId}-end-toolbar` : undefined
|
|
165
|
+
}, commonToolbarProps))
|
|
166
|
+
})]
|
|
175
167
|
}));
|
|
176
168
|
});
|
|
177
169
|
process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
|
|
@@ -190,16 +182,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
|
|
|
190
182
|
* @default `true` for Desktop, `false` for Mobile.
|
|
191
183
|
*/
|
|
192
184
|
hidden: PropTypes.bool,
|
|
193
|
-
isLandscape: PropTypes.bool.isRequired,
|
|
194
|
-
onChange: PropTypes.func.isRequired,
|
|
195
|
-
onRangePositionChange: PropTypes.func.isRequired,
|
|
196
|
-
/**
|
|
197
|
-
* Callback called when a toolbar is clicked
|
|
198
|
-
* @template TView
|
|
199
|
-
* @param {TView} view The view to open
|
|
200
|
-
*/
|
|
201
|
-
onViewChange: PropTypes.func.isRequired,
|
|
202
|
-
rangePosition: PropTypes.oneOf(['end', 'start']).isRequired,
|
|
203
185
|
/**
|
|
204
186
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
205
187
|
*/
|
|
@@ -213,16 +195,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
|
|
|
213
195
|
* Toolbar value placeholder—it is displayed when the value is empty.
|
|
214
196
|
* @default "––"
|
|
215
197
|
*/
|
|
216
|
-
toolbarPlaceholder: PropTypes.node
|
|
217
|
-
toolbarVariant: PropTypes.oneOf(['desktop', 'mobile']),
|
|
218
|
-
value: PropTypes.arrayOf(PropTypes.object).isRequired,
|
|
219
|
-
/**
|
|
220
|
-
* Currently visible picker view.
|
|
221
|
-
*/
|
|
222
|
-
view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'seconds']).isRequired,
|
|
223
|
-
/**
|
|
224
|
-
* Available views.
|
|
225
|
-
*/
|
|
226
|
-
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'seconds']).isRequired).isRequired
|
|
198
|
+
toolbarPlaceholder: PropTypes.node
|
|
227
199
|
} : void 0;
|
|
228
200
|
export { DateTimeRangePickerToolbar };
|