@mui/x-date-pickers 7.0.0-beta.7 → 7.1.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.
Files changed (209) hide show
  1. package/AdapterDateFns/AdapterDateFns.js +1 -1
  2. package/AdapterDateFnsBase/AdapterDateFnsBase.js +1 -2
  3. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +2 -4
  4. package/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -1
  5. package/AdapterDayjs/AdapterDayjs.js +2 -4
  6. package/AdapterLuxon/AdapterLuxon.js +12 -9
  7. package/AdapterMoment/AdapterMoment.js +5 -6
  8. package/CHANGELOG.md +266 -12
  9. package/DateCalendar/DateCalendar.js +14 -16
  10. package/DateCalendar/DayCalendar.js +5 -6
  11. package/DateField/DateField.js +3 -4
  12. package/DatePicker/DatePicker.js +1 -1
  13. package/DatePicker/DatePickerToolbar.js +11 -6
  14. package/DatePicker/shared.d.ts +2 -1
  15. package/DatePicker/shared.js +3 -5
  16. package/DateTimeField/DateTimeField.js +3 -4
  17. package/DateTimePicker/DateTimePicker.js +1 -1
  18. package/DateTimePicker/DateTimePickerToolbar.js +98 -46
  19. package/DateTimePicker/shared.d.ts +2 -1
  20. package/DateTimePicker/shared.js +11 -13
  21. package/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  22. package/DesktopDatePicker/DesktopDatePicker.js +7 -11
  23. package/DesktopDateTimePicker/DesktopDateTimePicker.js +72 -37
  24. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +12 -0
  25. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +101 -0
  26. package/DesktopDateTimePicker/index.d.ts +1 -0
  27. package/DesktopDateTimePicker/index.js +2 -1
  28. package/DesktopTimePicker/DesktopTimePicker.js +8 -12
  29. package/DigitalClock/DigitalClock.js +16 -9
  30. package/LocalizationProvider/LocalizationProvider.js +1 -2
  31. package/MobileDatePicker/MobileDatePicker.js +6 -10
  32. package/MobileDateTimePicker/MobileDateTimePicker.js +8 -12
  33. package/MobileTimePicker/MobileTimePicker.js +6 -10
  34. package/MonthCalendar/MonthCalendar.js +4 -4
  35. package/MonthCalendar/PickersMonth.js +13 -8
  36. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  37. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +1 -1
  38. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +16 -9
  39. package/PickersActionBar/PickersActionBar.js +1 -1
  40. package/PickersCalendarHeader/PickersCalendarHeader.js +17 -14
  41. package/PickersDay/PickersDay.js +30 -15
  42. package/PickersLayout/PickersLayout.js +31 -17
  43. package/PickersLayout/usePickerLayout.js +8 -9
  44. package/PickersSectionList/PickersSectionList.js +9 -11
  45. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +138 -74
  46. package/PickersTextField/PickersInput/PickersInput.js +77 -55
  47. package/PickersTextField/PickersInputBase/PickersInputBase.js +67 -28
  48. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +7 -0
  49. package/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  50. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +33 -14
  51. package/README.md +1 -1
  52. package/StaticDatePicker/StaticDatePicker.js +4 -5
  53. package/StaticDateTimePicker/StaticDateTimePicker.js +6 -7
  54. package/StaticTimePicker/StaticTimePicker.js +3 -4
  55. package/TimeClock/Clock.js +48 -35
  56. package/TimeClock/ClockNumber.js +12 -7
  57. package/TimeClock/ClockPointer.js +23 -13
  58. package/TimeClock/TimeClock.js +1 -1
  59. package/TimeField/TimeField.js +2 -3
  60. package/TimePicker/TimePickerToolbar.js +25 -16
  61. package/TimePicker/shared.d.ts +2 -1
  62. package/TimePicker/shared.js +5 -7
  63. package/YearCalendar/PickersYear.js +12 -6
  64. package/YearCalendar/YearCalendar.js +5 -6
  65. package/hooks/useClearableField.js +6 -7
  66. package/index.js +1 -1
  67. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +19 -15
  68. package/internals/components/PickersModalDialog.js +6 -7
  69. package/internals/components/PickersPopper.js +25 -24
  70. package/internals/components/PickersToolbar.js +42 -24
  71. package/internals/hooks/date-helpers-hooks.js +1 -1
  72. package/internals/hooks/defaultizedFieldProps.js +15 -18
  73. package/internals/hooks/useClockReferenceDate.js +1 -1
  74. package/internals/hooks/useDesktopPicker/index.d.ts +1 -1
  75. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +11 -12
  76. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
  77. package/internals/hooks/useField/buildSectionsFromFormat.js +35 -31
  78. package/internals/hooks/useField/useField.js +6 -4
  79. package/internals/hooks/useField/useField.types.d.ts +1 -0
  80. package/internals/hooks/useField/useField.utils.js +4 -7
  81. package/internals/hooks/useField/useFieldCharacterEditing.js +1 -2
  82. package/internals/hooks/useField/useFieldState.js +1 -1
  83. package/internals/hooks/useField/useFieldV6TextField.js +17 -18
  84. package/internals/hooks/useField/useFieldV7TextField.js +9 -11
  85. package/internals/hooks/useMobilePicker/useMobilePicker.js +7 -8
  86. package/internals/hooks/useOpenState.js +1 -1
  87. package/internals/hooks/usePicker/index.d.ts +1 -0
  88. package/internals/hooks/usePicker/usePickerViews.d.ts +4 -2
  89. package/internals/hooks/usePicker/usePickerViews.js +1 -2
  90. package/internals/hooks/useStaticPicker/useStaticPicker.js +13 -17
  91. package/internals/hooks/useValueWithTimezone.js +5 -6
  92. package/internals/hooks/useViews.js +3 -4
  93. package/internals/index.d.ts +1 -1
  94. package/internals/models/validation.d.ts +1 -1
  95. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +3 -3
  96. package/internals/utils/date-time-utils.js +2 -5
  97. package/internals/utils/fields.js +1 -1
  98. package/internals/utils/getDefaultReferenceDate.js +2 -6
  99. package/internals/utils/views.js +1 -1
  100. package/locales/csCZ.js +1 -4
  101. package/locales/daDK.js +1 -4
  102. package/locales/deDE.js +1 -4
  103. package/locales/huHU.js +1 -4
  104. package/locales/itIT.js +16 -20
  105. package/locales/jaJP.js +1 -4
  106. package/locales/roRO.js +1 -4
  107. package/locales/skSK.js +1 -4
  108. package/locales/zhHK.js +14 -17
  109. package/modern/AdapterLuxon/AdapterLuxon.js +9 -4
  110. package/modern/DateCalendar/DateCalendar.js +1 -1
  111. package/modern/DateField/DateField.js +1 -1
  112. package/modern/DatePicker/DatePicker.js +1 -1
  113. package/modern/DatePicker/DatePickerToolbar.js +11 -6
  114. package/modern/DateTimeField/DateTimeField.js +1 -1
  115. package/modern/DateTimePicker/DateTimePicker.js +1 -1
  116. package/modern/DateTimePicker/DateTimePickerToolbar.js +97 -45
  117. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  118. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
  119. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +64 -25
  120. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +101 -0
  121. package/modern/DesktopDateTimePicker/index.js +2 -1
  122. package/modern/DigitalClock/DigitalClock.js +14 -6
  123. package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
  124. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  125. package/modern/MonthCalendar/PickersMonth.js +12 -6
  126. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  127. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  128. package/modern/PickersDay/PickersDay.js +30 -15
  129. package/modern/PickersLayout/PickersLayout.js +31 -17
  130. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  131. package/modern/PickersTextField/PickersInput/PickersInput.js +76 -54
  132. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  133. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  134. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  135. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  136. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  137. package/modern/TimeClock/Clock.js +48 -35
  138. package/modern/TimeClock/ClockNumber.js +12 -7
  139. package/modern/TimeClock/ClockPointer.js +23 -13
  140. package/modern/TimePicker/TimePickerToolbar.js +25 -16
  141. package/modern/YearCalendar/PickersYear.js +12 -6
  142. package/modern/index.js +1 -1
  143. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  144. package/modern/internals/components/PickersPopper.js +13 -9
  145. package/modern/internals/components/PickersToolbar.js +39 -18
  146. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +34 -30
  147. package/modern/internals/hooks/useField/useField.js +4 -2
  148. package/modern/internals/hooks/useField/useFieldV6TextField.js +8 -3
  149. package/modern/internals/hooks/useField/useFieldV7TextField.js +1 -1
  150. package/modern/internals/hooks/useOpenState.js +1 -1
  151. package/modern/internals/utils/fields.js +1 -1
  152. package/modern/locales/itIT.js +16 -20
  153. package/modern/locales/zhHK.js +14 -17
  154. package/node/AdapterLuxon/AdapterLuxon.js +9 -4
  155. package/node/DateCalendar/DateCalendar.js +1 -1
  156. package/node/DateField/DateField.js +1 -1
  157. package/node/DatePicker/DatePicker.js +1 -1
  158. package/node/DatePicker/DatePickerToolbar.js +11 -6
  159. package/node/DateTimeField/DateTimeField.js +1 -1
  160. package/node/DateTimePicker/DateTimePicker.js +1 -1
  161. package/node/DateTimePicker/DateTimePickerToolbar.js +97 -45
  162. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  163. package/node/DesktopDatePicker/DesktopDatePicker.js +1 -1
  164. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +63 -25
  165. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +108 -0
  166. package/node/DesktopDateTimePicker/index.js +8 -1
  167. package/node/DigitalClock/DigitalClock.js +14 -6
  168. package/node/MobileDatePicker/MobileDatePicker.js +1 -1
  169. package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  170. package/node/MonthCalendar/PickersMonth.js +12 -6
  171. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  172. package/node/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  173. package/node/PickersDay/PickersDay.js +30 -15
  174. package/node/PickersLayout/PickersLayout.js +31 -17
  175. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  176. package/node/PickersTextField/PickersInput/PickersInput.js +76 -54
  177. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  178. package/node/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  179. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  180. package/node/StaticDatePicker/StaticDatePicker.js +1 -1
  181. package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  182. package/node/TimeClock/Clock.js +48 -35
  183. package/node/TimeClock/ClockNumber.js +12 -7
  184. package/node/TimeClock/ClockPointer.js +23 -13
  185. package/node/TimePicker/TimePickerToolbar.js +25 -16
  186. package/node/YearCalendar/PickersYear.js +12 -6
  187. package/node/index.js +1 -1
  188. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  189. package/node/internals/components/PickersPopper.js +13 -9
  190. package/node/internals/components/PickersToolbar.js +39 -18
  191. package/node/internals/hooks/useField/buildSectionsFromFormat.js +34 -30
  192. package/node/internals/hooks/useField/useField.js +4 -2
  193. package/node/internals/hooks/useField/useFieldV6TextField.js +8 -3
  194. package/node/internals/hooks/useField/useFieldV7TextField.js +1 -1
  195. package/node/internals/hooks/useOpenState.js +1 -1
  196. package/node/internals/utils/fields.js +1 -1
  197. package/node/locales/itIT.js +16 -20
  198. package/node/locales/zhHK.js +14 -17
  199. package/package.json +5 -5
  200. package/timeViewRenderers/timeViewRenderers.js +1 -1
  201. package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +0 -15
  202. package/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -163
  203. package/dateTimeViewRenderers/index.d.ts +0 -2
  204. package/dateTimeViewRenderers/index.js +0 -1
  205. package/dateTimeViewRenderers/package.json +0 -6
  206. package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -162
  207. package/modern/dateTimeViewRenderers/index.js +0 -1
  208. package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -171
  209. package/node/dateTimeViewRenderers/index.js +0 -12
