@mui/x-date-pickers 6.5.0 → 6.7.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 (343) hide show
  1. package/AdapterDateFns/AdapterDateFns.d.ts +6 -0
  2. package/AdapterDateFns/AdapterDateFns.js +38 -19
  3. package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +6 -0
  4. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +35 -16
  5. package/AdapterDayjs/AdapterDayjs.d.ts +14 -1
  6. package/AdapterDayjs/AdapterDayjs.js +143 -25
  7. package/AdapterLuxon/AdapterLuxon.d.ts +7 -1
  8. package/AdapterLuxon/AdapterLuxon.js +78 -28
  9. package/AdapterMoment/AdapterMoment.d.ts +12 -1
  10. package/AdapterMoment/AdapterMoment.js +103 -13
  11. package/AdapterMomentHijri/AdapterMomentHijri.d.ts +4 -0
  12. package/AdapterMomentHijri/AdapterMomentHijri.js +30 -19
  13. package/AdapterMomentJalaali/AdapterMomentJalaali.d.ts +4 -0
  14. package/AdapterMomentJalaali/AdapterMomentJalaali.js +30 -19
  15. package/CHANGELOG.md +150 -2
  16. package/DateCalendar/DateCalendar.js +2 -2
  17. package/DateCalendar/DayCalendar.d.ts +1 -1
  18. package/DateCalendar/PickersCalendarHeader.d.ts +1 -1
  19. package/DateCalendar/PickersCalendarHeader.js +2 -2
  20. package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
  21. package/DateCalendar/PickersSlideTransition.d.ts +1 -1
  22. package/DateField/DateField.js +6 -0
  23. package/DateField/DateField.types.d.ts +1 -1
  24. package/DatePicker/DatePickerToolbar.js +6 -15
  25. package/DatePicker/shared.d.ts +1 -5
  26. package/DatePicker/shared.js +1 -16
  27. package/DateTimeField/DateTimeField.js +6 -0
  28. package/DateTimeField/DateTimeField.types.d.ts +1 -1
  29. package/DateTimePicker/DateTimePicker.js +19 -2
  30. package/DateTimePicker/DateTimePicker.types.d.ts +4 -3
  31. package/DateTimePicker/DateTimePickerTabs.d.ts +3 -3
  32. package/DateTimePicker/DateTimePickerTabs.js +6 -5
  33. package/DateTimePicker/DateTimePickerToolbar.d.ts +5 -4
  34. package/DateTimePicker/DateTimePickerToolbar.js +46 -22
  35. package/DateTimePicker/shared.d.ts +6 -6
  36. package/DayCalendarSkeleton/DayCalendarSkeleton.d.ts +1 -1
  37. package/DesktopDatePicker/DesktopDatePicker.js +5 -4
  38. package/DesktopDateTimePicker/DesktopDateTimePicker.js +58 -11
  39. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +10 -3
  40. package/DesktopTimePicker/DesktopTimePicker.js +7 -3
  41. package/LocalizationProvider/LocalizationProvider.js +1 -0
  42. package/MobileDatePicker/MobileDatePicker.js +3 -2
  43. package/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  44. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +8 -7
  45. package/MobileTimePicker/MobileTimePicker.js +5 -1
  46. package/MonthCalendar/MonthCalendar.js +2 -2
  47. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  48. package/PickersActionBar/PickersActionBar.d.ts +2 -2
  49. package/PickersLayout/PickersLayout.d.ts +1 -1
  50. package/PickersShortcuts/PickersShortcuts.d.ts +2 -2
  51. package/README.md +5 -5
  52. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +1 -1
  53. package/TimeClock/Clock.d.ts +1 -1
  54. package/TimeClock/ClockNumber.d.ts +1 -1
  55. package/TimeClock/ClockNumbers.d.ts +2 -2
  56. package/TimeClock/ClockPointer.d.ts +1 -1
  57. package/TimeField/TimeField.js +6 -0
  58. package/TimeField/TimeField.types.d.ts +1 -1
  59. package/TimePicker/TimePickerToolbar.d.ts +2 -2
  60. package/TimePicker/shared.d.ts +1 -1
  61. package/YearCalendar/YearCalendar.js +2 -2
  62. package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +13 -0
  63. package/dateTimeViewRenderers/dateTimeViewRenderers.js +148 -0
  64. package/dateTimeViewRenderers/index.d.ts +2 -0
  65. package/dateTimeViewRenderers/index.js +1 -0
  66. package/dateTimeViewRenderers/package.json +6 -0
  67. package/dateViewRenderers/dateViewRenderers.d.ts +3 -2
  68. package/dateViewRenderers/dateViewRenderers.js +2 -2
  69. package/icons/index.d.ts +42 -0
  70. package/{internals/components/icons → icons}/index.js +7 -7
  71. package/icons/package.json +6 -0
  72. package/index.d.ts +1 -0
  73. package/index.js +3 -2
  74. package/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.d.ts +2 -0
  75. package/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +5 -0
  76. package/internals/components/DateTimeViewWrapper/index.d.ts +1 -0
  77. package/internals/components/DateTimeViewWrapper/index.js +1 -0
  78. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  79. package/internals/components/PickersModalDialog.d.ts +1 -1
  80. package/internals/components/PickersPopper.d.ts +1 -1
  81. package/internals/components/PickersToolbarButton.d.ts +1 -0
  82. package/internals/components/PickersToolbarButton.js +8 -3
  83. package/internals/constants/dimensions.d.ts +1 -0
  84. package/internals/constants/dimensions.js +2 -1
  85. package/internals/demo/DemoContainer.d.ts +2 -2
  86. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +2 -2
  87. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
  88. package/internals/hooks/useField/useField.d.ts +1 -1
  89. package/internals/hooks/useField/useField.js +8 -3
  90. package/internals/hooks/useField/useField.types.d.ts +8 -2
  91. package/internals/hooks/useField/useFieldState.d.ts +1 -1
  92. package/internals/hooks/useField/useFieldState.js +22 -2
  93. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +2 -2
  94. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +2 -2
  95. package/internals/hooks/usePicker/usePickerValue.types.d.ts +32 -2
  96. package/internals/hooks/usePicker/usePickerViews.js +8 -10
  97. package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +2 -2
  98. package/internals/hooks/useViews.js +10 -9
  99. package/internals/index.d.ts +2 -1
  100. package/internals/index.js +2 -1
  101. package/internals/models/fields.d.ts +1 -1
  102. package/internals/utils/date-time-utils.d.ts +6 -0
  103. package/internals/utils/date-time-utils.js +41 -0
  104. package/internals/utils/date-utils.d.ts +8 -1
  105. package/internals/utils/date-utils.js +35 -0
  106. package/internals/utils/fields.js +1 -1
  107. package/internals/utils/getDefaultReferenceDate.d.ts +15 -0
  108. package/internals/utils/getDefaultReferenceDate.js +62 -0
  109. package/internals/utils/time-utils.d.ts +8 -2
  110. package/internals/utils/time-utils.js +28 -0
  111. package/internals/utils/validation/extractValidationProps.d.ts +1 -1
  112. package/internals/utils/valueManagers.js +21 -3
  113. package/internals/utils/views.d.ts +2 -3
  114. package/internals/utils/views.js +6 -2
  115. package/legacy/AdapterDateFns/AdapterDateFns.js +38 -19
  116. package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +35 -16
  117. package/legacy/AdapterDayjs/AdapterDayjs.js +147 -25
  118. package/legacy/AdapterLuxon/AdapterLuxon.js +78 -28
  119. package/legacy/AdapterMoment/AdapterMoment.js +109 -17
  120. package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +30 -19
  121. package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +30 -19
  122. package/legacy/DateCalendar/DateCalendar.js +2 -2
  123. package/legacy/DateCalendar/PickersCalendarHeader.js +2 -2
  124. package/legacy/DateField/DateField.js +6 -0
  125. package/legacy/DatePicker/DatePickerToolbar.js +6 -15
  126. package/legacy/DatePicker/shared.js +1 -15
  127. package/legacy/DateTimeField/DateTimeField.js +6 -0
  128. package/legacy/DateTimePicker/DateTimePicker.js +19 -2
  129. package/legacy/DateTimePicker/DateTimePickerTabs.js +6 -5
  130. package/legacy/DateTimePicker/DateTimePickerToolbar.js +51 -23
  131. package/legacy/DesktopDatePicker/DesktopDatePicker.js +5 -4
  132. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +59 -11
  133. package/legacy/DesktopTimePicker/DesktopTimePicker.js +7 -3
  134. package/legacy/LocalizationProvider/LocalizationProvider.js +1 -0
  135. package/legacy/MobileDatePicker/MobileDatePicker.js +3 -2
  136. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  137. package/legacy/MobileTimePicker/MobileTimePicker.js +5 -1
  138. package/legacy/MonthCalendar/MonthCalendar.js +2 -2
  139. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  140. package/legacy/TimeField/TimeField.js +6 -0
  141. package/legacy/YearCalendar/YearCalendar.js +2 -2
  142. package/legacy/dateTimeViewRenderers/dateTimeViewRenderers.js +147 -0
  143. package/legacy/dateTimeViewRenderers/index.js +1 -0
  144. package/legacy/dateViewRenderers/dateViewRenderers.js +2 -4
  145. package/legacy/{internals/components/icons → icons}/index.js +7 -7
  146. package/legacy/index.js +3 -2
  147. package/legacy/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +5 -0
  148. package/legacy/internals/components/DateTimeViewWrapper/index.js +1 -0
  149. package/legacy/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  150. package/legacy/internals/components/PickersToolbarButton.js +7 -2
  151. package/legacy/internals/constants/dimensions.js +2 -1
  152. package/legacy/internals/hooks/useField/useField.js +8 -3
  153. package/legacy/internals/hooks/useField/useFieldState.js +22 -2
  154. package/legacy/internals/hooks/usePicker/usePickerViews.js +4 -4
  155. package/legacy/internals/hooks/useViews.js +10 -9
  156. package/legacy/internals/index.js +2 -1
  157. package/legacy/internals/utils/date-time-utils.js +39 -0
  158. package/legacy/internals/utils/date-utils.js +38 -0
  159. package/legacy/internals/utils/fields.js +1 -1
  160. package/legacy/internals/utils/getDefaultReferenceDate.js +64 -0
  161. package/legacy/internals/utils/time-utils.js +29 -0
  162. package/legacy/internals/utils/valueManagers.js +20 -4
  163. package/legacy/internals/utils/views.js +7 -5
  164. package/legacy/locales/deDE.js +2 -2
  165. package/legacy/locales/index.js +17 -15
  166. package/legacy/locales/roRO.js +81 -0
  167. package/legacy/locales/viVN.js +93 -0
  168. package/legacy/models/index.js +1 -0
  169. package/legacy/models/timezone.js +1 -0
  170. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.js +16 -1
  171. package/legacy/tests/describeGregorianAdapter/testCalculations.js +349 -79
  172. package/legacy/tests/describeGregorianAdapter/testLocalization.js +3 -3
  173. package/legacy/tests/describeValidation/testDayViewValidation.js +129 -52
  174. package/legacy/tests/describeValidation/testMinutesViewValidation.js +3 -10
  175. package/legacy/tests/describeValidation/testMonthViewValidation.js +3 -10
  176. package/legacy/tests/describeValidation/testYearViewValidation.js +3 -10
  177. package/legacy/tests/describeValue/describeValue.js +12 -5
  178. package/legacy/tests/describeValue/testControlledUnControlled.js +19 -4
  179. package/legacy/tests/describeValue/testPickerActionBar.js +12 -10
  180. package/legacy/tests/describeValue/testPickerOpenCloseLifeCycle.js +10 -7
  181. package/legacy/timeViewRenderers/timeViewRenderers.js +1 -1
  182. package/locales/deDE.js +2 -2
  183. package/locales/index.d.ts +17 -15
  184. package/locales/index.js +17 -15
  185. package/locales/roRO.d.ts +53 -0
  186. package/locales/roRO.js +63 -0
  187. package/locales/viVN.d.ts +53 -0
  188. package/locales/viVN.js +57 -0
  189. package/models/adapters.d.ts +187 -46
  190. package/models/fields.d.ts +1 -1
  191. package/models/index.d.ts +1 -0
  192. package/models/index.js +1 -0
  193. package/models/timezone.d.ts +1 -0
  194. package/models/timezone.js +1 -0
  195. package/modern/AdapterDateFns/AdapterDateFns.js +38 -19
  196. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +35 -16
  197. package/modern/AdapterDayjs/AdapterDayjs.js +142 -25
  198. package/modern/AdapterLuxon/AdapterLuxon.js +77 -28
  199. package/modern/AdapterMoment/AdapterMoment.js +102 -13
  200. package/modern/AdapterMomentHijri/AdapterMomentHijri.js +30 -19
  201. package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +30 -19
  202. package/modern/DateCalendar/DateCalendar.js +2 -2
  203. package/modern/DateCalendar/PickersCalendarHeader.js +2 -2
  204. package/modern/DateField/DateField.js +6 -0
  205. package/modern/DatePicker/DatePickerToolbar.js +6 -15
  206. package/modern/DatePicker/shared.js +1 -16
  207. package/modern/DateTimeField/DateTimeField.js +6 -0
  208. package/modern/DateTimePicker/DateTimePicker.js +19 -2
  209. package/modern/DateTimePicker/DateTimePickerTabs.js +6 -5
  210. package/modern/DateTimePicker/DateTimePickerToolbar.js +46 -22
  211. package/modern/DesktopDatePicker/DesktopDatePicker.js +5 -4
  212. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +57 -10
  213. package/modern/DesktopTimePicker/DesktopTimePicker.js +7 -3
  214. package/modern/LocalizationProvider/LocalizationProvider.js +1 -0
  215. package/modern/MobileDatePicker/MobileDatePicker.js +3 -2
  216. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  217. package/modern/MobileTimePicker/MobileTimePicker.js +5 -1
  218. package/modern/MonthCalendar/MonthCalendar.js +2 -2
  219. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  220. package/modern/TimeField/TimeField.js +6 -0
  221. package/modern/YearCalendar/YearCalendar.js +2 -2
  222. package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +147 -0
  223. package/modern/dateTimeViewRenderers/index.js +1 -0
  224. package/modern/dateViewRenderers/dateViewRenderers.js +2 -2
  225. package/modern/{internals/components/icons → icons}/index.js +7 -7
  226. package/modern/index.js +3 -2
  227. package/modern/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +5 -0
  228. package/modern/internals/components/DateTimeViewWrapper/index.js +1 -0
  229. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  230. package/modern/internals/components/PickersToolbarButton.js +8 -3
  231. package/modern/internals/constants/dimensions.js +2 -1
  232. package/modern/internals/hooks/useField/useField.js +8 -3
  233. package/modern/internals/hooks/useField/useFieldState.js +22 -2
  234. package/modern/internals/hooks/usePicker/usePickerViews.js +8 -10
  235. package/modern/internals/hooks/useViews.js +10 -9
  236. package/modern/internals/index.js +2 -1
  237. package/modern/internals/utils/date-time-utils.js +41 -0
  238. package/modern/internals/utils/date-utils.js +35 -0
  239. package/modern/internals/utils/fields.js +1 -1
  240. package/modern/internals/utils/getDefaultReferenceDate.js +58 -0
  241. package/modern/internals/utils/time-utils.js +28 -0
  242. package/modern/internals/utils/valueManagers.js +21 -3
  243. package/modern/internals/utils/views.js +6 -2
  244. package/modern/locales/deDE.js +2 -2
  245. package/modern/locales/index.js +17 -15
  246. package/modern/locales/roRO.js +60 -0
  247. package/modern/locales/viVN.js +57 -0
  248. package/modern/models/index.js +1 -0
  249. package/modern/models/timezone.js +1 -0
  250. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.js +13 -1
  251. package/modern/tests/describeGregorianAdapter/testCalculations.js +347 -79
  252. package/modern/tests/describeGregorianAdapter/testLocalization.js +3 -3
  253. package/modern/tests/describeValidation/testDayViewValidation.js +129 -52
  254. package/modern/tests/describeValidation/testMinutesViewValidation.js +3 -10
  255. package/modern/tests/describeValidation/testMonthViewValidation.js +3 -10
  256. package/modern/tests/describeValidation/testYearViewValidation.js +3 -10
  257. package/modern/tests/describeValue/describeValue.js +13 -4
  258. package/modern/tests/describeValue/testControlledUnControlled.js +15 -4
  259. package/modern/tests/describeValue/testPickerActionBar.js +19 -17
  260. package/modern/tests/describeValue/testPickerOpenCloseLifeCycle.js +10 -7
  261. package/modern/timeViewRenderers/timeViewRenderers.js +1 -1
  262. package/node/AdapterDateFns/AdapterDateFns.js +38 -19
  263. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +35 -16
  264. package/node/AdapterDayjs/AdapterDayjs.js +142 -25
  265. package/node/AdapterLuxon/AdapterLuxon.js +77 -28
  266. package/node/AdapterMoment/AdapterMoment.js +102 -13
  267. package/node/AdapterMomentHijri/AdapterMomentHijri.js +30 -19
  268. package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +30 -19
  269. package/node/DateCalendar/DateCalendar.js +2 -2
  270. package/node/DateCalendar/PickersCalendarHeader.js +2 -2
  271. package/node/DateField/DateField.js +6 -0
  272. package/node/DatePicker/DatePickerToolbar.js +6 -15
  273. package/node/DatePicker/shared.js +0 -17
  274. package/node/DateTimeField/DateTimeField.js +6 -0
  275. package/node/DateTimePicker/DateTimePicker.js +19 -2
  276. package/node/DateTimePicker/DateTimePickerTabs.js +6 -5
  277. package/node/DateTimePicker/DateTimePickerToolbar.js +46 -22
  278. package/node/DesktopDatePicker/DesktopDatePicker.js +4 -3
  279. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +59 -12
  280. package/node/DesktopTimePicker/DesktopTimePicker.js +9 -5
  281. package/node/LocalizationProvider/LocalizationProvider.js +1 -0
  282. package/node/MobileDatePicker/MobileDatePicker.js +2 -1
  283. package/node/MobileDateTimePicker/MobileDateTimePicker.js +7 -3
  284. package/node/MobileTimePicker/MobileTimePicker.js +7 -3
  285. package/node/MonthCalendar/MonthCalendar.js +2 -2
  286. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +3 -2
  287. package/node/TimeField/TimeField.js +6 -0
  288. package/node/YearCalendar/YearCalendar.js +2 -2
  289. package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +156 -0
  290. package/node/dateTimeViewRenderers/index.js +12 -0
  291. package/node/dateViewRenderers/dateViewRenderers.js +3 -3
  292. package/node/{internals/components/icons → icons}/index.js +15 -15
  293. package/node/index.js +13 -1
  294. package/node/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +12 -0
  295. package/node/internals/components/DateTimeViewWrapper/index.js +12 -0
  296. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  297. package/node/internals/components/PickersToolbarButton.js +8 -3
  298. package/node/internals/constants/dimensions.js +4 -2
  299. package/node/internals/hooks/useField/useField.js +8 -3
  300. package/node/internals/hooks/useField/useFieldState.js +22 -2
  301. package/node/internals/hooks/usePicker/usePickerViews.js +8 -10
  302. package/node/internals/hooks/useViews.js +10 -9
  303. package/node/internals/index.js +13 -0
  304. package/node/internals/utils/date-time-utils.js +49 -0
  305. package/node/internals/utils/date-utils.js +40 -2
  306. package/node/internals/utils/fields.js +1 -1
  307. package/node/internals/utils/getDefaultReferenceDate.js +66 -0
  308. package/node/internals/utils/time-utils.js +32 -2
  309. package/node/internals/utils/valueManagers.js +21 -2
  310. package/node/internals/utils/views.js +8 -5
  311. package/node/locales/deDE.js +2 -2
  312. package/node/locales/index.js +119 -97
  313. package/node/locales/roRO.js +67 -0
  314. package/node/locales/viVN.js +64 -0
  315. package/node/models/index.js +11 -0
  316. package/node/models/timezone.js +5 -0
  317. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.js +13 -1
  318. package/node/tests/describeGregorianAdapter/testCalculations.js +347 -79
  319. package/node/tests/describeGregorianAdapter/testLocalization.js +3 -4
  320. package/node/tests/describeValidation/testDayViewValidation.js +129 -52
  321. package/node/tests/describeValidation/testMinutesViewValidation.js +3 -10
  322. package/node/tests/describeValidation/testMonthViewValidation.js +3 -10
  323. package/node/tests/describeValidation/testYearViewValidation.js +3 -10
  324. package/node/tests/describeValue/describeValue.js +13 -4
  325. package/node/tests/describeValue/testControlledUnControlled.js +15 -4
  326. package/node/tests/describeValue/testPickerActionBar.js +19 -16
  327. package/node/tests/describeValue/testPickerOpenCloseLifeCycle.js +9 -6
  328. package/node/timeViewRenderers/timeViewRenderers.js +1 -1
  329. package/package.json +4 -4
  330. package/tests/describeGregorianAdapter/describeGregorianAdapter.js +14 -1
  331. package/tests/describeGregorianAdapter/testCalculations.js +347 -79
  332. package/tests/describeGregorianAdapter/testLocalization.js +3 -3
  333. package/tests/describeValidation/testDayViewValidation.js +129 -52
  334. package/tests/describeValidation/testMinutesViewValidation.js +3 -10
  335. package/tests/describeValidation/testMonthViewValidation.js +3 -10
  336. package/tests/describeValidation/testYearViewValidation.js +3 -10
  337. package/tests/describeValue/describeValue.js +13 -4
  338. package/tests/describeValue/testControlledUnControlled.js +15 -4
  339. package/tests/describeValue/testPickerActionBar.js +19 -17
  340. package/tests/describeValue/testPickerOpenCloseLifeCycle.js +10 -7
  341. package/timeViewRenderers/timeViewRenderers.d.ts +4 -4
  342. package/timeViewRenderers/timeViewRenderers.js +1 -1
  343. package/internals/components/icons/index.d.ts +0 -42
