@mui/x-date-pickers 9.10.0 → 9.10.1

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,111 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.10.1
4
+
5
+ _Jul 23, 2026_
6
+
7
+ We'd like to extend a big thank you to the 11 contributors who made this release possible. Here are some highlights ✨:
8
+
9
+ - 🦮 Improve accessibility of the Charts and Pickers components.
10
+ - 🐞 Bugfixes
11
+ - 📚 Documentation improvements
12
+
13
+ Special thanks go out to these community members for their valuable contributions:
14
+ @kevincorizi-sbt, @mustafajw07, @SamanPandey-in
15
+
16
+ The following team members contributed to this release:
17
+ @brijeshb42, @hasdfa, @JCQuintas, @LukasTy, @michelengelen, @noraleonte, @rita-codes, @silviuaavram
18
+
19
+ ### Data Grid
20
+
21
+ #### `@mui/x-data-grid@9.10.1`
22
+
23
+ - [data grid] Fix `getColumn` return type not reflecting that it can return undefined (#23165) @JCQuintas
24
+
25
+ #### `@mui/x-data-grid-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
26
+
27
+ Same changes as in `@mui/x-data-grid@9.10.1`.
28
+
29
+ #### `@mui/x-data-grid-premium@9.10.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
30
+
31
+ Same changes as in `@mui/x-data-grid-pro@9.10.1`.
32
+
33
+ ### Date and Time Pickers
34
+
35
+ #### `@mui/x-date-pickers@9.10.1`
36
+
37
+ - [pickers] Fix format placeholder brightness with a start adornment (#23189) @LukasTy
38
+
39
+ #### `@mui/x-date-pickers-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
40
+
41
+ Same changes as in `@mui/x-date-pickers@9.10.1`, plus:
42
+
43
+ - [DateRangePicker] Fix broken active range position underline in single input range fields (#23166) @LukasTy
44
+
45
+ ### Charts
46
+
47
+ #### `@mui/x-charts@9.10.1`
48
+
49
+ - [charts] Fix pie chart disappearing when an arc spans almost the full circle (#23145) @JCQuintas
50
+ - [charts] Set `aria-hidden` on accessibility proxy divs at initialization (#23186) @kevincorizi-sbt
51
+ - [charts] Fix keyboard navigation on series with different lengths (#23182) @JCQuintas
52
+ - [charts] Fix out of bounds keyboard navigation (#23180) @silviuaavram
53
+
54
+ #### `@mui/x-charts-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
55
+
56
+ Same changes as in `@mui/x-charts@9.10.1`, plus:
57
+
58
+ - [charts-pro] Fix highlight shifting on sampled bar charts (#23190) @noraleonte
59
+ - [charts-pro] Sampled band highlight falls back to single-band width for Date/object values (#23024) @SamanPandey-in
60
+
61
+ #### `@mui/x-charts-premium@9.10.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
62
+
63
+ Same changes as in `@mui/x-charts-pro@9.10.1`.
64
+
65
+ ### Tree View
66
+
67
+ #### `@mui/x-tree-view@9.10.1`
68
+
69
+ - [TreeView] Fix selection propagation to exclude disabled items (#23012) @michelengelen
70
+
71
+ #### `@mui/x-tree-view-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
72
+
73
+ Same changes as in `@mui/x-tree-view@9.10.1`.
74
+
75
+ ### Scheduler
76
+
77
+ #### `@mui/x-scheduler@9.0.0-beta.7`
78
+
79
+ - [scheduler] Polish `EventCalendar` rendering for multi-resource events (#23161) @mustafajw07
80
+ - [scheduler] Responsive header (#22954) @noraleonte
81
+
82
+ #### `@mui/x-scheduler-premium@9.0.0-beta.7` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
83
+
84
+ Same changes as in `@mui/x-scheduler@9.0.0-beta.7`, plus:
85
+
86
+ - [scheduler-premium] Add the dependencies data model (#23117) @rita-codes
87
+ - [scheduler-premium] Dependencies - Render the FS arrow (#23162) @rita-codes
88
+
89
+ ### Codemod
90
+
91
+ #### `@mui/x-codemod@9.10.1`
92
+
93
+ Internal changes.
94
+
95
+ ### Docs
96
+
97
+ - [docs] Fix clearing, layout shift, and prop leak in Pickers demos (#23191) @LukasTy
98
+
99
+ ### Core
100
+
101
+ - [code-infra] Validate working of specific code-infra canary (#23207) @brijeshb42
102
+
103
+ ### Miscellaneous
104
+
105
+ - [chat] Normalize message part link URLs (#23187) @hasdfa
106
+ - [x-chat] Fix object URL leaks for submitted attachments (#23198) @hasdfa
107
+ - [internals] Make disposable types self-contained without `esnext.disposable` lib (#23164) @JCQuintas
108
+
3
109
  ## 9.10.0
4
110
 
5
111
  _Jul 17, 2026_
@@ -100,39 +100,28 @@ const PickersInputBaseSectionsContainer = exports.PickersInputBaseSectionsContai
100
100
  paddingTop: 1
101
101
  }
102
102
  }, {
103
+ // While the field is empty and blurred, the format is shown as a placeholder.
103
104
  props: {
104
- hasStartAdornment: false,
105
105
  isFieldFocused: false,
106
106
  isFieldValueEmpty: true
107
107
  },
108
- style: {
109
- color: 'currentColor',
110
- opacity: 0
111
- }
112
- }, {
113
- props: {
114
- hasStartAdornment: false,
115
- isFieldFocused: false,
116
- isFieldValueEmpty: true,
117
- inputHasLabel: false
118
- },
119
108
  style: theme.vars ? {
120
109
  opacity: theme.vars.opacity.inputPlaceholder
121
110
  } : {
122
111
  opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
123
112
  }
124
113
  }, {
114
+ // ...except when a non-shrunk label sits in the notch, where the format would overlap it.
115
+ // A start adornment always shrinks the label, so it never triggers this case.
125
116
  props: {
126
- hasStartAdornment: false,
127
117
  isFieldFocused: false,
128
118
  isFieldValueEmpty: true,
119
+ hasStartAdornment: false,
129
120
  inputHasLabel: true,
130
- isLabelShrunk: true
121
+ isLabelShrunk: false
131
122
  },
132
- style: theme.vars ? {
133
- opacity: theme.vars.opacity.inputPlaceholder
134
- } : {
135
- opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
123
+ style: {
124
+ opacity: 0
136
125
  }
137
126
  }]
138
127
  }));
@@ -242,7 +231,8 @@ const useUtilityClasses = (classes, ownerState) => {
242
231
  return (0, _composeClasses.default)(slots, _pickersInputBaseClasses.getPickersInputBaseUtilityClass, classes);
243
232
  };
244
233
  function resolveSectionElementWidth(sectionElement, rootRef, index, dateRangePosition) {
245
- if (sectionElement.content.id) {
234
+ // Only measure sections that belong to a range date.
235
+ if (sectionElement.content['data-range-position'] !== undefined) {
246
236
  const activeSectionElements = rootRef.current?.querySelectorAll(`[data-sectionindex="${index}"] [data-range-position="${dateRangePosition}"]`);
247
237
  if (activeSectionElements) {
248
238
  return Array.from(activeSectionElements).reduce((currentActiveBarWidth, element) => {
@@ -93,39 +93,28 @@ export const PickersInputBaseSectionsContainer = styled(PickersSectionListRoot,
93
93
  paddingTop: 1
94
94
  }
95
95
  }, {
96
+ // While the field is empty and blurred, the format is shown as a placeholder.
96
97
  props: {
97
- hasStartAdornment: false,
98
98
  isFieldFocused: false,
99
99
  isFieldValueEmpty: true
100
100
  },
101
- style: {
102
- color: 'currentColor',
103
- opacity: 0
104
- }
105
- }, {
106
- props: {
107
- hasStartAdornment: false,
108
- isFieldFocused: false,
109
- isFieldValueEmpty: true,
110
- inputHasLabel: false
111
- },
112
101
  style: theme.vars ? {
113
102
  opacity: theme.vars.opacity.inputPlaceholder
114
103
  } : {
115
104
  opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
116
105
  }
117
106
  }, {
107
+ // ...except when a non-shrunk label sits in the notch, where the format would overlap it.
108
+ // A start adornment always shrinks the label, so it never triggers this case.
118
109
  props: {
119
- hasStartAdornment: false,
120
110
  isFieldFocused: false,
121
111
  isFieldValueEmpty: true,
112
+ hasStartAdornment: false,
122
113
  inputHasLabel: true,
123
- isLabelShrunk: true
114
+ isLabelShrunk: false
124
115
  },
125
- style: theme.vars ? {
126
- opacity: theme.vars.opacity.inputPlaceholder
127
- } : {
128
- opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
116
+ style: {
117
+ opacity: 0
129
118
  }
130
119
  }]
131
120
  }));
@@ -235,7 +224,8 @@ const useUtilityClasses = (classes, ownerState) => {
235
224
  return composeClasses(slots, getPickersInputBaseUtilityClass, classes);
236
225
  };
237
226
  function resolveSectionElementWidth(sectionElement, rootRef, index, dateRangePosition) {
238
- if (sectionElement.content.id) {
227
+ // Only measure sections that belong to a range date.
228
+ if (sectionElement.content['data-range-position'] !== undefined) {
239
229
  const activeSectionElements = rootRef.current?.querySelectorAll(`[data-sectionindex="${index}"] [data-range-position="${dateRangePosition}"]`);
240
230
  if (activeSectionElements) {
241
231
  return Array.from(activeSectionElements).reduce((currentActiveBarWidth, element) => {
@@ -11,4 +11,4 @@ var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generat
11
11
  function getPickersInputBaseUtilityClass(slot) {
12
12
  return (0, _generateUtilityClass.default)('MuiPickersInputBase', slot);
13
13
  }
14
- const pickersInputBaseClasses = exports.pickersInputBaseClasses = (0, _generateUtilityClasses.default)('MuiPickersInputBase', ['root', 'focused', 'disabled', 'error', 'notchedOutline', 'sectionContent', 'sectionBefore', 'sectionAfter', 'adornedStart', 'adornedEnd', 'input', 'inputSizeSmall', 'activeBar']);
14
+ const pickersInputBaseClasses = exports.pickersInputBaseClasses = (0, _generateUtilityClasses.default)('MuiPickersInputBase', ['root', 'focused', 'disabled', 'readOnly', 'error', 'notchedOutline', 'sectionsContainer', 'sectionContent', 'sectionBefore', 'sectionAfter', 'adornedStart', 'adornedEnd', 'input', 'inputSizeSmall', 'activeBar']);
@@ -3,4 +3,4 @@ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
3
3
  export function getPickersInputBaseUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiPickersInputBase', slot);
5
5
  }
6
- export const pickersInputBaseClasses = generateUtilityClasses('MuiPickersInputBase', ['root', 'focused', 'disabled', 'error', 'notchedOutline', 'sectionContent', 'sectionBefore', 'sectionAfter', 'adornedStart', 'adornedEnd', 'input', 'inputSizeSmall', 'activeBar']);
6
+ export const pickersInputBaseClasses = generateUtilityClasses('MuiPickersInputBase', ['root', 'focused', 'disabled', 'readOnly', 'error', 'notchedOutline', 'sectionsContainer', 'sectionContent', 'sectionBefore', 'sectionAfter', 'adornedStart', 'adornedEnd', 'input', 'inputSizeSmall', 'activeBar']);
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v9.10.0
2
+ * @mui/x-date-pickers v9.10.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v9.10.0
2
+ * @mui/x-date-pickers v9.10.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers",
3
- "version": "9.10.0",
3
+ "version": "9.10.1",
4
4
  "author": "MUI Team",
5
5
  "description": "The community edition of the MUI X Date and Time Picker components.",
6
6
  "license": "MIT",
@@ -39,7 +39,7 @@
39
39
  "clsx": "^2.1.1",
40
40
  "prop-types": "^15.8.1",
41
41
  "react-transition-group": "^4.4.5",
42
- "@mui/x-internals": "^9.10.0"
42
+ "@mui/x-internals": "^9.10.1"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@emotion/react": "^11.9.0",