@mui/x-date-pickers-pro 5.0.0-alpha.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.
Files changed (137) hide show
  1. package/CHANGELOG.md +3785 -0
  2. package/DateRangePicker/DateRangePicker.d.ts +66 -0
  3. package/DateRangePicker/DateRangePicker.js +519 -0
  4. package/DateRangePicker/DateRangePickerInput.d.ts +37 -0
  5. package/DateRangePicker/DateRangePickerInput.js +128 -0
  6. package/DateRangePicker/DateRangePickerToolbar.d.ts +15 -0
  7. package/DateRangePicker/DateRangePickerToolbar.js +59 -0
  8. package/DateRangePicker/DateRangePickerView.d.ts +41 -0
  9. package/DateRangePicker/DateRangePickerView.js +179 -0
  10. package/DateRangePicker/DateRangePickerViewDesktop.d.ts +30 -0
  11. package/DateRangePicker/DateRangePickerViewDesktop.js +154 -0
  12. package/DateRangePicker/DateRangePickerViewMobile.d.ts +15 -0
  13. package/DateRangePicker/DateRangePickerViewMobile.js +60 -0
  14. package/DateRangePicker/date-range-manager.d.ts +14 -0
  15. package/DateRangePicker/date-range-manager.js +43 -0
  16. package/DateRangePicker/index.d.ts +3 -0
  17. package/DateRangePicker/index.js +1 -0
  18. package/DateRangePicker/package.json +6 -0
  19. package/DateRangePickerDay/DateRangePickerDay.d.ts +52 -0
  20. package/DateRangePickerDay/DateRangePickerDay.js +290 -0
  21. package/DateRangePickerDay/dateRangePickerDayClasses.d.ts +29 -0
  22. package/DateRangePickerDay/dateRangePickerDayClasses.js +5 -0
  23. package/DateRangePickerDay/index.d.ts +4 -0
  24. package/DateRangePickerDay/index.js +2 -0
  25. package/DateRangePickerDay/package.json +6 -0
  26. package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +66 -0
  27. package/DesktopDateRangePicker/DesktopDateRangePicker.js +485 -0
  28. package/DesktopDateRangePicker/index.d.ts +2 -0
  29. package/DesktopDateRangePicker/index.js +1 -0
  30. package/DesktopDateRangePicker/package.json +6 -0
  31. package/MobileDateRangePicker/MobileDateRangePicker.d.ts +66 -0
  32. package/MobileDateRangePicker/MobileDateRangePicker.js +495 -0
  33. package/MobileDateRangePicker/index.d.ts +2 -0
  34. package/MobileDateRangePicker/index.js +1 -0
  35. package/MobileDateRangePicker/package.json +6 -0
  36. package/README.md +29 -0
  37. package/StaticDateRangePicker/StaticDateRangePicker.d.ts +69 -0
  38. package/StaticDateRangePicker/StaticDateRangePicker.js +455 -0
  39. package/StaticDateRangePicker/index.d.ts +2 -0
  40. package/StaticDateRangePicker/index.js +1 -0
  41. package/StaticDateRangePicker/package.json +6 -0
  42. package/index.d.ts +7 -0
  43. package/index.js +12 -0
  44. package/internal/hooks/validation/useDateRangeValidation.d.ts +12 -0
  45. package/internal/hooks/validation/useDateRangeValidation.js +27 -0
  46. package/internal/models/dateRange.d.ts +8 -0
  47. package/internal/models/dateRange.js +1 -0
  48. package/internal/models/index.d.ts +1 -0
  49. package/internal/models/index.js +1 -0
  50. package/internal/utils/date-utils.d.ts +7 -0
  51. package/internal/utils/date-utils.js +19 -0
  52. package/internal/utils/releaseInfo.d.ts +1 -0
  53. package/internal/utils/releaseInfo.js +15 -0
  54. package/internal/utils/utils.d.ts +1 -0
  55. package/internal/utils/utils.js +1 -0
  56. package/legacy/DateRangePicker/DateRangePicker.js +528 -0
  57. package/legacy/DateRangePicker/DateRangePickerInput.js +141 -0
  58. package/legacy/DateRangePicker/DateRangePickerToolbar.js +66 -0
  59. package/legacy/DateRangePicker/DateRangePickerView.js +184 -0
  60. package/legacy/DateRangePicker/DateRangePickerViewDesktop.js +172 -0
  61. package/legacy/DateRangePicker/DateRangePickerViewMobile.js +63 -0
  62. package/legacy/DateRangePicker/date-range-manager.js +51 -0
  63. package/legacy/DateRangePicker/index.js +1 -0
  64. package/legacy/DateRangePickerDay/DateRangePickerDay.js +296 -0
  65. package/legacy/DateRangePickerDay/dateRangePickerDayClasses.js +5 -0
  66. package/legacy/DateRangePickerDay/index.js +2 -0
  67. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +494 -0
  68. package/legacy/DesktopDateRangePicker/index.js +1 -0
  69. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +504 -0
  70. package/legacy/MobileDateRangePicker/index.js +1 -0
  71. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +465 -0
  72. package/legacy/StaticDateRangePicker/index.js +1 -0
  73. package/legacy/index.js +12 -0
  74. package/legacy/internal/hooks/validation/useDateRangeValidation.js +33 -0
  75. package/legacy/internal/models/dateRange.js +1 -0
  76. package/legacy/internal/models/index.js +1 -0
  77. package/legacy/internal/utils/date-utils.js +22 -0
  78. package/legacy/internal/utils/releaseInfo.js +15 -0
  79. package/legacy/internal/utils/utils.js +1 -0
  80. package/legacy/themeAugmentation/index.js +3 -0
  81. package/modern/DateRangePicker/DateRangePicker.js +519 -0
  82. package/modern/DateRangePicker/DateRangePickerInput.js +124 -0
  83. package/modern/DateRangePicker/DateRangePickerToolbar.js +59 -0
  84. package/modern/DateRangePicker/DateRangePickerView.js +179 -0
  85. package/modern/DateRangePicker/DateRangePickerViewDesktop.js +154 -0
  86. package/modern/DateRangePicker/DateRangePickerViewMobile.js +60 -0
  87. package/modern/DateRangePicker/date-range-manager.js +43 -0
  88. package/modern/DateRangePicker/index.js +1 -0
  89. package/modern/DateRangePickerDay/DateRangePickerDay.js +290 -0
  90. package/modern/DateRangePickerDay/dateRangePickerDayClasses.js +5 -0
  91. package/modern/DateRangePickerDay/index.js +2 -0
  92. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +485 -0
  93. package/modern/DesktopDateRangePicker/index.js +1 -0
  94. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +495 -0
  95. package/modern/MobileDateRangePicker/index.js +1 -0
  96. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +455 -0
  97. package/modern/StaticDateRangePicker/index.js +1 -0
  98. package/modern/index.js +12 -0
  99. package/modern/internal/hooks/validation/useDateRangeValidation.js +27 -0
  100. package/modern/internal/models/dateRange.js +1 -0
  101. package/modern/internal/models/index.js +1 -0
  102. package/modern/internal/utils/date-utils.js +19 -0
  103. package/modern/internal/utils/releaseInfo.js +15 -0
  104. package/modern/internal/utils/utils.js +1 -0
  105. package/modern/themeAugmentation/index.js +3 -0
  106. package/node/DateRangePicker/DateRangePicker.js +540 -0
  107. package/node/DateRangePicker/DateRangePickerInput.js +148 -0
  108. package/node/DateRangePicker/DateRangePickerToolbar.js +79 -0
  109. package/node/DateRangePicker/DateRangePickerView.js +206 -0
  110. package/node/DateRangePicker/DateRangePickerViewDesktop.js +175 -0
  111. package/node/DateRangePicker/DateRangePickerViewMobile.js +80 -0
  112. package/node/DateRangePicker/date-range-manager.js +52 -0
  113. package/node/DateRangePicker/index.js +13 -0
  114. package/node/DateRangePickerDay/DateRangePickerDay.js +315 -0
  115. package/node/DateRangePickerDay/dateRangePickerDayClasses.js +16 -0
  116. package/node/DateRangePickerDay/index.js +27 -0
  117. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +506 -0
  118. package/node/DesktopDateRangePicker/index.js +13 -0
  119. package/node/MobileDateRangePicker/MobileDateRangePicker.js +516 -0
  120. package/node/MobileDateRangePicker/index.js +13 -0
  121. package/node/StaticDateRangePicker/StaticDateRangePicker.js +475 -0
  122. package/node/StaticDateRangePicker/index.js +13 -0
  123. package/node/index.js +105 -0
  124. package/node/internal/hooks/validation/useDateRangeValidation.js +40 -0
  125. package/node/internal/models/dateRange.js +5 -0
  126. package/node/internal/models/index.js +18 -0
  127. package/node/internal/utils/date-utils.js +40 -0
  128. package/node/internal/utils/releaseInfo.js +25 -0
  129. package/node/internal/utils/utils.js +10 -0
  130. package/node/themeAugmentation/index.js +44 -0
  131. package/package.json +77 -0
  132. package/themeAugmentation/components.d.ts +13 -0
  133. package/themeAugmentation/index.d.ts +3 -0
  134. package/themeAugmentation/index.js +3 -0
  135. package/themeAugmentation/overrides.d.ts +13 -0
  136. package/themeAugmentation/package.json +6 -0
  137. package/themeAugmentation/props.d.ts +12 -0
