@mui/x-date-pickers-pro 8.0.0-alpha.1 → 8.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
- package/CHANGELOG.md +2007 -230
- package/DateRangeCalendar/DateRangeCalendar.js +73 -46
- package/DateRangePicker/DateRangePicker.js +1 -4
- package/DateRangePicker/DateRangePicker.types.d.ts +6 -2
- package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
- package/DateRangePicker/DateRangePickerToolbar.js +33 -41
- package/DateRangePicker/shared.d.ts +4 -3
- package/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
- package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +1 -2
- package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +4 -5
- package/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -5
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +81 -109
- package/DateTimeRangePicker/shared.d.ts +6 -5
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
- package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +7 -2
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
- package/MobileDateRangePicker/MobileDateRangePicker.js +6 -8
- package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -16
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
- package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +9 -4
- package/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
- package/MultiInputDateRangeField/index.d.ts +5 -3
- package/MultiInputDateRangeField/index.js +2 -2
- package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.d.ts +6 -0
- package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +9 -4
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
- package/MultiInputDateTimeRangeField/index.d.ts +5 -3
- package/MultiInputDateTimeRangeField/index.js +2 -2
- package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.d.ts +6 -0
- package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +9 -4
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
- package/MultiInputTimeRangeField/index.d.ts +5 -3
- package/MultiInputTimeRangeField/index.js +2 -2
- package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.d.ts +6 -0
- package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
- package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
- package/README.md +8 -5
- package/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
- package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -16
- package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
- package/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -17
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -17
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
- package/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
- package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
- package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
- package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/hooks/index.d.ts +2 -0
- package/hooks/index.js +2 -0
- package/hooks/package.json +6 -0
- package/hooks/useMultiInputRangeField/index.d.ts +1 -0
- package/hooks/useMultiInputRangeField/index.js +1 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +53 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +17 -0
- package/{modern/internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +17 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
- package/hooks/usePickerRangePositionContext.d.ts +7 -0
- package/hooks/usePickerRangePositionContext.js +15 -0
- package/index.d.ts +2 -0
- package/index.js +4 -2
- package/internals/hooks/models/index.d.ts +1 -1
- package/internals/hooks/models/useRangePicker.d.ts +8 -11
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +8 -10
- package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +25 -16
- package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
- package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
- package/internals/hooks/useRangePosition.d.ts +4 -3
- package/internals/hooks/useRangePosition.js +1 -1
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -12
- package/internals/models/dateTimeRange.d.ts +1 -6
- package/internals/models/fields.d.ts +7 -11
- package/internals/models/index.d.ts +0 -1
- package/internals/models/index.js +0 -1
- package/internals/models/managers.d.ts +3 -0
- package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.d.ts +3 -0
- package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
- package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +72 -0
- package/internals/utils/createMultiInputRangeField/index.d.ts +3 -0
- package/internals/utils/createMultiInputRangeField/index.js +2 -0
- package/internals/utils/date-fields-utils.d.ts +6 -6
- package/internals/utils/date-range-manager.js +2 -1
- package/internals/utils/releaseInfo.js +1 -1
- package/internals/utils/valueManagers.d.ts +4 -3
- package/internals/utils/valueManagers.js +7 -7
- package/managers/index.d.ts +6 -0
- package/managers/index.js +3 -0
- package/managers/package.json +6 -0
- package/managers/useDateRangeManager.d.ts +15 -0
- package/managers/useDateRangeManager.js +33 -0
- package/managers/useDateTimeRangeManager.d.ts +15 -0
- package/managers/useDateTimeRangeManager.js +33 -0
- package/managers/useTimeRangeManager.d.ts +15 -0
- package/managers/useTimeRangeManager.js +31 -0
- package/models/fields.d.ts +7 -11
- package/models/index.d.ts +1 -2
- package/models/index.js +1 -2
- package/models/range.d.ts +0 -2
- package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/modern/DateRangeCalendar/DateRangeCalendar.js +73 -46
- package/modern/DateRangePicker/DateRangePicker.js +1 -4
- package/modern/DateRangePicker/DateRangePickerToolbar.js +33 -41
- package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
- package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
- package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +81 -109
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
- package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +6 -8
- package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -16
- package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
- package/modern/MultiInputDateRangeField/index.js +2 -2
- package/modern/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
- package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
- package/modern/MultiInputDateTimeRangeField/index.js +2 -2
- package/modern/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
- package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
- package/modern/MultiInputTimeRangeField/index.js +2 -2
- package/modern/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
- package/modern/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
- package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
- package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
- package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
- package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
- package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
- package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
- package/modern/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
- package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/modern/hooks/index.js +2 -0
- package/modern/hooks/useMultiInputRangeField/index.js +1 -0
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
- package/{internals/hooks/useMultiInputFieldSelectedSections.js → modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
- package/modern/hooks/usePickerRangePositionContext.js +15 -0
- package/modern/index.js +4 -2
- package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
- package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
- package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
- package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
- package/modern/internals/hooks/useRangePosition.js +1 -1
- package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
- package/modern/internals/models/index.js +0 -1
- package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
- package/modern/internals/utils/createMultiInputRangeField/index.js +2 -0
- package/modern/internals/utils/date-range-manager.js +2 -1
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/modern/internals/utils/valueManagers.js +7 -7
- package/modern/managers/index.js +3 -0
- package/modern/managers/useDateRangeManager.js +33 -0
- package/modern/managers/useDateTimeRangeManager.js +33 -0
- package/modern/managers/useTimeRangeManager.js +31 -0
- package/modern/models/index.js +1 -2
- package/modern/validation/validateDateRange.js +8 -0
- package/modern/validation/validateDateTimeRange.js +4 -0
- package/modern/validation/validateTimeRange.js +8 -0
- package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/node/DateRangeCalendar/DateRangeCalendar.js +72 -45
- package/node/DateRangePicker/DateRangePicker.js +1 -4
- package/node/DateRangePicker/DateRangePickerToolbar.js +31 -39
- package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
- package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +33 -31
- package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +80 -108
- package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
- package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
- package/node/MobileDateRangePicker/MobileDateRangePicker.js +6 -8
- package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -16
- package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +14 -124
- package/node/MultiInputDateRangeField/index.js +3 -9
- package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
- package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -124
- package/node/MultiInputDateTimeRangeField/index.js +3 -9
- package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
- package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +15 -125
- package/node/MultiInputTimeRangeField/index.js +3 -9
- package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
- package/node/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
- package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +22 -32
- package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
- package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +22 -32
- package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
- package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +22 -32
- package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
- package/node/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
- package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/node/hooks/index.js +19 -0
- package/node/hooks/useMultiInputRangeField/index.js +12 -0
- package/node/hooks/useMultiInputRangeField/useMultiInputRangeField.js +155 -0
- package/node/{internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +11 -10
- package/node/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +66 -0
- package/node/hooks/usePickerRangePositionContext.js +22 -0
- package/node/index.js +23 -1
- package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
- package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +52 -65
- package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
- package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
- package/node/internals/hooks/useRangePosition.js +1 -1
- package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +16 -29
- package/node/internals/models/index.js +0 -11
- package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +143 -0
- package/node/internals/utils/createMultiInputRangeField/index.js +19 -0
- package/node/internals/utils/date-range-manager.js +2 -1
- package/node/internals/utils/releaseInfo.js +1 -1
- package/node/internals/utils/valueManagers.js +7 -7
- package/node/managers/index.js +26 -0
- package/node/managers/useDateRangeManager.js +40 -0
- package/node/managers/useDateTimeRangeManager.js +40 -0
- package/node/managers/useTimeRangeManager.js +38 -0
- package/node/models/index.js +0 -22
- package/node/validation/validateDateRange.js +8 -0
- package/node/validation/validateDateTimeRange.js +4 -0
- package/node/validation/validateTimeRange.js +8 -0
- package/package.json +6 -6
- package/themeAugmentation/overrides.d.ts +6 -4
- package/themeAugmentation/props.d.ts +2 -2
- package/validation/validateDateRange.d.ts +9 -1
- package/validation/validateDateRange.js +8 -0
- package/validation/validateDateTimeRange.d.ts +6 -2
- package/validation/validateDateTimeRange.js +4 -0
- package/validation/validateTimeRange.d.ts +9 -1
- package/validation/validateTimeRange.js +8 -0
- package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -53
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -54
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -54
- package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +0 -21
- package/internals/hooks/useMultiInputRangeField/shared.d.ts +0 -1
- package/internals/hooks/useMultiInputRangeField/shared.js +0 -9
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +0 -3
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +0 -3
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
- package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +0 -11
- package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +0 -3
- package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
- package/internals/models/timeRange.d.ts +0 -6
- package/internals/models/timeRange.js +0 -1
- package/models/dateRange.d.ts +0 -7
- package/models/dateRange.js +0 -1
- package/models/multiInputRangeFieldClasses.d.ts +0 -7
- package/models/multiInputRangeFieldClasses.js +0 -1
- package/modern/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
- package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
- package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
- package/modern/internals/hooks/useMultiInputRangeField/shared.js +0 -9
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
- package/modern/internals/models/timeRange.js +0 -1
- package/modern/models/dateRange.js +0 -1
- package/modern/models/multiInputRangeFieldClasses.js +0 -1
- package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -5
- package/node/internals/hooks/useMultiInputRangeField/shared.js +0 -16
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -121
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -121
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -5
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -121
- package/node/internals/models/timeRange.js +0 -5
- package/node/models/dateRange.js +0 -5
- package/node/models/multiInputRangeFieldClasses.js +0 -5
- /package/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
- /package/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
- /package/{MultiInputTimeRangeField/MultiInputTimeRangeField.types.js → modern/internals/models/managers.js} +0 -0
- /package/{internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js → modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
- /package/node/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
- /package/node/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import useEventCallback from '@mui/utils/useEventCallback';
|
|
5
|
+
import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
|
|
6
|
+
import { useValidation } from '@mui/x-date-pickers/validation';
|
|
7
|
+
import { useMultiInputRangeFieldTextFieldProps } from "./useMultiInputRangeFieldTextFieldProps.js";
|
|
8
|
+
import { useMultiInputRangeFieldSelectedSections } from "./useMultiInputRangeFieldSelectedSections.js";
|
|
9
|
+
/**
|
|
10
|
+
* Basic example:
|
|
11
|
+
*
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import Box from '@mui/material/Box';
|
|
14
|
+
* import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
|
|
15
|
+
* import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
|
|
16
|
+
* import { useDateRangeManager } from '@mui/x-date-pickers-pro/managers';
|
|
17
|
+
*
|
|
18
|
+
* function MultiInputField(props) {
|
|
19
|
+
* const manager = useDateRangeManager();
|
|
20
|
+
* const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
|
|
21
|
+
* const { startDate, endDate } = useMultiInputRangeField({
|
|
22
|
+
* manager,
|
|
23
|
+
* internalProps,
|
|
24
|
+
* startForwardedProps: forwardedProps,
|
|
25
|
+
* endForwardedProps: forwardedProps,
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* return (
|
|
29
|
+
* <Box {...forwardedProps}>
|
|
30
|
+
* <PickersTextField {...startDate} />
|
|
31
|
+
* <span>{' – '}</span>
|
|
32
|
+
* <PickersTextField {...endDate} />
|
|
33
|
+
* </Box>
|
|
34
|
+
* );
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @param {UseMultiInputRangeFieldParameters<TManager, TForwardedProps>} parameters The parameters of the hook.
|
|
39
|
+
* @param {TManager} parameters.manager The manager of the field.
|
|
40
|
+
* @param {PickerManagerFieldInternalProps<TManager>} parameters.internalProps The internal props of the field.
|
|
41
|
+
* @param {TForwardedProps} parameters.startForwardedProps The forwarded props of the start field.
|
|
42
|
+
* @param {TForwardedProps} parameters.endForwardedProps The forwarded props of the end field.
|
|
43
|
+
* @returns {UseMultiInputRangeFieldReturnValue<TManager, TForwardedProps>} The props to pass to the start and the end components.
|
|
44
|
+
*/
|
|
45
|
+
export function useMultiInputRangeField(parameters) {
|
|
46
|
+
const {
|
|
47
|
+
manager,
|
|
48
|
+
internalProps,
|
|
49
|
+
startForwardedProps,
|
|
50
|
+
endForwardedProps
|
|
51
|
+
} = parameters;
|
|
52
|
+
const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
|
|
53
|
+
manager,
|
|
54
|
+
internalProps
|
|
55
|
+
});
|
|
56
|
+
const {
|
|
57
|
+
value: valueProp,
|
|
58
|
+
defaultValue,
|
|
59
|
+
format,
|
|
60
|
+
formatDensity,
|
|
61
|
+
shouldRespectLeadingZeros,
|
|
62
|
+
onChange,
|
|
63
|
+
disabled,
|
|
64
|
+
readOnly,
|
|
65
|
+
selectedSections,
|
|
66
|
+
onSelectedSectionsChange,
|
|
67
|
+
timezone: timezoneProp,
|
|
68
|
+
enableAccessibleFieldDOMStructure,
|
|
69
|
+
autoFocus,
|
|
70
|
+
referenceDate,
|
|
71
|
+
unstableStartFieldRef,
|
|
72
|
+
unstableEndFieldRef
|
|
73
|
+
} = internalPropsWithDefaults;
|
|
74
|
+
const {
|
|
75
|
+
value,
|
|
76
|
+
handleValueChange,
|
|
77
|
+
timezone
|
|
78
|
+
} = useControlledValueWithTimezone({
|
|
79
|
+
name: 'useMultiInputRangeField',
|
|
80
|
+
timezone: timezoneProp,
|
|
81
|
+
value: valueProp,
|
|
82
|
+
defaultValue,
|
|
83
|
+
referenceDate,
|
|
84
|
+
onChange,
|
|
85
|
+
valueManager: manager.internal_valueManager
|
|
86
|
+
});
|
|
87
|
+
const {
|
|
88
|
+
validationError,
|
|
89
|
+
getValidationErrorForNewValue
|
|
90
|
+
} = useValidation({
|
|
91
|
+
props: internalPropsWithDefaults,
|
|
92
|
+
value,
|
|
93
|
+
timezone,
|
|
94
|
+
validator: manager.validator,
|
|
95
|
+
onError: internalPropsWithDefaults.onError
|
|
96
|
+
});
|
|
97
|
+
const buildChangeHandler = index => {
|
|
98
|
+
return (newSingleValue, rawContext) => {
|
|
99
|
+
const newRange = index === 0 ? [newSingleValue, value[1]] : [value[0], newSingleValue];
|
|
100
|
+
const context = _extends({}, rawContext, {
|
|
101
|
+
validationError: getValidationErrorForNewValue(newRange)
|
|
102
|
+
});
|
|
103
|
+
handleValueChange(newRange, context);
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
const handleStartDateChange = useEventCallback(buildChangeHandler(0));
|
|
107
|
+
const handleEndDateChange = useEventCallback(buildChangeHandler(1));
|
|
108
|
+
const selectedSectionsResponse = useMultiInputRangeFieldSelectedSections({
|
|
109
|
+
selectedSections,
|
|
110
|
+
onSelectedSectionsChange,
|
|
111
|
+
unstableStartFieldRef,
|
|
112
|
+
unstableEndFieldRef
|
|
113
|
+
});
|
|
114
|
+
const sharedProps = {
|
|
115
|
+
disabled,
|
|
116
|
+
readOnly,
|
|
117
|
+
timezone,
|
|
118
|
+
format,
|
|
119
|
+
formatDensity,
|
|
120
|
+
shouldRespectLeadingZeros,
|
|
121
|
+
enableAccessibleFieldDOMStructure
|
|
122
|
+
};
|
|
123
|
+
const startDateProps = useMultiInputRangeFieldTextFieldProps({
|
|
124
|
+
valueType: manager.valueType,
|
|
125
|
+
fieldProps: _extends({
|
|
126
|
+
error: !!validationError[0]
|
|
127
|
+
}, startForwardedProps, selectedSectionsResponse.start, sharedProps, {
|
|
128
|
+
value: valueProp === undefined ? undefined : valueProp[0],
|
|
129
|
+
defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
|
|
130
|
+
onChange: handleStartDateChange,
|
|
131
|
+
autoFocus // Do not add on end field.
|
|
132
|
+
})
|
|
133
|
+
});
|
|
134
|
+
const endDateProps = useMultiInputRangeFieldTextFieldProps({
|
|
135
|
+
valueType: manager.valueType,
|
|
136
|
+
fieldProps: _extends({
|
|
137
|
+
error: !!validationError[1]
|
|
138
|
+
}, endForwardedProps, selectedSectionsResponse.end, sharedProps, {
|
|
139
|
+
value: valueProp === undefined ? undefined : valueProp[1],
|
|
140
|
+
defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
|
|
141
|
+
onChange: handleEndDateChange
|
|
142
|
+
})
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
startDate: startDateProps,
|
|
146
|
+
endDate: endDateProps,
|
|
147
|
+
enableAccessibleFieldDOMStructure
|
|
148
|
+
};
|
|
149
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { PickerRangeValue, PickerValue, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
|
|
3
|
+
import { FieldRef, FieldSelectedSections } from '@mui/x-date-pickers/models';
|
|
4
|
+
import { MultiInputFieldRefs } from '../../models';
|
|
5
|
+
interface UseMultiInputRangeFieldSelectedSectionsParameters extends Pick<UseFieldInternalProps<PickerRangeValue, any, any>, 'selectedSections' | 'onSelectedSectionsChange'>, MultiInputFieldRefs {
|
|
6
|
+
}
|
|
7
|
+
interface UseMultiInputFieldSelectedSectionsResponseItem {
|
|
8
|
+
unstableFieldRef?: React.Ref<FieldRef<PickerValue>>;
|
|
9
|
+
selectedSections: FieldSelectedSections;
|
|
10
|
+
onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
|
|
11
|
+
}
|
|
12
|
+
interface UseMultiInputFieldSelectedSectionsResponse {
|
|
13
|
+
start: UseMultiInputFieldSelectedSectionsResponseItem;
|
|
14
|
+
end: UseMultiInputFieldSelectedSectionsResponseItem;
|
|
15
|
+
}
|
|
16
|
+
export declare const useMultiInputRangeFieldSelectedSections: (parameters: UseMultiInputRangeFieldSelectedSectionsParameters) => UseMultiInputFieldSelectedSectionsResponse;
|
|
17
|
+
export {};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import * as React from 'react';
|
|
2
4
|
import useForkRef from '@mui/utils/useForkRef';
|
|
3
5
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
|
-
export const
|
|
6
|
+
export const useMultiInputRangeFieldSelectedSections = parameters => {
|
|
5
7
|
const unstableEndFieldRef = React.useRef(null);
|
|
6
|
-
const handleUnstableEndFieldRef = useForkRef(
|
|
7
|
-
const [startSelectedSection, setStartSelectedSection] = React.useState(
|
|
8
|
+
const handleUnstableEndFieldRef = useForkRef(parameters.unstableEndFieldRef, unstableEndFieldRef);
|
|
9
|
+
const [startSelectedSection, setStartSelectedSection] = React.useState(parameters.selectedSections ?? null);
|
|
8
10
|
const [endSelectedSection, setEndSelectedSection] = React.useState(null);
|
|
9
11
|
const getActiveField = () => {
|
|
10
12
|
if (unstableEndFieldRef.current && unstableEndFieldRef.current.isFieldFocused()) {
|
|
@@ -15,25 +17,25 @@ export const useMultiInputFieldSelectedSections = params => {
|
|
|
15
17
|
const handleStartSelectedSectionChange = useEventCallback(newSelectedSections => {
|
|
16
18
|
setStartSelectedSection(newSelectedSections);
|
|
17
19
|
if (getActiveField() === 'start') {
|
|
18
|
-
|
|
20
|
+
parameters.onSelectedSectionsChange?.(newSelectedSections);
|
|
19
21
|
}
|
|
20
22
|
});
|
|
21
23
|
const handleEndSelectedSectionChange = useEventCallback(newSelectedSections => {
|
|
22
24
|
setEndSelectedSection(newSelectedSections);
|
|
23
25
|
if (getActiveField() === 'end') {
|
|
24
|
-
|
|
26
|
+
parameters.onSelectedSectionsChange?.(newSelectedSections);
|
|
25
27
|
}
|
|
26
28
|
});
|
|
27
29
|
const activeField = getActiveField();
|
|
28
30
|
return {
|
|
29
31
|
start: {
|
|
30
|
-
unstableFieldRef:
|
|
31
|
-
selectedSections: activeField === 'start' &&
|
|
32
|
+
unstableFieldRef: parameters.unstableStartFieldRef,
|
|
33
|
+
selectedSections: activeField === 'start' && parameters.selectedSections !== undefined ? parameters.selectedSections : startSelectedSection,
|
|
32
34
|
onSelectedSectionsChange: handleStartSelectedSectionChange
|
|
33
35
|
},
|
|
34
36
|
end: {
|
|
35
37
|
unstableFieldRef: handleUnstableEndFieldRef,
|
|
36
|
-
selectedSections: activeField === 'end' &&
|
|
38
|
+
selectedSections: activeField === 'end' && parameters.selectedSections !== undefined ? parameters.selectedSections : endSelectedSection,
|
|
37
39
|
onSelectedSectionsChange: handleEndSelectedSectionChange
|
|
38
40
|
}
|
|
39
41
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UseDateManagerReturnValue, UseDateTimeManagerReturnValue, UseTimeManagerReturnValue } from '@mui/x-date-pickers/managers';
|
|
2
|
+
import { PickerValueType } from '@mui/x-date-pickers/models';
|
|
3
|
+
import { PickerManagerEnableAccessibleFieldDOMStructure, PickerManagerFieldInternalProps, UseFieldResponse } from '@mui/x-date-pickers/internals';
|
|
4
|
+
import { PickerAnyRangeManager } from '../../internals/models/managers';
|
|
5
|
+
import { UseDateRangeManagerReturnValue, UseDateTimeRangeManagerReturnValue, UseTimeRangeManagerReturnValue } from '../../managers';
|
|
6
|
+
/**
|
|
7
|
+
* @ignore - internal hook.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useMultiInputRangeFieldTextFieldProps<TManager extends PickerAnyRangeManager, TForwardedProps extends {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}>(parameters: UseMultiInputRangeFieldTextFieldProps<TManager>): Omit<UseFieldResponse<PickerManagerEnableAccessibleFieldDOMStructure<TManager>, TForwardedProps>, "clearable" | "onClear">;
|
|
12
|
+
interface UseMultiInputRangeFieldTextFieldProps<TManager extends PickerAnyRangeManager> {
|
|
13
|
+
valueType: PickerValueType;
|
|
14
|
+
fieldProps: PickerManagerFieldInternalProps<GetDerivedManager<TManager>>;
|
|
15
|
+
}
|
|
16
|
+
type GetDerivedManager<TManager extends PickerAnyRangeManager> = TManager extends UseDateRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseDateManagerReturnValue<TEnableAccessibleFieldDOMStructure> : TManager extends UseTimeRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure> : TManager extends UseDateTimeRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseDateTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure> : never;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
+
const _excluded = ["clearable", "onClear"];
|
|
3
|
+
import { useDateManager, useDateTimeManager, useTimeManager } from '@mui/x-date-pickers/managers';
|
|
4
|
+
import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
|
|
5
|
+
import { useField, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
|
|
6
|
+
/**
|
|
7
|
+
* @ignore - internal hook.
|
|
8
|
+
*/
|
|
9
|
+
export function useMultiInputRangeFieldTextFieldProps(parameters) {
|
|
10
|
+
const {
|
|
11
|
+
fieldProps,
|
|
12
|
+
valueType
|
|
13
|
+
} = parameters;
|
|
14
|
+
let useManager;
|
|
15
|
+
switch (valueType) {
|
|
16
|
+
case 'date':
|
|
17
|
+
{
|
|
18
|
+
useManager = useDateManager;
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
case 'time':
|
|
22
|
+
{
|
|
23
|
+
useManager = useTimeManager;
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
case 'date-time':
|
|
27
|
+
{
|
|
28
|
+
useManager = useDateTimeManager;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
default:
|
|
32
|
+
{
|
|
33
|
+
throw new Error(`Unknown valueType: ${valueType}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const manager = useManager({
|
|
37
|
+
enableAccessibleFieldDOMStructure: fieldProps.enableAccessibleFieldDOMStructure
|
|
38
|
+
});
|
|
39
|
+
const {
|
|
40
|
+
forwardedProps,
|
|
41
|
+
internalProps
|
|
42
|
+
} = useSplitFieldProps(fieldProps, 'date');
|
|
43
|
+
const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
|
|
44
|
+
manager,
|
|
45
|
+
internalProps
|
|
46
|
+
});
|
|
47
|
+
const _ref = useField({
|
|
48
|
+
forwardedProps,
|
|
49
|
+
internalProps: internalPropsWithDefaults,
|
|
50
|
+
valueManager: manager.internal_valueManager,
|
|
51
|
+
fieldValueManager: manager.internal_fieldValueManager,
|
|
52
|
+
validator: manager.validator,
|
|
53
|
+
valueType: manager.valueType,
|
|
54
|
+
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
55
|
+
getOpenPickerButtonAriaLabel: () => ''
|
|
56
|
+
}),
|
|
57
|
+
fieldResponse = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
58
|
+
return fieldResponse;
|
|
59
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { UseRangePositionResponse } from '../internals/hooks/useRangePosition';
|
|
3
|
+
export declare const PickerRangePositionContext: React.Context<UseRangePositionResponse | null>;
|
|
4
|
+
/**
|
|
5
|
+
* Returns information about the range position of the picker that wraps the current component.
|
|
6
|
+
*/
|
|
7
|
+
export declare function usePickerRangePositionContext(): UseRangePositionResponse;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
export const PickerRangePositionContext = /*#__PURE__*/React.createContext(null);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns information about the range position of the picker that wraps the current component.
|
|
8
|
+
*/
|
|
9
|
+
export function usePickerRangePositionContext() {
|
|
10
|
+
const value = React.useContext(PickerRangePositionContext);
|
|
11
|
+
if (value == null) {
|
|
12
|
+
throw new Error(['MUI X: The `usePickerRangePositionContext` can only be called in components that are used inside a picker component'].join('\n'));
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-date-pickers-pro v8.0.0-alpha.
|
|
2
|
+
* @mui/x-date-pickers-pro v8.0.0-alpha.11
|
|
3
3
|
*
|
|
4
4
|
* @license MUI X Commercial
|
|
5
5
|
* This source code is licensed under the commercial license found in the
|
|
@@ -32,4 +32,6 @@ export * from "./MobileDateTimeRangePicker/index.js";
|
|
|
32
32
|
// View renderers
|
|
33
33
|
export * from "./dateRangeViewRenderers/index.js";
|
|
34
34
|
export * from "./models/index.js";
|
|
35
|
-
export * from "./
|
|
35
|
+
export * from "./hooks/index.js";
|
|
36
|
+
export * from "./validation/index.js";
|
|
37
|
+
export * from "./managers/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type { UseRangePickerSlots, UseRangePickerSlotProps, RangeOnlyPickerProps,
|
|
1
|
+
export type { UseRangePickerSlots, UseRangePickerSlotProps, RangeOnlyPickerProps, UseRangePickerProps, UseRangePickerParams, } from './useRangePicker';
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
import { UsePickerParams, BasePickerProps, ExportedBaseToolbarProps, UsePickerViewsProps,
|
|
1
|
+
import { UsePickerParams, BasePickerProps, ExportedBaseToolbarProps, UsePickerViewsProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, DateOrTimeViewWithMeridiem, ExportedBaseTabsProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
2
2
|
import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout';
|
|
3
3
|
import { BaseRangeNonStaticPickerProps } from '../../models';
|
|
4
|
-
import { UseRangePositionProps
|
|
5
|
-
import { RangePickerFieldSlots, RangePickerFieldSlotProps } from '../
|
|
6
|
-
|
|
7
|
-
export interface UseRangePickerSlots<TView extends DateOrTimeViewWithMeridiem> extends ExportedPickersLayoutSlots<PickerRangeValue, TView>, RangePickerFieldSlots {
|
|
4
|
+
import { UseRangePositionProps } from '../useRangePosition';
|
|
5
|
+
import { RangePickerFieldSlots, RangePickerFieldSlotProps } from '../useEnrichedRangePickerField';
|
|
6
|
+
export interface UseRangePickerSlots extends ExportedPickersLayoutSlots<PickerRangeValue>, RangePickerFieldSlots {
|
|
8
7
|
}
|
|
9
|
-
export interface UseRangePickerSlotProps<
|
|
8
|
+
export interface UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedPickersLayoutSlotProps<PickerRangeValue>, RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure> {
|
|
10
9
|
tabs?: ExportedBaseTabsProps;
|
|
11
10
|
toolbar?: ExportedBaseToolbarProps;
|
|
12
11
|
}
|
|
13
|
-
export interface RangeOnlyPickerProps extends
|
|
12
|
+
export interface RangeOnlyPickerProps extends UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, BaseRangeNonStaticPickerProps, UseRangePositionProps {
|
|
14
13
|
}
|
|
15
|
-
export interface UseRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any
|
|
14
|
+
export interface UseRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends RangeOnlyPickerProps, BasePickerProps<PickerRangeValue, TView, TError, TExternalProps> {
|
|
16
15
|
}
|
|
17
|
-
export interface
|
|
18
|
-
}
|
|
19
|
-
export interface UseRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseRangePickerProps<TView, any, TExternalProps, TAdditionalViewProps>, TAdditionalViewProps extends {}> extends Pick<UsePickerParams<PickerRangeValue, TView, RangeFieldSection, TExternalProps, TAdditionalViewProps>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor'> {
|
|
16
|
+
export interface UseRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseRangePickerProps<TView, any, TExternalProps>> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor' | 'ref'> {
|
|
20
17
|
props: TExternalProps;
|
|
21
18
|
}
|
|
@@ -1,14 +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 = ["props"]
|
|
3
|
+
const _excluded = ["props"],
|
|
4
|
+
_excluded2 = ["ownerState"];
|
|
4
5
|
import * as React from 'react';
|
|
5
6
|
import useSlotProps from '@mui/utils/useSlotProps';
|
|
6
7
|
import { useLicenseVerifier } from '@mui/x-license';
|
|
7
8
|
import { PickersLayout } from '@mui/x-date-pickers/PickersLayout';
|
|
8
|
-
import { executeInTheNextEventLoopTick, getActiveElement, usePicker,
|
|
9
|
-
import {
|
|
9
|
+
import { executeInTheNextEventLoopTick, getActiveElement, usePicker, PickerPopper, PickerProvider, PickerFieldUIContextProvider } from '@mui/x-date-pickers/internals';
|
|
10
|
+
import { useEnrichedRangePickerField } from "../useEnrichedRangePickerField.js";
|
|
10
11
|
import { getReleaseInfo } from "../../utils/releaseInfo.js";
|
|
11
12
|
import { useRangePosition } from "../useRangePosition.js";
|
|
13
|
+
import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
|
|
12
14
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
15
|
const releaseInfo = getReleaseInfo();
|
|
14
16
|
export const useDesktopRangePicker = _ref => {
|
|
@@ -20,58 +22,45 @@ export const useDesktopRangePicker = _ref => {
|
|
|
20
22
|
const {
|
|
21
23
|
slots,
|
|
22
24
|
slotProps,
|
|
23
|
-
className,
|
|
24
|
-
sx,
|
|
25
|
-
format,
|
|
26
|
-
formatDensity,
|
|
27
|
-
enableAccessibleFieldDOMStructure,
|
|
28
|
-
selectedSections,
|
|
29
|
-
onSelectedSectionsChange,
|
|
30
|
-
timezone,
|
|
31
|
-
label,
|
|
32
25
|
inputRef,
|
|
33
|
-
name,
|
|
34
26
|
readOnly,
|
|
35
|
-
disabled,
|
|
36
27
|
autoFocus,
|
|
37
28
|
disableOpenPicker,
|
|
38
|
-
localeText
|
|
39
|
-
reduceAnimations
|
|
29
|
+
localeText
|
|
40
30
|
} = props;
|
|
41
31
|
const fieldContainerRef = React.useRef(null);
|
|
42
|
-
const anchorRef = React.useRef(null);
|
|
43
32
|
const popperRef = React.useRef(null);
|
|
44
33
|
const startFieldRef = React.useRef(null);
|
|
45
34
|
const endFieldRef = React.useRef(null);
|
|
35
|
+
const singleInputFieldRef = React.useRef(null);
|
|
46
36
|
const initialView = React.useRef(props.openTo ?? null);
|
|
47
37
|
const fieldType = slots.field.fieldType ?? 'multi-input';
|
|
38
|
+
const rangePositionResponse = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
|
|
39
|
+
let fieldRef;
|
|
40
|
+
if (fieldType === 'single-input') {
|
|
41
|
+
fieldRef = singleInputFieldRef;
|
|
42
|
+
} else if (rangePositionResponse.rangePosition === 'start') {
|
|
43
|
+
fieldRef = startFieldRef;
|
|
44
|
+
} else {
|
|
45
|
+
fieldRef = endFieldRef;
|
|
46
|
+
}
|
|
48
47
|
const {
|
|
49
|
-
rangePosition,
|
|
50
|
-
onRangePositionChange
|
|
51
|
-
} = useRangePosition(props, fieldType === 'single-input' ? startFieldRef : undefined);
|
|
52
|
-
const {
|
|
53
|
-
open,
|
|
54
|
-
actions,
|
|
55
|
-
layoutProps,
|
|
56
48
|
providerProps,
|
|
57
49
|
renderCurrentView,
|
|
58
|
-
shouldRestoreFocus,
|
|
59
|
-
fieldProps: pickerFieldProps,
|
|
60
50
|
ownerState
|
|
61
51
|
} = usePicker(_extends({}, pickerParams, {
|
|
62
52
|
props,
|
|
63
53
|
variant: 'desktop',
|
|
64
54
|
autoFocusView: false,
|
|
65
|
-
fieldRef
|
|
66
|
-
localeText
|
|
67
|
-
additionalViewProps: {
|
|
68
|
-
rangePosition,
|
|
69
|
-
onRangePositionChange
|
|
70
|
-
}
|
|
55
|
+
fieldRef,
|
|
56
|
+
localeText
|
|
71
57
|
}));
|
|
58
|
+
|
|
59
|
+
// Temporary hack to hide the opening button on the range pickers until we have migrate them to the new opening logic.
|
|
60
|
+
providerProps.contextValue.triggerStatus = 'hidden';
|
|
72
61
|
React.useEffect(() => {
|
|
73
|
-
if (
|
|
74
|
-
initialView.current =
|
|
62
|
+
if (providerProps.contextValue.view) {
|
|
63
|
+
initialView.current = providerProps.contextValue.view;
|
|
75
64
|
}
|
|
76
65
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
77
66
|
}, []);
|
|
@@ -80,90 +69,69 @@ export const useDesktopRangePicker = _ref => {
|
|
|
80
69
|
if (fieldContainerRef.current?.contains(getActiveElement(document)) || popperRef.current?.contains(getActiveElement(document))) {
|
|
81
70
|
return;
|
|
82
71
|
}
|
|
83
|
-
|
|
72
|
+
|
|
73
|
+
// This direct access to `providerProps` will go away once the range fields stop having their views in a tooltip.
|
|
74
|
+
providerProps.privateContextValue.dismissViews();
|
|
84
75
|
});
|
|
85
76
|
};
|
|
86
77
|
const Field = slots.field;
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
onSelectedSectionsChange,
|
|
99
|
-
timezone,
|
|
100
|
-
autoFocus: autoFocus && !props.open
|
|
101
|
-
}, pickerFieldProps, {
|
|
102
|
-
// onChange and value
|
|
103
|
-
|
|
104
|
-
// Forwarded props
|
|
105
|
-
className,
|
|
106
|
-
sx,
|
|
107
|
-
ref: fieldContainerRef
|
|
108
|
-
}, fieldType === 'single-input' && !!inputRef && {
|
|
109
|
-
inputRef
|
|
110
|
-
}, fieldType === 'single-input' && {
|
|
111
|
-
name
|
|
78
|
+
const _useSlotProps = useSlotProps({
|
|
79
|
+
elementType: Field,
|
|
80
|
+
externalSlotProps: slotProps?.field,
|
|
81
|
+
additionalProps: {
|
|
82
|
+
// Internal props
|
|
83
|
+
readOnly,
|
|
84
|
+
autoFocus: autoFocus && !props.open,
|
|
85
|
+
// Forwarded props
|
|
86
|
+
ref: fieldContainerRef
|
|
87
|
+
},
|
|
88
|
+
ownerState
|
|
112
89
|
}),
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const enrichedFieldProps = useEnrichedRangePickerFieldProps({
|
|
90
|
+
fieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
|
|
91
|
+
const enrichedFieldResponse = useEnrichedRangePickerField(_extends({
|
|
116
92
|
variant: 'desktop',
|
|
117
93
|
fieldType,
|
|
118
|
-
|
|
119
|
-
|
|
94
|
+
// These direct access to `providerProps` will go away once the range fields handle the picker opening
|
|
95
|
+
contextValue: providerProps.contextValue,
|
|
96
|
+
fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
|
|
120
97
|
readOnly,
|
|
121
98
|
disableOpenPicker,
|
|
122
|
-
label,
|
|
123
99
|
localeText,
|
|
124
100
|
onBlur: handleBlur,
|
|
125
|
-
rangePosition,
|
|
126
|
-
onRangePositionChange,
|
|
127
101
|
pickerSlotProps: slotProps,
|
|
128
102
|
pickerSlots: slots,
|
|
129
103
|
fieldProps,
|
|
130
|
-
anchorRef,
|
|
104
|
+
anchorRef: providerProps.contextValue.triggerRef,
|
|
131
105
|
startFieldRef,
|
|
132
106
|
endFieldRef,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
});
|
|
137
|
-
const slotPropsForLayout = _extends({}, slotProps, {
|
|
138
|
-
tabs: _extends({}, slotProps?.tabs, {
|
|
139
|
-
rangePosition,
|
|
140
|
-
onRangePositionChange
|
|
141
|
-
}),
|
|
142
|
-
toolbar: _extends({}, slotProps?.toolbar, {
|
|
143
|
-
rangePosition,
|
|
144
|
-
onRangePositionChange
|
|
145
|
-
})
|
|
146
|
-
});
|
|
107
|
+
singleInputFieldRef,
|
|
108
|
+
currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
|
|
109
|
+
initialView: initialView.current ?? undefined
|
|
110
|
+
}, rangePositionResponse));
|
|
147
111
|
const Layout = slots?.layout ?? PickersLayout;
|
|
148
|
-
const renderPicker = () => /*#__PURE__*/
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
containerRef: popperRef,
|
|
153
|
-
anchorEl: anchorRef.current,
|
|
154
|
-
onBlur: handleBlur
|
|
155
|
-
}, actions, {
|
|
156
|
-
open: open,
|
|
112
|
+
const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
|
|
113
|
+
// This override will go away once the range fields handle the picker opening
|
|
114
|
+
fieldPrivateContextValue: _extends({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
|
|
115
|
+
children: /*#__PURE__*/_jsx(PickerFieldUIContextProvider, {
|
|
157
116
|
slots: slots,
|
|
158
117
|
slotProps: slotProps,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
118
|
+
inputRef: inputRef,
|
|
119
|
+
children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, {
|
|
120
|
+
value: rangePositionResponse,
|
|
121
|
+
children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldResponse.fieldProps)), /*#__PURE__*/_jsx(PickerPopper, {
|
|
122
|
+
role: "tooltip",
|
|
123
|
+
containerRef: popperRef,
|
|
124
|
+
onBlur: handleBlur,
|
|
125
|
+
slots: slots,
|
|
126
|
+
slotProps: slotProps,
|
|
127
|
+
children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
|
|
128
|
+
slots: slots,
|
|
129
|
+
slotProps: slotProps,
|
|
130
|
+
children: renderCurrentView()
|
|
131
|
+
}))
|
|
132
|
+
})]
|
|
133
|
+
})
|
|
134
|
+
})
|
|
167
135
|
}));
|
|
168
136
|
return {
|
|
169
137
|
renderPicker
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { RangeOnlyPickerProps,
|
|
3
|
-
export interface UseDesktopRangePickerSlots
|
|
1
|
+
import { PickerPopperSlots, PickerPopperSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem } from '@mui/x-date-pickers/internals';
|
|
2
|
+
import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
|
|
3
|
+
export interface UseDesktopRangePickerSlots extends UseRangePickerSlots, PickerPopperSlots {
|
|
4
4
|
}
|
|
5
|
-
export interface UseDesktopRangePickerSlotProps<
|
|
5
|
+
export interface UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, PickerPopperSlotProps {
|
|
6
6
|
}
|
|
7
7
|
export interface DesktopRangeOnlyPickerProps extends RangeOnlyPickerProps {
|
|
8
8
|
/**
|
|
@@ -10,19 +10,17 @@ export interface DesktopRangeOnlyPickerProps extends RangeOnlyPickerProps {
|
|
|
10
10
|
*/
|
|
11
11
|
autoFocus?: boolean;
|
|
12
12
|
}
|
|
13
|
-
export interface UseDesktopRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any
|
|
13
|
+
export interface UseDesktopRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends UseRangePickerProps<TView, TError, TExternalProps> {
|
|
14
14
|
/**
|
|
15
15
|
* Overridable component slots.
|
|
16
16
|
* @default {}
|
|
17
17
|
*/
|
|
18
|
-
slots: UseDesktopRangePickerSlots
|
|
18
|
+
slots: UseDesktopRangePickerSlots;
|
|
19
19
|
/**
|
|
20
20
|
* The props used for each component slot.
|
|
21
21
|
* @default {}
|
|
22
22
|
*/
|
|
23
|
-
slotProps?: UseDesktopRangePickerSlotProps<
|
|
23
|
+
slotProps?: UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>;
|
|
24
24
|
}
|
|
25
|
-
export interface
|
|
26
|
-
}
|
|
27
|
-
export interface UseDesktopRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps, DesktopRangePickerAdditionalViewProps> {
|
|
25
|
+
export interface UseDesktopRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps> {
|
|
28
26
|
}
|