@@ -18,8 +18,9 @@ var _PickersToolbarButton = require("../internals/components/PickersToolbarButto
18
18
  var _useUtils = require("../internals/hooks/useUtils");
19
19
  var _dateTimePickerToolbarClasses = require("./dateTimePickerToolbarClasses");
20
20
  var _dateHelpersHooks = require("../internals/hooks/date-helpers-hooks");
21
+ var _dimensions = require("../internals/constants/dimensions");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
- const _excluded = ["ampm", "ampmInClock", "value", "onChange", "view", "isLandscape", "onViewChange", "toolbarFormat", "toolbarPlaceholder", "views", "disabled", "readOnly"];
23
+ const _excluded = ["ampm", "ampmInClock", "value", "onChange", "view", "isLandscape", "onViewChange", "toolbarFormat", "toolbarPlaceholder", "views", "disabled", "readOnly", "toolbarVariant"];
23
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
25
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
26
  const useUtilityClasses = ownerState => {
@@ -44,10 +45,13 @@ const DateTimePickerToolbarRoot = (0, _styles.styled)(_PickersToolbar.PickersToo
44
45
  slot: 'Root',
45
46
  overridesResolver: (props, styles) => styles.root
46
47
  })(({
47
- theme
48
+ theme,
49
+ ownerState
48
50
  }) => ({
49
- paddingLeft: 16,
50
- paddingRight: 16,
51
+ paddingLeft: ownerState.toolbarVariant === 'desktop' && !ownerState.isLandscape ? 24 : 16,
52
+ paddingRight: ownerState.toolbarVariant === 'desktop' && !ownerState.isLandscape ? 0 : 16,
53
+ borderBottom: ownerState.toolbarVariant === 'desktop' ? `1px solid ${(theme.vars || theme).palette.divider}` : undefined,
54
+ borderRight: ownerState.toolbarVariant === 'desktop' && ownerState.isLandscape ? `1px solid ${(theme.vars || theme).palette.divider}` : undefined,
51
55
  justifyContent: 'space-around',
52
56
  position: 'relative',
53
57
  [`& .${_pickersToolbarClasses.pickersToolbarClasses.penIconButton}`]: (0, _extends2.default)({
@@ -93,11 +97,15 @@ const DateTimePickerToolbarTimeContainer = (0, _styles.styled)('div', {
93
97
  theme,
94
98
  ownerState
95
99
  }) => {
96
- const direction = ownerState.isLandscape ? 'column' : 'row';
100
+ const direction = ownerState.isLandscape && ownerState.toolbarVariant !== 'desktop' ? 'column' : 'row';
97
101
  return (0, _extends2.default)({
98
102
  display: 'flex',
99
103
  flexDirection: direction
100
- }, theme.direction === 'rtl' && {
104
+ }, ownerState.toolbarVariant === 'desktop' && (0, _extends2.default)({}, !ownerState.isLandscape && {
105
+ gap: 9,
106
+ marginRight: 4,
107
+ alignSelf: 'flex-end'
108
+ }), theme.direction === 'rtl' && {
101
109
  flexDirection: `${direction}-reverse`
102
110
  });
103
111
  });
@@ -106,9 +114,12 @@ const DateTimePickerToolbarTimeDigitsContainer = (0, _styles.styled)('div', {
106
114
  slot: 'TimeDigitsContainer',
107
115
  overridesResolver: (props, styles) => styles.timeDigitsContainer
108
116
  })(({
109
- theme
117
+ theme,
118
+ ownerState
110
119
  }) => (0, _extends2.default)({
111
120
  display: 'flex'
121
+ }, ownerState.toolbarVariant === 'desktop' && {
122
+ gap: 1.5
112
123
  }, theme.direction === 'rtl' && {
113
124
  flexDirection: 'row-reverse'
114
125
  }));
@@ -125,10 +136,12 @@ const DateTimePickerToolbarSeparator = (0, _styles.styled)(_PickersToolbarText.P
125
136
  name: 'MuiDateTimePickerToolbar',
126
137
  slot: 'Separator',
127
138
  overridesResolver: (props, styles) => styles.separator
128
- })({
129
- margin: '0 4px 0 2px',
139
+ })(({
140
+ ownerState
141
+ }) => ({
142
+ margin: ownerState.toolbarVariant === 'desktop' ? 0 : '0 4px 0 2px',
130
143
  cursor: 'default'
131
- });
144
+ }));
132
145
 
133
146
  // Taken from TimePickerToolbar
134
147
  const DateTimePickerToolbarAmPmSelection = (0, _styles.styled)('div', {
@@ -173,7 +186,8 @@ function DateTimePickerToolbar(inProps) {
173
186
  toolbarPlaceholder = '––',
174
187
  views,
175
188
  disabled,
176
- readOnly
189
+ readOnly,
190
+ toolbarVariant = 'mobile'
177
191
  } = props,
178
192
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
179
193
  const ownerState = props;
@@ -183,6 +197,7 @@ function DateTimePickerToolbar(inProps) {
183
197
  handleMeridiemChange
184
198
  } = (0, _dateHelpersHooks.useMeridiemMode)(value, ampm, onChange);
185
199
  const showAmPmControl = Boolean(ampm && !ampmInClock);
200
+ const isDesktop = toolbarVariant === 'desktop';
186
201
  const localeText = (0, _useUtils.useLocaleText)();
187
202
  const theme = (0, _styles.useTheme)();
188
203
  const classes = useUtilityClasses((0, _extends2.default)({}, ownerState, {
@@ -215,7 +230,7 @@ function DateTimePickerToolbar(inProps) {
215
230
  value: value ? utils.format(value, 'year') : '–'
216
231
  }), views.includes('day') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersToolbarButton.PickersToolbarButton, {
217
232
  tabIndex: -1,
218
- variant: "h4",
233
+ variant: isDesktop ? 'h5' : 'h4',
219
234
  onClick: () => onViewChange('day'),
220
235
  selected: view === 'day',
221
236
  value: dateText
@@ -225,41 +240,44 @@ function DateTimePickerToolbar(inProps) {
225
240
  ownerState: ownerState,
226
241
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(DateTimePickerToolbarTimeDigitsContainer, {
227
242
  className: classes.timeDigitsContainer,
243
+ ownerState: ownerState,
228
244
  children: [views.includes('hours') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersToolbarButton.PickersToolbarButton, {
229
- variant: "h3",
245
+ variant: isDesktop ? 'h5' : 'h3',
246
+ width: isDesktop && !isLandscape ? _dimensions.MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
230
247
  onClick: () => onViewChange('hours'),
231
248
  selected: view === 'hours',
232
249
  value: value ? formatHours(value) : '--'
233
250
  }), views.includes('minutes') && /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
234
251
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DateTimePickerToolbarSeparator, {
235
- variant: "h3",
252
+ variant: isDesktop ? 'h5' : 'h3',
236
253
  value: ":",
237
254
  className: classes.separator,
238
255
  ownerState: ownerState
239
256
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersToolbarButton.PickersToolbarButton, {
240
- variant: "h3",
257
+ variant: isDesktop ? 'h5' : 'h3',
258
+ width: isDesktop && !isLandscape ? _dimensions.MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
241
259
  onClick: () => onViewChange('minutes'),
242
260
  selected: view === 'minutes',
243
261
  value: value ? utils.format(value, 'minutes') : '--'
244
262
  })]
245
263
  }), views.includes('seconds') && /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
246
264
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DateTimePickerToolbarSeparator, {
247
- variant: "h3",
265
+ variant: isDesktop ? 'h5' : 'h3',
248
266
  value: ":",
249
267
  className: classes.separator,
250
268
  ownerState: ownerState
251
269
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersToolbarButton.PickersToolbarButton, {
252
- variant: "h3",
270
+ variant: isDesktop ? 'h5' : 'h3',
271
+ width: isDesktop && !isLandscape ? _dimensions.MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
253
272
  onClick: () => onViewChange('seconds'),
254
273
  selected: view === 'seconds',
255
274
  value: value ? utils.format(value, 'seconds') : '--'
256
275
  })]
257
276
  })]
258
- }), showAmPmControl && /*#__PURE__*/(0, _jsxRuntime.jsxs)(DateTimePickerToolbarAmPmSelection, {
277
+ }), showAmPmControl && !isDesktop && /*#__PURE__*/(0, _jsxRuntime.jsxs)(DateTimePickerToolbarAmPmSelection, {
259
278
  className: classes.ampmSelection,
260
279
  ownerState: ownerState,
261
280
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersToolbarButton.PickersToolbarButton, {
262
- disableRipple: true,
263
281
  variant: "subtitle2",
264
282
  selected: meridiemMode === 'am',
265
283
  typographyClassName: classes.ampmLabel,
@@ -267,7 +285,6 @@ function DateTimePickerToolbar(inProps) {
267
285
  onClick: readOnly ? undefined : () => handleMeridiemChange('am'),
268
286
  disabled: disabled
269
287
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersToolbarButton.PickersToolbarButton, {
270
- disableRipple: true,
271
288
  variant: "subtitle2",
272
289
  selected: meridiemMode === 'pm',
273
290
  typographyClassName: classes.ampmLabel,
@@ -275,6 +292,12 @@ function DateTimePickerToolbar(inProps) {
275
292
  onClick: readOnly ? undefined : () => handleMeridiemChange('pm'),
276
293
  disabled: disabled
277
294
  })]
295
+ }), ampm && isDesktop && /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersToolbarButton.PickersToolbarButton, {
296
+ variant: "h5",
297
+ onClick: () => onViewChange('meridiem'),
298
+ selected: view === 'meridiem',
299
+ value: value && meridiemMode ? utils.getMeridiemText(meridiemMode) : '--',
300
+ width: _dimensions.MULTI_SECTION_CLOCK_SECTION_WIDTH
278
301
  })]
