@mui/x-date-pickers-pro 8.6.0 → 8.8.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 (60) hide show
  1. package/CHANGELOG.md +202 -1
  2. package/DateRangeCalendar/DateRangeCalendar.js +3 -3
  3. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +1 -1
  4. package/DateRangePicker/DateRangePicker.js +1 -1
  5. package/DateRangePickerDay/DateRangePickerDay.js +1 -1
  6. package/DateTimeRangePicker/DateTimeRangePicker.js +1 -1
  7. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +5 -2
  8. package/DesktopDateRangePicker/DesktopDateRangePicker.js +1 -1
  9. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +6 -1
  10. package/DesktopTimeRangePicker/DesktopTimeRangePicker.js +1 -1
  11. package/MobileDateRangePicker/MobileDateRangePicker.js +1 -1
  12. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +1 -1
  13. package/MobileTimeRangePicker/MobileTimeRangePicker.js +1 -1
  14. package/MultiInputDateRangeField/MultiInputDateRangeField.js +1 -1
  15. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +1 -1
  16. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +1 -1
  17. package/SingleInputDateRangeField/SingleInputDateRangeField.js +1 -1
  18. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +1 -1
  19. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +1 -1
  20. package/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
  21. package/TimeRangePicker/TimeRangePicker.js +1 -1
  22. package/TimeRangePicker/TimeRangePickerTimeWrapper.js +5 -2
  23. package/esm/DateRangeCalendar/DateRangeCalendar.js +4 -4
  24. package/esm/DateRangeCalendar/DateRangeCalendar.types.d.ts +1 -1
  25. package/esm/DateRangePicker/DateRangePicker.js +1 -1
  26. package/esm/DateRangePickerDay/DateRangePickerDay.js +1 -1
  27. package/esm/DateTimeRangePicker/DateTimeRangePicker.js +1 -1
  28. package/esm/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +6 -3
  29. package/esm/DesktopDateRangePicker/DesktopDateRangePicker.js +1 -1
  30. package/esm/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +6 -1
  31. package/esm/DesktopTimeRangePicker/DesktopTimeRangePicker.js +1 -1
  32. package/esm/MobileDateRangePicker/MobileDateRangePicker.js +1 -1
  33. package/esm/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +1 -1
  34. package/esm/MobileTimeRangePicker/MobileTimeRangePicker.js +1 -1
  35. package/esm/MultiInputDateRangeField/MultiInputDateRangeField.js +1 -1
  36. package/esm/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +1 -1
  37. package/esm/MultiInputTimeRangeField/MultiInputTimeRangeField.js +1 -1
  38. package/esm/SingleInputDateRangeField/SingleInputDateRangeField.js +1 -1
  39. package/esm/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +1 -1
  40. package/esm/SingleInputTimeRangeField/SingleInputTimeRangeField.js +1 -1
  41. package/esm/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
  42. package/esm/TimeRangePicker/TimeRangePicker.js +1 -1
  43. package/esm/TimeRangePicker/TimeRangePickerTimeWrapper.js +6 -3
  44. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +2 -0
  45. package/esm/hooks/useMultiInputRangeField/useTextFieldProps.js +2 -0
  46. package/esm/index.js +2 -1
  47. package/esm/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +1 -1
  48. package/esm/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +1 -1
  49. package/esm/internals/utils/date-range-manager.d.ts +2 -1
  50. package/esm/internals/utils/date-range-manager.js +7 -1
  51. package/esm/internals/utils/valueManagers.js +3 -1
  52. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +1 -0
  53. package/hooks/useMultiInputRangeField/useTextFieldProps.js +1 -0
  54. package/index.js +1 -1
  55. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +1 -1
  56. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +1 -1
  57. package/internals/utils/date-range-manager.d.ts +2 -1
  58. package/internals/utils/date-range-manager.js +8 -1
  59. package/internals/utils/valueManagers.js +3 -1
  60. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -5,6 +5,207 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.8.0
