@mui/x-date-pickers-pro 7.0.0-beta.2 → 7.0.0-beta.5
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/CHANGELOG.md +429 -30
- package/DateRangeCalendar/DateRangeCalendar.js +3 -1
- package/DateRangeCalendar/DateRangeCalendar.types.d.ts +3 -0
- package/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/DateRangePicker/DateRangePicker.js +9 -9
- package/DateRangePicker/DateRangePicker.types.d.ts +3 -3
- package/DateRangePicker/DateRangePickerToolbar.d.ts +5 -2
- package/DateRangePicker/DateRangePickerToolbar.js +22 -2
- package/DateTimeRangePicker/DateTimeRangePicker.d.ts +1 -1
- package/DateTimeRangePicker/DateTimeRangePicker.js +11 -12
- package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +3 -3
- package/DateTimeRangePicker/DateTimeRangePickerTabs.js +7 -1
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +3 -0
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +45 -9
- package/DateTimeRangePicker/shared.js +8 -3
- package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +1 -1
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
- package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +3 -3
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.d.ts +1 -1
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +3 -3
- package/MobileDateRangePicker/MobileDateRangePicker.d.ts +1 -1
- package/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
- package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +3 -3
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.d.ts +1 -1
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +11 -12
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +3 -3
- package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +1 -1
- package/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
- package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +11 -14
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +1 -1
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +12 -16
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +1 -1
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +12 -16
- package/SingleInputDateRangeField/SingleInputDateRangeField.d.ts +2 -2
- package/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
- package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +11 -14
- package/SingleInputDateRangeField/index.d.ts +1 -1
- package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +2 -3
- package/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -15
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.d.ts +2 -2
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +12 -10
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +12 -15
- package/SingleInputDateTimeRangeField/index.d.ts +1 -1
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +2 -3
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -20
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.d.ts +2 -2
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +12 -15
- package/SingleInputTimeRangeField/index.d.ts +1 -1
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +2 -3
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -14
- package/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
- package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +1 -1
- package/index.d.ts +0 -1
- package/index.js +2 -1
- package/internals/hooks/models/useRangePicker.d.ts +5 -5
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.d.ts +1 -1
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +5 -5
- package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +15 -15
- package/internals/hooks/useEnrichedRangePickerFieldProps.js +37 -40
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.d.ts +1 -1
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +18 -9
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +5 -5
- package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +21 -0
- package/internals/hooks/useMultiInputFieldSelectedSections.js +43 -0
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -1
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +17 -12
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +2 -3
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -31
- package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +4 -4
- package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +2 -3
- package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -25
- package/internals/hooks/useRangePosition.d.ts +2 -4
- package/internals/hooks/useRangePosition.js +3 -6
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +1 -2
- package/internals/models/dateRange.d.ts +3 -15
- package/internals/models/dateTimeRange.d.ts +4 -6
- package/internals/models/index.d.ts +0 -1
- package/internals/models/index.js +0 -1
- package/internals/models/timeRange.d.ts +3 -6
- package/internals/utils/date-fields-utils.d.ts +1 -5
- package/internals/utils/releaseInfo.js +1 -1
- package/internals/utils/valueManagers.d.ts +1 -2
- package/internals/utils/valueManagers.js +11 -6
- package/models/fields.d.ts +69 -0
- package/models/index.d.ts +1 -0
- package/models/index.js +1 -0
- package/modern/DateRangeCalendar/DateRangeCalendar.js +3 -1
- package/modern/DateRangePicker/DateRangePicker.js +9 -9
- package/modern/DateRangePicker/DateRangePickerToolbar.js +22 -2
- package/modern/DateTimeRangePicker/DateTimeRangePicker.js +11 -12
- package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +7 -1
- package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +45 -9
- package/modern/DateTimeRangePicker/shared.js +7 -2
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
- package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
- package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +11 -12
- package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
- package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
- package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
- package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
- package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -14
- package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +12 -10
- package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -19
- package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
- package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -13
- package/modern/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
- package/modern/index.js +2 -1
- package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
- package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +34 -37
- package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +18 -9
- package/modern/internals/hooks/useMultiInputFieldSelectedSections.js +40 -0
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +17 -12
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -30
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -24
- package/modern/internals/hooks/useRangePosition.js +3 -6
- package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
- package/modern/internals/models/index.js +0 -1
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/modern/internals/utils/valueManagers.js +11 -6
- package/modern/models/index.js +1 -0
- package/node/DateRangeCalendar/DateRangeCalendar.js +3 -1
- package/node/DateRangePicker/DateRangePicker.js +9 -9
- package/node/DateRangePicker/DateRangePickerToolbar.js +22 -2
- package/node/DateTimeRangePicker/DateTimeRangePicker.js +11 -12
- package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +7 -1
- package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +45 -9
- package/node/DateTimeRangePicker/shared.js +7 -2
- package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
- package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
- package/node/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
- package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +13 -14
- package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
- package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
- package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
- package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
- package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -16
- package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +15 -13
- package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -21
- package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
- package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -15
- package/node/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
- package/node/index.js +1 -1
- package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
- package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +33 -36
- package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +18 -9
- package/node/internals/hooks/useMultiInputFieldSelectedSections.js +50 -0
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +16 -11
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -31
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -25
- package/node/internals/hooks/useRangePosition.js +3 -8
- package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
- package/node/internals/models/index.js +0 -11
- package/node/internals/utils/releaseInfo.js +1 -1
- package/node/internals/utils/valueManagers.js +10 -5
- package/node/models/index.js +11 -0
- package/package.json +5 -5
- package/themeAugmentation/props.d.ts +15 -14
- package/internals/models/fields.d.ts +0 -49
- package/legacy/AdapterDateFns/index.js +0 -1
- package/legacy/AdapterDateFnsJalali/index.js +0 -1
- package/legacy/AdapterDateFnsV3/index.js +0 -1
- package/legacy/AdapterDayjs/index.js +0 -1
- package/legacy/AdapterLuxon/index.js +0 -1
- package/legacy/AdapterMoment/index.js +0 -1
- package/legacy/AdapterMomentHijri/index.js +0 -1
- package/legacy/AdapterMomentJalaali/index.js +0 -1
- package/legacy/DateRangeCalendar/DateRangeCalendar.js +0 -764
- package/legacy/DateRangeCalendar/DateRangeCalendar.types.js +0 -1
- package/legacy/DateRangeCalendar/dateRangeCalendarClasses.js +0 -5
- package/legacy/DateRangeCalendar/index.js +0 -2
- package/legacy/DateRangeCalendar/useDragRange.js +0 -258
- package/legacy/DateRangePicker/DateRangePicker.js +0 -334
- package/legacy/DateRangePicker/DateRangePicker.types.js +0 -1
- package/legacy/DateRangePicker/DateRangePickerToolbar.js +0 -127
- package/legacy/DateRangePicker/dateRangePickerToolbarClasses.js +0 -5
- package/legacy/DateRangePicker/index.js +0 -3
- package/legacy/DateRangePicker/shared.js +0 -33
- package/legacy/DateRangePickerDay/DateRangePickerDay.js +0 -366
- package/legacy/DateRangePickerDay/dateRangePickerDayClasses.js +0 -5
- package/legacy/DateRangePickerDay/index.js +0 -2
- package/legacy/DateTimeRangePicker/DateTimeRangePicker.js +0 -413
- package/legacy/DateTimeRangePicker/DateTimeRangePicker.types.js +0 -1
- package/legacy/DateTimeRangePicker/DateTimeRangePickerTabs.js +0 -191
- package/legacy/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +0 -57
- package/legacy/DateTimeRangePicker/DateTimeRangePickerToolbar.js +0 -184
- package/legacy/DateTimeRangePicker/dateTimeRangePickerTabsClasses.js +0 -6
- package/legacy/DateTimeRangePicker/dateTimeRangePickerToolbarClasses.js +0 -5
- package/legacy/DateTimeRangePicker/index.js +0 -5
- package/legacy/DateTimeRangePicker/shared.js +0 -54
- package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -343
- package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.types.js +0 -1
- package/legacy/DesktopDateRangePicker/index.js +0 -1
- package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +0 -491
- package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.js +0 -1
- package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -48
- package/legacy/DesktopDateTimeRangePicker/index.js +0 -1
- package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +0 -339
- package/legacy/MobileDateRangePicker/MobileDateRangePicker.types.js +0 -1
- package/legacy/MobileDateRangePicker/index.js +0 -1
- package/legacy/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +0 -484
- package/legacy/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.js +0 -1
- package/legacy/MobileDateTimeRangePicker/index.js +0 -1
- package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +0 -316
- package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
- package/legacy/MultiInputDateRangeField/index.js +0 -2
- package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +0 -357
- package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
- package/legacy/MultiInputDateTimeRangeField/index.js +0 -2
- package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +0 -330
- package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
- package/legacy/MultiInputTimeRangeField/index.js +0 -2
- package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +0 -307
- package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.types.js +0 -1
- package/legacy/SingleInputDateRangeField/index.js +0 -2
- package/legacy/SingleInputDateRangeField/useSingleInputDateRangeField.js +0 -30
- package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +0 -348
- package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.js +0 -1
- package/legacy/SingleInputDateTimeRangeField/index.js +0 -2
- package/legacy/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +0 -35
- package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.js +0 -321
- package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.types.js +0 -1
- package/legacy/SingleInputTimeRangeField/index.js +0 -2
- package/legacy/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +0 -29
- package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +0 -276
- package/legacy/StaticDateRangePicker/StaticDateRangePicker.types.js +0 -1
- package/legacy/StaticDateRangePicker/index.js +0 -1
- package/legacy/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -87
- package/legacy/dateRangeViewRenderers/index.js +0 -1
- package/legacy/index.js +0 -52
- package/legacy/internals/constants/dimensions.js +0 -5
- package/legacy/internals/hooks/models/index.js +0 -1
- package/legacy/internals/hooks/models/useRangePicker.js +0 -1
- package/legacy/internals/hooks/useDesktopRangePicker/index.js +0 -1
- package/legacy/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +0 -154
- package/legacy/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.js +0 -1
- package/legacy/internals/hooks/useEnrichedRangePickerFieldProps.js +0 -258
- package/legacy/internals/hooks/useMobileRangePicker/index.js +0 -1
- package/legacy/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +0 -144
- package/legacy/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.js +0 -1
- package/legacy/internals/hooks/useMultiInputRangeField/shared.js +0 -9
- package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -102
- package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -115
- package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
- package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -109
- package/legacy/internals/hooks/useRangePosition.js +0 -39
- package/legacy/internals/hooks/useStaticRangePicker/index.js +0 -1
- package/legacy/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +0 -76
- package/legacy/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.js +0 -1
- package/legacy/internals/models/dateRange.js +0 -1
- package/legacy/internals/models/dateTimeRange.js +0 -1
- package/legacy/internals/models/index.js +0 -5
- package/legacy/internals/models/rangePickerProps.js +0 -1
- package/legacy/internals/models/timeRange.js +0 -1
- package/legacy/internals/utils/date-fields-utils.js +0 -26
- package/legacy/internals/utils/date-range-manager.js +0 -65
- package/legacy/internals/utils/date-utils.js +0 -12
- package/legacy/internals/utils/releaseInfo.js +0 -13
- package/legacy/internals/utils/validation/validateDateRange.js +0 -45
- package/legacy/internals/utils/validation/validateDateTimeRange.js +0 -45
- package/legacy/internals/utils/validation/validateTimeRange.js +0 -32
- package/legacy/internals/utils/valueManagers.js +0 -135
- package/legacy/locales/index.js +0 -1
- package/legacy/models/index.js +0 -3
- package/legacy/models/multiInputRangeFieldClasses.js +0 -1
- package/legacy/models/range.js +0 -1
- package/legacy/models/validation.js +0 -1
- package/legacy/themeAugmentation/index.js +0 -4
- package/modern/internals/models/fields.js +0 -1
- /package/{internals/models → models}/fields.js +0 -0
- /package/{legacy/internals → modern}/models/fields.js +0 -0
- /package/node/{internals/models → models}/fields.js +0 -0
|
@@ -5,7 +5,7 @@ import * as React from 'react';
|
|
|
5
5
|
import { resolveComponentProps } from '@mui/base/utils';
|
|
6
6
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
7
7
|
import useForkRef from '@mui/utils/useForkRef';
|
|
8
|
-
import { onSpaceOrEnter, useLocaleText
|
|
8
|
+
import { onSpaceOrEnter, useLocaleText } from '@mui/x-date-pickers/internals';
|
|
9
9
|
const useMultiInputFieldSlotProps = ({
|
|
10
10
|
wrapperVariant,
|
|
11
11
|
open,
|
|
@@ -23,34 +23,32 @@ const useMultiInputFieldSlotProps = ({
|
|
|
23
23
|
anchorRef,
|
|
24
24
|
currentView,
|
|
25
25
|
initialView,
|
|
26
|
-
onViewChange
|
|
26
|
+
onViewChange,
|
|
27
|
+
startFieldRef,
|
|
28
|
+
endFieldRef
|
|
27
29
|
}) => {
|
|
28
30
|
const localeText = useLocaleText();
|
|
29
|
-
const startRef = React.useRef(null);
|
|
30
|
-
const endRef = React.useRef(null);
|
|
31
|
-
const startFieldRef = React.useRef(null);
|
|
32
|
-
const endFieldRef = React.useRef(null);
|
|
33
31
|
const handleStartFieldRef = useForkRef(fieldProps.unstableStartFieldRef, startFieldRef);
|
|
34
|
-
const handleEndFieldRef = useForkRef(fieldProps.
|
|
32
|
+
const handleEndFieldRef = useForkRef(fieldProps.unstableEndFieldRef, endFieldRef);
|
|
35
33
|
const previousRangePosition = React.useRef(rangePosition);
|
|
36
34
|
React.useEffect(() => {
|
|
37
35
|
if (!open) {
|
|
38
36
|
return;
|
|
39
37
|
}
|
|
40
|
-
const currentRef = rangePosition === 'start' ? startRef : endRef;
|
|
41
|
-
currentRef.current?.focus();
|
|
42
38
|
const currentFieldRef = rangePosition === 'start' ? startFieldRef : endFieldRef;
|
|
39
|
+
currentFieldRef.current?.focusField();
|
|
43
40
|
if (!currentFieldRef.current || !currentView) {
|
|
44
41
|
// could happen when the user is switching between the inputs
|
|
45
42
|
previousRangePosition.current = rangePosition;
|
|
46
43
|
return;
|
|
47
44
|
}
|
|
45
|
+
|
|
48
46
|
// bring back focus to the field
|
|
49
47
|
currentFieldRef.current.setSelectedSections(
|
|
50
48
|
// use the current view or `0` when the range position has just been swapped
|
|
51
49
|
previousRangePosition.current === rangePosition ? currentView : 0);
|
|
52
50
|
previousRangePosition.current = rangePosition;
|
|
53
|
-
}, [rangePosition, open, currentView]);
|
|
51
|
+
}, [rangePosition, open, currentView, startFieldRef, endFieldRef]);
|
|
54
52
|
const openRangeStartSelection = event => {
|
|
55
53
|
event.stopPropagation();
|
|
56
54
|
onRangePositionChange('start');
|
|
@@ -89,11 +87,10 @@ const useMultiInputFieldSlotProps = ({
|
|
|
89
87
|
const slotProps = _extends({}, fieldProps.slotProps, {
|
|
90
88
|
textField: ownerState => {
|
|
91
89
|
const resolvedComponentProps = resolveComponentProps(pickerSlotProps?.textField, ownerState);
|
|
92
|
-
let
|
|
90
|
+
let textFieldProps;
|
|
93
91
|
let InputProps;
|
|
94
92
|
if (ownerState.position === 'start') {
|
|
95
|
-
|
|
96
|
-
inputRef: startRef,
|
|
93
|
+
textFieldProps = _extends({
|
|
97
94
|
label: inLocaleText?.start ?? localeText.start,
|
|
98
95
|
onKeyDown: onSpaceOrEnter(openRangeStartSelection),
|
|
99
96
|
onFocus: handleFocusStart,
|
|
@@ -109,8 +106,7 @@ const useMultiInputFieldSlotProps = ({
|
|
|
109
106
|
});
|
|
110
107
|
}
|
|
111
108
|
} else {
|
|
112
|
-
|
|
113
|
-
inputRef: endRef,
|
|
109
|
+
textFieldProps = _extends({
|
|
114
110
|
label: inLocaleText?.end ?? localeText.end,
|
|
115
111
|
onKeyDown: onSpaceOrEnter(openRangeEndSelection),
|
|
116
112
|
onFocus: handleFocusEnd,
|
|
@@ -124,7 +120,7 @@ const useMultiInputFieldSlotProps = ({
|
|
|
124
120
|
}
|
|
125
121
|
return _extends({}, labelId != null && {
|
|
126
122
|
id: `${labelId}-${ownerState.position}`
|
|
127
|
-
},
|
|
123
|
+
}, textFieldProps, resolveComponentProps(pickerSlotProps?.textField, ownerState), {
|
|
128
124
|
InputProps
|
|
129
125
|
});
|
|
130
126
|
},
|
|
@@ -138,12 +134,13 @@ const useMultiInputFieldSlotProps = ({
|
|
|
138
134
|
});
|
|
139
135
|
|
|
140
136
|
/* TODO: remove this when a clearable behavior for multiple input range fields is implemented */
|
|
141
|
-
const
|
|
137
|
+
const _ref = fieldProps,
|
|
138
|
+
restFieldProps = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
142
139
|
const enrichedFieldProps = _extends({}, restFieldProps, {
|
|
143
|
-
slots,
|
|
144
|
-
slotProps,
|
|
145
140
|
unstableStartFieldRef: handleStartFieldRef,
|
|
146
|
-
unstableEndFieldRef: handleEndFieldRef
|
|
141
|
+
unstableEndFieldRef: handleEndFieldRef,
|
|
142
|
+
slots,
|
|
143
|
+
slotProps
|
|
147
144
|
});
|
|
148
145
|
return enrichedFieldProps;
|
|
149
146
|
};
|
|
@@ -152,49 +149,50 @@ const useSingleInputFieldSlotProps = ({
|
|
|
152
149
|
open,
|
|
153
150
|
actions,
|
|
154
151
|
readOnly,
|
|
155
|
-
inputRef: inInputRef,
|
|
156
152
|
labelId,
|
|
157
153
|
disableOpenPicker,
|
|
158
154
|
label,
|
|
159
155
|
onBlur,
|
|
160
156
|
rangePosition,
|
|
161
157
|
onRangePositionChange,
|
|
162
|
-
|
|
158
|
+
startFieldRef,
|
|
159
|
+
endFieldRef,
|
|
163
160
|
pickerSlots,
|
|
164
161
|
pickerSlotProps,
|
|
165
162
|
fieldProps,
|
|
166
163
|
anchorRef,
|
|
167
164
|
currentView
|
|
168
165
|
}) => {
|
|
169
|
-
const
|
|
170
|
-
const handleInputRef = useForkRef(inInputRef, inputRef);
|
|
171
|
-
const handleFieldRef = useForkRef(fieldProps.unstableFieldRef, singleInputFieldRef);
|
|
166
|
+
const handleFieldRef = useForkRef(fieldProps.unstableFieldRef, startFieldRef, endFieldRef);
|
|
172
167
|
React.useEffect(() => {
|
|
173
|
-
if (!open) {
|
|
168
|
+
if (!open || !startFieldRef.current) {
|
|
174
169
|
return;
|
|
175
170
|
}
|
|
176
|
-
|
|
177
|
-
if (!singleInputFieldRef.current || !currentView) {
|
|
171
|
+
if (startFieldRef.current.isFieldFocused()) {
|
|
178
172
|
return;
|
|
179
173
|
}
|
|
180
|
-
|
|
174
|
+
|
|
181
175
|
// bring back focus to the field with the current view section selected
|
|
182
|
-
|
|
183
|
-
|
|
176
|
+
if (currentView) {
|
|
177
|
+
const sections = startFieldRef.current.getSections().map(section => section.type);
|
|
178
|
+
const newSelectedSection = rangePosition === 'start' ? sections.indexOf(currentView) : sections.lastIndexOf(currentView);
|
|
179
|
+
startFieldRef.current?.focusField(newSelectedSection);
|
|
180
|
+
}
|
|
181
|
+
}, [rangePosition, open, currentView, startFieldRef]);
|
|
184
182
|
const updateRangePosition = () => {
|
|
185
|
-
if (!
|
|
183
|
+
if (!startFieldRef.current?.isFieldFocused()) {
|
|
186
184
|
return;
|
|
187
185
|
}
|
|
188
|
-
const sections =
|
|
189
|
-
const activeSectionIndex =
|
|
186
|
+
const sections = startFieldRef.current.getSections();
|
|
187
|
+
const activeSectionIndex = startFieldRef.current?.getActiveSectionIndex();
|
|
190
188
|
const domRangePosition = activeSectionIndex == null || activeSectionIndex < sections.length / 2 ? 'start' : 'end';
|
|
191
189
|
if (domRangePosition != null && domRangePosition !== rangePosition) {
|
|
192
190
|
onRangePositionChange(domRangePosition);
|
|
193
191
|
}
|
|
194
192
|
};
|
|
195
|
-
const handleSelectedSectionsChange = useEventCallback(
|
|
193
|
+
const handleSelectedSectionsChange = useEventCallback(selectedSection => {
|
|
196
194
|
setTimeout(updateRangePosition);
|
|
197
|
-
fieldProps.onSelectedSectionsChange?.(
|
|
195
|
+
fieldProps.onSelectedSectionsChange?.(selectedSection);
|
|
198
196
|
});
|
|
199
197
|
const openPicker = event => {
|
|
200
198
|
event.stopPropagation();
|
|
@@ -217,7 +215,6 @@ const useSingleInputFieldSlotProps = ({
|
|
|
217
215
|
slotProps,
|
|
218
216
|
label,
|
|
219
217
|
unstableFieldRef: handleFieldRef,
|
|
220
|
-
inputRef: handleInputRef,
|
|
221
218
|
onKeyDown: onSpaceOrEnter(openPicker, fieldProps.onKeyDown),
|
|
222
219
|
onSelectedSectionsChange: handleSelectedSectionsChange,
|
|
223
220
|
onBlur,
|
|
@@ -27,6 +27,9 @@ export const useMobileRangePicker = _ref => {
|
|
|
27
27
|
sx,
|
|
28
28
|
format,
|
|
29
29
|
formatDensity,
|
|
30
|
+
enableAccessibleFieldDOMStructure,
|
|
31
|
+
selectedSections,
|
|
32
|
+
onSelectedSectionsChange,
|
|
30
33
|
timezone,
|
|
31
34
|
label,
|
|
32
35
|
inputRef,
|
|
@@ -36,11 +39,13 @@ export const useMobileRangePicker = _ref => {
|
|
|
36
39
|
disableOpenPicker,
|
|
37
40
|
localeText
|
|
38
41
|
} = props;
|
|
42
|
+
const startFieldRef = React.useRef(null);
|
|
43
|
+
const endFieldRef = React.useRef(null);
|
|
44
|
+
const fieldType = slots.field.fieldType ?? 'multi-input';
|
|
39
45
|
const {
|
|
40
46
|
rangePosition,
|
|
41
|
-
onRangePositionChange
|
|
42
|
-
|
|
43
|
-
} = useRangePosition(props);
|
|
47
|
+
onRangePositionChange
|
|
48
|
+
} = useRangePosition(props, fieldType === 'single-input' ? startFieldRef : undefined);
|
|
44
49
|
const labelId = useId();
|
|
45
50
|
const contextLocaleText = useLocaleText();
|
|
46
51
|
const {
|
|
@@ -53,13 +58,13 @@ export const useMobileRangePicker = _ref => {
|
|
|
53
58
|
props,
|
|
54
59
|
wrapperVariant: 'mobile',
|
|
55
60
|
autoFocusView: true,
|
|
61
|
+
fieldRef: rangePosition === 'start' ? startFieldRef : endFieldRef,
|
|
56
62
|
additionalViewProps: {
|
|
57
63
|
rangePosition,
|
|
58
64
|
onRangePositionChange
|
|
59
65
|
}
|
|
60
66
|
}));
|
|
61
67
|
const Field = slots.field;
|
|
62
|
-
const fieldType = Field.fieldType ?? 'multi-input';
|
|
63
68
|
const fieldProps = useSlotProps({
|
|
64
69
|
elementType: Field,
|
|
65
70
|
externalSlotProps: innerSlotProps?.field,
|
|
@@ -70,11 +75,14 @@ export const useMobileRangePicker = _ref => {
|
|
|
70
75
|
sx,
|
|
71
76
|
format,
|
|
72
77
|
formatDensity,
|
|
78
|
+
enableAccessibleFieldDOMStructure,
|
|
79
|
+
selectedSections,
|
|
80
|
+
onSelectedSectionsChange,
|
|
73
81
|
timezone
|
|
74
|
-
},
|
|
82
|
+
}, inputRef ? {
|
|
75
83
|
inputRef,
|
|
76
84
|
name
|
|
77
|
-
}),
|
|
85
|
+
} : {}),
|
|
78
86
|
ownerState: props
|
|
79
87
|
});
|
|
80
88
|
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
@@ -90,10 +98,11 @@ export const useMobileRangePicker = _ref => {
|
|
|
90
98
|
localeText,
|
|
91
99
|
rangePosition,
|
|
92
100
|
onRangePositionChange,
|
|
93
|
-
singleInputFieldRef,
|
|
94
101
|
pickerSlots: slots,
|
|
95
102
|
pickerSlotProps: innerSlotProps,
|
|
96
|
-
fieldProps
|
|
103
|
+
fieldProps,
|
|
104
|
+
startFieldRef,
|
|
105
|
+
endFieldRef
|
|
97
106
|
});
|
|
98
107
|
const slotPropsForLayout = _extends({}, innerSlotProps, {
|
|
99
108
|
tabs: _extends({}, innerSlotProps?.tabs, {
|
|
@@ -108,7 +117,7 @@ export const useMobileRangePicker = _ref => {
|
|
|
108
117
|
});
|
|
109
118
|
const Layout = slots?.layout ?? PickersLayout;
|
|
110
119
|
const finalLocaleText = _extends({}, contextLocaleText, localeText);
|
|
111
|
-
let labelledById = labelId;
|
|
120
|
+
let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId;
|
|
112
121
|
if (isToolbarHidden) {
|
|
113
122
|
const labels = [];
|
|
114
123
|
if (fieldType === 'multi-input') {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import useForkRef from '@mui/utils/useForkRef';
|
|
3
|
+
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
|
+
export const useMultiInputFieldSelectedSections = params => {
|
|
5
|
+
const unstableEndFieldRef = React.useRef(null);
|
|
6
|
+
const handleUnstableEndFieldRef = useForkRef(params.unstableEndFieldRef, unstableEndFieldRef);
|
|
7
|
+
const [startSelectedSection, setStartSelectedSection] = React.useState(params.selectedSections ?? null);
|
|
8
|
+
const [endSelectedSection, setEndSelectedSection] = React.useState(null);
|
|
9
|
+
const getActiveField = () => {
|
|
10
|
+
if (unstableEndFieldRef.current && unstableEndFieldRef.current.isFieldFocused()) {
|
|
11
|
+
return 'end';
|
|
12
|
+
}
|
|
13
|
+
return 'start';
|
|
14
|
+
};
|
|
15
|
+
const handleStartSelectedSectionChange = useEventCallback(newSelectedSections => {
|
|
16
|
+
setStartSelectedSection(newSelectedSections);
|
|
17
|
+
if (getActiveField() === 'start') {
|
|
18
|
+
params.onSelectedSectionsChange?.(newSelectedSections);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const handleEndSelectedSectionChange = useEventCallback(newSelectedSections => {
|
|
22
|
+
setEndSelectedSection(newSelectedSections);
|
|
23
|
+
if (getActiveField() === 'end') {
|
|
24
|
+
params.onSelectedSectionsChange?.(newSelectedSections);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const activeField = getActiveField();
|
|
28
|
+
return {
|
|
29
|
+
start: {
|
|
30
|
+
unstableFieldRef: params.unstableStartFieldRef,
|
|
31
|
+
selectedSections: activeField === 'start' && params.selectedSections !== undefined ? params.selectedSections : startSelectedSection,
|
|
32
|
+
onSelectedSectionsChange: handleStartSelectedSectionChange
|
|
33
|
+
},
|
|
34
|
+
end: {
|
|
35
|
+
unstableFieldRef: handleUnstableEndFieldRef,
|
|
36
|
+
selectedSections: activeField === 'end' && params.selectedSections !== undefined ? params.selectedSections : endSelectedSection,
|
|
37
|
+
onSelectedSectionsChange: handleEndSelectedSectionChange
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
3
3
|
import { unstable_useDateField as useDateField } from '@mui/x-date-pickers/DateField';
|
|
4
|
-
import { useLocalizationContext, useValidation, useControlledValueWithTimezone } from '@mui/x-date-pickers/internals';
|
|
5
|
-
import { useDefaultizedDateRangeFieldProps } from '../../../SingleInputDateRangeField/useSingleInputDateRangeField';
|
|
4
|
+
import { useLocalizationContext, useValidation, useControlledValueWithTimezone, useDefaultizedDateField } from '@mui/x-date-pickers/internals';
|
|
6
5
|
import { validateDateRange } from '../../utils/validation/validateDateRange';
|
|
7
6
|
import { rangeValueManager } from '../../utils/valueManagers';
|
|
8
7
|
import { excludeProps } from './shared';
|
|
8
|
+
import { useMultiInputFieldSelectedSections } from '../useMultiInputFieldSelectedSections';
|
|
9
9
|
export const useMultiInputDateRangeField = ({
|
|
10
10
|
sharedProps: inSharedProps,
|
|
11
11
|
startTextFieldProps,
|
|
@@ -13,7 +13,7 @@ export const useMultiInputDateRangeField = ({
|
|
|
13
13
|
endTextFieldProps,
|
|
14
14
|
unstableEndFieldRef
|
|
15
15
|
}) => {
|
|
16
|
-
const sharedProps =
|
|
16
|
+
const sharedProps = useDefaultizedDateField(inSharedProps);
|
|
17
17
|
const adapter = useLocalizationContext();
|
|
18
18
|
const {
|
|
19
19
|
value: valueProp,
|
|
@@ -26,7 +26,9 @@ export const useMultiInputDateRangeField = ({
|
|
|
26
26
|
readOnly,
|
|
27
27
|
selectedSections,
|
|
28
28
|
onSelectedSectionsChange,
|
|
29
|
-
timezone: timezoneProp
|
|
29
|
+
timezone: timezoneProp,
|
|
30
|
+
enableAccessibleFieldDOMStructure,
|
|
31
|
+
autoFocus
|
|
30
32
|
} = sharedProps;
|
|
31
33
|
const {
|
|
32
34
|
value,
|
|
@@ -63,37 +65,40 @@ export const useMultiInputDateRangeField = ({
|
|
|
63
65
|
value,
|
|
64
66
|
timezone
|
|
65
67
|
}), validateDateRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
|
|
68
|
+
const selectedSectionsResponse = useMultiInputFieldSelectedSections({
|
|
69
|
+
selectedSections,
|
|
70
|
+
onSelectedSectionsChange,
|
|
71
|
+
unstableStartFieldRef,
|
|
72
|
+
unstableEndFieldRef
|
|
73
|
+
});
|
|
66
74
|
const startFieldProps = _extends({
|
|
67
75
|
error: !!validationError[0]
|
|
68
|
-
}, startTextFieldProps, {
|
|
76
|
+
}, startTextFieldProps, selectedSectionsResponse.start, {
|
|
69
77
|
disabled,
|
|
70
78
|
readOnly,
|
|
71
79
|
format,
|
|
72
80
|
formatDensity,
|
|
73
81
|
shouldRespectLeadingZeros,
|
|
74
82
|
timezone,
|
|
75
|
-
unstableFieldRef: unstableStartFieldRef,
|
|
76
83
|
value: valueProp === undefined ? undefined : valueProp[0],
|
|
77
84
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
|
|
78
85
|
onChange: handleStartDateChange,
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
enableAccessibleFieldDOMStructure,
|
|
87
|
+
autoFocus // Do not add on end field.
|
|
81
88
|
});
|
|
82
89
|
const endFieldProps = _extends({
|
|
83
90
|
error: !!validationError[1]
|
|
84
|
-
}, endTextFieldProps, {
|
|
91
|
+
}, endTextFieldProps, selectedSectionsResponse.end, {
|
|
85
92
|
format,
|
|
86
93
|
formatDensity,
|
|
87
94
|
shouldRespectLeadingZeros,
|
|
88
95
|
disabled,
|
|
89
96
|
readOnly,
|
|
90
97
|
timezone,
|
|
91
|
-
unstableFieldRef: unstableEndFieldRef,
|
|
92
98
|
value: valueProp === undefined ? undefined : valueProp[1],
|
|
93
99
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
|
|
94
100
|
onChange: handleEndDateChange,
|
|
95
|
-
|
|
96
|
-
onSelectedSectionsChange
|
|
101
|
+
enableAccessibleFieldDOMStructure
|
|
97
102
|
});
|
|
98
103
|
const startDateResponse = useDateField(startFieldProps);
|
|
99
104
|
const endDateResponse = useDateField(endFieldProps);
|
|
@@ -1,26 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
3
3
|
import { unstable_useDateTimeField as useDateTimeField } from '@mui/x-date-pickers/DateTimeField';
|
|
4
|
-
import {
|
|
4
|
+
import { useLocalizationContext, useValidation, useControlledValueWithTimezone, useDefaultizedDateTimeField } from '@mui/x-date-pickers/internals';
|
|
5
5
|
import { validateDateTimeRange } from '../../utils/validation/validateDateTimeRange';
|
|
6
6
|
import { rangeValueManager } from '../../utils/valueManagers';
|
|
7
7
|
import { excludeProps } from './shared';
|
|
8
|
-
|
|
9
|
-
const utils = useUtils();
|
|
10
|
-
const defaultDates = useDefaultDates();
|
|
11
|
-
const ampm = props.ampm ?? utils.is12HourCycleInCurrentLocale();
|
|
12
|
-
const defaultFormat = ampm ? utils.formats.keyboardDateTime12h : utils.formats.keyboardDateTime24h;
|
|
13
|
-
return _extends({}, props, {
|
|
14
|
-
disablePast: props.disablePast ?? false,
|
|
15
|
-
disableFuture: props.disableFuture ?? false,
|
|
16
|
-
format: props.format ?? defaultFormat,
|
|
17
|
-
minDate: applyDefaultDate(utils, props.minDateTime ?? props.minDate, defaultDates.minDate),
|
|
18
|
-
maxDate: applyDefaultDate(utils, props.maxDateTime ?? props.maxDate, defaultDates.maxDate),
|
|
19
|
-
minTime: props.minDateTime ?? props.minTime,
|
|
20
|
-
maxTime: props.maxDateTime ?? props.maxTime,
|
|
21
|
-
disableIgnoringDatePartForTimeValidation: Boolean(props.minDateTime || props.maxDateTime)
|
|
22
|
-
});
|
|
23
|
-
};
|
|
8
|
+
import { useMultiInputFieldSelectedSections } from '../useMultiInputFieldSelectedSections';
|
|
24
9
|
export const useMultiInputDateTimeRangeField = ({
|
|
25
10
|
sharedProps: inSharedProps,
|
|
26
11
|
startTextFieldProps,
|
|
@@ -28,19 +13,22 @@ export const useMultiInputDateTimeRangeField = ({
|
|
|
28
13
|
endTextFieldProps,
|
|
29
14
|
unstableEndFieldRef
|
|
30
15
|
}) => {
|
|
31
|
-
const sharedProps =
|
|
16
|
+
const sharedProps = useDefaultizedDateTimeField(inSharedProps);
|
|
32
17
|
const adapter = useLocalizationContext();
|
|
33
18
|
const {
|
|
34
19
|
value: valueProp,
|
|
35
20
|
defaultValue,
|
|
36
21
|
format,
|
|
22
|
+
formatDensity,
|
|
37
23
|
shouldRespectLeadingZeros,
|
|
38
|
-
timezone: timezoneProp,
|
|
39
24
|
onChange,
|
|
40
25
|
disabled,
|
|
41
26
|
readOnly,
|
|
42
27
|
selectedSections,
|
|
43
|
-
onSelectedSectionsChange
|
|
28
|
+
onSelectedSectionsChange,
|
|
29
|
+
timezone: timezoneProp,
|
|
30
|
+
enableAccessibleFieldDOMStructure,
|
|
31
|
+
autoFocus
|
|
44
32
|
} = sharedProps;
|
|
45
33
|
const {
|
|
46
34
|
value,
|
|
@@ -77,35 +65,40 @@ export const useMultiInputDateTimeRangeField = ({
|
|
|
77
65
|
value,
|
|
78
66
|
timezone
|
|
79
67
|
}), validateDateTimeRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
|
|
68
|
+
const selectedSectionsResponse = useMultiInputFieldSelectedSections({
|
|
69
|
+
selectedSections,
|
|
70
|
+
onSelectedSectionsChange,
|
|
71
|
+
unstableStartFieldRef,
|
|
72
|
+
unstableEndFieldRef
|
|
73
|
+
});
|
|
80
74
|
const startFieldProps = _extends({
|
|
81
75
|
error: !!validationError[0]
|
|
82
|
-
}, startTextFieldProps, {
|
|
83
|
-
format,
|
|
84
|
-
shouldRespectLeadingZeros,
|
|
76
|
+
}, startTextFieldProps, selectedSectionsResponse.start, {
|
|
85
77
|
disabled,
|
|
86
78
|
readOnly,
|
|
79
|
+
format,
|
|
80
|
+
formatDensity,
|
|
81
|
+
shouldRespectLeadingZeros,
|
|
87
82
|
timezone,
|
|
88
|
-
unstableFieldRef: unstableStartFieldRef,
|
|
89
83
|
value: valueProp === undefined ? undefined : valueProp[0],
|
|
90
84
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
|
|
91
85
|
onChange: handleStartDateChange,
|
|
92
|
-
|
|
93
|
-
|
|
86
|
+
enableAccessibleFieldDOMStructure,
|
|
87
|
+
autoFocus // Do not add on end field.
|
|
94
88
|
});
|
|
95
89
|
const endFieldProps = _extends({
|
|
96
90
|
error: !!validationError[1]
|
|
97
|
-
}, endTextFieldProps, {
|
|
91
|
+
}, endTextFieldProps, selectedSectionsResponse.end, {
|
|
98
92
|
format,
|
|
93
|
+
formatDensity,
|
|
99
94
|
shouldRespectLeadingZeros,
|
|
100
95
|
disabled,
|
|
101
96
|
readOnly,
|
|
102
97
|
timezone,
|
|
103
|
-
unstableFieldRef: unstableEndFieldRef,
|
|
104
98
|
value: valueProp === undefined ? undefined : valueProp[1],
|
|
105
99
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
|
|
106
100
|
onChange: handleEndDateChange,
|
|
107
|
-
|
|
108
|
-
onSelectedSectionsChange
|
|
101
|
+
enableAccessibleFieldDOMStructure
|
|
109
102
|
});
|
|
110
103
|
const startDateResponse = useDateTimeField(startFieldProps);
|
|
111
104
|
const endDateResponse = useDateTimeField(endFieldProps);
|
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
3
3
|
import { unstable_useTimeField as useTimeField } from '@mui/x-date-pickers/TimeField';
|
|
4
|
-
import { useLocalizationContext,
|
|
4
|
+
import { useLocalizationContext, useValidation, useControlledValueWithTimezone, useDefaultizedTimeField } from '@mui/x-date-pickers/internals';
|
|
5
5
|
import { validateTimeRange } from '../../utils/validation/validateTimeRange';
|
|
6
6
|
import { rangeValueManager } from '../../utils/valueManagers';
|
|
7
7
|
import { excludeProps } from './shared';
|
|
8
|
-
|
|
9
|
-
const utils = useUtils();
|
|
10
|
-
const ampm = props.ampm ?? utils.is12HourCycleInCurrentLocale();
|
|
11
|
-
const defaultFormat = ampm ? utils.formats.fullTime12h : utils.formats.fullTime24h;
|
|
12
|
-
return _extends({}, props, {
|
|
13
|
-
disablePast: props.disablePast ?? false,
|
|
14
|
-
disableFuture: props.disableFuture ?? false,
|
|
15
|
-
format: props.format ?? defaultFormat
|
|
16
|
-
});
|
|
17
|
-
};
|
|
8
|
+
import { useMultiInputFieldSelectedSections } from '../useMultiInputFieldSelectedSections';
|
|
18
9
|
export const useMultiInputTimeRangeField = ({
|
|
19
10
|
sharedProps: inSharedProps,
|
|
20
11
|
startTextFieldProps,
|
|
@@ -22,19 +13,22 @@ export const useMultiInputTimeRangeField = ({
|
|
|
22
13
|
endTextFieldProps,
|
|
23
14
|
unstableEndFieldRef
|
|
24
15
|
}) => {
|
|
25
|
-
const sharedProps =
|
|
16
|
+
const sharedProps = useDefaultizedTimeField(inSharedProps);
|
|
26
17
|
const adapter = useLocalizationContext();
|
|
27
18
|
const {
|
|
28
19
|
value: valueProp,
|
|
29
20
|
defaultValue,
|
|
30
21
|
format,
|
|
22
|
+
formatDensity,
|
|
31
23
|
shouldRespectLeadingZeros,
|
|
32
|
-
timezone: timezoneProp,
|
|
33
24
|
onChange,
|
|
34
25
|
disabled,
|
|
35
26
|
readOnly,
|
|
36
27
|
selectedSections,
|
|
37
|
-
onSelectedSectionsChange
|
|
28
|
+
onSelectedSectionsChange,
|
|
29
|
+
timezone: timezoneProp,
|
|
30
|
+
enableAccessibleFieldDOMStructure,
|
|
31
|
+
autoFocus
|
|
38
32
|
} = sharedProps;
|
|
39
33
|
const {
|
|
40
34
|
value,
|
|
@@ -71,35 +65,40 @@ export const useMultiInputTimeRangeField = ({
|
|
|
71
65
|
value,
|
|
72
66
|
timezone
|
|
73
67
|
}), validateTimeRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
|
|
68
|
+
const selectedSectionsResponse = useMultiInputFieldSelectedSections({
|
|
69
|
+
selectedSections,
|
|
70
|
+
onSelectedSectionsChange,
|
|
71
|
+
unstableStartFieldRef,
|
|
72
|
+
unstableEndFieldRef
|
|
73
|
+
});
|
|
74
74
|
const startFieldProps = _extends({
|
|
75
75
|
error: !!validationError[0]
|
|
76
|
-
}, startTextFieldProps, {
|
|
77
|
-
format,
|
|
78
|
-
shouldRespectLeadingZeros,
|
|
76
|
+
}, startTextFieldProps, selectedSectionsResponse.start, {
|
|
79
77
|
disabled,
|
|
80
78
|
readOnly,
|
|
79
|
+
format,
|
|
80
|
+
formatDensity,
|
|
81
|
+
shouldRespectLeadingZeros,
|
|
81
82
|
timezone,
|
|
82
|
-
unstableFieldRef: unstableStartFieldRef,
|
|
83
83
|
value: valueProp === undefined ? undefined : valueProp[0],
|
|
84
84
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
|
|
85
85
|
onChange: handleStartDateChange,
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
enableAccessibleFieldDOMStructure,
|
|
87
|
+
autoFocus // Do not add on end field.
|
|
88
88
|
});
|
|
89
89
|
const endFieldProps = _extends({
|
|
90
90
|
error: !!validationError[1]
|
|
91
|
-
}, endTextFieldProps, {
|
|
91
|
+
}, endTextFieldProps, selectedSectionsResponse.end, {
|
|
92
92
|
format,
|
|
93
|
+
formatDensity,
|
|
93
94
|
shouldRespectLeadingZeros,
|
|
94
95
|
disabled,
|
|
95
96
|
readOnly,
|
|
96
97
|
timezone,
|
|
97
|
-
unstableFieldRef: unstableEndFieldRef,
|
|
98
98
|
value: valueProp === undefined ? undefined : valueProp[1],
|
|
99
99
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
|
|
100
100
|
onChange: handleEndDateChange,
|
|
101
|
-
|
|
102
|
-
onSelectedSectionsChange
|
|
101
|
+
enableAccessibleFieldDOMStructure
|
|
103
102
|
});
|
|
104
103
|
const startDateResponse = useTimeField(startFieldProps);
|
|
105
104
|
const endDateResponse = useTimeField(endFieldProps);
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import useControlled from '@mui/utils/useControlled';
|
|
3
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
|
-
export const useRangePosition = props => {
|
|
5
|
-
const singleInputFieldRef = React.useRef();
|
|
3
|
+
export const useRangePosition = (props, singleInputFieldRef) => {
|
|
6
4
|
const [rangePosition, setRangePosition] = useControlled({
|
|
7
5
|
name: 'useRangePosition',
|
|
8
6
|
state: 'rangePosition',
|
|
@@ -13,7 +11,7 @@ export const useRangePosition = props => {
|
|
|
13
11
|
// When using a single input field,
|
|
14
12
|
// we want to select the 1st section of the edited date when updating the range position.
|
|
15
13
|
const syncRangePositionWithSingleInputField = newRangePosition => {
|
|
16
|
-
if (singleInputFieldRef
|
|
14
|
+
if (singleInputFieldRef?.current == null) {
|
|
17
15
|
return;
|
|
18
16
|
}
|
|
19
17
|
const sections = singleInputFieldRef.current.getSections();
|
|
@@ -27,7 +25,6 @@ export const useRangePosition = props => {
|
|
|
27
25
|
});
|
|
28
26
|
return {
|
|
29
27
|
rangePosition,
|
|
30
|
-
onRangePositionChange: handleRangePositionChange
|
|
31
|
-
singleInputFieldRef
|
|
28
|
+
onRangePositionChange: handleRangePositionChange
|
|
32
29
|
};
|
|
33
30
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ponyfillGlobal } from '@mui/utils';
|
|
2
2
|
export const getReleaseInfo = () => {
|
|
3
|
-
const releaseInfo = "
|
|
3
|
+
const releaseInfo = "MTcwOTM1NTYwMDAwMA==";
|
|
4
4
|
if (process.env.NODE_ENV !== 'production') {
|
|
5
5
|
// A simple hack to set the value in the test environment (has no build step).
|
|
6
6
|
// eslint-disable-next-line no-useless-concat
|