@@ -0,0 +1,179 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["calendars", "className", "currentlySelectingRangeEnd", "date", "DateInputProps", "defaultCalendarMonth", "disableAutoMonthSwitching", "disableFuture", "disableHighlightToday", "disablePast", "endText", "isMobileKeyboardViewOpen", "maxDate", "minDate", "onDateChange", "onMonthChange", "open", "reduceAnimations", "setCurrentlySelectingRangeEnd", "shouldDisableDate", "showToolbar", "startText", "toggleMobileKeyboardView", "toolbarFormat", "toolbarTitle"];
4
+ import * as React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { Watermark } from '@mui/x-license-pro';
7
+ import { useUtils, WrapperVariantContext, MobileKeyboardInputView, defaultReduceAnimations, useCalendarState } from '@mui/x-date-pickers/internals';
8
+ import { isRangeValid } from '../internal/utils/date-utils';
9
+ import { calculateRangeChange } from './date-range-manager';
10
+ import { DateRangePickerToolbar } from './DateRangePickerToolbar';
11
+ import { DateRangePickerViewMobile } from './DateRangePickerViewMobile';
12
+ import { DateRangePickerInput } from './DateRangePickerInput';
13
+ import { DateRangePickerViewDesktop } from './DateRangePickerViewDesktop';
14
+ import { getReleaseInfo } from '../internal/utils/releaseInfo';
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ import { jsxs as _jsxs } from "react/jsx-runtime";
17
+ const releaseInfo = getReleaseInfo();
18
+
19
+ /**
20
+ * @ignore - internal component.
21
+ */
22
+ export function DateRangePickerView(props) {
23
+ const {
24
+ calendars,
25
+ className,
26
+ currentlySelectingRangeEnd,
27
+ date,
28
+ DateInputProps,
29
+ defaultCalendarMonth,
30
+ disableAutoMonthSwitching = false,
31
+ disableFuture,
32
+ disableHighlightToday,
33
+ disablePast,
34
+ endText,
35
+ isMobileKeyboardViewOpen,
36
+ maxDate,
37
+ minDate,
38
+ onDateChange,
39
+ onMonthChange,
40
+ open,
41
+ reduceAnimations = defaultReduceAnimations,
42
+ setCurrentlySelectingRangeEnd,
43
+ shouldDisableDate,
44
+ showToolbar,
45
+ startText,
46
+ toggleMobileKeyboardView,
47
+ toolbarFormat,
48
+ toolbarTitle
49
+ } = props,
50
+ other = _objectWithoutPropertiesLoose(props, _excluded);
51
+
52
+ const utils = useUtils();
53
+ const wrapperVariant = React.useContext(WrapperVariantContext);
54
+ const [start, end] = date;
55
+ const {
56
+ changeMonth,
57
+ calendarState,
58
+ isDateDisabled,
59
+ onMonthSwitchingAnimationEnd,
60
+ changeFocusedDay
61
+ } = useCalendarState({
62
+ date: start || end,
63
+ defaultCalendarMonth,
64
+ disableFuture,
65
+ disablePast,
66
+ disableSwitchToMonthOnDayFocus: true,
67
+ maxDate,
68
+ minDate,
69
+ onMonthChange,
70
+ reduceAnimations,
71
+ shouldDisableDate
72
+ });
73
+ const toShowToolbar = showToolbar ?? wrapperVariant !== 'desktop';
74
+
75
+ const scrollToDayIfNeeded = day => {
76
+ if (!day || !utils.isValid(day) || isDateDisabled(day)) {
77
+ return;
78
+ }
79
+
80
+ const currentlySelectedDate = currentlySelectingRangeEnd === 'start' ? start : end;
81
+
82
+ if (currentlySelectedDate === null) {
83
+ // do not scroll if one of ages is not selected
84
+ return;
85
+ }
86
+
87
+ const displayingMonthRange = wrapperVariant === 'mobile' ? 0 : calendars - 1;
88
+ const currentMonthNumber = utils.getMonth(calendarState.currentMonth);
89
+ const requestedMonthNumber = utils.getMonth(day);
90
+
91
+ if (!utils.isSameYear(calendarState.currentMonth, day) || requestedMonthNumber < currentMonthNumber || requestedMonthNumber > currentMonthNumber + displayingMonthRange) {
92
+ const newMonth = currentlySelectingRangeEnd === 'start' ? currentlySelectedDate : // If need to focus end, scroll to the state when "end" is displaying in the last calendar
93
+ utils.addMonths(currentlySelectedDate, -displayingMonthRange);
94
+ changeMonth(newMonth);
95
+ }
96
+ };
97
+
98
+ React.useEffect(() => {
99
+ if (disableAutoMonthSwitching || !open) {
100
+ return;
101
+ }
102
+
103
+ scrollToDayIfNeeded(currentlySelectingRangeEnd === 'start' ? start : end);
104
+ }, [currentlySelectingRangeEnd, date]); // eslint-disable-line
105
+
106
+ const handleChange = React.useCallback(newDate => {
107
+ const {
108
+ nextSelection,
109
+ newRange
110
+ } = calculateRangeChange({
111
+ newDate,
112
+ utils,
113
+ range: date,
114
+ currentlySelectingRangeEnd
115
+ });
116
+ setCurrentlySelectingRangeEnd(nextSelection);
117
+ const isFullRangeSelected = currentlySelectingRangeEnd === 'end' && isRangeValid(utils, newRange);
118
+ onDateChange(newRange, wrapperVariant, isFullRangeSelected ? 'finish' : 'partial');
119
+ }, [currentlySelectingRangeEnd, date, onDateChange, setCurrentlySelectingRangeEnd, utils, wrapperVariant]);
120
+
121
+ const renderView = () => {
122
+ const sharedCalendarProps = _extends({
123
+ date,
124
+ isDateDisabled,
125
+ changeFocusedDay,
126
+ onChange: handleChange,
127
+ reduceAnimations,
128
+ disableHighlightToday,
129
+ onMonthSwitchingAnimationEnd,
130
+ changeMonth,
131
+ currentlySelectingRangeEnd,
132
+ disableFuture,
133
+ disablePast,
134
+ minDate,
135
+ maxDate
136
+ }, calendarState, other);
137
+
138
+ switch (wrapperVariant) {
139
+ case 'desktop':
140
+ {
141
+ return /*#__PURE__*/_jsx(DateRangePickerViewDesktop, _extends({
142
+ calendars: calendars
143
+ }, sharedCalendarProps));
144
+ }
145
+
146
+ default:
147
+ {
148
+ return /*#__PURE__*/_jsx(DateRangePickerViewMobile, _extends({}, sharedCalendarProps));
149
+ }
150
+ }
151
+ };
152
+
153
+ return /*#__PURE__*/_jsxs("div", {
154
+ className: className,
155
+ children: [/*#__PURE__*/_jsx(Watermark, {
156
+ packageName: "x-date-pickers-pro",
157
+ releaseInfo: releaseInfo
158
+ }), toShowToolbar && /*#__PURE__*/_jsx(DateRangePickerToolbar, {
159
+ date: date,
160
+ isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,
161
+ toggleMobileKeyboardView: toggleMobileKeyboardView,
162
+ currentlySelectingRangeEnd: currentlySelectingRangeEnd,
163
+ setCurrentlySelectingRangeEnd: setCurrentlySelectingRangeEnd,
164
+ startText: startText,
165
+ endText: endText,
166
+ toolbarTitle: toolbarTitle,
167
+ toolbarFormat: toolbarFormat
168
+ }), isMobileKeyboardViewOpen ? /*#__PURE__*/_jsx(MobileKeyboardInputView, {
169
+ children: /*#__PURE__*/_jsx(DateRangePickerInput, _extends({
170
+ disableOpenPicker: true,
171
+ ignoreInvalidInputs: true
172
+ }, DateInputProps))
173
+ }) : renderView()]
174
+ });
175
+ }
176
+ process.env.NODE_ENV !== "production" ? DateRangePickerView.propTypes = {
177
+ calendars: PropTypes.oneOf([1, 2, 3]),
178
+ disableAutoMonthSwitching: PropTypes.bool
179
+ } : void 0;
@@ -0,0 +1,154 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["calendars", "changeMonth", "components", "componentsProps", "currentlySelectingRangeEnd", "currentMonth", "date", "disableFuture", "disablePast", "leftArrowButtonText", "maxDate", "minDate", "onChange", "renderDay", "rightArrowButtonText"];
4
+ import * as React from 'react';
5
+ import { styled } from '@mui/material/styles';
6
+ import { useDefaultDates, useUtils, PickersArrowSwitcher, usePreviousMonthDisabled, useNextMonthDisabled, DayPicker } from '@mui/x-date-pickers/internals';
7
+ import { calculateRangePreview } from './date-range-manager';
8
+ import { DateRangePickerDay } from '../DateRangePickerDay';
9
+ import { isWithinRange, isStartOfRange, isEndOfRange } from '../internal/utils/date-utils';
10
+ import { doNothing } from '../internal/utils/utils';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { createElement as _createElement } from "react";
13
+ import { jsxs as _jsxs } from "react/jsx-runtime";
14
+ const DateRangePickerViewDesktopRoot = styled('div')({
15
+ display: 'flex',
16
+ flexDirection: 'row'
17
+ });
18
+ const DateRangePickerViewDesktopContainer = styled('div')(({
19
+ theme
20
+ }) => ({
21
+ '&:not(:last-of-type)': {
22
+ borderRight: `2px solid ${theme.palette.divider}`
23
+ }
24
+ }));
25
+ const DateRangePickerViewDesktopCalendar = styled(DayPicker)({
26
+ minWidth: 312,
27
+ minHeight: 288
28
+ });
29
+ const DateRangePickerViewDesktopArrowSwitcher = styled(PickersArrowSwitcher)({
30
+ padding: '16px 16px 8px 16px',
31
+ display: 'flex',
32
+ alignItems: 'center',
33
+ justifyContent: 'space-between'
34
+ });
35
+
36
+ function getCalendarsArray(calendars) {
37
+ switch (calendars) {
38
+ case 1:
39
+ return [0];
40
+
41
+ case 2:
42
+ return [0, 0];
43
+
44
+ case 3:
45
+ return [0, 0, 0];
46
+ // this will not work in IE11, but allows to support any amount of calendars
47
+
48
+ default:
49
+ return new Array(calendars).fill(0);
50
+ }
51
+ }
52
+ /**
53
+ * @ignore - internal component.
54
+ */
55
+
56
+
57
+ export function DateRangePickerViewDesktop(props) {
58
+ const {
59
+ calendars,
60
+ changeMonth,
61
+ components,
62
+ componentsProps,
63
+ currentlySelectingRangeEnd,
64
+ currentMonth,
65
+ date,
66
+ disableFuture,
67
+ disablePast,
68
+ leftArrowButtonText = 'Previous month',
69
+ maxDate: maxDateProp,
70
+ minDate: minDateProp,
71
+ onChange,
72
+ renderDay = (_, dateRangeProps) => /*#__PURE__*/_jsx(DateRangePickerDay, _extends({}, dateRangeProps)),
73
+ rightArrowButtonText = 'Next month'
74
+ } = props,
75
+ other = _objectWithoutPropertiesLoose(props, _excluded);
76
+
77
+ const utils = useUtils();
78
+ const defaultDates = useDefaultDates();
79
+ const minDate = minDateProp ?? defaultDates.minDate;
80
+ const maxDate = maxDateProp ?? defaultDates.maxDate;
81
+ const [rangePreviewDay, setRangePreviewDay] = React.useState(null);
82
+ const isNextMonthDisabled = useNextMonthDisabled(currentMonth, {
83
+ disableFuture,
84
+ maxDate
85
+ });
86
+ const isPreviousMonthDisabled = usePreviousMonthDisabled(currentMonth, {
87
+ disablePast,
88
+ minDate
89
+ });
90
+ const previewingRange = calculateRangePreview({
91
+ utils,
92
+ range: date,
93
+ newDate: rangePreviewDay,
94
+ currentlySelectingRangeEnd
95
+ });
96
+ const handleDayChange = React.useCallback(day => {
97
+ setRangePreviewDay(null);
98
+ onChange(day);
99
+ }, [onChange]);
100
+
101
+ const handlePreviewDayChange = newPreviewRequest => {
102
+ if (!isWithinRange(utils, newPreviewRequest, date)) {
103
+ setRangePreviewDay(newPreviewRequest);
104
+ } else {
105
+ setRangePreviewDay(null);
106
+ }
107
+ };
108
+
109
+ const CalendarTransitionProps = React.useMemo(() => ({
110
+ onMouseLeave: () => setRangePreviewDay(null)
111
+ }), []);
112
+ const selectNextMonth = React.useCallback(() => {
113
+ changeMonth(utils.getNextMonth(currentMonth));
114
+ }, [changeMonth, currentMonth, utils]);
115
+ const selectPreviousMonth = React.useCallback(() => {
116
+ changeMonth(utils.getPreviousMonth(currentMonth));
117
+ }, [changeMonth, currentMonth, utils]);
118
+ return /*#__PURE__*/_jsx(DateRangePickerViewDesktopRoot, {
119
+ children: getCalendarsArray(calendars).map((_, index) => {
120
+ const monthOnIteration = utils.setMonth(currentMonth, utils.getMonth(currentMonth) + index);
121
+ return /*#__PURE__*/_jsxs(DateRangePickerViewDesktopContainer, {
122
+ children: [/*#__PURE__*/_jsx(DateRangePickerViewDesktopArrowSwitcher, {
123
+ onLeftClick: selectPreviousMonth,
124
+ onRightClick: selectNextMonth,
125
+ isLeftHidden: index !== 0,
126
+ isRightHidden: index !== calendars - 1,
127
+ isLeftDisabled: isPreviousMonthDisabled,
128
+ isRightDisabled: isNextMonthDisabled,
129
+ leftArrowButtonText: leftArrowButtonText,
130
+ components: components,
131
+ componentsProps: componentsProps,
132
+ rightArrowButtonText: rightArrowButtonText,
133
+ children: utils.format(monthOnIteration, 'monthAndYear')
134
+ }), /*#__PURE__*/_createElement(DateRangePickerViewDesktopCalendar, _extends({}, other, {
135
+ key: index,
136
+ date: date,
137
+ onFocusedDayChange: doNothing,
138
+ onChange: handleDayChange,
139
+ currentMonth: monthOnIteration,
140
+ TransitionProps: CalendarTransitionProps,
141
+ renderDay: (day, __, DayProps) => renderDay(day, _extends({
142
+ isPreviewing: isWithinRange(utils, day, previewingRange),
143
+ isStartOfPreviewing: isStartOfRange(utils, day, previewingRange),
144
+ isEndOfPreviewing: isEndOfRange(utils, day, previewingRange),
145
+ isHighlighting: isWithinRange(utils, day, date),
146
+ isStartOfHighlighting: isStartOfRange(utils, day, date),
147
+ isEndOfHighlighting: isEndOfRange(utils, day, date),
148
+ onMouseEnter: () => handlePreviewDayChange(day)
149
+ }, DayProps))
150
+ }))]
151
+ }, index);
152
+ })
153
+ });
154
+ }
@@ -0,0 +1,60 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["changeMonth", "components", "componentsProps", "date", "leftArrowButtonText", "maxDate", "minDate", "onChange", "renderDay", "rightArrowButtonText"];
4
+ import * as React from 'react';
5
+ import { PickersCalendarHeader, useDefaultDates, useUtils, DayPicker } from '@mui/x-date-pickers/internals';
6
+ import { doNothing } from '../internal/utils/utils';
7
+ import { DateRangePickerDay } from '../DateRangePickerDay';
8
+ import { isWithinRange, isStartOfRange, isEndOfRange } from '../internal/utils/date-utils';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { jsxs as _jsxs } from "react/jsx-runtime";
11
+ const onlyDayView = ['day'];
12
+ /**
13
+ * @ignore - internal component.
14
+ */
15
+
16
+ export function DateRangePickerViewMobile(props) {
17
+ const {
18
+ changeMonth,
19
+ components,
20
+ componentsProps,
21
+ date,
22
+ leftArrowButtonText,
23
+ maxDate: maxDateProp,
24
+ minDate: minDateProp,
25
+ onChange,
26
+ renderDay = (_, dayProps) => /*#__PURE__*/_jsx(DateRangePickerDay, _extends({}, dayProps)),
27
+ rightArrowButtonText
28
+ } = props,
29
+ other = _objectWithoutPropertiesLoose(props, _excluded);
30
+
31
+ const utils = useUtils();
32
+ const defaultDates = useDefaultDates();
33
+ const minDate = minDateProp ?? defaultDates.minDate;
34
+ const maxDate = maxDateProp ?? defaultDates.maxDate;
35
+ return /*#__PURE__*/_jsxs(React.Fragment, {
36
+ children: [/*#__PURE__*/_jsx(PickersCalendarHeader, _extends({
37
+ components: components,
38
+ componentsProps: componentsProps,
39
+ leftArrowButtonText: leftArrowButtonText,
40
+ maxDate: maxDate,
41
+ minDate: minDate,
42
+ onMonthChange: changeMonth,
43
+ openView: "day",
44
+ rightArrowButtonText: rightArrowButtonText,
45
+ views: onlyDayView
46
+ }, other)), /*#__PURE__*/_jsx(DayPicker, _extends({}, other, {
47
+ date: date,
48
+ onChange: onChange,
49
+ onFocusedDayChange: doNothing,
50
+ renderDay: (day, _, DayProps) => renderDay(day, _extends({
51
+ isPreviewing: false,
52
+ isStartOfPreviewing: false,
53
+ isEndOfPreviewing: false,
54
+ isHighlighting: isWithinRange(utils, day, date),
55
+ isStartOfHighlighting: isStartOfRange(utils, day, date),
56
+ isEndOfHighlighting: isEndOfRange(utils, day, date)
57
+ }, DayProps))
58
+ }))]
59
+ });
60
+ }
@@ -0,0 +1,43 @@
1
+ export function calculateRangeChange({
2
+ utils,
3
+ range,
4
+ newDate: selectedDate,
5
+ currentlySelectingRangeEnd
6
+ }) {
7
+ const [start, end] = range;
8
+
9
+ if (currentlySelectingRangeEnd === 'start') {
10
+ return Boolean(end) && utils.isAfter(selectedDate, end) ? {
11
+ nextSelection: 'end',
12
+ newRange: [selectedDate, null]
13
+ } : {
14
+ nextSelection: 'end',
15
+ newRange: [selectedDate, end]
16
+ };
17
+ }
18
+
19
+ return Boolean(start) && utils.isBefore(selectedDate, start) ? {
20
+ nextSelection: 'end',
21
+ newRange: [selectedDate, null]
22
+ } : {
23
+ nextSelection: 'start',
24
+ newRange: [start, selectedDate]
25
+ };
26
+ }
27
+ export function calculateRangePreview(options) {
28
+ if (!options.newDate) {
29
+ return [null, null];
30
+ }
31
+
32
+ const [start, end] = options.range;
33
+ const {
34
+ newRange
35
+ } = calculateRangeChange(options);
36
+
37
+ if (!start || !end) {
38
+ return newRange;
39
+ }
40
+
41
+ const [previewStart, previewEnd] = newRange;
42
+ return options.currentlySelectingRangeEnd === 'end' ? [end, previewEnd] : [previewStart, start];
43
+ }
@@ -0,0 +1 @@
1
+ export { DateRangePicker } from './DateRangePicker';