@mui/x-date-pickers 8.0.0-alpha.13 → 8.0.0-alpha.14

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 (197) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/DatePicker/shared.d.ts +1 -1
  3. package/DateTimePicker/DateTimePicker.types.d.ts +2 -2
  4. package/DateTimePicker/DateTimePickerToolbar.d.ts +1 -1
  5. package/DateTimePicker/DateTimePickerToolbar.js +1 -1
  6. package/DateTimePicker/shared.d.ts +18 -10
  7. package/DateTimePicker/shared.js +23 -2
  8. package/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -11
  9. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +4 -7
  10. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  11. package/MobileDateTimePicker/MobileDateTimePicker.d.ts +1 -2
  12. package/MobileDateTimePicker/MobileDateTimePicker.js +61 -6
  13. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +1 -3
  14. package/PickersTextField/PickersTextField.js +3 -1
  15. package/StaticDateTimePicker/StaticDateTimePicker.js +60 -6
  16. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +1 -2
  17. package/TimePicker/shared.d.ts +1 -1
  18. package/esm/DatePicker/shared.d.ts +1 -1
  19. package/esm/DateTimePicker/DateTimePicker.types.d.ts +2 -2
  20. package/esm/DateTimePicker/DateTimePickerToolbar.d.ts +1 -1
  21. package/esm/DateTimePicker/DateTimePickerToolbar.js +1 -1
  22. package/esm/DateTimePicker/shared.d.ts +18 -10
  23. package/esm/DateTimePicker/shared.js +23 -2
  24. package/esm/DesktopDateTimePicker/DesktopDateTimePicker.js +3 -12
  25. package/esm/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +4 -7
  26. package/esm/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  27. package/esm/MobileDateTimePicker/MobileDateTimePicker.d.ts +1 -2
  28. package/esm/MobileDateTimePicker/MobileDateTimePicker.js +62 -7
  29. package/esm/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +1 -3
  30. package/esm/PickersTextField/PickersTextField.js +3 -1
  31. package/esm/StaticDateTimePicker/StaticDateTimePicker.js +61 -7
  32. package/esm/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +1 -2
  33. package/esm/TimePicker/shared.d.ts +1 -1
  34. package/esm/index.js +1 -1
  35. package/esm/internals/components/PickerFieldUI.js +6 -2
  36. package/esm/internals/components/PickerPopper/PickerPopper.js +3 -3
  37. package/esm/internals/components/PickerProvider.d.ts +137 -6
  38. package/esm/internals/components/PickerProvider.js +1 -1
  39. package/esm/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +4 -7
  40. package/esm/internals/hooks/useField/useField.js +7 -8
  41. package/esm/internals/hooks/useField/useField.types.d.ts +46 -43
  42. package/esm/internals/hooks/useField/useField.utils.js +4 -1
  43. package/esm/internals/hooks/useField/useFieldCharacterEditing.js +2 -2
  44. package/esm/internals/hooks/useField/useFieldState.d.ts +2 -1
  45. package/esm/internals/hooks/useField/useFieldState.js +136 -83
  46. package/esm/internals/hooks/useField/useFieldV6TextField.js +1 -1
  47. package/esm/internals/hooks/useField/useFieldV7TextField.js +2 -1
  48. package/esm/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +4 -7
  49. package/esm/internals/hooks/useNullableFieldPrivateContext.d.ts +5 -2
  50. package/esm/internals/hooks/usePicker/hooks/useOrientation.d.ts +2 -0
  51. package/esm/internals/hooks/usePicker/hooks/useOrientation.js +34 -0
  52. package/esm/internals/hooks/usePicker/hooks/useValueAndOpenStates.d.ts +19 -0
  53. package/esm/internals/hooks/usePicker/hooks/useValueAndOpenStates.js +210 -0
  54. package/esm/internals/hooks/usePicker/index.d.ts +1 -3
  55. package/esm/internals/hooks/usePicker/usePicker.d.ts +5 -5
  56. package/esm/internals/hooks/usePicker/usePicker.js +276 -34
  57. package/esm/internals/hooks/usePicker/usePicker.types.d.ts +181 -9
  58. package/esm/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +3 -4
  59. package/esm/internals/hooks/useValueWithTimezone.d.ts +1 -1
  60. package/esm/internals/index.d.ts +3 -6
  61. package/esm/internals/models/manager.d.ts +108 -4
  62. package/esm/internals/models/props/basePickerProps.d.ts +2 -2
  63. package/esm/internals/models/props/time.d.ts +1 -1
  64. package/esm/internals/utils/date-time-utils.d.ts +2 -2
  65. package/esm/internals/utils/valueManagers.d.ts +1 -1
  66. package/esm/internals/utils/valueManagers.js +10 -18
  67. package/esm/managers/useDateManager.d.ts +3 -4
  68. package/esm/managers/useDateTimeManager.d.ts +3 -4
  69. package/esm/managers/useTimeManager.d.ts +3 -4
  70. package/esm/models/adapters.d.ts +2 -1
  71. package/esm/models/manager.d.ts +4 -5
  72. package/esm/validation/useValidation.d.ts +1 -1
  73. package/index.js +1 -1
  74. package/internals/components/PickerFieldUI.js +6 -2
  75. package/internals/components/PickerPopper/PickerPopper.js +3 -3
  76. package/internals/components/PickerProvider.d.ts +137 -6
  77. package/internals/components/PickerProvider.js +1 -1
  78. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +4 -7
  79. package/internals/hooks/useField/useField.js +7 -8
  80. package/internals/hooks/useField/useField.types.d.ts +46 -43
  81. package/internals/hooks/useField/useField.utils.js +4 -1
  82. package/internals/hooks/useField/useFieldCharacterEditing.js +2 -2
  83. package/internals/hooks/useField/useFieldState.d.ts +2 -1
  84. package/internals/hooks/useField/useFieldState.js +135 -82
  85. package/internals/hooks/useField/useFieldV6TextField.js +1 -1
  86. package/internals/hooks/useField/useFieldV7TextField.js +2 -1
  87. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +4 -7
  88. package/internals/hooks/useNullableFieldPrivateContext.d.ts +5 -2
  89. package/internals/hooks/usePicker/hooks/useOrientation.d.ts +2 -0
  90. package/internals/hooks/usePicker/hooks/useOrientation.js +42 -0
  91. package/internals/hooks/usePicker/hooks/useValueAndOpenStates.d.ts +19 -0
  92. package/internals/hooks/usePicker/{usePickerValue.js → hooks/useValueAndOpenStates.js} +97 -114
  93. package/internals/hooks/usePicker/index.d.ts +1 -3
  94. package/internals/hooks/usePicker/usePicker.d.ts +5 -5
  95. package/internals/hooks/usePicker/usePicker.js +278 -34
  96. package/internals/hooks/usePicker/usePicker.types.d.ts +181 -9
  97. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +3 -4
  98. package/internals/hooks/useValueWithTimezone.d.ts +1 -1
  99. package/internals/index.d.ts +3 -6
  100. package/internals/models/manager.d.ts +108 -4
  101. package/internals/models/props/basePickerProps.d.ts +2 -2
  102. package/internals/models/props/time.d.ts +1 -1
  103. package/internals/utils/date-time-utils.d.ts +2 -2
  104. package/internals/utils/valueManagers.d.ts +1 -1
  105. package/internals/utils/valueManagers.js +10 -18
  106. package/managers/useDateManager.d.ts +3 -4
  107. package/managers/useDateTimeManager.d.ts +3 -4
  108. package/managers/useTimeManager.d.ts +3 -4
  109. package/models/adapters.d.ts +2 -1
  110. package/models/manager.d.ts +4 -5
  111. package/modern/DatePicker/shared.d.ts +1 -1
  112. package/modern/DateTimePicker/DateTimePicker.types.d.ts +2 -2
  113. package/modern/DateTimePicker/DateTimePickerToolbar.d.ts +1 -1
  114. package/modern/DateTimePicker/DateTimePickerToolbar.js +1 -1
  115. package/modern/DateTimePicker/shared.d.ts +18 -10
  116. package/modern/DateTimePicker/shared.js +23 -2
  117. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +3 -12
  118. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +4 -7
  119. package/modern/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  120. package/modern/MobileDateTimePicker/MobileDateTimePicker.d.ts +1 -2
  121. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +62 -7
  122. package/modern/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +1 -3
  123. package/modern/PickersTextField/PickersTextField.js +3 -1
  124. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +61 -7
  125. package/modern/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +1 -2
  126. package/modern/TimePicker/shared.d.ts +1 -1
  127. package/modern/index.js +1 -1
  128. package/modern/internals/components/PickerFieldUI.js +6 -2
  129. package/modern/internals/components/PickerPopper/PickerPopper.js +3 -3
  130. package/modern/internals/components/PickerProvider.d.ts +137 -6
  131. package/modern/internals/components/PickerProvider.js +1 -1
  132. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +4 -7
  133. package/modern/internals/hooks/useField/useField.js +7 -8
  134. package/modern/internals/hooks/useField/useField.types.d.ts +46 -43
  135. package/modern/internals/hooks/useField/useField.utils.js +4 -1
  136. package/modern/internals/hooks/useField/useFieldCharacterEditing.js +2 -2
  137. package/modern/internals/hooks/useField/useFieldState.d.ts +2 -1
  138. package/modern/internals/hooks/useField/useFieldState.js +136 -83
  139. package/modern/internals/hooks/useField/useFieldV6TextField.js +1 -1
  140. package/modern/internals/hooks/useField/useFieldV7TextField.js +2 -1
  141. package/modern/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +4 -7
  142. package/modern/internals/hooks/useNullableFieldPrivateContext.d.ts +5 -2
  143. package/modern/internals/hooks/usePicker/hooks/useOrientation.d.ts +2 -0
  144. package/modern/internals/hooks/usePicker/hooks/useOrientation.js +34 -0
  145. package/modern/internals/hooks/usePicker/hooks/useValueAndOpenStates.d.ts +19 -0
  146. package/modern/internals/hooks/usePicker/hooks/useValueAndOpenStates.js +210 -0
  147. package/modern/internals/hooks/usePicker/index.d.ts +1 -3
  148. package/modern/internals/hooks/usePicker/usePicker.d.ts +5 -5
  149. package/modern/internals/hooks/usePicker/usePicker.js +276 -34
  150. package/modern/internals/hooks/usePicker/usePicker.types.d.ts +181 -9
  151. package/modern/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +3 -4
  152. package/modern/internals/hooks/useValueWithTimezone.d.ts +1 -1
  153. package/modern/internals/index.d.ts +3 -6
  154. package/modern/internals/models/manager.d.ts +108 -4
  155. package/modern/internals/models/props/basePickerProps.d.ts +2 -2
  156. package/modern/internals/models/props/time.d.ts +1 -1
  157. package/modern/internals/utils/date-time-utils.d.ts +2 -2
  158. package/modern/internals/utils/valueManagers.d.ts +1 -1
  159. package/modern/internals/utils/valueManagers.js +10 -18
  160. package/modern/managers/useDateManager.d.ts +3 -4
  161. package/modern/managers/useDateTimeManager.d.ts +3 -4
  162. package/modern/managers/useTimeManager.d.ts +3 -4
  163. package/modern/models/adapters.d.ts +2 -1
  164. package/modern/models/manager.d.ts +4 -5
  165. package/modern/validation/useValidation.d.ts +1 -1
  166. package/package.json +1 -1
  167. package/tsconfig.build.tsbuildinfo +1 -1
  168. package/validation/useValidation.d.ts +1 -1
  169. package/esm/internals/hooks/useOpenState.d.ts +0 -14
  170. package/esm/internals/hooks/useOpenState.js +0 -37
  171. package/esm/internals/hooks/usePicker/usePickerProvider.d.ts +0 -65
  172. package/esm/internals/hooks/usePicker/usePickerProvider.js +0 -125
  173. package/esm/internals/hooks/usePicker/usePickerValue.d.ts +0 -12
  174. package/esm/internals/hooks/usePicker/usePickerValue.js +0 -226
  175. package/esm/internals/hooks/usePicker/usePickerValue.types.d.ts +0 -327
  176. package/esm/internals/hooks/usePicker/usePickerValue.types.js +0 -1
  177. package/esm/internals/hooks/usePicker/usePickerViews.d.ts +0 -137
  178. package/esm/internals/hooks/usePicker/usePickerViews.js +0 -188
  179. package/internals/hooks/useOpenState.d.ts +0 -14
  180. package/internals/hooks/useOpenState.js +0 -46
  181. package/internals/hooks/usePicker/usePickerProvider.d.ts +0 -65
  182. package/internals/hooks/usePicker/usePickerProvider.js +0 -135
  183. package/internals/hooks/usePicker/usePickerValue.d.ts +0 -12
  184. package/internals/hooks/usePicker/usePickerValue.types.d.ts +0 -327
  185. package/internals/hooks/usePicker/usePickerValue.types.js +0 -5
  186. package/internals/hooks/usePicker/usePickerViews.d.ts +0 -137
  187. package/internals/hooks/usePicker/usePickerViews.js +0 -195
  188. package/modern/internals/hooks/useOpenState.d.ts +0 -14
  189. package/modern/internals/hooks/useOpenState.js +0 -37
  190. package/modern/internals/hooks/usePicker/usePickerProvider.d.ts +0 -65
  191. package/modern/internals/hooks/usePicker/usePickerProvider.js +0 -125
  192. package/modern/internals/hooks/usePicker/usePickerValue.d.ts +0 -12
  193. package/modern/internals/hooks/usePicker/usePickerValue.js +0 -226
  194. package/modern/internals/hooks/usePicker/usePickerValue.types.d.ts +0 -327
  195. package/modern/internals/hooks/usePicker/usePickerValue.types.js +0 -1
  196. package/modern/internals/hooks/usePicker/usePickerViews.d.ts +0 -137
  197. package/modern/internals/hooks/usePicker/usePickerViews.js +0 -188
