@mui/x-date-pickers 9.10.0 → 9.11.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/AdapterDayjs/AdapterDayjs.d.mts +9 -0
- package/AdapterDayjs/AdapterDayjs.d.ts +9 -0
- package/AdapterDayjs/AdapterDayjs.js +34 -4
- package/AdapterDayjs/AdapterDayjs.mjs +34 -4
- package/CHANGELOG.md +224 -0
- package/PickersTextField/PickersInputBase/PickersInputBase.js +9 -19
- package/PickersTextField/PickersInputBase/PickersInputBase.mjs +9 -19
- package/PickersTextField/PickersInputBase/pickersInputBaseClasses.js +1 -1
- package/PickersTextField/PickersInputBase/pickersInputBaseClasses.mjs +1 -1
- package/README.md +1 -11
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +3 -3
|
@@ -64,6 +64,15 @@ export declare class AdapterDayjs implements MuiPickersAdapter<string> {
|
|
|
64
64
|
* See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72
|
|
65
65
|
*/
|
|
66
66
|
protected adjustOffset: (value: Dayjs) => Dayjs;
|
|
67
|
+
/**
|
|
68
|
+
* On dates predating the timezone standardization, IANA falls back on the Local Mean Time of the
|
|
69
|
+
* location, whose offset is not a round number of minutes (`Asia/Kolkata` is `GMT+05:53:28`).
|
|
70
|
+
* `dayjs` then moves the day of the month when only the year or the month was meant to change.
|
|
71
|
+
* `daysInMonth()` is unusable on such a value because it derives from the equally broken
|
|
72
|
+
* `endOf('month')`, hence computing it on a plain UTC value instead.
|
|
73
|
+
* See https://github.com/mui/mui-x/issues/23163
|
|
74
|
+
*/
|
|
75
|
+
private restoreDayOfMonth;
|
|
67
76
|
date: <T extends string | null | undefined>(value?: T, timezone?: PickersTimezone) => DateBuilderReturnType<T>;
|
|
68
77
|
getInvalidDate: () => Dayjs;
|
|
69
78
|
getTimezone: (value: Dayjs) => string;
|
|
@@ -64,6 +64,15 @@ export declare class AdapterDayjs implements MuiPickersAdapter<string> {
|
|
|
64
64
|
* See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72
|
|
65
65
|
*/
|
|
66
66
|
protected adjustOffset: (value: Dayjs) => Dayjs;
|
|
67
|
+
/**
|
|
68
|
+
* On dates predating the timezone standardization, IANA falls back on the Local Mean Time of the
|
|
69
|
+
* location, whose offset is not a round number of minutes (`Asia/Kolkata` is `GMT+05:53:28`).
|
|
70
|
+
* `dayjs` then moves the day of the month when only the year or the month was meant to change.
|
|
71
|
+
* `daysInMonth()` is unusable on such a value because it derives from the equally broken
|
|
72
|
+
* `endOf('month')`, hence computing it on a plain UTC value instead.
|
|
73
|
+
* See https://github.com/mui/mui-x/issues/23163
|
|
74
|
+
*/
|
|
75
|
+
private restoreDayOfMonth;
|
|
67
76
|
date: <T extends string | null | undefined>(value?: T, timezone?: PickersTimezone) => DateBuilderReturnType<T>;
|
|
68
77
|
getInvalidDate: () => Dayjs;
|
|
69
78
|
getTimezone: (value: Dayjs) => string;
|
|
@@ -282,6 +282,36 @@ class AdapterDayjs {
|
|
|
282
282
|
}
|
|
283
283
|
return value;
|
|
284
284
|
};
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* On dates predating the timezone standardization, IANA falls back on the Local Mean Time of the
|
|
288
|
+
* location, whose offset is not a round number of minutes (`Asia/Kolkata` is `GMT+05:53:28`).
|
|
289
|
+
* `dayjs` then moves the day of the month when only the year or the month was meant to change.
|
|
290
|
+
* `daysInMonth()` is unusable on such a value because it derives from the equally broken
|
|
291
|
+
* `endOf('month')`, hence computing it on a plain UTC value instead.
|
|
292
|
+
* See https://github.com/mui/mui-x/issues/23163
|
|
293
|
+
*/
|
|
294
|
+
restoreDayOfMonth = (value, reference) => {
|
|
295
|
+
const timezone = this.getTimezone(value);
|
|
296
|
+
// `system` and `UTC` values keep an offset that matches their instant, so they are never affected.
|
|
297
|
+
if (!this.hasUTCPlugin() || timezone === 'system' || timezone === 'UTC') {
|
|
298
|
+
return value;
|
|
299
|
+
}
|
|
300
|
+
const wallClock = _dayjs.default.utc(value.format('YYYY-MM-DDTHH:mm:ss.SSS'));
|
|
301
|
+
|
|
302
|
+
// Years above 9999 don't round-trip through the ISO format, and an invalid value formats to
|
|
303
|
+
// `Invalid Date`. Both would make the comparison below `NaN`.
|
|
304
|
+
if (!wallClock.isValid()) {
|
|
305
|
+
return value;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// A shorter target month legitimately clamps the day (`Jan 31` + 1 month is `Feb 28`).
|
|
309
|
+
const expectedDayOfMonth = Math.min(reference.date(), wallClock.daysInMonth());
|
|
310
|
+
if (value.date() === expectedDayOfMonth) {
|
|
311
|
+
return value;
|
|
312
|
+
}
|
|
313
|
+
return value.set('date', expectedDayOfMonth);
|
|
314
|
+
};
|
|
285
315
|
date = (value, timezone = 'default') => {
|
|
286
316
|
if (value === null) {
|
|
287
317
|
return null;
|
|
@@ -456,10 +486,10 @@ class AdapterDayjs {
|
|
|
456
486
|
return this.adjustOffset(value.endOf('day'));
|
|
457
487
|
};
|
|
458
488
|
addYears = (value, amount) => {
|
|
459
|
-
return this.adjustOffset(value.add(amount, 'year'));
|
|
489
|
+
return this.adjustOffset(this.restoreDayOfMonth(value.add(amount, 'year'), value));
|
|
460
490
|
};
|
|
461
491
|
addMonths = (value, amount) => {
|
|
462
|
-
return this.adjustOffset(value.add(amount, 'month'));
|
|
492
|
+
return this.adjustOffset(this.restoreDayOfMonth(value.add(amount, 'month'), value));
|
|
463
493
|
};
|
|
464
494
|
addWeeks = (value, amount) => {
|
|
465
495
|
return this.adjustOffset(value.add(amount, 'week'));
|
|
@@ -498,10 +528,10 @@ class AdapterDayjs {
|
|
|
498
528
|
return value.millisecond();
|
|
499
529
|
};
|
|
500
530
|
setYear = (value, year) => {
|
|
501
|
-
return this.adjustOffset(value.set('year', year));
|
|
531
|
+
return this.adjustOffset(this.restoreDayOfMonth(value.set('year', year), value));
|
|
502
532
|
};
|
|
503
533
|
setMonth = (value, month) => {
|
|
504
|
-
return this.adjustOffset(value.set('month', month));
|
|
534
|
+
return this.adjustOffset(this.restoreDayOfMonth(value.set('month', month), value));
|
|
505
535
|
};
|
|
506
536
|
setDate = (value, date) => {
|
|
507
537
|
return this.adjustOffset(value.set('date', date));
|
|
@@ -273,6 +273,36 @@ export class AdapterDayjs {
|
|
|
273
273
|
}
|
|
274
274
|
return value;
|
|
275
275
|
};
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* On dates predating the timezone standardization, IANA falls back on the Local Mean Time of the
|
|
279
|
+
* location, whose offset is not a round number of minutes (`Asia/Kolkata` is `GMT+05:53:28`).
|
|
280
|
+
* `dayjs` then moves the day of the month when only the year or the month was meant to change.
|
|
281
|
+
* `daysInMonth()` is unusable on such a value because it derives from the equally broken
|
|
282
|
+
* `endOf('month')`, hence computing it on a plain UTC value instead.
|
|
283
|
+
* See https://github.com/mui/mui-x/issues/23163
|
|
284
|
+
*/
|
|
285
|
+
restoreDayOfMonth = (value, reference) => {
|
|
286
|
+
const timezone = this.getTimezone(value);
|
|
287
|
+
// `system` and `UTC` values keep an offset that matches their instant, so they are never affected.
|
|
288
|
+
if (!this.hasUTCPlugin() || timezone === 'system' || timezone === 'UTC') {
|
|
289
|
+
return value;
|
|
290
|
+
}
|
|
291
|
+
const wallClock = dayjs.utc(value.format('YYYY-MM-DDTHH:mm:ss.SSS'));
|
|
292
|
+
|
|
293
|
+
// Years above 9999 don't round-trip through the ISO format, and an invalid value formats to
|
|
294
|
+
// `Invalid Date`. Both would make the comparison below `NaN`.
|
|
295
|
+
if (!wallClock.isValid()) {
|
|
296
|
+
return value;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// A shorter target month legitimately clamps the day (`Jan 31` + 1 month is `Feb 28`).
|
|
300
|
+
const expectedDayOfMonth = Math.min(reference.date(), wallClock.daysInMonth());
|
|
301
|
+
if (value.date() === expectedDayOfMonth) {
|
|
302
|
+
return value;
|
|
303
|
+
}
|
|
304
|
+
return value.set('date', expectedDayOfMonth);
|
|
305
|
+
};
|
|
276
306
|
date = (value, timezone = 'default') => {
|
|
277
307
|
if (value === null) {
|
|
278
308
|
return null;
|
|
@@ -447,10 +477,10 @@ export class AdapterDayjs {
|
|
|
447
477
|
return this.adjustOffset(value.endOf('day'));
|
|
448
478
|
};
|
|
449
479
|
addYears = (value, amount) => {
|
|
450
|
-
return this.adjustOffset(value.add(amount, 'year'));
|
|
480
|
+
return this.adjustOffset(this.restoreDayOfMonth(value.add(amount, 'year'), value));
|
|
451
481
|
};
|
|
452
482
|
addMonths = (value, amount) => {
|
|
453
|
-
return this.adjustOffset(value.add(amount, 'month'));
|
|
483
|
+
return this.adjustOffset(this.restoreDayOfMonth(value.add(amount, 'month'), value));
|
|
454
484
|
};
|
|
455
485
|
addWeeks = (value, amount) => {
|
|
456
486
|
return this.adjustOffset(value.add(amount, 'week'));
|
|
@@ -489,10 +519,10 @@ export class AdapterDayjs {
|
|
|
489
519
|
return value.millisecond();
|
|
490
520
|
};
|
|
491
521
|
setYear = (value, year) => {
|
|
492
|
-
return this.adjustOffset(value.set('year', year));
|
|
522
|
+
return this.adjustOffset(this.restoreDayOfMonth(value.set('year', year), value));
|
|
493
523
|
};
|
|
494
524
|
setMonth = (value, month) => {
|
|
495
|
-
return this.adjustOffset(value.set('month', month));
|
|
525
|
+
return this.adjustOffset(this.restoreDayOfMonth(value.set('month', month), value));
|
|
496
526
|
};
|
|
497
527
|
setDate = (value, date) => {
|
|
498
528
|
return this.adjustOffset(value.set('date', date));
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,229 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 9.11.0
|
|
4
|
+
|
|
5
|
+
_Aug 6, 2026_
|
|
6
|
+
|
|
7
|
+
We'd like to extend a big thank you to the 14 contributors who made this release possible. Here are some highlights ✨:
|
|
8
|
+
|
|
9
|
+
- ✨ Add `addItems()` and `getItemSelection()` API methods to Tree View
|
|
10
|
+
|
|
11
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
12
|
+
@12joan, @Anexus5919, @kevincorizi-sbt, @mixelburg, @mustafajw07, @strazto
|
|
13
|
+
|
|
14
|
+
The following team members contributed to this release:
|
|
15
|
+
@flaviendelangle, @hasdfa, @JCQuintas, @LukasTy, @MBilalShafi, @michelengelen, @noraleonte, @rita-codes
|
|
16
|
+
|
|
17
|
+
### Data Grid
|
|
18
|
+
|
|
19
|
+
#### `@mui/x-data-grid@9.11.0`
|
|
20
|
+
|
|
21
|
+
- [DataGrid] Fix `updateRows` stripping class prototypes from rows in datasource mode (#22288) @mixelburg
|
|
22
|
+
- [DataGrid] Do not re-fetch data when an `Activity` becomes visible (#22603) @12joan
|
|
23
|
+
- [DataGrid] Fix toolbar button stealing focus when a sibling's disabled state changes (#23204) @MBilalShafi
|
|
24
|
+
|
|
25
|
+
#### `@mui/x-data-grid-pro@9.11.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
26
|
+
|
|
27
|
+
Same changes as in `@mui/x-data-grid@9.11.0`.
|
|
28
|
+
|
|
29
|
+
#### `@mui/x-data-grid-premium@9.11.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
30
|
+
|
|
31
|
+
Same changes as in `@mui/x-data-grid-pro@9.11.0`.
|
|
32
|
+
|
|
33
|
+
### Date and Time Pickers
|
|
34
|
+
|
|
35
|
+
#### `@mui/x-date-pickers@9.11.0`
|
|
36
|
+
|
|
37
|
+
- [pickers] Fix day shift when editing dates predating timezone standardization (#23296) @JCQuintas
|
|
38
|
+
|
|
39
|
+
#### `@mui/x-date-pickers-pro@9.11.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
40
|
+
|
|
41
|
+
Same changes as in `@mui/x-date-pickers@9.11.0`, plus:
|
|
42
|
+
|
|
43
|
+
- [DateRangePicker] Fix disabled filler cells showing the range highlight (#23293) @JCQuintas
|
|
44
|
+
|
|
45
|
+
### Charts
|
|
46
|
+
|
|
47
|
+
#### `@mui/x-charts@9.11.0`
|
|
48
|
+
|
|
49
|
+
- [charts] Activate the focused item with `Enter`/`Space` (#23218) @JCQuintas
|
|
50
|
+
- [charts] Extract the axis click payload builders (#23215) @JCQuintas
|
|
51
|
+
- [charts] Fix `GestureManager` event listener leak on chart unmount (#23283) @kevincorizi-sbt
|
|
52
|
+
- [charts] Fix `slotProps.legend.position` and `direction` in `RadarChart` (#23254) @JCQuintas
|
|
53
|
+
- [charts] Fix axis clicks being discarded on slight pointer movement (#23244) @noraleonte
|
|
54
|
+
- [charts] Fix image export of charts sized by their parent element (#23255) @JCQuintas
|
|
55
|
+
- [charts] Forward `experimentalFeatures` on `RadarChart` and `Heatmap` (#23216) @JCQuintas
|
|
56
|
+
- [charts] Hide focus indicator when the chart loses focus (#23213) @JCQuintas
|
|
57
|
+
|
|
58
|
+
#### `@mui/x-charts-pro@9.11.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
59
|
+
|
|
60
|
+
Same changes as in `@mui/x-charts@9.11.0`.
|
|
61
|
+
|
|
62
|
+
#### `@mui/x-charts-premium@9.11.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
63
|
+
|
|
64
|
+
Same changes as in `@mui/x-charts-pro@9.11.0`, plus:
|
|
65
|
+
|
|
66
|
+
- [charts-premium] Fix `RangeBar` type override (#23217) @JCQuintas
|
|
67
|
+
|
|
68
|
+
### Tree View
|
|
69
|
+
|
|
70
|
+
#### `@mui/x-tree-view@9.11.0`
|
|
71
|
+
|
|
72
|
+
- [tree view] Add `addItems()` API method (#23159) @JCQuintas
|
|
73
|
+
- [tree view] Add `getItemSelection` API method (#23257) @noraleonte
|
|
74
|
+
- [tree view] Ignore `keepExistingSelection` when `multiSelect` is `false` (#23242) @JCQuintas
|
|
75
|
+
- [tree view] Prevent duplicate ids in multi-select arrow navigation (#23006) @Anexus5919
|
|
76
|
+
|
|
77
|
+
#### `@mui/x-tree-view-pro@9.11.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
78
|
+
|
|
79
|
+
Same changes as in `@mui/x-tree-view@9.11.0`, plus:
|
|
80
|
+
|
|
81
|
+
- [tree view] Discard superseded lazy-loading responses (#23005) @Anexus5919
|
|
82
|
+
|
|
83
|
+
### Scheduler
|
|
84
|
+
|
|
85
|
+
#### `@mui/x-scheduler@9.0.0-beta.8`
|
|
86
|
+
|
|
87
|
+
- [scheduler] Add `localeText` prop to standalone views (#23210) @rita-codes
|
|
88
|
+
- [scheduler] Finetune touch experience for time grid events and introduce editing drawer (#22624) @noraleonte
|
|
89
|
+
- [scheduler] Introduce the edit dialog form context & lifecycle contract (#23284) @rita-codes
|
|
90
|
+
- [scheduler] Refactor edit dialog General tab into section components (#23206) @rita-codes
|
|
91
|
+
- [scheduler] Replace copied Base UI internals with `@base-ui/react/internals` imports (#21972) @flaviendelangle
|
|
92
|
+
- [scheduler] Hide resource picker when no resources are provided (#23290) @mustafajw07
|
|
93
|
+
- [scheduler] Support multi-resource occurrences in `EventTimeline` (#23240) @mustafajw07
|
|
94
|
+
|
|
95
|
+
#### `@mui/x-scheduler-premium@9.0.0-beta.8` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
96
|
+
|
|
97
|
+
Same changes as in `@mui/x-scheduler@9.0.0-beta.8`.
|
|
98
|
+
|
|
99
|
+
### Codemod
|
|
100
|
+
|
|
101
|
+
#### `@mui/x-codemod@9.11.0`
|
|
102
|
+
|
|
103
|
+
- [codemod] Remove unused `@babel/core` and `@babel/traverse` dependencies (#23245) @LukasTy
|
|
104
|
+
|
|
105
|
+
### Docs
|
|
106
|
+
|
|
107
|
+
- [docs] Add recipe for adding new rows from clipboard copy (#22913) @michelengelen
|
|
108
|
+
- [docs] Clarify the package versions in v8 upgrade guides (#22376) @strazto
|
|
109
|
+
- [docs] Replace README peer dependency lists with an npm install command (#23256) @LukasTy
|
|
110
|
+
|
|
111
|
+
### Core
|
|
112
|
+
|
|
113
|
+
- [code-infra] Align action pin version comments (#23238) @LukasTy
|
|
114
|
+
|
|
115
|
+
### Miscellaneous
|
|
116
|
+
|
|
117
|
+
- [chat] Drop the undeclared `@mui/icons-material` dependency (#23252) @LukasTy
|
|
118
|
+
- [chat] Sanitize image part URLs and share the URL allow-list with markdown (#23058) @hasdfa
|
|
119
|
+
- [test] Type the `PickersTextField` test stub instead of `as any` (#23194) @LukasTy
|
|
120
|
+
|
|
121
|
+
## 9.10.1
|
|
122
|
+
|
|
123
|
+
_Jul 23, 2026_
|
|
124
|
+
|
|
125
|
+
We'd like to extend a big thank you to the 11 contributors who made this release possible. Here are some highlights ✨:
|
|
126
|
+
|
|
127
|
+
- 🦮 Improve accessibility of the Charts and Pickers components.
|
|
128
|
+
- 🐞 Bugfixes
|
|
129
|
+
- 📚 Documentation improvements
|
|
130
|
+
|
|
131
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
132
|
+
@kevincorizi-sbt, @mustafajw07, @SamanPandey-in
|
|
133
|
+
|
|
134
|
+
The following team members contributed to this release:
|
|
135
|
+
@brijeshb42, @hasdfa, @JCQuintas, @LukasTy, @michelengelen, @noraleonte, @rita-codes, @silviuaavram
|
|
136
|
+
|
|
137
|
+
### Data Grid
|
|
138
|
+
|
|
139
|
+
#### `@mui/x-data-grid@9.10.1`
|
|
140
|
+
|
|
141
|
+
- [data grid] Fix `getColumn` return type not reflecting that it can return undefined (#23165) @JCQuintas
|
|
142
|
+
|
|
143
|
+
#### `@mui/x-data-grid-pro@9.10.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
144
|
+
|
|
145
|
+
Same changes as in `@mui/x-data-grid@9.10.1`.
|
|
146
|
+
|
|
147
|
+
#### `@mui/x-data-grid-premium@9.10.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
148
|
+
|
|
149
|
+
Same changes as in `@mui/x-data-grid-pro@9.10.1`.
|
|
150
|
+
|
|
151
|
+
### Date and Time Pickers
|
|
152
|
+
|
|
153
|
+
#### `@mui/x-date-pickers@9.10.1`
|
|
154
|
+
|
|
155
|
+
- [pickers] Fix format placeholder brightness with a start adornment (#23189) @LukasTy
|
|
156
|
+
|
|
157
|
+
#### `@mui/x-date-pickers-pro@9.10.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
158
|
+
|
|
159
|
+
Same changes as in `@mui/x-date-pickers@9.10.1`, plus:
|
|
160
|
+
|
|
161
|
+
- [DateRangePicker] Fix broken active range position underline in single input range fields (#23166) @LukasTy
|
|
162
|
+
|
|
163
|
+
### Charts
|
|
164
|
+
|
|
165
|
+
#### `@mui/x-charts@9.10.1`
|
|
166
|
+
|
|
167
|
+
- [charts] Fix pie chart disappearing when an arc spans almost the full circle (#23145) @JCQuintas
|
|
168
|
+
- [charts] Set `aria-hidden` on accessibility proxy divs at initialization (#23186) @kevincorizi-sbt
|
|
169
|
+
- [charts] Fix keyboard navigation on series with different lengths (#23182) @JCQuintas
|
|
170
|
+
- [charts] Fix out of bounds keyboard navigation (#23180) @silviuaavram
|
|
171
|
+
|
|
172
|
+
#### `@mui/x-charts-pro@9.10.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
173
|
+
|
|
174
|
+
Same changes as in `@mui/x-charts@9.10.1`, plus:
|
|
175
|
+
|
|
176
|
+
- [charts-pro] Fix highlight shifting on sampled bar charts (#23190) @noraleonte
|
|
177
|
+
- [charts-pro] Sampled band highlight falls back to single-band width for Date/object values (#23024) @SamanPandey-in
|
|
178
|
+
|
|
179
|
+
#### `@mui/x-charts-premium@9.10.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
180
|
+
|
|
181
|
+
Same changes as in `@mui/x-charts-pro@9.10.1`.
|
|
182
|
+
|
|
183
|
+
### Tree View
|
|
184
|
+
|
|
185
|
+
#### `@mui/x-tree-view@9.10.1`
|
|
186
|
+
|
|
187
|
+
- [TreeView] Fix selection propagation to exclude disabled items (#23012) @michelengelen
|
|
188
|
+
|
|
189
|
+
#### `@mui/x-tree-view-pro@9.10.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
190
|
+
|
|
191
|
+
Same changes as in `@mui/x-tree-view@9.10.1`.
|
|
192
|
+
|
|
193
|
+
### Scheduler
|
|
194
|
+
|
|
195
|
+
#### `@mui/x-scheduler@9.0.0-beta.7`
|
|
196
|
+
|
|
197
|
+
- [scheduler] Polish `EventCalendar` rendering for multi-resource events (#23161) @mustafajw07
|
|
198
|
+
- [scheduler] Responsive header (#22954) @noraleonte
|
|
199
|
+
|
|
200
|
+
#### `@mui/x-scheduler-premium@9.0.0-beta.7` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
201
|
+
|
|
202
|
+
Same changes as in `@mui/x-scheduler@9.0.0-beta.7`, plus:
|
|
203
|
+
|
|
204
|
+
- [scheduler-premium] Add the dependencies data model (#23117) @rita-codes
|
|
205
|
+
- [scheduler-premium] Dependencies - Render the FS arrow (#23162) @rita-codes
|
|
206
|
+
|
|
207
|
+
### Codemod
|
|
208
|
+
|
|
209
|
+
#### `@mui/x-codemod@9.10.1`
|
|
210
|
+
|
|
211
|
+
Internal changes.
|
|
212
|
+
|
|
213
|
+
### Docs
|
|
214
|
+
|
|
215
|
+
- [docs] Fix clearing, layout shift, and prop leak in Pickers demos (#23191) @LukasTy
|
|
216
|
+
|
|
217
|
+
### Core
|
|
218
|
+
|
|
219
|
+
- [code-infra] Validate working of specific code-infra canary (#23207) @brijeshb42
|
|
220
|
+
|
|
221
|
+
### Miscellaneous
|
|
222
|
+
|
|
223
|
+
- [chat] Normalize message part link URLs (#23187) @hasdfa
|
|
224
|
+
- [x-chat] Fix object URL leaks for submitted attachments (#23198) @hasdfa
|
|
225
|
+
- [internals] Make disposable types self-contained without `esnext.disposable` lib (#23164) @JCQuintas
|
|
226
|
+
|
|
3
227
|
## 9.10.0
|
|
4
228
|
|
|
5
229
|
_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:
|
|
121
|
+
isLabelShrunk: false
|
|
131
122
|
},
|
|
132
|
-
style:
|
|
133
|
-
opacity:
|
|
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
|
-
|
|
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:
|
|
114
|
+
isLabelShrunk: false
|
|
124
115
|
},
|
|
125
|
-
style:
|
|
126
|
-
opacity:
|
|
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
|
-
|
|
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/README.md
CHANGED
|
@@ -8,7 +8,7 @@ It's part of [MUI X](https://mui.com/x/), an open-core extension of our Core li
|
|
|
8
8
|
Install the package in your project directory with:
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
npm install @mui/x-date-pickers
|
|
11
|
+
npm install @mui/x-date-pickers @mui/material @emotion/react @emotion/styled
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
Then install the date library of your choice (if not already installed).
|
|
@@ -33,16 +33,6 @@ npm install luxon
|
|
|
33
33
|
npm install moment
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
This component has the following peer dependencies that you need to install as well.
|
|
37
|
-
|
|
38
|
-
```json
|
|
39
|
-
"peerDependencies": {
|
|
40
|
-
"@mui/material": "^5.15.14 || ^6.0.0 || ^7.0.0",
|
|
41
|
-
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
42
|
-
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
43
|
-
},
|
|
44
|
-
```
|
|
45
|
-
|
|
46
36
|
After completing the installation, you have to set the `dateAdapter` prop of the `LocalizationProvider` accordingly.
|
|
47
37
|
The supported adapters are exported from `@mui/x-date-pickers`.
|
|
48
38
|
|
package/index.js
CHANGED
package/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-date-pickers",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.11.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,12 +34,12 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@babel/runtime": "^7.29.7",
|
|
37
|
-
"@mui/utils": "^9.
|
|
37
|
+
"@mui/utils": "^9.3.0",
|
|
38
38
|
"@types/react-transition-group": "^4.4.12",
|
|
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.
|
|
42
|
+
"@mui/x-internals": "^9.11.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@emotion/react": "^11.9.0",
|