@@ -1,19 +1,64 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["openTo", "focusedView", "timeViewsCount"];
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
4
6
  import { resolveComponentProps } from '@mui/base/utils';
5
7
  import { refType } from '@mui/utils';
8
+ import Divider from '@mui/material/Divider';
6
9
  import { singleItemValueManager } from '../internals/utils/valueManagers';
7
10
  import { DateTimeField } from '../DateTimeField';
8
11
  import { useDateTimePickerDefaultizedProps } from '../DateTimePicker/shared';
9
12
  import { renderDateViewCalendar } from '../dateViewRenderers/dateViewRenderers';
10
- import { renderDesktopDateTimeView } from '../dateTimeViewRenderers';
11
13
  import { useLocaleText, useUtils } from '../internals/hooks/useUtils';
12
14
  import { validateDateTime } from '../internals/utils/validation/validateDateTime';
13
15
  import { CalendarIcon } from '../icons';
14
16
  import { useDesktopPicker } from '../internals/hooks/useDesktopPicker';
15
17
  import { extractValidationProps } from '../internals/utils/validation/extractValidationProps';
16
18
  import { resolveDateTimeFormat, resolveTimeViewsResponse } from '../internals/utils/date-time-utils';
19
+ import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from '../timeViewRenderers';
20
+ import { VIEW_HEIGHT, isDatePickerView, isInternalTimeView } from '../internals';
21
+ import { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from '../MultiSectionDigitalClock';
22
+ import { digitalClockClasses } from '../DigitalClock';
23
+ import { DesktopDateTimePickerLayout } from './DesktopDateTimePickerLayout';
24
+ import { jsx as _jsx } from "react/jsx-runtime";
25
+ import { jsxs as _jsxs } from "react/jsx-runtime";
26
+ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popperView, rendererProps) {
27
+ const {
28
+ openTo,
29
+ focusedView,
30
+ timeViewsCount
31
+ } = rendererProps,
32
+ otherProps = _objectWithoutPropertiesLoose(rendererProps, _excluded);
33
+ const finalProps = _extends({}, otherProps, {
34
+ focusedView: null,
35
+ sx: [{
36
+ [`&.${multiSectionDigitalClockClasses.root}`]: {
37
+ borderBottom: 0
38
+ },
39
+ [`&.${multiSectionDigitalClockClasses.root}, .${multiSectionDigitalClockSectionClasses.root}, &.${digitalClockClasses.root}`]: {
40
+ maxHeight: VIEW_HEIGHT
41
+ }
42
+ }]
43
+ });
44
+ const isTimeViewActive = isInternalTimeView(popperView);
45
+ return /*#__PURE__*/_jsxs(React.Fragment, {
46
+ children: [inViewRenderers[!isTimeViewActive ? popperView : 'day']?.(_extends({}, rendererProps, {
47
+ view: !isTimeViewActive ? popperView : 'day',
48
+ focusedView: focusedView && isDatePickerView(focusedView) ? focusedView : null,
49
+ views: rendererProps.views.filter(isDatePickerView)
50
+ })), timeViewsCount > 0 && /*#__PURE__*/_jsxs(React.Fragment, {
51
+ children: [/*#__PURE__*/_jsx(Divider, {
52
+ orientation: "vertical"
53
+ }), inViewRenderers[isTimeViewActive ? popperView : 'hours']?.(_extends({}, finalProps, {
54
+ view: isTimeViewActive ? popperView : 'hours',
55
+ focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
56
+ openTo: isInternalTimeView(openTo) ? openTo : 'hours',
57
+ views: rendererProps.views.filter(isInternalTimeView)
58
+ }))]
59
+ })]
60
+ });
61
+ };
17
62
  /**
18
63
  * Demos:
19
64
  *
@@ -25,7 +70,6 @@ import { resolveDateTimeFormat, resolveTimeViewsResponse } from '../internals/ut
25
70
  * - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)
26
71
  */