@@ -1,11 +1,11 @@
1
1
  import { DesktopDateTimePickerProps, DesktopDateTimePickerSlots, DesktopDateTimePickerSlotProps } from "../DesktopDateTimePicker/index.js";
2
- import { BaseSingleInputFieldProps, DateOrTimeViewWithMeridiem } from "../internals/models/index.js";
2
+ import { BaseSingleInputFieldProps } from "../internals/models/index.js";
3
3
  import { MobileDateTimePickerProps, MobileDateTimePickerSlots, MobileDateTimePickerSlotProps } from "../MobileDateTimePicker/index.js";
4
4
  import { ValidateDateTimeProps } from "../validation/index.js";
5
5
  import { ExportedYearCalendarProps } from "../YearCalendar/YearCalendar.types.js";
6
6
  export interface DateTimePickerSlots extends DesktopDateTimePickerSlots, MobileDateTimePickerSlots {}
7
7
  export interface DateTimePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends DesktopDateTimePickerSlotProps<TEnableAccessibleFieldDOMStructure>, MobileDateTimePickerSlotProps<TEnableAccessibleFieldDOMStructure> {}
8
- export interface DateTimePickerProps<TEnableAccessibleFieldDOMStructure extends boolean = true> extends DesktopDateTimePickerProps<TEnableAccessibleFieldDOMStructure>, ExportedYearCalendarProps, Omit<MobileDateTimePickerProps<DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure>, 'views'> {
8
+ export interface DateTimePickerProps<TEnableAccessibleFieldDOMStructure extends boolean = true> extends DesktopDateTimePickerProps<TEnableAccessibleFieldDOMStructure>, ExportedYearCalendarProps, Omit<MobileDateTimePickerProps<TEnableAccessibleFieldDOMStructure>, 'views'> {
9
9
  /**
10
10
  * CSS media query when `Mobile` mode will be changed to `Desktop`.
11
11
  * @default '@media (pointer: fine)'
@@ -3,7 +3,7 @@ import { BaseToolbarProps, ExportedBaseToolbarProps } from "../internals/models/
3
3
  import { DateTimePickerToolbarClasses } from "./dateTimePickerToolbarClasses.js";
4
4
  import { DateOrTimeViewWithMeridiem, PickerValue } from "../internals/models/index.js";
5
5
  import { DateTimeValidationError } from "../models/index.js";
6
- import { SetValueActionOptions } from "../internals/hooks/usePicker/usePickerValue.types.js";
6
+ import { SetValueActionOptions } from "../internals/components/PickerProvider.js";
7
7
  export interface ExportedDateTimePickerToolbarProps extends ExportedBaseToolbarProps {
8
8
  /**
9
9
  * Override or extend the styles applied to the component.
@@ -57,7 +57,7 @@ const DateTimePickerToolbarRoot = styled(PickersToolbar, {
57
57
  },
58
58
  style: {
59
59
  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,
60
- [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.selected}`]: {
60
+ [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.root}[data-selected]`]: {
61
61
  color: (theme.vars || theme).palette.primary.main,
62
62
  fontWeight: theme.typography.fontWeightBold
63
63
  }
@@ -1,19 +1,20 @@
1
1
  import * as React from 'react';
2
2
  import { DefaultizedProps } from '@mui/x-internals/types';
3
- import { DateTimeValidationError } from "../models/index.js";
3
+ import { DateOrTimeView, DateTimeValidationError } from "../models/index.js";
4
4
  import { DateCalendarSlots, DateCalendarSlotProps, ExportedDateCalendarProps } from "../DateCalendar/DateCalendar.types.js";
5
- import { TimeClockSlots, TimeClockSlotProps } from "../TimeClock/TimeClock.types.js";
6
5
  import { BasePickerInputProps } from "../internals/models/props/basePickerProps.js";
7
6
  import { DateTimePickerTabsProps } from "./DateTimePickerTabs.js";
8
7
  import { LocalizedComponent } from "../locales/utils/pickersLocaleTextApi.js";
9
8
  import { DateTimePickerToolbarProps, ExportedDateTimePickerToolbarProps } from "./DateTimePickerToolbar.js";
10
- import { PickerViewRendererLookup } from "../internals/hooks/usePicker/usePickerViews.js";
9
+ import { PickerViewRendererLookup } from "../internals/hooks/usePicker/index.js";
11
10
  import { DateViewRendererProps } from "../dateViewRenderers/index.js";
12
11
  import { TimeViewRendererProps } from "../timeViewRenderers/index.js";
13
- import { BaseClockProps, ExportedBaseClockProps } from "../internals/models/props/time.js";
12
+ import { BaseClockProps, DigitalTimePickerProps } from "../internals/models/props/time.js";
14
13
  import { DateOrTimeViewWithMeridiem, PickerValue, TimeViewWithMeridiem } from "../internals/models/index.js";
15
14
  import { ExportedValidateDateTimeProps, ValidateDateTimePropsToDefault } from "../validation/validateDateTime.js";
16
- export interface BaseDateTimePickerSlots extends DateCalendarSlots, TimeClockSlots {
15
+ import { DigitalClockSlotProps, DigitalClockSlots } from "../DigitalClock/index.js";
16
+ import { MultiSectionDigitalClockSlotProps, MultiSectionDigitalClockSlots } from "../MultiSectionDigitalClock/index.js";
17
+ export interface BaseDateTimePickerSlots extends DateCalendarSlots, DigitalClockSlots, MultiSectionDigitalClockSlots {
17
18
  /**
18
19
  * Tabs enabling toggling between date and time pickers.
19
20
  * @default DateTimePickerTabs
@@ -25,7 +26,7 @@ export interface BaseDateTimePickerSlots extends DateCalendarSlots, TimeClockSlo
25
26
  */
26
27
  toolbar?: React.JSXElementConstructor<DateTimePickerToolbarProps>;
27
28
  }
28
- export interface BaseDateTimePickerSlotProps extends DateCalendarSlotProps, TimeClockSlotProps {
29
+ export interface BaseDateTimePickerSlotProps extends DateCalendarSlotProps, DigitalClockSlotProps, MultiSectionDigitalClockSlotProps {
29
30
  /**
30
31
  * Props passed down to the tabs component.
31
32
  */
@@ -36,7 +37,7 @@ export interface BaseDateTimePickerSlotProps extends DateCalendarSlotProps, Time
36
37
  toolbar?: ExportedDateTimePickerToolbarProps;
37
38
  }
38
39
  export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem> = PickerViewRendererLookup<PickerValue, TView, Omit<DateViewRendererProps<TView>, 'slots' | 'slotProps'> & Omit<TimeViewRendererProps<TimeViewWithMeridiem, BaseClockProps<TimeViewWithMeridiem>>, 'slots' | 'slotProps'>>;
39
- export interface BaseDateTimePickerProps<TView extends DateOrTimeViewWithMeridiem> extends BasePickerInputProps<PickerValue, TView, DateTimeValidationError>, Omit<ExportedDateCalendarProps, 'onViewChange'>, ExportedBaseClockProps, ExportedValidateDateTimeProps {
40
+ export interface BaseDateTimePickerProps extends Omit<BasePickerInputProps<PickerValue, DateOrTimeViewWithMeridiem, DateTimeValidationError>, 'views'>, Omit<ExportedDateCalendarProps, 'onViewChange' | 'views'>, DigitalTimePickerProps, ExportedValidateDateTimeProps {
40
41
  /**
41
42
  * Display ampm controls under the clock (instead of in the toolbar).
42
43
  * @default true on desktop, false on mobile
@@ -57,8 +58,15 @@ export interface BaseDateTimePickerProps<TView extends DateOrTimeViewWithMeridie
57
58
  * If `null`, the section will only have field editing.
58
59
  * If `undefined`, internally defined view will be used.
59
60
  */
60
- viewRenderers?: Partial<DateTimePickerViewRenderers<TView>>;
61
+ viewRenderers?: Partial<DateTimePickerViewRenderers<DateOrTimeViewWithMeridiem>>;
62
+ /**
63
+ * Available views.
64
+ */
65
+ views?: readonly DateOrTimeView[];
61
66
  }
62
- type UseDateTimePickerDefaultizedProps<TView extends DateOrTimeViewWithMeridiem, Props extends BaseDateTimePickerProps<TView>> = LocalizedComponent<DefaultizedProps<Props, 'views' | 'openTo' | 'orientation' | 'ampm' | ValidateDateTimePropsToDefault>>;
63
- export declare function useDateTimePickerDefaultizedProps<TView extends DateOrTimeViewWithMeridiem, Props extends BaseDateTimePickerProps<TView>>(props: Props, name: string): UseDateTimePickerDefaultizedProps<TView, Props>;
67
+ type UseDateTimePickerDefaultizedProps<Props extends BaseDateTimePickerProps> = LocalizedComponent<Omit<DefaultizedProps<Props, 'openTo' | 'orientation' | 'ampm' | ValidateDateTimePropsToDefault>, 'views'>> & {
68
+ shouldRenderTimeInASingleColumn: boolean;
69
+ views: readonly DateOrTimeViewWithMeridiem[];
70
+ };
71
+ export declare function useDateTimePickerDefaultizedProps<Props extends BaseDateTimePickerProps>(props: Props, name: string): UseDateTimePickerDefaultizedProps<Props>;
64
72
  export {};
@@ -6,6 +6,7 @@ import { applyDefaultDate } from "../internals/utils/date-utils.js";
6
6
  import { DateTimePickerTabs } from "./DateTimePickerTabs.js";
7
7
  import { DateTimePickerToolbar } from "./DateTimePickerToolbar.js";
8
8
  import { applyDefaultViewProps } from "../internals/utils/views.js";
9
+ import { resolveTimeViewsResponse } from "../internals/utils/date-time-utils.js";
9
10
  export function useDateTimePickerDefaultizedProps(props, name) {
10
11
  const utils = useUtils();
11
12
  const defaultDates = useDefaultDates();
@@ -22,12 +23,32 @@ export function useDateTimePickerDefaultizedProps(props, name) {
22
23
  dateTimePickerToolbarTitle: themeProps.localeText.toolbarTitle
23
24
  });
24
25
  }, [themeProps.localeText]);
25
- return _extends({}, themeProps, applyDefaultViewProps({
26
+ const {
27
+ openTo,
28
+ views: defaultViews
29
+ } = applyDefaultViewProps({
26
30
  views: themeProps.views,
27
31
  openTo: themeProps.openTo,
28
32
  defaultViews: ['year', 'day', 'hours', 'minutes'],
29
33
  defaultOpenTo: 'day'
30
- }), {
34
+ });
35
+ const {
36
+ shouldRenderTimeInASingleColumn,
37
+ thresholdToRenderTimeInASingleColumn,
38
+ views,
39
+ timeSteps
40
+ } = resolveTimeViewsResponse({
41
+ thresholdToRenderTimeInASingleColumn: themeProps.thresholdToRenderTimeInASingleColumn,
42
+ ampm,
43
+ timeSteps: themeProps.timeSteps,
44
+ views: defaultViews
45
+ });
46
+ return _extends({}, themeProps, {
47
+ timeSteps,
48
+ openTo,
49
+ shouldRenderTimeInASingleColumn,
50
+ thresholdToRenderTimeInASingleColumn,
51
+ views,
31
52
  ampm,
32
53
  localeText,
33
54
  orientation: themeProps.orientation ?? 'portrait',
@@ -15,7 +15,7 @@ import { renderDateViewCalendar } from "../dateViewRenderers/dateViewRenderers.j
15
15
  import { useUtils } from "../internals/hooks/useUtils.js";
16
16
  import { validateDateTime, extractValidationProps } from "../validation/index.js";
17
17
  import { useDesktopPicker } from "../internals/hooks/useDesktopPicker/index.js";
18
- import { resolveDateTimeFormat, resolveTimeViewsResponse } from "../internals/utils/date-time-utils.js";
18
+ import { resolveDateTimeFormat } from "../internals/utils/date-time-utils.js";
19
19
  import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from "../timeViewRenderers/index.js";
20
20
  import { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from "../MultiSectionDigitalClock/index.js";
21
21
  import { digitalClockClasses } from "../DigitalClock/index.js";
@@ -91,13 +91,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
91
91
 
92
92
  // Props with the default values common to all date time pickers
93
93
  const defaultizedProps = useDateTimePickerDefaultizedProps(inProps, 'MuiDesktopDateTimePicker');
94
- const {
95
- shouldRenderTimeInASingleColumn,
96
- thresholdToRenderTimeInASingleColumn,
97
- views: resolvedViews,
98
- timeSteps
99
- } = resolveTimeViewsResponse(defaultizedProps);
100
- const renderTimeView = shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
94
+ const renderTimeView = defaultizedProps.shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
101
95
  const viewRenderers = _extends({
102
96
  day: renderDateViewCalendar,
103
97
  month: renderDateViewCalendar,
@@ -110,7 +104,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
110
104
  const ampmInClock = defaultizedProps.ampmInClock ?? true;
111
105
  // Need to avoid adding the `meridiem` view when unexpected renderer is specified
112
106
  const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
113
- const views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(view => view !== 'meridiem') : resolvedViews;
107
+ const views = !shouldHoursRendererContainMeridiemView ? defaultizedProps.views.filter(view => view !== 'meridiem') : defaultizedProps.views;
114
108
 
115
109
  // Props with the default values specific to the desktop variant
116
110
  const props = _extends({}, defaultizedProps, {
@@ -119,9 +113,6 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
119
113
  views,
120
114
  yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
121
115
  ampmInClock,
122
- timeSteps,
123
- thresholdToRenderTimeInASingleColumn,
124
- shouldRenderTimeInASingleColumn,
125
116
  slots: _extends({
126
117
  field: DateTimeField,
127
118
  layout: DesktopDateTimePickerLayout
@@ -2,14 +2,11 @@ import { MakeOptional } from '@mui/x-internals/types';
2
2
  import { UseDesktopPickerSlots, ExportedUseDesktopPickerSlotProps, DesktopOnlyPickerProps } from "../internals/hooks/useDesktopPicker/index.js";
3
3
  import { BaseDateTimePickerProps, BaseDateTimePickerSlots, BaseDateTimePickerSlotProps } from "../DateTimePicker/shared.js";
4
4
  import { DateOrTimeView } from "../models/index.js";
5
- import { DesktopOnlyTimePickerProps } from "../internals/models/props/time.js";
6
- import { DateOrTimeViewWithMeridiem } from "../internals/models/index.js";
7
- import { MultiSectionDigitalClockSlots, MultiSectionDigitalClockSlotProps } from "../MultiSectionDigitalClock/index.js";
8
- import { DigitalClockSlots, DigitalClockSlotProps } from "../DigitalClock/index.js";
5
+ import { DigitalTimePickerProps } from "../internals/models/props/time.js";
9
6
  import { ExportedYearCalendarProps } from "../YearCalendar/YearCalendar.types.js";
10
- export interface DesktopDateTimePickerSlots extends BaseDateTimePickerSlots, MakeOptional<UseDesktopPickerSlots, 'field' | 'openPickerIcon'>, DigitalClockSlots, MultiSectionDigitalClockSlots {}
11
- export interface DesktopDateTimePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends BaseDateTimePickerSlotProps, ExportedUseDesktopPickerSlotProps<TEnableAccessibleFieldDOMStructure>, DigitalClockSlotProps, MultiSectionDigitalClockSlotProps {}
12
- export interface DesktopDateTimePickerProps<TEnableAccessibleFieldDOMStructure extends boolean = true> extends BaseDateTimePickerProps<DateOrTimeViewWithMeridiem>, DesktopOnlyPickerProps, DesktopOnlyTimePickerProps, ExportedYearCalendarProps {
7
+ export interface DesktopDateTimePickerSlots extends BaseDateTimePickerSlots, MakeOptional<UseDesktopPickerSlots, 'field' | 'openPickerIcon'> {}
8
+ export interface DesktopDateTimePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends BaseDateTimePickerSlotProps, ExportedUseDesktopPickerSlotProps<TEnableAccessibleFieldDOMStructure> {}
9
+ export interface DesktopDateTimePickerProps<TEnableAccessibleFieldDOMStructure extends boolean = true> extends BaseDateTimePickerProps, DesktopOnlyPickerProps, DigitalTimePickerProps, ExportedYearCalendarProps {
13
10
  /**
14
11
  * Overridable component slots.
15
12
  * @default {}
@@ -2,13 +2,13 @@ import { MakeOptional } from '@mui/x-internals/types';
2
2
  import { UseDesktopPickerSlots, ExportedUseDesktopPickerSlotProps, DesktopOnlyPickerProps } from "../internals/hooks/useDesktopPicker/index.js";
3
3
  import { BaseTimePickerProps, BaseTimePickerSlots, BaseTimePickerSlotProps } from "../TimePicker/shared.js";
4
4
  import { TimeViewWithMeridiem } from "../internals/models/index.js";
5
- import { DesktopOnlyTimePickerProps } from "../internals/models/props/time.js";
5
+ import { DigitalTimePickerProps } from "../internals/models/props/time.js";
6
6
  import { DigitalClockSlots, DigitalClockSlotProps } from "../DigitalClock/index.js";
7
7
  import { MultiSectionDigitalClockSlots, MultiSectionDigitalClockSlotProps } from "../MultiSectionDigitalClock/index.js";
8
8
  import { TimeView } from "../models/index.js";
9
9
  export interface DesktopTimePickerSlots extends BaseTimePickerSlots, MakeOptional<UseDesktopPickerSlots, 'field' | 'openPickerIcon'>, DigitalClockSlots, MultiSectionDigitalClockSlots {}
10
10
  export interface DesktopTimePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends BaseTimePickerSlotProps, ExportedUseDesktopPickerSlotProps<TEnableAccessibleFieldDOMStructure>, DigitalClockSlotProps, MultiSectionDigitalClockSlotProps {}
11
- export interface DesktopTimePickerProps<TEnableAccessibleFieldDOMStructure extends boolean = true> extends BaseTimePickerProps<TimeViewWithMeridiem>, DesktopOnlyPickerProps, DesktopOnlyTimePickerProps {
11
+ export interface DesktopTimePickerProps<TEnableAccessibleFieldDOMStructure extends boolean = true> extends BaseTimePickerProps<TimeViewWithMeridiem>, DesktopOnlyPickerProps, DigitalTimePickerProps {
12
12
  /**
13
13
  * Available views.
14
14
  */
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { MobileDateTimePickerProps } from "./MobileDateTimePicker.types.js";
3
- import { DateOrTimeView } from "../models/index.js";
4
- type MobileDateTimePickerComponent = (<TEnableAccessibleFieldDOMStructure extends boolean = true>(props: MobileDateTimePickerProps<DateOrTimeView, TEnableAccessibleFieldDOMStructure> & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
3
+ type MobileDateTimePickerComponent = (<TEnableAccessibleFieldDOMStructure extends boolean = true>(props: MobileDateTimePickerProps<TEnableAccessibleFieldDOMStructure> & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
5
4
  propTypes?: any;
6
5
  };
7
6
  /**
@@ -12,8 +12,12 @@ import { useUtils } from "../internals/hooks/useUtils.js";
12
12
  import { extractValidationProps, validateDateTime } from "../validation/index.js";
13
13
  import { useMobilePicker } from "../internals/hooks/useMobilePicker/index.js";
14
14
  import { renderDateViewCalendar } from "../dateViewRenderers/index.js";
15
- import { renderTimeViewClock } from "../timeViewRenderers/index.js";
15
+ import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from "../timeViewRenderers/index.js";
16
16
  import { resolveDateTimeFormat } from "../internals/utils/date-time-utils.js";
17
+ import { DIALOG_WIDTH, VIEW_HEIGHT } from "../internals/constants/dimensions.js";
18
+ import { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from "../MultiSectionDigitalClock/index.js";
19
+ import { mergeSx } from "../internals/utils/utils.js";
20
+ import { digitalClockClasses } from "../DigitalClock/index.js";
17
21
  /**
18
22
  * Demos:
19
23
  *
@@ -29,20 +33,26 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
29
33
 
30
34
  // Props with the default values common to all date time pickers
31
35
  const defaultizedProps = useDateTimePickerDefaultizedProps(inProps, 'MuiMobileDateTimePicker');
36
+ const renderTimeView = defaultizedProps.shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
32
37
  const viewRenderers = _extends({
33
38
  day: renderDateViewCalendar,
34
39
  month: renderDateViewCalendar,
35
40
  year: renderDateViewCalendar,
36
- hours: renderTimeViewClock,
37
- minutes: renderTimeViewClock,
38
- seconds: renderTimeViewClock
41
+ hours: renderTimeView,
42
+ minutes: renderTimeView,
43
+ seconds: renderTimeView,
44
+ meridiem: renderTimeView
39
45
  }, defaultizedProps.viewRenderers);
40
46
  const ampmInClock = defaultizedProps.ampmInClock ?? false;
47
+ // Need to avoid adding the `meridiem` view when unexpected renderer is specified
48
+ const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
49
+ const views = !shouldHoursRendererContainMeridiemView ? defaultizedProps.views.filter(view => view !== 'meridiem') : defaultizedProps.views;
41
50
 
42
51
  // Props with the default values specific to the mobile variant
43
52
  const props = _extends({}, defaultizedProps, {
44
53
  viewRenderers,
45
54
  format: resolveDateTimeFormat(utils, defaultizedProps),
55
+ views,
46
56
  ampmInClock,
47
57
  slots: _extends({
48
58
  field: DateTimeField
@@ -55,7 +65,30 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
55
65
  }, defaultizedProps.slotProps?.toolbar),
56
66
  tabs: _extends({
57
67
  hidden: false
58
- }, defaultizedProps.slotProps?.tabs)
68
+ }, defaultizedProps.slotProps?.tabs),
69
+ layout: _extends({}, defaultizedProps.slotProps?.layout, {
70
+ sx: mergeSx([{
71
+ [`& .${multiSectionDigitalClockClasses.root}`]: {
72
+ width: DIALOG_WIDTH
73
+ },
74
+ [`& .${multiSectionDigitalClockSectionClasses.root}`]: {
75
+ flex: 1,
76
+ // account for the border on `MultiSectionDigitalClock`
77
+ maxHeight: VIEW_HEIGHT - 1,
78
+ [`.${multiSectionDigitalClockSectionClasses.item}`]: {
79
+ width: 'auto'
80
+ }
81
+ },
82
+ [`& .${digitalClockClasses.root}`]: {
83
+ width: DIALOG_WIDTH,
84
+ maxHeight: VIEW_HEIGHT,
85
+ flex: 1,
86
+ [`.${digitalClockClasses.item}`]: {
87
+ justifyContent: 'center'
88
+ }
89
+ }
90
+ }], defaultizedProps.slotProps?.layout?.sx)
91
+ })
59
92
  })
60
93
  });
61
94
  const {
@@ -292,7 +325,7 @@ MobileDateTimePicker.propTypes = {
292
325
  * Used when the component view is not controlled.
293
326
  * Must be a valid option from `views` list.
294
327
  */
295
- openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),
328
+ openTo: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
296
329
  /**
297
330
  * Force rendering in particular orientation.
298
331
  */
@@ -368,6 +401,11 @@ MobileDateTimePicker.propTypes = {
368
401
  * @default false
369
402
  */
370
403
  showDaysOutsideCurrentMonth: PropTypes.bool,
404
+ /**
405
+ * If `true`, disabled digital clock items will not be rendered.
406
+ * @default false
407
+ */
408
+ skipDisabled: PropTypes.bool,
371
409
  /**
372
410
  * The props used for each component slot.
373
411
  * @default {}
@@ -382,6 +420,22 @@ MobileDateTimePicker.propTypes = {
382
420
  * The system prop that allows defining system overrides as well as additional CSS styles.
383
421
  */
384
422
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
423
+ /**
424
+ * Amount of time options below or at which the single column time renderer is used.
425
+ * @default 24
426
+ */
427
+ thresholdToRenderTimeInASingleColumn: PropTypes.number,
428
+ /**
429
+ * The time steps between two time unit options.
430
+ * For example, if `timeStep.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.
431
+ * When single column time renderer is used, only `timeStep.minutes` will be used.
432
+ * @default{ hours: 1, minutes: 5, seconds: 5 }
433
+ */
434
+ timeSteps: PropTypes.shape({
435
+ hours: PropTypes.number,
436
+ minutes: PropTypes.number,
437
+ seconds: PropTypes.number
438
+ }),
385
439
  /**
386
440
  * Choose which timezone to use for the value.
387
441
  * Example: "default", "system", "UTC", "America/New_York".
@@ -400,7 +454,7 @@ MobileDateTimePicker.propTypes = {
400
454
  * Used when the component view is controlled.
401
455
  * Must be a valid option from `views` list.
402
456
  */
403
- view: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),
457
+ view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
404
458
  /**
405
459
  * Define custom view renderers for each section.
406
460
  * If `null`, the section will only have field editing.
@@ -409,6 +463,7 @@ MobileDateTimePicker.propTypes = {
409
463
  viewRenderers: PropTypes.shape({
410
464
  day: PropTypes.func,
411
465
  hours: PropTypes.func,
466
+ meridiem: PropTypes.func,
412
467
  minutes: PropTypes.func,
413
468
  month: PropTypes.func,
414
469
  seconds: PropTypes.func,
@@ -1,11 +1,9 @@
1
1
  import { MakeOptional } from '@mui/x-internals/types';
2
2
  import { UseMobilePickerSlots, ExportedUseMobilePickerSlotProps, MobileOnlyPickerProps } from "../internals/hooks/useMobilePicker/index.js";
3
3
  import { BaseDateTimePickerProps, BaseDateTimePickerSlots, BaseDateTimePickerSlotProps } from "../DateTimePicker/shared.js";
4
- import { DateOrTimeView } from "../models/index.js";
5
- import { DateOrTimeViewWithMeridiem } from "../internals/models/index.js";
6
4
  export interface MobileDateTimePickerSlots extends BaseDateTimePickerSlots, MakeOptional<UseMobilePickerSlots, 'field'> {}
7
5
  export interface MobileDateTimePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends BaseDateTimePickerSlotProps, ExportedUseMobilePickerSlotProps<TEnableAccessibleFieldDOMStructure> {}
8
- export interface MobileDateTimePickerProps<TView extends DateOrTimeViewWithMeridiem = DateOrTimeView, TEnableAccessibleFieldDOMStructure extends boolean = true> extends BaseDateTimePickerProps<TView>, MobileOnlyPickerProps {
6
+ export interface MobileDateTimePickerProps<TEnableAccessibleFieldDOMStructure extends boolean = true> extends BaseDateTimePickerProps, MobileOnlyPickerProps {
9
7
  /**
10
8
  * Overridable component slots.
11
9
  * @default {}
@@ -154,7 +154,9 @@ const PickersTextField = /*#__PURE__*/React.forwardRef(function PickersTextField
154
154
  label: label,
155
155
  name: name,
156
156
  role: "group",
157
- "aria-labelledby": inputLabelId
157
+ "aria-labelledby": inputLabelId,
158
+ "aria-describedby": helperTextId,
159
+ "aria-live": helperTextId ? 'polite' : undefined
158
160
  }, InputProps)), helperText && /*#__PURE__*/_jsx(FormHelperText, _extends({
159
161
  id: helperTextId
160
162
  }, FormHelperTextProps, {
@@ -4,11 +4,15 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { useDateTimePickerDefaultizedProps } from "../DateTimePicker/shared.js";
7
- import { renderTimeViewClock } from "../timeViewRenderers/index.js";
7
+ import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from "../timeViewRenderers/index.js";
8
8
  import { renderDateViewCalendar } from "../dateViewRenderers/index.js";
9
9
  import { singleItemValueManager } from "../internals/utils/valueManagers.js";
10
10
  import { useStaticPicker } from "../internals/hooks/useStaticPicker/index.js";
11
11
  import { validateDateTime } from "../validation/index.js";
12
+ import { mergeSx } from "../internals/utils/utils.js";
13
+ import { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from "../MultiSectionDigitalClock/index.js";
14
+ import { DIALOG_WIDTH, VIEW_HEIGHT } from "../internals/constants/dimensions.js";
15
+ import { digitalClockClasses } from "../DigitalClock/index.js";
12
16
  /**
13
17
  * Demos:
14
18
  *
@@ -23,19 +27,26 @@ const StaticDateTimePicker = /*#__PURE__*/React.forwardRef(function StaticDateTi
23
27
  const defaultizedProps = useDateTimePickerDefaultizedProps(inProps, 'MuiStaticDateTimePicker');
24
28
  const displayStaticWrapperAs = defaultizedProps.displayStaticWrapperAs ?? 'mobile';
25
29
  const ampmInClock = defaultizedProps.ampmInClock ?? displayStaticWrapperAs === 'desktop';
30
+ const renderTimeView = defaultizedProps.shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
26
31
  const viewRenderers = _extends({
27
32
  day: renderDateViewCalendar,
28
33
  month: renderDateViewCalendar,
29
34
  year: renderDateViewCalendar,
30
- hours: renderTimeViewClock,
31
- minutes: renderTimeViewClock,
32
- seconds: renderTimeViewClock
35
+ hours: renderTimeView,
36
+ minutes: renderTimeView,
37
+ seconds: renderTimeView,
38
+ meridiem: renderTimeView
33
39
  }, defaultizedProps.viewRenderers);
34
40
 
41
+ // Need to avoid adding the `meridiem` view when unexpected renderer is specified
42
+ const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
43
+ const views = !shouldHoursRendererContainMeridiemView ? defaultizedProps.views.filter(view => view !== 'meridiem') : defaultizedProps.views;
44
+
35
45
  // Props with the default values specific to the static variant
36
46
  const props = _extends({}, defaultizedProps, {
37
47
  viewRenderers,
38
48
  displayStaticWrapperAs,
49
+ views,
39
50
  ampmInClock,
40
51
  yearsPerRow: defaultizedProps.yearsPerRow ?? (displayStaticWrapperAs === 'mobile' ? 3 : 4),
41
52
  slotProps: _extends({}, defaultizedProps.slotProps, {
@@ -46,7 +57,28 @@ const StaticDateTimePicker = /*#__PURE__*/React.forwardRef(function StaticDateTi
46
57
  hidden: displayStaticWrapperAs === 'desktop',
47
58
  ampmInClock
48
59
  }, defaultizedProps.slotProps?.toolbar)
49
- })
60
+ }),
61
+ sx: mergeSx([{
62
+ [`& .${multiSectionDigitalClockClasses.root}`]: {
63
+ width: DIALOG_WIDTH
64
+ },
65
+ [`& .${multiSectionDigitalClockSectionClasses.root}`]: {
66
+ flex: 1,
67
+ // account for the border on `MultiSectionDigitalClock`
68
+ maxHeight: VIEW_HEIGHT - 1,
69
+ [`.${multiSectionDigitalClockSectionClasses.item}`]: {
70
+ width: 'auto'
71
+ }
72
+ },
73
+ [`& .${digitalClockClasses.root}`]: {
74
+ width: DIALOG_WIDTH,
75
+ maxHeight: VIEW_HEIGHT,
76
+ flex: 1,
77
+ [`.${digitalClockClasses.item}`]: {
78
+ justifyContent: 'center'
79
+ }
80
+ }
81
+ }], defaultizedProps?.sx)
50
82
  });
51
83
  const {
52
84
  renderPicker
@@ -236,7 +268,7 @@ StaticDateTimePicker.propTypes = {
236
268
  * Used when the component view is not controlled.
237
269
  * Must be a valid option from `views` list.
238
270
  */
239
- openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),
271
+ openTo: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
240
272
  /**
241
273
  * Force rendering in particular orientation.
242
274
  */
@@ -302,6 +334,11 @@ StaticDateTimePicker.propTypes = {
302
334
  * @default false
303
335
  */
304
336
  showDaysOutsideCurrentMonth: PropTypes.bool,
337
+ /**
338
+ * If `true`, disabled digital clock items will not be rendered.
339
+ * @default false
340
+ */
341
+ skipDisabled: PropTypes.bool,
305
342
  /**
306
343
  * The props used for each component slot.
307
344
  * @default {}
@@ -316,6 +353,22 @@ StaticDateTimePicker.propTypes = {
316
353
  * The system prop that allows defining system overrides as well as additional CSS styles.
317
354
  */
318
355
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
356
+ /**
357
+ * Amount of time options below or at which the single column time renderer is used.
358
+ * @default 24
359
+ */
360
+ thresholdToRenderTimeInASingleColumn: PropTypes.number,
361
+ /**
362
+ * The time steps between two time unit options.
363
+ * For example, if `timeStep.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.
364
+ * When single column time renderer is used, only `timeStep.minutes` will be used.
365
+ * @default{ hours: 1, minutes: 5, seconds: 5 }
366
+ */
367
+ timeSteps: PropTypes.shape({
368
+ hours: PropTypes.number,
369
+ minutes: PropTypes.number,
370
+ seconds: PropTypes.number
371
+ }),
319
372
  /**
320
373
  * Choose which timezone to use for the value.
321
374
  * Example: "default", "system", "UTC", "America/New_York".
@@ -334,7 +387,7 @@ StaticDateTimePicker.propTypes = {
334
387
  * Used when the component view is controlled.
335
388
  * Must be a valid option from `views` list.
336
389
  */
337
- view: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),
390
+ view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
338
391
  /**
339
392
  * Define custom view renderers for each section.
340
393
  * If `null`, the section will only have field editing.
@@ -343,6 +396,7 @@ StaticDateTimePicker.propTypes = {
343
396
  viewRenderers: PropTypes.shape({
344
397
  day: PropTypes.func,
345
398
  hours: PropTypes.func,
399
+ meridiem: PropTypes.func,
346
400
  minutes: PropTypes.func,
347
401
  month: PropTypes.func,
348
402
  seconds: PropTypes.func,
@@ -1,10 +1,9 @@
1
1
  import { MakeOptional } from '@mui/x-internals/types';
2
2
  import { BaseDateTimePickerProps, BaseDateTimePickerSlots, BaseDateTimePickerSlotProps } from "../DateTimePicker/shared.js";
3
3
  import { StaticOnlyPickerProps, UseStaticPickerSlots, UseStaticPickerSlotProps } from "../internals/hooks/useStaticPicker/index.js";
4
- import { DateOrTimeView } from "../models/index.js";
5
4
  export interface StaticDateTimePickerSlots extends BaseDateTimePickerSlots, UseStaticPickerSlots {}
6
5
  export interface StaticDateTimePickerSlotProps extends BaseDateTimePickerSlotProps, UseStaticPickerSlotProps {}
7
- export interface StaticDateTimePickerProps extends BaseDateTimePickerProps<DateOrTimeView>, MakeOptional<StaticOnlyPickerProps, 'displayStaticWrapperAs'> {
6
+ export interface StaticDateTimePickerProps extends BaseDateTimePickerProps, MakeOptional<StaticOnlyPickerProps, 'displayStaticWrapperAs'> {
8
7
  /**
9
8
  * Overridable component slots.
10
9
  * @default {}
@@ -5,7 +5,7 @@ import { BasePickerInputProps } from "../internals/models/props/basePickerProps.
5
5
  import { LocalizedComponent } from "../locales/utils/pickersLocaleTextApi.js";
6
6
  import { TimePickerToolbarProps, ExportedTimePickerToolbarProps } from "./TimePickerToolbar.js";
7
7
  import { TimeValidationError } from "../models/index.js";
8
- import { PickerViewRendererLookup } from "../internals/hooks/usePicker/usePickerViews.js";
8
+ import { PickerViewRendererLookup } from "../internals/hooks/usePicker/index.js";
9
9
  import { TimeViewRendererProps } from "../timeViewRenderers/index.js";
10
10
  import { BaseClockProps, ExportedBaseClockProps } from "../internals/models/props/time.js";
11
11
  import { PickerValue, TimeViewWithMeridiem } from "../internals/models/index.js";
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v8.0.0-alpha.13
2
+ * @mui/x-date-pickers v8.0.0-alpha.14
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -154,7 +154,9 @@ export function PickerFieldUI(props) {
154
154
  disabled: triggerStatus === 'disabled',
155
155
  onClick: handleClickOpeningButton,
156
156
  'aria-label': openPickerAriaLabel,
157
- edge: clearButtonPosition === 'start' && openPickerButtonPosition === 'start' ? undefined : openPickerButtonPosition
157
+ edge:
158
+ // open button is always rendered at the edge
159
+ textFieldProps.variant !== 'standard' ? openPickerButtonPosition : false
158
160
  },
159
161
  ownerState
160
162
  }),
@@ -176,7 +178,9 @@ export function PickerFieldUI(props) {
176
178
  tabIndex: -1,
177
179
  onClick: onClear,
178
180
  disabled: fieldResponse.disabled || fieldResponse.readOnly,
179
- edge: clearButtonPosition === 'end' && openPickerButtonPosition === 'end' ? undefined : clearButtonPosition
181
+ edge:
182
+ // clear button can only be at the edge if it's position differs from the open button
183
+ textFieldProps.variant !== 'standard' && clearButtonPosition !== openPickerButtonPosition ? clearButtonPosition : false
180
184
  },
181
185
  ownerState
182
186
  }),
@@ -219,7 +219,7 @@ export function PickerPopper(inProps) {
219
219
  } = usePickerContext();
220
220
  const {
221
221
  dismissViews,
222
- doesTheCurrentViewHasAnUI,
222
+ getCurrentViewMode,
223
223
  viewContainerRole
224
224
  } = usePickerPrivateContext();
225
225
  React.useEffect(() => {
@@ -235,7 +235,7 @@ export function PickerPopper(inProps) {
235
235
  }, [dismissViews, open]);
236
236
  const lastFocusedElementRef = React.useRef(null);
237
237
  React.useEffect(() => {
238
- if (viewContainerRole === 'tooltip' || !doesTheCurrentViewHasAnUI()) {
238
+ if (viewContainerRole === 'tooltip' || getCurrentViewMode() === 'field') {
239
239
  return;
240
240
  }
241
241
  if (open) {
@@ -249,7 +249,7 @@ export function PickerPopper(inProps) {
249
249
  }
250
250
  });
251
251
  }
252
- }, [open, viewContainerRole, doesTheCurrentViewHasAnUI]);
252
+ }, [open, viewContainerRole, getCurrentViewMode]);
253
253
  const classes = useUtilityClasses(classesProp);
254
254
  const {
255
255
  ownerState: pickerOwnerState,