@mui/x-date-pickers-pro 8.5.3 → 8.7.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 +210 -0
- package/DateRangeCalendar/DateRangeCalendar.js +39 -38
- package/DateRangeCalendar/DateRangeCalendar.types.d.ts +1 -1
- package/DateRangeCalendar/useDragRange.d.ts +2 -2
- package/DateRangeCalendar/useDragRange.js +17 -17
- package/DateRangePicker/DateRangePicker.js +1 -1
- package/DateRangePicker/DateRangePickerToolbar.js +4 -4
- package/DateRangePickerDay/DateRangePickerDay.js +5 -4
- package/DateRangePickerDay2/DateRangePickerDay2.js +5 -4
- package/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +11 -8
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +3 -3
- package/DateTimeRangePicker/shared.js +3 -2
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +5 -5
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +15 -9
- package/DesktopTimeRangePicker/DesktopTimeRangePicker.js +5 -4
- package/MobileDateRangePicker/MobileDateRangePicker.js +6 -6
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +7 -6
- package/MobileTimeRangePicker/MobileTimeRangePicker.js +7 -6
- package/MultiInputDateRangeField/MultiInputDateRangeField.js +1 -1
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +2 -2
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +2 -2
- package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +4 -4
- package/SingleInputDateRangeField/SingleInputDateRangeField.js +1 -1
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +2 -2
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +2 -2
- package/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
- package/TimeRangePicker/TimeRangePicker.js +2 -2
- package/TimeRangePicker/TimeRangePickerTimeWrapper.js +11 -8
- package/TimeRangePicker/TimeRangePickerToolbar.js +7 -7
- package/TimeRangePicker/shared.js +3 -2
- package/esm/DateRangeCalendar/DateRangeCalendar.js +41 -40
- package/esm/DateRangeCalendar/DateRangeCalendar.types.d.ts +1 -1
- package/esm/DateRangeCalendar/useDragRange.d.ts +2 -2
- package/esm/DateRangeCalendar/useDragRange.js +17 -17
- package/esm/DateRangePicker/DateRangePicker.js +1 -1
- 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 +2 -2
- package/esm/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +10 -7
- package/esm/DateTimeRangePicker/DateTimeRangePickerToolbar.js +5 -5
- package/esm/DateTimeRangePicker/shared.js +4 -3
- package/esm/DesktopDateRangePicker/DesktopDateRangePicker.js +5 -5
- package/esm/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +13 -7
- package/esm/DesktopTimeRangePicker/DesktopTimeRangePicker.js +6 -5
- package/esm/MobileDateRangePicker/MobileDateRangePicker.js +6 -6
- package/esm/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +6 -5
- package/esm/MobileTimeRangePicker/MobileTimeRangePicker.js +7 -6
- package/esm/MultiInputDateRangeField/MultiInputDateRangeField.js +1 -1
- package/esm/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +2 -2
- package/esm/MultiInputTimeRangeField/MultiInputTimeRangeField.js +2 -2
- package/esm/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +6 -6
- package/esm/SingleInputDateRangeField/SingleInputDateRangeField.js +1 -1
- package/esm/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +2 -2
- package/esm/SingleInputTimeRangeField/SingleInputTimeRangeField.js +2 -2
- package/esm/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
- package/esm/TimeRangePicker/TimeRangePicker.js +2 -2
- package/esm/TimeRangePicker/TimeRangePickerTimeWrapper.js +10 -7
- package/esm/TimeRangePicker/TimeRangePickerToolbar.js +9 -9
- package/esm/TimeRangePicker/shared.js +4 -3
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +2 -0
- package/esm/hooks/useMultiInputRangeField/useTextFieldProps.js +2 -0
- package/esm/index.js +2 -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 +4 -3
- package/esm/internals/utils/date-range-manager.js +14 -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 +12 -10
- 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/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +1 -0
- package/hooks/useMultiInputRangeField/useTextFieldProps.js +1 -0
- 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 +4 -3
- package/internals/utils/date-range-manager.js +15 -8
- package/internals/utils/date-utils.d.ts +5 -5
- package/internals/utils/date-utils.js +11 -11
- package/internals/utils/valueManagers.js +12 -10
- 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
|
@@ -60,7 +60,7 @@ process.env.NODE_ENV !== "production" ? TimeRangePicker.propTypes = {
|
|
|
60
60
|
// ----------------------------------------------------------------------
|
|
61
61
|
/**
|
|
62
62
|
* 12h/24h view for hour selection clock.
|
|
63
|
-
* @default
|
|
63
|
+
* @default adapter.is12HourCycleInCurrentLocale()
|
|
64
64
|
*/
|
|
65
65
|
ampm: _propTypes.default.bool,
|
|
66
66
|
/**
|
|
@@ -250,7 +250,7 @@ process.env.NODE_ENV !== "production" ? TimeRangePicker.propTypes = {
|
|
|
250
250
|
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
251
251
|
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
252
252
|
*/
|
|
253
|
-
referenceDate: _propTypes.default.object,
|
|
253
|
+
referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
|
|
254
254
|
/**
|
|
255
255
|
* The currently selected sections.
|
|
256
256
|
* This prop accepts four formats:
|
|
@@ -7,33 +7,35 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.TimeRangePickerTimeWrapper = TimeRangePickerTimeWrapper;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
|
-
var
|
|
10
|
+
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
11
11
|
var _dateUtils = require("../internals/utils/date-utils");
|
|
12
12
|
var _dateRangeManager = require("../internals/utils/date-range-manager");
|
|
13
|
-
var
|
|
14
|
-
const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
|
|
13
|
+
var _hooks2 = require("../hooks");
|
|
14
|
+
const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className", "referenceDate"];
|
|
15
15
|
/**
|
|
16
16
|
* @ignore - internal component.
|
|
17
17
|
*/
|
|
18
18
|
function TimeRangePickerTimeWrapper(props) {
|
|
19
|
-
const
|
|
19
|
+
const adapter = (0, _hooks.usePickerAdapter)();
|
|
20
20
|
const {
|
|
21
21
|
viewRenderer,
|
|
22
22
|
value,
|
|
23
23
|
onChange,
|
|
24
24
|
defaultValue,
|
|
25
25
|
onViewChange,
|
|
26
|
-
views
|
|
26
|
+
views,
|
|
27
|
+
referenceDate: referenceDateProp
|
|
27
28
|
} = props,
|
|
28
29
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
29
30
|
const {
|
|
30
31
|
rangePosition
|
|
31
|
-
} = (0,
|
|
32
|
+
} = (0, _hooks2.usePickerRangePositionContext)();
|
|
32
33
|
if (!viewRenderer) {
|
|
33
34
|
return null;
|
|
34
35
|
}
|
|
35
36
|
const currentValue = (rangePosition === 'start' ? value?.[0] : value?.[1]) ?? null;
|
|
36
37
|
const currentDefaultValue = (rangePosition === 'start' ? defaultValue?.[0] : defaultValue?.[1]) ?? null;
|
|
38
|
+
const referenceDate = (0, _dateRangeManager.resolveReferenceDate)(referenceDateProp, rangePosition);
|
|
37
39
|
const handleOnChange = (newDate, selectionState, selectedView) => {
|
|
38
40
|
if (!onChange || !value) {
|
|
39
41
|
return;
|
|
@@ -42,14 +44,15 @@ function TimeRangePickerTimeWrapper(props) {
|
|
|
42
44
|
newRange
|
|
43
45
|
} = (0, _dateRangeManager.calculateRangeChange)({
|
|
44
46
|
newDate,
|
|
45
|
-
|
|
47
|
+
adapter,
|
|
46
48
|
range: value,
|
|
47
49
|
rangePosition
|
|
48
50
|
});
|
|
49
|
-
const isFullRangeSelected = rangePosition === 'end' && (0, _dateUtils.isRangeValid)(
|
|
51
|
+
const isFullRangeSelected = rangePosition === 'end' && (0, _dateUtils.isRangeValid)(adapter, newRange);
|
|
50
52
|
onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView);
|
|
51
53
|
};
|
|
52
54
|
return viewRenderer((0, _extends2.default)({}, other, {
|
|
55
|
+
referenceDate,
|
|
53
56
|
views,
|
|
54
57
|
onViewChange,
|
|
55
58
|
value: currentValue,
|
|
@@ -99,13 +99,13 @@ function TimeRangePickerToolbarTimeElement(props) {
|
|
|
99
99
|
separatorClasses,
|
|
100
100
|
toolbarPlaceholder
|
|
101
101
|
} = props;
|
|
102
|
-
const
|
|
102
|
+
const adapter = (0, _hooks.usePickerAdapter)();
|
|
103
103
|
const {
|
|
104
104
|
variant,
|
|
105
105
|
views
|
|
106
106
|
} = (0, _hooks.usePickerContext)();
|
|
107
|
-
const formatHours = time => ampm ?
|
|
108
|
-
const meridiemMode = (0, _internals.getMeridiem)(value,
|
|
107
|
+
const formatHours = time => ampm ? adapter.format(time, 'hours12h') : adapter.format(time, 'hours24h');
|
|
108
|
+
const meridiemMode = (0, _internals.getMeridiem)(value, adapter);
|
|
109
109
|
const sectionWidth = variant === 'desktop' ? _internals.MULTI_SECTION_CLOCK_SECTION_WIDTH : '100%';
|
|
110
110
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(TimeRangePickerToolbarTimeContainer, {
|
|
111
111
|
children: [views.includes('hours') && /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
@@ -114,7 +114,7 @@ function TimeRangePickerToolbarTimeElement(props) {
|
|
|
114
114
|
width: sectionWidth,
|
|
115
115
|
onClick: () => onViewChange('hours'),
|
|
116
116
|
selected: view === 'hours',
|
|
117
|
-
value:
|
|
117
|
+
value: adapter.isValid(value) ? formatHours(value) : toolbarPlaceholder
|
|
118
118
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(TimeRangePickerToolbarSeparator, {
|
|
119
119
|
variant: "h5",
|
|
120
120
|
value: ":",
|
|
@@ -124,7 +124,7 @@ function TimeRangePickerToolbarTimeElement(props) {
|
|
|
124
124
|
width: sectionWidth,
|
|
125
125
|
onClick: () => onViewChange('minutes'),
|
|
126
126
|
selected: view === 'minutes' || !views.includes('minutes') && view === 'hours',
|
|
127
|
-
value:
|
|
127
|
+
value: adapter.isValid(value) ? adapter.format(value, 'minutes') : toolbarPlaceholder,
|
|
128
128
|
disabled: !views.includes('minutes')
|
|
129
129
|
})]
|
|
130
130
|
}), views.includes('seconds') && /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
@@ -137,13 +137,13 @@ function TimeRangePickerToolbarTimeElement(props) {
|
|
|
137
137
|
width: sectionWidth,
|
|
138
138
|
onClick: () => onViewChange('seconds'),
|
|
139
139
|
selected: view === 'seconds',
|
|
140
|
-
value: value ?
|
|
140
|
+
value: value ? adapter.format(value, 'seconds') : toolbarPlaceholder
|
|
141
141
|
})]
|
|
142
142
|
}), ampm && /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersToolbarButton, {
|
|
143
143
|
variant: "h5",
|
|
144
144
|
onClick: () => onViewChange('meridiem'),
|
|
145
145
|
selected: view === 'meridiem',
|
|
146
|
-
value: value && meridiemMode ? (0, _internals.formatMeridiem)(
|
|
146
|
+
value: value && meridiemMode ? (0, _internals.formatMeridiem)(adapter, meridiemMode) : toolbarPlaceholder,
|
|
147
147
|
width: sectionWidth
|
|
148
148
|
})]
|
|
149
149
|
});
|
|
@@ -10,16 +10,17 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _styles = require("@mui/material/styles");
|
|
12
12
|
var _internals = require("@mui/x-date-pickers/internals");
|
|
13
|
+
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
13
14
|
var _TimeRangePickerToolbar = require("./TimeRangePickerToolbar");
|
|
14
15
|
var _TimeRangePickerTabs = require("./TimeRangePickerTabs");
|
|
15
16
|
function useTimeRangePickerDefaultizedProps(props, name) {
|
|
16
|
-
const
|
|
17
|
+
const adapter = (0, _hooks.usePickerAdapter)();
|
|
17
18
|
const themeProps = (0, _styles.useThemeProps)({
|
|
18
19
|
props,
|
|
19
20
|
name
|
|
20
21
|
});
|
|
21
22
|
const validationProps = (0, _internals.useApplyDefaultValuesToTimeValidationProps)(themeProps);
|
|
22
|
-
const ampm = themeProps.ampm ??
|
|
23
|
+
const ampm = themeProps.ampm ?? adapter.is12HourCycleInCurrentLocale();
|
|
23
24
|
const {
|
|
24
25
|
openTo,
|
|
25
26
|
views: defaultViews
|
|
@@ -15,11 +15,12 @@ import { styled, useThemeProps } from '@mui/material/styles';
|
|
|
15
15
|
import composeClasses from '@mui/utils/composeClasses';
|
|
16
16
|
import useId from '@mui/utils/useId';
|
|
17
17
|
import { Watermark } from '@mui/x-license';
|
|
18
|
-
import { DayCalendar, useReduceAnimations, useCalendarState,
|
|
18
|
+
import { DayCalendar, useReduceAnimations, useCalendarState, DEFAULT_DESKTOP_MODE_MEDIA_QUERY, useControlledValue, useViews, usePickerPrivateContext, areDatesEqual, useApplyDefaultValuesToDateValidationProps } from '@mui/x-date-pickers/internals';
|
|
19
19
|
import { warnOnce } from '@mui/x-internals/warning';
|
|
20
|
+
import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
|
|
20
21
|
import { dateRangeCalendarClasses, getDateRangeCalendarUtilityClass } from "./dateRangeCalendarClasses.js";
|
|
21
22
|
import { isEndOfRange, isRangeValid, isStartOfRange, isWithinRange } from "../internals/utils/date-utils.js";
|
|
22
|
-
import { calculateRangeChange, calculateRangePreview } from "../internals/utils/date-range-manager.js";
|
|
23
|
+
import { calculateRangeChange, calculateRangePreview, resolveReferenceDate } from "../internals/utils/date-range-manager.js";
|
|
23
24
|
import { DateRangePickerDay, dateRangePickerDayClasses as dayClasses } from "../DateRangePickerDay/index.js";
|
|
24
25
|
import { rangeValueManager } from "../internals/utils/valueManagers.js";
|
|
25
26
|
import { useDragRange } from "./useDragRange.js";
|
|
@@ -29,7 +30,7 @@ import { PickersRangeCalendarHeader } from "../PickersRangeCalendarHeader/index.
|
|
|
29
30
|
import { useNullablePickerRangePositionContext } from "../internals/hooks/useNullablePickerRangePositionContext.js";
|
|
30
31
|
import { dateRangePickerDay2Classes } from "../DateRangePickerDay2/index.js";
|
|
31
32
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
32
|
-
const releaseInfo = "
|
|
33
|
+
const releaseInfo = "MTc1MTU4MDAwMDAwMA==";
|
|
33
34
|
const DateRangeCalendarRoot = styled('div', {
|
|
34
35
|
name: 'MuiDateRangeCalendar',
|
|
35
36
|
slot: 'Root'
|
|
@@ -187,7 +188,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
187
188
|
focusedView: focusedViewProp,
|
|
188
189
|
onFocusedViewChange
|
|
189
190
|
});
|
|
190
|
-
const
|
|
191
|
+
const adapter = usePickerAdapter();
|
|
191
192
|
const id = useId();
|
|
192
193
|
const {
|
|
193
194
|
rangePosition,
|
|
@@ -208,7 +209,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
208
209
|
newRange
|
|
209
210
|
} = calculateRangeChange({
|
|
210
211
|
newDate,
|
|
211
|
-
|
|
212
|
+
adapter,
|
|
212
213
|
range: value,
|
|
213
214
|
rangePosition,
|
|
214
215
|
allowRangeFlip,
|
|
@@ -219,7 +220,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
219
220
|
if (isNextSectionAvailable) {
|
|
220
221
|
setRangePosition(nextSelection);
|
|
221
222
|
}
|
|
222
|
-
const isFullRangeSelected = rangePosition === 'end' && isRangeValid(
|
|
223
|
+
const isFullRangeSelected = rangePosition === 'end' && isRangeValid(adapter, newRange);
|
|
223
224
|
setValueAndGoToNextView(newRange, isFullRangeSelected || !isNextSectionAvailable ? 'finish' : 'partial', view);
|
|
224
225
|
});
|
|
225
226
|
const handleDrop = useEventCallback(newDate => {
|
|
@@ -229,12 +230,12 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
229
230
|
|
|
230
231
|
// Range going for the start of the start day to the end of the end day.
|
|
231
232
|
// This makes sure that `isWithinRange` works with any time in the start and end day.
|
|
232
|
-
const valueDayRange = React.useMemo(() => [!
|
|
233
|
+
const valueDayRange = React.useMemo(() => [!adapter.isValid(value[0]) ? value[0] : adapter.startOfDay(value[0]), !adapter.isValid(value[1]) ? value[1] : adapter.endOfDay(value[1])], [value, adapter]);
|
|
233
234
|
const _useDragRange = useDragRange({
|
|
234
235
|
disableDragEditing: shouldDisableDragEditing,
|
|
235
236
|
onDrop: handleDrop,
|
|
236
237
|
onDatePositionChange: handleDatePositionChange,
|
|
237
|
-
|
|
238
|
+
adapter,
|
|
238
239
|
dateRange: valueDayRange,
|
|
239
240
|
timezone
|
|
240
241
|
}),
|
|
@@ -256,14 +257,14 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
256
257
|
return [null, null];
|
|
257
258
|
}
|
|
258
259
|
const newRange = calculateRangeChange({
|
|
259
|
-
|
|
260
|
+
adapter,
|
|
260
261
|
range: valueDayRange,
|
|
261
262
|
newDate: rangeDragDay,
|
|
262
263
|
rangePosition,
|
|
263
264
|
allowRangeFlip: true
|
|
264
265
|
}).newRange;
|
|
265
|
-
return newRange[0] !== null && newRange[1] !== null ? [
|
|
266
|
-
}, [rangePosition, rangeDragDay,
|
|
266
|
+
return newRange[0] !== null && newRange[1] !== null ? [adapter.startOfDay(newRange[0]), adapter.endOfDay(newRange[1])] : newRange;
|
|
267
|
+
}, [rangePosition, rangeDragDay, adapter, valueDayRange]);
|
|
267
268
|
const wrappedShouldDisableDate = React.useMemo(() => {
|
|
268
269
|
if (!shouldDisableDate) {
|
|
269
270
|
return undefined;
|
|
@@ -276,7 +277,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
276
277
|
onMonthSwitchingAnimationEnd
|
|
277
278
|
} = useCalendarState({
|
|
278
279
|
value: value[0] || value[1],
|
|
279
|
-
referenceDate,
|
|
280
|
+
referenceDate: resolveReferenceDate(referenceDate, rangePosition),
|
|
280
281
|
disableFuture,
|
|
281
282
|
disablePast,
|
|
282
283
|
maxDate,
|
|
@@ -286,24 +287,24 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
286
287
|
shouldDisableDate: wrappedShouldDisableDate,
|
|
287
288
|
timezone,
|
|
288
289
|
getCurrentMonthFromVisibleDate: (visibleDate, prevMonth) => {
|
|
289
|
-
const firstVisibleMonth =
|
|
290
|
-
const lastVisibleMonth =
|
|
290
|
+
const firstVisibleMonth = adapter.addMonths(prevMonth, 1 - currentMonthCalendarPosition);
|
|
291
|
+
const lastVisibleMonth = adapter.endOfMonth(adapter.addMonths(firstVisibleMonth, calendars - 1));
|
|
291
292
|
|
|
292
293
|
// The new focused day is inside the visible calendars,
|
|
293
294
|
// Do not change the current month
|
|
294
|
-
if (
|
|
295
|
+
if (adapter.isWithinRange(visibleDate, [firstVisibleMonth, lastVisibleMonth])) {
|
|
295
296
|
return prevMonth;
|
|
296
297
|
}
|
|
297
298
|
|
|
298
299
|
// The new focused day is after the last visible month,
|
|
299
300
|
// Move the current month so that the new focused day is inside the first visible month
|
|
300
|
-
if (
|
|
301
|
-
return
|
|
301
|
+
if (adapter.isAfter(visibleDate, lastVisibleMonth)) {
|
|
302
|
+
return adapter.startOfMonth(adapter.addMonths(visibleDate, currentMonthCalendarPosition - 1));
|
|
302
303
|
}
|
|
303
304
|
|
|
304
305
|
// The new focused day is before the first visible month,
|
|
305
306
|
// Move the current month so that the new focused day is inside the last visible month
|
|
306
|
-
return
|
|
307
|
+
return adapter.startOfMonth(adapter.addMonths(visibleDate, currentMonthCalendarPosition - calendars));
|
|
307
308
|
}
|
|
308
309
|
});
|
|
309
310
|
const CalendarHeader = slots?.calendarHeader ?? PickersRangeCalendarHeader;
|
|
@@ -336,7 +337,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
336
337
|
const prevValue = React.useRef(null);
|
|
337
338
|
React.useEffect(() => {
|
|
338
339
|
const date = rangePosition === 'start' ? value[0] : value[1];
|
|
339
|
-
if (!
|
|
340
|
+
if (!adapter.isValid(date)) {
|
|
340
341
|
return;
|
|
341
342
|
}
|
|
342
343
|
const prevDate = rangePosition === 'start' ? prevValue.current?.[0] : prevValue.current?.[1];
|
|
@@ -344,16 +345,16 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
344
345
|
|
|
345
346
|
// The current date did not change, this call comes either from a `rangePosition` change or a change in the other date.
|
|
346
347
|
// In both cases, we don't want to change the visible month(s).
|
|
347
|
-
if (disableAutoMonthSwitching && prevDate &&
|
|
348
|
+
if (disableAutoMonthSwitching && prevDate && adapter.isEqual(prevDate, date)) {
|
|
348
349
|
return;
|
|
349
350
|
}
|
|
350
351
|
const displayingMonthRange = calendars - currentMonthCalendarPosition;
|
|
351
|
-
const currentMonthNumber =
|
|
352
|
-
const requestedMonthNumber =
|
|
353
|
-
if (!
|
|
352
|
+
const currentMonthNumber = adapter.getMonth(calendarState.currentMonth);
|
|
353
|
+
const requestedMonthNumber = adapter.getMonth(date);
|
|
354
|
+
if (!adapter.isSameYear(calendarState.currentMonth, date) || requestedMonthNumber < currentMonthNumber || requestedMonthNumber > currentMonthNumber + displayingMonthRange) {
|
|
354
355
|
const newMonth = rangePosition === 'start' ? date :
|
|
355
356
|
// If need to focus end, scroll to the state when "end" is displaying in the last calendar
|
|
356
|
-
|
|
357
|
+
adapter.addMonths(date, -displayingMonthRange);
|
|
357
358
|
setVisibleDate({
|
|
358
359
|
target: newMonth,
|
|
359
360
|
reason: 'controlled-value-change'
|
|
@@ -377,7 +378,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
377
378
|
onMouseLeave: () => setRangePreviewDay(null)
|
|
378
379
|
}), []);
|
|
379
380
|
const previewingRange = calculateRangePreview({
|
|
380
|
-
|
|
381
|
+
adapter,
|
|
381
382
|
range: valueDayRange,
|
|
382
383
|
newDate: rangePreviewDay,
|
|
383
384
|
rangePosition
|
|
@@ -386,12 +387,12 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
386
387
|
let cleanNewRangePreviewDay;
|
|
387
388
|
if (valueDayRange[0] == null && valueDayRange[1] == null) {
|
|
388
389
|
cleanNewRangePreviewDay = null;
|
|
389
|
-
} else if (isWithinRange(
|
|
390
|
+
} else if (isWithinRange(adapter, newRangePreviewDay, valueDayRange)) {
|
|
390
391
|
cleanNewRangePreviewDay = null;
|
|
391
392
|
} else {
|
|
392
393
|
cleanNewRangePreviewDay = newRangePreviewDay;
|
|
393
394
|
}
|
|
394
|
-
if (!areDatesEqual(
|
|
395
|
+
if (!areDatesEqual(adapter, cleanNewRangePreviewDay, rangePreviewDay)) {
|
|
395
396
|
setRangePreviewDay(cleanNewRangePreviewDay);
|
|
396
397
|
}
|
|
397
398
|
});
|
|
@@ -404,8 +405,8 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
404
405
|
day,
|
|
405
406
|
isDaySelected
|
|
406
407
|
} = dayOwnerState;
|
|
407
|
-
const isSelectedStartDate = isStartOfRange(
|
|
408
|
-
const isSelectedEndDate = isEndOfRange(
|
|
408
|
+
const isSelectedStartDate = isStartOfRange(adapter, day, valueDayRange);
|
|
409
|
+
const isSelectedEndDate = isEndOfRange(adapter, day, valueDayRange);
|
|
409
410
|
const shouldInitDragging = !shouldDisableDragEditing && valueDayRange[0] && valueDayRange[1];
|
|
410
411
|
const isElementDraggable = shouldInitDragging && (isSelectedStartDate || isSelectedEndDate);
|
|
411
412
|
let datePosition;
|
|
@@ -414,15 +415,15 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
414
415
|
} else if (isSelectedEndDate) {
|
|
415
416
|
datePosition = 'end';
|
|
416
417
|
}
|
|
417
|
-
const isStartOfHighlighting = isDragging ? isStartOfRange(
|
|
418
|
-
const isEndOfHighlighting = isDragging ? isEndOfRange(
|
|
418
|
+
const isStartOfHighlighting = isDragging ? isStartOfRange(adapter, day, draggingRange) : isSelectedStartDate;
|
|
419
|
+
const isEndOfHighlighting = isDragging ? isEndOfRange(adapter, day, draggingRange) : isSelectedEndDate;
|
|
419
420
|
return _extends({
|
|
420
|
-
isPreviewing: shouldHavePreview ? isWithinRange(
|
|
421
|
-
isStartOfPreviewing: shouldHavePreview ? isStartOfRange(
|
|
422
|
-
isEndOfPreviewing: shouldHavePreview ? isEndOfRange(
|
|
423
|
-
isHighlighting: isWithinRange(
|
|
421
|
+
isPreviewing: shouldHavePreview ? isWithinRange(adapter, day, previewingRange) : false,
|
|
422
|
+
isStartOfPreviewing: shouldHavePreview ? isStartOfRange(adapter, day, previewingRange) : false,
|
|
423
|
+
isEndOfPreviewing: shouldHavePreview ? isEndOfRange(adapter, day, previewingRange) : false,
|
|
424
|
+
isHighlighting: isWithinRange(adapter, day, isDragging ? draggingRange : valueDayRange),
|
|
424
425
|
isStartOfHighlighting,
|
|
425
|
-
isEndOfHighlighting: isDragging ? isEndOfRange(
|
|
426
|
+
isEndOfHighlighting: isDragging ? isEndOfRange(adapter, day, draggingRange) : isSelectedEndDate,
|
|
426
427
|
onMouseEnter: shouldHavePreview ? handleDayMouseEnter : undefined,
|
|
427
428
|
// apply selected styling to the dragging start or end day
|
|
428
429
|
isVisuallySelected: isDaySelected || isDragging && (isStartOfHighlighting || isEndOfHighlighting),
|
|
@@ -441,11 +442,11 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
441
442
|
warnOnce(['MUI X: The `currentMonthCalendarPosition` prop must be an integer between `1` and the amount of calendars rendered.', 'For example if you have 2 calendars rendered, it should be equal to either 1 or 2.']);
|
|
442
443
|
}
|
|
443
444
|
}
|
|
444
|
-
const firstMonth =
|
|
445
|
+
const firstMonth = adapter.addMonths(calendarState.currentMonth, 1 - currentMonthCalendarPosition);
|
|
445
446
|
return Array.from({
|
|
446
447
|
length: calendars
|
|
447
|
-
}).map((_, index) =>
|
|
448
|
-
}, [
|
|
448
|
+
}).map((_, index) => adapter.addMonths(firstMonth, index));
|
|
449
|
+
}, [adapter, calendarState.currentMonth, calendars, currentMonthCalendarPosition]);
|
|
449
450
|
const hasFocus = focusedView !== null;
|
|
450
451
|
const prevOpenViewRef = React.useRef(view);
|
|
451
452
|
React.useEffect(() => {
|
|
@@ -679,7 +680,7 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
|
|
|
679
680
|
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
680
681
|
* @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`.
|
|
681
682
|
*/
|
|
682
|
-
referenceDate: PropTypes.object,
|
|
683
|
+
referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object.isRequired), PropTypes.object]),
|
|
683
684
|
/**
|
|
684
685
|
* Component rendered on the "day" view when `props.loading` is true.
|
|
685
686
|
* @returns {React.ReactNode} The node to render when loading.
|
|
@@ -73,7 +73,7 @@ export interface DateRangeCalendarProps extends ExportedDateRangeCalendarProps,
|
|
|
73
73
|
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
74
74
|
* @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`.
|
|
75
75
|
*/
|
|
76
|
-
referenceDate?: PickerValidDate;
|
|
76
|
+
referenceDate?: PickerValidDate | [PickerValidDate, PickerValidDate];
|
|
77
77
|
/**
|
|
78
78
|
* The number of calendars to render.
|
|
79
79
|
* @default 2
|
|
@@ -4,7 +4,7 @@ import { PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
|
4
4
|
import { RangePosition } from "../models/index.js";
|
|
5
5
|
interface UseDragRangeParams {
|
|
6
6
|
disableDragEditing?: boolean;
|
|
7
|
-
|
|
7
|
+
adapter: MuiPickersAdapter;
|
|
8
8
|
setRangeDragDay: (value: PickerValidDate | null) => void;
|
|
9
9
|
setIsDragging: (value: boolean) => void;
|
|
10
10
|
isDragging: boolean;
|
|
@@ -31,7 +31,7 @@ interface UseDragRangeResponse extends UseDragRangeEvents {
|
|
|
31
31
|
}
|
|
32
32
|
export declare const useDragRange: ({
|
|
33
33
|
disableDragEditing,
|
|
34
|
-
|
|
34
|
+
adapter,
|
|
35
35
|
onDatePositionChange,
|
|
36
36
|
onDrop,
|
|
37
37
|
dateRange,
|
|
@@ -4,13 +4,13 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
6
6
|
import { isEndOfRange, isStartOfRange } from "../internals/utils/date-utils.js";
|
|
7
|
-
const resolveDateFromTarget = (target,
|
|
7
|
+
const resolveDateFromTarget = (target, adapter, timezone) => {
|
|
8
8
|
const timestampString = target.dataset.timestamp;
|
|
9
9
|
if (!timestampString) {
|
|
10
10
|
return null;
|
|
11
11
|
}
|
|
12
12
|
const timestamp = +timestampString;
|
|
13
|
-
return
|
|
13
|
+
return adapter.date(new Date(timestamp).toISOString(), timezone);
|
|
14
14
|
};
|
|
15
15
|
const isSameAsDraggingDate = event => {
|
|
16
16
|
const timestampString = event.target.dataset.timestamp;
|
|
@@ -43,7 +43,7 @@ const resolveElementFromTouch = (event, ignoreTouchTarget) => {
|
|
|
43
43
|
return null;
|
|
44
44
|
};
|
|
45
45
|
const useDragRangeEvents = ({
|
|
46
|
-
|
|
46
|
+
adapter,
|
|
47
47
|
setRangeDragDay,
|
|
48
48
|
setIsDragging,
|
|
49
49
|
isDragging,
|
|
@@ -64,12 +64,12 @@ const useDragRangeEvents = ({
|
|
|
64
64
|
return false;
|
|
65
65
|
}
|
|
66
66
|
const shouldInitDragging = !disableDragEditing && !!dateRange[0] && !!dateRange[1];
|
|
67
|
-
const isSelectedStartDate = isStartOfRange(
|
|
68
|
-
const isSelectedEndDate = isEndOfRange(
|
|
67
|
+
const isSelectedStartDate = isStartOfRange(adapter, day, dateRange);
|
|
68
|
+
const isSelectedEndDate = isEndOfRange(adapter, day, dateRange);
|
|
69
69
|
return shouldInitDragging && (isSelectedStartDate || isSelectedEndDate);
|
|
70
70
|
};
|
|
71
71
|
const handleDragStart = useEventCallback(event => {
|
|
72
|
-
const newDate = resolveDateFromTarget(event.target,
|
|
72
|
+
const newDate = resolveDateFromTarget(event.target, adapter, timezone);
|
|
73
73
|
if (!isElementDraggable(newDate)) {
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
@@ -93,7 +93,7 @@ const useDragRangeEvents = ({
|
|
|
93
93
|
if (!target) {
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
|
-
const newDate = resolveDateFromTarget(target,
|
|
96
|
+
const newDate = resolveDateFromTarget(target, adapter, timezone);
|
|
97
97
|
if (!isElementDraggable(newDate)) {
|
|
98
98
|
return;
|
|
99
99
|
}
|
|
@@ -106,14 +106,14 @@ const useDragRangeEvents = ({
|
|
|
106
106
|
event.preventDefault();
|
|
107
107
|
event.stopPropagation();
|
|
108
108
|
event.dataTransfer.dropEffect = 'move';
|
|
109
|
-
setRangeDragDay(resolveDateFromTarget(event.target,
|
|
109
|
+
setRangeDragDay(resolveDateFromTarget(event.target, adapter, timezone));
|
|
110
110
|
});
|
|
111
111
|
const handleTouchMove = useEventCallback(event => {
|
|
112
112
|
const target = resolveElementFromTouch(event);
|
|
113
113
|
if (!target) {
|
|
114
114
|
return;
|
|
115
115
|
}
|
|
116
|
-
const newDate = resolveDateFromTarget(target,
|
|
116
|
+
const newDate = resolveDateFromTarget(target, adapter, timezone);
|
|
117
117
|
if (newDate) {
|
|
118
118
|
setRangeDragDay(newDate);
|
|
119
119
|
}
|
|
@@ -160,7 +160,7 @@ const useDragRangeEvents = ({
|
|
|
160
160
|
|
|
161
161
|
// make sure the focused element is the element where touch ended
|
|
162
162
|
target.focus();
|
|
163
|
-
const newDate = resolveDateFromTarget(target,
|
|
163
|
+
const newDate = resolveDateFromTarget(target, adapter, timezone);
|
|
164
164
|
if (newDate) {
|
|
165
165
|
onDrop(newDate);
|
|
166
166
|
}
|
|
@@ -187,7 +187,7 @@ const useDragRangeEvents = ({
|
|
|
187
187
|
if (isSameAsDraggingDate(event)) {
|
|
188
188
|
return;
|
|
189
189
|
}
|
|
190
|
-
const newDate = resolveDateFromTarget(event.target,
|
|
190
|
+
const newDate = resolveDateFromTarget(event.target, adapter, timezone);
|
|
191
191
|
if (newDate) {
|
|
192
192
|
onDrop(newDate);
|
|
193
193
|
}
|
|
@@ -206,7 +206,7 @@ const useDragRangeEvents = ({
|
|
|
206
206
|
};
|
|
207
207
|
export const useDragRange = ({
|
|
208
208
|
disableDragEditing,
|
|
209
|
-
|
|
209
|
+
adapter,
|
|
210
210
|
onDatePositionChange,
|
|
211
211
|
onDrop,
|
|
212
212
|
dateRange,
|
|
@@ -215,24 +215,24 @@ export const useDragRange = ({
|
|
|
215
215
|
const [isDragging, setIsDragging] = React.useState(false);
|
|
216
216
|
const [rangeDragDay, setRangeDragDay] = React.useState(null);
|
|
217
217
|
const handleRangeDragDayChange = useEventCallback(newValue => {
|
|
218
|
-
if (!
|
|
218
|
+
if (!adapter.isEqual(newValue, rangeDragDay)) {
|
|
219
219
|
setRangeDragDay(newValue);
|
|
220
220
|
}
|
|
221
221
|
});
|
|
222
222
|
const draggingDatePosition = React.useMemo(() => {
|
|
223
223
|
const [start, end] = dateRange;
|
|
224
224
|
if (rangeDragDay) {
|
|
225
|
-
if (start &&
|
|
225
|
+
if (start && adapter.isBefore(rangeDragDay, start)) {
|
|
226
226
|
return 'start';
|
|
227
227
|
}
|
|
228
|
-
if (end &&
|
|
228
|
+
if (end && adapter.isAfter(rangeDragDay, end)) {
|
|
229
229
|
return 'end';
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
return null;
|
|
233
|
-
}, [dateRange, rangeDragDay,
|
|
233
|
+
}, [dateRange, rangeDragDay, adapter]);
|
|
234
234
|
const dragRangeEvents = useDragRangeEvents({
|
|
235
|
-
|
|
235
|
+
adapter,
|
|
236
236
|
onDatePositionChange,
|
|
237
237
|
onDrop,
|
|
238
238
|
setIsDragging,
|
|
@@ -268,7 +268,7 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
268
268
|
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
269
269
|
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
270
270
|
*/
|
|
271
|
-
referenceDate: PropTypes.object,
|
|
271
|
+
referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
|
|
272
272
|
/**
|
|
273
273
|
* Component rendered on the "day" view when `props.loading` is true.
|
|
274
274
|
* @returns {React.ReactNode} The node to render when loading.
|
|
@@ -9,8 +9,8 @@ import clsx from 'clsx';
|
|
|
9
9
|
import Typography from '@mui/material/Typography';
|
|
10
10
|
import { styled, useThemeProps } from '@mui/material/styles';
|
|
11
11
|
import composeClasses from '@mui/utils/composeClasses';
|
|
12
|
-
import { PickersToolbar, PickersToolbarButton,
|
|
13
|
-
import { usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
12
|
+
import { PickersToolbar, PickersToolbarButton, useToolbarOwnerState } from '@mui/x-date-pickers/internals';
|
|
13
|
+
import { usePickerAdapter, usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
|
|
14
14
|
import { getDateRangePickerToolbarUtilityClass } from "./dateRangePickerToolbarClasses.js";
|
|
15
15
|
import { usePickerRangePositionContext } from "../hooks/index.js";
|
|
16
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -42,7 +42,7 @@ const DateRangePickerToolbarContainer = styled('div', {
|
|
|
42
42
|
* - [DateRangePickerToolbar API](https://mui.com/x/api/date-pickers/date-range-picker-toolbar/)
|
|
43
43
|
*/
|
|
44
44
|
const DateRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateRangePickerToolbar(inProps, ref) {
|
|
45
|
-
const
|
|
45
|
+
const adapter = usePickerAdapter();
|
|
46
46
|
const props = useThemeProps({
|
|
47
47
|
props: inProps,
|
|
48
48
|
name: 'MuiDateRangePickerToolbar'
|
|
@@ -65,12 +65,12 @@ const DateRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateRangeP
|
|
|
65
65
|
const classes = useUtilityClasses(classesProp);
|
|
66
66
|
|
|
67
67
|
// This can't be a default value when spreading because it breaks the API generation.
|
|
68
|
-
const toolbarFormat = toolbarFormatProp ??
|
|
68
|
+
const toolbarFormat = toolbarFormatProp ?? adapter.formats.shortDate;
|
|
69
69
|
const formatDate = (date, fallback) => {
|
|
70
|
-
if (!
|
|
70
|
+
if (!adapter.isValid(date)) {
|
|
71
71
|
return fallback;
|
|
72
72
|
}
|
|
73
|
-
return
|
|
73
|
+
return adapter.formatByString(date, toolbarFormat);
|
|
74
74
|
};
|
|
75
75
|
return /*#__PURE__*/_jsx(DateRangePickerToolbarRoot, _extends({}, other, {
|
|
76
76
|
toolbarTitle: translations.dateRangePickerToolbarTitle,
|
|
@@ -9,8 +9,9 @@ import clsx from 'clsx';
|
|
|
9
9
|
import { useLicenseVerifier } from '@mui/x-license';
|
|
10
10
|
import { alpha, styled, useThemeProps } from '@mui/material/styles';
|
|
11
11
|
import composeClasses from '@mui/utils/composeClasses';
|
|
12
|
-
import {
|
|
12
|
+
import { usePickerDayOwnerState } from '@mui/x-date-pickers/internals';
|
|
13
13
|
import { PickersDay } from '@mui/x-date-pickers/PickersDay';
|
|
14
|
+
import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
|
|
14
15
|
import { getDateRangePickerDayUtilityClass, dateRangePickerDayClasses } from "./dateRangePickerDayClasses.js";
|
|
15
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
17
|
const useUtilityClasses = (classes, ownerState) => {
|
|
@@ -227,8 +228,8 @@ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePi
|
|
|
227
228
|
showDaysOutsideCurrentMonth
|
|
228
229
|
} = props,
|
|
229
230
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
230
|
-
useLicenseVerifier('x-date-pickers-pro', "
|
|
231
|
-
const
|
|
231
|
+
useLicenseVerifier('x-date-pickers-pro', "MTc1MTU4MDAwMDAwMA==");
|
|
232
|
+
const adapter = usePickerAdapter();
|
|
232
233
|
const shouldRenderHighlight = isHighlighting && !outsideCurrentMonth;
|
|
233
234
|
const shouldRenderPreview = isPreviewing && !outsideCurrentMonth;
|
|
234
235
|
const pickersDayOwnerState = usePickerDayOwnerState({
|
|
@@ -252,8 +253,8 @@ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePi
|
|
|
252
253
|
isDayPreviewEnd: isEndOfPreviewing,
|
|
253
254
|
isDayInsidePreview: isPreviewing && !isStartOfPreviewing && !isEndOfPreviewing,
|
|
254
255
|
// Properties specific to the MUI implementation (some might be removed in the next major)
|
|
255
|
-
isDayStartOfMonth:
|
|
256
|
-
isDayEndOfMonth:
|
|
256
|
+
isDayStartOfMonth: adapter.isSameDay(day, adapter.startOfMonth(day)),
|
|
257
|
+
isDayEndOfMonth: adapter.isSameDay(day, adapter.endOfMonth(day)),
|
|
257
258
|
isDayFirstVisibleCell: isFirstVisibleCell,
|
|
258
259
|
isDayLastVisibleCell: isLastVisibleCell,
|
|
259
260
|
isDayFillerCell: outsideCurrentMonth && !showDaysOutsideCurrentMonth
|