@mui/x-date-pickers-pro 9.7.0 β†’ 9.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,135 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.8.0
4
+
5
+ _Jul 2, 2026_
6
+
7
+ We'd like to extend a big thank you to the 18 contributors who made this release possible. Here are some highlights ✨:
8
+
9
+ - πŸ—ΊοΈ New [`MapImagePlot`](https://mui.com/x/react-charts/map/) for rendering raster base maps, with `onItemClick` support on map shapes (Premium)
10
+ - πŸ“Š New [`usePolarGeometry`](https://mui.com/x/react-charts/hooks/use-polar-geometry/) hook to build custom radial overlays
11
+ - 🐞 Bugfixes
12
+ - πŸ“š Documentation improvements
13
+
14
+ Special thanks go out to these community members for their valuable contributions:
15
+ @Anexus5919, @aromanio, @greymoth-jp, @mustafajw07, @timbuckley, @voidmatcha
16
+
17
+ The following team members contributed to this release:
18
+ @alexfauquette, @arminmeh, @cherniavskii, @flaviendelangle, @Janpot, @JCQuintas, @joserodolfofreitas, @LukasTy, @mapache-salvaje, @michelengelen, @rita-codes, @sai6855
19
+
20
+ ### Data Grid
21
+
22
+ #### `@mui/x-data-grid@9.8.0`
23
+
24
+ - [DataGrid] Prevent cell editing from resurrecting a deleted row (#22958) @Anexus5919
25
+ - [DataGrid] Avoid reading `type` of `undefined` in `gridRowUtils` (#21808) @timbuckley
26
+ - [DataGrid] Improved get started tutorial (#22911) @joserodolfofreitas
27
+ - [l10n] Improve Japanese (ja-JP) locale (#23001) @greymoth-jp
28
+
29
+ #### `@mui/x-data-grid-pro@9.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
30
+
31
+ Same changes as in `@mui/x-data-grid@9.8.0`.
32
+
33
+ #### `@mui/x-data-grid-premium@9.8.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
34
+
35
+ Same changes as in `@mui/x-data-grid-pro@9.8.0`, plus:
36
+
37
+ - [DataGridPremium] Escape `singleSelect` values in Excel export with `escapeFormulas` enabled (#22851) @Anexus5919
38
+
39
+ ### Date and Time Pickers
40
+
41
+ #### `@mui/x-date-pickers@9.8.0`
42
+
43
+ - [pickers] Fix localized digit crash (#22995) @alexfauquette
44
+ - [pickers] Flag the first and last visible day cell across year boundaries (#22981) @Anexus5919
45
+ - [pickers] Use calendar day tokens in `AdapterMomentHijri` and `AdapterMomentJalaali` formats (#22974) @Anexus5919
46
+ - [pickers] Use the Hijri day token in `AdapterMomentHijri` `normalDateWithWeekday` (#22972) @Anexus5919
47
+ - [l10n] Improve Romanian (ro-RO) locale (#22969) @aromanio
48
+
49
+ #### `@mui/x-date-pickers-pro@9.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
50
+
51
+ Same changes as in `@mui/x-date-pickers@9.8.0`, plus:
52
+
53
+ - [DateRangeCalendar] Fix auto month-switch across the year boundary (#22987) @Anexus5919
54
+
55
+ ### Charts
56
+
57
+ #### `@mui/x-charts@9.8.0`
58
+
59
+ - [charts] Decouple `d3-geo` from the universal tooltip (#23011) @sai6855
60
+ - [charts] Deduplicate `getGroupingConfig` (#22889) @sai6855
61
+ - [charts] Expose `usePolarGeometry` hook for radial overlays (#22892) @mustafajw07
62
+
63
+ #### `@mui/x-charts-pro@9.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
64
+
65
+ Same changes as in `@mui/x-charts@9.8.0`.
66
+
67
+ #### `@mui/x-charts-premium@9.8.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
68
+
69
+ Same changes as in `@mui/x-charts-pro@9.8.0`, plus:
70
+
71
+ - [charts-premium] Add `onItemClick` support for the Map shapes (#22876) @sai6855
72
+ - [charts-premium] Replace `dataIndex` with `name` in map identifier (#22891) @sai6855
73
+ - [charts-premium] Share helper function (#23030) @alexfauquette
74
+ - [charts-premium] Extract shared WebGL utilities across bar/scatter/heatmap renderers (#22466) @sai6855
75
+ - [charts-premium] Add `MapImagePlot` for raster base maps (#22977) @JCQuintas
76
+
77
+ ### Tree View
78
+
79
+ #### `@mui/x-tree-view@9.8.0`
80
+
81
+ - [TreeView] Fix extra selection event when clicking a collapsed parent item (#22249) @michelengelen
82
+ - [TreeView] Enforce top-level type imports (#23034) @Janpot
83
+
84
+ #### `@mui/x-tree-view-pro@9.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
85
+
86
+ Same changes as in `@mui/x-tree-view@9.8.0`.
87
+
88
+ ### Scheduler
89
+
90
+ #### `@mui/x-scheduler@9.0.0-beta.4`
91
+
92
+ - [scheduler] Enforce top-level type imports (#22931) @Janpot
93
+ - [scheduler] Keep the occurrence date when editing only one recurring event (#23007) @Anexus5919
94
+ - [scheduler] Track bundle size of scheduler packages (#22682) @flaviendelangle
95
+ - [scheduler] Add `viewConfig` prop to limit displayed hours in the day and week views (#22929) @flaviendelangle
96
+
97
+ #### `@mui/x-scheduler-premium@9.0.0-beta.4` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
98
+
99
+ Same changes as in `@mui/x-scheduler@9.0.0-beta.4`, plus:
100
+
101
+ - [scheduler] Collapsible resources in the timeline (#22920) @rita-codes
102
+
103
+ ### Codemod
104
+
105
+ #### `@mui/x-codemod@9.8.0`
106
+
107
+ Internal changes.
108
+
109
+ ### Docs
110
+
111
+ - [docs] Add recipe for conditional master-detail panels (#22971) @michelengelen
112
+ - [docs] Add recipe for describing active filters in the toolbar (#22970) @michelengelen
113
+ - [docs] Add recipe for triggering clipboard copy from a button (#22967) @michelengelen
114
+ - [docs] Clarify that `fieldRef.current.focusField()` is the canonical way to focus a field (#22937) @michelengelen
115
+ - [docs][scheduler] Another copyediting pass across the Scheduler docs (#22619) @mapache-salvaje
116
+ - [docs][charts] Add map example for arbitrary GeoJSON shapes (#22976) @JCQuintas
117
+ - [docs][charts] Double point count in `ScatterAsyncRenderer` demo (#22906) @JCQuintas
118
+
119
+ ### Core
120
+
121
+ - [code-infra] Fix tracking branch bug in release script (#22956) @michelengelen
122
+ - [code-infra] Remove mark-duplicate workflow (#22994) @cherniavskii
123
+ - [code-infra] Revert `nanoid@3.3.15` `minimumReleaseAge` exemption (#22953) @LukasTy
124
+
125
+ ### Miscellaneous
126
+
127
+ - [internals] Fix `ERR_UNSUPPORTED_DIR_IMPORT` for `core-js-pure` in Node ESM (#22985) @michelengelen
128
+ - [internals] Harden `useDisposable` React internals read with safeReact (#22986) @rita-codes
129
+ - [internals] Replace core-js `DisposableStack` ponyfill with a minimal fallback (#23002) @sai6855
130
+ - [test] Assert the edited `dateTime` cell value in the e2e edit test (#22982) @voidmatcha
131
+ - [virtualizer] Remeasure scrollbars when layout changes (#22914) @arminmeh
132
+
3
133
  ## 9.7.0
4
134
 
5
135
  _Jun 25, 2026_
@@ -178,7 +308,6 @@ Same changes as in `@mui/x-charts-pro@9.6.0`, plus:
178
308
  - [charts-premium] Support maps tooltip positioned on items (#22648) @alexfauquette
179
309
  - [docs] Show how to export maps (#22837) @alexfauquette
180
310
 
181
-
182
311
  ### Tree View
183
312
 
184
313
  #### `@mui/x-tree-view@9.6.0`
@@ -37,8 +37,8 @@ var _jsxRuntime = require("react/jsx-runtime");
37
37
  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"],
38
38
  _excluded2 = ["isDragging", "rangeDragDay", "draggingDatePosition"];
39
39
  const packageInfo = {
40
- releaseDate: "MTc4MjM0NTYwMDAwMA==",
41
- version: "9.7.0",
40
+ releaseDate: "MTc4Mjk1MDQwMDAwMA==",
41
+ version: "9.8.0",
42
42
  name: 'x-date-pickers-pro'
43
43
  };
44
44
  const DateRangeCalendarRoot = (0, _styles.styled)('div', {
@@ -348,9 +348,10 @@ const DateRangeCalendar = exports.DateRangeCalendar = /*#__PURE__*/React.forward
348
348
  return;
349
349
  }
350
350
  const displayingMonthRange = calendars - currentMonthCalendarPosition;
351
- const currentMonthNumber = adapter.getMonth(calendarState.currentMonth);
352
- const requestedMonthNumber = adapter.getMonth(date);
353
- if (!adapter.isSameYear(calendarState.currentMonth, date) || requestedMonthNumber < currentMonthNumber || requestedMonthNumber > currentMonthNumber + displayingMonthRange) {
351
+ // Use absolute months (year * 12 + month) so the comparison stays correct across year boundaries.
352
+ const currentMonthNumber = adapter.getYear(calendarState.currentMonth) * 12 + adapter.getMonth(calendarState.currentMonth);
353
+ const requestedMonthNumber = adapter.getYear(date) * 12 + adapter.getMonth(date);
354
+ if (requestedMonthNumber < currentMonthNumber || requestedMonthNumber > currentMonthNumber + displayingMonthRange) {
354
355
  const newMonth = rangePosition === 'start' ? date :
355
356
  // If need to focus end, scroll to the state when "end" is displaying in the last calendar
356
357
  adapter.addMonths(date, -displayingMonthRange);
@@ -30,8 +30,8 @@ import { PickersRangeCalendarHeader } from "../PickersRangeCalendarHeader/index.
30
30
  import { useNullablePickerRangePositionContext } from "../internals/hooks/useNullablePickerRangePositionContext.mjs";
31
31
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
32
  const packageInfo = {
33
- releaseDate: "MTc4MjM0NTYwMDAwMA==",
34
- version: "9.7.0",
33
+ releaseDate: "MTc4Mjk1MDQwMDAwMA==",
34
+ version: "9.8.0",
35
35
  name: 'x-date-pickers-pro'
36
36
  };
37
37
  const DateRangeCalendarRoot = styled('div', {
@@ -341,9 +341,10 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
341
341
  return;
342
342
  }
343
343
  const displayingMonthRange = calendars - currentMonthCalendarPosition;
344
- const currentMonthNumber = adapter.getMonth(calendarState.currentMonth);
345
- const requestedMonthNumber = adapter.getMonth(date);
346
- if (!adapter.isSameYear(calendarState.currentMonth, date) || requestedMonthNumber < currentMonthNumber || requestedMonthNumber > currentMonthNumber + displayingMonthRange) {
344
+ // Use absolute months (year * 12 + month) so the comparison stays correct across year boundaries.
345
+ const currentMonthNumber = adapter.getYear(calendarState.currentMonth) * 12 + adapter.getMonth(calendarState.currentMonth);
346
+ const requestedMonthNumber = adapter.getYear(date) * 12 + adapter.getMonth(date);
347
+ if (requestedMonthNumber < currentMonthNumber || requestedMonthNumber > currentMonthNumber + displayingMonthRange) {
347
348
  const newMonth = rangePosition === 'start' ? date :
348
349
  // If need to focus end, scroll to the state when "end" is displaying in the last calendar
349
350
  adapter.addMonths(date, -displayingMonthRange);
@@ -328,8 +328,8 @@ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePi
328
328
  name: 'MuiDateRangePickerDay'
329
329
  });
330
330
  (0, _internals.useLicenseVerifier)({
331
- releaseDate: "MTc4MjM0NTYwMDAwMA==",
332
- version: "9.7.0",
331
+ releaseDate: "MTc4Mjk1MDQwMDAwMA==",
332
+ version: "9.8.0",
333
333
  name: 'x-date-pickers-pro'
334
334
  });
335
335
  const adapter = (0, _hooks.usePickerAdapter)();
@@ -321,8 +321,8 @@ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePi
321
321
  name: 'MuiDateRangePickerDay'
322
322
  });
323
323
  useLicenseVerifier({
324
- releaseDate: "MTc4MjM0NTYwMDAwMA==",
325
- version: "9.7.0",
324
+ releaseDate: "MTc4Mjk1MDQwMDAwMA==",
325
+ version: "9.8.0",
326
326
  name: 'x-date-pickers-pro'
327
327
  });
328
328
  const adapter = usePickerAdapter();
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v9.7.0
2
+ * @mui/x-date-pickers-pro v9.8.0
3
3
  *
4
4
  * @license SEE LICENSE IN LICENSE
5
5
  * This source code is licensed under the SEE LICENSE IN LICENSE license found in the
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v9.7.0
2
+ * @mui/x-date-pickers-pro v9.8.0
3
3
  *
4
4
  * @license SEE LICENSE IN LICENSE
5
5
  * This source code is licensed under the SEE LICENSE IN LICENSE license found in the
@@ -26,8 +26,8 @@ const useDesktopRangePicker = _ref => {
26
26
  } = _ref,
27
27
  pickerParams = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
28
28
  (0, _internals.useLicenseVerifier)({
29
- releaseDate: "MTc4MjM0NTYwMDAwMA==",
30
- version: "9.7.0",
29
+ releaseDate: "MTc4Mjk1MDQwMDAwMA==",
30
+ version: "9.8.0",
31
31
  name: 'x-date-pickers-pro'
32
32
  });
33
33
  const {
@@ -19,8 +19,8 @@ export const useDesktopRangePicker = _ref => {
19
19
  } = _ref,
20
20
  pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
21
21
  useLicenseVerifier({
22
- releaseDate: "MTc4MjM0NTYwMDAwMA==",
23
- version: "9.7.0",
22
+ releaseDate: "MTc4Mjk1MDQwMDAwMA==",
23
+ version: "9.8.0",
24
24
  name: 'x-date-pickers-pro'
25
25
  });
26
26
  const {
@@ -28,8 +28,8 @@ const useMobileRangePicker = _ref => {
28
28
  } = _ref,
29
29
  pickerParams = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
30
30
  (0, _internals.useLicenseVerifier)({
31
- releaseDate: "MTc4MjM0NTYwMDAwMA==",
32
- version: "9.7.0",
31
+ releaseDate: "MTc4Mjk1MDQwMDAwMA==",
32
+ version: "9.8.0",
33
33
  name: 'x-date-pickers-pro'
34
34
  });
35
35
  const {
@@ -21,8 +21,8 @@ export const useMobileRangePicker = _ref => {
21
21
  } = _ref,
22
22
  pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
23
23
  useLicenseVerifier({
24
- releaseDate: "MTc4MjM0NTYwMDAwMA==",
25
- version: "9.7.0",
24
+ releaseDate: "MTc4Mjk1MDQwMDAwMA==",
25
+ version: "9.8.0",
26
26
  name: 'x-date-pickers-pro'
27
27
  });
28
28
  const {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers-pro",
3
- "version": "9.7.0",
3
+ "version": "9.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
  "license": "SEE LICENSE IN LICENSE",
@@ -35,9 +35,9 @@
35
35
  "clsx": "^2.1.1",
36
36
  "prop-types": "^15.8.1",
37
37
  "react-transition-group": "^4.4.5",
38
- "@mui/x-date-pickers": "^9.7.0",
39
- "@mui/x-license": "^9.7.0",
40
- "@mui/x-internals": "^9.7.0"
38
+ "@mui/x-internals": "^9.8.0",
39
+ "@mui/x-license": "^9.8.0",
40
+ "@mui/x-date-pickers": "^9.8.0"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "@emotion/react": "^11.9.0",