27
72
  const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {
28
- var _defaultizedProps$amp, _defaultizedProps$yea, _defaultizedProps$slo2, _defaultizedProps$slo3, _defaultizedProps$slo4, _props$localeText$ope, _props$localeText;
29
73
  const localeText = useLocaleText();
30
74
  const utils = useUtils();
31
75
 
@@ -34,65 +78,55 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
34
78
  const {
35
79
  shouldRenderTimeInASingleColumn,
36
80
  thresholdToRenderTimeInASingleColumn,
37
- views,
81
+ views: resolvedViews,
38
82
  timeSteps
39
83
  } = resolveTimeViewsResponse(defaultizedProps);
40
- const shouldUseNewRenderer = !defaultizedProps.viewRenderers || Object.keys(defaultizedProps.viewRenderers).length === 0;
41
- const viewRenderers =
42
- // we can only ensure the expected two-column layout if none of the renderers are overridden
43
- shouldUseNewRenderer ? {
44
- day: renderDesktopDateTimeView,
45
- month: renderDesktopDateTimeView,
46
- year: renderDesktopDateTimeView,
47
- hours: renderDesktopDateTimeView,
48
- minutes: renderDesktopDateTimeView,
49
- seconds: renderDesktopDateTimeView,
50
- meridiem: renderDesktopDateTimeView
51
- } : _extends({
84
+ const renderTimeView = shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
85
+ const viewRenderers = _extends({
52
86
  day: renderDateViewCalendar,
53
87
  month: renderDateViewCalendar,
54
88
  year: renderDateViewCalendar,
55
- hours: null,
56
- minutes: null,
57
- seconds: null,
58
- meridiem: null
89
+ hours: renderTimeView,
90
+ minutes: renderTimeView,
91
+ seconds: renderTimeView,
92
+ meridiem: renderTimeView
59
93
  }, defaultizedProps.viewRenderers);
60
- const ampmInClock = (_defaultizedProps$amp = defaultizedProps.ampmInClock) != null ? _defaultizedProps$amp : true;
61
- // add "accept" action only when the new date time view renderers are used
62
- const actionBarActions = shouldUseNewRenderer ? ['accept'] : [];
94
+ const ampmInClock = defaultizedProps.ampmInClock ?? true;
95
+ // Need to avoid adding the `meridiem` view when unexpected renderer is specified
96
+ const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
97
+ const views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(view => view !== 'meridiem') : resolvedViews;
98
+ const actionBarActions = shouldRenderTimeInASingleColumn ? [] : ['accept'];
63
99
 
64
100
  // Props with the default values specific to the desktop variant
65
101
  const props = _extends({}, defaultizedProps, {
66
102
  viewRenderers,
67
103
  format: resolveDateTimeFormat(utils, defaultizedProps),
68
104
  views,
69
- yearsPerRow: (_defaultizedProps$yea = defaultizedProps.yearsPerRow) != null ? _defaultizedProps$yea : 4,
105
+ yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
70
106
  ampmInClock,
71
107
  timeSteps,
72
108
  thresholdToRenderTimeInASingleColumn,
73
109
  shouldRenderTimeInASingleColumn,
74
110
  slots: _extends({
75
111
  field: DateTimeField,
112
+ layout: DesktopDateTimePickerLayout,
76
113
  openPickerIcon: CalendarIcon
77
114
  }, defaultizedProps.slots),
78
115
  slotProps: _extends({}, defaultizedProps.slotProps, {
79
- field: ownerState => {
80
- var _defaultizedProps$slo;
81
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
82
- ref
83
- });
84
- },
116
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
117
+ ref
118
+ }),
85
119
  toolbar: _extends({
86
120
  hidden: true,
87
121
  ampmInClock,
88
- toolbarVariant: shouldUseNewRenderer ? 'desktop' : 'mobile'
89
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.toolbar),
122
+ toolbarVariant: 'desktop'
123
+ }, defaultizedProps.slotProps?.toolbar),
90
124
  tabs: _extends({
91
125
  hidden: true
92
- }, (_defaultizedProps$slo3 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo3.tabs),
93
- actionBar: _extends({
126
+ }, defaultizedProps.slotProps?.tabs),
127
+ actionBar: ownerState => _extends({
94
128
  actions: actionBarActions
95
- }, (_defaultizedProps$slo4 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo4.actionBar)
129
+ }, resolveComponentProps(defaultizedProps.slotProps?.actionBar, ownerState))
96
130
  })