279
302
  })]
280
303
  }));
@@ -319,10 +342,11 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
319
342
  * @default "––"
320
343
  */
321
344
  toolbarPlaceholder: _propTypes.default.node,
345
+ toolbarVariant: _propTypes.default.oneOf(['desktop', 'mobile']),
322
346
  value: _propTypes.default.any,
323
347
  /**
324
348
  * Currently visible picker view.
325
349
  */
326
- view: _propTypes.default.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired,
327
- views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
350
+ view: _propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired,
351
+ views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
328
352
  } : void 0;
@@ -13,10 +13,11 @@ var _valueManagers = require("../internals/utils/valueManagers");
13
13
  var _shared = require("../DatePicker/shared");
14
14
  var _internals = require("../internals");
15
15
  var _useDesktopPicker = require("../internals/hooks/useDesktopPicker");
16
- var _icons = require("../internals/components/icons");
16
+ var _icons = require("../icons");
17
17
  var _DateField = require("../DateField");
18
18
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
19
19
  var _dateViewRenderers = require("../dateViewRenderers");
20
+ var _dateUtils = require("../internals/utils/date-utils");
20
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
23
  const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker(inProps, ref) {
@@ -34,10 +35,10 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
34
35
  // Props with the default values specific to the desktop variant
35
36
  const props = (0, _extends2.default)({}, defaultizedProps, {
36
37
  viewRenderers,
37
- format: (0, _shared.getDatePickerFieldFormat)(utils, defaultizedProps),
38
+ format: (0, _dateUtils.resolveDateFormat)(utils, defaultizedProps, false),
38
39
  yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
39
40
  slots: (0, _extends2.default)({
40
- openPickerIcon: _icons.Calendar,
41
+ openPickerIcon: _icons.CalendarIcon,
41
42
  field: _DateField.DateField
42
43
  }, defaultizedProps.slots),
43
44
  slotProps: (0, _extends2.default)({}, defaultizedProps.slotProps, {
@@ -12,36 +12,62 @@ var _utils = require("@mui/base/utils");
12
12
  var _valueManagers = require("../internals/utils/valueManagers");
13
13
  var _DateTimeField = require("../DateTimeField");
14
14
  var _shared = require("../DateTimePicker/shared");
15
- var _dateViewRenderers = require("../dateViewRenderers");
16
- var _internals = require("../internals");
17
- var _icons = require("../internals/components/icons");
15
+ var _dateViewRenderers = require("../dateViewRenderers/dateViewRenderers");
16
+ var _dateTimeViewRenderers = require("../dateTimeViewRenderers");
17
+ var _useUtils = require("../internals/hooks/useUtils");
18
+ var _validateDateTime = require("../internals/utils/validation/validateDateTime");
19
+ var _icons = require("../icons");
18
20
  var _useDesktopPicker = require("../internals/hooks/useDesktopPicker");
19
21
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
22
+ var _dateTimeUtils = require("../internals/utils/date-time-utils");
20
23
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
25
  const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {
23
- const localeText = (0, _internals.useLocaleText)();
26
+ const localeText = (0, _useUtils.useLocaleText)();
27
+ const utils = (0, _useUtils.useUtils)();
24
28
 
25
29
  // Props with the default values common to all date time pickers
26
30
  const defaultizedProps = (0, _shared.useDateTimePickerDefaultizedProps)(inProps, 'MuiDesktopDateTimePicker');
27
- const viewRenderers = (0, _extends2.default)({
31
+ const timeSteps = (0, _extends2.default)({
32
+ hours: 1,
33
+ minutes: 5,
34
+ seconds: 5
35
+ }, defaultizedProps.timeSteps);
36
+ const shouldUseNewRenderer = !defaultizedProps.viewRenderers || Object.keys(defaultizedProps.viewRenderers).length === 0;
37
+ const viewRenderers =
38
+ // we can only ensure the expected two-column layout if none of the renderers are overridden
39
+ shouldUseNewRenderer ? {
40
+ day: _dateTimeViewRenderers.renderDesktopDateTimeView,
41
+ month: _dateTimeViewRenderers.renderDesktopDateTimeView,
42
+ year: _dateTimeViewRenderers.renderDesktopDateTimeView,
43
+ hours: _dateTimeViewRenderers.renderDesktopDateTimeView,
44
+ minutes: _dateTimeViewRenderers.renderDesktopDateTimeView,
45
+ seconds: _dateTimeViewRenderers.renderDesktopDateTimeView,
46
+ meridiem: _dateTimeViewRenderers.renderDesktopDateTimeView
47
+ } : (0, _extends2.default)({
28
48
  day: _dateViewRenderers.renderDateViewCalendar,
29
49
  month: _dateViewRenderers.renderDateViewCalendar,
30
50
  year: _dateViewRenderers.renderDateViewCalendar,
31
51
  hours: null,
32
52
  minutes: null,
33
- seconds: null
53
+ seconds: null,
54
+ meridiem: null
34
55
  }, defaultizedProps.viewRenderers);
35
56
  const ampmInClock = defaultizedProps.ampmInClock ?? true;
57
+ // add "accept" action only when the new date time view renderers are used
58
+ const actionBarActions = shouldUseNewRenderer ? ['accept'] : [];
36
59
 
37
60
  // Props with the default values specific to the desktop variant
38
61
  const props = (0, _extends2.default)({}, defaultizedProps, {
39
62
  viewRenderers,
63
+ format: (0, _dateTimeUtils.resolveDateTimeFormat)(utils, defaultizedProps),
64
+ views: defaultizedProps.ampm ? [...defaultizedProps.views, 'meridiem'] : defaultizedProps.views,
40
65
  yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
41
66
  ampmInClock,
67
+ timeSteps,
42
68
  slots: (0, _extends2.default)({
43
69
  field: _DateTimeField.DateTimeField,
44
- openPickerIcon: _icons.Calendar
70
+ openPickerIcon: _icons.CalendarIcon
45
71
  }, defaultizedProps.slots),
46
72
  slotProps: (0, _extends2.default)({}, defaultizedProps.slotProps, {
47
73
  field: ownerState => (0, _extends2.default)({}, (0, _utils.resolveComponentProps)(defaultizedProps.slotProps?.field, ownerState), (0, _extractValidationProps.extractValidationProps)(defaultizedProps), {
@@ -49,11 +75,15 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
49
75
  }),
50
76
  toolbar: (0, _extends2.default)({
51
77
  hidden: true,
52
- ampmInClock
78
+ ampmInClock,
79
+ toolbarVariant: shouldUseNewRenderer ? 'desktop' : 'mobile'
53
80
  }, defaultizedProps.slotProps?.toolbar),
54
81
  tabs: (0, _extends2.default)({
55
82
  hidden: true
56
- }, defaultizedProps.slotProps?.tabs)
83
+ }, defaultizedProps.slotProps?.tabs),
84
+ actionBar: (0, _extends2.default)({
85
+ actions: actionBarActions
86
+ }, defaultizedProps.slotProps?.actionBar)
57
87
  })
58
88
  });
59
89
  const {
@@ -63,7 +93,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
63
93
  valueManager: _valueManagers.singleItemValueManager,
64
94
  valueType: 'date-time',
65
95
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
66
- validator: _internals.validateDateTime
96
+ validator: _validateDateTime.validateDateTime
67
97
  });
68
98
  return renderPicker();
69
99
  });
@@ -302,7 +332,7 @@ DesktopDateTimePicker.propTypes = {
302
332
  * Used when the component view is not controlled.
303
333
  * Must be a valid option from `views` list.
304
334
  */
305
- openTo: _propTypes.default.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),
335
+ openTo: _propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
306
336
  /**
307
337
  * Force rendering in particular orientation.
308
338
  */
@@ -380,6 +410,11 @@ DesktopDateTimePicker.propTypes = {
380
410
  * @default false
381
411
  */
382
412
  showDaysOutsideCurrentMonth: _propTypes.default.bool,
413
+ /**
414
+ * If `true`, disabled digital clock items will not be rendered.
415
+ * @default false
416
+ */
417
+ skipDisabled: _propTypes.default.bool,
383
418
  /**
384
419
  * The props used for each component slot.
385
420
  * @default {}
@@ -394,6 +429,17 @@ DesktopDateTimePicker.propTypes = {
394
429
  * The system prop that allows defining system overrides as well as additional CSS styles.
395
430
  */
396
431
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
432
+ /**
433
+ * The time steps between two time unit options.
434
+ * For example, if `timeStep.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.
435
+ * When single column time renderer is used, only `timeStep.minutes` will be used.
436
+ * @default{ hours: 1, minutes: 5, seconds: 5 }
437
+ */
438
+ timeSteps: _propTypes.default.shape({
439
+ hours: _propTypes.default.number,
440
+ minutes: _propTypes.default.number,
441
+ seconds: _propTypes.default.number
442
+ }),
397
443
  /**
398
444
  * The selected value.
399
445
  * Used when the component is controlled.
@@ -404,7 +450,7 @@ DesktopDateTimePicker.propTypes = {
404
450
  * Used when the component view is controlled.
405
451
  * Must be a valid option from `views` list.
406
452
  */
407
- view: _propTypes.default.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),
453
+ view: _propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
408
454
  /**
409
455
  * Define custom view renderers for each section.
410
456
  * If `null`, the section will only have field editing.
@@ -413,6 +459,7 @@ DesktopDateTimePicker.propTypes = {
413
459
  viewRenderers: _propTypes.default.shape({
414
460
  day: _propTypes.default.func,
415
461
  hours: _propTypes.default.func,
462
+ meridiem: _propTypes.default.func,
416
463
  minutes: _propTypes.default.func,
417
464
  month: _propTypes.default.func,
418
465
  seconds: _propTypes.default.func,
@@ -12,15 +12,18 @@ var _utils = require("@mui/base/utils");
12
12
  var _valueManagers = require("../internals/utils/valueManagers");
13
13
  var _TimeField = require("../TimeField");
14
14
  var _shared = require("../TimePicker/shared");
15
- var _internals = require("../internals");
16
- var _icons = require("../internals/components/icons");
15
+ var _useUtils = require("../internals/hooks/useUtils");
16
+ var _validateTime = require("../internals/utils/validation/validateTime");
17
+ var _icons = require("../icons");
17
18
  var _useDesktopPicker = require("../internals/hooks/useDesktopPicker");
18
19
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
19
20
  var _timeViewRenderers = require("../timeViewRenderers");
21
+ var _timeUtils = require("../internals/utils/time-utils");
20
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
24
  const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePicker(inProps, ref) {
23
- const localeText = (0, _internals.useLocaleText)();
25
+ const localeText = (0, _useUtils.useLocaleText)();
26
+ const utils = (0, _useUtils.useUtils)();
24
27
 
25
28
  // Props with the default values common to all time pickers
26
29
  const defaultizedProps = (0, _shared.useTimePickerDefaultizedProps)(inProps, 'MuiDesktopTimePicker');
@@ -49,12 +52,13 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
49
52
  ampmInClock,
50
53
  timeSteps,
51
54
  viewRenderers,
55
+ format: (0, _timeUtils.resolveTimeFormat)(utils, defaultizedProps),
52
56
  // Setting only `hours` time view in case of single column time picker
53
57
  // Allows for easy view lifecycle management
54
58
  views: shouldRenderTimeInASingleColumn ? ['hours'] : views,
55
59
  slots: (0, _extends2.default)({
56
60
  field: _TimeField.TimeField,
57
- openPickerIcon: _icons.Clock
61
+ openPickerIcon: _icons.ClockIcon
58
62
  }, defaultizedProps.slots),
59
63
  slotProps: (0, _extends2.default)({}, defaultizedProps.slotProps, {
60
64
  field: ownerState => (0, _extends2.default)({}, (0, _utils.resolveComponentProps)(defaultizedProps.slotProps?.field, ownerState), (0, _extractValidationProps.extractValidationProps)(defaultizedProps), {
@@ -76,7 +80,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
76
80
  valueManager: _valueManagers.singleItemValueManager,
77
81
  valueType: 'time',
78
82
  getOpenDialogAriaText: localeText.openTimePickerDialogue,
79
- validator: _internals.validateTime
83
+ validator: _validateTime.validateTime
80
84
  });
81
85
  return renderPicker();
82
86
  });
@@ -122,6 +122,7 @@ process.env.NODE_ENV !== "production" ? LocalizationProvider.propTypes = {
122
122
  keyboardDateTime: _propTypes.default.string,
123
123
  keyboardDateTime12h: _propTypes.default.string,
124
124
  keyboardDateTime24h: _propTypes.default.string,
125
+ meridiem: _propTypes.default.string,
125
126
  minutes: _propTypes.default.string,
126
127
  month: _propTypes.default.string,
127
128
  monthAndDate: _propTypes.default.string,
@@ -16,6 +16,7 @@ var _DateField = require("../DateField");
16
16
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
17
17
  var _valueManagers = require("../internals/utils/valueManagers");
18
18
  var _dateViewRenderers = require("../dateViewRenderers");
19
+ var _dateUtils = require("../internals/utils/date-utils");
19
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
21
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
22
  const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker(inProps, ref) {
@@ -33,7 +34,7 @@ const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker
33
34
  // Props with the default values specific to the mobile variant
34
35
  const props = (0, _extends2.default)({}, defaultizedProps, {
35
36
  viewRenderers,
36
- format: (0, _shared.getDatePickerFieldFormat)(utils, defaultizedProps),
37
+ format: (0, _dateUtils.resolveDateFormat)(utils, defaultizedProps, false),
37
38
  slots: (0, _extends2.default)({
38
39
  field: _DateField.DateField
39
40
  }, defaultizedProps.slots),
@@ -12,15 +12,18 @@ var _utils = require("@mui/base/utils");
12
12
  var _valueManagers = require("../internals/utils/valueManagers");
13
13
  var _DateTimeField = require("../DateTimeField");
14
14
  var _shared = require("../DateTimePicker/shared");
15
- var _internals = require("../internals");
15
+ var _useUtils = require("../internals/hooks/useUtils");
16
+ var _validateDateTime = require("../internals/utils/validation/validateDateTime");
16
17
  var _useMobilePicker = require("../internals/hooks/useMobilePicker");
17
18
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
18
19
  var _dateViewRenderers = require("../dateViewRenderers");
19
20
  var _timeViewRenderers = require("../timeViewRenderers");
21
+ var _dateTimeUtils = require("../internals/utils/date-time-utils");
20
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
24
  const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {
23
- const localeText = (0, _internals.useLocaleText)();
25
+ const localeText = (0, _useUtils.useLocaleText)();
26
+ const utils = (0, _useUtils.useUtils)();
24
27
 
25
28
  // Props with the default values common to all date time pickers
26
29
  const defaultizedProps = (0, _shared.useDateTimePickerDefaultizedProps)(inProps, 'MuiMobileDateTimePicker');
@@ -37,6 +40,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
37
40
  // Props with the default values specific to the mobile variant
38
41
  const props = (0, _extends2.default)({}, defaultizedProps, {
39
42
  viewRenderers,
43
+ format: (0, _dateTimeUtils.resolveDateTimeFormat)(utils, defaultizedProps),
40
44
  ampmInClock,
41
45
  slots: (0, _extends2.default)({
42
46
  field: _DateTimeField.DateTimeField
@@ -61,7 +65,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
61
65
  valueManager: _valueManagers.singleItemValueManager,
62
66
  valueType: 'date-time',
63
67
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
64
- validator: _internals.validateDateTime
68
+ validator: _validateDateTime.validateDateTime
65
69
  });
66
70
  return renderPicker();
67
71
  });
@@ -12,14 +12,17 @@ var _utils = require("@mui/base/utils");
12
12
  var _valueManagers = require("../internals/utils/valueManagers");
13
13
  var _TimeField = require("../TimeField");
14
14
  var _shared = require("../TimePicker/shared");
15
- var _internals = require("../internals");
15
+ var _useUtils = require("../internals/hooks/useUtils");
16
+ var _validateTime = require("../internals/utils/validation/validateTime");
16
17
  var _useMobilePicker = require("../internals/hooks/useMobilePicker");
17
18
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
18
19
  var _timeViewRenderers = require("../timeViewRenderers");
20
+ var _timeUtils = require("../internals/utils/time-utils");
19
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
23
  const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker(inProps, ref) {
22
- const localeText = (0, _internals.useLocaleText)();
24
+ const localeText = (0, _useUtils.useLocaleText)();
25
+ const utils = (0, _useUtils.useUtils)();
23
26
 
24
27
  // Props with the default values common to all time pickers
25
28
  const defaultizedProps = (0, _shared.useTimePickerDefaultizedProps)(inProps, 'MuiMobileTimePicker');
@@ -34,6 +37,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
34
37
  const props = (0, _extends2.default)({}, defaultizedProps, {
35
38
  ampmInClock,
36
39
  viewRenderers,
40
+ format: (0, _timeUtils.resolveTimeFormat)(utils, defaultizedProps),
37
41
  slots: (0, _extends2.default)({
38
42
  field: _TimeField.TimeField
39
43
  }, defaultizedProps.slots),
@@ -54,7 +58,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
54
58
  valueManager: _valueManagers.singleItemValueManager,
55
59
  valueType: 'time',
56
60
  getOpenDialogAriaText: localeText.openTimePickerDialogue,
57
- validator: _internals.validateTime
61
+ validator: _validateTime.validateTime
58
62
  });
59
63
  return renderPicker();
60
64
  });
@@ -114,7 +114,7 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
114
114
  onFocusedViewChange(newHasFocus);
115
115
  }
116
116
  });
117
- const isMonthDisabled = (0, _utils.unstable_useEventCallback)(month => {
117
+ const isMonthDisabled = React.useCallback(month => {
118
118
  const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);
119
119
  const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);
120
120
  if (utils.isBefore(month, firstEnabledMonth)) {
@@ -127,7 +127,7 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
127
127
  return false;
128
128
  }
129
129
  return shouldDisableMonth(month);
130
- });
130
+ }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableMonth, utils]);
131
131
  const handleMonthSelection = (0, _utils.unstable_useEventCallback)((event, month) => {
132
132
  if (readOnly) {
133
133
  return;
@@ -52,7 +52,8 @@ const MultiSectionDigitalClockSectionRoot = (0, _styles.styled)(_MenuList.defaul
52
52
  '&:after': {
53
53
  display: 'block',
54
54
  content: '""',
55
- height: 188
55
+ // subtracting the height of one item, extra margin and borders to make sure the max height is correct
56
+ height: 'calc(100% - 40px - 6px)'
56
57
  }
57
58
  }));
58
59
  const MultiSectionDigitalClockSectionItem = (0, _styles.styled)(_MenuItem.default, {
@@ -64,7 +65,7 @@ const MultiSectionDigitalClockSectionItem = (0, _styles.styled)(_MenuItem.defaul
64
65
  }) => ({
65
66
  padding: 8,
66
67
  margin: '2px 4px',
67
- width: 48,
68
+ width: _dimensions.MULTI_SECTION_CLOCK_SECTION_WIDTH,
68
69
  justifyContent: 'center',
69
70
  '&:first-of-type': {
70
71
  marginTop: 4
@@ -255,6 +255,12 @@ process.env.NODE_ENV !== "production" ? TimeField.propTypes = {
255
255
  * @default false
256
256
  */
257
257
  readOnly: _propTypes.default.bool,
258
+ /**
259
+ * The date used to generate a part of the date-time that is not present in the format when both `value` and `defaultValue` are not present.
260
+ * For example, on time fields it will be used to determine the date to set.
261
+ * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
262
+ */
263
+ referenceDate: _propTypes.default.any,
258
264
  /**
259
265
  * If `true`, the label is displayed as required and the `input` element is required.
260
266
  * @default false
@@ -116,7 +116,7 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
116
116
  onFocusedViewChange(newHasFocus);
117
117
  }
118
118
  });
119
- const isYearDisabled = (0, _utils.unstable_useEventCallback)(dateToValidate => {
119
+ const isYearDisabled = React.useCallback(dateToValidate => {
120
120
  if (disablePast && utils.isBeforeYear(dateToValidate, now)) {
121
121
  return true;
122
122
  }
@@ -133,7 +133,7 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
133
133
  return true;
134
134
  }
135
135
  return false;
136
- });
136
+ }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, utils]);
137
137
  const handleYearSelection = (0, _utils.unstable_useEventCallback)((event, year) => {
138
138
  if (readOnly) {
139
139
  return;