@mui/x-date-pickers-pro 6.0.0-alpha.10 → 6.0.0-alpha.11

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 (179) hide show
  1. package/CHANGELOG.md +113 -0
  2. package/DateRangeCalendar/DateRangeCalendar.d.ts +1 -1
  3. package/DateRangeCalendar/DateRangeCalendar.js +198 -107
  4. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +21 -10
  5. package/DateRangeCalendar/dateRangeCalendarClasses.d.ts +3 -1
  6. package/DateRangeCalendar/dateRangeCalendarClasses.js +1 -1
  7. package/DateRangeCalendar/useDragRange.d.ts +32 -0
  8. package/DateRangeCalendar/useDragRange.js +238 -0
  9. package/DateRangePicker/DateRangePicker.d.ts +1 -1
  10. package/DateRangePicker/DateRangePickerInput.d.ts +3 -3
  11. package/DateRangePicker/DateRangePickerInput.js +16 -16
  12. package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -2
  13. package/DateRangePicker/DateRangePickerToolbar.js +6 -6
  14. package/DateRangePicker/DateRangePickerView.d.ts +3 -3
  15. package/DateRangePicker/DateRangePickerView.js +16 -16
  16. package/DateRangePicker/DateRangePickerViewDesktop.d.ts +2 -2
  17. package/DateRangePicker/DateRangePickerViewDesktop.js +3 -3
  18. package/DateRangePicker/date-range-manager.d.ts +12 -5
  19. package/DateRangePicker/date-range-manager.js +16 -7
  20. package/DateRangePicker/dateRangePickerInputClasses.d.ts +1 -1
  21. package/DateRangePicker/dateRangePickerToolbarClasses.d.ts +1 -1
  22. package/DateRangePicker/dateRangePickerViewDesktopClasses.d.ts +1 -1
  23. package/DateRangePickerDay/DateRangePickerDay.d.ts +7 -3
  24. package/DateRangePickerDay/DateRangePickerDay.js +24 -24
  25. package/DateRangePickerDay/dateRangePickerDayClasses.d.ts +3 -3
  26. package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +1 -1
  27. package/DesktopDateRangePicker/DesktopDateRangePicker.js +5 -5
  28. package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.d.ts +1 -1
  29. package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +6 -1
  30. package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.types.d.ts +1 -1
  31. package/MobileDateRangePicker/MobileDateRangePicker.d.ts +1 -1
  32. package/MobileDateRangePicker/MobileDateRangePicker.js +5 -5
  33. package/MobileNextDateRangePicker/MobileNextDateRangePicker.d.ts +1 -1
  34. package/MobileNextDateRangePicker/MobileNextDateRangePicker.js +6 -1
  35. package/MobileNextDateRangePicker/MobileNextDateRangePicker.types.d.ts +1 -1
  36. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +1 -1
  37. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +4 -3
  38. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +1 -1
  39. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +5 -4
  40. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +1 -1
  41. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +5 -4
  42. package/NextDateRangePicker/NextDateRangePicker.d.ts +1 -1
  43. package/NextDateRangePicker/NextDateRangePicker.js +5 -0
  44. package/NextDateRangePicker/shared.d.ts +1 -1
  45. package/SingleInputDateRangeField/SingleInputDateRangeField.d.ts +1 -1
  46. package/SingleInputDateRangeField/SingleInputDateRangeField.interfaces.d.ts +2 -2
  47. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +3 -3
  48. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  49. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +1 -2
  50. package/StaticDateRangePicker/StaticDateRangePicker.d.ts +1 -1
  51. package/StaticDateRangePicker/StaticDateRangePicker.js +5 -5
  52. package/StaticNextDateRangePicker/StaticNextDateRangePicker.d.ts +1 -1
  53. package/StaticNextDateRangePicker/StaticNextDateRangePicker.js +8 -3
  54. package/StaticNextDateRangePicker/StaticNextDateRangePicker.types.d.ts +5 -4
  55. package/index.js +1 -1
  56. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +15 -7
  57. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +7 -8
  58. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +15 -7
  59. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -8
  60. package/internal/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +1 -1
  61. package/internal/hooks/useRangePickerInputProps.d.ts +4 -4
  62. package/internal/hooks/useRangePickerInputProps.js +11 -11
  63. package/internal/hooks/useStaticRangePicker/index.d.ts +2 -0
  64. package/internal/hooks/useStaticRangePicker/index.js +1 -0
  65. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +10 -0
  66. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +65 -0
  67. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +29 -0
  68. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.js +1 -0
  69. package/internal/hooks/validation/useDateRangeValidation.d.ts +2 -3
  70. package/internal/hooks/validation/useDateRangeValidation.js +0 -1
  71. package/internal/hooks/validation/useDateTimeRangeValidation.d.ts +2 -3
  72. package/internal/hooks/validation/useDateTimeRangeValidation.js +0 -1
  73. package/internal/hooks/validation/useTimeRangeValidation.d.ts +2 -3
  74. package/internal/hooks/validation/useTimeRangeValidation.js +0 -1
  75. package/internal/models/dateRange.d.ts +2 -3
  76. package/internal/models/dateTimeRange.d.ts +2 -3
  77. package/internal/models/range.d.ts +7 -6
  78. package/internal/models/timeRange.d.ts +2 -3
  79. package/internal/utils/releaseInfo.js +1 -1
  80. package/internal/utils/valueManagers.d.ts +2 -3
  81. package/internal/utils/valueManagers.js +1 -2
  82. package/internal/utils/{views.d.ts → viewRenderers.d.ts} +1 -1
  83. package/{modern/internal/utils/views.js → internal/utils/viewRenderers.js} +10 -6
  84. package/legacy/DateRangeCalendar/DateRangeCalendar.js +159 -67
  85. package/legacy/DateRangeCalendar/dateRangeCalendarClasses.js +1 -1
  86. package/legacy/DateRangeCalendar/useDragRange.js +247 -0
  87. package/legacy/DateRangePicker/DateRangePickerInput.js +16 -16
  88. package/legacy/DateRangePicker/DateRangePickerToolbar.js +7 -7
  89. package/legacy/DateRangePicker/DateRangePickerView.js +16 -16
  90. package/legacy/DateRangePicker/DateRangePickerViewDesktop.js +3 -3
  91. package/legacy/DateRangePicker/date-range-manager.js +17 -7
  92. package/legacy/DateRangePickerDay/DateRangePickerDay.js +23 -23
  93. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +6 -6
  94. package/legacy/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +6 -1
  95. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +6 -6
  96. package/legacy/MobileNextDateRangePicker/MobileNextDateRangePicker.js +6 -1
  97. package/legacy/NextDateRangePicker/NextDateRangePicker.js +5 -0
  98. package/legacy/SingleInputDateRangeField/useSingleInputDateRangeField.js +1 -2
  99. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +6 -6
  100. package/legacy/StaticNextDateRangePicker/StaticNextDateRangePicker.js +9 -4
  101. package/legacy/index.js +1 -1
  102. package/legacy/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -8
  103. package/legacy/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +16 -8
  104. package/legacy/internal/hooks/useRangePickerInputProps.js +11 -11
  105. package/legacy/internal/hooks/useStaticRangePicker/index.js +1 -0
  106. package/legacy/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +68 -0
  107. package/legacy/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.js +1 -0
  108. package/legacy/internal/hooks/validation/useDateRangeValidation.js +0 -3
  109. package/legacy/internal/hooks/validation/useDateTimeRangeValidation.js +0 -3
  110. package/legacy/internal/hooks/validation/useTimeRangeValidation.js +0 -3
  111. package/legacy/internal/utils/releaseInfo.js +1 -1
  112. package/legacy/internal/utils/valueManagers.js +1 -2
  113. package/legacy/internal/utils/{views.js → viewRenderers.js} +10 -6
  114. package/modern/DateRangeCalendar/DateRangeCalendar.js +197 -106
  115. package/modern/DateRangeCalendar/dateRangeCalendarClasses.js +1 -1
  116. package/modern/DateRangeCalendar/useDragRange.js +237 -0
  117. package/modern/DateRangePicker/DateRangePickerInput.js +16 -16
  118. package/modern/DateRangePicker/DateRangePickerToolbar.js +6 -6
  119. package/modern/DateRangePicker/DateRangePickerView.js +16 -16
  120. package/modern/DateRangePicker/DateRangePickerViewDesktop.js +3 -3
  121. package/modern/DateRangePicker/date-range-manager.js +16 -7
  122. package/modern/DateRangePickerDay/DateRangePickerDay.js +24 -24
  123. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +5 -5
  124. package/modern/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +6 -1
  125. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +5 -5
  126. package/modern/MobileNextDateRangePicker/MobileNextDateRangePicker.js +6 -1
  127. package/modern/NextDateRangePicker/NextDateRangePicker.js +5 -0
  128. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +1 -2
  129. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +5 -5
  130. package/modern/StaticNextDateRangePicker/StaticNextDateRangePicker.js +8 -3
  131. package/modern/index.js +1 -1
  132. package/modern/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +15 -7
  133. package/modern/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +15 -7
  134. package/modern/internal/hooks/useRangePickerInputProps.js +11 -11
  135. package/modern/internal/hooks/useStaticRangePicker/index.js +1 -0
  136. package/modern/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +65 -0
  137. package/modern/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.js +1 -0
  138. package/modern/internal/hooks/validation/useDateRangeValidation.js +0 -1
  139. package/modern/internal/hooks/validation/useDateTimeRangeValidation.js +0 -1
  140. package/modern/internal/hooks/validation/useTimeRangeValidation.js +0 -1
  141. package/modern/internal/utils/releaseInfo.js +1 -1
  142. package/modern/internal/utils/valueManagers.js +1 -2
  143. package/{internal/utils/views.js → modern/internal/utils/viewRenderers.js} +10 -6
  144. package/node/DateRangeCalendar/DateRangeCalendar.js +195 -104
  145. package/node/DateRangeCalendar/dateRangeCalendarClasses.js +1 -1
  146. package/node/DateRangeCalendar/useDragRange.js +247 -0
  147. package/node/DateRangePicker/DateRangePickerInput.js +16 -16
  148. package/node/DateRangePicker/DateRangePickerToolbar.js +6 -6
  149. package/node/DateRangePicker/DateRangePickerView.js +16 -16
  150. package/node/DateRangePicker/DateRangePickerViewDesktop.js +3 -3
  151. package/node/DateRangePicker/date-range-manager.js +16 -7
  152. package/node/DateRangePickerDay/DateRangePickerDay.js +23 -23
  153. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +5 -5
  154. package/node/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +7 -2
  155. package/node/MobileDateRangePicker/MobileDateRangePicker.js +5 -5
  156. package/node/MobileNextDateRangePicker/MobileNextDateRangePicker.js +7 -2
  157. package/node/NextDateRangePicker/NextDateRangePicker.js +5 -0
  158. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +1 -2
  159. package/node/StaticDateRangePicker/StaticDateRangePicker.js +5 -5
  160. package/node/StaticNextDateRangePicker/StaticNextDateRangePicker.js +9 -4
  161. package/node/index.js +1 -1
  162. package/node/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +15 -7
  163. package/node/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +15 -7
  164. package/node/internal/hooks/useRangePickerInputProps.js +11 -11
  165. package/node/internal/hooks/useStaticRangePicker/index.js +12 -0
  166. package/node/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +75 -0
  167. package/node/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.js +5 -0
  168. package/node/internal/hooks/validation/useDateRangeValidation.js +1 -3
  169. package/node/internal/hooks/validation/useDateTimeRangeValidation.js +1 -3
  170. package/node/internal/hooks/validation/useTimeRangeValidation.js +1 -3
  171. package/node/internal/utils/releaseInfo.js +1 -1
  172. package/node/internal/utils/valueManagers.js +4 -5
  173. package/node/internal/utils/{views.js → viewRenderers.js} +10 -6
  174. package/package.json +3 -3
  175. package/SingleInputDateRangeField/SingleInputDateRangeField.utils.d.ts +0 -6
  176. package/SingleInputDateRangeField/SingleInputDateRangeField.utils.js +0 -24
  177. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.utils.js +0 -26
  178. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.utils.js +0 -24
  179. package/node/SingleInputDateRangeField/SingleInputDateRangeField.utils.js +0 -33