9
+
10
+ _Jul 11, 2025_
11
+
12
+ We'd like to extend a big thank you to the 13 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 📊 Chart zoom preview can be enabled
15
+
16
+ <img width="758" alt="chart with x-axis preview" src="https://github.com/user-attachments/assets/50ce6f61-16dc-4e9b-a727-ca65d80927d7" />
17
+
18
+ - 🌎 Add Indonesian (id-ID) locale on the Data Grid
19
+
20
+ Special thanks go out to the community members for their valuable contributions:
21
+ @kennarddh
22
+
23
+ The following are all team members who have contributed to this release:
24
+ @alexfauquette, @arminmeh, @bernardobelchior, @cherniavskii, @JCQuintas, @KenanYusuf, @LukasTy, @MBilalShafi, @noraleonte, @prakhargupta1, @rita-codes, @siriwatknp
25
+
26
+ ### Data Grid
27
+
28
+ #### `@mui/x-data-grid@8.8.0`
29
+
30
+ - [DataGrid] Fix `useGridSelector` missing subscription in `React.StrictMode` (#18676) @cherniavskii
31
+ - [DataGrid] Fix scrollbar filler `z-index` (#18688) @KenanYusuf
32
+ - [DataGrid] Set correct data source cache chunk size when pagination is disabled (#18636) @arminmeh
33
+ - [l10n] Add Indonesian (id-ID) locale (#18710) @kennarddh
34
+
35
+ #### `@mui/x-data-grid-pro@8.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
36
+
37
+ Same changes as in `@mui/x-data-grid@8.8.0`, plus:
38
+
39
+ - [DataGridPro] Fix row ordering not auto-scrolling when moving beyond viewport (#18557) @MBilalShafi
40
+ - [DataGridPro] Set correct parent paths when tree is refreshed with data source tree data and row grouping (#18715) @arminmeh
41
+
42
+ #### `@mui/x-data-grid-premium@8.8.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
43
+
44
+ Same changes as in `@mui/x-data-grid-pro@8.8.0`.
45
+
46
+ ### Date and Time Pickers
47
+
48
+ #### `@mui/x-date-pickers@8.8.0`
49
+
50
+ Internal changes.
51
+
52
+ #### `@mui/x-date-pickers-pro@8.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
53
+
54
+ Same changes as in `@mui/x-date-pickers@8.8.0`.
55
+
56
+ ### Charts
57
+
58
+ #### `@mui/x-charts@8.8.0`
59
+
60
+ - [charts] Add control to the axis highlight (#17900) @alexfauquette
61
+ - [charts] Avoid processing area plot data if area isn't used in series (#18712) @bernardobelchior
62
+ - [charts] Make smarter default domain limit (#18506) @alexfauquette
63
+
64
+ #### `@mui/x-charts-pro@8.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
65
+
66
+ Same changes as in `@mui/x-charts@8.8.0`, plus:
67
+
68
+ - [charts-pro] Add `funnelDirection` to control pyramid direction (#18568) @JCQuintas
69
+ - [charts-pro] Add `onBeforeExport` callback (#18722) @bernardobelchior
70
+ - [charts-pro] Add chart zoom preview (#18267) @bernardobelchior
71
+ - [charts-pro] Allow customizing scatter preview marker size (#18726) @bernardobelchior
72
+ - [charts-pro] Allow disabling the copy of styles in charts export (#18753) @bernardobelchior
73
+
74
+ ### Tree View
75
+
76
+ #### `@mui/x-tree-view@8.8.0`
77
+
78
+ - [tree view] Fix state update that caused scrolling bug when lazy loading and `checkboxSelection` are enabled (#18749) @rita-codes
79
+
80
+ #### `@mui/x-tree-view-pro@8.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
81
+
82
+ Same changes as in `@mui/x-tree-view@8.8.0`.
83
+
84
+ ### Codemod
85
+
86
+ #### `@mui/x-codemod@8.8.0`
87
+
88
+ Internal changes.
89
+
90
+ ### Docs
91
+
92
+ - [docs] Add standalone Pyramid chart page to improve SEO (#18527) @prakhargupta1
93
+ - [docs] Add example to customise line interaction (#18539) @alexfauquette
94
+ - [docs] Fix `size` column filtering in files tree demo (#17952) @cherniavskii
95
+ - [docs] Generate `llms.txt` for X and their products (#18595) @siriwatknp
96
+ - [docs] Improve bar chart demos on mobile (#18721) @alexfauquette
97
+ - [docs] Refine charts overview page (#17447) @noraleonte
98
+
99
+ ### Miscellaneous
100
+
101
+ - [code-infra] Ensure all `@mui/*` packages are picked by `Material UI` renovate group (#18711) @LukasTy
102
+ - [code-infra] Fix broken CI (#18716) @LukasTy
103
+ - [code-infra] Refactor `prettier` config resolving (#18720) @LukasTy
104
+ - [test] Increase data points in chart benchmarks (#18714) @bernardobelchior
105
+
106
+ ## 8.7.0
107
+
108
+ _Jul 4, 2025_
109
+
110
+ We'd like to extend a big thank you to the 15 contributors who made this release possible. Here are some highlights ✨:
111
+
112
+ - 📊 Add `useChartProApiRef` for easier access to the API
113
+ - 📆 Support different start and end `referenceDate` props on range components
114
+ - 📚 Documentation improvements
115
+ - 🐞 Bugfixes
116
+ - 🌎 Improve Greek (el-GR) translations on the Charts
117
+ - 🌎 Improve Danish (da-DK) locale on the Data Grid
118
+
119
+ Special thanks go out to the community members for their valuable contributions:
120
+ @ShahrazH, @vadimkuragkovskiy, @whythecode
121
+
122
+ The following are all team members who have contributed to this release:
123
+ @alexfauquette, @brijeshb42, @mapache-salvaje, @arminmeh, @bernardobelchior, @bharatkashyap, @Janpot, @JCQuintas, @KenanYusuf, @LukasTy, @michelengelen, @rita-codes
124
+
125
+ ### Data Grid
126
+
127
+ #### `@mui/x-data-grid@8.7.0`
128
+
129
+ - [DataGrid] Fix column state restore with controlled column visibility model (#18567) @arminmeh
130
+ - [DataGrid] Fix styling virtualized column headers (#18603) @KenanYusuf
131
+ - [l10n] Improve Danish (da-DK) locale (#18537) @ShahrazH
132
+
133
+ #### `@mui/x-data-grid-pro@8.7.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
134
+
135
+ Same changes as in `@mui/x-data-grid@8.7.0`.
136
+
137
+ #### `@mui/x-data-grid-premium@8.7.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
138
+
139
+ Same changes as in `@mui/x-data-grid-pro@8.7.0`.
140
+
141
+ ### Date and Time Pickers
142
+
143
+ #### `@mui/x-date-pickers@8.7.0`
144
+
145
+ - [pickers] Support different `start` and `end` `referenceDate` props on range components (#18549) @LukasTy
146
+
147
+ #### `@mui/x-date-pickers-pro@8.7.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
148
+
149
+ Same changes as in `@mui/x-date-pickers@8.7.0`.
150
+
151
+ ### Charts
152
+
153
+ #### `@mui/x-charts@8.7.0`
154
+
155
+ - [charts] Export `ChartsReferenceLineProps` (#18598) @bernardobelchior
156
+ - [charts] Extract bar and line plot logic into reusable hooks (#18541) @bernardobelchior
157
+ - [charts] Extract plot logic into separate files for reuse (#18522) @bernardobelchior
158
+ - [charts] Profile charts benchmarks using chromium (#18528) @bernardobelchior
159
+ - [l10n] Add Greek (el-GR) locale to charts (#18548) @whythecode
160
+
161
+ #### `@mui/x-charts-pro@8.7.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
162
+
163
+ Same changes as in `@mui/x-charts@8.7.0`, plus:
164
+
165
+ - [charts-pro] Add `useChartProApiRef` for easier refs (#18013) @JCQuintas
166
+ - [charts-pro] Add tests and classes to zoom slider (#18660) @JCQuintas
167
+ - [charts-pro] Fix geometry not handling gestures in specific scenarios (#18651) @JCQuintas
168
+ - [charts-pro] Rename `useChartApiContext` to `useChartProApiContext` (#18565) @JCQuintas
169
+ - [charts-pro] Zoom pointer improvements (#17480) @JCQuintas
170
+
171
+ ### Tree View
172
+
173
+ #### `@mui/x-tree-view@8.7.0`
174
+
175
+ Internal changes.
176
+
177
+ #### `@mui/x-tree-view-pro@8.7.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
178
+
179
+ Same changes as in `@mui/x-tree-view@8.7.0`, plus:
180
+
181
+ - [tree view pro] Add missing `dataSource` JSDoc (#18650) @LukasTy
182
+
183
+ ### Docs
184
+
185
+ - [docs] Add MCP stub (#18204) @bharatkashyap
186
+ - [docs] Fix AI Assistant proxy rewrite prefix (#18661) @arminmeh
187
+ - [docs] Improve test README.MD (#18634) @LukasTy
188
+ - [docs] Provide workaround for pie chart composition (#18600) @alexfauquette
189
+ - [docs][charts] Add donut chart as a special case of a pie chart (#18652) @bernardobelchior
190
+ - [docs][charts] Centralize country and continent data (#18604) @bernardobelchior
191
+ - [docs][data grid] Audit and revise the Pro row docs (#17926) @mapache-salvaje
192
+ - [docs][pickers] Add mention of theme augmentation in relevant migration section (#18608) @LukasTy
193
+
194
+ ### Core
195
+
196
+ - [core] Avoid stringifying `document` object (#18657) @vadimkuragkovskiy
197
+
198
+ ### Miscellaneous
199
+
200
+ - [code-infra] Bump code-infra version and fix breaking changes (#18653) @brijeshb42
201
+ - [code-infra] Ensure `material-ui/disallow-react-api-in-server-components` ESLint rule is applied (#18570) @LukasTy
202
+ - [code-infra] Migrate to flat eslint config (#18562) @brijeshb42
203
+ - [code-infra] Refactor eslint config (#18643) @LukasTy
204
+ - [infra] Add renovatebot rule for latest infra packages (#18609) @Janpot
205
+ - [infra] Move pushArgos script to code-infra (#18667) @Janpot
206
+ - [infra] Updates release script to fetch latest major version from upstream (#18552) @michelengelen
207
+ - [release] Add missing contributor to changelog (#18561) @bernardobelchior
208
+
8
209
  ## 8.6.0
9
210
 
10
211
  _Jun 27, 2025_
@@ -19,7 +220,7 @@ We'd like to extend a big thank you to the 12 contributors who made this release
19
220
  - 🌎 Improve German (de-DE) locale
20
221
 
21
222
  Special thanks go out to the community members for their valuable contributions:
22
- @ShahrazH, @vadimka123
223
+ @omalyutin, @ShahrazH, @vadimka123
23
224
 
24
225
  The following are all team members who have contributed to this release:
25
226
  @arminmeh, @bernardobelchior, @JCQuintas, @KenanYusuf, @LukasTy, @MBilalShafi, @michelengelen, @noraleonte, @rita-codes, @sai6855
@@ -37,7 +37,7 @@ var _DateRangePickerDay2 = require("../DateRangePickerDay2");
37
37
  var _jsxRuntime = require("react/jsx-runtime");
38
38
  const _excluded = ["value", "defaultValue", "referenceDate", "onChange", "className", "classes", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "rangePosition", "defaultRangePosition", "onRangePositionChange", "calendars", "currentMonthCalendarPosition", "slots", "slotProps", "loading", "renderLoading", "disableHighlightToday", "focusedView", "onFocusedViewChange", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber", "timezone", "availableRangePositions", "views", "view", "openTo", "onViewChange"],
39
39
  _excluded2 = ["isDragging", "rangeDragDay", "draggingDatePosition"];
40
- const releaseInfo = "MTc1MDk3NTIwMDAwMA==";
40
+ const releaseInfo = "MTc1MjE4NDgwMDAwMA==";
41
41
  const DateRangeCalendarRoot = (0, _styles.styled)('div', {
42
42
  name: 'MuiDateRangeCalendar',
43
43
  slot: 'Root'
@@ -284,7 +284,7 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
284
284
  onMonthSwitchingAnimationEnd
285
285
  } = (0, _internals.useCalendarState)({
286
286
  value: value[0] || value[1],
287
- referenceDate,
287
+ referenceDate: (0, _dateRangeManager.resolveReferenceDate)(referenceDate, rangePosition),
288
288
  disableFuture,
289
289
  disablePast,
290
290
  maxDate,
@@ -687,7 +687,7 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
687
687
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
688
688
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`.
689
689
  */
690
- referenceDate: _propTypes.default.object,
690
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object.isRequired), _propTypes.default.object]),
691
691
  /**
692
692
  * Component rendered on the "day" view when `props.loading` is true.
693
693
  * @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
@@ -275,7 +275,7 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
275
275
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
276
276
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
277
277
  */
278
- referenceDate: _propTypes.default.object,
278
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
279
279
  /**
280
280
  * Component rendered on the "day" view when `props.loading` is true.
281
281
  * @returns {React.ReactNode} The node to render when loading.
@@ -235,7 +235,7 @@ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePi
235
235
  showDaysOutsideCurrentMonth
236
236
  } = props,
237
237
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
238
- (0, _xLicense.useLicenseVerifier)('x-date-pickers-pro', "MTc1MDk3NTIwMDAwMA==");
238
+ (0, _xLicense.useLicenseVerifier)('x-date-pickers-pro', "MTc1MjE4NDgwMDAwMA==");
239
239
  const adapter = (0, _hooks.usePickerAdapter)();
240
240
  const shouldRenderHighlight = isHighlighting && !outsideCurrentMonth;
241
241
  const shouldRenderPreview = isPreviewing && !outsideCurrentMonth;
@@ -320,7 +320,7 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
320
320
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
321
321
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
322
322
  */
323
- referenceDate: _propTypes.default.object,
323
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
324
324
  /**
325
325
  * Component rendered on the "day" view when `props.loading` is true.
326
326
  * @returns {React.ReactNode} The node to render when loading.
@@ -11,7 +11,7 @@ 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
13
  var _hooks2 = require("../hooks");
14
- const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
14
+ const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className", "referenceDate"];
15
15
  /**
16
16
  * @ignore - internal component.
17
17
  */
@@ -23,7 +23,8 @@ function DateTimeRangePickerTimeWrapper(props) {
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 {
@@ -34,6 +35,7 @@ function DateTimeRangePickerTimeWrapper(props) {
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;
@@ -50,6 +52,7 @@ function DateTimeRangePickerTimeWrapper(props) {
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,
@@ -285,7 +285,7 @@ DesktopDateRangePicker.propTypes = {
285
285
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
286
286
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
287
287
  */
288
- referenceDate: _propTypes.default.object,
288
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
289
289
  /**
290
290
  * Component rendered on the "day" view when `props.loading` is true.
291
291
  * @returns {React.ReactNode} The node to render when loading.
@@ -30,6 +30,7 @@ var _SingleInputDateTimeRangeField = require("../SingleInputDateTimeRangeField")
30
30
  var _DateTimeRangePickerTimeWrapper = require("../DateTimeRangePicker/DateTimeRangePickerTimeWrapper");
31
31
  var _dimensions = require("../internals/constants/dimensions");
32
32
  var _hooks2 = require("../hooks");
33
+ var _dateRangeManager = require("../internals/utils/date-range-manager");
33
34
  var _jsxRuntime = require("react/jsx-runtime");
34
35
  const _excluded = ["openTo"];
35
36
  const STEPS = [{
@@ -63,8 +64,11 @@ const rendererInterceptor = function RendererInterceptor(props) {
63
64
  }]
64
65
  });
65
66
  const isTimeViewActive = (0, _internals.isInternalTimeView)(popperView);
67
+ const referenceDate = (0, _dateRangeManager.resolveReferenceDate)(rendererProps.referenceDate, rangePosition);
66
68
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
67
69
  children: [viewRenderers.day?.((0, _extends2.default)({}, rendererProps, {
70
+ referenceDate,
71
+ rangePosition,
68
72
  availableRangePositions: [rangePosition],
69
73
  view: !isTimeViewActive ? popperView : 'day',
70
74
  views: rendererProps.views.filter(_internals.isDatePickerView),
@@ -77,6 +81,7 @@ const rendererInterceptor = function RendererInterceptor(props) {
77
81
  gridColumn: 2
78
82
  }
79
83
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DateTimeRangePickerTimeWrapper.DateTimeRangePickerTimeWrapper, (0, _extends2.default)({}, finalProps, {
84
+ referenceDate: referenceDate,
80
85
  view: isTimeViewActive ? popperView : 'hours',
81
86
  views: finalProps.views.filter(_internals.isInternalTimeView),
82
87
  openTo: (0, _internals.isInternalTimeView)(openTo) ? openTo : 'hours',
@@ -410,7 +415,7 @@ DesktopDateTimeRangePicker.propTypes = {
410
415
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
411
416
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
412
417
  */
413
- referenceDate: _propTypes.default.object,
418
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
414
419
  /**
415
420
  * Component rendered on the "day" view when `props.loading` is true.
416
421
  * @returns {React.ReactNode} The node to render when loading.
@@ -316,7 +316,7 @@ DesktopTimeRangePicker.propTypes = {
316
316
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
317
317
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
318
318
  */
319
- referenceDate: _propTypes.default.object,
319
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
320
320
  /**
321
321
  * The currently selected sections.
322
322
  * This prop accepts four formats:
@@ -282,7 +282,7 @@ MobileDateRangePicker.propTypes = {
282
282
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
283
283
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
284
284
  */
285
- referenceDate: _propTypes.default.object,
285
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
286
286
  /**
287
287
  * Component rendered on the "day" view when `props.loading` is true.
288
288
  * @returns {React.ReactNode} The node to render when loading.
@@ -415,7 +415,7 @@ MobileDateTimeRangePicker.propTypes = {
415
415
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
416
416
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
417
417
  */
418
- referenceDate: _propTypes.default.object,
418
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
419
419
  /**
420
420
  * Component rendered on the "day" view when `props.loading` is true.
421
421
  * @returns {React.ReactNode} The node to render when loading.
@@ -304,7 +304,7 @@ MobileTimeRangePicker.propTypes = {
304
304
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
305
305
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
306
306
  */
307
- referenceDate: _propTypes.default.object,
307
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
308
308
  /**
309
309
  * The currently selected sections.
310
310
  * This prop accepts four formats:
@@ -134,7 +134,7 @@ MultiInputDateRangeField.propTypes = {
134
134
  * For example, on time fields it will be used to determine the date to set.
135
135
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
136
136
  */
137
- referenceDate: _propTypes.default.object,
137
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
138
138
  /**
139
139
  * The currently selected sections.
140
140
  * This prop accepts four formats:
@@ -167,7 +167,7 @@ MultiInputDateTimeRangeField.propTypes = {
167
167
  * For example, on time fields it will be used to determine the date to set.
168
168
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
169
169
  */
170
- referenceDate: _propTypes.default.object,
170
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
171
171
  /**
172
172
  * The currently selected sections.
173
173
  * This prop accepts four formats:
@@ -150,7 +150,7 @@ MultiInputTimeRangeField.propTypes = {
150
150
  * For example, on time fields it will be used to determine the date to set.
151
151
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
152
152
  */
153
- referenceDate: _propTypes.default.object,
153
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
154
154
  /**
155
155
  * The currently selected sections.
156
156
  * This prop accepts four formats:
@@ -237,7 +237,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
237
237
  * For example, on time fields it will be used to determine the date to set.
238
238
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
239
239
  */
240
- referenceDate: _propTypes.default.object,
240
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
241
241
  /**
242
242
  * If `true`, the label is displayed as required and the `input` element is required.
243
243
  * @default false
@@ -270,7 +270,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateTimeRangeField.propTypes
270
270
  * For example, on time fields it will be used to determine the date to set.
271
271
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
272
272
  */
273
- referenceDate: _propTypes.default.object,
273
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
274
274
  /**
275
275
  * If `true`, the label is displayed as required and the `input` element is required.
276
276
  * @default false
@@ -252,7 +252,7 @@ process.env.NODE_ENV !== "production" ? SingleInputTimeRangeField.propTypes = {
252
252
  * For example, on time fields it will be used to determine the date to set.
253
253
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
254
254
  */
255
- referenceDate: _propTypes.default.object,
255
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
256
256
  /**
257
257
  * If `true`, the label is displayed as required and the `input` element is required.
258
258
  * @default false
@@ -227,7 +227,7 @@ StaticDateRangePicker.propTypes = {
227
227
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
228
228
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
229
229
  */
230
- referenceDate: _propTypes.default.object,
230
+ referenceDate: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
231
231
  /**
232
232
  * Component rendered on the "day" view when `props.loading` is true.
233
233
  * @returns {React.ReactNode} The node to render when loading.
@@ -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:
@@ -11,7 +11,7 @@ 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
13
  var _hooks2 = require("../hooks");
14
- const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
14
+ const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className", "referenceDate"];
15
15
  /**
16
16
  * @ignore - internal component.
17
17
  */
@@ -23,7 +23,8 @@ function TimeRangePickerTimeWrapper(props) {
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 {
@@ -34,6 +35,7 @@ function TimeRangePickerTimeWrapper(props) {
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;
@@ -50,6 +52,7 @@ function TimeRangePickerTimeWrapper(props) {
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,
@@ -20,7 +20,7 @@ import { warnOnce } from '@mui/x-internals/warning';
20
20
  import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
21
21
  import { dateRangeCalendarClasses, getDateRangeCalendarUtilityClass } from "./dateRangeCalendarClasses.js";
22
22
  import { isEndOfRange, isRangeValid, isStartOfRange, isWithinRange } from "../internals/utils/date-utils.js";
23
- import { calculateRangeChange, calculateRangePreview } from "../internals/utils/date-range-manager.js";
23
+ import { calculateRangeChange, calculateRangePreview, resolveReferenceDate } from "../internals/utils/date-range-manager.js";
24
24
  import { DateRangePickerDay, dateRangePickerDayClasses as dayClasses } from "../DateRangePickerDay/index.js";
25
25
  import { rangeValueManager } from "../internals/utils/valueManagers.js";
26
26
  import { useDragRange } from "./useDragRange.js";
@@ -30,7 +30,7 @@ import { PickersRangeCalendarHeader } from "../PickersRangeCalendarHeader/index.
30
30
  import { useNullablePickerRangePositionContext } from "../internals/hooks/useNullablePickerRangePositionContext.js";
31
31
  import { dateRangePickerDay2Classes } from "../DateRangePickerDay2/index.js";
32
32
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
33
- const releaseInfo = "MTc1MDk3NTIwMDAwMA==";
33
+ const releaseInfo = "MTc1MjE4NDgwMDAwMA==";
34
34
  const DateRangeCalendarRoot = styled('div', {
35
35
  name: 'MuiDateRangeCalendar',
36
36
  slot: 'Root'
@@ -277,7 +277,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
277
277
  onMonthSwitchingAnimationEnd
278
278
  } = useCalendarState({
279
279
  value: value[0] || value[1],
280
- referenceDate,
280
+ referenceDate: resolveReferenceDate(referenceDate, rangePosition),
281
281
  disableFuture,
282
282
  disablePast,
283
283
  maxDate,
@@ -680,7 +680,7 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
680
680
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
681
681
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`.
682
682
  */
683
- referenceDate: PropTypes.object,
683
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object.isRequired), PropTypes.object]),
684
684
  /**
685
685
  * Component rendered on the "day" view when `props.loading` is true.
686
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
@@ -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.
@@ -228,7 +228,7 @@ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePi
228
228
  showDaysOutsideCurrentMonth
229
229
  } = props,
230
230
  other = _objectWithoutPropertiesLoose(props, _excluded);
231
- useLicenseVerifier('x-date-pickers-pro', "MTc1MDk3NTIwMDAwMA==");
231
+ useLicenseVerifier('x-date-pickers-pro', "MTc1MjE4NDgwMDAwMA==");
232
232
  const adapter = usePickerAdapter();
233
233
  const shouldRenderHighlight = isHighlighting && !outsideCurrentMonth;
234
234
  const shouldRenderPreview = isPreviewing && !outsideCurrentMonth;
@@ -313,7 +313,7 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
313
313
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
314
314
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
315
315
  */
316
- referenceDate: PropTypes.object,
316
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
317
317
  /**
318
318
  * Component rendered on the "day" view when `props.loading` is true.
319
319
  * @returns {React.ReactNode} The node to render when loading.
@@ -1,9 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
3
+ const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className", "referenceDate"];
4
4
  import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
5
5
  import { isRangeValid } from "../internals/utils/date-utils.js";
6
- import { calculateRangeChange } from "../internals/utils/date-range-manager.js";
6
+ import { calculateRangeChange, resolveReferenceDate } from "../internals/utils/date-range-manager.js";
7
7
  import { usePickerRangePositionContext } from "../hooks/index.js";
8
8
  /**
9
9
  * @ignore - internal component.
@@ -16,7 +16,8 @@ function DateTimeRangePickerTimeWrapper(props) {
16
16
  onChange,
17
17
  defaultValue,
18
18
  onViewChange,
19
- views
19
+ views,
20
+ referenceDate: referenceDateProp
20
21
  } = props,
21
22
  other = _objectWithoutPropertiesLoose(props, _excluded);
22
23
  const {
@@ -27,6 +28,7 @@ function DateTimeRangePickerTimeWrapper(props) {
27
28
  }
28
29
  const currentValue = (rangePosition === 'start' ? value?.[0] : value?.[1]) ?? null;
29
30
  const currentDefaultValue = (rangePosition === 'start' ? defaultValue?.[0] : defaultValue?.[1]) ?? null;
31
+ const referenceDate = resolveReferenceDate(referenceDateProp, rangePosition);
30
32
  const handleOnChange = (newDate, selectionState, selectedView) => {
31
33
  if (!onChange || !value) {
32
34
  return;
@@ -43,6 +45,7 @@ function DateTimeRangePickerTimeWrapper(props) {
43
45
  onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView);
44
46
  };
45
47
  return viewRenderer(_extends({}, other, {
48
+ referenceDate,
46
49
  views,
47
50
  onViewChange,
48
51
  value: currentValue,
@@ -278,7 +278,7 @@ DesktopDateRangePicker.propTypes = {
278
278
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
279
279
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
280
280
  */
281
- referenceDate: PropTypes.object,
281
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
282
282
  /**
283
283
  * Component rendered on the "day" view when `props.loading` is true.
284
284
  * @returns {React.ReactNode} The node to render when loading.
@@ -24,6 +24,7 @@ import { SingleInputDateTimeRangeField } from "../SingleInputDateTimeRangeField/
24
24
  import { DateTimeRangePickerTimeWrapper } from "../DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js";
25
25
  import { RANGE_VIEW_HEIGHT } from "../internals/constants/dimensions.js";
26
26
  import { usePickerRangePositionContext } from "../hooks/index.js";
27
+ import { resolveReferenceDate } from "../internals/utils/date-range-manager.js";
27
28
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
28
29
  const STEPS = [{
29
30
  views: null,
@@ -56,8 +57,11 @@ const rendererInterceptor = function RendererInterceptor(props) {
56
57
  }]
57
58
  });
58
59
  const isTimeViewActive = isInternalTimeView(popperView);
60
+ const referenceDate = resolveReferenceDate(rendererProps.referenceDate, rangePosition);
59
61
  return /*#__PURE__*/_jsxs(React.Fragment, {
60
62
  children: [viewRenderers.day?.(_extends({}, rendererProps, {
63
+ referenceDate,
64
+ rangePosition,
61
65
  availableRangePositions: [rangePosition],
62
66
  view: !isTimeViewActive ? popperView : 'day',
63
67
  views: rendererProps.views.filter(isDatePickerView),
@@ -70,6 +74,7 @@ const rendererInterceptor = function RendererInterceptor(props) {
70
74
  gridColumn: 2
71
75
  }
72
76
  }), /*#__PURE__*/_jsx(DateTimeRangePickerTimeWrapper, _extends({}, finalProps, {
77
+ referenceDate: referenceDate,
73
78
  view: isTimeViewActive ? popperView : 'hours',
74
79
  views: finalProps.views.filter(isInternalTimeView),
75
80
  openTo: isInternalTimeView(openTo) ? openTo : 'hours',
@@ -403,7 +408,7 @@ DesktopDateTimeRangePicker.propTypes = {
403
408
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
404
409
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
405
410
  */
406
- referenceDate: PropTypes.object,
411
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
407
412
  /**
408
413
  * Component rendered on the "day" view when `props.loading` is true.
409
414
  * @returns {React.ReactNode} The node to render when loading.
@@ -309,7 +309,7 @@ DesktopTimeRangePicker.propTypes = {
309
309
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
310
310
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
311
311
  */
312
- referenceDate: PropTypes.object,
312
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
313
313
  /**
314
314
  * The currently selected sections.
315
315
  * This prop accepts four formats:
@@ -275,7 +275,7 @@ MobileDateRangePicker.propTypes = {
275
275
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
276
276
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
277
277
  */
278
- referenceDate: PropTypes.object,
278
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
279
279
  /**
280
280
  * Component rendered on the "day" view when `props.loading` is true.
281
281
  * @returns {React.ReactNode} The node to render when loading.
@@ -408,7 +408,7 @@ MobileDateTimeRangePicker.propTypes = {
408
408
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
409
409
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
410
410
  */
411
- referenceDate: PropTypes.object,
411
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
412
412
  /**
413
413
  * Component rendered on the "day" view when `props.loading` is true.
414
414
  * @returns {React.ReactNode} The node to render when loading.
@@ -297,7 +297,7 @@ MobileTimeRangePicker.propTypes = {
297
297
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
298
298
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
299
299
  */
300
- referenceDate: PropTypes.object,
300
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
301
301
  /**
302
302
  * The currently selected sections.
303
303
  * This prop accepts four formats:
@@ -130,7 +130,7 @@ MultiInputDateRangeField.propTypes = {
130
130
  * For example, on time fields it will be used to determine the date to set.
131
131
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
132
132
  */
133
- referenceDate: PropTypes.object,
133
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
134
134
  /**
135
135
  * The currently selected sections.
136
136
  * This prop accepts four formats:
@@ -163,7 +163,7 @@ MultiInputDateTimeRangeField.propTypes = {
163
163
  * For example, on time fields it will be used to determine the date to set.
164
164
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
165
165
  */
166
- referenceDate: PropTypes.object,
166
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
167
167
  /**
168
168
  * The currently selected sections.
169
169
  * This prop accepts four formats:
@@ -146,7 +146,7 @@ MultiInputTimeRangeField.propTypes = {
146
146
  * For example, on time fields it will be used to determine the date to set.
147
147
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
148
148
  */
149
- referenceDate: PropTypes.object,
149
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
150
150
  /**
151
151
  * The currently selected sections.
152
152
  * This prop accepts four formats:
@@ -230,7 +230,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
230
230
  * For example, on time fields it will be used to determine the date to set.
231
231
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
232
232
  */
233
- referenceDate: PropTypes.object,
233
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
234
234
  /**
235
235
  * If `true`, the label is displayed as required and the `input` element is required.
236
236
  * @default false
@@ -263,7 +263,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateTimeRangeField.propTypes
263
263
  * For example, on time fields it will be used to determine the date to set.
264
264
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
265
265
  */
266
- referenceDate: PropTypes.object,
266
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
267
267
  /**
268
268
  * If `true`, the label is displayed as required and the `input` element is required.
269
269
  * @default false
@@ -245,7 +245,7 @@ process.env.NODE_ENV !== "production" ? SingleInputTimeRangeField.propTypes = {
245
245
  * For example, on time fields it will be used to determine the date to set.
246
246
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
247
247
  */
248
- referenceDate: PropTypes.object,
248
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
249
249
  /**
250
250
  * If `true`, the label is displayed as required and the `input` element is required.
251
251
  * @default false
@@ -220,7 +220,7 @@ StaticDateRangePicker.propTypes = {
220
220
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
221
221
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
222
222
  */
223
- referenceDate: PropTypes.object,
223
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
224
224
  /**
225
225
  * Component rendered on the "day" view when `props.loading` is true.
226
226
  * @returns {React.ReactNode} The node to render when loading.
@@ -243,7 +243,7 @@ process.env.NODE_ENV !== "production" ? TimeRangePicker.propTypes = {
243
243
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
244
244
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
245
245
  */
246
- referenceDate: PropTypes.object,
246
+ referenceDate: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
247
247
  /**
248
248
  * The currently selected sections.
249
249
  * This prop accepts four formats:
@@ -1,9 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
3
+ const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className", "referenceDate"];
4
4
  import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
5
5
  import { isRangeValid } from "../internals/utils/date-utils.js";
6
- import { calculateRangeChange } from "../internals/utils/date-range-manager.js";
6
+ import { calculateRangeChange, resolveReferenceDate } from "../internals/utils/date-range-manager.js";
7
7
  import { usePickerRangePositionContext } from "../hooks/index.js";
8
8
  /**
9
9
  * @ignore - internal component.
@@ -16,7 +16,8 @@ function TimeRangePickerTimeWrapper(props) {
16
16
  onChange,
17
17
  defaultValue,
18
18
  onViewChange,
19
- views
19
+ views,
20
+ referenceDate: referenceDateProp
20
21
  } = props,
21
22
  other = _objectWithoutPropertiesLoose(props, _excluded);
22
23
  const {
@@ -27,6 +28,7 @@ function TimeRangePickerTimeWrapper(props) {
27
28
  }
28
29
  const currentValue = (rangePosition === 'start' ? value?.[0] : value?.[1]) ?? null;
29
30
  const currentDefaultValue = (rangePosition === 'start' ? defaultValue?.[0] : defaultValue?.[1]) ?? null;
31
+ const referenceDate = resolveReferenceDate(referenceDateProp, rangePosition);
30
32
  const handleOnChange = (newDate, selectionState, selectedView) => {
31
33
  if (!onChange || !value) {
32
34
  return;
@@ -43,6 +45,7 @@ function TimeRangePickerTimeWrapper(props) {
43
45
  onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView);
44
46
  };
45
47
  return viewRenderer(_extends({}, other, {
48
+ referenceDate,
46
49
  views,
47
50
  onViewChange,
48
51
  value: currentValue,
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
  import useForkRef from '@mui/utils/useForkRef';
3
5
  import useEventCallback from '@mui/utils/useEventCallback';
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
5
  const _excluded = ["clearable", "onClear", "openPickerAriaLabel"];
package/esm/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.6.0
2
+ * @mui/x-date-pickers-pro v8.8.0
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
+ // eslint-disable-next-line no-restricted-imports
8
9
  export * from '@mui/x-date-pickers';
9
10
  export * from "./DateRangePickerDay/index.js";
10
11
  export * from "./DateRangePickerDay2/index.js";
@@ -19,7 +19,7 @@ export const useDesktopRangePicker = _ref => {
19
19
  steps
20
20
  } = _ref,
21
21
  pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
22
- useLicenseVerifier('x-date-pickers-pro', "MTc1MDk3NTIwMDAwMA==");
22
+ useLicenseVerifier('x-date-pickers-pro', "MTc1MjE4NDgwMDAwMA==");
23
23
  const {
24
24
  slots,
25
25
  slotProps,
@@ -21,7 +21,7 @@ export const useMobileRangePicker = _ref => {
21
21
  steps
22
22
  } = _ref,
23
23
  pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
24
- useLicenseVerifier('x-date-pickers-pro', "MTc1MDk3NTIwMDAwMA==");
24
+ useLicenseVerifier('x-date-pickers-pro', "MTc1MjE4NDgwMDAwMA==");
25
25
  const {
26
26
  slots,
27
27
  slotProps: innerSlotProps,
@@ -13,12 +13,13 @@ interface CalculateRangeChangeOptions {
13
13
  */
14
14
  allowRangeFlip?: boolean;
15
15
  shouldMergeDateAndTime?: boolean;
16
- referenceDate?: PickerValidDate;
16
+ referenceDate?: PickerValidDate | [PickerValidDate, PickerValidDate];
17
17
  }
18
18
  interface CalculateRangeChangeResponse {
19
19
  nextSelection: RangePosition;
20
20
  newRange: PickerRangeValue;
21
21
  }
22
+ export declare function resolveReferenceDate(referenceDate: PickerValidDate | [PickerValidDate, PickerValidDate] | undefined, rangePosition: RangePosition): PickerValidDate | undefined;
22
23
  export declare function calculateRangeChange({
23
24
  adapter,
24
25
  range,
@@ -1,4 +1,10 @@
1
1
  import { mergeDateAndTime } from '@mui/x-date-pickers/internals';
2
+ export function resolveReferenceDate(referenceDate, rangePosition) {
3
+ if (Array.isArray(referenceDate)) {
4
+ return rangePosition === 'start' ? referenceDate[0] : referenceDate[1];
5
+ }
6
+ return referenceDate;
7
+ }
2
8
  export function calculateRangeChange({
3
9
  adapter,
4
10
  range,
@@ -19,7 +25,7 @@ export function calculateRangeChange({
19
25
  selectedDate = mergeDateAndTime(adapter, selectedDate, end);
20
26
  }
21
27
  }
22
- const newSelectedDate = referenceDate && selectedDate && shouldMergeDateAndTime ? mergeDateAndTime(adapter, selectedDate, referenceDate) : selectedDate;
28
+ const newSelectedDate = referenceDate && selectedDate && shouldMergeDateAndTime ? mergeDateAndTime(adapter, selectedDate, resolveReferenceDate(referenceDate, rangePosition)) : selectedDate;
23
29
  if (rangePosition === 'start') {
24
30
  const truthyResult = allowRangeFlip ? {
25
31
  nextSelection: 'start',
@@ -18,7 +18,9 @@ export const rangeValueManager = {
18
18
  return value;
19
19
  }
20
20
  const referenceDate = referenceDateProp ?? getDefaultReferenceDate(params);
21
- return [shouldKeepStartDate ? value[0] : referenceDate, shouldKeepEndDate ? value[1] : referenceDate];
21
+ const startReferenceDate = Array.isArray(referenceDate) ? referenceDate[0] : referenceDate;
22
+ const endReferenceDate = Array.isArray(referenceDate) ? referenceDate[1] : referenceDate;
23
+ return [shouldKeepStartDate ? value[0] : startReferenceDate, shouldKeepEndDate ? value[1] : endReferenceDate];
22
24
  },
23
25
  cleanValue: (utils, value) => value.map(date => replaceInvalidDateByNull(utils, date)),
24
26
  areValuesEqual: (utils, a, b) => areDatesEqual(utils, a[0], b[0]) && areDatesEqual(utils, a[1], b[1]),
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.6.0
2
+ * @mui/x-date-pickers-pro v8.8.0
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -27,7 +27,7 @@ const useDesktopRangePicker = _ref => {
27
27
  steps
28
28
  } = _ref,
29
29
  pickerParams = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
30
- (0, _xLicense.useLicenseVerifier)('x-date-pickers-pro', "MTc1MDk3NTIwMDAwMA==");
30
+ (0, _xLicense.useLicenseVerifier)('x-date-pickers-pro', "MTc1MjE4NDgwMDAwMA==");
31
31
  const {
32
32
  slots,
33
33
  slotProps,
@@ -29,7 +29,7 @@ const useMobileRangePicker = _ref => {
29
29
  steps
30
30
  } = _ref,
31
31
  pickerParams = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
32
- (0, _xLicense.useLicenseVerifier)('x-date-pickers-pro', "MTc1MDk3NTIwMDAwMA==");
32
+ (0, _xLicense.useLicenseVerifier)('x-date-pickers-pro', "MTc1MjE4NDgwMDAwMA==");
33
33
  const {
34
34
  slots,
35
35
  slotProps: innerSlotProps,
@@ -13,12 +13,13 @@ interface CalculateRangeChangeOptions {
13
13
  */
14
14
  allowRangeFlip?: boolean;
15
15
  shouldMergeDateAndTime?: boolean;
16
- referenceDate?: PickerValidDate;
16
+ referenceDate?: PickerValidDate | [PickerValidDate, PickerValidDate];
17
17
  }
18
18
  interface CalculateRangeChangeResponse {
19
19
  nextSelection: RangePosition;
20
20
  newRange: PickerRangeValue;
21
21
  }
22
+ export declare function resolveReferenceDate(referenceDate: PickerValidDate | [PickerValidDate, PickerValidDate] | undefined, rangePosition: RangePosition): PickerValidDate | undefined;
22
23
  export declare function calculateRangeChange({
23
24
  adapter,
24
25
  range,
@@ -5,7 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.calculateRangeChange = calculateRangeChange;
7
7
  exports.calculateRangePreview = calculateRangePreview;
8
+ exports.resolveReferenceDate = resolveReferenceDate;
8
9
  var _internals = require("@mui/x-date-pickers/internals");
10
+ function resolveReferenceDate(referenceDate, rangePosition) {
11
+ if (Array.isArray(referenceDate)) {
12
+ return rangePosition === 'start' ? referenceDate[0] : referenceDate[1];
13
+ }
14
+ return referenceDate;
15
+ }
9
16
  function calculateRangeChange({
10
17
  adapter,
11
18
  range,
@@ -26,7 +33,7 @@ function calculateRangeChange({
26
33
  selectedDate = (0, _internals.mergeDateAndTime)(adapter, selectedDate, end);
27
34
  }
28
35
  }
29
- const newSelectedDate = referenceDate && selectedDate && shouldMergeDateAndTime ? (0, _internals.mergeDateAndTime)(adapter, selectedDate, referenceDate) : selectedDate;
36
+ const newSelectedDate = referenceDate && selectedDate && shouldMergeDateAndTime ? (0, _internals.mergeDateAndTime)(adapter, selectedDate, resolveReferenceDate(referenceDate, rangePosition)) : selectedDate;
30
37
  if (rangePosition === 'start') {
31
38
  const truthyResult = allowRangeFlip ? {
32
39
  nextSelection: 'start',
@@ -25,7 +25,9 @@ const rangeValueManager = exports.rangeValueManager = {
25
25
  return value;
26
26
  }
27
27
  const referenceDate = referenceDateProp ?? (0, _internals.getDefaultReferenceDate)(params);
28
- return [shouldKeepStartDate ? value[0] : referenceDate, shouldKeepEndDate ? value[1] : referenceDate];
28
+ const startReferenceDate = Array.isArray(referenceDate) ? referenceDate[0] : referenceDate;
29
+ const endReferenceDate = Array.isArray(referenceDate) ? referenceDate[1] : referenceDate;
30
+ return [shouldKeepStartDate ? value[0] : startReferenceDate, shouldKeepEndDate ? value[1] : endReferenceDate];
29
31
  },
30
32
  cleanValue: (utils, value) => value.map(date => (0, _internals.replaceInvalidDateByNull)(utils, date)),
31
33
  areValuesEqual: (utils, a, b) => (0, _internals.areDatesEqual)(utils, a[0], b[0]) && (0, _internals.areDatesEqual)(utils, a[1], b[1]),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers-pro",
3
- "version": "8.6.0",
3
+ "version": "8.8.0",
4
4
  "author": "MUI Team",
5
5
  "description": "The Pro plan edition of the MUI X Date and Time Picker components.",
6
6
  "main": "./index.js",
@@ -33,13 +33,13 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@babel/runtime": "^7.27.6",
36
- "@mui/utils": "^7.1.1",
36
+ "@mui/utils": "^7.2.0",
37
37
  "clsx": "^2.1.1",
38
38
  "prop-types": "^15.8.1",
39
39
  "react-transition-group": "^4.4.5",
40
- "@mui/x-license": "8.6.0",
41
- "@mui/x-date-pickers": "8.6.0",
42
- "@mui/x-internals": "8.6.0"
40
+ "@mui/x-internals": "8.8.0",
41
+ "@mui/x-date-pickers": "8.8.0",
42
+ "@mui/x-license": "8.8.0"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@emotion/react": "^11.9.0",