97
131
  });
98
132
  const {
@@ -101,8 +135,9 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
101
135
  props,
102
136
  valueManager: singleItemValueManager,
103
137
  valueType: 'date-time',
104
- getOpenDialogAriaText: (_props$localeText$ope = (_props$localeText = props.localeText) == null ? void 0 : _props$localeText.openDatePickerDialogue) != null ? _props$localeText$ope : localeText.openDatePickerDialogue,
105
- validator: validateDateTime
138
+ getOpenDialogAriaText: props.localeText?.openDatePickerDialogue ?? localeText.openDatePickerDialogue,
139
+ validator: validateDateTime,
140
+ rendererInterceptor
106
141
  });
107
142
  return renderPicker();
108
143
  });
@@ -361,7 +396,7 @@ DesktopDateTimePicker.propTypes = {
361
396
  /**
362
397
  * Disable specific date.
363
398
  *
364
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
399
+ * 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.
365
400
  *
366
401
  * @template TDate
367
402
  * @param {TDate} day The date to test.
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { PickersLayoutProps } from '../PickersLayout';
3
+ import { PickerValidDate } from '../models';
4
+ import { DateOrTimeViewWithMeridiem } from '../internals';
5
+ /**
6
+ * @ignore - internal component.
7
+ */
8
+ declare function DesktopDateTimePickerLayout<TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem>(props: PickersLayoutProps<TValue, TDate, TView>): React.JSX.Element;
9
+ declare namespace DesktopDateTimePickerLayout {
10
+ var propTypes: any;
11
+ }
12
+ export { DesktopDateTimePickerLayout };
@@ -0,0 +1,101 @@
1
+ import * as React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import clsx from 'clsx';
4
+ import Divider from '@mui/material/Divider';
5
+ import { PickersLayoutContentWrapper, PickersLayoutRoot, pickersLayoutClasses, usePickerLayout } from '../PickersLayout';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ import { jsxs as _jsxs } from "react/jsx-runtime";
8
+ /**
9
+ * @ignore - internal component.
10
+ */
11
+ function DesktopDateTimePickerLayout(props) {
12
+ const {
13
+ toolbar,
14
+ tabs,
15
+ content,
16
+ actionBar,
17
+ shortcuts
18
+ } = usePickerLayout(props);
19
+ const {
20
+ sx,
21
+ className,
22
+ isLandscape,
23
+ ref
24
+ } = props;
25
+ const isActionBarVisible = actionBar && (actionBar.props.actions?.length ?? 0) > 0;
26
+ return /*#__PURE__*/_jsxs(PickersLayoutRoot, {
27
+ ref: ref,
28
+ className: clsx(className, pickersLayoutClasses.root),
29
+ sx: [{
30
+ [`& .${pickersLayoutClasses.tabs}`]: {
31
+ gridRow: 4,
32
+ gridColumn: '1 / 4'
33
+ },
34
+ [`& .${pickersLayoutClasses.actionBar}`]: {
35
+ gridRow: 5
36
+ }
37
+ }, ...(Array.isArray(sx) ? sx : [sx])],
38
+ ownerState: props,
39
+ children: [isLandscape ? shortcuts : toolbar, isLandscape ? toolbar : shortcuts, /*#__PURE__*/_jsxs(PickersLayoutContentWrapper, {
40
+ className: pickersLayoutClasses.contentWrapper,
41
+ sx: {
42
+ display: 'grid'
43
+ },
44
+ children: [content, tabs, isActionBarVisible && /*#__PURE__*/_jsx(Divider, {
45
+ sx: {
46
+ gridRow: 3,
47
+ gridColumn: '1 / 4'
48
+ }
49
+ })]
50
+ }), actionBar]
51
+ });
52
+ }
53
+ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes = {
54
+ // ----------------------------- Warning --------------------------------
55
+ // | These PropTypes are generated from the TypeScript type definitions |
56
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
57
+ // ----------------------------------------------------------------------
58
+ children: PropTypes.node,
59
+ /**
60
+ * Override or extend the styles applied to the component.
61
+ */
62
+ classes: PropTypes.object,
63
+ className: PropTypes.string,
64
+ disabled: PropTypes.bool,
65
+ isLandscape: PropTypes.bool.isRequired,
66
+ isValid: PropTypes.func.isRequired,
67
+ onAccept: PropTypes.func.isRequired,
68
+ onCancel: PropTypes.func.isRequired,
69
+ onChange: PropTypes.func.isRequired,
70
+ onClear: PropTypes.func.isRequired,
71
+ onClose: PropTypes.func.isRequired,
72
+ onDismiss: PropTypes.func.isRequired,
73
+ onOpen: PropTypes.func.isRequired,
74
+ onSelectShortcut: PropTypes.func.isRequired,
75
+ onSetToday: PropTypes.func.isRequired,
76
+ onViewChange: PropTypes.func.isRequired,
77
+ /**
78
+ * Force rendering in particular orientation.
79
+ */
80
+ orientation: PropTypes.oneOf(['landscape', 'portrait']),
81
+ readOnly: PropTypes.bool,
82
+ /**
83
+ * The props used for each component slot.
84
+ * @default {}
85
+ */
86
+ slotProps: PropTypes.object,
87
+ /**
88
+ * Overridable component slots.
89
+ * @default {}
90
+ */
91
+ slots: PropTypes.object,
92
+ /**
93
+ * The system prop that allows defining system overrides as well as additional CSS styles.
94
+ */
95
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
96
+ value: PropTypes.any,
97
+ view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
98
+ views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired,
99
+ wrapperVariant: PropTypes.oneOf(['desktop', 'mobile'])
100
+ } : void 0;
101
+ export { DesktopDateTimePickerLayout };
@@ -1,2 +1,3 @@
1
1
  export { DesktopDateTimePicker } from './DesktopDateTimePicker';
2
+ export { DesktopDateTimePickerLayout } from './DesktopDateTimePickerLayout';
2
3
  export type { DesktopDateTimePickerProps, DesktopDateTimePickerSlots, DesktopDateTimePickerSlotProps, } from './DesktopDateTimePicker.types';
@@ -1 +1,2 @@
1
- export { DesktopDateTimePicker } from './DesktopDateTimePicker';
1
+ export { DesktopDateTimePicker } from './DesktopDateTimePicker';
2
+ export { DesktopDateTimePickerLayout } from './DesktopDateTimePickerLayout';
@@ -25,7 +25,6 @@ import { resolveTimeViewsResponse } from '../internals/utils/date-time-utils';
25
25
  * - [DesktopTimePicker API](https://mui.com/x/api/date-pickers/desktop-time-picker/)
26
26
  */
27
27
  const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePicker(inProps, ref) {
28
- var _defaultizedProps$amp, _viewRenderers$hours, _defaultizedProps$slo2, _defaultizedProps$slo3, _props$localeText$ope, _props$localeText;
29
28
  const localeText = useLocaleText();
30
29
  const utils = useUtils();
31
30
 
@@ -43,10 +42,10 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
43
42
  seconds: renderTimeView,
44
43
  meridiem: renderTimeView
45
44
  }, defaultizedProps.viewRenderers);
46
- const ampmInClock = (_defaultizedProps$amp = defaultizedProps.ampmInClock) != null ? _defaultizedProps$amp : true;
45
+ const ampmInClock = defaultizedProps.ampmInClock ?? true;
47
46
  const actionBarActions = shouldRenderTimeInASingleColumn ? [] : ['accept'];
48
47
  // Need to avoid adding the `meridiem` view when unexpected renderer is specified
49
- const shouldHoursRendererContainMeridiemView = ((_viewRenderers$hours = viewRenderers.hours) == null ? void 0 : _viewRenderers$hours.name) === renderMultiSectionDigitalClockTimeView.name;
48
+ const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
50
49
  const views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(view => view !== 'meridiem') : resolvedViews;
51
50
 
52
51
  // Props with the default values specific to the desktop variant
@@ -63,19 +62,16 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
63
62
  openPickerIcon: ClockIcon
64
63
  }, defaultizedProps.slots),