@@ -3,7 +3,9 @@ export interface DateRangeCalendarClasses {
3
3
  root: string;
4
4
  /** Styles applied to the container of a month. */
5
5
  monthContainer: string;
6
+ /** Styles applied to the day calendar container when dragging */
7
+ dayDragging: string;
6
8
  }
7
- export declare type DateRangeCalendarClassKey = keyof DateRangeCalendarClasses;
9
+ export type DateRangeCalendarClassKey = keyof DateRangeCalendarClasses;
8
10
  export declare const getDateRangeCalendarUtilityClass: (slot: string) => string;
9
11
  export declare const dateRangeCalendarClasses: DateRangeCalendarClasses;
@@ -1,3 +1,3 @@
1
1
  import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
2
  export const getDateRangeCalendarUtilityClass = slot => generateUtilityClass('MuiDateRangeCalendar', slot);
3
- export const dateRangeCalendarClasses = generateUtilityClasses('MuiDateRangeCalendar', ['root', 'monthContainer']);
3
+ export const dateRangeCalendarClasses = generateUtilityClasses('MuiDateRangeCalendar', ['root', 'monthContainer', 'dayDragging']);
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import { MuiPickersAdapter } from '@mui/x-date-pickers/internals';
3
+ import { DateRangePosition } from './DateRangeCalendar.types';
4
+ import { DateRange } from '../internal/models';
5
+ interface UseDragRangeParams<TDate> {
6
+ disableDragEditing?: boolean;
7
+ utils: MuiPickersAdapter<TDate>;
8
+ setRangeDragDay: (value: TDate | null) => void;
9
+ setIsDragging: (value: boolean) => void;
10
+ isDragging: boolean;
11
+ onDatePositionChange: (position: DateRangePosition) => void;
12
+ onDrop: (newDate: TDate) => void;
13
+ dateRange: DateRange<TDate>;
14
+ }
15
+ interface UseDragRangeEvents {
16
+ onDragStart?: React.DragEventHandler<HTMLButtonElement>;
17
+ onDragEnter?: React.DragEventHandler<HTMLButtonElement>;
18
+ onDragLeave?: React.DragEventHandler<HTMLButtonElement>;
19
+ onDragOver?: React.DragEventHandler<HTMLButtonElement>;
20
+ onDragEnd?: React.DragEventHandler<HTMLButtonElement>;
21
+ onDrop?: React.DragEventHandler<HTMLButtonElement>;
22
+ onTouchStart?: React.TouchEventHandler<HTMLButtonElement>;
23
+ onTouchMove?: React.TouchEventHandler<HTMLButtonElement>;
24
+ onTouchEnd?: React.TouchEventHandler<HTMLButtonElement>;
25
+ }
26
+ interface UseDragRangeResponse<TDate> extends UseDragRangeEvents {
27
+ isDragging: boolean;
28
+ rangeDragDay: TDate | null;
29
+ draggingDatePosition: DateRangePosition | null;
30
+ }
31
+ export declare const useDragRange: <TDate>({ disableDragEditing, utils, onDatePositionChange, onDrop, dateRange, }: Omit<UseDragRangeParams<TDate>, "isDragging" | "setRangeDragDay" | "setIsDragging">) => UseDragRangeResponse<TDate>;
32
+ export {};
@@ -0,0 +1,238 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import useEventCallback from '@mui/utils/useEventCallback';
4
+ import { isEndOfRange, isStartOfRange } from '../internal/utils/date-utils';
5
+ const resolveDateFromTarget = (target, utils) => {
6
+ const timestampString = target.dataset.timestamp;
7
+ if (!timestampString) {
8
+ return null;
9
+ }
10
+ const timestamp = +timestampString;
11
+ return utils.date(new Date(timestamp));
12
+ };
13
+ const isSameAsDraggingDate = event => {
14
+ const timestampString = event.target.dataset.timestamp;
15
+ return timestampString === event.dataTransfer.getData('draggingDate');
16
+ };
17
+ const resolveButtonElement = element => {
18
+ if (element) {
19
+ if (element instanceof HTMLButtonElement && !element.disabled) {
20
+ return element;
21
+ }
22
+ if (element.children.length) {
23
+ return resolveButtonElement(element.children[0]);
24
+ }
25
+ return null;
26
+ }
27
+ return element;
28
+ };
29
+ const resolveElementFromTouch = (event, ignoreTouchTarget) => {
30
+ var _event$changedTouches;
31
+ // don't parse multi-touch result
32
+ if (((_event$changedTouches = event.changedTouches) == null ? void 0 : _event$changedTouches.length) === 1 && event.touches.length <= 1) {
33
+ const element = document.elementFromPoint(event.changedTouches[0].clientX, event.changedTouches[0].clientY);
34
+ // `elementFromPoint` could have resolved preview div or wrapping div
35
+ // might need to recursively find the nested button
36
+ const buttonElement = resolveButtonElement(element);
37
+ if (ignoreTouchTarget && buttonElement === event.changedTouches[0].target) {
38
+ return null;
39
+ }
40
+ return buttonElement;
41
+ }
42
+ return null;
43
+ };
44
+ const useDragRangeEvents = ({
45
+ utils,
46
+ setRangeDragDay,
47
+ setIsDragging,
48
+ isDragging,
49
+ onDatePositionChange,
50
+ onDrop,
51
+ disableDragEditing,
52
+ dateRange
53
+ }) => {
54
+ const emptyDragImgRef = React.useRef(null);
55
+ React.useEffect(() => {
56
+ // Preload the image - required for Safari support: https://stackoverflow.com/a/40923520/3303436
57
+ emptyDragImgRef.current = document.createElement('img');
58
+ emptyDragImgRef.current.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
59
+ }, []);
60
+ const isElementDraggable = day => {
61
+ if (day == null) {
62
+ return false;
63
+ }
64
+ const shouldInitDragging = !disableDragEditing && !!dateRange[0] && !!dateRange[1];
65
+ const isSelectedStartDate = isStartOfRange(utils, day, dateRange);
66
+ const isSelectedEndDate = isEndOfRange(utils, day, dateRange);
67
+ return shouldInitDragging && (isSelectedStartDate || isSelectedEndDate);
68
+ };
69
+ const handleDragStart = useEventCallback(event => {
70
+ const newDate = resolveDateFromTarget(event.target, utils);
71
+ if (!isElementDraggable(newDate)) {
72
+ return;
73
+ }
74
+ event.stopPropagation();
75
+ if (emptyDragImgRef.current) {
76
+ event.dataTransfer.setDragImage(emptyDragImgRef.current, 0, 0);
77
+ }
78
+ setRangeDragDay(newDate);
79
+ event.dataTransfer.effectAllowed = 'move';
80
+ setIsDragging(true);
81
+ const buttonDataset = event.target.dataset;
82
+ if (buttonDataset.timestamp) {
83
+ event.dataTransfer.setData('draggingDate', buttonDataset.timestamp);
84
+ }
85
+ if (buttonDataset.position) {
86
+ onDatePositionChange(buttonDataset.position);
87
+ }
88
+ });
89
+ const handleTouchStart = useEventCallback(event => {
90
+ const target = resolveElementFromTouch(event);
91
+ if (!target) {
92
+ return;
93
+ }
94
+ const newDate = resolveDateFromTarget(target, utils);
95
+ if (!isElementDraggable(newDate)) {
96
+ return;
97
+ }
98
+ setRangeDragDay(newDate);
99
+ setIsDragging(true);
100
+ const button = event.target;
101
+ const buttonDataset = button.dataset;
102
+ if (buttonDataset.position) {
103
+ onDatePositionChange(buttonDataset.position);
104
+ }
105
+ });
106
+ const handleDragEnter = useEventCallback(event => {
107
+ if (!isDragging) {
108
+ return;
109
+ }
110
+ event.preventDefault();
111
+ event.stopPropagation();
112
+ event.dataTransfer.dropEffect = 'move';
113
+ setRangeDragDay(resolveDateFromTarget(event.target, utils));
114
+ });
115
+ const handleTouchMove = useEventCallback(event => {
116
+ const target = resolveElementFromTouch(event);
117
+ if (!isDragging || !target) {
118
+ return;
119
+ }
120
+ const newDate = resolveDateFromTarget(target, utils);
121
+ if (newDate) {
122
+ setRangeDragDay(newDate);
123
+ }
124
+ });
125
+ const handleDragLeave = useEventCallback(event => {
126
+ if (!isDragging) {
127
+ return;
128
+ }
129
+ event.preventDefault();
130
+ event.stopPropagation();
131
+ });
132
+ const handleDragOver = useEventCallback(event => {
133
+ if (!isDragging) {
134
+ return;
135
+ }
136
+ event.preventDefault();
137
+ event.stopPropagation();
138
+ event.dataTransfer.dropEffect = 'move';
139
+ });
140
+ const handleTouchEnd = useEventCallback(event => {
141
+ if (!isDragging) {
142
+ return;
143
+ }
144
+ setRangeDragDay(null);
145
+ setIsDragging(false);
146
+ const target = resolveElementFromTouch(event, true);
147
+ if (!target) {
148
+ return;
149
+ }
150
+
151
+ // make sure the focused element is the element where touch ended
152
+ target.focus();
153
+ const newDate = resolveDateFromTarget(target, utils);
154
+ if (newDate) {
155
+ onDrop(newDate);
156
+ }
157
+ });
158
+ const handleDragEnd = useEventCallback(event => {
159
+ if (!isDragging) {
160
+ return;
161
+ }
162
+ event.preventDefault();
163
+ event.stopPropagation();
164
+ setIsDragging(false);
165
+ setRangeDragDay(null);
166
+ });
167
+ const handleDrop = useEventCallback(event => {
168
+ if (!isDragging) {
169
+ return;
170
+ }
171
+ event.preventDefault();
172
+ event.stopPropagation();
173
+ setIsDragging(false);
174
+ setRangeDragDay(null);
175
+ // make sure the focused element is the element where drop ended
176
+ event.currentTarget.focus();
177
+ if (isSameAsDraggingDate(event)) {
178
+ return;
179
+ }
180
+ const newDate = resolveDateFromTarget(event.target, utils);
181
+ if (newDate) {
182
+ onDrop(newDate);
183
+ }
184
+ });
185
+ return {
186
+ onDragStart: handleDragStart,
187
+ onDragEnter: handleDragEnter,
188
+ onDragLeave: handleDragLeave,
189
+ onDragOver: handleDragOver,
190
+ onDragEnd: handleDragEnd,
191
+ onDrop: handleDrop,
192
+ onTouchStart: handleTouchStart,
193
+ onTouchMove: handleTouchMove,
194
+ onTouchEnd: handleTouchEnd
195
+ };
196
+ };
197
+ export const useDragRange = ({
198
+ disableDragEditing,
199
+ utils,
200
+ onDatePositionChange,
201
+ onDrop,
202
+ dateRange
203
+ }) => {
204
+ const [isDragging, setIsDragging] = React.useState(false);
205
+ const [rangeDragDay, setRangeDragDay] = React.useState(null);
206
+ const handleRangeDragDayChange = useEventCallback(val => {
207
+ if (!utils.isEqual(val, rangeDragDay)) {
208
+ setRangeDragDay(val);
209
+ }
210
+ });
211
+ const draggingDatePosition = React.useMemo(() => {
212
+ const [start, end] = dateRange;
213
+ if (rangeDragDay) {
214
+ if (start && utils.isBefore(rangeDragDay, start)) {
215
+ return 'start';
216
+ }
217
+ if (end && utils.isAfter(rangeDragDay, end)) {
218
+ return 'end';
219
+ }
220
+ }
221
+ return null;
222
+ }, [dateRange, rangeDragDay, utils]);
223
+ const dragRangeEvents = useDragRangeEvents({
224
+ utils,
225
+ onDatePositionChange,
226
+ onDrop,
227
+ setIsDragging,
228
+ isDragging,
229
+ setRangeDragDay: handleRangeDragDayChange,
230
+ disableDragEditing,
231
+ dateRange
232
+ });
233
+ return React.useMemo(() => _extends({
234
+ isDragging,
235
+ rangeDragDay,
236
+ draggingDatePosition
237
+ }, !disableDragEditing ? dragRangeEvents : {}), [isDragging, rangeDragDay, draggingDatePosition, disableDragEditing, dragRangeEvents]);
238
+ };
@@ -23,7 +23,7 @@ export interface DateRangePickerProps<TDate> extends Omit<DesktopDateRangePicker
23
23
  */
