@mui/x-date-pickers-pro 8.0.0-alpha.6 → 8.0.0-alpha.8
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 +242 -1
- package/DateRangeCalendar/DateRangeCalendar.js +12 -10
- package/DateRangePicker/DateRangePicker.js +1 -1
- package/DateRangePicker/DateRangePicker.types.d.ts +5 -0
- package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
- package/DateRangePicker/DateRangePickerToolbar.js +27 -19
- package/DateRangePicker/shared.d.ts +1 -1
- package/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
- package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +3 -4
- package/DateTimeRangePicker/DateTimeRangePickerTabs.js +10 -9
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -3
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +29 -31
- package/DateTimeRangePicker/shared.d.ts +2 -2
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
- package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +5 -0
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
- package/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
- package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +9 -4
- package/MultiInputDateRangeField/MultiInputDateRangeField.js +12 -116
- 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 +12 -116
- 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 +13 -117
- 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/SingleInputDateRangeField/SingleInputDateRangeField.js +20 -30
- package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -17
- package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
- package/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +20 -30
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -18
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +20 -30
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -18
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
- 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/{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 +6 -8
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +40 -67
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +3 -5
- package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +18 -9
- package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +39 -52
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +33 -56
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +3 -5
- package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
- package/internals/hooks/useRangePosition.d.ts +2 -2
- package/internals/hooks/useRangePosition.js +1 -1
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +2 -2
- package/internals/models/dateTimeRange.d.ts +1 -6
- package/internals/models/fields.d.ts +1 -2
- 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 +133 -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-range-manager.js +2 -1
- package/internals/utils/releaseInfo.js +1 -1
- 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 +1 -2
- package/models/index.d.ts +0 -2
- package/models/index.js +0 -2
- package/models/range.d.ts +0 -1
- package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/modern/DateRangeCalendar/DateRangeCalendar.js +12 -10
- package/modern/DateRangePicker/DateRangePicker.js +1 -1
- package/modern/DateRangePicker/DateRangePickerToolbar.js +27 -19
- package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
- package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +10 -9
- package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +29 -31
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
- package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
- package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +12 -116
- package/modern/MultiInputDateRangeField/index.js +2 -2
- package/modern/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
- package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +12 -116
- package/modern/MultiInputDateTimeRangeField/index.js +2 -2
- package/modern/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
- package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +13 -117
- package/modern/MultiInputTimeRangeField/index.js +2 -2
- package/modern/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
- package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +20 -30
- package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
- package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +20 -30
- package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
- package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +20 -30
- package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
- 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/modern/{internals/hooks/useMultiInputFieldSelectedSections.js → 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 +40 -67
- package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +39 -52
- package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +33 -56
- package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
- package/modern/internals/hooks/useRangePosition.js +1 -1
- package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
- package/modern/internals/models/index.js +0 -1
- package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +133 -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 +0 -2
- package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/node/DateRangeCalendar/DateRangeCalendar.js +12 -10
- package/node/DateRangePicker/DateRangePicker.js +1 -1
- package/node/DateRangePicker/DateRangePickerToolbar.js +26 -18
- package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
- package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +10 -9
- package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
- package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +29 -31
- package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
- package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
- package/node/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
- package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +11 -119
- package/node/MultiInputDateRangeField/index.js +3 -9
- package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
- package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +11 -119
- package/node/MultiInputDateTimeRangeField/index.js +3 -9
- package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
- package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +12 -120
- package/node/MultiInputTimeRangeField/index.js +3 -9
- package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
- package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +19 -29
- package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
- package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +19 -29
- package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
- package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +19 -29
- package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
- 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 +39 -66
- package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +41 -54
- package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +32 -55
- package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
- package/node/internals/hooks/useRangePosition.js +1 -1
- package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
- package/node/internals/models/index.js +0 -11
- package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +140 -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/package.json +5 -5
- package/themeAugmentation/overrides.d.ts +6 -4
- package/themeAugmentation/props.d.ts +2 -2
- package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -55
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -56
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -56
- package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +0 -20
- 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,133 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
|
+
const _excluded = ["slots", "slotProps", "className", "classes"];
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import clsx from 'clsx';
|
|
8
|
+
import Stack from '@mui/material/Stack';
|
|
9
|
+
import MuiTextField from '@mui/material/TextField';
|
|
10
|
+
import Typography from '@mui/material/Typography';
|
|
11
|
+
import { styled, useThemeProps } from '@mui/material/styles';
|
|
12
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
13
|
+
import useSlotProps from '@mui/utils/useSlotProps';
|
|
14
|
+
import { cleanFieldResponse, useFieldOwnerState } from '@mui/x-date-pickers/internals';
|
|
15
|
+
import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
|
|
16
|
+
import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
|
|
17
|
+
import { useMultiInputRangeField } from "../../../hooks/useMultiInputRangeField/index.js";
|
|
18
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
|
+
export function createMultiInputRangeField({
|
|
20
|
+
useManager,
|
|
21
|
+
name,
|
|
22
|
+
getUtilityClass
|
|
23
|
+
}) {
|
|
24
|
+
const useUtilityClasses = classes => {
|
|
25
|
+
const slots = {
|
|
26
|
+
root: ['root'],
|
|
27
|
+
separator: ['separator']
|
|
28
|
+
};
|
|
29
|
+
return composeClasses(slots, getUtilityClass, classes);
|
|
30
|
+
};
|
|
31
|
+
const MultiInputRangeFieldRoot = styled(/*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(Stack, _extends({
|
|
32
|
+
ref: ref,
|
|
33
|
+
spacing: 2,
|
|
34
|
+
direction: "row",
|
|
35
|
+
alignItems: "center"
|
|
36
|
+
}, props))), {
|
|
37
|
+
name,
|
|
38
|
+
slot: 'Root',
|
|
39
|
+
overridesResolver: (props, styles) => styles.root
|
|
40
|
+
})({});
|
|
41
|
+
const MultiInputRangeFieldSeparator = styled(Typography, {
|
|
42
|
+
name,
|
|
43
|
+
slot: 'Separator',
|
|
44
|
+
overridesResolver: (props, styles) => styles.separator
|
|
45
|
+
})({
|
|
46
|
+
lineHeight: '1.4375em' // 23px
|
|
47
|
+
});
|
|
48
|
+
const MultiInputRangeField = /*#__PURE__*/React.forwardRef(function MultiInputRangeField(props, ref) {
|
|
49
|
+
const themeProps = useThemeProps({
|
|
50
|
+
props,
|
|
51
|
+
// eslint-disable-next-line material-ui/mui-name-matches-component-name
|
|
52
|
+
name
|
|
53
|
+
});
|
|
54
|
+
const manager = useManager({
|
|
55
|
+
enableAccessibleFieldDOMStructure: props.enableAccessibleFieldDOMStructure,
|
|
56
|
+
dateSeparator: props.dateSeparator
|
|
57
|
+
});
|
|
58
|
+
const {
|
|
59
|
+
internalProps,
|
|
60
|
+
forwardedProps
|
|
61
|
+
} = useSplitFieldProps(themeProps, manager.valueType);
|
|
62
|
+
const {
|
|
63
|
+
slots,
|
|
64
|
+
slotProps,
|
|
65
|
+
className,
|
|
66
|
+
classes: classesProp
|
|
67
|
+
} = forwardedProps,
|
|
68
|
+
otherForwardedProps = _objectWithoutPropertiesLoose(forwardedProps, _excluded);
|
|
69
|
+
const classes = useUtilityClasses(classesProp);
|
|
70
|
+
const ownerState = useFieldOwnerState(internalProps);
|
|
71
|
+
const Root = slots?.root ?? MultiInputRangeFieldRoot;
|
|
72
|
+
const rootProps = useSlotProps({
|
|
73
|
+
elementType: Root,
|
|
74
|
+
externalSlotProps: slotProps?.root,
|
|
75
|
+
externalForwardedProps: otherForwardedProps,
|
|
76
|
+
additionalProps: {
|
|
77
|
+
ref
|
|
78
|
+
},
|
|
79
|
+
ownerState,
|
|
80
|
+
className: clsx(className, classes.root)
|
|
81
|
+
});
|
|
82
|
+
const startTextFieldProps = useSlotProps({
|
|
83
|
+
elementType: PickersTextField,
|
|
84
|
+
externalSlotProps: slotProps?.textField,
|
|
85
|
+
ownerState: _extends({}, ownerState, {
|
|
86
|
+
position: 'start'
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
const endTextFieldProps = useSlotProps({
|
|
90
|
+
elementType: PickersTextField,
|
|
91
|
+
externalSlotProps: slotProps?.textField,
|
|
92
|
+
ownerState: _extends({}, ownerState, {
|
|
93
|
+
position: 'end'
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
const {
|
|
97
|
+
startDate,
|
|
98
|
+
endDate,
|
|
99
|
+
enableAccessibleFieldDOMStructure
|
|
100
|
+
} = useMultiInputRangeField({
|
|
101
|
+
manager,
|
|
102
|
+
internalProps,
|
|
103
|
+
startForwardedProps: startTextFieldProps,
|
|
104
|
+
endForwardedProps: endTextFieldProps
|
|
105
|
+
});
|
|
106
|
+
const Separator = slots?.separator ?? MultiInputRangeFieldSeparator;
|
|
107
|
+
const separatorProps = useSlotProps({
|
|
108
|
+
elementType: Separator,
|
|
109
|
+
externalSlotProps: slotProps?.separator,
|
|
110
|
+
additionalProps: {
|
|
111
|
+
children: internalProps.dateSeparator ?? '–'
|
|
112
|
+
},
|
|
113
|
+
ownerState,
|
|
114
|
+
className: classes.separator
|
|
115
|
+
});
|
|
116
|
+
const {
|
|
117
|
+
textFieldProps: startDateProps
|
|
118
|
+
} = cleanFieldResponse(startDate);
|
|
119
|
+
const {
|
|
120
|
+
textFieldProps: endDateProps
|
|
121
|
+
} = cleanFieldResponse(endDate);
|
|
122
|
+
const TextField = slots?.textField ?? (enableAccessibleFieldDOMStructure === false ? MuiTextField : PickersTextField);
|
|
123
|
+
return /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {
|
|
124
|
+
children: [/*#__PURE__*/_jsx(TextField, _extends({
|
|
125
|
+
fullWidth: true
|
|
126
|
+
}, startDateProps)), /*#__PURE__*/_jsx(Separator, _extends({}, separatorProps)), /*#__PURE__*/_jsx(TextField, _extends({
|
|
127
|
+
fullWidth: true
|
|
128
|
+
}, endDateProps))]
|
|
129
|
+
}));
|
|
130
|
+
});
|
|
131
|
+
MultiInputRangeField.fieldType = 'multi-input';
|
|
132
|
+
return MultiInputRangeField;
|
|
133
|
+
}
|
|
@@ -8,7 +8,8 @@ export function calculateRangeChange({
|
|
|
8
8
|
shouldMergeDateAndTime = false,
|
|
9
9
|
referenceDate
|
|
10
10
|
}) {
|
|
11
|
-
const
|
|
11
|
+
const start = !utils.isValid(range[0]) ? null : range[0];
|
|
12
|
+
const end = !utils.isValid(range[1]) ? null : range[1];
|
|
12
13
|
if (shouldMergeDateAndTime && selectedDate) {
|
|
13
14
|
// If there is a date already selected, then we want to keep its time
|
|
14
15
|
if (start && rangePosition === 'start') {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ponyfillGlobal } from '@mui/utils';
|
|
2
2
|
export const getReleaseInfo = () => {
|
|
3
|
-
const releaseInfo = "
|
|
3
|
+
const releaseInfo = "MTczNjk4MjAwMDAwMA==";
|
|
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
|
|
@@ -12,8 +12,8 @@ export const rangeValueManager = {
|
|
|
12
12
|
referenceDate: referenceDateProp
|
|
13
13
|
} = _ref,
|
|
14
14
|
params = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
15
|
-
const shouldKeepStartDate =
|
|
16
|
-
const shouldKeepEndDate =
|
|
15
|
+
const shouldKeepStartDate = params.utils.isValid(value[0]);
|
|
16
|
+
const shouldKeepEndDate = params.utils.isValid(value[1]);
|
|
17
17
|
if (shouldKeepStartDate && shouldKeepEndDate) {
|
|
18
18
|
return value;
|
|
19
19
|
}
|
|
@@ -26,8 +26,8 @@ export const rangeValueManager = {
|
|
|
26
26
|
hasError: error => error[0] != null || error[1] != null,
|
|
27
27
|
defaultErrorState: [null, null],
|
|
28
28
|
getTimezone: (utils, value) => {
|
|
29
|
-
const timezoneStart =
|
|
30
|
-
const timezoneEnd =
|
|
29
|
+
const timezoneStart = utils.isValid(value[0]) ? utils.getTimezone(value[0]) : null;
|
|
30
|
+
const timezoneEnd = utils.isValid(value[1]) ? utils.getTimezone(value[1]) : null;
|
|
31
31
|
if (timezoneStart != null && timezoneEnd != null && timezoneStart !== timezoneEnd) {
|
|
32
32
|
throw new Error('MUI X: The timezone of the start and the end date should be the same.');
|
|
33
33
|
}
|
|
@@ -39,8 +39,8 @@ export const getRangeFieldValueManager = ({
|
|
|
39
39
|
dateSeparator = '–'
|
|
40
40
|
}) => ({
|
|
41
41
|
updateReferenceValue: (utils, value, prevReferenceValue) => {
|
|
42
|
-
const shouldKeepStartDate =
|
|
43
|
-
const shouldKeepEndDate =
|
|
42
|
+
const shouldKeepStartDate = utils.isValid(value[0]);
|
|
43
|
+
const shouldKeepEndDate = utils.isValid(value[1]);
|
|
44
44
|
if (!shouldKeepStartDate && !shouldKeepEndDate) {
|
|
45
45
|
return prevReferenceValue;
|
|
46
46
|
}
|
|
@@ -111,7 +111,7 @@ export const getRangeFieldValueManager = ({
|
|
|
111
111
|
},
|
|
112
112
|
getNewValuesFromNewActiveDate: newActiveDate => ({
|
|
113
113
|
value: updateDateInRange(newActiveDate, state.value),
|
|
114
|
-
referenceValue:
|
|
114
|
+
referenceValue: !utils.isValid(newActiveDate) ? state.referenceValue : updateDateInRange(newActiveDate, state.referenceValue)
|
|
115
115
|
})
|
|
116
116
|
};
|
|
117
117
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { getDateFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
|
|
6
|
+
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
7
|
+
import { validateDateRange } from "../validation/index.js";
|
|
8
|
+
export function useDateRangeManager(parameters = {}) {
|
|
9
|
+
const {
|
|
10
|
+
enableAccessibleFieldDOMStructure = true,
|
|
11
|
+
dateSeparator
|
|
12
|
+
} = parameters;
|
|
13
|
+
return React.useMemo(() => ({
|
|
14
|
+
valueType: 'date',
|
|
15
|
+
validator: validateDateRange,
|
|
16
|
+
internal_valueManager: rangeValueManager,
|
|
17
|
+
internal_fieldValueManager: getRangeFieldValueManager({
|
|
18
|
+
dateSeparator
|
|
19
|
+
}),
|
|
20
|
+
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
|
|
21
|
+
internal_applyDefaultsToFieldInternalProps: ({
|
|
22
|
+
internalProps,
|
|
23
|
+
utils,
|
|
24
|
+
defaultDates
|
|
25
|
+
}) => _extends({}, internalProps, getDateFieldInternalPropsDefaults({
|
|
26
|
+
defaultDates,
|
|
27
|
+
utils,
|
|
28
|
+
internalProps
|
|
29
|
+
})),
|
|
30
|
+
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
31
|
+
internal_getOpenPickerButtonAriaLabel: () => ''
|
|
32
|
+
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
33
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { getDateTimeFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
|
|
6
|
+
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
7
|
+
import { validateDateTimeRange } from "../validation/index.js";
|
|
8
|
+
export function useDateTimeRangeManager(parameters = {}) {
|
|
9
|
+
const {
|
|
10
|
+
enableAccessibleFieldDOMStructure = true,
|
|
11
|
+
dateSeparator
|
|
12
|
+
} = parameters;
|
|
13
|
+
return React.useMemo(() => ({
|
|
14
|
+
valueType: 'date-time',
|
|
15
|
+
validator: validateDateTimeRange,
|
|
16
|
+
internal_valueManager: rangeValueManager,
|
|
17
|
+
internal_fieldValueManager: getRangeFieldValueManager({
|
|
18
|
+
dateSeparator
|
|
19
|
+
}),
|
|
20
|
+
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
|
|
21
|
+
internal_applyDefaultsToFieldInternalProps: ({
|
|
22
|
+
internalProps,
|
|
23
|
+
utils,
|
|
24
|
+
defaultDates
|
|
25
|
+
}) => _extends({}, internalProps, getDateTimeFieldInternalPropsDefaults({
|
|
26
|
+
internalProps,
|
|
27
|
+
utils,
|
|
28
|
+
defaultDates
|
|
29
|
+
})),
|
|
30
|
+
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
31
|
+
internal_getOpenPickerButtonAriaLabel: () => ''
|
|
32
|
+
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
33
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { getTimeFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
|
|
6
|
+
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
7
|
+
import { validateTimeRange } from "../validation/index.js";
|
|
8
|
+
export function useTimeRangeManager(parameters = {}) {
|
|
9
|
+
const {
|
|
10
|
+
enableAccessibleFieldDOMStructure = true,
|
|
11
|
+
dateSeparator
|
|
12
|
+
} = parameters;
|
|
13
|
+
return React.useMemo(() => ({
|
|
14
|
+
valueType: 'time',
|
|
15
|
+
validator: validateTimeRange,
|
|
16
|
+
internal_valueManager: rangeValueManager,
|
|
17
|
+
internal_fieldValueManager: getRangeFieldValueManager({
|
|
18
|
+
dateSeparator
|
|
19
|
+
}),
|
|
20
|
+
internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
|
|
21
|
+
internal_applyDefaultsToFieldInternalProps: ({
|
|
22
|
+
internalProps,
|
|
23
|
+
utils
|
|
24
|
+
}) => _extends({}, internalProps, getTimeFieldInternalPropsDefaults({
|
|
25
|
+
utils,
|
|
26
|
+
internalProps
|
|
27
|
+
})),
|
|
28
|
+
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
29
|
+
internal_getOpenPickerButtonAriaLabel: () => ''
|
|
30
|
+
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
31
|
+
}
|
package/modern/models/index.js
CHANGED
|
@@ -9,4 +9,4 @@ Object.defineProperty(exports, "AdapterDateFnsJalali", {
|
|
|
9
9
|
return _AdapterDateFnsJalaliV.AdapterDateFnsJalali;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
var _AdapterDateFnsJalaliV = require("@mui/x-date-pickers/
|
|
12
|
+
var _AdapterDateFnsJalaliV = require("@mui/x-date-pickers/AdapterDateFnsJalaliV2");
|
|
@@ -32,6 +32,7 @@ var _useDragRange2 = require("./useDragRange");
|
|
|
32
32
|
var _useRangePosition = require("../internals/hooks/useRangePosition");
|
|
33
33
|
var _dimensions = require("../internals/constants/dimensions");
|
|
34
34
|
var _PickersRangeCalendarHeader = require("../PickersRangeCalendarHeader");
|
|
35
|
+
var _useNullablePickerRangePositionContext = require("../internals/hooks/useNullablePickerRangePositionContext");
|
|
35
36
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
36
37
|
const _excluded = ["value", "defaultValue", "referenceDate", "onChange", "className", "classes", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "rangePosition", "defaultRangePosition", "onRangePositionChange", "calendars", "currentMonthCalendarPosition", "slots", "slotProps", "loading", "renderLoading", "disableHighlightToday", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber", "timezone", "availableRangePositions", "views", "view", "openTo", "onViewChange"],
|
|
37
38
|
_excluded2 = ["isDragging", "rangeDragDay", "draggingDatePosition"];
|
|
@@ -142,8 +143,8 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
142
143
|
reduceAnimations,
|
|
143
144
|
onMonthChange,
|
|
144
145
|
rangePosition: rangePositionProp,
|
|
145
|
-
defaultRangePosition:
|
|
146
|
-
onRangePositionChange:
|
|
146
|
+
defaultRangePosition: defaultRangePositionProp,
|
|
147
|
+
onRangePositionChange: onRangePositionChangeProp,
|
|
147
148
|
calendars,
|
|
148
149
|
currentMonthCalendarPosition = 1,
|
|
149
150
|
slots,
|
|
@@ -168,6 +169,7 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
168
169
|
onViewChange
|
|
169
170
|
} = props,
|
|
170
171
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
172
|
+
const rangePositionContext = (0, _useNullablePickerRangePositionContext.useNullablePickerRangePositionContext)();
|
|
171
173
|
const {
|
|
172
174
|
value,
|
|
173
175
|
handleValueChange,
|
|
@@ -197,15 +199,15 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
197
199
|
const id = (0, _useId.default)();
|
|
198
200
|
const {
|
|
199
201
|
rangePosition,
|
|
200
|
-
|
|
202
|
+
setRangePosition
|
|
201
203
|
} = (0, _useRangePosition.useRangePosition)({
|
|
202
|
-
rangePosition: rangePositionProp,
|
|
203
|
-
defaultRangePosition:
|
|
204
|
-
onRangePositionChange:
|
|
204
|
+
rangePosition: rangePositionProp ?? rangePositionContext?.rangePosition,
|
|
205
|
+
defaultRangePosition: defaultRangePositionProp,
|
|
206
|
+
onRangePositionChange: onRangePositionChangeProp ?? rangePositionContext?.setRangePosition
|
|
205
207
|
});
|
|
206
208
|
const handleDatePositionChange = (0, _useEventCallback.default)(position => {
|
|
207
209
|
if (rangePosition !== position) {
|
|
208
|
-
|
|
210
|
+
setRangePosition(position);
|
|
209
211
|
}
|
|
210
212
|
});
|
|
211
213
|
const handleSelectedDayChange = (0, _useEventCallback.default)((newDate, selectionState, allowRangeFlip = false) => {
|
|
@@ -223,7 +225,7 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
223
225
|
});
|
|
224
226
|
const isNextSectionAvailable = availableRangePositions.includes(nextSelection);
|
|
225
227
|
if (isNextSectionAvailable) {
|
|
226
|
-
|
|
228
|
+
setRangePosition(nextSelection);
|
|
227
229
|
}
|
|
228
230
|
const isFullRangeSelected = rangePosition === 'end' && (0, _dateUtils.isRangeValid)(utils, newRange);
|
|
229
231
|
setValueAndGoToNextView(newRange, isFullRangeSelected || !isNextSectionAvailable ? 'finish' : 'partial', view);
|
|
@@ -235,7 +237,7 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
235
237
|
|
|
236
238
|
// Range going for the start of the start day to the end of the end day.
|
|
237
239
|
// This makes sure that `isWithinRange` works with any time in the start and end day.
|
|
238
|
-
const valueDayRange = React.useMemo(() => [
|
|
240
|
+
const valueDayRange = React.useMemo(() => [!utils.isValid(value[0]) ? value[0] : utils.startOfDay(value[0]), !utils.isValid(value[1]) ? value[1] : utils.endOfDay(value[1])], [value, utils]);
|
|
239
241
|
const _useDragRange = (0, _useDragRange2.useDragRange)({
|
|
240
242
|
disableDragEditing: shouldDisableDragEditing,
|
|
241
243
|
onDrop: handleDrop,
|
|
@@ -323,7 +325,7 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
|
|
|
323
325
|
const prevValue = React.useRef(null);
|
|
324
326
|
React.useEffect(() => {
|
|
325
327
|
const date = rangePosition === 'start' ? value[0] : value[1];
|
|
326
|
-
if (!
|
|
328
|
+
if (!utils.isValid(date)) {
|
|
327
329
|
return;
|
|
328
330
|
}
|
|
329
331
|
const prevDate = rangePosition === 'start' ? prevValue.current?.[0] : prevValue.current?.[1];
|
|
@@ -70,7 +70,7 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
70
70
|
calendars: _propTypes.default.oneOf([1, 2, 3]),
|
|
71
71
|
className: _propTypes.default.string,
|
|
72
72
|
/**
|
|
73
|
-
* If `true`, the
|
|
73
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
74
74
|
* @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
|
|
75
75
|
*/
|
|
76
76
|
closeOnSelect: _propTypes.default.bool,
|
|
@@ -18,8 +18,9 @@ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"
|
|
|
18
18
|
var _internals = require("@mui/x-date-pickers/internals");
|
|
19
19
|
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
20
20
|
var _dateRangePickerToolbarClasses = require("./dateRangePickerToolbarClasses");
|
|
21
|
+
var _hooks2 = require("../hooks");
|
|
21
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
-
const _excluded = ["
|
|
23
|
+
const _excluded = ["toolbarFormat", "className", "classes"];
|
|
23
24
|
const useUtilityClasses = classes => {
|
|
24
25
|
const slots = {
|
|
25
26
|
root: ['root'],
|
|
@@ -56,40 +57,50 @@ const DateRangePickerToolbar = exports.DateRangePickerToolbar = /*#__PURE__*/Rea
|
|
|
56
57
|
name: 'MuiDateRangePickerToolbar'
|
|
57
58
|
});
|
|
58
59
|
const {
|
|
59
|
-
|
|
60
|
-
rangePosition,
|
|
61
|
-
onRangePositionChange,
|
|
62
|
-
toolbarFormat,
|
|
60
|
+
toolbarFormat: toolbarFormatProp,
|
|
63
61
|
className,
|
|
64
62
|
classes: classesProp
|
|
65
63
|
} = props,
|
|
66
64
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
65
|
+
const {
|
|
66
|
+
value
|
|
67
|
+
} = (0, _hooks.usePickerContext)();
|
|
67
68
|
const translations = (0, _hooks.usePickerTranslations)();
|
|
68
69
|
const ownerState = (0, _internals.useToolbarOwnerState)();
|
|
70
|
+
const {
|
|
71
|
+
rangePosition,
|
|
72
|
+
setRangePosition
|
|
73
|
+
} = (0, _hooks2.usePickerRangePositionContext)();
|
|
69
74
|
const classes = useUtilityClasses(classesProp);
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
|
|
76
|
+
// This can't be a default value when spreading because it breaks the API generation.
|
|
77
|
+
const toolbarFormat = toolbarFormatProp ?? utils.formats.shortDate;
|
|
78
|
+
const formatDate = (date, fallback) => {
|
|
79
|
+
if (!utils.isValid(date)) {
|
|
80
|
+
return fallback;
|
|
81
|
+
}
|
|
82
|
+
return utils.formatByString(date, toolbarFormat);
|
|
83
|
+
};
|
|
72
84
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(DateRangePickerToolbarRoot, (0, _extends2.default)({}, other, {
|
|
73
85
|
toolbarTitle: translations.dateRangePickerToolbarTitle,
|
|
74
|
-
isLandscape: false,
|
|
75
86
|
className: (0, _clsx.default)(classes.root, className),
|
|
76
87
|
ownerState: ownerState,
|
|
77
88
|
ref: ref,
|
|
78
89
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(DateRangePickerToolbarContainer, {
|
|
79
90
|
className: classes.container,
|
|
80
91
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersToolbarButton, {
|
|
81
|
-
variant:
|
|
82
|
-
value:
|
|
92
|
+
variant: value[0] == null ? 'h6' : 'h5',
|
|
93
|
+
value: formatDate(value[0], translations.start),
|
|
83
94
|
selected: rangePosition === 'start',
|
|
84
|
-
onClick: () =>
|
|
95
|
+
onClick: () => setRangePosition('start')
|
|
85
96
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
|
|
86
97
|
variant: "h5",
|
|
87
98
|
children: ["\xA0", '–', "\xA0"]
|
|
88
99
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersToolbarButton, {
|
|
89
|
-
variant:
|
|
90
|
-
value:
|
|
100
|
+
variant: value[1] == null ? 'h6' : 'h5',
|
|
101
|
+
value: formatDate(value[1], translations.end),
|
|
91
102
|
selected: rangePosition === 'end',
|
|
92
|
-
onClick: () =>
|
|
103
|
+
onClick: () => setRangePosition('end')
|
|
93
104
|
})]
|
|
94
105
|
})
|
|
95
106
|
}));
|
|
@@ -109,8 +120,6 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
|
|
|
109
120
|
* @default `true` for Desktop, `false` for Mobile.
|
|
110
121
|
*/
|
|
111
122
|
hidden: _propTypes.default.bool,
|
|
112
|
-
onRangePositionChange: _propTypes.default.func.isRequired,
|
|
113
|
-
rangePosition: _propTypes.default.oneOf(['end', 'start']).isRequired,
|
|
114
123
|
/**
|
|
115
124
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
116
125
|
*/
|
|
@@ -124,6 +133,5 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
|
|
|
124
133
|
* Toolbar value placeholder—it is displayed when the value is empty.
|
|
125
134
|
* @default "––"
|
|
126
135
|
*/
|
|
127
|
-
toolbarPlaceholder: _propTypes.default.node
|
|
128
|
-
value: _propTypes.default.arrayOf(_propTypes.default.object).isRequired
|
|
136
|
+
toolbarPlaceholder: _propTypes.default.node
|
|
129
137
|
} : void 0;
|
|
@@ -75,8 +75,8 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
|
|
|
75
75
|
calendars: _propTypes.default.oneOf([1, 2, 3]),
|
|
76
76
|
className: _propTypes.default.string,
|
|
77
77
|
/**
|
|
78
|
-
* If `true`, the
|
|
79
|
-
* @default
|
|
78
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
79
|
+
* @default false
|
|
80
80
|
*/
|
|
81
81
|
closeOnSelect: _propTypes.default.bool,
|
|
82
82
|
/**
|
|
@@ -19,6 +19,7 @@ var _hooks = require("@mui/x-date-pickers/hooks");
|
|
|
19
19
|
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
20
20
|
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
21
21
|
var _dateTimeRangePickerTabsClasses = require("./dateTimeRangePickerTabsClasses");
|
|
22
|
+
var _hooks2 = require("../hooks");
|
|
22
23
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
23
24
|
const viewToTab = (view, rangePosition) => {
|
|
24
25
|
if ((0, _internals.isDatePickerView)(view)) {
|
|
@@ -78,8 +79,6 @@ const DateTimeRangePickerTabs = exports.DateTimeRangePickerTabs = function DateT
|
|
|
78
79
|
dateIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.DateRangeIcon, {}),
|
|
79
80
|
timeIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.TimeIcon, {}),
|
|
80
81
|
hidden = typeof window === 'undefined' || window.innerHeight < 667,
|
|
81
|
-
rangePosition,
|
|
82
|
-
onRangePositionChange,
|
|
83
82
|
className,
|
|
84
83
|
classes: classesProp,
|
|
85
84
|
sx
|
|
@@ -90,9 +89,13 @@ const DateTimeRangePickerTabs = exports.DateTimeRangePickerTabs = function DateT
|
|
|
90
89
|
} = (0, _internals.usePickerPrivateContext)();
|
|
91
90
|
const {
|
|
92
91
|
view,
|
|
93
|
-
|
|
92
|
+
setView
|
|
94
93
|
} = (0, _hooks.usePickerContext)();
|
|
95
94
|
const classes = useUtilityClasses(classesProp);
|
|
95
|
+
const {
|
|
96
|
+
rangePosition,
|
|
97
|
+
setRangePosition
|
|
98
|
+
} = (0, _hooks2.usePickerRangePositionContext)();
|
|
96
99
|
const value = React.useMemo(() => view == null ? null : viewToTab(view, rangePosition), [view, rangePosition]);
|
|
97
100
|
const isPreviousHidden = value === 'start-date';
|
|
98
101
|
const isNextHidden = value === 'end-time';
|
|
@@ -112,19 +115,19 @@ const DateTimeRangePickerTabs = exports.DateTimeRangePickerTabs = function DateT
|
|
|
112
115
|
}, [translations.endDate, translations.endTime, translations.startDate, translations.startTime, value]);
|
|
113
116
|
const handleRangePositionChange = (0, _useEventCallback.default)(newTab => {
|
|
114
117
|
if (newTab.includes('start')) {
|
|
115
|
-
|
|
118
|
+
setRangePosition('start');
|
|
116
119
|
} else {
|
|
117
|
-
|
|
120
|
+
setRangePosition('end');
|
|
118
121
|
}
|
|
119
122
|
});
|
|
120
123
|
const changeToPreviousTab = (0, _useEventCallback.default)(() => {
|
|
121
124
|
const previousTab = value == null ? tabOptions[0] : tabOptions[tabOptions.indexOf(value) - 1];
|
|
122
|
-
|
|
125
|
+
setView(tabToView(previousTab));
|
|
123
126
|
handleRangePositionChange(previousTab);
|
|
124
127
|
});
|
|
125
128
|
const changeToNextTab = (0, _useEventCallback.default)(() => {
|
|
126
129
|
const nextTab = value == null ? tabOptions[0] : tabOptions[tabOptions.indexOf(value) + 1];
|
|
127
|
-
|
|
130
|
+
setView(tabToView(nextTab));
|
|
128
131
|
handleRangePositionChange(nextTab);
|
|
129
132
|
});
|
|
130
133
|
if (hidden) {
|
|
@@ -184,8 +187,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerTabs.propTypes = {
|
|
|
184
187
|
* @default `window.innerHeight < 667` for `DesktopDateTimeRangePicker` and `MobileDateTimeRangePicker`
|
|
185
188
|
*/
|
|
186
189
|
hidden: _propTypes.default.bool,
|
|
187
|
-
onRangePositionChange: _propTypes.default.func.isRequired,
|
|
188
|
-
rangePosition: _propTypes.default.oneOf(['end', 'start']).isRequired,
|
|
189
190
|
/**
|
|
190
191
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
191
192
|
*/
|
|
@@ -10,15 +10,14 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
|
|
|
10
10
|
var _internals = require("@mui/x-date-pickers/internals");
|
|
11
11
|
var _dateUtils = require("../internals/utils/date-utils");
|
|
12
12
|
var _dateRangeManager = require("../internals/utils/date-range-manager");
|
|
13
|
-
|
|
13
|
+
var _hooks = require("../hooks");
|
|
14
|
+
const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
|
|
14
15
|
/**
|
|
15
16
|
* @ignore - internal component.
|
|
16
17
|
*/
|
|
17
|
-
function DateTimeRangePickerTimeWrapper(props
|
|
18
|
+
function DateTimeRangePickerTimeWrapper(props) {
|
|
18
19
|
const utils = (0, _internals.useUtils)();
|
|
19
20
|
const {
|
|
20
|
-
rangePosition,
|
|
21
|
-
onRangePositionChange,
|
|
22
21
|
viewRenderer,
|
|
23
22
|
value,
|
|
24
23
|
onChange,
|
|
@@ -27,6 +26,10 @@ function DateTimeRangePickerTimeWrapper(props, ref) {
|
|
|
27
26
|
views
|
|
28
27
|
} = props,
|
|
29
28
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
29
|
+
const {
|
|
30
|
+
rangePosition,
|
|
31
|
+
setRangePosition
|
|
32
|
+
} = (0, _hooks.usePickerRangePositionContext)();
|
|
30
33
|
if (!viewRenderer) {
|
|
31
34
|
return null;
|
|
32
35
|
}
|
|
@@ -49,12 +52,11 @@ function DateTimeRangePickerTimeWrapper(props, ref) {
|
|
|
49
52
|
// reset view to the first time view and swap range position after selecting the last time view (start or end position)
|
|
50
53
|
if (selectedView === timeViews[timeViews.length - 1] && onViewChange) {
|
|
51
54
|
onViewChange(views[0]);
|
|
52
|
-
|
|
55
|
+
setRangePosition(rangePosition === 'start' ? 'end' : 'start');
|
|
53
56
|
}
|
|
54
57
|
onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView);
|
|
55
58
|
};
|
|
56
59
|
return viewRenderer((0, _extends2.default)({}, other, {
|
|
57
|
-
ref,
|
|
58
60
|
views,
|
|
59
61
|
onViewChange,
|
|
60
62
|
value: currentValue,
|