@mui/x-date-pickers 9.1.0 → 9.3.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,226 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.3.0
4
+
5
+ _May 21, 2026_
6
+
7
+ We'd like to extend a big thank you to the 16 contributors who made this release possible. Here are some highlights ✨:
8
+
9
+ - 📆 Refactor Calendar Range drag editing to use Pointer Events instead of drag and touch events combination (#22279)
10
+ - ✨ Apply lazy loading to `EventTimelinePremium` (#22308)
11
+ - 🐞 Bugfixes
12
+ - 📚 Documentation improvements
13
+ - 🌎 Added Norwegian bokmål (nb-NO) locale to the Scheduler
14
+ - 🌎 Improved Swedish (sv-SE) locale on the Data Grid
15
+
16
+ Special thanks go out to these community members for their valuable contributions:
17
+ @Anexus5919, @jvskriubakken, @oscar-b, @rin, @viktormelin
18
+
19
+ The following team members contributed to this release:
20
+ @aemartos, @alexfauquette, @arminmeh, @Janpot, @JCQuintas, @LukasTy, @mj12albert, @oliviertassinari, @rita-codes, @romgrk, @sai6855
21
+
22
+ ### Data Grid
23
+
24
+ #### `@mui/x-data-grid@9.3.0`
25
+
26
+ - [DataGrid] Fix scrollbar disappearing after multiple resizes (#22512) @LukasTy
27
+ - [DataGrid] Revert "Add support for pinned columns in `GridVirtualScroller`" (#22467) @oliviertassinari
28
+ - [l10n] Improve Swedish (svSE) locale (#21851) @viktormelin
29
+
30
+ #### `@mui/x-data-grid-pro@9.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
31
+
32
+ Same changes as in `@mui/x-data-grid@9.3.0`.
33
+
34
+ #### `@mui/x-data-grid-premium@9.3.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
35
+
36
+ Same changes as in `@mui/x-data-grid-pro@9.3.0`.
37
+
38
+ ### Date and Time Pickers
39
+
40
+ #### `@mui/x-date-pickers@9.3.0`
41
+
42
+ - [pickers] Fix disabled state styling for `PickersTextField` standard and filled variants (#22189) @LukasTy
43
+ - [pickers] Fix previous month disabled state calculation (#22524) @mj12albert
44
+ - [pickers] Merge `slotProps.sectionContent` in `PickersInputBase` (#22324) @rin
45
+
46
+ #### `@mui/x-date-pickers-pro@9.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
47
+
48
+ Same changes as in `@mui/x-date-pickers@9.3.0`, plus:
49
+
50
+ - [DateRangeCalendar] Use Pointer Events for drag editing (#22279) @LukasTy
51
+
52
+ ### Charts
53
+
54
+ #### `@mui/x-charts@9.3.0`
55
+
56
+ - [charts] Add `data-series` to elements of radar chart (#22523) @alexfauquette
57
+ - [charts] Add environment check for warning messages in axis and radar hooks (#22506) @sai6855
58
+ - [charts] Chart `seriesConfig` deduplication for lines and bars (#22257) @sai6855
59
+ - [charts] Fix highlighted item crash (#22539) @oscar-b
60
+ - [charts] Fix the line and mark class (#22526) @alexfauquette
61
+ - [charts] Fix use of deprecated API in docs (#22469) @oliviertassinari
62
+ - [charts] Improve performance of `evaluateCurveY` function (#22407) @sai6855
63
+
64
+ #### `@mui/x-charts-pro@9.3.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@9.3.0`.
67
+
68
+ #### `@mui/x-charts-premium@9.3.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
69
+
70
+ Same changes as in `@mui/x-charts-pro@9.3.0`, plus:
71
+
72
+ - [charts-premium] Add `closePath` option to the radial line series (#22517) @alexfauquette
73
+
74
+ ### Tree View
75
+
76
+ #### `@mui/x-tree-view-pro@9.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
77
+
78
+ Internal changes.
79
+
80
+ ### Scheduler
81
+
82
+ #### `@mui/x-scheduler@9.0.0-alpha.7`
83
+
84
+ - [I10n] Add Norwegian bokmål (nb-NO) locale (#22415) @jvskriubakken
85
+
86
+ #### `@mui/x-scheduler-premium@9.0.0-alpha.7` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
87
+
88
+ Same changes as in `@mui/x-scheduler@9.0.0-alpha.7`, plus:
89
+
90
+ - [scheduler] Apply lazy loading to `EventTimelinePremium` (#22308) @rita-codes
91
+ - [scheduler] Deduplicate staged ranges within the debounce window (#22476) @Anexus5919
92
+ - [scheduler] Pass full event objects to `dataSource.updateEvents` (#22462) @rita-codes
93
+
94
+ ### Docs
95
+
96
+ - [docs] Automatically update supported versions (#21850) @arminmeh
97
+ - [docs] Fix `New` label on bar charts docs (#22473) @oliviertassinari
98
+ - [docs] Improve premium page header for charts (#22474) @oliviertassinari
99
+ - [docs] Sync `README` with licensing/licensing.md in scheduler (#22468) @oliviertassinari
100
+
101
+ ### Core
102
+
103
+ - [code-infra] Cover docs overview composites with Argos (#22283) @LukasTy
104
+ - [code-infra] Enable `mui/no-presentation-role` lint rule (#22360) @Janpot
105
+ - [code-infra] Make generated `propTypes` union order deterministic (#22521) @JCQuintas
106
+ - [code-infra] Make screenshots stable across different ordering of the tests (#22449) @Janpot
107
+ - [code-infra] Optimize visual regression testing (#22447) @Janpot
108
+ - [code-infra] Replace markdownlint with remark from code-infra (#22255) @Janpot
109
+
110
+ ### Miscellaneous
111
+
112
+ - [virtualizer] Improve `controlled` mode performance (#22123) @romgrk
113
+ - [data-grid-generator] Include `tree-data` params in `useDemoData` cache key (#22456) @Janpot
114
+ - [test] Fix flaky browser tests and optimize (#22431) @Janpot
115
+ - [test] Speed up `test_types` job (#22442) @Janpot
116
+ - [test] Trim ffmpeg install in `test_regressions` (#22459) @Janpot
117
+ - [test] Add WebGL performance benchmarks for charts (#22471) @JCQuintas
118
+ - [test] Expand chart performance benchmarks for charts (#22472) @JCQuintas
119
+ - [x-license] use workspace dep for v9 in cross-major compat tests (#22504) @aemartos
120
+
121
+ ## 9.2.0
122
+
123
+ _May 13, 2026_
124
+
125
+ We'd like to extend a big thank you to the 9 contributors who made this release possible. Here are some highlights ✨:
126
+
127
+ - ⚡️ Add a WebGL renderer to the [Bar chart](https://mui.com/x/react-charts/bars/#webgl-renderer)
128
+ - 📊 Add a radial charts with the [radial line](https://mui.com/x/react-charts/radial-lines/), [radial bar](https://mui.com/x/react-charts/radial-bars/), and the [radial grid and axes](https://mui.com/x/react-charts/radial-axes/)
129
+ - 🐞 Bugfixes
130
+ - 📚 Documentation improvements
131
+
132
+ Special thanks go out to these community members for their valuable contributions:
133
+ @Anexus5919, @mustafajw07
134
+
135
+ The following team members contributed to this release:
136
+ @aemartos, @alexfauquette, @bernardobelchior, @JCQuintas, @oliviertassinari, @sai6855, @siriwatknp
137
+
138
+ ### Data Grid
139
+
140
+ #### `@mui/x-data-grid@9.2.0`
141
+
142
+ - [data grid] Add support for pinned columns in `GridVirtualScroller` (#22347) @sai6855
143
+ - [data grid] Remove unused CSS (#22390) @oliviertassinari
144
+
145
+ #### `@mui/x-data-grid-pro@9.2.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
146
+
147
+ Same changes as in `@mui/x-data-grid@9.2.0`.
148
+
149
+ #### `@mui/x-data-grid-premium@9.2.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
150
+
151
+ Same changes as in `@mui/x-data-grid-pro@9.2.0`.
152
+
153
+ ### Date and Time Pickers
154
+
155
+ #### `@mui/x-date-pickers@9.2.0`
156
+
157
+ - [pickers] Trim test helpers' default load graph (#22421) @JCQuintas
158
+
159
+ #### `@mui/x-date-pickers-pro@9.2.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
160
+
161
+ Same changes as in `@mui/x-date-pickers@9.2.0`.
162
+
163
+ ### Charts
164
+
165
+ #### `@mui/x-charts@9.2.0`
166
+
167
+ Internal changes.
168
+
169
+ #### `@mui/x-charts-pro@9.2.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
170
+
171
+ Same changes as in `@mui/x-charts@9.2.0`.
172
+
173
+ #### `@mui/x-charts-premium@9.2.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
174
+
175
+ Same changes as in `@mui/x-charts-pro@9.2.0`, plus:
176
+
177
+ - [charts-premium] Add `Highlight` support to `RadialBarChart` (#22322) @alexfauquette
178
+ - [charts-premium] Add `WebGL` renderer to `BarChartPremium` (#22354) @JCQuintas
179
+ - [charts-premium] Add mark shape support to the radial line (#22242) @alexfauquette
180
+ - [charts-premium] `RadialBarChart` support axis interaction with layout horizontal (#22319) @alexfauquette
181
+
182
+ ### Tree View
183
+
184
+ #### `@mui/x-tree-view@9.1.0`
185
+
186
+ Internal changes.
187
+
188
+ #### `@mui/x-tree-view-pro@9.1.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
189
+
190
+ Same changes as in `@mui/x-tree-view@9.1.0`.
191
+
192
+ ### Scheduler
193
+
194
+ #### `@mui/x-scheduler@9.0.0-alpha.6`
195
+
196
+ - [scheduler] Complete ARIA grid semantics on `EventTimeline` and `EventCalendar` (#22266) @Anexus5919
197
+ - [scheduler] Improve UX for recurrence tab (#22287) @mustafajw07
198
+
199
+ #### `@mui/x-scheduler-premium@9.0.0-alpha.6` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
200
+
201
+ Same changes as in `@mui/x-scheduler@9.0.0-alpha.6`.
202
+
203
+ ### Codemod
204
+
205
+ #### `@mui/x-codemod@9.1.0`
206
+
207
+ Internal changes.
208
+
209
+ ### Docs
210
+
211
+ - [docs] Document the `RadialBarChart` (#22320) @alexfauquette
212
+ - [docs] Add histogram demo to bar-demo page (#22373) @siriwatknp
213
+ - [docs] Add radial bar to the nav bar (#22429) @alexfauquette
214
+ - [docs] Split radial grid and radial line pages (#22238) @alexfauquette
215
+
216
+ ### Miscellaneous
217
+
218
+ - [test] Disable animations in chart benchmarks (#22433) @bernardobelchior
219
+ - [test] Move `x-internal-gestures` vitest isolate flag to test block (#22427) @JCQuintas
220
+ - [test] Reduce flakiness in `MobileTimeRangePicker` multi-input `describeValue` tests (#22422) @JCQuintas
221
+ - [x-license] Exclude compat test pins from Renovate major bumps (#22414) @aemartos
222
+ - [x-license] Add cross-major license format compatibility tests (#22335) @aemartos
223
+
3
224
  ## 9.1.0
4
225
 
5
226
  _May 8, 2026_
@@ -131,7 +131,7 @@ function PickersSlideTransition(inProps) {
131
131
  childFactory: element => /*#__PURE__*/React.cloneElement(element, {
132
132
  classNames: transitionClasses
133
133
  }),
134
- role: "presentation",
134
+ role: "none",
135
135
  ownerState: ownerState,
136
136
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactTransitionGroup.CSSTransition, (0, _extends2.default)({
137
137
  mountOnEnter: true,
@@ -123,7 +123,7 @@ export function PickersSlideTransition(inProps) {
123
123
  childFactory: element => /*#__PURE__*/React.cloneElement(element, {
124
124
  classNames: transitionClasses
125
125
  }),
126
- role: "presentation",
126
+ role: "none",
127
127
  ownerState: ownerState,
128
128
  children: /*#__PURE__*/_jsx(CSSTransition, _extends({
129
129
  mountOnEnter: true,
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DigitalClockProps } from "./DigitalClock.types.mjs";
3
- export declare const DigitalClockItem: import("@emotion/styled").StyledComponent<import("@mui/material/MenuItem").MenuItemOwnProps & Omit<import("@mui/material/ButtonBase").ButtonBaseOwnProps, keyof import("@mui/material/MenuItem").MenuItemOwnProps> & Omit<import("@mui/material/ButtonBase").ButtonBaseOwnProps, "tabIndex" | "children" | "nativeButton" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | keyof import("@mui/material/MenuItem").MenuItemOwnProps> & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "disabled" | "autoFocus" | "dense" | "style" | "tabIndex" | "className" | "children" | "classes" | "sx" | "disableGutters" | "divider" | "nativeButton" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "selected"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
3
+ export declare const DigitalClockItem: import("@emotion/styled").StyledComponent<import("@mui/material/MenuItem").MenuItemOwnProps & Omit<import("@mui/material/ButtonBase").ButtonBaseOwnProps, keyof import("@mui/material/MenuItem").MenuItemOwnProps> & Omit<import("@mui/material/ButtonBase").ButtonBaseOwnProps, "tabIndex" | "children" | "type" | "nativeButton" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | keyof import("@mui/material/MenuItem").MenuItemOwnProps> & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "disabled" | "autoFocus" | "dense" | "style" | "tabIndex" | "className" | "children" | "classes" | "type" | "sx" | "disableGutters" | "divider" | "nativeButton" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "selected"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
4
4
  type DigitalClockComponent = ((props: DigitalClockProps & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
5
5
  propTypes?: any;
6
6
  };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DigitalClockProps } from "./DigitalClock.types.js";
3
- export declare const DigitalClockItem: import("@emotion/styled").StyledComponent<import("@mui/material/MenuItem").MenuItemOwnProps & Omit<import("@mui/material/ButtonBase").ButtonBaseOwnProps, keyof import("@mui/material/MenuItem").MenuItemOwnProps> & Omit<import("@mui/material/ButtonBase").ButtonBaseOwnProps, "tabIndex" | "children" | "nativeButton" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | keyof import("@mui/material/MenuItem").MenuItemOwnProps> & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "disabled" | "autoFocus" | "dense" | "style" | "tabIndex" | "className" | "children" | "classes" | "sx" | "disableGutters" | "divider" | "nativeButton" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "selected"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
3
+ export declare const DigitalClockItem: import("@emotion/styled").StyledComponent<import("@mui/material/MenuItem").MenuItemOwnProps & Omit<import("@mui/material/ButtonBase").ButtonBaseOwnProps, keyof import("@mui/material/MenuItem").MenuItemOwnProps> & Omit<import("@mui/material/ButtonBase").ButtonBaseOwnProps, "tabIndex" | "children" | "type" | "nativeButton" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | keyof import("@mui/material/MenuItem").MenuItemOwnProps> & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "disabled" | "autoFocus" | "dense" | "style" | "tabIndex" | "className" | "children" | "classes" | "type" | "sx" | "disableGutters" | "divider" | "nativeButton" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "selected"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
4
4
  type DigitalClockComponent = ((props: DigitalClockProps & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
5
5
  propTypes?: any;
6
6
  };
@@ -422,7 +422,14 @@ process.env.NODE_ENV !== "production" ? PickerDayRaw.propTypes = {
422
422
  start: _propTypes.default.func.isRequired,
423
423
  stop: _propTypes.default.func.isRequired
424
424
  })
425
- })])
425
+ })]),
426
+ /**
427
+ * The HTML [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/button#type)
428
+ * attribute applied to `button` and `a` elements.
429
+ * Ignored when rendering non-native buttons.
430
+ * @default 'button'
431
+ */
432
+ type: _propTypes.default.string
426
433
  } : void 0;
427
434
 
428
435
  /**
@@ -415,7 +415,14 @@ process.env.NODE_ENV !== "production" ? PickerDayRaw.propTypes = {
415
415
  start: PropTypes.func.isRequired,
416
416
  stop: PropTypes.func.isRequired
417
417
  })
418
- })])
418
+ })]),
419
+ /**
420
+ * The HTML [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/button#type)
421
+ * attribute applied to `button` and `a` elements.
422
+ * Ignored when rendering non-native buttons.
423
+ * @default 'button'
424
+ */
425
+ type: PropTypes.string
419
426
  } : void 0;
420
427
 
421
428
  /**
@@ -197,7 +197,7 @@ const PickersCalendarHeader = exports.PickersCalendarHeader = /*#__PURE__*/React
197
197
  className: (0, _clsx.default)(classes.root, className),
198
198
  ref: ref,
199
199
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(PickersCalendarHeaderLabelContainer, {
200
- role: "presentation",
200
+ role: "none",
201
201
  onClick: handleToggleView,
202
202
  ownerState: ownerState
203
203
  // putting this on the label item element below breaks when using transition
@@ -190,7 +190,7 @@ const PickersCalendarHeader = /*#__PURE__*/React.forwardRef(function PickersCale
190
190
  className: clsx(classes.root, className),
191
191
  ref: ref,
192
192
  children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabelContainer, {
193
- role: "presentation",
193
+ role: "none",
194
194
  onClick: handleToggleView,
195
195
  ownerState: ownerState
196
196
  // putting this on the label item element below breaks when using transition
@@ -12,6 +12,7 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
  var React = _interopRequireWildcard(require("react"));
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
+ var _clsx = _interopRequireDefault(require("clsx"));
15
16
  var _FormControl = require("@mui/material/FormControl");
16
17
  var _styles = require("@mui/material/styles");
17
18
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
@@ -19,6 +20,7 @@ var _refType = _interopRequireDefault(require("@mui/utils/refType"));
19
20
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
20
21
  var _capitalize = _interopRequireDefault(require("@mui/utils/capitalize"));
21
22
  var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
23
+ var _resolveComponentProps = _interopRequireDefault(require("@mui/utils/resolveComponentProps"));
22
24
  var _visuallyHidden = _interopRequireDefault(require("@mui/utils/visuallyHidden"));
23
25
  var _pickersInputBaseClasses = require("./pickersInputBaseClasses");
24
26
  var _PickersSectionList = require("../../PickersSectionList");
@@ -26,6 +28,14 @@ var _usePickerTextFieldOwnerState = require("../usePickerTextFieldOwnerState");
26
28
  var _jsxRuntime = require("react/jsx-runtime");
27
29
  const _excluded = ["elements", "areAllSectionsEmpty", "defaultValue", "label", "value", "onChange", "id", "autoFocus", "endAdornment", "startAdornment", "renderSuffix", "slots", "slotProps", "contentEditable", "tabIndex", "onInput", "onPaste", "onKeyDown", "fullWidth", "name", "readOnly", "inputRef", "sectionListRef", "onFocus", "onBlur", "classes", "ownerState"],
28
30
  _excluded2 = ["ref"];
31
+ function mergePickersInputBaseSectionContentSlotProps(consumerSlotProps, baseClassName) {
32
+ return ownerState => {
33
+ const resolved = (0, _resolveComponentProps.default)(consumerSlotProps, ownerState) ?? {};
34
+ return (0, _extends2.default)({}, resolved, {
35
+ className: (0, _clsx.default)(baseClassName, resolved.className)
36
+ });
37
+ };
38
+ }
29
39
  const round = value => Math.round(value * 1e5) / 1e5;
30
40
  const PickersInputBaseRoot = exports.PickersInputBaseRoot = (0, _styles.styled)('div', {
31
41
  name: 'MuiPickersInputBase',
@@ -43,6 +53,10 @@ const PickersInputBaseRoot = exports.PickersInputBaseRoot = (0, _styles.styled)(
43
53
  boxSizing: 'border-box',
44
54
  // Prevent padding issue with fullWidth.
45
55
  letterSpacing: `${round(0.15 / 16)}em`,
56
+ [`&.${_pickersInputBaseClasses.pickersInputBaseClasses.disabled}`]: {
57
+ color: (theme.vars || theme).palette.action.disabled,
58
+ cursor: 'default'
59
+ },
46
60
  variants: [{
47
61
  props: {
48
62
  isInputInFullWidth: true
@@ -391,9 +405,7 @@ const PickersInputBase = exports.PickersInputBase = /*#__PURE__*/React.forwardRe
391
405
  root: (0, _extends2.default)({}, slotProps?.input, {
392
406
  ownerState
393
407
  }),
394
- sectionContent: {
395
- className: _pickersInputBaseClasses.pickersInputBaseClasses.sectionContent
396
- },
408
+ sectionContent: mergePickersInputBaseSectionContentSlotProps(slotProps?.sectionContent, _pickersInputBaseClasses.pickersInputBaseClasses.sectionContent),
397
409
  sectionSeparator: ({
398
410
  separatorPosition
399
411
  }) => ({
@@ -7,6 +7,7 @@ const _excluded = ["elements", "areAllSectionsEmpty", "defaultValue", "label", "
7
7
  _excluded2 = ["ref"];
8
8
  import * as React from 'react';
9
9
  import PropTypes from 'prop-types';
10
+ import clsx from 'clsx';
10
11
  import { useFormControl } from '@mui/material/FormControl';
11
12
  import { styled, useThemeProps } from '@mui/material/styles';
12
13
  import useForkRef from '@mui/utils/useForkRef';
@@ -14,11 +15,20 @@ import refType from '@mui/utils/refType';
14
15
  import composeClasses from '@mui/utils/composeClasses';
15
16
  import capitalize from '@mui/utils/capitalize';
16
17
  import useSlotProps from '@mui/utils/useSlotProps';
18
+ import resolveComponentProps from '@mui/utils/resolveComponentProps';
17
19
  import visuallyHidden from '@mui/utils/visuallyHidden';
18
20
  import { pickersInputBaseClasses, getPickersInputBaseUtilityClass } from "./pickersInputBaseClasses.mjs";
19
21
  import { Unstable_PickersSectionList as PickersSectionList, Unstable_PickersSectionListRoot as PickersSectionListRoot, Unstable_PickersSectionListSection as PickersSectionListSection, Unstable_PickersSectionListSectionSeparator as PickersSectionListSectionSeparator, Unstable_PickersSectionListSectionContent as PickersSectionListSectionContent } from "../../PickersSectionList/index.mjs";
20
22
  import { usePickerTextFieldOwnerState } from "../usePickerTextFieldOwnerState.mjs";
21
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
+ function mergePickersInputBaseSectionContentSlotProps(consumerSlotProps, baseClassName) {
25
+ return ownerState => {
26
+ const resolved = resolveComponentProps(consumerSlotProps, ownerState) ?? {};
27
+ return _extends({}, resolved, {
28
+ className: clsx(baseClassName, resolved.className)
29
+ });
30
+ };
31
+ }
22
32
  const round = value => Math.round(value * 1e5) / 1e5;
23
33
  export const PickersInputBaseRoot = styled('div', {
24
34
  name: 'MuiPickersInputBase',
@@ -36,6 +46,10 @@ export const PickersInputBaseRoot = styled('div', {
36
46
  boxSizing: 'border-box',
37
47
  // Prevent padding issue with fullWidth.
38
48
  letterSpacing: `${round(0.15 / 16)}em`,
49
+ [`&.${pickersInputBaseClasses.disabled}`]: {
50
+ color: (theme.vars || theme).palette.action.disabled,
51
+ cursor: 'default'
52
+ },
39
53
  variants: [{
40
54
  props: {
41
55
  isInputInFullWidth: true
@@ -384,9 +398,7 @@ const PickersInputBase = /*#__PURE__*/React.forwardRef(function PickersInputBase
384
398
  root: _extends({}, slotProps?.input, {
385
399
  ownerState
386
400
  }),
387
- sectionContent: {
388
- className: pickersInputBaseClasses.sectionContent
389
- },
401
+ sectionContent: mergePickersInputBaseSectionContentSlotProps(slotProps?.sectionContent, pickersInputBaseClasses.sectionContent),
390
402
  sectionSeparator: ({
391
403
  separatorPosition
392
404
  }) => ({
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { SxProps, Theme } from '@mui/material/styles';
3
3
  import { MuiEvent } from '@mui/x-internals/types';
4
- import { PickersSectionListProps } from "../../PickersSectionList/index.mjs";
4
+ import { PickersSectionListProps, PickersSectionListSlotProps } from "../../PickersSectionList/index.mjs";
5
5
  import { PickerTextFieldOwnerState } from "../../models/fields.mjs";
6
6
  export interface PickersInputPropsUsedByField extends Pick<PickersSectionListProps, 'elements' | 'sectionListRef' | 'contentEditable' | 'tabIndex'> {
7
7
  /**
@@ -70,6 +70,11 @@ export interface PickersInputBaseSlotProps {
70
70
  root?: PickersInputBaseRootSlotProps;
71
71
  input?: PickersInputBaseInputSlotProps;
72
72
  htmlInput?: React.ComponentPropsWithRef<'input'>;
73
+ /**
74
+ * Props forwarded to each section's content element inside `PickersSectionList`.
75
+ * Merged with the built-in section content styles.
76
+ */
77
+ sectionContent?: PickersSectionListSlotProps['sectionContent'];
73
78
  }
74
79
  export interface PickersInputBaseProps extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof PickersInputPropsUsedByField>, PickersInputPropsUsedByField {
75
80
  ownerState?: PickerTextFieldOwnerState;
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { SxProps, Theme } from '@mui/material/styles';
3
3
  import { MuiEvent } from '@mui/x-internals/types';
4
- import { PickersSectionListProps } from "../../PickersSectionList/index.js";
4
+ import { PickersSectionListProps, PickersSectionListSlotProps } from "../../PickersSectionList/index.js";
5
5
  import { PickerTextFieldOwnerState } from "../../models/fields.js";
6
6
  export interface PickersInputPropsUsedByField extends Pick<PickersSectionListProps, 'elements' | 'sectionListRef' | 'contentEditable' | 'tabIndex'> {
7
7
  /**
@@ -70,6 +70,11 @@ export interface PickersInputBaseSlotProps {
70
70
  root?: PickersInputBaseRootSlotProps;
71
71
  input?: PickersInputBaseInputSlotProps;
72
72
  htmlInput?: React.ComponentPropsWithRef<'input'>;
73
+ /**
74
+ * Props forwarded to each section's content element inside `PickersSectionList`.
75
+ * Merged with the built-in section content styles.
76
+ */
77
+ sectionContent?: PickersSectionListSlotProps['sectionContent'];
73
78
  }
74
79
  export interface PickersInputBaseProps extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof PickersInputPropsUsedByField>, PickersInputPropsUsedByField {
75
80
  ownerState?: PickerTextFieldOwnerState;
@@ -50,9 +50,6 @@ const PickersOutlinedInputRoot = (0, _styles.styled)(_PickersInputBase2.PickersI
50
50
  [`&.${_pickersOutlinedInputClasses.pickersOutlinedInputClasses.disabled}`]: {
51
51
  [`& .${_pickersOutlinedInputClasses.pickersOutlinedInputClasses.notchedOutline}`]: {
52
52
  borderColor: (theme.vars || theme).palette.action.disabled
53
- },
54
- '*': {
55
- color: (theme.vars || theme).palette.action.disabled
56
53
  }
57
54
  },
58
55
  variants: Object.keys((theme.vars ?? theme).palette)
@@ -43,9 +43,6 @@ const PickersOutlinedInputRoot = styled(PickersInputBaseRoot, {
43
43
  [`&.${pickersOutlinedInputClasses.disabled}`]: {
44
44
  [`& .${pickersOutlinedInputClasses.notchedOutline}`]: {
45
45
  borderColor: (theme.vars || theme).palette.action.disabled
46
- },
47
- '*': {
48
- color: (theme.vars || theme).palette.action.disabled
49
46
  }
50
47
  },
51
48
  variants: Object.keys((theme.vars ?? theme).palette)
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v9.1.0
2
+ * @mui/x-date-pickers v9.3.0
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.1.0
2
+ * @mui/x-date-pickers v9.3.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -31,7 +31,7 @@ function usePreviousMonthDisabled(month, {
31
31
  return React.useMemo(() => {
32
32
  const now = adapter.date(undefined, timezone);
33
33
  const firstEnabledMonth = adapter.startOfMonth(disablePast && adapter.isAfter(now, minDate) ? now : minDate);
34
- return !adapter.isBefore(firstEnabledMonth, month);
34
+ return !adapter.isBefore(firstEnabledMonth, adapter.startOfMonth(month));
35
35
  }, [disablePast, minDate, month, adapter, timezone]);
36
36
  }
37
37
  function useMeridiemMode(date, ampm, onChange, selectionState) {
@@ -22,7 +22,7 @@ export function usePreviousMonthDisabled(month, {
22
22
  return React.useMemo(() => {
23
23
  const now = adapter.date(undefined, timezone);
24
24
  const firstEnabledMonth = adapter.startOfMonth(disablePast && adapter.isAfter(now, minDate) ? now : minDate);
25
- return !adapter.isBefore(firstEnabledMonth, month);
25
+ return !adapter.isBefore(firstEnabledMonth, adapter.startOfMonth(month));
26
26
  }, [disablePast, minDate, month, adapter, timezone]);
27
27
  }
28
28
  export function useMeridiemMode(date, ampm, onChange, selectionState) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers",
3
- "version": "9.1.0",
3
+ "version": "9.3.0",
4
4
  "author": "MUI Team",
5
5
  "description": "The community edition of the MUI X Date and Time Picker components.",
6
6
  "license": "MIT",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@babel/runtime": "^7.29.2",
37
- "@mui/utils": "9.0.0",
37
+ "@mui/utils": "9.0.1",
38
38
  "@types/react-transition-group": "^4.4.12",
39
39
  "clsx": "^2.1.1",
40
40
  "prop-types": "^15.8.1",
@@ -638,196 +638,196 @@
638
638
  }
639
639
  },
640
640
  "./StaticTimePicker": {
641
- "require": {
642
- "types": "./StaticTimePicker/index.d.ts",
643
- "default": "./StaticTimePicker/index.js"
644
- },
645
641
  "import": {
646
642
  "types": "./StaticTimePicker/index.d.mts",
647
643
  "default": "./StaticTimePicker/index.mjs"
648
644
  },
645
+ "require": {
646
+ "types": "./StaticTimePicker/index.d.ts",
647
+ "default": "./StaticTimePicker/index.js"
648
+ },
649
649
  "default": {
650
650
  "types": "./StaticTimePicker/index.d.mts",
651
651
  "default": "./StaticTimePicker/index.mjs"
652
652
  }
653
653
  },
654
654
  "./TimeClock": {
655
- "require": {
656
- "types": "./TimeClock/index.d.ts",
657
- "default": "./TimeClock/index.js"
658
- },
659
655
  "import": {
660
656
  "types": "./TimeClock/index.d.mts",
661
657
  "default": "./TimeClock/index.mjs"
662
658
  },
659
+ "require": {
660
+ "types": "./TimeClock/index.d.ts",
661
+ "default": "./TimeClock/index.js"
662
+ },
663
663
  "default": {
664
664
  "types": "./TimeClock/index.d.mts",
665
665
  "default": "./TimeClock/index.mjs"
666
666
  }
667
667
  },
668
668
  "./TimeField": {
669
- "require": {
670
- "types": "./TimeField/index.d.ts",
671
- "default": "./TimeField/index.js"
672
- },
673
669
  "import": {
674
670
  "types": "./TimeField/index.d.mts",
675
671
  "default": "./TimeField/index.mjs"
676
672
  },
673
+ "require": {
674
+ "types": "./TimeField/index.d.ts",
675
+ "default": "./TimeField/index.js"
676
+ },
677
677
  "default": {
678
678
  "types": "./TimeField/index.d.mts",
679
679
  "default": "./TimeField/index.mjs"
680
680
  }
681
681
  },
682
682
  "./TimePicker": {
683
- "require": {
684
- "types": "./TimePicker/index.d.ts",
685
- "default": "./TimePicker/index.js"
686
- },
687
683
  "import": {
688
684
  "types": "./TimePicker/index.d.mts",
689
685
  "default": "./TimePicker/index.mjs"
690
686
  },
687
+ "require": {
688
+ "types": "./TimePicker/index.d.ts",
689
+ "default": "./TimePicker/index.js"
690
+ },
691
691
  "default": {
692
692
  "types": "./TimePicker/index.d.mts",
693
693
  "default": "./TimePicker/index.mjs"
694
694
  }
695
695
  },
696
696
  "./YearCalendar": {
697
- "require": {
698
- "types": "./YearCalendar/index.d.ts",
699
- "default": "./YearCalendar/index.js"
700
- },
701
697
  "import": {
702
698
  "types": "./YearCalendar/index.d.mts",
703
699
  "default": "./YearCalendar/index.mjs"
704
700
  },
701
+ "require": {
702
+ "types": "./YearCalendar/index.d.ts",
703
+ "default": "./YearCalendar/index.js"
704
+ },
705
705
  "default": {
706
706
  "types": "./YearCalendar/index.d.mts",
707
707
  "default": "./YearCalendar/index.mjs"
708
708
  }
709
709
  },
710
710
  "./dateViewRenderers": {
711
- "require": {
712
- "types": "./dateViewRenderers/index.d.ts",
713
- "default": "./dateViewRenderers/index.js"
714
- },
715
711
  "import": {
716
712
  "types": "./dateViewRenderers/index.d.mts",
717
713
  "default": "./dateViewRenderers/index.mjs"
718
714
  },
715
+ "require": {
716
+ "types": "./dateViewRenderers/index.d.ts",
717
+ "default": "./dateViewRenderers/index.js"
718
+ },
719
719
  "default": {
720
720
  "types": "./dateViewRenderers/index.d.mts",
721
721
  "default": "./dateViewRenderers/index.mjs"
722
722
  }
723
723
  },
724
724
  "./hooks": {
725
- "require": {
726
- "types": "./hooks/index.d.ts",
727
- "default": "./hooks/index.js"
728
- },
729
725
  "import": {
730
726
  "types": "./hooks/index.d.mts",
731
727
  "default": "./hooks/index.mjs"
732
728
  },
729
+ "require": {
730
+ "types": "./hooks/index.d.ts",
731
+ "default": "./hooks/index.js"
732
+ },
733
733
  "default": {
734
734
  "types": "./hooks/index.d.mts",
735
735
  "default": "./hooks/index.mjs"
736
736
  }
737
737
  },
738
738
  "./internals": {
739
- "require": {
740
- "types": "./internals/index.d.ts",
741
- "default": "./internals/index.js"
742
- },
743
739
  "import": {
744
740
  "types": "./internals/index.d.mts",
745
741
  "default": "./internals/index.mjs"
746
742
  },
743
+ "require": {
744
+ "types": "./internals/index.d.ts",
745
+ "default": "./internals/index.js"
746
+ },
747
747
  "default": {
748
748
  "types": "./internals/index.d.mts",
749
749
  "default": "./internals/index.mjs"
750
750
  }
751
751
  },
752
752
  "./locales": {
753
- "require": {
754
- "types": "./locales/index.d.ts",
755
- "default": "./locales/index.js"
756
- },
757
753
  "import": {
758
754
  "types": "./locales/index.d.mts",
759
755
  "default": "./locales/index.mjs"
760
756
  },
757
+ "require": {
758
+ "types": "./locales/index.d.ts",
759
+ "default": "./locales/index.js"
760
+ },
761
761
  "default": {
762
762
  "types": "./locales/index.d.mts",
763
763
  "default": "./locales/index.mjs"
764
764
  }
765
765
  },
766
766
  "./managers": {
767
- "require": {
768
- "types": "./managers/index.d.ts",
769
- "default": "./managers/index.js"
770
- },
771
767
  "import": {
772
768
  "types": "./managers/index.d.mts",
773
769
  "default": "./managers/index.mjs"
774
770
  },
771
+ "require": {
772
+ "types": "./managers/index.d.ts",
773
+ "default": "./managers/index.js"
774
+ },
775
775
  "default": {
776
776
  "types": "./managers/index.d.mts",
777
777
  "default": "./managers/index.mjs"
778
778
  }
779
779
  },
780
780
  "./models": {
781
- "require": {
782
- "types": "./models/index.d.ts",
783
- "default": "./models/index.js"
784
- },
785
781
  "import": {
786
782
  "types": "./models/index.d.mts",
787
783
  "default": "./models/index.mjs"
788
784
  },
785
+ "require": {
786
+ "types": "./models/index.d.ts",
787
+ "default": "./models/index.js"
788
+ },
789
789
  "default": {
790
790
  "types": "./models/index.d.mts",
791
791
  "default": "./models/index.mjs"
792
792
  }
793
793
  },
794
794
  "./themeAugmentation": {
795
- "require": {
796
- "types": "./themeAugmentation/index.d.ts",
797
- "default": "./themeAugmentation/index.js"
798
- },
799
795
  "import": {
800
796
  "types": "./themeAugmentation/index.d.mts",
801
797
  "default": "./themeAugmentation/index.mjs"
802
798
  },
799
+ "require": {
800
+ "types": "./themeAugmentation/index.d.ts",
801
+ "default": "./themeAugmentation/index.js"
802
+ },
803
803
  "default": {
804
804
  "types": "./themeAugmentation/index.d.mts",
805
805
  "default": "./themeAugmentation/index.mjs"
806
806
  }
807
807
  },
808
808
  "./timeViewRenderers": {
809
- "require": {
810
- "types": "./timeViewRenderers/index.d.ts",
811
- "default": "./timeViewRenderers/index.js"
812
- },
813
809
  "import": {
814
810
  "types": "./timeViewRenderers/index.d.mts",
815
811
  "default": "./timeViewRenderers/index.mjs"
816
812
  },
813
+ "require": {
814
+ "types": "./timeViewRenderers/index.d.ts",
815
+ "default": "./timeViewRenderers/index.js"
816
+ },
817
817
  "default": {
818
818
  "types": "./timeViewRenderers/index.d.mts",
819
819
  "default": "./timeViewRenderers/index.mjs"
820
820
  }
821
821
  },
822
822
  "./validation": {
823
- "require": {
824
- "types": "./validation/index.d.ts",
825
- "default": "./validation/index.js"
826
- },
827
823
  "import": {
828
824
  "types": "./validation/index.d.mts",
829
825
  "default": "./validation/index.mjs"
830
826
  },
827
+ "require": {
828
+ "types": "./validation/index.d.ts",
829
+ "default": "./validation/index.js"
830
+ },
831
831
  "default": {
832
832
  "types": "./validation/index.d.mts",
833
833
  "default": "./validation/index.mjs"