@mui/x-date-pickers 8.0.0-alpha.6 → 8.0.0-alpha.7
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.d.ts +2 -4
- package/AdapterDateFns/AdapterDateFns.js +49 -47
- package/AdapterDateFnsBase/AdapterDateFnsBase.d.ts +1 -1
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +2 -4
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
- package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.d.ts → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.d.ts} +2 -2
- package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
- package/AdapterDateFnsJalaliV2/index.d.ts +1 -0
- package/AdapterDateFnsJalaliV2/index.js +1 -0
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
- package/{AdapterDateFnsV3/AdapterDateFnsV3.d.ts → AdapterDateFnsV2/AdapterDateFnsV2.d.ts} +2 -2
- package/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
- package/AdapterDateFnsV2/index.d.ts +1 -0
- package/AdapterDateFnsV2/index.js +1 -0
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
- package/AdapterDayjs/AdapterDayjs.d.ts +1 -1
- package/AdapterLuxon/AdapterLuxon.d.ts +1 -1
- package/AdapterMoment/AdapterMoment.d.ts +1 -1
- package/CHANGELOG.md +127 -1
- package/DateCalendar/DateCalendar.js +1 -1
- package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
- package/DateCalendar/PickersSlideTransition.d.ts +1 -1
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +13 -11
- package/DatePicker/DatePicker.js +1 -1
- package/DatePicker/DatePicker.types.d.ts +5 -0
- package/DatePicker/DatePickerToolbar.d.ts +1 -2
- package/DatePicker/DatePickerToolbar.js +7 -11
- package/DatePicker/shared.d.ts +1 -1
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +13 -11
- package/DateTimePicker/DateTimePicker.js +2 -2
- package/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/DateTimePicker/DateTimePickerToolbar.d.ts +6 -2
- package/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/DateTimePicker/shared.d.ts +1 -1
- package/DesktopDatePicker/DesktopDatePicker.js +9 -3
- package/DesktopDatePicker/DesktopDatePicker.types.d.ts +5 -0
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -10
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/DesktopTimePicker/DesktopTimePicker.js +3 -7
- package/MobileDatePicker/MobileDatePicker.js +2 -2
- package/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
- package/MobileTimePicker/MobileTimePicker.js +2 -2
- package/PickersActionBar/PickersActionBar.d.ts +6 -3
- package/PickersActionBar/PickersActionBar.js +6 -3
- package/PickersLayout/PickersLayout.js +1 -5
- package/PickersLayout/PickersLayout.types.d.ts +2 -3
- package/PickersLayout/usePickerLayout.js +12 -31
- package/PickersShortcuts/PickersShortcuts.d.ts +2 -5
- package/PickersShortcuts/PickersShortcuts.js +13 -10
- package/PickersShortcuts/index.d.ts +1 -1
- package/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/PickersTextField/PickersTextField.js +1 -1
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimeField/useTimeField.js +13 -11
- package/TimePicker/TimePicker.js +2 -2
- package/TimePicker/TimePickerToolbar.d.ts +1 -2
- package/TimePicker/TimePickerToolbar.js +20 -18
- package/TimePicker/shared.d.ts +1 -1
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +2 -1
- package/hooks/useIsValidValue.d.ts +7 -0
- package/hooks/useIsValidValue.js +11 -0
- package/hooks/usePickerActionsContext.d.ts +3 -1
- package/hooks/usePickerActionsContext.js +0 -1
- package/hooks/usePickerContext.d.ts +2 -2
- package/hooks/usePickerContext.js +1 -1
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/internals/components/PickerProvider.d.ts +11 -10
- package/internals/components/PickerProvider.js +8 -3
- package/internals/components/PickersToolbar.d.ts +2 -3
- package/internals/components/PickersToolbar.js +1 -1
- package/internals/hooks/date-helpers-hooks.js +4 -3
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
- package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/internals/hooks/useField/index.d.ts +1 -1
- package/internals/hooks/useField/index.js +1 -1
- package/internals/hooks/useField/useField.d.ts +10 -1
- package/internals/hooks/useField/useField.js +17 -1
- package/internals/hooks/useField/useField.utils.js +2 -2
- package/internals/hooks/useField/useFieldState.js +2 -2
- package/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +2 -2
- package/internals/hooks/useOpenState.js +3 -2
- package/internals/hooks/usePicker/usePicker.d.ts +1 -1
- package/internals/hooks/usePicker/usePicker.js +0 -6
- package/internals/hooks/usePicker/usePicker.types.d.ts +5 -6
- package/internals/hooks/usePicker/usePickerProvider.d.ts +5 -5
- package/internals/hooks/usePicker/usePickerProvider.js +4 -2
- package/internals/hooks/usePicker/usePickerValue.d.ts +1 -1
- package/internals/hooks/usePicker/usePickerValue.js +67 -184
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +48 -54
- package/internals/hooks/usePicker/usePickerViews.d.ts +27 -23
- package/internals/hooks/usePicker/usePickerViews.js +17 -11
- package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +2 -2
- package/internals/hooks/useUtils.js +1 -1
- package/internals/index.d.ts +5 -3
- package/internals/index.js +5 -3
- package/internals/models/index.d.ts +1 -0
- package/internals/models/index.js +2 -1
- package/internals/models/manager.d.ts +12 -0
- package/internals/models/manager.js +1 -0
- package/internals/models/props/basePickerProps.d.ts +2 -2
- package/internals/models/props/toolbar.d.ts +1 -5
- package/internals/utils/date-utils.js +1 -1
- package/internals/utils/valueManagers.js +4 -4
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/nbNO.js +15 -19
- package/locales/utils/getPickersLocalization.js +1 -1
- package/locales/zhTW.d.ts +80 -0
- package/locales/zhTW.js +73 -0
- package/managers/index.d.ts +6 -0
- package/managers/index.js +3 -0
- package/managers/package.json +6 -0
- package/managers/useDateManager.d.ts +27 -0
- package/managers/useDateManager.js +47 -0
- package/managers/useDateTimeManager.d.ts +28 -0
- package/managers/useDateTimeManager.js +52 -0
- package/managers/useTimeManager.d.ts +28 -0
- package/managers/useTimeManager.js +43 -0
- package/models/adapters.d.ts +1 -1
- package/models/index.d.ts +1 -0
- package/models/index.js +1 -0
- package/models/manager.d.ts +78 -0
- package/models/manager.js +1 -0
- package/models/pickers.d.ts +7 -0
- package/modern/AdapterDateFns/AdapterDateFns.js +49 -47
- package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
- package/modern/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
- package/modern/AdapterDateFnsJalaliV2/index.js +1 -0
- package/modern/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
- package/modern/AdapterDateFnsV2/index.js +1 -0
- package/modern/DateCalendar/DateCalendar.js +1 -1
- package/modern/DateField/useDateField.js +13 -11
- package/modern/DatePicker/DatePicker.js +1 -1
- package/modern/DatePicker/DatePickerToolbar.js +7 -11
- package/modern/DateTimeField/useDateTimeField.js +13 -11
- package/modern/DateTimePicker/DateTimePicker.js +2 -2
- package/modern/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/modern/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/modern/DesktopDatePicker/DesktopDatePicker.js +9 -3
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -10
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/modern/DesktopTimePicker/DesktopTimePicker.js +3 -7
- package/modern/MobileDatePicker/MobileDatePicker.js +2 -2
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
- package/modern/MobileTimePicker/MobileTimePicker.js +2 -2
- package/modern/PickersActionBar/PickersActionBar.js +6 -3
- package/modern/PickersLayout/PickersLayout.js +1 -5
- package/modern/PickersLayout/usePickerLayout.js +12 -31
- package/modern/PickersShortcuts/PickersShortcuts.js +13 -10
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/modern/PickersTextField/PickersTextField.js +1 -1
- package/modern/TimeField/useTimeField.js +13 -11
- package/modern/TimePicker/TimePicker.js +2 -2
- package/modern/TimePicker/TimePickerToolbar.js +20 -18
- package/modern/hooks/index.js +2 -1
- package/modern/hooks/useIsValidValue.js +11 -0
- package/modern/hooks/usePickerActionsContext.js +0 -1
- package/modern/hooks/usePickerContext.js +1 -1
- package/modern/index.js +3 -2
- package/modern/internals/components/PickerProvider.js +8 -3
- package/modern/internals/components/PickersToolbar.js +1 -1
- package/modern/internals/hooks/date-helpers-hooks.js +4 -3
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/modern/internals/hooks/useField/index.js +1 -1
- package/modern/internals/hooks/useField/useField.js +17 -1
- package/modern/internals/hooks/useField/useField.utils.js +2 -2
- package/modern/internals/hooks/useField/useFieldState.js +2 -2
- package/modern/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
- package/modern/internals/hooks/useOpenState.js +3 -2
- package/modern/internals/hooks/usePicker/usePicker.js +0 -6
- package/modern/internals/hooks/usePicker/usePickerProvider.js +4 -2
- package/modern/internals/hooks/usePicker/usePickerValue.js +67 -184
- package/modern/internals/hooks/usePicker/usePickerViews.js +17 -11
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/modern/internals/hooks/useUtils.js +1 -1
- package/modern/internals/index.js +5 -3
- package/modern/internals/models/index.js +2 -1
- package/modern/internals/models/manager.js +1 -0
- package/modern/internals/utils/date-utils.js +1 -1
- package/modern/internals/utils/valueManagers.js +4 -4
- package/modern/locales/index.js +1 -0
- package/modern/locales/nbNO.js +15 -19
- package/modern/locales/utils/getPickersLocalization.js +1 -1
- package/modern/locales/zhTW.js +73 -0
- package/modern/managers/index.js +3 -0
- package/modern/managers/useDateManager.js +47 -0
- package/modern/managers/useDateTimeManager.js +52 -0
- package/modern/managers/useTimeManager.js +43 -0
- package/modern/models/index.js +1 -0
- package/modern/models/manager.js +1 -0
- package/node/AdapterDateFns/AdapterDateFns.js +97 -97
- package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +97 -96
- package/node/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +94 -101
- package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/node/AdapterDateFnsV2/AdapterDateFnsV2.js +291 -0
- package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/node/DateCalendar/DateCalendar.js +1 -1
- package/node/DateField/useDateField.js +12 -10
- package/node/DatePicker/DatePicker.js +1 -1
- package/node/DatePicker/DatePickerToolbar.js +7 -11
- package/node/DateTimeField/useDateTimeField.js +12 -10
- package/node/DateTimePicker/DateTimePicker.js +2 -2
- package/node/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/node/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/node/DesktopDatePicker/DesktopDatePicker.js +9 -3
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -10
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/node/DesktopTimePicker/DesktopTimePicker.js +3 -7
- package/node/MobileDatePicker/MobileDatePicker.js +2 -2
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
- package/node/MobileTimePicker/MobileTimePicker.js +2 -2
- package/node/PickersActionBar/PickersActionBar.js +8 -5
- package/node/PickersLayout/PickersLayout.js +1 -5
- package/node/PickersLayout/usePickerLayout.js +16 -35
- package/node/PickersShortcuts/PickersShortcuts.js +13 -10
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/node/PickersTextField/PickersTextField.js +1 -1
- package/node/TimeField/useTimeField.js +12 -10
- package/node/TimePicker/TimePicker.js +2 -2
- package/node/TimePicker/TimePickerToolbar.js +20 -18
- package/node/hooks/index.js +8 -1
- package/node/hooks/useIsValidValue.js +18 -0
- package/node/hooks/usePickerContext.js +1 -1
- package/node/index.js +13 -1
- package/node/internals/components/PickerProvider.js +8 -3
- package/node/internals/components/PickersToolbar.js +1 -1
- package/node/internals/hooks/date-helpers-hooks.js +4 -3
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
- package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/node/internals/hooks/useField/index.js +6 -0
- package/node/internals/hooks/useField/useField.js +18 -1
- package/node/internals/hooks/useField/useField.utils.js +2 -2
- package/node/internals/hooks/useField/useFieldState.js +2 -2
- package/node/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
- package/node/internals/hooks/useOpenState.js +4 -2
- package/node/internals/hooks/usePicker/usePicker.js +0 -7
- package/node/internals/hooks/usePicker/usePickerProvider.js +4 -2
- package/node/internals/hooks/usePicker/usePickerValue.js +67 -184
- package/node/internals/hooks/usePicker/usePickerViews.js +17 -12
- package/node/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/node/internals/hooks/useUtils.js +1 -1
- package/node/internals/index.js +26 -18
- package/node/internals/models/index.js +11 -0
- package/node/internals/models/manager.js +5 -0
- package/node/internals/utils/date-utils.js +1 -1
- package/node/internals/utils/valueManagers.js +4 -4
- package/node/locales/index.js +11 -0
- package/node/locales/nbNO.js +15 -19
- package/node/locales/utils/getPickersLocalization.js +1 -1
- package/node/locales/zhTW.js +79 -0
- package/node/managers/index.js +26 -0
- package/node/managers/useDateManager.js +55 -0
- package/node/managers/useDateTimeManager.js +60 -0
- package/node/managers/useTimeManager.js +51 -0
- package/node/models/index.js +11 -0
- package/node/models/manager.js +5 -0
- package/package.json +3 -3
- package/themeAugmentation/props.d.ts +1 -1
- package/validation/extractValidationProps.d.ts +1 -1
- package/AdapterDateFnsJalaliV3/index.d.ts +0 -1
- package/AdapterDateFnsJalaliV3/index.js +0 -1
- package/AdapterDateFnsV3/index.d.ts +0 -1
- package/AdapterDateFnsV3/index.js +0 -1
- package/internals/hooks/defaultizedFieldProps.d.ts +0 -18
- package/internals/hooks/defaultizedFieldProps.js +0 -40
- package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
- package/modern/AdapterDateFnsV3/index.js +0 -1
- package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
- package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
- package/node/internals/hooks/defaultizedFieldProps.js +0 -50
|
@@ -57,7 +57,7 @@ export declare class AdapterMoment implements MuiPickersAdapter<string> {
|
|
|
57
57
|
getCurrentLocaleCode: () => string;
|
|
58
58
|
is12HourCycleInCurrentLocale: () => boolean;
|
|
59
59
|
expandFormat: (format: string) => string;
|
|
60
|
-
isValid: (value: Moment | null) =>
|
|
60
|
+
isValid: (value: Moment | null) => value is Moment;
|
|
61
61
|
format: (value: Moment, formatKey: keyof AdapterFormats) => string;
|
|
62
62
|
formatByString: (value: Moment, formatString: string) => string;
|
|
63
63
|
formatNumber: (numberToFormat: string) => string;
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,132 @@
|
|
|
5
5
|
All notable changes to this project will be documented in this file.
|
|
6
6
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## 8.0.0-alpha.7
|
|
9
|
+
|
|
10
|
+
_Jan 9, 2025_
|
|
11
|
+
|
|
12
|
+
We'd like to offer a big thanks to the 13 contributors who made this release possible. Here are some highlights ✨:
|
|
13
|
+
|
|
14
|
+
- 📊 Charts legend is now an HTML element which can be styled more easily
|
|
15
|
+
- 💫 Support [aggregation with server-side data](/x/react-data-grid/server-side-data/aggregation/)
|
|
16
|
+
- 🏎️ Improve Data Grid aggregation performance
|
|
17
|
+
- 🌍 Add Chinese (Taiwan) (zh-TW) locale on the Date and Time Pickers
|
|
18
|
+
- 🌍 Improve Norwegian (nb-NO) locale on the Date and Time Pickers
|
|
19
|
+
- 🐞 Bugfixes
|
|
20
|
+
|
|
21
|
+
Special thanks go out to the community contributors who have helped make this release possible:
|
|
22
|
+
@derek-0000, @josteinjhauge, @k-rajat19, @nusr, @tomashauser.
|
|
23
|
+
Following are all team members who have contributed to this release:
|
|
24
|
+
@cherniavskii, @flaviendelangle, @JCQuintas, @LukasTy, @MBilalShafi, @arminmeh, @romgrk, @oliviertassinari.
|
|
25
|
+
|
|
26
|
+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
|
|
27
|
+
|
|
28
|
+
### Data Grid
|
|
29
|
+
|
|
30
|
+
#### `@mui/x-data-grid@8.0.0-alpha.7`
|
|
31
|
+
|
|
32
|
+
- [DataGrid] Improve React 19 support (#15769) @LukasTy
|
|
33
|
+
- [DataGrid] Add `name` attribute to the checkbox selection column (#15178) @derek-0000
|
|
34
|
+
- [DataGrid] Fix number filter field formatting values while typing (#16062) @arminmeh
|
|
35
|
+
- [DataGrid] Fix select all checkbox state reset with server side data (#16034) @MBilalShafi
|
|
36
|
+
- [DataGrid] Refactor: create base button props (#15930) @romgrk
|
|
37
|
+
- [DataGrid] Refactor: create tooltip props (#16086) @romgrk
|
|
38
|
+
- [DataGrid] Fix TS error (#16046) @cherniavskii
|
|
39
|
+
|
|
40
|
+
#### `@mui/x-data-grid-pro@8.0.0-alpha.7` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
41
|
+
|
|
42
|
+
Same changes as in `@mui/x-data-grid@8.0.0-alpha.7`.
|
|
43
|
+
|
|
44
|
+
#### `@mui/x-data-grid-premium@8.0.0-alpha.7` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
45
|
+
|
|
46
|
+
Same changes as in `@mui/x-data-grid-pro@8.0.0-alpha.7`, plus:
|
|
47
|
+
|
|
48
|
+
- [DataGridPremium] Improve aggregation performance for multiple columns (#16097) @cherniavskii
|
|
49
|
+
- [DataGridPremium] Make Aggregation keyboard accessible in the column menu (#15934) @k-rajat19
|
|
50
|
+
- [DataGridPremium] Server-side aggregation with data source (#15741) @MBilalShafi
|
|
51
|
+
|
|
52
|
+
### Date and Time Pickers
|
|
53
|
+
|
|
54
|
+
#### Breaking changes
|
|
55
|
+
|
|
56
|
+
- The `date-fns` and `date-fns-jalali` date library adapters have been renamed to better align with the current stable major versions — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#✅-rename-date-fns-adapter-imports)
|
|
57
|
+
- Update default `closeOnSelect` and Action Bar `actions` values - [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#update-default-closeonselect-and-action-bar-actions-values)
|
|
58
|
+
- The component passed to the `layout` slot no longer receives the `value`, `onChange` and `onSelectShortcut` props — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#slot-layout).
|
|
59
|
+
- The component passed to the `toolbar` slot no longer receives the `value`, `onChange` and `isLandscape` props — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#slot-toolbar).
|
|
60
|
+
- The component passed to the `shortcuts` slot no longer receives the `onChange`, `isValid` and `isLandscape` props — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#slot-shortcuts).
|
|
61
|
+
- The `PickerShortcutChangeImportance` type has been renamed `PickerChangeImportance` — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#renamed-variables-and-types).
|
|
62
|
+
- The component passed to the `layout` slot no longer receives the `rangePosition` and `onRangePositionChange` on range pickers — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#slot-layout).
|
|
63
|
+
- The component passed to the `toolbar` slot no longer receives the `rangePosition` and `onRangePositionChange` on range pickers — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#slot-toolbar).
|
|
64
|
+
- The component passed to the `tabs` slot no longer receives the `rangePosition` and `onRangePositionChange` on range pickers — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#slot-tabs).
|
|
65
|
+
|
|
66
|
+
#### `@mui/x-date-pickers@8.0.0-alpha.7`
|
|
67
|
+
|
|
68
|
+
- [fields] Handle focusing container with `inputRef.current.focus` on `accessibleFieldDOMStructure` (#15985) @LukasTy
|
|
69
|
+
- [pickers] Always use `setValue` internally to update the picker value (#16056) @flaviendelangle
|
|
70
|
+
- [pickers] Create a new context to pass the range position props to the layout components and to the views (#15846) @flaviendelangle
|
|
71
|
+
- [pickers] Introduce a new concept of `manager` (#15339) @flaviendelangle
|
|
72
|
+
- [pickers] Improve React 19 support (#15769) @LukasTy
|
|
73
|
+
- [pickers] Memoize `<PickersActionBar />` (#16071) @LukasTy
|
|
74
|
+
- [pickers] Remove `NonEmptyDateRange` type (#16035) @flaviendelangle
|
|
75
|
+
- [pickers] Rename `AdapterDateFns` into `AdapterDateFnsV2` and `AdapterDateFnsV3` into `AdapterDateFns` (#16082) @LukasTy
|
|
76
|
+
- [pickers] Rename `ctx.onViewChange` to `ctx.setView` and add it to the actions context (#16044) @flaviendelangle
|
|
77
|
+
- [pickers] Support `date-fns-jalali` v4 (#16011) @LukasTy
|
|
78
|
+
- [pickers] Update `closeOnSelect` and `actionBar.actions` default values (#15944) @LukasTy
|
|
79
|
+
- [pickers] Use `usePickerContext()` and `usePickerActionsContext()` instead of passing props to the `shortcuts` and `toolbar` slots (#15948) @flaviendelangle
|
|
80
|
+
- [l10n] Add Chinese (Taiwan) (zh-TW) locale (#16033) @nusr
|
|
81
|
+
- [l10n] Improve Norwegian (nb-NO) locale (#16089) @josteinjhauge
|
|
82
|
+
|
|
83
|
+
#### `@mui/x-date-pickers-pro@8.0.0-alpha.7` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
84
|
+
|
|
85
|
+
Same changes as in `@mui/x-date-pickers@8.0.0-alpha.7`.
|
|
86
|
+
|
|
87
|
+
### Charts
|
|
88
|
+
|
|
89
|
+
#### Breaking changes
|
|
90
|
+
|
|
91
|
+
- Removed `DefaultChartsLegend` component, since it is now easier to create custom legends — [Learn more](https://next.mui.com/x/react-charts/components/#html-components).
|
|
92
|
+
- The default legend is now an HTML element and can be styled more easily.
|
|
93
|
+
- The `width` and `height` properties of the charts now only apply to the `svg` element, and not their wrappers, this might cause some layout shifts.
|
|
94
|
+
- `slotProps.legend.direction` now accepts `'horizontal' | 'vertical'` instead of `'row' | 'column'` — [Learn more](https://next.mui.com/x/migration/migration-charts-v7/#legend-direction-value-change-✅).
|
|
95
|
+
- The `getSeriesToDisplay` function was removed in favor of the `useLegend` hook. — [Learn more](https://next.mui.com/x/migration/migration-charts-v7/#the-getseriestodisplay-function-was-removed).
|
|
96
|
+
|
|
97
|
+
#### `@mui/x-charts@8.0.0-alpha.7`
|
|
98
|
+
|
|
99
|
+
- [charts] New HTML legend & styles (#15733) @JCQuintas
|
|
100
|
+
- [charts] Improve React 19 support (#15769) @LukasTy
|
|
101
|
+
- [charts] Fix 301 redirection in the API documentation @oliviertassinari
|
|
102
|
+
|
|
103
|
+
#### `@mui/x-charts-pro@8.0.0-alpha.7` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
104
|
+
|
|
105
|
+
Same changes as in `@mui/x-charts@8.0.0-alpha.7`.
|
|
106
|
+
|
|
107
|
+
### Tree View
|
|
108
|
+
|
|
109
|
+
#### `@mui/x-tree-view@8.0.0-alpha.7`
|
|
110
|
+
|
|
111
|
+
- [TreeView] Improve React 19 support (#15769) @LukasTy
|
|
112
|
+
|
|
113
|
+
#### `@mui/x-tree-view-pro@8.0.0-alpha.7` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
114
|
+
|
|
115
|
+
Same changes as in `@mui/x-tree-view@8.0.0-alpha.7`.
|
|
116
|
+
|
|
117
|
+
### Docs
|
|
118
|
+
|
|
119
|
+
- [docs] Fix `EditingWithDatePickers` demo (#15967) @k-rajat19
|
|
120
|
+
- [docs] Fix inconsistent multi input range field separators (#16043) @flaviendelangle
|
|
121
|
+
- [docs] Fix non-existing "adapter" property of `LocalizationProvider` (#16084) @tomashauser
|
|
122
|
+
- [docs] Refactor Data Grid with Date Pickers example (#15992) @LukasTy
|
|
123
|
+
- [docs] Unify the wording of the pickers slots breaking changes (#16036) @flaviendelangle
|
|
124
|
+
|
|
125
|
+
### Core
|
|
126
|
+
|
|
127
|
+
- [core] Clarify the release strategy (#16014) @MBilalShafi
|
|
128
|
+
- [core] Small fixes on docs @oliviertassinari
|
|
129
|
+
- [core] Sync with other repos @oliviertassinari
|
|
130
|
+
- [core] Update the `release:version` docs (#16038) @cherniavskii
|
|
131
|
+
- [code-infra] Add `testSkipIf` and `describeSkipIf` (#16049) @JCQuintas
|
|
132
|
+
- [test] Stabilize flaky Data Grid tests (#16053) @LukasTy
|
|
133
|
+
|
|
8
134
|
## 8.0.0-alpha.6
|
|
9
135
|
|
|
10
136
|
_Dec 26, 2024_
|
|
@@ -104,7 +230,7 @@ Following are all team members who have contributed to this release:
|
|
|
104
230
|
|
|
105
231
|
#### Breaking changes
|
|
106
232
|
|
|
107
|
-
- Passing additional props (like `data-*`, `aria-*`) directly on the Data Grid component is no longer supported. To pass the props, use `slotProps
|
|
233
|
+
- Passing additional props (like `data-*`, `aria-*`) directly on the Data Grid component is no longer supported. To pass the props, use `slotProps`:
|
|
108
234
|
|
|
109
235
|
- For `.root` element, use `slotProps.root`.
|
|
110
236
|
- For `.main` element (the one with `role="grid"`), use `slotProps.main`.
|
|
@@ -260,7 +260,7 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
|
|
|
260
260
|
return handleValueChange(day, 'finish', view);
|
|
261
261
|
});
|
|
262
262
|
React.useEffect(() => {
|
|
263
|
-
if (
|
|
263
|
+
if (utils.isValid(value)) {
|
|
264
264
|
changeMonth(value);
|
|
265
265
|
}
|
|
266
266
|
}, [value]); // eslint-disable-line
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { PickersFadeTransitionGroupClasses } from './pickersFadeTransitionGroupClasses';
|
|
3
3
|
export interface PickersFadeTransitionGroupProps {
|
|
4
|
-
children: React.ReactElement
|
|
4
|
+
children: React.ReactElement<any>;
|
|
5
5
|
className?: string;
|
|
6
6
|
reduceAnimations: boolean;
|
|
7
7
|
transKey: React.Key;
|
|
@@ -9,7 +9,7 @@ export interface ExportedSlideTransitionProps {
|
|
|
9
9
|
classes?: Partial<PickersSlideTransitionClasses>;
|
|
10
10
|
}
|
|
11
11
|
export interface SlideTransitionProps extends Omit<CSSTransitionProps, 'timeout'>, ExportedSlideTransitionProps {
|
|
12
|
-
children: React.ReactElement
|
|
12
|
+
children: React.ReactElement<any>;
|
|
13
13
|
className?: string;
|
|
14
14
|
reduceAnimations: boolean;
|
|
15
15
|
slideDirection: SlideDirection;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { UseDateFieldProps } from './DateField.types';
|
|
2
|
-
export declare const useDateField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseDateFieldProps<TEnableAccessibleFieldDOMStructure>>(
|
|
2
|
+
export declare const useDateField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseDateFieldProps<TEnableAccessibleFieldDOMStructure>>(props: TAllProps) => import("../internals").UseFieldResponse<TEnableAccessibleFieldDOMStructure, Omit<TAllProps, "disabled" | "readOnly" | "value" | "defaultValue" | "onChange" | "onError" | "format" | "timezone" | keyof import("../internals").BaseDateValidationProps | "shouldDisableYear" | "shouldDisableMonth" | "shouldDisableDate" | "referenceDate" | "formatDensity" | "shouldRespectLeadingZeros" | "selectedSections" | "onSelectedSectionsChange" | "unstableFieldRef" | "enableAccessibleFieldDOMStructure" | "dateSeparator">>;
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { useField } from "../internals/hooks/useField/index.js";
|
|
5
|
-
import { validateDate } from "../validation/index.js";
|
|
3
|
+
import { useField, useFieldInternalPropsWithDefaults } from "../internals/hooks/useField/index.js";
|
|
6
4
|
import { useSplitFieldProps } from "../hooks/index.js";
|
|
7
|
-
import {
|
|
8
|
-
export const useDateField =
|
|
9
|
-
const
|
|
5
|
+
import { useDateManager } from "../managers/index.js";
|
|
6
|
+
export const useDateField = props => {
|
|
7
|
+
const manager = useDateManager(props);
|
|
10
8
|
const {
|
|
11
9
|
forwardedProps,
|
|
12
10
|
internalProps
|
|
13
11
|
} = useSplitFieldProps(props, 'date');
|
|
12
|
+
const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
|
|
13
|
+
manager,
|
|
14
|
+
internalProps
|
|
15
|
+
});
|
|
14
16
|
return useField({
|
|
15
17
|
forwardedProps,
|
|
16
|
-
internalProps,
|
|
17
|
-
valueManager:
|
|
18
|
-
fieldValueManager:
|
|
19
|
-
validator:
|
|
20
|
-
valueType:
|
|
18
|
+
internalProps: internalPropsWithDefaults,
|
|
19
|
+
valueManager: manager.internal_valueManager,
|
|
20
|
+
fieldValueManager: manager.internal_fieldValueManager,
|
|
21
|
+
validator: manager.validator,
|
|
22
|
+
valueType: manager.valueType
|
|
21
23
|
});
|
|
22
24
|
};
|
package/DatePicker/DatePicker.js
CHANGED
|
@@ -59,7 +59,7 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
|
|
|
59
59
|
autoFocus: PropTypes.bool,
|
|
60
60
|
className: PropTypes.string,
|
|
61
61
|
/**
|
|
62
|
-
* If `true`, the
|
|
62
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
63
63
|
* @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
|
|
64
64
|
*/
|
|
65
65
|
closeOnSelect: PropTypes.bool,
|
|
@@ -29,6 +29,11 @@ export interface DatePickerProps<TEnableAccessibleFieldDOMStructure extends bool
|
|
|
29
29
|
* @default 4 on desktop, 3 on mobile
|
|
30
30
|
*/
|
|
31
31
|
yearsPerRow?: 3 | 4;
|
|
32
|
+
/**
|
|
33
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
34
|
+
* @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
|
|
35
|
+
*/
|
|
36
|
+
closeOnSelect?: boolean;
|
|
32
37
|
}
|
|
33
38
|
/**
|
|
34
39
|
* Props the field can receive when used inside a date picker (<DatePicker />, <DesktopDatePicker /> or <MobileDatePicker /> component).
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar';
|
|
3
3
|
import { DatePickerToolbarClasses } from './datePickerToolbarClasses';
|
|
4
|
-
|
|
5
|
-
export interface DatePickerToolbarProps extends BaseToolbarProps<PickerValue>, ExportedDatePickerToolbarProps {
|
|
4
|
+
export interface DatePickerToolbarProps extends BaseToolbarProps, ExportedDatePickerToolbarProps {
|
|
6
5
|
}
|
|
7
6
|
export interface ExportedDatePickerToolbarProps extends ExportedBaseToolbarProps {
|
|
8
7
|
/**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["
|
|
5
|
+
const _excluded = ["toolbarFormat", "toolbarPlaceholder", "className", "classes"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import clsx from 'clsx';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
@@ -59,8 +59,6 @@ export const DatePickerToolbar = /*#__PURE__*/React.forwardRef(function DatePick
|
|
|
59
59
|
name: 'MuiDatePickerToolbar'
|
|
60
60
|
});
|
|
61
61
|
const {
|
|
62
|
-
value,
|
|
63
|
-
isLandscape,
|
|
64
62
|
toolbarFormat,
|
|
65
63
|
toolbarPlaceholder = '––',
|
|
66
64
|
className,
|
|
@@ -69,13 +67,15 @@ export const DatePickerToolbar = /*#__PURE__*/React.forwardRef(function DatePick
|
|
|
69
67
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
70
68
|
const utils = useUtils();
|
|
71
69
|
const {
|
|
72
|
-
|
|
70
|
+
value,
|
|
71
|
+
views,
|
|
72
|
+
orientation
|
|
73
73
|
} = usePickerContext();
|
|
74
74
|
const translations = usePickerTranslations();
|
|
75
75
|
const ownerState = useToolbarOwnerState();
|
|
76
76
|
const classes = useUtilityClasses(classesProp);
|
|
77
77
|
const dateText = React.useMemo(() => {
|
|
78
|
-
if (!value) {
|
|
78
|
+
if (!utils.isValid(value)) {
|
|
79
79
|
return toolbarPlaceholder;
|
|
80
80
|
}
|
|
81
81
|
const formatFromViews = resolveDateFormat(utils, {
|
|
@@ -87,12 +87,11 @@ export const DatePickerToolbar = /*#__PURE__*/React.forwardRef(function DatePick
|
|
|
87
87
|
return /*#__PURE__*/_jsx(DatePickerToolbarRoot, _extends({
|
|
88
88
|
ref: ref,
|
|
89
89
|
toolbarTitle: translations.datePickerToolbarTitle,
|
|
90
|
-
isLandscape: isLandscape,
|
|
91
90
|
className: clsx(classes.root, className)
|
|
92
91
|
}, other, {
|
|
93
92
|
children: /*#__PURE__*/_jsx(DatePickerToolbarTitle, {
|
|
94
93
|
variant: "h4",
|
|
95
|
-
align:
|
|
94
|
+
align: orientation === 'landscape' ? 'left' : 'center',
|
|
96
95
|
ownerState: ownerState,
|
|
97
96
|
className: classes.title,
|
|
98
97
|
children: dateText
|
|
@@ -114,8 +113,6 @@ process.env.NODE_ENV !== "production" ? DatePickerToolbar.propTypes = {
|
|
|
114
113
|
* @default `true` for Desktop, `false` for Mobile.
|
|
115
114
|
*/
|
|
116
115
|
hidden: PropTypes.bool,
|
|
117
|
-
isLandscape: PropTypes.bool.isRequired,
|
|
118
|
-
onChange: PropTypes.func.isRequired,
|
|
119
116
|
/**
|
|
120
117
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
121
118
|
*/
|
|
@@ -129,6 +126,5 @@ process.env.NODE_ENV !== "production" ? DatePickerToolbar.propTypes = {
|
|
|
129
126
|
* Toolbar value placeholder—it is displayed when the value is empty.
|
|
130
127
|
* @default "––"
|
|
131
128
|
*/
|
|
132
|
-
toolbarPlaceholder: PropTypes.node
|
|
133
|
-
value: PropTypes.object
|
|
129
|
+
toolbarPlaceholder: PropTypes.node
|
|
134
130
|
} : void 0;
|
package/DatePicker/shared.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface BaseDatePickerSlots extends DateCalendarSlots {
|
|
|
19
19
|
export interface BaseDatePickerSlotProps extends DateCalendarSlotProps {
|
|
20
20
|
toolbar?: ExportedDatePickerToolbarProps;
|
|
21
21
|
}
|
|
22
|
-
export type DatePickerViewRenderers<TView extends DateView
|
|
22
|
+
export type DatePickerViewRenderers<TView extends DateView> = PickerViewRendererLookup<PickerValue, TView, DateViewRendererProps<TView>>;
|
|
23
23
|
export interface BaseDatePickerProps extends BasePickerInputProps<PickerValue, DateView, DateValidationError>, ExportedDateCalendarProps {
|
|
24
24
|
/**
|
|
25
25
|
* Overridable component slots.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { UseDateTimeFieldProps } from './DateTimeField.types';
|
|
2
|
-
export declare const useDateTimeField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>>(
|
|
2
|
+
export declare const useDateTimeField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>>(props: TAllProps) => import("../internals").UseFieldResponse<TEnableAccessibleFieldDOMStructure, Omit<TAllProps, "disabled" | "readOnly" | "value" | "defaultValue" | "onChange" | "onError" | "format" | "ampm" | "disableFuture" | "disablePast" | "maxDate" | "minDate" | "timezone" | "shouldDisableYear" | "shouldDisableMonth" | "shouldDisableDate" | "minTime" | "maxTime" | "minutesStep" | "shouldDisableTime" | "disableIgnoringDatePartForTimeValidation" | "minDateTime" | "maxDateTime" | "referenceDate" | "formatDensity" | "shouldRespectLeadingZeros" | "selectedSections" | "onSelectedSectionsChange" | "unstableFieldRef" | "enableAccessibleFieldDOMStructure" | "dateSeparator">>;
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { useField } from "../internals/hooks/useField/index.js";
|
|
5
|
-
import { validateDateTime } from "../validation/index.js";
|
|
3
|
+
import { useField, useFieldInternalPropsWithDefaults } from "../internals/hooks/useField/index.js";
|
|
6
4
|
import { useSplitFieldProps } from "../hooks/index.js";
|
|
7
|
-
import {
|
|
8
|
-
export const useDateTimeField =
|
|
9
|
-
const
|
|
5
|
+
import { useDateTimeManager } from "../managers/index.js";
|
|
6
|
+
export const useDateTimeField = props => {
|
|
7
|
+
const manager = useDateTimeManager(props);
|
|
10
8
|
const {
|
|
11
9
|
forwardedProps,
|
|
12
10
|
internalProps
|
|
13
11
|
} = useSplitFieldProps(props, 'date-time');
|
|
12
|
+
const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
|
|
13
|
+
manager,
|
|
14
|
+
internalProps
|
|
15
|
+
});
|
|
14
16
|
return useField({
|
|
15
17
|
forwardedProps,
|
|
16
|
-
internalProps,
|
|
17
|
-
valueManager:
|
|
18
|
-
fieldValueManager:
|
|
19
|
-
validator:
|
|
20
|
-
valueType:
|
|
18
|
+
internalProps: internalPropsWithDefaults,
|
|
19
|
+
valueManager: manager.internal_valueManager,
|
|
20
|
+
fieldValueManager: manager.internal_fieldValueManager,
|
|
21
|
+
validator: manager.validator,
|
|
22
|
+
valueType: manager.valueType
|
|
21
23
|
});
|
|
22
24
|
};
|
|
@@ -69,8 +69,8 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
|
|
|
69
69
|
autoFocus: PropTypes.bool,
|
|
70
70
|
className: PropTypes.string,
|
|
71
71
|
/**
|
|
72
|
-
* If `true`, the
|
|
73
|
-
* @default
|
|
72
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
73
|
+
* @default false
|
|
74
74
|
*/
|
|
75
75
|
closeOnSelect: PropTypes.bool,
|
|
76
76
|
/**
|
|
@@ -78,11 +78,11 @@ const DateTimePickerTabs = function DateTimePickerTabs(inProps) {
|
|
|
78
78
|
} = usePickerPrivateContext();
|
|
79
79
|
const {
|
|
80
80
|
view,
|
|
81
|
-
|
|
81
|
+
setView
|
|
82
82
|
} = usePickerContext();
|
|
83
83
|
const classes = useUtilityClasses(classesProp);
|
|
84
84
|
const handleChange = (event, value) => {
|
|
85
|
-
|
|
85
|
+
setView(tabToView(value));
|
|
86
86
|
};
|
|
87
87
|
if (hidden) {
|
|
88
88
|
return null;
|
|
@@ -2,13 +2,15 @@ import * as React from 'react';
|
|
|
2
2
|
import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar';
|
|
3
3
|
import { DateTimePickerToolbarClasses } from './dateTimePickerToolbarClasses';
|
|
4
4
|
import { DateOrTimeViewWithMeridiem, PickerValue } from '../internals/models';
|
|
5
|
+
import { DateTimeValidationError } from '../models';
|
|
6
|
+
import { SetValueActionOptions } from '../internals/hooks/usePicker/usePickerValue.types';
|
|
5
7
|
export interface ExportedDateTimePickerToolbarProps extends ExportedBaseToolbarProps {
|
|
6
8
|
/**
|
|
7
9
|
* Override or extend the styles applied to the component.
|
|
8
10
|
*/
|
|
9
11
|
classes?: Partial<DateTimePickerToolbarClasses>;
|
|
10
12
|
}
|
|
11
|
-
export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolbarProps, BaseToolbarProps
|
|
13
|
+
export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolbarProps, BaseToolbarProps {
|
|
12
14
|
/**
|
|
13
15
|
* If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.
|
|
14
16
|
*/
|
|
@@ -22,8 +24,10 @@ export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolba
|
|
|
22
24
|
* This is used by the Date Time Range Picker Toolbar.
|
|
23
25
|
*/
|
|
24
26
|
export declare const DateTimePickerToolbarOverrideContext: React.Context<{
|
|
27
|
+
value: PickerValue;
|
|
28
|
+
setValue: (value: PickerValue, options?: SetValueActionOptions<DateTimeValidationError>) => void;
|
|
25
29
|
forceDesktopVariant: boolean;
|
|
26
|
-
|
|
30
|
+
setView: (view: DateOrTimeViewWithMeridiem) => void;
|
|
27
31
|
view: DateOrTimeViewWithMeridiem | null;
|
|
28
32
|
} | null>;
|
|
29
33
|
/**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["ampm", "ampmInClock", "
|
|
5
|
+
const _excluded = ["ampm", "ampmInClock", "toolbarFormat", "toolbarPlaceholder", "toolbarTitle", "className", "classes"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import clsx from 'clsx';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
@@ -230,9 +230,6 @@ function DateTimePickerToolbar(inProps) {
|
|
|
230
230
|
const {
|
|
231
231
|
ampm,
|
|
232
232
|
ampmInClock,
|
|
233
|
-
value,
|
|
234
|
-
onChange,
|
|
235
|
-
isLandscape,
|
|
236
233
|
toolbarFormat,
|
|
237
234
|
toolbarPlaceholder = '––',
|
|
238
235
|
toolbarTitle: inToolbarTitle,
|
|
@@ -241,31 +238,37 @@ function DateTimePickerToolbar(inProps) {
|
|
|
241
238
|
} = props,
|
|
242
239
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
243
240
|
const {
|
|
241
|
+
value: valueContext,
|
|
242
|
+
setValue: setValueContext,
|
|
244
243
|
disabled,
|
|
245
244
|
readOnly,
|
|
246
245
|
variant,
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
orientation,
|
|
247
|
+
view: viewContext,
|
|
248
|
+
setView: setViewContext,
|
|
249
249
|
views
|
|
250
250
|
} = usePickerContext();
|
|
251
|
+
const translations = usePickerTranslations();
|
|
251
252
|
const ownerState = useToolbarOwnerState();
|
|
252
253
|
const classes = useUtilityClasses(classesProp, ownerState);
|
|
253
254
|
const utils = useUtils();
|
|
255
|
+
const overrides = React.useContext(DateTimePickerToolbarOverrideContext);
|
|
256
|
+
const value = overrides ? overrides.value : valueContext;
|
|
257
|
+
const setValue = overrides ? overrides.setValue : setValueContext;
|
|
258
|
+
const view = overrides ? overrides.view : viewContext;
|
|
259
|
+
const setView = overrides ? overrides.setView : setViewContext;
|
|
254
260
|
const {
|
|
255
261
|
meridiemMode,
|
|
256
262
|
handleMeridiemChange
|
|
257
|
-
} = useMeridiemMode(value, ampm,
|
|
258
|
-
|
|
259
|
-
|
|
263
|
+
} = useMeridiemMode(value, ampm, newValue => setValue(newValue, {
|
|
264
|
+
changeImportance: 'set'
|
|
265
|
+
}));
|
|
260
266
|
const toolbarVariant = overrides?.forceDesktopVariant ? 'desktop' : variant;
|
|
261
267
|
const isDesktop = toolbarVariant === 'desktop';
|
|
262
268
|
const showAmPmControl = Boolean(ampm && !ampmInClock);
|
|
263
269
|
const toolbarTitle = inToolbarTitle ?? translations.dateTimePickerToolbarTitle;
|
|
264
|
-
const view = overrides ? overrides.view : viewCtx;
|
|
265
|
-
const onViewChange = overrides ? overrides.onViewChange : onViewChangeCtx;
|
|
266
|
-
const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');
|
|
267
270
|
const dateText = React.useMemo(() => {
|
|
268
|
-
if (!value) {
|
|
271
|
+
if (!utils.isValid(value)) {
|
|
269
272
|
return toolbarPlaceholder;
|
|
270
273
|
}
|
|
271
274
|
if (toolbarFormat) {
|
|
@@ -273,8 +276,13 @@ function DateTimePickerToolbar(inProps) {
|
|
|
273
276
|
}
|
|
274
277
|
return utils.format(value, 'shortDate');
|
|
275
278
|
}, [value, toolbarFormat, toolbarPlaceholder, utils]);
|
|
279
|
+
const formatSection = (format, fallback) => {
|
|
280
|
+
if (!utils.isValid(value)) {
|
|
281
|
+
return fallback;
|
|
282
|
+
}
|
|
283
|
+
return utils.format(value, format);
|
|
284
|
+
};
|
|
276
285
|
return /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({
|
|
277
|
-
isLandscape: isLandscape,
|
|
278
286
|
className: clsx(classes.root, className),
|
|
279
287
|
toolbarTitle: toolbarTitle,
|
|
280
288
|
toolbarVariant: toolbarVariant
|
|
@@ -286,13 +294,13 @@ function DateTimePickerToolbar(inProps) {
|
|
|
286
294
|
children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
287
295
|
tabIndex: -1,
|
|
288
296
|
variant: "subtitle1",
|
|
289
|
-
onClick: () =>
|
|
297
|
+
onClick: () => setView('year'),
|
|
290
298
|
selected: view === 'year',
|
|
291
|
-
value:
|
|
299
|
+
value: formatSection('year', '–')
|
|
292
300
|
}), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
293
301
|
tabIndex: -1,
|
|
294
302
|
variant: isDesktop ? 'h5' : 'h4',
|
|
295
|
-
onClick: () =>
|
|
303
|
+
onClick: () => setView('day'),
|
|
296
304
|
selected: view === 'day',
|
|
297
305
|
value: dateText
|
|
298
306
|
})]
|
|
@@ -307,10 +315,10 @@ function DateTimePickerToolbar(inProps) {
|
|
|
307
315
|
children: [views.includes('hours') && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
308
316
|
children: [/*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
309
317
|
variant: isDesktop ? 'h5' : 'h3',
|
|
310
|
-
width: isDesktop &&
|
|
311
|
-
onClick: () =>
|
|
318
|
+
width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
|
|
319
|
+
onClick: () => setView('hours'),
|
|
312
320
|
selected: view === 'hours',
|
|
313
|
-
value:
|
|
321
|
+
value: formatSection(ampm ? 'hours12h' : 'hours24h', '--')
|
|
314
322
|
}), /*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {
|
|
315
323
|
variant: isDesktop ? 'h5' : 'h3',
|
|
316
324
|
value: ":",
|
|
@@ -319,10 +327,10 @@ function DateTimePickerToolbar(inProps) {
|
|
|
319
327
|
toolbarVariant: toolbarVariant
|
|
320
328
|
}), /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
321
329
|
variant: isDesktop ? 'h5' : 'h3',
|
|
322
|
-
width: isDesktop &&
|
|
323
|
-
onClick: () =>
|
|
330
|
+
width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
|
|
331
|
+
onClick: () => setView('minutes'),
|
|
324
332
|
selected: view === 'minutes' || !views.includes('minutes') && view === 'hours',
|
|
325
|
-
value:
|
|
333
|
+
value: formatSection('minutes', '--'),
|
|
326
334
|
disabled: !views.includes('minutes')
|
|
327
335
|
})]
|
|
328
336
|
}), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
@@ -334,10 +342,10 @@ function DateTimePickerToolbar(inProps) {
|
|
|
334
342
|
toolbarVariant: toolbarVariant
|
|
335
343
|
}), /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
336
344
|
variant: isDesktop ? 'h5' : 'h3',
|
|
337
|
-
width: isDesktop &&
|
|
338
|
-
onClick: () =>
|
|
345
|
+
width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
|
|
346
|
+
onClick: () => setView('seconds'),
|
|
339
347
|
selected: view === 'seconds',
|
|
340
|
-
value:
|
|
348
|
+
value: formatSection('seconds', '--')
|
|
341
349
|
})]
|
|
342
350
|
})]
|
|
343
351
|
}), showAmPmControl && !isDesktop && /*#__PURE__*/_jsxs(DateTimePickerToolbarAmPmSelection, {
|
|
@@ -360,7 +368,7 @@ function DateTimePickerToolbar(inProps) {
|
|
|
360
368
|
})]
|
|
361
369
|
}), ampm && isDesktop && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
362
370
|
variant: "h5",
|
|
363
|
-
onClick: () =>
|
|
371
|
+
onClick: () => setView('meridiem'),
|
|
364
372
|
selected: view === 'meridiem',
|
|
365
373
|
value: value && meridiemMode ? formatMeridiem(utils, meridiemMode) : '--',
|
|
366
374
|
width: MULTI_SECTION_CLOCK_SECTION_WIDTH
|
|
@@ -385,8 +393,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
|
|
|
385
393
|
* @default `true` for Desktop, `false` for Mobile.
|
|
386
394
|
*/
|
|
387
395
|
hidden: PropTypes.bool,
|
|
388
|
-
isLandscape: PropTypes.bool.isRequired,
|
|
389
|
-
onChange: PropTypes.func.isRequired,
|
|
390
396
|
/**
|
|
391
397
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
392
398
|
*/
|
|
@@ -404,7 +410,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
|
|
|
404
410
|
/**
|
|
405
411
|
* If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.
|
|
406
412
|
*/
|
|
407
|
-
toolbarTitle: PropTypes.node
|
|
408
|
-
value: PropTypes.object
|
|
413
|
+
toolbarTitle: PropTypes.node
|
|
409
414
|
} : void 0;
|
|
410
415
|
export { DateTimePickerToolbar };
|
|
@@ -35,7 +35,7 @@ export interface BaseDateTimePickerSlotProps extends DateCalendarSlotProps, Time
|
|
|
35
35
|
*/
|
|
36
36
|
toolbar?: ExportedDateTimePickerToolbarProps;
|
|
37
37
|
}
|
|
38
|
-
export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem
|
|
38
|
+
export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem> = PickerViewRendererLookup<PickerValue, TView, Omit<DateViewRendererProps<TView>, 'slots' | 'slotProps'> & Omit<TimeViewRendererProps<TimeViewWithMeridiem, BaseClockProps<TimeViewWithMeridiem>>, 'slots' | 'slotProps'>>;
|
|
39
39
|
export interface BaseDateTimePickerProps<TView extends DateOrTimeViewWithMeridiem> extends BasePickerInputProps<PickerValue, TView, DateTimeValidationError>, Omit<ExportedDateCalendarProps, 'onViewChange'>, ExportedBaseClockProps, ExportedValidateDateTimeProps {
|
|
40
40
|
/**
|
|
41
41
|
* Display ampm controls under the clock (instead of in the toolbar).
|