24
24
  componentsProps?: DateRangePickerSlotsComponentsProps<TDate>;
25
25
  }
26
- declare type DateRangePickerComponent = (<TDate>(props: DateRangePickerProps<TDate> & React.RefAttributes<HTMLDivElement>) => JSX.Element) & {
26
+ type DateRangePickerComponent = (<TDate>(props: DateRangePickerProps<TDate> & React.RefAttributes<HTMLDivElement>) => JSX.Element) & {
27
27
  propTypes?: any;
28
28
  };
29
29
  /**
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DateInputProps, ExportedDateInputProps, MuiTextFieldProps } from '@mui/x-date-pickers/internals';
3
- import { CurrentlySelectingRangeEndProps, DateRange } from '../internal/models/range';
3
+ import { RangePositionProps, DateRange } from '../internal/models/range';
4
4
  import { DateRangeValidationError } from '../internal/hooks/validation/useDateRangeValidation';
5
5
  import { DateRangePickerInputClasses } from './dateRangePickerInputClasses';
6
6
  export interface ExportedDateRangePickerInputProps<TDate> extends Omit<ExportedDateInputProps<TDate>, 'renderInput'> {
@@ -28,13 +28,13 @@ export interface ExportedDateRangePickerInputProps<TDate> extends Omit<ExportedD
28
28
  renderInput: (startProps: MuiTextFieldProps, endProps: MuiTextFieldProps) => React.ReactElement;
29
29
  onChange: (date: DateRange<TDate>, keyboardInputValue?: string) => void;
30
30
  }
31
- export interface DateRangePickerInputProps<TDate> extends Omit<ExportedDateRangePickerInputProps<TDate>, 'value'>, Omit<DateInputProps<TDate>, keyof ExportedDateRangePickerInputProps<TDate> | 'value' | 'validationError'>, CurrentlySelectingRangeEndProps {
31
+ export interface DateRangePickerInputProps<TDate> extends Omit<ExportedDateRangePickerInputProps<TDate>, 'value'>, Omit<DateInputProps<TDate>, keyof ExportedDateRangePickerInputProps<TDate> | 'value' | 'validationError'>, RangePositionProps {
32
32
  validationError: DateRangeValidationError;
33
33
  value: DateRange<TDate>;
34
34
  classes?: Partial<DateRangePickerInputClasses>;
35
35
  mobile?: boolean;
36
36
  }
37
- declare type DatePickerInputComponent = <TDate>(props: DateRangePickerInputProps<TDate> & React.RefAttributes<HTMLDivElement>) => JSX.Element;
37
+ type DatePickerInputComponent = <TDate>(props: DateRangePickerInputProps<TDate> & React.RefAttributes<HTMLDivElement>) => JSX.Element;
38
38
  /**
39
39
  * @ignore - internal component.
40
40
  */
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["currentlySelectingRangeEnd", "disableOpenPicker", "onBlur", "onChange", "open", "openPicker", "value", "value", "readOnly", "renderInput", "setCurrentlySelectingRangeEnd", "TextFieldProps", "validationError", "className", "mobile"];
3
+ const _excluded = ["rangePosition", "onRangePositionChange", "disableOpenPicker", "onBlur", "onChange", "open", "openPicker", "value", "value", "readOnly", "renderInput", "TextFieldProps", "validationError", "className", "mobile"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import { styled, useThemeProps } from '@mui/material/styles';
@@ -40,7 +40,8 @@ export const DateRangePickerInput = /*#__PURE__*/React.forwardRef(function DateR
40
40
  name: 'MuiDateRangePickerInput'
41
41
  });
42
42
  const {
43
- currentlySelectingRangeEnd,
43
+ rangePosition,
44
+ onRangePositionChange,
44
45
  disableOpenPicker,
45
46
  onBlur,
46
47
  onChange,
@@ -49,7 +50,6 @@ export const DateRangePickerInput = /*#__PURE__*/React.forwardRef(function DateR
49
50
  value: [start, end],
50
51
  readOnly,
51
52
  renderInput,
52
- setCurrentlySelectingRangeEnd,
53
53
  TextFieldProps,
54
54
  validationError: [startValidationError, endValidationError],
55
55
  className,
@@ -64,14 +64,14 @@ export const DateRangePickerInput = /*#__PURE__*/React.forwardRef(function DateR
64
64
  if (!open) {
65
65
  return;
66
66
  }
67
- if (currentlySelectingRangeEnd === 'start') {
67
+ if (rangePosition === 'start') {
68
68
  var _startRef$current;
69
69
  (_startRef$current = startRef.current) == null ? void 0 : _startRef$current.focus();
70
- } else if (currentlySelectingRangeEnd === 'end') {
70
+ } else if (rangePosition === 'end') {
71
71
  var _endRef$current;
72
72
  (_endRef$current = endRef.current) == null ? void 0 : _endRef$current.focus();
73
73
  }
74
- }, [currentlySelectingRangeEnd, open]);
74
+ }, [rangePosition, open]);
75
75
 
76
76
  // TODO: rethink this approach. We do not need to wait for calendar to be updated to rerender input (looks like freezing)
77
77
  // TODO: so simply break 1 react's commit phase in 2 (first for input and second for calendars) by executing onChange in the next tick
@@ -84,8 +84,8 @@ export const DateRangePickerInput = /*#__PURE__*/React.forwardRef(function DateR
84
84
  };
85
85
  const openRangeStartSelection = event => {
86
86
  event.stopPropagation();
87
- if (setCurrentlySelectingRangeEnd) {
88
- setCurrentlySelectingRangeEnd('start');
87
+ if (onRangePositionChange) {
88
+ onRangePositionChange('start');
89
89
  }
90
90
  if (!readOnly && !disableOpenPicker) {
91
91
  openPicker();
@@ -93,21 +93,21 @@ export const DateRangePickerInput = /*#__PURE__*/React.forwardRef(function DateR
93
93
  };
94
94
  const openRangeEndSelection = event => {
95
95
  event.stopPropagation();
96
- if (setCurrentlySelectingRangeEnd) {
97
- setCurrentlySelectingRangeEnd('end');
96
+ if (onRangePositionChange) {
97
+ onRangePositionChange('end');
98
98
  }
99
99
  if (!readOnly && !disableOpenPicker) {
100
100
  openPicker();
101
101
  }
102
102
  };
103
103
  const focusOnRangeEnd = () => {
104
- if (open && setCurrentlySelectingRangeEnd) {
105
- setCurrentlySelectingRangeEnd('end');
104
+ if (open && onRangePositionChange) {
105
+ onRangePositionChange('end');
106
106
  }
107
107
  };
108
108
  const focusOnRangeStart = () => {
109
- if (open && setCurrentlySelectingRangeEnd) {
110
- setCurrentlySelectingRangeEnd('start');
109
+ if (open && onRangePositionChange) {
110
+ onRangePositionChange('start');
111
111
  }
112
112
  };
113
113
  const startInputProps = useMaskedInput(_extends({}, other, {
@@ -118,7 +118,7 @@ export const DateRangePickerInput = /*#__PURE__*/React.forwardRef(function DateR
118
118
  validationError: startValidationError !== null,
119
119
  TextFieldProps: _extends({}, TextFieldProps, {
120
120
  inputRef: startRef,
121
- focused: open ? currentlySelectingRangeEnd === 'start' : undefined
121
+ focused: open ? rangePosition === 'start' : undefined
122
122
  }, !readOnly && !other.disabled && {
123
123
  onClick: openRangeStartSelection
124
124
  }),
@@ -137,7 +137,7 @@ export const DateRangePickerInput = /*#__PURE__*/React.forwardRef(function DateR
137
137
  validationError: endValidationError !== null,
138
138
  TextFieldProps: _extends({}, TextFieldProps, {
139
139
  inputRef: endRef,
140
- focused: open ? currentlySelectingRangeEnd === 'end' : undefined
140
+ focused: open ? rangePosition === 'end' : undefined
141
141
  }, !readOnly && !other.disabled && {
142
142
  onClick: openRangeEndSelection
143
143
  }),
@@ -1,8 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { BaseToolbarProps, ExportedBaseToolbarProps } from '@mui/x-date-pickers/internals';
3
- import { DateRange, CurrentlySelectingRangeEndProps } from '../internal/models';
3
+ import { DateRange, RangePositionProps } from '../internal/models';
4
4
  import { DateRangePickerToolbarClasses } from './dateRangePickerToolbarClasses';
5
- export interface DateRangePickerToolbarProps<TDate> extends Omit<BaseToolbarProps<DateRange<TDate>, 'day'>, 'views' | 'view' | 'onViewChange' | 'onChange' | 'isLandscape'>, CurrentlySelectingRangeEndProps {
5
+ export interface DateRangePickerToolbarProps<TDate> extends Omit<BaseToolbarProps<DateRange<TDate>, 'day'>, 'views' | 'view' | 'onViewChange' | 'onChange' | 'isLandscape'>, RangePositionProps {
6
6
  classes?: Partial<DateRangePickerToolbarClasses>;
7
7
  }
8
8
  export interface ExportedDateRangePickerToolbarProps extends ExportedBaseToolbarProps {
@@ -44,11 +44,11 @@ export const DateRangePickerToolbar = /*#__PURE__*/React.forwardRef(function Dat
44
44
  name: 'MuiDateRangePickerToolbar'
45
45
  });
46
46
  const {
47
- currentlySelectingRangeEnd,
48
47
  value: [start, end],
49
48
  isMobileKeyboardViewOpen,
50
- setCurrentlySelectingRangeEnd,
51
49
  toggleMobileKeyboardView,
50
+ rangePosition,
51
+ onRangePositionChange,
52
52
  toolbarFormat
53
53
  } = props;
54
54
  const localeText = useLocaleText();
@@ -69,16 +69,16 @@ export const DateRangePickerToolbar = /*#__PURE__*/React.forwardRef(function Dat
69
69
  children: [/*#__PURE__*/_jsx(PickersToolbarButton, {
70
70
  variant: start !== null ? 'h5' : 'h6',
71
71
  value: startDateValue,
72
- selected: currentlySelectingRangeEnd === 'start',
73
- onClick: () => setCurrentlySelectingRangeEnd('start')
72
+ selected: rangePosition === 'start',
73
+ onClick: () => onRangePositionChange('start')
74
74
  }), /*#__PURE__*/_jsxs(Typography, {
75
75
  variant: "h5",
76
76
  children: ["\xA0", '–', "\xA0"]
77
77
  }), /*#__PURE__*/_jsx(PickersToolbarButton, {
78
78
  variant: end !== null ? 'h5' : 'h6',
79
79
  value: endDateValue,
80
- selected: currentlySelectingRangeEnd === 'end',
81
- onClick: () => setCurrentlySelectingRangeEnd('end')
80
+ selected: rangePosition === 'end',
81
+ onClick: () => onRangePositionChange('end')
82
82
  })]
83
83
  })
84
84
  });
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ExportedDateCalendarProps, PickerStatePickerProps, BaseDateValidationProps, DayValidationProps, ExportedBaseToolbarProps } from '@mui/x-date-pickers/internals';
3
- import { DateRange, CurrentlySelectingRangeEndProps } from '../internal/models/range';
3
+ import { DateRange, RangePositionProps } from '../internal/models/range';
4
4
  import { DayRangeValidationProps } from '../internal/models/dateRange';
5
5
  import { DateRangePickerViewMobileSlotsComponent, DateRangePickerViewMobileSlotsComponentsProps } from './DateRangePickerViewMobile';
6
6
  import { DateRangePickerInputProps } from './DateRangePickerInput';
@@ -41,12 +41,12 @@ export interface ExportedDateRangePickerViewProps<TDate> extends ExportedDateRan
41
41
  */
42
42
  className?: string;
43
43
  }
44
- interface DateRangePickerViewProps<TDate> extends CurrentlySelectingRangeEndProps, ExportedDateRangePickerViewProps<TDate>, PickerStatePickerProps<DateRange<TDate>>, Required<BaseDateValidationProps<TDate>> {
44
+ interface DateRangePickerViewProps<TDate> extends RangePositionProps, ExportedDateRangePickerViewProps<TDate>, PickerStatePickerProps<DateRange<TDate>>, Required<BaseDateValidationProps<TDate>> {
45
45
  calendars: 1 | 2 | 3;
46
46
  open: boolean;
47
47
  DateInputProps: DateRangePickerInputProps<TDate>;
48
48
  }
49
- declare type DateRangePickerViewComponent = (<TDate>(props: DateRangePickerViewProps<TDate>) => JSX.Element) & {
49
+ type DateRangePickerViewComponent = (<TDate>(props: DateRangePickerViewProps<TDate>) => JSX.Element) & {
50
50
  propTypes?: any;
51
51
  };
52
52
  export declare const DateRangePickerView: DateRangePickerViewComponent;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["calendars", "className", "currentlySelectingRangeEnd", "value", "DateInputProps", "defaultCalendarMonth", "disableAutoMonthSwitching", "disableFuture", "disableHighlightToday", "disablePast", "isMobileKeyboardViewOpen", "maxDate", "minDate", "onDateChange", "onMonthChange", "open", "reduceAnimations", "setCurrentlySelectingRangeEnd", "shouldDisableDate", "showToolbar", "toggleMobileKeyboardView", "components", "componentsProps"];
3
+ const _excluded = ["calendars", "className", "value", "DateInputProps", "defaultCalendarMonth", "disableAutoMonthSwitching", "disableFuture", "disableHighlightToday", "disablePast", "isMobileKeyboardViewOpen", "maxDate", "minDate", "onDateChange", "onMonthChange", "open", "reduceAnimations", "rangePosition", "onRangePositionChange", "shouldDisableDate", "showToolbar", "toggleMobileKeyboardView", "components", "componentsProps"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { Watermark } from '@mui/x-license-pro';
@@ -21,7 +21,6 @@ function DateRangePickerViewRaw(props) {
21
21
  const {
22
22
  calendars,
23
23
  className,
24
- currentlySelectingRangeEnd,
25
24
  value,
26
25
  DateInputProps,
27
26
  defaultCalendarMonth,
@@ -35,7 +34,8 @@ function DateRangePickerViewRaw(props) {
35
34
  onDateChange,
36
35
  onMonthChange,
37
36
  reduceAnimations = defaultReduceAnimations,
38
- setCurrentlySelectingRangeEnd,
37
+ rangePosition,
38
+ onRangePositionChange,
39
39
  shouldDisableDate,
40
40
  showToolbar,
41
41
  toggleMobileKeyboardView,
@@ -45,7 +45,7 @@ function DateRangePickerViewRaw(props) {
45
45
  other = _objectWithoutPropertiesLoose(props, _excluded);
46
46
  const utils = useUtils();
47
47
  const wrapperVariant = React.useContext(WrapperVariantContext);
48
- const wrappedShouldDisableDate = shouldDisableDate && (dayToTest => shouldDisableDate == null ? void 0 : shouldDisableDate(dayToTest, currentlySelectingRangeEnd));
48
+ const wrappedShouldDisableDate = shouldDisableDate && (dayToTest => shouldDisableDate == null ? void 0 : shouldDisableDate(dayToTest, rangePosition));
49
49
  const [start, end] = value;
50
50
  const {
51
51
  changeMonth,
@@ -67,14 +67,14 @@ function DateRangePickerViewRaw(props) {
67
67
  const prevValue = React.useRef(null);
68
68
  React.useEffect(() => {
69
69
  var _prevValue$current, _prevValue$current2;
70
- const date = currentlySelectingRangeEnd === 'start' ? start : end;
70
+ const date = rangePosition === 'start' ? start : end;
71
71
  if (!date || !utils.isValid(date)) {
72
72
  return;
73
73
  }
74
- const prevDate = currentlySelectingRangeEnd === 'start' ? (_prevValue$current = prevValue.current) == null ? void 0 : _prevValue$current[0] : (_prevValue$current2 = prevValue.current) == null ? void 0 : _prevValue$current2[1];
74
+ const prevDate = rangePosition === 'start' ? (_prevValue$current = prevValue.current) == null ? void 0 : _prevValue$current[0] : (_prevValue$current2 = prevValue.current) == null ? void 0 : _prevValue$current2[1];
75
75
  prevValue.current = value;
76
76
 
77
- // The current date did not change, this call comes either from a `currentlySelectingRangeEnd` change or a change in the other date.
77
+ // The current date did not change, this call comes either from a `rangePosition` change or a change in the other date.
78
78
  // In both cases, we don't want to change the visible month(s).
79
79
  if (disableAutoMonthSwitching && prevDate && utils.isEqual(prevDate, date)) {
80
80
  return;
@@ -83,12 +83,12 @@ function DateRangePickerViewRaw(props) {
83
83
  const currentMonthNumber = utils.getMonth(calendarState.currentMonth);
84
84
  const requestedMonthNumber = utils.getMonth(date);
85
85
  if (!utils.isSameYear(calendarState.currentMonth, date) || requestedMonthNumber < currentMonthNumber || requestedMonthNumber > currentMonthNumber + displayingMonthRange) {
86
- const newMonth = currentlySelectingRangeEnd === 'start' ? date :
86
+ const newMonth = rangePosition === 'start' ? date :
87
87
  // If need to focus end, scroll to the state when "end" is displaying in the last calendar
88
88
  utils.addMonths(date, -displayingMonthRange);
89
89
  changeMonth(newMonth);
90
90
  }
91
- }, [currentlySelectingRangeEnd, value]); // eslint-disable-line
91
+ }, [rangePosition, value]); // eslint-disable-line
92
92
 
93
93
  const handleSelectedDayChange = React.useCallback(newDate => {
94
94
  const {
@@ -98,12 +98,12 @@ function DateRangePickerViewRaw(props) {
98
98
  newDate,
99
99
  utils,
100
100
  range: value,
101
- currentlySelectingRangeEnd
101
+ rangePosition
102
102
  });
103
- setCurrentlySelectingRangeEnd(nextSelection);
104
- const isFullRangeSelected = currentlySelectingRangeEnd === 'end' && isRangeValid(utils, newRange);
103
+ onRangePositionChange(nextSelection);
104
+ const isFullRangeSelected = rangePosition === 'end' && isRangeValid(utils, newRange);
105
105
  onDateChange(newRange, wrapperVariant, isFullRangeSelected ? 'finish' : 'partial');
106
- }, [currentlySelectingRangeEnd, value, onDateChange, setCurrentlySelectingRangeEnd, utils, wrapperVariant]);
106
+ }, [rangePosition, value, onDateChange, onRangePositionChange, utils, wrapperVariant]);
107
107
  const shouldRenderToolbar = showToolbar != null ? showToolbar : wrapperVariant !== 'desktop';
108
108
  const Toolbar = components == null ? void 0 : components.Toolbar;
109
109
  const renderView = () => {
@@ -115,7 +115,7 @@ function DateRangePickerViewRaw(props) {
115
115
  disableHighlightToday,
116
116
  onMonthSwitchingAnimationEnd,
117
117
  changeMonth,
118
- currentlySelectingRangeEnd,
118
+ rangePosition,
119
119
  disableFuture,
120
120
  disablePast,
121
121
  minDate,
@@ -146,8 +146,8 @@ function DateRangePickerViewRaw(props) {
146
146
  value: value,
147
147
  isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,
148
148
  toggleMobileKeyboardView: toggleMobileKeyboardView,
149
- currentlySelectingRangeEnd: currentlySelectingRangeEnd,
150
- setCurrentlySelectingRangeEnd: setCurrentlySelectingRangeEnd
149
+ rangePosition: rangePosition,
150
+ onRangePositionChange: onRangePositionChange
151
151
  })), isMobileKeyboardViewOpen ? /*#__PURE__*/_jsx(MobileKeyboardInputView, {
152
152
  children: /*#__PURE__*/_jsx(DateRangePickerInput, _extends({
153
153
  disableOpenPicker: true,
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { SlotComponentProps } from '@mui/base/utils';
3
3
  import { DayCalendarProps, DayValidationProps, ExportedPickersArrowSwitcherProps, PickersArrowSwitcherSlotsComponent, PickersArrowSwitcherSlotsComponentsProps, DayCalendarSlotsComponent, DayCalendarSlotsComponentsProps } from '@mui/x-date-pickers/internals';
4
- import { DateRange } from '../internal/models/range';
4
+ import { DateRange, RangePosition } from '../internal/models/range';
5
5
  import { DateRangePickerDay, DateRangePickerDayProps } from '../DateRangePickerDay';
6
6
  import { DateRangePickerViewDesktopClasses } from './dateRangePickerViewDesktopClasses';
7
7
  export interface ExportedDateRangePickerViewDesktopProps {
@@ -38,7 +38,7 @@ export interface DateRangePickerViewDesktopProps<TDate> extends ExportedDateRang
38
38
  calendars: 1 | 2 | 3;
39
39
  value: DateRange<TDate>;
40
40
  changeMonth: (date: TDate) => void;
41
- currentlySelectingRangeEnd: 'start' | 'end';
41
+ rangePosition: RangePosition;
42
42
  classes?: Partial<DateRangePickerViewDesktopClasses>;
43
43
  }
44
44
  /**
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["calendars", "changeMonth", "components", "componentsProps", "currentlySelectingRangeEnd", "currentMonth", "value", "disableFuture", "disablePast", "maxDate", "minDate", "onSelectedDaysChange", "className", "classes"];
3
+ const _excluded = ["calendars", "changeMonth", "components", "componentsProps", "rangePosition", "currentMonth", "value", "disableFuture", "disablePast", "maxDate", "minDate", "onSelectedDaysChange", "className", "classes"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import { styled, useThemeProps } from '@mui/material/styles';
@@ -83,7 +83,7 @@ export function DateRangePickerViewDesktop(inProps) {
83
83
  changeMonth,
84
84
  components,
85
85
  componentsProps,
86
- currentlySelectingRangeEnd,
86
+ rangePosition,
87
87
  currentMonth,
88
88
  value,
89
89
  disableFuture,
@@ -117,7 +117,7 @@ export function DateRangePickerViewDesktop(inProps) {
117
117
  utils,
118
118
  range: valueDayRange,
119
119
  newDate: rangePreviewDay,
120
- currentlySelectingRangeEnd
120
+ rangePosition
121
121
  });
122
122
  const handleSelectedDayChange = React.useCallback(day => {
123
123
  setRangePreviewDay(null);