@mui/x-date-pickers-pro 8.5.2 → 8.6.0
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 +203 -11
- package/DateRangeCalendar/DateRangeCalendar.js +37 -36
- package/DateRangeCalendar/useDragRange.d.ts +2 -2
- package/DateRangeCalendar/useDragRange.js +17 -17
- package/DateRangePicker/DateRangePickerToolbar.js +4 -4
- package/DateRangePickerDay/DateRangePickerDay.js +5 -4
- package/DateRangePickerDay2/DateRangePickerDay2.js +5 -4
- package/DateTimeRangePicker/DateTimeRangePicker.js +1 -1
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +6 -6
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +3 -3
- package/DateTimeRangePicker/shared.js +3 -2
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +4 -4
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +9 -8
- package/DesktopTimeRangePicker/DesktopTimeRangePicker.js +4 -3
- package/MobileDateRangePicker/MobileDateRangePicker.js +5 -5
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +6 -5
- package/MobileTimeRangePicker/MobileTimeRangePicker.js +6 -5
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +1 -1
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +1 -1
- package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +4 -4
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +1 -1
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +1 -1
- package/TimeRangePicker/TimeRangePicker.js +1 -1
- package/TimeRangePicker/TimeRangePickerTimeWrapper.js +6 -6
- package/TimeRangePicker/TimeRangePickerToolbar.js +7 -7
- package/TimeRangePicker/shared.js +3 -2
- package/esm/DateRangeCalendar/DateRangeCalendar.js +38 -37
- package/esm/DateRangeCalendar/useDragRange.d.ts +2 -2
- package/esm/DateRangeCalendar/useDragRange.js +17 -17
- package/esm/DateRangePicker/DateRangePickerToolbar.js +6 -6
- package/esm/DateRangePickerDay/DateRangePickerDay.js +6 -5
- package/esm/DateRangePickerDay2/DateRangePickerDay2.js +6 -5
- package/esm/DateTimeRangePicker/DateTimeRangePicker.js +1 -1
- package/esm/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +4 -4
- package/esm/DateTimeRangePicker/DateTimeRangePickerToolbar.js +5 -5
- package/esm/DateTimeRangePicker/shared.js +4 -3
- package/esm/DesktopDateRangePicker/DesktopDateRangePicker.js +4 -4
- package/esm/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +7 -6
- package/esm/DesktopTimeRangePicker/DesktopTimeRangePicker.js +5 -4
- package/esm/MobileDateRangePicker/MobileDateRangePicker.js +5 -5
- package/esm/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +5 -4
- package/esm/MobileTimeRangePicker/MobileTimeRangePicker.js +6 -5
- package/esm/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +1 -1
- package/esm/MultiInputTimeRangeField/MultiInputTimeRangeField.js +1 -1
- package/esm/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +6 -6
- package/esm/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +1 -1
- package/esm/SingleInputTimeRangeField/SingleInputTimeRangeField.js +1 -1
- package/esm/TimeRangePicker/TimeRangePicker.js +1 -1
- package/esm/TimeRangePicker/TimeRangePickerTimeWrapper.js +4 -4
- package/esm/TimeRangePicker/TimeRangePickerToolbar.js +9 -9
- package/esm/TimeRangePicker/shared.js +4 -3
- package/esm/index.js +1 -1
- package/esm/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +1 -1
- package/esm/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +1 -1
- package/esm/internals/utils/date-range-manager.d.ts +2 -2
- package/esm/internals/utils/date-range-manager.js +8 -8
- package/esm/internals/utils/date-utils.d.ts +5 -5
- package/esm/internals/utils/date-utils.js +11 -11
- package/esm/internals/utils/valueManagers.js +9 -9
- package/esm/managers/useDateRangeManager.js +8 -8
- package/esm/managers/useDateTimeRangeManager.js +9 -9
- package/esm/managers/useTimeRangeManager.js +10 -10
- package/esm/validation/validateDateRange.js +1 -1
- package/esm/validation/validateDateTimeRange.js +1 -1
- package/esm/validation/validateTimeRange.js +1 -1
- package/index.js +1 -1
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +1 -1
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +1 -1
- package/internals/utils/date-range-manager.d.ts +2 -2
- package/internals/utils/date-range-manager.js +8 -8
- package/internals/utils/date-utils.d.ts +5 -5
- package/internals/utils/date-utils.js +11 -11
- package/internals/utils/valueManagers.js +9 -9
- package/managers/useDateRangeManager.js +6 -6
- package/managers/useDateTimeRangeManager.js +7 -7
- package/managers/useTimeRangeManager.js +8 -8
- package/package.json +4 -4
- package/validation/validateDateRange.js +1 -1
- package/validation/validateDateTimeRange.js +1 -1
- package/validation/validateTimeRange.js +1 -1
|
@@ -6,12 +6,13 @@ const _excluded = ["openTo"];
|
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
9
|
-
import {
|
|
9
|
+
import { resolveTimeFormat, mergeSx, MULTI_SECTION_CLOCK_SECTION_WIDTH } from '@mui/x-date-pickers/internals';
|
|
10
10
|
import { extractValidationProps } from '@mui/x-date-pickers/validation';
|
|
11
11
|
import { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from '@mui/x-date-pickers/MultiSectionDigitalClock';
|
|
12
12
|
import { digitalClockClasses } from '@mui/x-date-pickers/DigitalClock';
|
|
13
13
|
import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from '@mui/x-date-pickers/timeViewRenderers';
|
|
14
14
|
import { pickersLayoutClasses } from '@mui/x-date-pickers/PickersLayout';
|
|
15
|
+
import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
|
|
15
16
|
import { rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
16
17
|
import { useTimeRangePickerDefaultizedProps } from "../TimeRangePicker/shared.js";
|
|
17
18
|
import { SingleInputTimeRangeField } from "../SingleInputTimeRangeField/index.js";
|
|
@@ -62,7 +63,7 @@ const rendererInterceptor = function RendererInterceptor(props) {
|
|
|
62
63
|
};
|
|
63
64
|
if (process.env.NODE_ENV !== "production") rendererInterceptor.displayName = "rendererInterceptor";
|
|
64
65
|
const DesktopTimeRangePicker = /*#__PURE__*/React.forwardRef(function DesktopTimeRangePicker(inProps, ref) {
|
|
65
|
-
const
|
|
66
|
+
const adapter = usePickerAdapter();
|
|
66
67
|
|
|
67
68
|
// Props with the default values common to all time range pickers
|
|
68
69
|
const defaultizedProps = useTimeRangePickerDefaultizedProps(inProps, 'MuiDesktopTimeRangePicker');
|
|
@@ -79,7 +80,7 @@ const DesktopTimeRangePicker = /*#__PURE__*/React.forwardRef(function DesktopTim
|
|
|
79
80
|
views,
|
|
80
81
|
viewRenderers,
|
|
81
82
|
ampmInClock: true,
|
|
82
|
-
format: resolveTimeFormat(
|
|
83
|
+
format: resolveTimeFormat(adapter, defaultizedProps),
|
|
83
84
|
slots: _extends({
|
|
84
85
|
field: SingleInputTimeRangeField
|
|
85
86
|
}, defaultizedProps.slots),
|
|
@@ -122,7 +123,7 @@ DesktopTimeRangePicker.propTypes = {
|
|
|
122
123
|
// ----------------------------------------------------------------------
|
|
123
124
|
/**
|
|
124
125
|
* 12h/24h view for hour selection clock.
|
|
125
|
-
* @default
|
|
126
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
126
127
|
*/
|
|
127
128
|
ampm: PropTypes.bool,
|
|
128
129
|
/**
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import { useUtils } from '@mui/x-date-pickers/internals';
|
|
7
|
-
import { extractValidationProps } from '@mui/x-date-pickers/validation';
|
|
8
|
-
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
9
6
|
import refType from '@mui/utils/refType';
|
|
7
|
+
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
8
|
+
import { extractValidationProps } from '@mui/x-date-pickers/validation';
|
|
9
|
+
import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
|
|
10
10
|
import { rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
11
11
|
import { useDateRangePickerDefaultizedProps } from "../DateRangePicker/shared.js";
|
|
12
12
|
import { renderDateRangeViewCalendar } from "../dateRangeViewRenderers/index.js";
|
|
@@ -24,7 +24,7 @@ import { validateDateRange } from "../validation/index.js";
|
|
|
24
24
|
* - [MobileDateRangePicker API](https://mui.com/x/api/date-pickers/mobile-date-range-picker/)
|
|
25
25
|
*/
|
|
26
26
|
const MobileDateRangePicker = /*#__PURE__*/React.forwardRef(function MobileDateRangePicker(inProps, ref) {
|
|
27
|
-
const
|
|
27
|
+
const adapter = usePickerAdapter();
|
|
28
28
|
|
|
29
29
|
// Props with the default values common to all date time pickers
|
|
30
30
|
const defaultizedProps = useDateRangePickerDefaultizedProps(inProps, 'MuiMobileDateRangePicker');
|
|
@@ -34,7 +34,7 @@ const MobileDateRangePicker = /*#__PURE__*/React.forwardRef(function MobileDateR
|
|
|
34
34
|
const props = _extends({}, defaultizedProps, {
|
|
35
35
|
viewRenderers,
|
|
36
36
|
// TODO: Replace with resolveDateFormat() once we support month and year views
|
|
37
|
-
format: defaultizedProps.format ??
|
|
37
|
+
format: defaultizedProps.format ?? adapter.formats.keyboardDate,
|
|
38
38
|
// Force one calendar on mobile to avoid layout issues
|
|
39
39
|
calendars: 1,
|
|
40
40
|
// force current calendar position, since we only have one calendar
|
|
@@ -6,12 +6,13 @@ const _excluded = ["view", "openTo"];
|
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import refType from '@mui/utils/refType';
|
|
9
|
-
import { DIALOG_WIDTH, VIEW_HEIGHT, isInternalTimeView, isDatePickerView, resolveDateTimeFormat,
|
|
9
|
+
import { DIALOG_WIDTH, VIEW_HEIGHT, isInternalTimeView, isDatePickerView, resolveDateTimeFormat, TIME_VIEWS } from '@mui/x-date-pickers/internals';
|
|
10
10
|
import { extractValidationProps } from '@mui/x-date-pickers/validation';
|
|
11
11
|
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
12
12
|
import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from '@mui/x-date-pickers/timeViewRenderers';
|
|
13
13
|
import { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from '@mui/x-date-pickers/MultiSectionDigitalClock';
|
|
14
14
|
import { digitalClockClasses } from '@mui/x-date-pickers/DigitalClock';
|
|
15
|
+
import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
|
|
15
16
|
import { rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
16
17
|
import { renderDateRangeViewCalendar } from "../dateRangeViewRenderers/index.js";
|
|
17
18
|
import { useMobileRangePicker } from "../internals/hooks/useMobileRangePicker/index.js";
|
|
@@ -104,7 +105,7 @@ const rendererInterceptor = function RendererInterceptor(props) {
|
|
|
104
105
|
* - [MobileDateTimeRangePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-range-picker/)
|
|
105
106
|
*/
|
|
106
107
|
const MobileDateTimeRangePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimeRangePicker(inProps, ref) {
|
|
107
|
-
const
|
|
108
|
+
const adapter = usePickerAdapter();
|
|
108
109
|
// Props with the default values common to all date time range pickers
|
|
109
110
|
const defaultizedProps = useDateTimeRangePickerDefaultizedProps(inProps, 'MuiMobileDateTimeRangePicker');
|
|
110
111
|
const renderTimeView = defaultizedProps.shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
|
|
@@ -117,7 +118,7 @@ const MobileDateTimeRangePicker = /*#__PURE__*/React.forwardRef(function MobileD
|
|
|
117
118
|
}, defaultizedProps.viewRenderers);
|
|
118
119
|
const props = _extends({}, defaultizedProps, {
|
|
119
120
|
viewRenderers,
|
|
120
|
-
format: resolveDateTimeFormat(
|
|
121
|
+
format: resolveDateTimeFormat(adapter, defaultizedProps, true),
|
|
121
122
|
// Force one calendar on mobile to avoid layout issues
|
|
122
123
|
calendars: 1,
|
|
123
124
|
// force true to correctly handle `renderTimeViewClock` as a renderer
|
|
@@ -158,7 +159,7 @@ MobileDateTimeRangePicker.propTypes = {
|
|
|
158
159
|
// ----------------------------------------------------------------------
|
|
159
160
|
/**
|
|
160
161
|
* 12h/24h view for hour selection clock.
|
|
161
|
-
* @default
|
|
162
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
162
163
|
*/
|
|
163
164
|
ampm: PropTypes.bool,
|
|
164
165
|
/**
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import { DIALOG_WIDTH, resolveTimeFormat, useUtils, VIEW_HEIGHT } from '@mui/x-date-pickers/internals';
|
|
7
|
-
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
8
6
|
import refType from '@mui/utils/refType';
|
|
7
|
+
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
8
|
+
import { DIALOG_WIDTH, resolveTimeFormat, VIEW_HEIGHT } from '@mui/x-date-pickers/internals';
|
|
9
9
|
import { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from '@mui/x-date-pickers/MultiSectionDigitalClock';
|
|
10
10
|
import { digitalClockClasses } from '@mui/x-date-pickers/DigitalClock';
|
|
11
11
|
import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from '@mui/x-date-pickers/timeViewRenderers';
|
|
12
12
|
import { extractValidationProps } from '@mui/x-date-pickers/validation';
|
|
13
|
+
import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
|
|
13
14
|
import { rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
14
15
|
import { useTimeRangePickerDefaultizedProps } from "../TimeRangePicker/shared.js";
|
|
15
16
|
import { SingleInputTimeRangeField } from "../SingleInputTimeRangeField/index.js";
|
|
@@ -63,7 +64,7 @@ const rendererInterceptor = function rendererInterceptor(props) {
|
|
|
63
64
|
};
|
|
64
65
|
if (process.env.NODE_ENV !== "production") rendererInterceptor.displayName = "rendererInterceptor";
|
|
65
66
|
const MobileTimeRangePicker = /*#__PURE__*/React.forwardRef(function MobileTimeRangePicker(inProps, ref) {
|
|
66
|
-
const
|
|
67
|
+
const adapter = usePickerAdapter();
|
|
67
68
|
|
|
68
69
|
// Props with the default values common to all time range pickers
|
|
69
70
|
const defaultizedProps = useTimeRangePickerDefaultizedProps(inProps, 'MuiMobileTimeRangePicker');
|
|
@@ -77,7 +78,7 @@ const MobileTimeRangePicker = /*#__PURE__*/React.forwardRef(function MobileTimeR
|
|
|
77
78
|
const props = _extends({}, defaultizedProps, {
|
|
78
79
|
ampmInClock: true,
|
|
79
80
|
viewRenderers,
|
|
80
|
-
format: resolveTimeFormat(
|
|
81
|
+
format: resolveTimeFormat(adapter, defaultizedProps),
|
|
81
82
|
slots: _extends({
|
|
82
83
|
field: SingleInputTimeRangeField
|
|
83
84
|
}, defaultizedProps.slots),
|
|
@@ -112,7 +113,7 @@ MobileTimeRangePicker.propTypes = {
|
|
|
112
113
|
// ----------------------------------------------------------------------
|
|
113
114
|
/**
|
|
114
115
|
* 12h/24h view for hour selection clock.
|
|
115
|
-
* @default
|
|
116
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
116
117
|
*/
|
|
117
118
|
ampm: PropTypes.bool,
|
|
118
119
|
/**
|
|
@@ -28,7 +28,7 @@ MultiInputDateTimeRangeField.propTypes = {
|
|
|
28
28
|
// ----------------------------------------------------------------------
|
|
29
29
|
/**
|
|
30
30
|
* 12h/24h view for hour selection clock.
|
|
31
|
-
* @default
|
|
31
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
32
32
|
*/
|
|
33
33
|
ampm: PropTypes.bool,
|
|
34
34
|
/**
|
|
@@ -29,7 +29,7 @@ MultiInputTimeRangeField.propTypes = {
|
|
|
29
29
|
// ----------------------------------------------------------------------
|
|
30
30
|
/**
|
|
31
31
|
* 12h/24h view for hour selection clock.
|
|
32
|
-
* @default
|
|
32
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
33
33
|
*/
|
|
34
34
|
ampm: PropTypes.bool,
|
|
35
35
|
/**
|
|
@@ -8,8 +8,8 @@ import * as React from 'react';
|
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
9
9
|
import { styled } from '@mui/material/styles';
|
|
10
10
|
import { PickersCalendarHeader } from '@mui/x-date-pickers/PickersCalendarHeader';
|
|
11
|
-
import { PickersArrowSwitcher, useNextMonthDisabled, usePreviousMonthDisabled
|
|
12
|
-
import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
11
|
+
import { PickersArrowSwitcher, useNextMonthDisabled, usePreviousMonthDisabled } from '@mui/x-date-pickers/internals';
|
|
12
|
+
import { usePickerAdapter, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
14
|
const PickersRangeCalendarHeaderContentMultipleCalendars = styled(PickersArrowSwitcher)({
|
|
15
15
|
padding: '12px 16px 4px 16px',
|
|
@@ -18,7 +18,7 @@ const PickersRangeCalendarHeaderContentMultipleCalendars = styled(PickersArrowSw
|
|
|
18
18
|
justifyContent: 'space-between'
|
|
19
19
|
});
|
|
20
20
|
const PickersRangeCalendarHeader = /*#__PURE__*/React.forwardRef(function PickersRangeCalendarHeader(props, ref) {
|
|
21
|
-
const
|
|
21
|
+
const adapter = usePickerAdapter();
|
|
22
22
|
const translations = usePickerTranslations();
|
|
23
23
|
const {
|
|
24
24
|
calendars,
|
|
@@ -57,8 +57,8 @@ const PickersRangeCalendarHeader = /*#__PURE__*/React.forwardRef(function Picker
|
|
|
57
57
|
ref: ref
|
|
58
58
|
}));
|
|
59
59
|
}
|
|
60
|
-
const selectNextMonth = () => onMonthChange(
|
|
61
|
-
const selectPreviousMonth = () => onMonthChange(
|
|
60
|
+
const selectNextMonth = () => onMonthChange(adapter.addMonths(currentMonth, 1));
|
|
61
|
+
const selectPreviousMonth = () => onMonthChange(adapter.addMonths(currentMonth, -1));
|
|
62
62
|
return /*#__PURE__*/_jsx(PickersRangeCalendarHeaderContentMultipleCalendars, _extends({}, otherRangeProps, {
|
|
63
63
|
ref: ref,
|
|
64
64
|
onGoToPrevious: selectPreviousMonth,
|
|
@@ -72,7 +72,7 @@ const PickersRangeCalendarHeader = /*#__PURE__*/React.forwardRef(function Picker
|
|
|
72
72
|
slots: slots,
|
|
73
73
|
slotProps: slotProps,
|
|
74
74
|
labelId: labelId,
|
|
75
|
-
children:
|
|
75
|
+
children: adapter.formatByString(month, format ?? `${adapter.formats.month} ${adapter.formats.year}`)
|
|
76
76
|
}));
|
|
77
77
|
});
|
|
78
78
|
if (process.env.NODE_ENV !== "production") PickersRangeCalendarHeader.displayName = "PickersRangeCalendarHeader";
|
|
@@ -52,7 +52,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateTimeRangeField.propTypes
|
|
|
52
52
|
// ----------------------------------------------------------------------
|
|
53
53
|
/**
|
|
54
54
|
* 12h/24h view for hour selection clock.
|
|
55
|
-
* @default
|
|
55
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
56
56
|
*/
|
|
57
57
|
ampm: PropTypes.bool,
|
|
58
58
|
/**
|
|
@@ -52,7 +52,7 @@ process.env.NODE_ENV !== "production" ? SingleInputTimeRangeField.propTypes = {
|
|
|
52
52
|
// ----------------------------------------------------------------------
|
|
53
53
|
/**
|
|
54
54
|
* 12h/24h view for hour selection clock.
|
|
55
|
-
* @default
|
|
55
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
56
56
|
*/
|
|
57
57
|
ampm: PropTypes.bool,
|
|
58
58
|
/**
|
|
@@ -53,7 +53,7 @@ process.env.NODE_ENV !== "production" ? TimeRangePicker.propTypes = {
|
|
|
53
53
|
// ----------------------------------------------------------------------
|
|
54
54
|
/**
|
|
55
55
|
* 12h/24h view for hour selection clock.
|
|
56
|
-
* @default
|
|
56
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
57
57
|
*/
|
|
58
58
|
ampm: PropTypes.bool,
|
|
59
59
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
3
|
const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
|
|
4
|
-
import {
|
|
4
|
+
import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
|
|
5
5
|
import { isRangeValid } from "../internals/utils/date-utils.js";
|
|
6
6
|
import { calculateRangeChange } from "../internals/utils/date-range-manager.js";
|
|
7
7
|
import { usePickerRangePositionContext } from "../hooks/index.js";
|
|
@@ -9,7 +9,7 @@ import { usePickerRangePositionContext } from "../hooks/index.js";
|
|
|
9
9
|
* @ignore - internal component.
|
|
10
10
|
*/
|
|
11
11
|
function TimeRangePickerTimeWrapper(props) {
|
|
12
|
-
const
|
|
12
|
+
const adapter = usePickerAdapter();
|
|
13
13
|
const {
|
|
14
14
|
viewRenderer,
|
|
15
15
|
value,
|
|
@@ -35,11 +35,11 @@ function TimeRangePickerTimeWrapper(props) {
|
|
|
35
35
|
newRange
|
|
36
36
|
} = calculateRangeChange({
|
|
37
37
|
newDate,
|
|
38
|
-
|
|
38
|
+
adapter,
|
|
39
39
|
range: value,
|
|
40
40
|
rangePosition
|
|
41
41
|
});
|
|
42
|
-
const isFullRangeSelected = rangePosition === 'end' && isRangeValid(
|
|
42
|
+
const isFullRangeSelected = rangePosition === 'end' && isRangeValid(adapter, newRange);
|
|
43
43
|
onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView);
|
|
44
44
|
};
|
|
45
45
|
return viewRenderer(_extends({}, other, {
|
|
@@ -8,8 +8,8 @@ import PropTypes from 'prop-types';
|
|
|
8
8
|
import clsx from 'clsx';
|
|
9
9
|
import { styled, useThemeProps } from '@mui/material/styles';
|
|
10
10
|
import composeClasses from '@mui/utils/composeClasses';
|
|
11
|
-
import { PickersToolbar, PickersToolbarButton,
|
|
12
|
-
import { usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
11
|
+
import { PickersToolbar, PickersToolbarButton, PickersToolbarText, getMeridiem, formatMeridiem, pickersToolbarClasses, pickersToolbarTextClasses, MULTI_SECTION_CLOCK_SECTION_WIDTH, useToolbarOwnerState } from '@mui/x-date-pickers/internals';
|
|
12
|
+
import { usePickerAdapter, usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
13
13
|
import { getTimeRangePickerToolbarUtilityClass } from "./timeRangePickerToolbarClasses.js";
|
|
14
14
|
import { usePickerRangePositionContext } from "../hooks/index.js";
|
|
15
15
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -92,13 +92,13 @@ function TimeRangePickerToolbarTimeElement(props) {
|
|
|
92
92
|
separatorClasses,
|
|
93
93
|
toolbarPlaceholder
|
|
94
94
|
} = props;
|
|
95
|
-
const
|
|
95
|
+
const adapter = usePickerAdapter();
|
|
96
96
|
const {
|
|
97
97
|
variant,
|
|
98
98
|
views
|
|
99
99
|
} = usePickerContext();
|
|
100
|
-
const formatHours = time => ampm ?
|
|
101
|
-
const meridiemMode = getMeridiem(value,
|
|
100
|
+
const formatHours = time => ampm ? adapter.format(time, 'hours12h') : adapter.format(time, 'hours24h');
|
|
101
|
+
const meridiemMode = getMeridiem(value, adapter);
|
|
102
102
|
const sectionWidth = variant === 'desktop' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : '100%';
|
|
103
103
|
return /*#__PURE__*/_jsxs(TimeRangePickerToolbarTimeContainer, {
|
|
104
104
|
children: [views.includes('hours') && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
@@ -107,7 +107,7 @@ function TimeRangePickerToolbarTimeElement(props) {
|
|
|
107
107
|
width: sectionWidth,
|
|
108
108
|
onClick: () => onViewChange('hours'),
|
|
109
109
|
selected: view === 'hours',
|
|
110
|
-
value:
|
|
110
|
+
value: adapter.isValid(value) ? formatHours(value) : toolbarPlaceholder
|
|
111
111
|
}), /*#__PURE__*/_jsx(TimeRangePickerToolbarSeparator, {
|
|
112
112
|
variant: "h5",
|
|
113
113
|
value: ":",
|
|
@@ -117,7 +117,7 @@ function TimeRangePickerToolbarTimeElement(props) {
|
|
|
117
117
|
width: sectionWidth,
|
|
118
118
|
onClick: () => onViewChange('minutes'),
|
|
119
119
|
selected: view === 'minutes' || !views.includes('minutes') && view === 'hours',
|
|
120
|
-
value:
|
|
120
|
+
value: adapter.isValid(value) ? adapter.format(value, 'minutes') : toolbarPlaceholder,
|
|
121
121
|
disabled: !views.includes('minutes')
|
|
122
122
|
})]
|
|
123
123
|
}), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
@@ -130,13 +130,13 @@ function TimeRangePickerToolbarTimeElement(props) {
|
|
|
130
130
|
width: sectionWidth,
|
|
131
131
|
onClick: () => onViewChange('seconds'),
|
|
132
132
|
selected: view === 'seconds',
|
|
133
|
-
value: value ?
|
|
133
|
+
value: value ? adapter.format(value, 'seconds') : toolbarPlaceholder
|
|
134
134
|
})]
|
|
135
135
|
}), ampm && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
136
136
|
variant: "h5",
|
|
137
137
|
onClick: () => onViewChange('meridiem'),
|
|
138
138
|
selected: view === 'meridiem',
|
|
139
|
-
value: value && meridiemMode ? formatMeridiem(
|
|
139
|
+
value: value && meridiemMode ? formatMeridiem(adapter, meridiemMode) : toolbarPlaceholder,
|
|
140
140
|
width: sectionWidth
|
|
141
141
|
})]
|
|
142
142
|
});
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useThemeProps } from '@mui/material/styles';
|
|
4
|
-
import {
|
|
4
|
+
import { applyDefaultViewProps, resolveTimeViewsResponse, useApplyDefaultValuesToTimeValidationProps } from '@mui/x-date-pickers/internals';
|
|
5
|
+
import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
|
|
5
6
|
import { TimeRangePickerToolbar } from "./TimeRangePickerToolbar.js";
|
|
6
7
|
import { TimeRangePickerTabs } from "./TimeRangePickerTabs.js";
|
|
7
8
|
export function useTimeRangePickerDefaultizedProps(props, name) {
|
|
8
|
-
const
|
|
9
|
+
const adapter = usePickerAdapter();
|
|
9
10
|
const themeProps = useThemeProps({
|
|
10
11
|
props,
|
|
11
12
|
name
|
|
12
13
|
});
|
|
13
14
|
const validationProps = useApplyDefaultValuesToTimeValidationProps(themeProps);
|
|
14
|
-
const ampm = themeProps.ampm ??
|
|
15
|
+
const ampm = themeProps.ampm ?? adapter.is12HourCycleInCurrentLocale();
|
|
15
16
|
const {
|
|
16
17
|
openTo,
|
|
17
18
|
views: defaultViews
|
package/esm/index.js
CHANGED
|
@@ -19,7 +19,7 @@ export const useDesktopRangePicker = _ref => {
|
|
|
19
19
|
steps
|
|
20
20
|
} = _ref,
|
|
21
21
|
pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
22
|
-
useLicenseVerifier('x-date-pickers-pro', "
|
|
22
|
+
useLicenseVerifier('x-date-pickers-pro', "MTc1MDk3NTIwMDAwMA==");
|
|
23
23
|
const {
|
|
24
24
|
slots,
|
|
25
25
|
slotProps,
|
|
@@ -21,7 +21,7 @@ export const useMobileRangePicker = _ref => {
|
|
|
21
21
|
steps
|
|
22
22
|
} = _ref,
|
|
23
23
|
pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
24
|
-
useLicenseVerifier('x-date-pickers-pro', "
|
|
24
|
+
useLicenseVerifier('x-date-pickers-pro', "MTc1MDk3NTIwMDAwMA==");
|
|
25
25
|
const {
|
|
26
26
|
slots,
|
|
27
27
|
slotProps: innerSlotProps,
|
|
@@ -2,7 +2,7 @@ import { MuiPickersAdapter, PickerValidDate } from '@mui/x-date-pickers/models';
|
|
|
2
2
|
import { PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
3
3
|
import { RangePosition } from "../../models/index.js";
|
|
4
4
|
interface CalculateRangeChangeOptions {
|
|
5
|
-
|
|
5
|
+
adapter: MuiPickersAdapter;
|
|
6
6
|
range: PickerRangeValue;
|
|
7
7
|
newDate: PickerValidDate | null;
|
|
8
8
|
rangePosition: RangePosition;
|
|
@@ -20,7 +20,7 @@ interface CalculateRangeChangeResponse {
|
|
|
20
20
|
newRange: PickerRangeValue;
|
|
21
21
|
}
|
|
22
22
|
export declare function calculateRangeChange({
|
|
23
|
-
|
|
23
|
+
adapter,
|
|
24
24
|
range,
|
|
25
25
|
newDate: selectedDate,
|
|
26
26
|
rangePosition,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeDateAndTime } from '@mui/x-date-pickers/internals';
|
|
2
2
|
export function calculateRangeChange({
|
|
3
|
-
|
|
3
|
+
adapter,
|
|
4
4
|
range,
|
|
5
5
|
newDate: selectedDate,
|
|
6
6
|
rangePosition,
|
|
@@ -8,18 +8,18 @@ export function calculateRangeChange({
|
|
|
8
8
|
shouldMergeDateAndTime = false,
|
|
9
9
|
referenceDate
|
|
10
10
|
}) {
|
|
11
|
-
const start = !
|
|
12
|
-
const end = !
|
|
11
|
+
const start = !adapter.isValid(range[0]) ? null : range[0];
|
|
12
|
+
const end = !adapter.isValid(range[1]) ? null : range[1];
|
|
13
13
|
if (shouldMergeDateAndTime && selectedDate) {
|
|
14
14
|
// If there is a date already selected, then we want to keep its time
|
|
15
15
|
if (start && rangePosition === 'start') {
|
|
16
|
-
selectedDate = mergeDateAndTime(
|
|
16
|
+
selectedDate = mergeDateAndTime(adapter, selectedDate, start);
|
|
17
17
|
}
|
|
18
18
|
if (end && rangePosition === 'end') {
|
|
19
|
-
selectedDate = mergeDateAndTime(
|
|
19
|
+
selectedDate = mergeDateAndTime(adapter, selectedDate, end);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
const newSelectedDate = referenceDate && selectedDate && shouldMergeDateAndTime ? mergeDateAndTime(
|
|
22
|
+
const newSelectedDate = referenceDate && selectedDate && shouldMergeDateAndTime ? mergeDateAndTime(adapter, selectedDate, referenceDate) : selectedDate;
|
|
23
23
|
if (rangePosition === 'start') {
|
|
24
24
|
const truthyResult = allowRangeFlip ? {
|
|
25
25
|
nextSelection: 'start',
|
|
@@ -28,7 +28,7 @@ export function calculateRangeChange({
|
|
|
28
28
|
nextSelection: 'end',
|
|
29
29
|
newRange: [newSelectedDate, null]
|
|
30
30
|
};
|
|
31
|
-
return Boolean(end) &&
|
|
31
|
+
return Boolean(end) && adapter.isAfter(newSelectedDate, end) ? truthyResult : {
|
|
32
32
|
nextSelection: 'end',
|
|
33
33
|
newRange: [newSelectedDate, end]
|
|
34
34
|
};
|
|
@@ -40,7 +40,7 @@ export function calculateRangeChange({
|
|
|
40
40
|
nextSelection: 'end',
|
|
41
41
|
newRange: [newSelectedDate, null]
|
|
42
42
|
};
|
|
43
|
-
return Boolean(start) &&
|
|
43
|
+
return Boolean(start) && adapter.isBeforeDay(newSelectedDate, start) ? truthyResult : {
|
|
44
44
|
nextSelection: 'start',
|
|
45
45
|
newRange: [start, newSelectedDate]
|
|
46
46
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AdapterFormats, MuiPickersAdapter, PickerValidDate } from '@mui/x-date-pickers/models';
|
|
2
2
|
import { PickerNonNullableRangeValue, PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
3
|
-
export declare const isRangeValid: (
|
|
4
|
-
export declare const isWithinRange: (
|
|
5
|
-
export declare const isStartOfRange: (
|
|
6
|
-
export declare const isEndOfRange: (
|
|
7
|
-
export declare const formatRange: (
|
|
3
|
+
export declare const isRangeValid: (adapter: MuiPickersAdapter, range: PickerRangeValue) => range is PickerNonNullableRangeValue;
|
|
4
|
+
export declare const isWithinRange: (adapter: MuiPickersAdapter, day: PickerValidDate, range: PickerRangeValue) => boolean;
|
|
5
|
+
export declare const isStartOfRange: (adapter: MuiPickersAdapter, day: PickerValidDate, range: PickerRangeValue) => boolean;
|
|
6
|
+
export declare const isEndOfRange: (adapter: MuiPickersAdapter, day: PickerValidDate, range: PickerRangeValue) => boolean;
|
|
7
|
+
export declare const formatRange: (adapter: MuiPickersAdapter, range: PickerRangeValue, formatKey: keyof AdapterFormats) => string | null;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
export const isRangeValid = (
|
|
2
|
-
return
|
|
1
|
+
export const isRangeValid = (adapter, range) => {
|
|
2
|
+
return adapter.isValid(range[0]) && adapter.isValid(range[1]) && !adapter.isBefore(range[1], range[0]);
|
|
3
3
|
};
|
|
4
|
-
export const isWithinRange = (
|
|
5
|
-
return isRangeValid(
|
|
4
|
+
export const isWithinRange = (adapter, day, range) => {
|
|
5
|
+
return isRangeValid(adapter, range) && adapter.isWithinRange(day, range);
|
|
6
6
|
};
|
|
7
|
-
export const isStartOfRange = (
|
|
8
|
-
return isRangeValid(
|
|
7
|
+
export const isStartOfRange = (adapter, day, range) => {
|
|
8
|
+
return isRangeValid(adapter, range) && adapter.isSameDay(day, range[0]);
|
|
9
9
|
};
|
|
10
|
-
export const isEndOfRange = (
|
|
11
|
-
return isRangeValid(
|
|
10
|
+
export const isEndOfRange = (adapter, day, range) => {
|
|
11
|
+
return isRangeValid(adapter, range) && adapter.isSameDay(day, range[1]);
|
|
12
12
|
};
|
|
13
|
-
export const formatRange = (
|
|
14
|
-
if (!isRangeValid(
|
|
13
|
+
export const formatRange = (adapter, range, formatKey) => {
|
|
14
|
+
if (!isRangeValid(adapter, range)) {
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
17
|
-
return `${
|
|
17
|
+
return `${adapter.format(range[0], formatKey)} - ${adapter.format(range[1], formatKey)}`;
|
|
18
18
|
};
|
|
@@ -12,8 +12,8 @@ export const rangeValueManager = {
|
|
|
12
12
|
referenceDate: referenceDateProp
|
|
13
13
|
} = _ref,
|
|
14
14
|
params = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
15
|
-
const shouldKeepStartDate = params.
|
|
16
|
-
const shouldKeepEndDate = params.
|
|
15
|
+
const shouldKeepStartDate = params.adapter.isValid(value[0]);
|
|
16
|
+
const shouldKeepEndDate = params.adapter.isValid(value[1]);
|
|
17
17
|
if (shouldKeepStartDate && shouldKeepEndDate) {
|
|
18
18
|
return value;
|
|
19
19
|
}
|
|
@@ -25,22 +25,22 @@ export const rangeValueManager = {
|
|
|
25
25
|
isSameError: (a, b) => b !== null && a[1] === b[1] && a[0] === b[0],
|
|
26
26
|
hasError: error => error[0] != null || error[1] != null,
|
|
27
27
|
defaultErrorState: [null, null],
|
|
28
|
-
getTimezone: (
|
|
29
|
-
const timezoneStart =
|
|
30
|
-
const timezoneEnd =
|
|
28
|
+
getTimezone: (adapter, value) => {
|
|
29
|
+
const timezoneStart = adapter.isValid(value[0]) ? adapter.getTimezone(value[0]) : null;
|
|
30
|
+
const timezoneEnd = adapter.isValid(value[1]) ? adapter.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
|
}
|
|
34
34
|
return timezoneStart ?? timezoneEnd;
|
|
35
35
|
},
|
|
36
|
-
setTimezone: (
|
|
36
|
+
setTimezone: (adapter, timezone, value) => [value[0] == null ? null : adapter.setTimezone(value[0], timezone), value[1] == null ? null : adapter.setTimezone(value[1], timezone)]
|
|
37
37
|
};
|
|
38
38
|
export const getRangeFieldValueManager = ({
|
|
39
39
|
dateSeparator = '–'
|
|
40
40
|
}) => ({
|
|
41
|
-
updateReferenceValue: (
|
|
42
|
-
const shouldKeepStartDate =
|
|
43
|
-
const shouldKeepEndDate =
|
|
41
|
+
updateReferenceValue: (adapter, value, prevReferenceValue) => {
|
|
42
|
+
const shouldKeepStartDate = adapter.isValid(value[0]);
|
|
43
|
+
const shouldKeepEndDate = adapter.isValid(value[1]);
|
|
44
44
|
if (!shouldKeepStartDate && !shouldKeepEndDate) {
|
|
45
45
|
return prevReferenceValue;
|
|
46
46
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
6
|
-
import { useApplyDefaultValuesToDateValidationProps
|
|
5
|
+
import { usePickerAdapter, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
6
|
+
import { useApplyDefaultValuesToDateValidationProps } from '@mui/x-date-pickers/internals';
|
|
7
7
|
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
8
8
|
import { validateDateRange } from "../validation/index.js";
|
|
9
9
|
import { formatRange } from "../internals/utils/date-utils.js";
|
|
@@ -25,16 +25,16 @@ export function useDateRangeManager(parameters = {}) {
|
|
|
25
25
|
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
26
26
|
}
|
|
27
27
|
function useOpenPickerButtonAriaLabel(value) {
|
|
28
|
-
const
|
|
28
|
+
const adapter = usePickerAdapter();
|
|
29
29
|
const translations = usePickerTranslations();
|
|
30
30
|
return React.useMemo(() => {
|
|
31
|
-
return translations.openRangePickerDialogue(formatRange(
|
|
32
|
-
}, [value, translations,
|
|
31
|
+
return translations.openRangePickerDialogue(formatRange(adapter, value, 'fullDate'));
|
|
32
|
+
}, [value, translations, adapter]);
|
|
33
33
|
}
|
|
34
34
|
function useApplyDefaultValuesToDateRangeFieldInternalProps(internalProps) {
|
|
35
|
-
const
|
|
35
|
+
const adapter = usePickerAdapter();
|
|
36
36
|
const validationProps = useApplyDefaultValuesToDateValidationProps(internalProps);
|
|
37
37
|
return React.useMemo(() => _extends({}, internalProps, validationProps, {
|
|
38
|
-
format: internalProps.format ??
|
|
39
|
-
}), [internalProps, validationProps,
|
|
38
|
+
format: internalProps.format ?? adapter.formats.keyboardDate
|
|
39
|
+
}), [internalProps, validationProps, adapter]);
|
|
40
40
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
6
|
-
import { useApplyDefaultValuesToDateTimeValidationProps
|
|
5
|
+
import { usePickerAdapter, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
6
|
+
import { useApplyDefaultValuesToDateTimeValidationProps } from '@mui/x-date-pickers/internals';
|
|
7
7
|
import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
8
8
|
import { validateDateTimeRange } from "../validation/index.js";
|
|
9
9
|
import { formatRange } from "../internals/utils/date-utils.js";
|
|
@@ -25,17 +25,17 @@ export function useDateTimeRangeManager(parameters = {}) {
|
|
|
25
25
|
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
26
26
|
}
|
|
27
27
|
function useOpenPickerButtonAriaLabel(value) {
|
|
28
|
-
const
|
|
28
|
+
const adapter = usePickerAdapter();
|
|
29
29
|
const translations = usePickerTranslations();
|
|
30
30
|
return React.useMemo(() => {
|
|
31
|
-
return translations.openRangePickerDialogue(formatRange(
|
|
32
|
-
}, [value, translations,
|
|
31
|
+
return translations.openRangePickerDialogue(formatRange(adapter, value, 'fullDate'));
|
|
32
|
+
}, [value, translations, adapter]);
|
|
33
33
|
}
|
|
34
34
|
function useApplyDefaultValuesToDateTimeRangeFieldInternalProps(internalProps) {
|
|
35
|
-
const
|
|
35
|
+
const adapter = usePickerAdapter();
|
|
36
36
|
const validationProps = useApplyDefaultValuesToDateTimeValidationProps(internalProps);
|
|
37
|
-
const ampm = React.useMemo(() => internalProps.ampm ??
|
|
37
|
+
const ampm = React.useMemo(() => internalProps.ampm ?? adapter.is12HourCycleInCurrentLocale(), [internalProps.ampm, adapter]);
|
|
38
38
|
return React.useMemo(() => _extends({}, internalProps, validationProps, {
|
|
39
|
-
format: internalProps.format ?? (ampm ?
|
|
40
|
-
}), [internalProps, validationProps, ampm,
|
|
39
|
+
format: internalProps.format ?? (ampm ? adapter.formats.keyboardDateTime12h : adapter.formats.keyboardDateTime24h)
|
|
40
|
+
}), [internalProps, validationProps, ampm, adapter]);
|
|
41
41
|
}
|