@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
@@ -23,7 +23,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
23
23
  * - [DateField API](https://mui.com/x/api/date-pickers/date-field/)
24
24
  */
25
25
  const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, inRef) {
26
- var _slots$textField;
27
26
  const themeProps = useThemeProps({
28
27
  props: inProps,
29
28
  name: 'MuiDateField'
@@ -36,10 +35,10 @@ const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, inRe
36
35
  } = themeProps,
37
36
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
38
37
  const ownerState = themeProps;
39
- const TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField;
38
+ const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
40
39
  const textFieldProps = useSlotProps({
41
40
  elementType: TextField,
42
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
41
+ externalSlotProps: slotProps?.textField,
43
42
  externalForwardedProps: other,
44
43
  additionalProps: {
45
44
  ref: inRef
@@ -242,7 +241,7 @@ process.env.NODE_ENV !== "production" ? DateField.propTypes = {
242
241
  /**
243
242
  * Disable specific date.
244
243
  *
245
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
244
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
246
245
  *
247
246
  * @template TDate
248
247
  * @param {TDate} day The date to test.
@@ -266,7 +266,7 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
266
266
  /**
267
267
  * Disable specific date.
268
268
  *
269
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
269
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
270
270
  *
271
271
  * @template TDate
272
272
  * @param {TDate} day The date to test.
@@ -1,5 +1,5 @@
1
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["value", "isLandscape", "onChange", "toolbarFormat", "toolbarPlaceholder", "views", "className", "onViewChange", "view"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
@@ -31,11 +31,16 @@ const DatePickerToolbarTitle = styled(Typography, {
31
31
  name: 'MuiDatePickerToolbar',
32
32
  slot: 'Title',
33
33
  overridesResolver: (_, styles) => styles.title
34
- })(({
35
- ownerState
36
- }) => _extends({}, ownerState.isLandscape && {
37
- margin: 'auto 16px auto auto'
38
- }));
34
+ })({
35
+ variants: [{
36
+ props: {
37
+ isLandscape: true
38
+ },
39
+ style: {
40
+ margin: 'auto 16px auto auto'
41
+ }
42
+ }]
43
+ });
39
44
  /**
40
45
  * Demos:
41
46
  *
@@ -18,6 +18,7 @@ export interface BaseDatePickerSlots<TDate extends PickerValidDate> extends Date
18
18
  export interface BaseDatePickerSlotProps<TDate extends PickerValidDate> extends DateCalendarSlotProps<TDate> {
19
19
  toolbar?: ExportedDatePickerToolbarProps;
20
20
  }
21
+ export type DatePickerViewRenderers<TDate extends PickerValidDate, TView extends DateView, TAdditionalProps extends {} = {}> = PickerViewRendererLookup<TDate | null, TView, DateViewRendererProps<TDate, TView>, TAdditionalProps>;
21
22
  export interface BaseDatePickerProps<TDate extends PickerValidDate> extends BasePickerInputProps<TDate | null, TDate, DateView, DateValidationError>, ExportedDateCalendarProps<TDate> {
22
23
  /**
23
24
  * Overridable component slots.
@@ -34,7 +35,7 @@ export interface BaseDatePickerProps<TDate extends PickerValidDate> extends Base
34
35
  * If `null`, the section will only have field editing.
35
36
  * If `undefined`, internally defined view will be the used.
36
37
  */
37
- viewRenderers?: Partial<PickerViewRendererLookup<TDate | null, DateView, DateViewRendererProps<TDate, DateView>, {}>>;
38
+ viewRenderers?: Partial<DatePickerViewRenderers<TDate, DateView>>;
38
39
  }
39
40
  type UseDatePickerDefaultizedProps<TDate extends PickerValidDate, Props extends BaseDatePickerProps<TDate>> = LocalizedComponent<TDate, DefaultizedProps<Props, 'views' | 'openTo' | keyof BaseDateValidationProps<TDate>>>;
40
41
  export declare function useDatePickerDefaultizedProps<TDate extends PickerValidDate, Props extends BaseDatePickerProps<TDate>>(props: Props, name: string): UseDatePickerDefaultizedProps<TDate, Props>;
@@ -6,7 +6,6 @@ import { applyDefaultViewProps } from '../internals/utils/views';
6
6
  import { applyDefaultDate } from '../internals/utils/date-utils';
7
7
  import { DatePickerToolbar } from './DatePickerToolbar';
8
8
  export function useDatePickerDefaultizedProps(props, name) {
9
- var _themeProps$disableFu, _themeProps$disablePa;
10
9
  const utils = useUtils();
11
10
  const defaultDates = useDefaultDates();
12
11
  const themeProps = useThemeProps({
@@ -14,8 +13,7 @@ export function useDatePickerDefaultizedProps(props, name) {
14
13
  name
15
14
  });
16
15
  const localeText = React.useMemo(() => {
17
- var _themeProps$localeTex;
18
- if (((_themeProps$localeTex = themeProps.localeText) == null ? void 0 : _themeProps$localeTex.toolbarTitle) == null) {
16
+ if (themeProps.localeText?.toolbarTitle == null) {
19
17
  return themeProps.localeText;
20
18
  }
21
19
  return _extends({}, themeProps.localeText, {
@@ -30,8 +28,8 @@ export function useDatePickerDefaultizedProps(props, name) {
30
28
  defaultViews: ['year', 'day'],
31
29
  defaultOpenTo: 'day'
32
30
  }), {
33
- disableFuture: (_themeProps$disableFu = themeProps.disableFuture) != null ? _themeProps$disableFu : false,
34
- disablePast: (_themeProps$disablePa = themeProps.disablePast) != null ? _themeProps$disablePa : false,
31
+ disableFuture: themeProps.disableFuture ?? false,
32
+ disablePast: themeProps.disablePast ?? false,
35
33
  minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),
36
34
  maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate),
37
35
  slots: _extends({
@@ -23,7 +23,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
23
23
  * - [DateTimeField API](https://mui.com/x/api/date-pickers/date-time-field/)
24
24
  */
25
25
  const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, inRef) {
26
- var _slots$textField;
27
26
  const themeProps = useThemeProps({
28
27
  props: inProps,
29
28
  name: 'MuiDateTimeField'
@@ -36,10 +35,10 @@ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inPro
36
35
  } = themeProps,
37
36
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
38
37
  const ownerState = themeProps;
39
- const TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField;
38
+ const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
40
39
  const textFieldProps = useSlotProps({
41
40
  elementType: TextField,
42
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
41
+ externalSlotProps: slotProps?.textField,
43
42
  externalForwardedProps: other,
44
43
  ownerState,
45
44
  additionalProps: {
@@ -275,7 +274,7 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
275
274
  /**
276
275
  * Disable specific date.
277
276
  *
278
- * 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.
277
+ * 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.
279
278
  *
280
279
  * @template TDate
281
280
  * @param {TDate} day The date to test.
@@ -304,7 +304,7 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
304
304
  /**
305
305
  * Disable specific date.
306
306
  *
307
- * 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.
307
+ * 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.
308
308
  *
309
309
  * @template TDate
310
310
  * @param {TDate} day The date to test.
@@ -40,20 +40,41 @@ const DateTimePickerToolbarRoot = styled(PickersToolbar, {
40
40
  slot: 'Root',
41
41
  overridesResolver: (props, styles) => styles.root
42
42
  })(({
43
- theme,
44
- ownerState
45
- }) => _extends({
46
- paddingLeft: ownerState.toolbarVariant === 'desktop' && !ownerState.isLandscape ? 24 : 16,
47
- paddingRight: ownerState.toolbarVariant === 'desktop' && !ownerState.isLandscape ? 0 : 16,
48
- borderBottom: ownerState.toolbarVariant === 'desktop' ? `1px solid ${(theme.vars || theme).palette.divider}` : undefined,
49
- borderRight: ownerState.toolbarVariant === 'desktop' && ownerState.isLandscape ? `1px solid ${(theme.vars || theme).palette.divider}` : undefined,
43
+ theme
44
+ }) => ({
45
+ paddingLeft: 16,
46
+ paddingRight: 16,
50
47
  justifyContent: 'space-around',
51
- position: 'relative'
52
- }, ownerState.toolbarVariant === 'desktop' && {
53
- [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.selected}`]: {
54
- color: (theme.vars || theme).palette.primary.main,
55
- fontWeight: theme.typography.fontWeightBold
56
- }
48
+ position: 'relative',
49
+ variants: [{
50
+ props: {
51
+ toolbarVariant: 'desktop'
52
+ },
53
+ style: {
54
+ borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,
55
+ [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.selected}`]: {
56
+ color: (theme.vars || theme).palette.primary.main,
57
+ fontWeight: theme.typography.fontWeightBold
58
+ }
59
+ }
60
+ }, {
61
+ props: {
62
+ toolbarVariant: 'desktop',
63
+ isLandscape: true
64
+ },
65
+ style: {
66
+ borderRight: `1px solid ${(theme.vars || theme).palette.divider}`
67
+ }
68
+ }, {
69
+ props: {
70
+ toolbarVariant: 'desktop',
71
+ isLandscape: false
72
+ },
73
+ style: {
74
+ paddingLeft: 24,
75
+ paddingRight: 0
76
+ }
77
+ }]
57
78
  }));
58
79
  DateTimePickerToolbarRoot.propTypes = {
59
80
  // ----------------------------- Warning --------------------------------
@@ -86,19 +107,35 @@ const DateTimePickerToolbarTimeContainer = styled('div', {
86
107
  slot: 'TimeContainer',
87
108
  overridesResolver: (props, styles) => styles.timeContainer
88
109
  })(({
89
- theme,
90
- ownerState
110
+ theme
91
111
  }) => {
92
- const direction = ownerState.isLandscape && ownerState.toolbarVariant !== 'desktop' ? 'column' : 'row';
93
112
  return _extends({
94
113
  display: 'flex',
95
- flexDirection: direction
96
- }, ownerState.toolbarVariant === 'desktop' && _extends({}, !ownerState.isLandscape && {
97
- gap: 9,
98
- marginRight: 4,
99
- alignSelf: 'flex-end'
100
- }), theme.direction === 'rtl' && {
101
- flexDirection: `${direction}-reverse`
114
+ flexDirection: 'row'
115
+ }, theme.direction === 'rtl' && {
116
+ flexDirection: 'row-reverse'
117
+ }, {
118
+ variants: [{
119
+ props: ({
120
+ isLandscape,
121
+ toolbarVariant
122
+ }) => isLandscape && toolbarVariant !== 'desktop',
123
+ style: _extends({
124
+ flexDirection: 'column'
125
+ }, theme.direction === 'rtl' && {
126
+ flexDirection: 'column-reverse'
127
+ })
128
+ }, {
129
+ props: {
130
+ toolbarVariant: 'desktop',
131
+ isLandscape: false
132
+ },
133
+ style: {
134
+ gap: 9,
135
+ marginRight: 4,
136
+ alignSelf: 'flex-end'
137
+ }
138
+ }]
102
139
  });
103
140
  });
104
141
  const DateTimePickerToolbarTimeDigitsContainer = styled('div', {
@@ -106,14 +143,20 @@ const DateTimePickerToolbarTimeDigitsContainer = styled('div', {
106
143
  slot: 'TimeDigitsContainer',
107
144
  overridesResolver: (props, styles) => styles.timeDigitsContainer
108
145
  })(({
109
- theme,
110
- ownerState
146
+ theme
111
147
  }) => _extends({
112
148
  display: 'flex'
113
- }, ownerState.toolbarVariant === 'desktop' && {
114
- gap: 1.5
115
149
  }, theme.direction === 'rtl' && {
116
150
  flexDirection: 'row-reverse'
151
+ }, {
152
+ variants: [{
153
+ props: {
154
+ toolbarVariant: 'desktop'
155
+ },
156
+ style: {
157
+ gap: 1.5
158
+ }
159
+ }]
117
160
  }));
118
161
  DateTimePickerToolbarTimeContainer.propTypes = {
119
162
  // ----------------------------- Warning --------------------------------
@@ -128,12 +171,18 @@ const DateTimePickerToolbarSeparator = styled(PickersToolbarText, {
128
171
  name: 'MuiDateTimePickerToolbar',
129
172
  slot: 'Separator',
130
173
  overridesResolver: (props, styles) => styles.separator
131
- })(({
132
- ownerState
133
- }) => ({
134
- margin: ownerState.toolbarVariant === 'desktop' ? 0 : '0 4px 0 2px',
135
- cursor: 'default'
136
- }));
174
+ })({
175
+ margin: '0 4px 0 2px',
176
+ cursor: 'default',
177
+ variants: [{
178
+ props: {
179
+ toolbarVariant: 'desktop'
180
+ },
181
+ style: {
182
+ margin: 0
183
+ }
184
+ }]
185
+ });
137
186
 
138
187
  // Taken from TimePickerToolbar
139
188
  const DateTimePickerToolbarAmPmSelection = styled('div', {
@@ -144,23 +193,26 @@ const DateTimePickerToolbarAmPmSelection = styled('div', {
144
193
  }, {
145
194
  [`&.${dateTimePickerToolbarClasses.ampmLandscape}`]: styles.ampmLandscape
146
195
  }, styles.ampmSelection]
147
- })(({
148
- ownerState
149
- }) => _extends({
196
+ })({
150
197
  display: 'flex',
151
198
  flexDirection: 'column',
152
199
  marginRight: 'auto',
153
- marginLeft: 12
154
- }, ownerState.isLandscape && {
155
- margin: '4px 0 auto',
156
- flexDirection: 'row',
157
- justifyContent: 'space-around',
158
- width: '100%'
159
- }, {
200
+ marginLeft: 12,
160
201
  [`& .${dateTimePickerToolbarClasses.ampmLabel}`]: {
161
202
  fontSize: 17
162
- }
163
- }));
203
+ },
204
+ variants: [{
205
+ props: {
206
+ isLandscape: true
207
+ },
208
+ style: {
209
+ margin: '4px 0 auto',
210
+ flexDirection: 'row',
211
+ justifyContent: 'space-around',
212
+ width: '100%'
213
+ }
214
+ }]
215
+ });
164
216
 
165
217
  /**
166
218
  * Demos:
@@ -208,7 +260,7 @@ function DateTimePickerToolbar(inProps) {
208
260
  const classes = useUtilityClasses(_extends({}, ownerState, {
209
261
  theme
210
262
  }));
211
- const toolbarTitle = inToolbarTitle != null ? inToolbarTitle : localeText.dateTimePickerToolbarTitle;
263
+ const toolbarTitle = inToolbarTitle ?? localeText.dateTimePickerToolbarTitle;
212
264
  const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');
213
265
  const dateText = React.useMemo(() => {
214
266
  if (!value) {
@@ -35,6 +35,7 @@ export interface BaseDateTimePickerSlotProps<TDate extends PickerValidDate> exte
35
35
  */
36
36
  toolbar?: ExportedDateTimePickerToolbarProps;
37
37
  }
38
+ export type DateTimePickerViewRenderers<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TAdditionalProps extends {} = {}> = PickerViewRendererLookup<TDate | null, TView, Omit<DateViewRendererProps<TDate, TView>, 'slots' | 'slotProps'> & Omit<TimeViewRendererProps<TimeViewWithMeridiem, BaseClockProps<TDate, TimeViewWithMeridiem>>, 'slots' | 'slotProps'>, TAdditionalProps>;
38
39
  export interface BaseDateTimePickerProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem> extends BasePickerInputProps<TDate | null, TDate, TView, DateTimeValidationError>, Omit<ExportedDateCalendarProps<TDate>, 'onViewChange'>, ExportedBaseClockProps<TDate>, DateTimeValidationProps<TDate> {
39
40
  /**
40
41
  * Display ampm controls under the clock (instead of in the toolbar).
@@ -56,7 +57,7 @@ export interface BaseDateTimePickerProps<TDate extends PickerValidDate, TView ex
56
57
  * If `null`, the section will only have field editing.
57
58
  * If `undefined`, internally defined view will be the used.
58
59
  */
59
- viewRenderers?: Partial<PickerViewRendererLookup<TDate | null, TView, DateViewRendererProps<TDate, TView> & TimeViewRendererProps<TimeViewWithMeridiem, BaseClockProps<TDate, TimeViewWithMeridiem>>, {}>>;
60
+ viewRenderers?: Partial<DateTimePickerViewRenderers<TDate, TView>>;
60
61
  }
61
62
  type UseDateTimePickerDefaultizedProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, Props extends BaseDateTimePickerProps<TDate, TView>> = LocalizedComponent<TDate, DefaultizedProps<Props, 'views' | 'openTo' | 'orientation' | 'ampm' | keyof BaseDateValidationProps<TDate> | keyof BaseTimeValidationProps>>;
62
63
  export declare function useDateTimePickerDefaultizedProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, Props extends BaseDateTimePickerProps<TDate, TView>>(props: Props, name: string): UseDateTimePickerDefaultizedProps<TDate, TView, Props>;
@@ -7,17 +7,15 @@ import { DateTimePickerTabs } from './DateTimePickerTabs';
7
7
  import { DateTimePickerToolbar } from './DateTimePickerToolbar';
8
8
  import { applyDefaultViewProps } from '../internals/utils/views';
9
9
  export function useDateTimePickerDefaultizedProps(props, name) {
10
- var _themeProps$ampm, _themeProps$orientati, _themeProps$disableIg, _themeProps$disableFu, _themeProps$disablePa, _themeProps$minDateTi, _themeProps$maxDateTi, _themeProps$minDateTi2, _themeProps$maxDateTi2, _themeProps$slotProps;
11
10
  const utils = useUtils();
12
11
  const defaultDates = useDefaultDates();
13
12
  const themeProps = useThemeProps({
14
13
  props,
15
14
  name
16
15
  });
17
- const ampm = (_themeProps$ampm = themeProps.ampm) != null ? _themeProps$ampm : utils.is12HourCycleInCurrentLocale();
16
+ const ampm = themeProps.ampm ?? utils.is12HourCycleInCurrentLocale();
18
17
  const localeText = React.useMemo(() => {
19
- var _themeProps$localeTex;
20
- if (((_themeProps$localeTex = themeProps.localeText) == null ? void 0 : _themeProps$localeTex.toolbarTitle) == null) {
18
+ if (themeProps.localeText?.toolbarTitle == null) {
21
19
  return themeProps.localeText;
22
20
  }
23
21
  return _extends({}, themeProps.localeText, {
@@ -32,17 +30,17 @@ export function useDateTimePickerDefaultizedProps(props, name) {
32
30
  }), {
33
31
  ampm,
34
32
  localeText,
35
- orientation: (_themeProps$orientati = themeProps.orientation) != null ? _themeProps$orientati : 'portrait',
33
+ orientation: themeProps.orientation ?? 'portrait',
36
34
  // TODO: Remove from public API
37
- disableIgnoringDatePartForTimeValidation: (_themeProps$disableIg = themeProps.disableIgnoringDatePartForTimeValidation) != null ? _themeProps$disableIg : Boolean(themeProps.minDateTime || themeProps.maxDateTime ||
35
+ disableIgnoringDatePartForTimeValidation: themeProps.disableIgnoringDatePartForTimeValidation ?? Boolean(themeProps.minDateTime || themeProps.maxDateTime ||
38
36
  // allow time clock to correctly check time validity: https://github.com/mui/mui-x/issues/8520
39
37
  themeProps.disablePast || themeProps.disableFuture),
40
- disableFuture: (_themeProps$disableFu = themeProps.disableFuture) != null ? _themeProps$disableFu : false,
41
- disablePast: (_themeProps$disablePa = themeProps.disablePast) != null ? _themeProps$disablePa : false,
42
- minDate: applyDefaultDate(utils, (_themeProps$minDateTi = themeProps.minDateTime) != null ? _themeProps$minDateTi : themeProps.minDate, defaultDates.minDate),
43
- maxDate: applyDefaultDate(utils, (_themeProps$maxDateTi = themeProps.maxDateTime) != null ? _themeProps$maxDateTi : themeProps.maxDate, defaultDates.maxDate),
44
- minTime: (_themeProps$minDateTi2 = themeProps.minDateTime) != null ? _themeProps$minDateTi2 : themeProps.minTime,
45
- maxTime: (_themeProps$maxDateTi2 = themeProps.maxDateTime) != null ? _themeProps$maxDateTi2 : themeProps.maxTime,
38
+ disableFuture: themeProps.disableFuture ?? false,
39
+ disablePast: themeProps.disablePast ?? false,
40
+ minDate: applyDefaultDate(utils, themeProps.minDateTime ?? themeProps.minDate, defaultDates.minDate),
41
+ maxDate: applyDefaultDate(utils, themeProps.maxDateTime ?? themeProps.maxDate, defaultDates.maxDate),
42
+ minTime: themeProps.minDateTime ?? themeProps.minTime,
43
+ maxTime: themeProps.maxDateTime ?? themeProps.maxTime,
46
44
  slots: _extends({
47
45
  toolbar: DateTimePickerToolbar,
48
46
  tabs: DateTimePickerTabs
@@ -50,7 +48,7 @@ export function useDateTimePickerDefaultizedProps(props, name) {
50
48
  slotProps: _extends({}, themeProps.slotProps, {
51
49
  toolbar: _extends({
52
50
  ampm
53
- }, (_themeProps$slotProps = themeProps.slotProps) == null ? void 0 : _themeProps$slotProps.toolbar)
51
+ }, themeProps.slotProps?.toolbar)
54
52
  })
55
53
  });
56
54
  }
@@ -1,5 +1,5 @@
1
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["className"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
@@ -41,13 +41,17 @@ const DayCalendarSkeletonDay = styled(Skeleton, {
41
41
  name: 'MuiDayCalendarSkeleton',
42
42
  slot: 'DaySkeleton',
43
43
  overridesResolver: (props, styles) => styles.daySkeleton
44
- })(({
45
- ownerState
46
- }) => _extends({
47
- margin: `0 ${DAY_MARGIN}px`
48
- }, ownerState.day === 0 && {
49
- visibility: 'hidden'
50
- }));
44
+ })({
45
+ margin: `0 ${DAY_MARGIN}px`,
46
+ variants: [{
47
+ props: {
48
+ day: 0
49
+ },
50
+ style: {
51
+ visibility: 'hidden'
52
+ }
53
+ }]
54
+ });
51
55
  DayCalendarSkeletonDay.propTypes = {
52
56
  // ----------------------------- Warning --------------------------------
53
57
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -24,7 +24,6 @@ import { resolveDateFormat } from '../internals/utils/date-utils';
24
24
  * - [DesktopDatePicker API](https://mui.com/x/api/date-pickers/desktop-date-picker/)
25
25
  */
26
26
  const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker(inProps, ref) {
27
- var _defaultizedProps$yea, _defaultizedProps$slo2, _props$localeText$ope, _props$localeText;
28
27
  const localeText = useLocaleText();
29
28
  const utils = useUtils();
30
29
 
@@ -40,21 +39,18 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
40
39
  const props = _extends({}, defaultizedProps, {
41
40
  viewRenderers,
42
41
  format: resolveDateFormat(utils, defaultizedProps, false),
43
- yearsPerRow: (_defaultizedProps$yea = defaultizedProps.yearsPerRow) != null ? _defaultizedProps$yea : 4,
42
+ yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
44
43
  slots: _extends({
45
44
  openPickerIcon: CalendarIcon,
46
45
  field: DateField
47
46
  }, defaultizedProps.slots),
48
47
  slotProps: _extends({}, defaultizedProps.slotProps, {
49
- field: ownerState => {
50
- var _defaultizedProps$slo;
51
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
52
- ref
53
- });
54
- },
48
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
49
+ ref
50
+ }),
55
51
  toolbar: _extends({
56
52
  hidden: true
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 DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
63
59
  props,
64
60
  valueManager: singleItemValueManager,
65
61
  valueType: 'date',
66
- getOpenDialogAriaText: (_props$localeText$ope = (_props$localeText = props.localeText) == null ? void 0 : _props$localeText.openDatePickerDialogue) != null ? _props$localeText$ope : localeText.openDatePickerDialogue,
62
+ getOpenDialogAriaText: props.localeText?.openDatePickerDialogue ?? localeText.openDatePickerDialogue,
67
63
  validator: validateDate
68
64
  });
69
65
  return renderPicker();
@@ -285,7 +281,7 @@ DesktopDatePicker.propTypes = {
285
281
  /**
286
282
  * Disable specific date.
287
283
  *
288
- * 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.
284
+ * 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.
289
285
  *
290
286
  * @template TDate
291
287
  * @param {TDate} day The date to test.