65
64
  slotProps: _extends({}, defaultizedProps.slotProps, {
66
- field: ownerState => {
67
- var _defaultizedProps$slo;
68
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
69
- ref
70
- });
71
- },
65
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
66
+ ref
67
+ }),
72
68
  toolbar: _extends({
73
69
  hidden: true,
74
70
  ampmInClock
75
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.toolbar),
71
+ }, defaultizedProps.slotProps?.toolbar),
76
72
  actionBar: _extends({
77
73
  actions: actionBarActions
78
- }, (_defaultizedProps$slo3 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo3.actionBar)
74
+ }, defaultizedProps.slotProps?.actionBar)
79
75
  })
80
76
  });
81
77
  const {
@@ -84,7 +80,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
84
80
  props,
85
81
  valueManager: singleItemValueManager,
86
82
  valueType: 'time',
87
- getOpenDialogAriaText: (_props$localeText$ope = (_props$localeText = props.localeText) == null ? void 0 : _props$localeText.openTimePickerDialogue) != null ? _props$localeText$ope : localeText.openTimePickerDialogue,
83
+ getOpenDialogAriaText: props.localeText?.openTimePickerDialogue ?? localeText.openTimePickerDialogue,
88
84
  validator: validateTime
89
85
  });
90
86
  return renderPicker();
