@mui/x-date-pickers 7.0.0-beta.7 → 7.0.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/AdapterDateFns/AdapterDateFns.js +1 -1
- package/AdapterDateFnsBase/AdapterDateFnsBase.js +1 -2
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +2 -4
- package/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -1
- package/AdapterDayjs/AdapterDayjs.js +2 -4
- package/AdapterLuxon/AdapterLuxon.js +12 -9
- package/AdapterMoment/AdapterMoment.js +5 -6
- package/CHANGELOG.md +195 -12
- package/DateCalendar/DateCalendar.js +14 -16
- package/DateCalendar/DayCalendar.js +5 -6
- package/DateField/DateField.js +3 -4
- package/DatePicker/DatePicker.js +1 -1
- package/DatePicker/shared.d.ts +2 -1
- package/DatePicker/shared.js +3 -5
- package/DateTimeField/DateTimeField.js +3 -4
- package/DateTimePicker/DateTimePicker.js +1 -1
- package/DateTimePicker/DateTimePickerToolbar.js +1 -1
- package/DateTimePicker/shared.d.ts +2 -1
- package/DateTimePicker/shared.js +11 -13
- package/DesktopDatePicker/DesktopDatePicker.js +7 -11
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +72 -37
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +12 -0
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +101 -0
- package/DesktopDateTimePicker/index.d.ts +1 -0
- package/DesktopDateTimePicker/index.js +2 -1
- package/DesktopTimePicker/DesktopTimePicker.js +8 -12
- package/DigitalClock/DigitalClock.js +2 -3
- package/LocalizationProvider/LocalizationProvider.js +1 -2
- package/MobileDatePicker/MobileDatePicker.js +6 -10
- package/MobileDateTimePicker/MobileDateTimePicker.js +8 -12
- package/MobileTimePicker/MobileTimePicker.js +6 -10
- package/MonthCalendar/MonthCalendar.js +4 -4
- package/MonthCalendar/PickersMonth.js +1 -2
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +1 -1
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +3 -5
- package/PickersActionBar/PickersActionBar.js +1 -1
- package/PickersCalendarHeader/PickersCalendarHeader.js +4 -5
- package/PickersLayout/usePickerLayout.js +8 -9
- package/PickersSectionList/PickersSectionList.js +9 -11
- package/PickersTextField/PickersFilledInput/PickersFilledInput.js +2 -3
- package/PickersTextField/PickersInput/PickersInput.js +1 -1
- package/PickersTextField/PickersInputBase/PickersInputBase.js +4 -5
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +2 -2
- package/README.md +1 -1
- package/StaticDatePicker/StaticDatePicker.js +4 -5
- package/StaticDateTimePicker/StaticDateTimePicker.js +6 -7
- package/StaticTimePicker/StaticTimePicker.js +3 -4
- package/TimeClock/TimeClock.js +1 -1
- package/TimeField/TimeField.js +2 -3
- package/TimePicker/shared.d.ts +2 -1
- package/TimePicker/shared.js +5 -7
- package/YearCalendar/YearCalendar.js +5 -6
- package/hooks/useClearableField.js +6 -7
- package/index.js +1 -1
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +8 -9
- package/internals/components/PickersModalDialog.js +6 -7
- package/internals/components/PickersPopper.js +13 -16
- package/internals/components/PickersToolbar.js +9 -12
- package/internals/hooks/date-helpers-hooks.js +1 -1
- package/internals/hooks/defaultizedFieldProps.js +15 -18
- package/internals/hooks/useClockReferenceDate.js +1 -1
- package/internals/hooks/useDesktopPicker/index.d.ts +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +11 -12
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
- package/internals/hooks/useField/buildSectionsFromFormat.js +35 -31
- package/internals/hooks/useField/useField.js +2 -2
- package/internals/hooks/useField/useField.utils.js +4 -7
- package/internals/hooks/useField/useFieldCharacterEditing.js +1 -2
- package/internals/hooks/useField/useFieldState.js +1 -1
- package/internals/hooks/useField/useFieldV6TextField.js +9 -15
- package/internals/hooks/useField/useFieldV7TextField.js +9 -11
- package/internals/hooks/useMobilePicker/useMobilePicker.js +7 -8
- package/internals/hooks/useOpenState.js +1 -1
- package/internals/hooks/usePicker/index.d.ts +1 -0
- package/internals/hooks/usePicker/usePickerViews.d.ts +4 -2
- package/internals/hooks/usePicker/usePickerViews.js +1 -2
- package/internals/hooks/useStaticPicker/useStaticPicker.js +13 -17
- package/internals/hooks/useValueWithTimezone.js +5 -6
- package/internals/hooks/useViews.js +3 -4
- package/internals/index.d.ts +1 -1
- package/internals/models/validation.d.ts +1 -1
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +3 -3
- package/internals/utils/date-time-utils.js +2 -5
- package/internals/utils/fields.js +1 -1
- package/internals/utils/getDefaultReferenceDate.js +2 -6
- package/internals/utils/views.js +1 -1
- package/locales/csCZ.js +1 -4
- package/locales/daDK.js +1 -4
- package/locales/deDE.js +1 -4
- package/locales/huHU.js +1 -4
- package/locales/jaJP.js +1 -4
- package/locales/roRO.js +1 -4
- package/locales/skSK.js +1 -4
- package/modern/AdapterLuxon/AdapterLuxon.js +9 -4
- package/modern/DateCalendar/DateCalendar.js +1 -1
- package/modern/DateField/DateField.js +1 -1
- package/modern/DatePicker/DatePicker.js +1 -1
- package/modern/DateTimeField/DateTimeField.js +1 -1
- package/modern/DateTimePicker/DateTimePicker.js +1 -1
- package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +64 -25
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +101 -0
- package/modern/DesktopDateTimePicker/index.js +2 -1
- package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
- package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/components/PickersPopper.js +1 -1
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +34 -30
- package/modern/internals/hooks/useField/useFieldV7TextField.js +1 -1
- package/modern/internals/hooks/useOpenState.js +1 -1
- package/modern/internals/utils/fields.js +1 -1
- package/node/AdapterLuxon/AdapterLuxon.js +9 -4
- package/node/DateCalendar/DateCalendar.js +1 -1
- package/node/DateField/DateField.js +1 -1
- package/node/DatePicker/DatePicker.js +1 -1
- package/node/DateTimeField/DateTimeField.js +1 -1
- package/node/DateTimePicker/DateTimePicker.js +1 -1
- package/node/DesktopDatePicker/DesktopDatePicker.js +1 -1
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +63 -25
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +108 -0
- package/node/DesktopDateTimePicker/index.js +8 -1
- package/node/MobileDatePicker/MobileDatePicker.js +1 -1
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
- package/node/StaticDatePicker/StaticDatePicker.js +1 -1
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/node/index.js +1 -1
- package/node/internals/components/PickersPopper.js +1 -1
- package/node/internals/hooks/useField/buildSectionsFromFormat.js +34 -30
- package/node/internals/hooks/useField/useFieldV7TextField.js +1 -1
- package/node/internals/hooks/useOpenState.js +1 -1
- package/node/internals/utils/fields.js +1 -1
- package/package.json +5 -5
- package/timeViewRenderers/timeViewRenderers.js +1 -1
- package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +0 -15
- package/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -163
- package/dateTimeViewRenderers/index.d.ts +0 -2
- package/dateTimeViewRenderers/index.js +0 -1
- package/dateTimeViewRenderers/package.json +0 -6
- package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -162
- package/modern/dateTimeViewRenderers/index.js +0 -1
- package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -171
- package/node/dateTimeViewRenderers/index.js +0 -12
|
@@ -79,7 +79,7 @@ export class AdapterDateFns extends AdapterDateFnsBase {
|
|
|
79
79
|
throw new Error(['MUI: The `date-fns` package v3.x is not compatible with this adapter.', 'Please, install v2.x of the package or use the `AdapterDateFnsV3` instead.'].join('\n'));
|
|
80
80
|
}
|
|
81
81
|
super({
|
|
82
|
-
locale: locale
|
|
82
|
+
locale: locale ?? defaultLocale,
|
|
83
83
|
formats,
|
|
84
84
|
longFormatters
|
|
85
85
|
});
|
|
@@ -249,8 +249,7 @@ export class AdapterDateFnsBase {
|
|
|
249
249
|
return value;
|
|
250
250
|
};
|
|
251
251
|
this.getCurrentLocaleCode = () => {
|
|
252
|
-
|
|
253
|
-
return ((_this$locale = this.locale) == null ? void 0 : _this$locale.code) || 'en-US';
|
|
252
|
+
return this.locale?.code || 'en-US';
|
|
254
253
|
};
|
|
255
254
|
// Note: date-fns input types are more lenient than this adapter, so we need to expose our more
|
|
256
255
|
// strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.
|
|
@@ -315,8 +315,7 @@ export class AdapterDateFnsJalali {
|
|
|
315
315
|
});
|
|
316
316
|
};
|
|
317
317
|
this.getCurrentLocaleCode = () => {
|
|
318
|
-
|
|
319
|
-
return ((_this$locale = this.locale) == null ? void 0 : _this$locale.code) || 'fa-IR';
|
|
318
|
+
return this.locale?.code || 'fa-IR';
|
|
320
319
|
};
|
|
321
320
|
// Note: date-fns input types are more lenient than this adapter, so we need to expose our more
|
|
322
321
|
// strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.
|
|
@@ -329,10 +328,9 @@ export class AdapterDateFnsJalali {
|
|
|
329
328
|
return true;
|
|
330
329
|
};
|
|
331
330
|
this.expandFormat = format => {
|
|
332
|
-
var _this$locale2;
|
|
333
331
|
// @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31
|
|
334
332
|
const longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
|
|
335
|
-
const locale =
|
|
333
|
+
const locale = this.locale ?? defaultLocale;
|
|
336
334
|
return format.match(longFormatRegexp).map(token => {
|
|
337
335
|
const firstCharacter = token[0];
|
|
338
336
|
if (firstCharacter === 'p' || firstCharacter === 'P') {
|
|
@@ -87,7 +87,7 @@ export class AdapterDateFns extends AdapterDateFnsBase {
|
|
|
87
87
|
throw new Error('MUI: The minimum supported `date-fns` package version compatible with this adapter is `3.2.x`.');
|
|
88
88
|
}
|
|
89
89
|
super({
|
|
90
|
-
locale: locale
|
|
90
|
+
locale: locale ?? enUS,
|
|
91
91
|
formats,
|
|
92
92
|
longFormatters
|
|
93
93
|
});
|
|
@@ -251,10 +251,9 @@ export class AdapterDayjs {
|
|
|
251
251
|
}
|
|
252
252
|
const timezone = this.getTimezone(value);
|
|
253
253
|
if (timezone !== 'UTC') {
|
|
254
|
-
var _fixedValue$$offset, _value$$offset;
|
|
255
254
|
const fixedValue = value.tz(this.cleanTimezone(timezone), true);
|
|
256
255
|
// @ts-ignore
|
|
257
|
-
if ((
|
|
256
|
+
if ((fixedValue.$offset ?? 0) === (value.$offset ?? 0)) {
|
|
258
257
|
return value;
|
|
259
258
|
}
|
|
260
259
|
return fixedValue;
|
|
@@ -281,9 +280,8 @@ export class AdapterDayjs {
|
|
|
281
280
|
this.getInvalidDate = () => defaultDayjs(new Date('Invalid date'));
|
|
282
281
|
this.getTimezone = value => {
|
|
283
282
|
if (this.hasTimezonePlugin()) {
|
|
284
|
-
var _value$$x;
|
|
285
283
|
// @ts-ignore
|
|
286
|
-
const zone =
|
|
284
|
+
const zone = value.$x?.$timezone;
|
|
287
285
|
if (zone) {
|
|
288
286
|
return zone;
|
|
289
287
|
}
|
|
@@ -229,18 +229,21 @@ export class AdapterLuxon {
|
|
|
229
229
|
};
|
|
230
230
|
/* istanbul ignore next */
|
|
231
231
|
this.is12HourCycleInCurrentLocale = () => {
|
|
232
|
-
var _Intl$DateTimeFormat;
|
|
233
232
|
if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {
|
|
234
233
|
return true; // Luxon defaults to en-US if Intl not found
|
|
235
234
|
}
|
|
236
|
-
return Boolean(
|
|
235
|
+
return Boolean(new Intl.DateTimeFormat(this.locale, {
|
|
237
236
|
hour: 'numeric'
|
|
238
|
-
})
|
|
237
|
+
})?.resolvedOptions()?.hour12);
|
|
239
238
|
};
|
|
240
239
|
this.expandFormat = format => {
|
|
241
240
|
// Extract escaped section to avoid extending them
|
|
242
241
|
const catchEscapedSectionsRegexp = /''|'(''|[^'])+('|$)|[^']*/g;
|
|
243
242
|
|
|
243
|
+
// This RegExp tests if a string is only mad of supported tokens
|
|
244
|
+
const validTokens = [...Object.keys(this.formatTokenMap), 'yyyyy'];
|
|
245
|
+
const isWordComposedOfTokens = new RegExp(`^(${validTokens.join('|')})+$`);
|
|
246
|
+
|
|
244
247
|
// Extract words to test if they are a token or a word to escape.
|
|
245
248
|
const catchWordsRegexp = /(?:^|[^a-z])([a-z]+)(?:[^a-z]|$)|([a-z]+)/gi;
|
|
246
249
|
return format.match(catchEscapedSectionsRegexp).map(token => {
|
|
@@ -251,12 +254,13 @@ export class AdapterLuxon {
|
|
|
251
254
|
const expandedToken = DateTime.expandFormat(token, {
|
|
252
255
|
locale: this.locale
|
|
253
256
|
});
|
|
254
|
-
return expandedToken.replace(catchWordsRegexp, (
|
|
257
|
+
return expandedToken.replace(catchWordsRegexp, (substring, g1, g2) => {
|
|
255
258
|
const word = g1 || g2; // words are either in group 1 or group 2
|
|
256
|
-
|
|
257
|
-
|
|
259
|
+
|
|
260
|
+
if (isWordComposedOfTokens.test(word)) {
|
|
261
|
+
return substring;
|
|
258
262
|
}
|
|
259
|
-
return `'${
|
|
263
|
+
return `'${substring}'`;
|
|
260
264
|
});
|
|
261
265
|
}).join('')
|
|
262
266
|
// The returned format can contain `yyyyy` which means year between 4 and 6 digits.
|
|
@@ -476,8 +480,7 @@ export class AdapterLuxon {
|
|
|
476
480
|
return weeks;
|
|
477
481
|
};
|
|
478
482
|
this.getWeekNumber = value => {
|
|
479
|
-
|
|
480
|
-
return (_value$localWeekNumbe = value.localWeekNumber) != null ? _value$localWeekNumbe : value.weekNumber;
|
|
483
|
+
return value.localWeekNumber ?? value.weekNumber;
|
|
481
484
|
};
|
|
482
485
|
this.getDayOfWeek = value => {
|
|
483
486
|
return value.weekday;
|
|
@@ -211,17 +211,15 @@ export class AdapterMoment {
|
|
|
211
211
|
};
|
|
212
212
|
this.getInvalidDate = () => this.moment(new Date('Invalid Date'));
|
|
213
213
|
this.getTimezone = value => {
|
|
214
|
-
var _value$_z, _ref, _this$moment$defaultZ;
|
|
215
214
|
// @ts-ignore
|
|
216
215
|
// eslint-disable-next-line no-underscore-dangle
|
|
217
|
-
const zone =
|
|
216
|
+
const zone = value._z?.name;
|
|
218
217
|
const defaultZone = value.isUTC() ? 'UTC' : 'system';
|
|
219
218
|
|
|
220
219
|
// @ts-ignore
|
|
221
|
-
return
|
|
220
|
+
return zone ?? this.moment.defaultZone?.name ?? defaultZone;
|
|
222
221
|
};
|
|
223
222
|
this.setTimezone = (value, timezone) => {
|
|
224
|
-
var _this$moment$defaultZ2, _this$moment$defaultZ3;
|
|
225
223
|
if (this.getTimezone(value) === timezone) {
|
|
226
224
|
return value;
|
|
227
225
|
}
|
|
@@ -238,8 +236,9 @@ export class AdapterMoment {
|
|
|
238
236
|
}
|
|
239
237
|
return value;
|
|
240
238
|
}
|
|
241
|
-
const cleanZone = timezone === 'default' ?
|
|
242
|
-
|
|
239
|
+
const cleanZone = timezone === 'default' ?
|
|
240
|
+
// @ts-ignore
|
|
241
|
+
this.moment.defaultZone?.name ?? 'system' : timezone;
|
|
243
242
|
if (cleanZone === 'system') {
|
|
244
243
|
return value.clone().local();
|
|
245
244
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,189 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## v7.0.0
|
|
7
|
+
|
|
8
|
+
_Mar 22, 2024_
|
|
9
|
+
|
|
10
|
+
We're excited to [announce the first v7 stable release](https://mui.com/blog/mui-x-v7/)! 🎉🚀
|
|
11
|
+
|
|
12
|
+
This is now the officially supported major version, where we'll keep rolling out new features, bug fixes, and improvements.
|
|
13
|
+
Migration guides are available with a complete list of the breaking changes:
|
|
14
|
+
|
|
15
|
+
- [Data Grid](https://mui.com/x/migration/migration-data-grid-v6/)
|
|
16
|
+
- [Date and Time Pickers](https://mui.com/x/migration/migration-pickers-v6/)
|
|
17
|
+
- [Tree View](https://mui.com/x/migration/migration-tree-view-v6/)
|
|
18
|
+
- [Charts](https://mui.com/x/migration/migration-charts-v6/)
|
|
19
|
+
|
|
20
|
+
We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨:
|
|
21
|
+
|
|
22
|
+
- 🚀 Improve the usage of custom `viewRenderers` on `DateTimePicker` (#12441) @LukasTy
|
|
23
|
+
- ✨ Set focus on the focused Tree Item instead of the Tree View (#12226) @flaviendelangle
|
|
24
|
+
- 🕹️ Support controlled `density` for the Data Grid (#12332) @MBilalShafi
|
|
25
|
+
- 🎁 Dynamic virtualization range for the Data Grid (#12353) @romgrk
|
|
26
|
+
- 🐞 Bugfixes
|
|
27
|
+
- 📚 Documentation improvements
|
|
28
|
+
|
|
29
|
+
### Data Grid
|
|
30
|
+
|
|
31
|
+
#### Breaking changes
|
|
32
|
+
|
|
33
|
+
- The `density` is a [controlled prop](https://mui.com/x/react-data-grid/accessibility/#set-the-density-programmatically) now, if you were previously passing the `density` prop to the Data Grid, you will need to do one of the following:
|
|
34
|
+
|
|
35
|
+
1. Move it to the `initialState.density` to initialize it.
|
|
36
|
+
|
|
37
|
+
```diff
|
|
38
|
+
<DataGrid
|
|
39
|
+
- density="compact"
|
|
40
|
+
+ initialState={{ density: "compact" }}
|
|
41
|
+
/>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
2. Move it to the state and use `onDensityChange` callback to update the `density` prop accordingly for it to work as expected.
|
|
45
|
+
|
|
46
|
+
```diff
|
|
47
|
+
+ const [density, setDensity] = React.useState<GridDensity>('compact');
|
|
48
|
+
<DataGrid
|
|
49
|
+
- density="compact"
|
|
50
|
+
+ density={density}
|
|
51
|
+
+ onDensityChange={(newDensity) => setDensity(newDensity)}
|
|
52
|
+
/>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
- The selector `gridDensityValueSelector` was removed, use the `gridDensitySelector` instead.
|
|
56
|
+
|
|
57
|
+
- The props `rowBuffer` and `columnBuffer` were renamed to `rowBufferPx` and `columnBufferPx`.
|
|
58
|
+
Their value is now a pixel value rather than a number of items. Their default value is now `150`.
|
|
59
|
+
|
|
60
|
+
- The props `rowThreshold` and `columnThreshold` have been removed.
|
|
61
|
+
If you had the `rowThreshold` prop set to `0` to force new rows to be rendered more often – this is no longer necessary.
|
|
62
|
+
|
|
63
|
+
#### `@mui/x-data-grid@7.0.0`
|
|
64
|
+
|
|
65
|
+
- [DataGrid] Allow to control the grid density (#12332) @MBilalShafi
|
|
66
|
+
- [DataGrid] Dynamic virtualization range (#12353) @romgrk
|
|
67
|
+
- [DataGrid] Fix `ElementType` usage (#12479) @cherniavskii
|
|
68
|
+
- [DataGrid] Fix cell value formatting on copy (#12357) @sai6855
|
|
69
|
+
- [DataGrid] Fix checkbox selection is keeping selection when filtering (#11751) @g1mishra
|
|
70
|
+
- [DataGrid] Make `rows` an optional prop (#12478) @MBilalShafi
|
|
71
|
+
|
|
72
|
+
#### `@mui/x-data-grid-pro@7.0.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
73
|
+
|
|
74
|
+
Same changes as in `@mui/x-data-grid@7.0.0`.
|
|
75
|
+
|
|
76
|
+
#### `@mui/x-data-grid-premium@7.0.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
77
|
+
|
|
78
|
+
Same changes as in `@mui/x-data-grid-pro@7.0.0`, plus:
|
|
79
|
+
|
|
80
|
+
- [DataGridPremium] Add support for confirmation before clipboard paste (#12225) @cherniavskii
|
|
81
|
+
- [DataGridPremium] Fix single grouping column sorting (#9679) @cherniavskii
|
|
82
|
+
- [DataGridPremium] Fix boolean cell not rendered in group rows (#12492) @sai6855
|
|
83
|
+
|
|
84
|
+
### Date and Time Pickers
|
|
85
|
+
|
|
86
|
+
#### Breaking changes
|
|
87
|
+
|
|
88
|
+
- The `DesktopDateTimePicker` view rendering has been optimized by using the same technique as for `DesktopDateTimeRangePicker`.
|
|
89
|
+
- The `dateTimeViewRenderers` have been removed in favor of reusing existing time view renderers (`renderTimeViewClock`, `renderDigitalClockTimeView` and `renderMultiSectionDigitalClockTimeView`) and date view renderer (`renderDateViewCalendar`).
|
|
90
|
+
- Passing `renderTimeViewClock` to time view renderers will no longer revert to the old behavior of rendering only date or time view.
|
|
91
|
+
|
|
92
|
+
#### `@mui/x-date-pickers@7.0.0`
|
|
93
|
+
|
|
94
|
+
- [fields] Allow to override the separator between the start and the end date in all range fields (#12174) @flaviendelangle
|
|
95
|
+
- [fields] Support format without separator (#12489) @flaviendelangle
|
|
96
|
+
- [pickers] Use renderer interceptor on `DesktopDateTimePicker` (#12441) @LukasTy
|
|
97
|
+
|
|
98
|
+
#### `@mui/x-date-pickers-pro@7.0.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
99
|
+
|
|
100
|
+
Same changes as in `@mui/x-date-pickers@7.0.0`, plus:
|
|
101
|
+
|
|
102
|
+
- [DateTimeRangePicker] Add component `JSDoc` (#12518) @LukasTy
|
|
103
|
+
- [DateTimeRangePicker] Fix views behavior regression (#12529) @LukasTy
|
|
104
|
+
|
|
105
|
+
### Charts
|
|
106
|
+
|
|
107
|
+
#### `@mui/x-charts@7.0.0`
|
|
108
|
+
|
|
109
|
+
- [charts] Fix small typo in `CartesianContextProvider` (#12461) @Janpot
|
|
110
|
+
|
|
111
|
+
### Tree View
|
|
112
|
+
|
|
113
|
+
#### Breaking changes
|
|
114
|
+
|
|
115
|
+
- The required `nodeId` prop used by the `TreeItem` has been renamed to `itemId` for consistency:
|
|
116
|
+
|
|
117
|
+
```diff
|
|
118
|
+
<TreeView>
|
|
119
|
+
- <TreeItem label="Item 1" nodeId="one">
|
|
120
|
+
+ <TreeItem label="Item 1" itemId="one">
|
|
121
|
+
</TreeView>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
- The focus is now applied to the Tree Item root element instead of the Tree View root element.
|
|
125
|
+
|
|
126
|
+
This change will allow new features that require the focus to be on the Tree Item,
|
|
127
|
+
like the drag and drop reordering of items.
|
|
128
|
+
It also solves several issues with focus management,
|
|
129
|
+
like the inability to scroll to the focused item when a lot of items are rendered.
|
|
130
|
+
|
|
131
|
+
This will mostly impact how you write tests to interact with the Tree View:
|
|
132
|
+
|
|
133
|
+
For example, if you were writing a test with `react-testing-library`, here is what the changes could look like:
|
|
134
|
+
|
|
135
|
+
```diff
|
|
136
|
+
it('test example on first item', () => {
|
|
137
|
+
- const { getByRole } = render(
|
|
138
|
+
+ const { getAllByRole } = render(
|
|
139
|
+
<SimpleTreeView>
|
|
140
|
+
<TreeItem nodeId="one" />
|
|
141
|
+
<TreeItem nodeId="two" />
|
|
142
|
+
</SimpleTreeView>
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
- const tree = getByRole('tree');
|
|
146
|
+
+ const firstTreeItem = getAllByRole('treeitem')[0];
|
|
147
|
+
act(() => {
|
|
148
|
+
- tree.focus();
|
|
149
|
+
+ firstTreeItem.focus();
|
|
150
|
+
});
|
|
151
|
+
- fireEvent.keyDown(tree, { key: 'ArrowDown' });
|
|
152
|
+
+ fireEvent.keyDown(firstTreeItem, { key: 'ArrowDown' });
|
|
153
|
+
})
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
#### `@mui/x-tree-view@7.0.0`
|
|
157
|
+
|
|
158
|
+
- [TreeView] Rename `nodeId` to `itemId` (#12418) @noraleonte
|
|
159
|
+
- [TreeView] Set focus on the focused Tree Item instead of the Tree View (#12226) @flaviendelangle
|
|
160
|
+
- [TreeView] Update JSDoc of the `ContentComponent` prop to avoid using the word "node" (#12476) @flaviendelangle
|
|
161
|
+
|
|
162
|
+
### `@mui/x-codemod@7.0.0`
|
|
163
|
+
|
|
164
|
+
- [codemod] Add a codemod and update the grid migration guide (#12488) @MBilalShafi
|
|
165
|
+
|
|
166
|
+
### Docs
|
|
167
|
+
|
|
168
|
+
- [docs] Finalize migration guide (#12501) @noraleonte
|
|
169
|
+
- [docs] Fix nested cells alignment in the popular features demo (#12450) @cherniavskii
|
|
170
|
+
- [docs] Fix some Vale errors (#12469) @oliviertassinari
|
|
171
|
+
- [docs] Remove mentions of pre release (#12513) @noraleonte
|
|
172
|
+
- [docs] Update branch name and tags (#12498) @cherniavskii
|
|
173
|
+
- [docs] Update links to v6 (#12496) @cherniavskii
|
|
174
|
+
- [docs] Update links to v7 docs (#12500) @noraleonte
|
|
175
|
+
- [docs] Update supported versions (#12508) @joserodolfofreitas
|
|
176
|
+
- [docs] Update "What's new in MUI X" page #12527 @cherniavskii
|
|
177
|
+
|
|
178
|
+
### Core
|
|
179
|
+
|
|
180
|
+
- [core] Bump `@mui/material` peer dependency for all packages (#12516) @LukasTy
|
|
181
|
+
- [core] Fix `no-restricted-imports` ESLint rule not working for Data Grid packages (#12477) @cherniavskii
|
|
182
|
+
- [core] Lower the frequency of `no-response` action runs (#12491) @michaldudak
|
|
183
|
+
- [core] Remove leftover `legacy` `browserlistrc` entry (#12415) @LukasTy
|
|
184
|
+
- [core] Update NPM tag (#12511) @cherniavskii
|
|
185
|
+
- [core] Update supported browsers (browserlistrc) (#12521) @LukasTy
|
|
186
|
+
- [core] Use Circle CI context @oliviertassinari
|
|
187
|
+
- [license] Fix grammar on expired license error message (#12460) @joserodolfofreitas
|
|
188
|
+
|
|
6
189
|
## 7.0.0-beta.7
|
|
7
190
|
|
|
8
191
|
_Mar 14, 2024_
|
|
@@ -90,7 +273,7 @@ The `onNodeFocus` callback has been renamed to `onItemFocus` for consistency:
|
|
|
90
273
|
- [docs] Add `legacy` bundle drop mention in migration pages (#12424) @LukasTy
|
|
91
274
|
- [docs] Add missing luxon `Info` import (#12427) @LukasTy
|
|
92
275
|
- [docs] Improve slots definitions for charts (#12408) @alexfauquette
|
|
93
|
-
- [docs] Polish What's new in MUI
|
|
276
|
+
- [docs] Polish What's new in MUI X blog titles (#12309) @oliviertassinari
|
|
94
277
|
- [docs] Replace `rel="noreferrer"` by `rel="noopener"` @oliviertassinari
|
|
95
278
|
- [docs] Update `date-fns` `weekStarsOn` overriding example (#12416) @LukasTy
|
|
96
279
|
|
|
@@ -252,7 +435,7 @@ Same changes as in `@mui/x-date-pickers@7.0.0-beta.5`.
|
|
|
252
435
|
### Docs
|
|
253
436
|
|
|
254
437
|
- [docs] Fix image layout shift when loading @oliviertassinari
|
|
255
|
-
- [docs] Match Material
|
|
438
|
+
- [docs] Match Material UI repo comment for redirections @oliviertassinari
|
|
256
439
|
- [docs] Non breaking spaces @oliviertassinari
|
|
257
440
|
- [docs] Polish the Date Picker playground (#11869) @zanivan
|
|
258
441
|
- [docs] Standardize WAI-ARIA references @oliviertassinari
|
|
@@ -263,9 +446,9 @@ Same changes as in `@mui/x-date-pickers@7.0.0-beta.5`.
|
|
|
263
446
|
- [core] Remove grid folder from `getComponentInfo` RegExp (#12241) @flaviendelangle
|
|
264
447
|
- [core] Remove `window.` reference for common globals @oliviertassinari
|
|
265
448
|
- [core] Use runtime agnostic setTimeout type @oliviertassinari
|
|
266
|
-
- [docs-infra] Fix Stack
|
|
449
|
+
- [docs-infra] Fix Stack Overflow breaking space @oliviertassinari
|
|
267
450
|
- [docs-infra] Fix missing non breaking spaces @oliviertassinari
|
|
268
|
-
- [
|
|
451
|
+
- [infra] Update `no-response` workflow (#12193) @MBilalShafi
|
|
269
452
|
- [infra] Fix missing permission reset @oliviertassinari
|
|
270
453
|
|
|
271
454
|
## 7.0.0-beta.4
|
|
@@ -282,7 +465,7 @@ We'd like to offer a big thanks to the 10 contributors who made this release pos
|
|
|
282
465
|
|
|
283
466
|
### Breaking changes
|
|
284
467
|
|
|
285
|
-
- The support for IE11 has been removed from all MUI
|
|
468
|
+
- The support for IE11 has been removed from all MUI X packages. The `legacy` bundle that used to support old browsers like IE11 is no longer included.
|
|
286
469
|
|
|
287
470
|
### Data Grid
|
|
288
471
|
|
|
@@ -324,7 +507,7 @@ Same changes as in `@mui/x-data-grid-pro@7.0.0-beta.4`.
|
|
|
324
507
|
- The headless field hooks (e.g.: `useDateField`) now returns a new prop called `enableAccessibleFieldDOMStructure`.
|
|
325
508
|
This property is utilized to determine whether the anticipated UI is constructed using an accessible DOM structure. Learn more about this new [accessible DOM structure](/x/react-date-pickers/fields/#accessible-dom-structure).
|
|
326
509
|
|
|
327
|
-
|
|
510
|
+
When building a custom UI, you are most-likely only supporting one DOM structure, so you can remove `enableAccessibleFieldDOMStructure` before it is passed to the DOM:
|
|
328
511
|
|
|
329
512
|
```diff
|
|
330
513
|
function MyCustomTextField(props) {
|
|
@@ -392,7 +575,7 @@ These components are no longer exported from `@mui/x-charts`:
|
|
|
392
575
|
### Docs
|
|
393
576
|
|
|
394
577
|
- [docs] Add recipe for hiding separator on non-resizable columns (#12134) @michelengelen
|
|
395
|
-
- [docs] Add small improvements to the Gauge
|
|
578
|
+
- [docs] Add small improvements to the Gauge page (#12076) @danilo-leal
|
|
396
579
|
- [docs] Add the 'point' scaleType to the axis documentation (#12179) @alexfauquette
|
|
397
580
|
- [docs] Clarify Pickers 'Component composition' section (#12097) @LukasTy
|
|
398
581
|
- [docs] Fix "Licensing" page link (#12156) @LukasTy
|
|
@@ -975,7 +1158,7 @@ Same changes as in `@mui/x-date-pickers@7.0.0-alpha.9`.
|
|
|
975
1158
|
|
|
976
1159
|
- [charts] Do not propagate `innerRadius` and `outerRadius` to the DOM (#11689) @alexfauquette
|
|
977
1160
|
- [charts] Fix default `stackOffset` for `LineChart` (#11647) @alexfauquette
|
|
978
|
-
- [charts] Remove a
|
|
1161
|
+
- [charts] Remove a TypeScript ignore (#11688) @alexfauquette
|
|
979
1162
|
|
|
980
1163
|
### Tree View
|
|
981
1164
|
|
|
@@ -1404,7 +1587,7 @@ Same changes as in `@mui/x-date-pickers@7.0.0-alpha.7`.
|
|
|
1404
1587
|
- [core] Fix release changelog (#11496) @romgrk
|
|
1405
1588
|
- [core] Fix use of ::before & ::after (#11515) @oliviertassinari
|
|
1406
1589
|
- [core] Localize the issue template to MUI X (#11511) @oliviertassinari
|
|
1407
|
-
- [core]
|
|
1590
|
+
- [core] Regenerate API files (#11542) @flaviendelangle
|
|
1408
1591
|
- [core] Remove issue emoji @oliviertassinari
|
|
1409
1592
|
- [core] Sync the release instructions with MUI Core @oliviertassinari
|
|
1410
1593
|
- [core] Yaml format match most common convention @oliviertassinari
|
|
@@ -1447,7 +1630,7 @@ We'd like to offer a big thanks to the 6 contributors who made this release poss
|
|
|
1447
1630
|
|
|
1448
1631
|
- The `filterModel` now supports `Date` objects as values for `date` and `dateTime` column types.
|
|
1449
1632
|
The `filterModel` still accepts strings as values for `date` and `dateTime` column types,
|
|
1450
|
-
but all updates to the `filterModel` coming from the UI (
|
|
1633
|
+
but all updates to the `filterModel` coming from the UI (for example filter panel) will set the value as a `Date` object.
|
|
1451
1634
|
|
|
1452
1635
|
#### `@mui/x-data-grid@7.0.0-alpha.6`
|
|
1453
1636
|
|
|
@@ -1658,7 +1841,7 @@ Same changes as in `@mui/x-date-pickers@7.0.0-alpha.5`, plus:
|
|
|
1658
1841
|
### Core
|
|
1659
1842
|
|
|
1660
1843
|
- [core] Automate cherry-pick of PRs from `next` -> `master` (#11382) @MBilalShafi
|
|
1661
|
-
- [
|
|
1844
|
+
- [infra] Update `no-response` workflow (#11369) @MBilalShafi
|
|
1662
1845
|
- [test] Fix flaky screenshots (#11388) @cherniavskii
|
|
1663
1846
|
|
|
1664
1847
|
## 7.0.0-alpha.4
|
|
@@ -1896,7 +2079,7 @@ Same changes as in `@mui/x-date-pickers@7.0.0-alpha.3`.
|
|
|
1896
2079
|
|
|
1897
2080
|
- [charts] Adjusted `defaultizeValueFormatter` util to accept an optional `series.valueFormatter` value (#11144) @michelengelen
|
|
1898
2081
|
- [charts] Apply `labelStyle` and `tickLabelStyle` props on `<ChartsYAxis />` (#11180) @akamfoad
|
|
1899
|
-
- [charts] Fix
|
|
2082
|
+
- [charts] Fix TypeScript config (#11259) @alexfauquette
|
|
1900
2083
|
- [charts] Fix error with empty dataset (#11063) @alexfauquette
|
|
1901
2084
|
- [charts] Fix export strategy (#11235) @alexfauquette
|
|
1902
2085
|
- [charts] Remove outdated prop-types (#11045) @alexfauquette
|
|
@@ -35,7 +35,6 @@ const useUtilityClasses = ownerState => {
|
|
|
35
35
|
return composeClasses(slots, getDateCalendarUtilityClass, classes);
|
|
36
36
|
};
|
|
37
37
|
function useDateCalendarDefaultizedProps(props, name) {
|
|
38
|
-
var _themeProps$loading, _themeProps$disablePa, _themeProps$disableFu, _themeProps$openTo, _themeProps$views, _themeProps$reduceAni, _themeProps$renderLoa;
|
|
39
38
|
const utils = useUtils();
|
|
40
39
|
const defaultDates = useDefaultDates();
|
|
41
40
|
const defaultReduceAnimations = useDefaultReduceAnimations();
|
|
@@ -44,15 +43,15 @@ function useDateCalendarDefaultizedProps(props, name) {
|
|
|
44
43
|
name
|
|
45
44
|
});
|
|
46
45
|
return _extends({}, themeProps, {
|
|
47
|
-
loading:
|
|
48
|
-
disablePast:
|
|
49
|
-
disableFuture:
|
|
50
|
-
openTo:
|
|
51
|
-
views:
|
|
52
|
-
reduceAnimations:
|
|
53
|
-
renderLoading:
|
|
46
|
+
loading: themeProps.loading ?? false,
|
|
47
|
+
disablePast: themeProps.disablePast ?? false,
|
|
48
|
+
disableFuture: themeProps.disableFuture ?? false,
|
|
49
|
+
openTo: themeProps.openTo ?? 'day',
|
|
50
|
+
views: themeProps.views ?? ['year', 'day'],
|
|
51
|
+
reduceAnimations: themeProps.reduceAnimations ?? defaultReduceAnimations,
|
|
52
|
+
renderLoading: themeProps.renderLoading ?? (() => /*#__PURE__*/_jsx("span", {
|
|
54
53
|
children: "..."
|
|
55
|
-
}),
|
|
54
|
+
})),
|
|
56
55
|
minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),
|
|
57
56
|
maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate)
|
|
58
57
|
});
|
|
@@ -83,7 +82,6 @@ const DateCalendarViewTransitionContainer = styled(PickersFadeTransitionGroup, {
|
|
|
83
82
|
* - [DateCalendar API](https://mui.com/x/api/date-pickers/date-calendar/)
|
|
84
83
|
*/
|
|
85
84
|
export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps, ref) {
|
|
86
|
-
var _slots$calendarHeader;
|
|
87
85
|
const utils = useUtils();
|
|
88
86
|
const id = useId();
|
|
89
87
|
const props = useDateCalendarDefaultizedProps(inProps, 'MuiDateCalendar');
|
|
@@ -181,10 +179,10 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
|
|
|
181
179
|
const maxDateWithDisabled = disabled && value || maxDate;
|
|
182
180
|
const gridLabelId = `${id}-grid-label`;
|
|
183
181
|
const hasFocus = focusedView !== null;
|
|
184
|
-
const CalendarHeader =
|
|
182
|
+
const CalendarHeader = slots?.calendarHeader ?? PickersCalendarHeader;
|
|
185
183
|
const calendarHeaderProps = useSlotProps({
|
|
186
184
|
elementType: CalendarHeader,
|
|
187
|
-
externalSlotProps: slotProps
|
|
185
|
+
externalSlotProps: slotProps?.calendarHeader,
|
|
188
186
|
additionalProps: {
|
|
189
187
|
views,
|
|
190
188
|
view,
|
|
@@ -222,7 +220,7 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
|
|
|
222
220
|
}) : newDate;
|
|
223
221
|
if (closestEnabledDate) {
|
|
224
222
|
setValueAndGoToNextView(closestEnabledDate, 'finish');
|
|
225
|
-
onMonthChange
|
|
223
|
+
onMonthChange?.(startOfMonth);
|
|
226
224
|
} else {
|
|
227
225
|
goToNextView();
|
|
228
226
|
changeMonth(startOfMonth);
|
|
@@ -244,7 +242,7 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
|
|
|
244
242
|
}) : newDate;
|
|
245
243
|
if (closestEnabledDate) {
|
|
246
244
|
setValueAndGoToNextView(closestEnabledDate, 'finish');
|
|
247
|
-
onYearChange
|
|
245
|
+
onYearChange?.(closestEnabledDate);
|
|
248
246
|
} else {
|
|
249
247
|
goToNextView();
|
|
250
248
|
changeMonth(startOfYear);
|
|
@@ -254,7 +252,7 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
|
|
|
254
252
|
const handleSelectedDayChange = useEventCallback(day => {
|
|
255
253
|
if (day) {
|
|
256
254
|
// If there is a date already selected, then we want to keep its time
|
|
257
|
-
return handleValueChange(mergeDateAndTime(utils, day, value
|
|
255
|
+
return handleValueChange(mergeDateAndTime(utils, day, value ?? referenceDate), 'finish', view);
|
|
258
256
|
}
|
|
259
257
|
return handleValueChange(day, 'finish', view);
|
|
260
258
|
});
|
|
@@ -489,7 +487,7 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
|
|
|
489
487
|
/**
|
|
490
488
|
* Disable specific date.
|
|
491
489
|
*
|
|
492
|
-
* Warning: This function can be called multiple times (
|
|
490
|
+
* Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
|
|
493
491
|
*
|
|
494
492
|
* @template TDate
|
|
495
493
|
* @param {TDate} day The date to test.
|
|
@@ -133,7 +133,6 @@ const PickersCalendarWeek = styled('div', {
|
|
|
133
133
|
justifyContent: 'center'
|
|
134
134
|
});
|
|
135
135
|
function WrappedDay(_ref) {
|
|
136
|
-
var _slots$day;
|
|
137
136
|
let {
|
|
138
137
|
parentProps,
|
|
139
138
|
day,
|
|
@@ -158,11 +157,11 @@ function WrappedDay(_ref) {
|
|
|
158
157
|
const isFocusableDay = focusableDay !== null && utils.isSameDay(day, focusableDay);
|
|
159
158
|
const isSelected = selectedDays.some(selectedDay => utils.isSameDay(selectedDay, day));
|
|
160
159
|
const isToday = utils.isSameDay(day, now);
|
|
161
|
-
const Day =
|
|
160
|
+
const Day = slots?.day ?? PickersDay;
|
|
162
161
|
// We don't want to pass to ownerState down, to avoid re-rendering all the day whenever a prop changes.
|
|
163
162
|
const _useSlotProps = useSlotProps({
|
|
164
163
|
elementType: Day,
|
|
165
|
-
externalSlotProps: slotProps
|
|
164
|
+
externalSlotProps: slotProps?.day,
|
|
166
165
|
additionalProps: _extends({
|
|
167
166
|
disableHighlightToday,
|
|
168
167
|
showDaysOutsideCurrentMonth,
|
|
@@ -268,7 +267,7 @@ export function DayCalendar(inProps) {
|
|
|
268
267
|
name: 'DayCalendar',
|
|
269
268
|
state: 'hasFocus',
|
|
270
269
|
controlled: hasFocus,
|
|
271
|
-
default: autoFocus
|
|
270
|
+
default: autoFocus ?? false
|
|
272
271
|
});
|
|
273
272
|
const [internalFocusedDay, setInternalFocusedDay] = React.useState(() => focusedDay || now);
|
|
274
273
|
const handleDaySelect = useEventCallback(day => {
|
|
@@ -281,7 +280,7 @@ export function DayCalendar(inProps) {
|
|
|
281
280
|
if (!isDateDisabled(day)) {
|
|
282
281
|
onFocusedDayChange(day);
|
|
283
282
|
setInternalFocusedDay(day);
|
|
284
|
-
onFocusedViewChange
|
|
283
|
+
onFocusedViewChange?.(true);
|
|
285
284
|
setInternalHasFocus(true);
|
|
286
285
|
}
|
|
287
286
|
};
|
|
@@ -350,7 +349,7 @@ export function DayCalendar(inProps) {
|
|
|
350
349
|
const handleFocus = useEventCallback((event, day) => focusDay(day));
|
|
351
350
|
const handleBlur = useEventCallback((event, day) => {
|
|
352
351
|
if (internalHasFocus && utils.isSameDay(internalFocusedDay, day)) {
|
|
353
|
-
onFocusedViewChange
|
|
352
|
+
onFocusedViewChange?.(false);
|
|
354
353
|
}
|
|
355
354
|
});
|
|
356
355
|
const currentMonthNumber = utils.getMonth(currentMonth);
|
package/DateField/DateField.js
CHANGED
|
@@ -23,7 +23,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
23
23
|
* - [DateField API](https://mui.com/x/api/date-pickers/date-field/)
|
|
24
24
|
*/
|
|
25
25
|
const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, inRef) {
|
|
26
|
-
var _slots$textField;
|
|
27
26
|
const themeProps = useThemeProps({
|
|
28
27
|
props: inProps,
|
|
29
28
|
name: 'MuiDateField'
|
|
@@ -36,10 +35,10 @@ const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, inRe
|
|
|
36
35
|
} = themeProps,
|
|
37
36
|
other = _objectWithoutPropertiesLoose(themeProps, _excluded);
|
|
38
37
|
const ownerState = themeProps;
|
|
39
|
-
const TextField =
|
|
38
|
+
const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
|
|
40
39
|
const textFieldProps = useSlotProps({
|
|
41
40
|
elementType: TextField,
|
|
42
|
-
externalSlotProps: slotProps
|
|
41
|
+
externalSlotProps: slotProps?.textField,
|
|
43
42
|
externalForwardedProps: other,
|
|
44
43
|
additionalProps: {
|
|
45
44
|
ref: inRef
|
|
@@ -242,7 +241,7 @@ process.env.NODE_ENV !== "production" ? DateField.propTypes = {
|
|
|
242
241
|
/**
|
|
243
242
|
* Disable specific date.
|
|
244
243
|
*
|
|
245
|
-
* Warning: This function can be called multiple times (
|
|
244
|
+
* Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
|
|
246
245
|
*
|
|
247
246
|
* @template TDate
|
|
248
247
|
* @param {TDate} day The date to test.
|
package/DatePicker/DatePicker.js
CHANGED
|
@@ -266,7 +266,7 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
|
|
|
266
266
|
/**
|
|
267
267
|
* Disable specific date.
|
|
268
268
|
*
|
|
269
|
-
* Warning: This function can be called multiple times (
|
|
269
|
+
* Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
|
|
270
270
|
*
|
|
271
271
|
* @template TDate
|
|
272
272
|
* @param {TDate} day The date to test.
|
package/DatePicker/shared.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export interface BaseDatePickerSlots<TDate extends PickerValidDate> extends Date
|
|
|
18
18
|
export interface BaseDatePickerSlotProps<TDate extends PickerValidDate> extends DateCalendarSlotProps<TDate> {
|
|
19
19
|
toolbar?: ExportedDatePickerToolbarProps;
|
|
20
20
|
}
|
|
21
|
+
export type DatePickerViewRenderers<TDate extends PickerValidDate, TView extends DateView, TAdditionalProps extends {} = {}> = PickerViewRendererLookup<TDate | null, TView, DateViewRendererProps<TDate, TView>, TAdditionalProps>;
|
|
21
22
|
export interface BaseDatePickerProps<TDate extends PickerValidDate> extends BasePickerInputProps<TDate | null, TDate, DateView, DateValidationError>, ExportedDateCalendarProps<TDate> {
|
|
22
23
|
/**
|
|
23
24
|
* Overridable component slots.
|
|
@@ -34,7 +35,7 @@ export interface BaseDatePickerProps<TDate extends PickerValidDate> extends Base
|
|
|
34
35
|
* If `null`, the section will only have field editing.
|
|
35
36
|
* If `undefined`, internally defined view will be the used.
|
|
36
37
|
*/
|
|
37
|
-
viewRenderers?: Partial<
|
|
38
|
+
viewRenderers?: Partial<DatePickerViewRenderers<TDate, DateView>>;
|
|
38
39
|
}
|
|
39
40
|
type UseDatePickerDefaultizedProps<TDate extends PickerValidDate, Props extends BaseDatePickerProps<TDate>> = LocalizedComponent<TDate, DefaultizedProps<Props, 'views' | 'openTo' | keyof BaseDateValidationProps<TDate>>>;
|
|
40
41
|
export declare function useDatePickerDefaultizedProps<TDate extends PickerValidDate, Props extends BaseDatePickerProps<TDate>>(props: Props, name: string): UseDatePickerDefaultizedProps<TDate, Props>;
|