@@ -36,16 +36,24 @@ const DigitalClockRoot = styled(PickerViewRoot, {
36
36
  name: 'MuiDigitalClock',
37
37
  slot: 'Root',
38
38
  overridesResolver: (props, styles) => styles.root
39
- })(({
40
- ownerState
41
- }) => ({
39
+ })({
42
40
  overflowY: 'auto',
43
41
  width: '100%',
44
42
  '@media (prefers-reduced-motion: no-preference)': {
45
- scrollBehavior: ownerState.alreadyRendered ? 'smooth' : 'auto'
43
+ scrollBehavior: 'auto'
46
44
  },
47
- maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT
48
- }));
45
+ maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT,
46
+ variants: [{
47
+ props: {
48
+ alreadyRendered: true
49
+ },
50
+ style: {
51
+ '@media (prefers-reduced-motion: no-preference)': {
52
+ scrollBehavior: 'smooth'
53
+ }
54
+ }
55
+ }]
56
+ });
49
57
  const DigitalClockList = styled(MenuList, {
50
58
  name: 'MuiDigitalClock',
51
59
  slot: 'List',
@@ -90,7 +98,6 @@ const DigitalClockItem = styled(MenuItem, {
90
98
  * - [DigitalClock API](https://mui.com/x/api/date-pickers/digital-clock/)
91
99
  */
92
100
  export const DigitalClock = /*#__PURE__*/React.forwardRef(function DigitalClock(inProps, ref) {
93
- var _slots$digitalClockIt;
94
101
  const utils = useUtils();
95
102
  const containerRef = React.useRef(null);
96
103
  const handleRef = useForkRef(ref, containerRef);
@@ -146,10 +153,10 @@ export const DigitalClock = /*#__PURE__*/React.forwardRef(function DigitalClock(
146
153
  alreadyRendered: !!containerRef.current
147
154
  }), [props]);
148
155
  const classes = useUtilityClasses(ownerState);
149
- const ClockItem = (_slots$digitalClockIt = slots == null ? void 0 : slots.digitalClockItem) != null ? _slots$digitalClockIt : DigitalClockItem;
156
+ const ClockItem = slots?.digitalClockItem ?? DigitalClockItem;
150
157
  const clockItemProps = useSlotProps({
151
158
  elementType: ClockItem,
152
- externalSlotProps: slotProps == null ? void 0 : slotProps.digitalClockItem,
159
+ externalSlotProps: slotProps?.digitalClockItem,
153
160
  ownerState: {},
154
161
  className: classes.item
155
162
  });
@@ -22,7 +22,6 @@ if (process.env.NODE_ENV !== 'production') {
22
22
  * - [LocalizationProvider API](https://mui.com/x/api/date-pickers/localization-provider/)
23
23
  */
24
24
  export const LocalizationProvider = function LocalizationProvider(inProps) {
25
- var _React$useContext;
26
25
  const {
27
26
  localeText: inLocaleText
28
27
  } = inProps,
@@ -30,7 +29,7 @@ export const LocalizationProvider = function LocalizationProvider(inProps) {
30
29
  const {
31
30
  utils: parentUtils,
32
31
  localeText: parentLocaleText
33
- } = (_React$useContext = React.useContext(MuiPickersAdapterContext)) != null ? _React$useContext : {
32
+ } = React.useContext(MuiPickersAdapterContext) ?? {
34
33
  utils: undefined,
35
34
  localeText: undefined
36
35
  };
@@ -23,7 +23,6 @@ import { resolveDateFormat } from '../internals/utils/date-utils';
23
23
  * - [MobileDatePicker API](https://mui.com/x/api/date-pickers/mobile-date-picker/)
24
24
  */
25
25
  const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker(inProps, ref) {
26
- var _defaultizedProps$slo2, _props$localeText$ope, _props$localeText;
27
26
  const localeText = useLocaleText();
28
27
  const utils = useUtils();
29
28
 
@@ -43,15 +42,12 @@ const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker
43
42
  field: DateField
44
43
  }, defaultizedProps.slots),
45
44
  slotProps: _extends({}, defaultizedProps.slotProps, {
46
- field: ownerState => {
47
- var _defaultizedProps$slo;
48
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
49
- ref
50
- });
51
- },
45
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
46
+ ref
47
+ }),
52
48
  toolbar: _extends({
53
49
  hidden: false
54
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.toolbar)
50
+ }, defaultizedProps.slotProps?.toolbar)
55
51
  })
56
52
  });
57
53
  const {
@@ -60,7 +56,7 @@ const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker
60
56
  props,
61
57
  valueManager: singleItemValueManager,
62
58
  valueType: 'date',
63
- getOpenDialogAriaText: (_props$localeText$ope = (_props$localeText = props.localeText) == null ? void 0 : _props$localeText.openDatePickerDialogue) != null ? _props$localeText$ope : localeText.openDatePickerDialogue,
59
+ getOpenDialogAriaText: props.localeText?.openDatePickerDialogue ?? localeText.openDatePickerDialogue,
64
60
  validator: validateDate
65
61
  });
66
62
  return renderPicker();
@@ -282,7 +278,7 @@ MobileDatePicker.propTypes = {
282
278
  /**
283
279
  * Disable specific date.
284
280
  *
285
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
281
+ * 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.
286
282
  *
287
283
  * @template TDate
288
284
  * @param {TDate} day The date to test.
@@ -24,7 +24,6 @@ import { resolveDateTimeFormat } from '../internals/utils/date-time-utils';
24
24
  * - [MobileDateTimePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-picker/)
25
25
  */
26
26
  const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {
27
- var _defaultizedProps$amp, _defaultizedProps$slo2, _defaultizedProps$slo3, _props$localeText$ope, _props$localeText;
28
27
  const localeText = useLocaleText();
29
28
  const utils = useUtils();
30
29
 
@@ -38,7 +37,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
38
37
  minutes: renderTimeViewClock,
39
38
  seconds: renderTimeViewClock
40
39
  }, defaultizedProps.viewRenderers);
41
- const ampmInClock = (_defaultizedProps$amp = defaultizedProps.ampmInClock) != null ? _defaultizedProps$amp : false;
40
+ const ampmInClock = defaultizedProps.ampmInClock ?? false;
42
41
 
43
42
  // Props with the default values specific to the mobile variant
44
43
  const props = _extends({}, defaultizedProps, {
@@ -49,19 +48,16 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
49
48
  field: DateTimeField
50
49
  }, defaultizedProps.slots),
51
50
  slotProps: _extends({}, defaultizedProps.slotProps, {
52
- field: ownerState => {
53
- var _defaultizedProps$slo;
54
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
55
- ref
56
- });
57
- },
51
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
52
+ ref
53
+ }),
58
54
  toolbar: _extends({
59
55
  hidden: false,
60
56
  ampmInClock
61
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.toolbar),
57
+ }, defaultizedProps.slotProps?.toolbar),
62
58
  tabs: _extends({
63
59
  hidden: false
64
- }, (_defaultizedProps$slo3 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo3.tabs)
60
+ }, defaultizedProps.slotProps?.tabs)
65
61
  })
66
62
  });
67
63
  const {
@@ -70,7 +66,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
70
66
  props,
71
67
  valueManager: singleItemValueManager,
72
68
  valueType: 'date-time',
73
- getOpenDialogAriaText: (_props$localeText$ope = (_props$localeText = props.localeText) == null ? void 0 : _props$localeText.openDatePickerDialogue) != null ? _props$localeText$ope : localeText.openDatePickerDialogue,
69
+ getOpenDialogAriaText: props.localeText?.openDatePickerDialogue ?? localeText.openDatePickerDialogue,
74
70
  validator: validateDateTime
75
71
  });
76
72
  return renderPicker();
@@ -330,7 +326,7 @@ MobileDateTimePicker.propTypes = {
330
326
  /**
331
327
  * Disable specific date.
332
328
  *
333
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
329
+ * 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.
334
330
  *
335
331
  * @template TDate
336
332
  * @param {TDate} day The date to test.
@@ -23,7 +23,6 @@ import { resolveTimeFormat } from '../internals/utils/time-utils';
23
23
  * - [MobileTimePicker API](https://mui.com/x/api/date-pickers/mobile-time-picker/)
24
24
  */
25
25
  const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker(inProps, ref) {
26
- var _defaultizedProps$amp, _defaultizedProps$slo2, _props$localeText$ope, _props$localeText;
27
26
  const localeText = useLocaleText();
28
27
  const utils = useUtils();
29
28
 
@@ -34,7 +33,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
34
33
  minutes: renderTimeViewClock,
35
34
  seconds: renderTimeViewClock
36
35
  }, defaultizedProps.viewRenderers);
37
- const ampmInClock = (_defaultizedProps$amp = defaultizedProps.ampmInClock) != null ? _defaultizedProps$amp : false;
36
+ const ampmInClock = defaultizedProps.ampmInClock ?? false;
38
37
 
39
38
  // Props with the default values specific to the mobile variant
40
39
  const props = _extends({}, defaultizedProps, {
@@ -45,16 +44,13 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
45
44
  field: TimeField
46
45
  }, defaultizedProps.slots),
47
46
  slotProps: _extends({}, defaultizedProps.slotProps, {
48
- field: ownerState => {
49
- var _defaultizedProps$slo;
50
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
51
- ref
52
- });
53
- },
47
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
48
+ ref
49
+ }),
54
50
  toolbar: _extends({
55
51
  hidden: false,
56
52
  ampmInClock
57
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.toolbar)
53
+ }, defaultizedProps.slotProps?.toolbar)
58
54
  })
59
55
  });
60
56
  const {
@@ -63,7 +59,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
63
59
  props,
64
60
  valueManager: singleItemValueManager,
65
61
  valueType: 'time',
66
- getOpenDialogAriaText: (_props$localeText$ope = (_props$localeText = props.localeText) == null ? void 0 : _props$localeText.openTimePickerDialogue) != null ? _props$localeText$ope : localeText.openTimePickerDialogue,
62
+ getOpenDialogAriaText: props.localeText?.openTimePickerDialogue ?? localeText.openTimePickerDialogue,
67
63
  validator: validateTime
68
64
  });
69
65
  return renderPicker();
@@ -124,7 +124,7 @@ export const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalenda
124
124
  name: 'MonthCalendar',
125
125
  state: 'hasFocus',
126
126
  controlled: hasFocus,
127
- default: autoFocus != null ? autoFocus : false
127
+ default: autoFocus ?? false
128
128
  });
129
129
  const changeHasFocus = useEventCallback(newHasFocus => {
130
130
  setInternalHasFocus(newHasFocus);
@@ -151,11 +151,11 @@ export const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalenda
151
151
  if (readOnly) {
152
152
  return;
153
153
  }
154
- const newDate = utils.setMonth(value != null ? value : referenceDate, month);
154
+ const newDate = utils.setMonth(value ?? referenceDate, month);
155
155
  handleValueChange(newDate);
156
156
  });
157
157
  const focusMonth = useEventCallback(month => {
158
- if (!isMonthDisabled(utils.setMonth(value != null ? value : referenceDate, month))) {
158
+ if (!isMonthDisabled(utils.setMonth(value ?? referenceDate, month))) {
159
159
  setFocusedMonth(month);
160
160
  changeHasFocus(true);
161
161
  if (onMonthFocus) {
@@ -205,7 +205,7 @@ export const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalenda
205
205
  role: "radiogroup",
206
206
  "aria-labelledby": gridLabelId
207
207
  }, other, {
208
- children: getMonthsInYear(utils, value != null ? value : referenceDate).map(month => {
208
+ children: getMonthsInYear(utils, value ?? referenceDate).map(month => {
209
209
  const monthNumber = utils.getMonth(month);
210
210
  const monthText = utils.format(month, 'monthShort');
211
211
  const monthLabel = utils.format(month, 'month');
@@ -22,14 +22,20 @@ const PickersMonthRoot = styled('div', {
22
22
  name: 'MuiPickersMonth',
23
23
  slot: 'Root',
24
24
  overridesResolver: (_, styles) => [styles.root]
25
- })(({
26
- ownerState
27
- }) => ({
28
- flexBasis: ownerState.monthsPerRow === 3 ? '33.3%' : '25%',
25
+ })({
29
26
  display: 'flex',
30
27
  alignItems: 'center',
31
- justifyContent: 'center'
32
- }));
28
+ justifyContent: 'center',
29
+ flexBasis: '33.3%',
30
+ variants: [{
31
+ props: {
32
+ monthsPerRow: 4
33
+ },
34
+ style: {
35
+ flexBasis: '25%'
36
+ }
37
+ }]
38
+ });
33
39
  const PickersMonthButton = styled('button', {
34
40
  name: 'MuiPickersMonth',
35
41
  slot: 'MonthButton',
@@ -101,8 +107,7 @@ export const PickersMonth = /*#__PURE__*/React.memo(function PickersMonth(inProp
101
107
  const classes = useUtilityClasses(props);
102
108
  useEnhancedEffect(() => {
103
109
  if (autoFocus) {
104
- var _ref$current;
105
- (_ref$current = ref.current) == null || _ref$current.focus();
110
+ ref.current?.focus();
106
111
  }
107
112
  }, [autoFocus]);
108
113
  return /*#__PURE__*/_jsx(PickersMonthRoot, _extends({