@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
@@ -17,33 +17,34 @@ export const testDayViewValidation = (ElementToTest, getOptions) => {
17
17
  return;
18
18
  }
19
19
  describe('day view:', () => {
20
- const defaultProps = _extends({
20
+ const defaultProps = {
21
21
  onChange: () => {},
22
22
  open: true,
23
23
  view: 'day',
24
- reduceAnimations: true
25
- }, componentFamily.includes('legacy-') ? {
26
- componentsProps: {
27
- toolbar: {
28
- hidden: true
29
- }
30
- }
31
- } : {
24
+ reduceAnimations: true,
32
25
  slotProps: {
33
26
  toolbar: {
34
27
  hidden: true
35
28
  }
36
29
  }
37
- });
30
+ };
38
31
  it('should apply shouldDisableDate', function test() {
39
32
  render( /*#__PURE__*/_jsx(ElementToTest, _extends({}, defaultProps, {
40
33
  value: adapterToUse.date(new Date(2018, 2, 12)),
41
34
  shouldDisableDate: date => adapterToUse.isAfter(date, adapterToUse.date(new Date(2018, 2, 10)))
42
35
  })));
43
- expect(screen.getByText('9')).not.to.have.attribute('disabled');
44
- expect(screen.getByText('10')).not.to.have.attribute('disabled');
45
- expect(screen.getByText('11')).to.have.attribute('disabled');
46
- expect(screen.getByText('12')).to.have.attribute('disabled');
36
+ expect(screen.getByRole('gridcell', {
37
+ name: '9'
38
+ })).not.to.have.attribute('disabled');
39
+ expect(screen.getByRole('gridcell', {
40
+ name: '10'
41
+ })).not.to.have.attribute('disabled');
42
+ expect(screen.getByRole('gridcell', {
43
+ name: '11'
44
+ })).to.have.attribute('disabled');
45
+ expect(screen.getByRole('gridcell', {
46
+ name: '12'
47
+ })).to.have.attribute('disabled');
47
48
  });
48
49
  it('should apply shouldDisableYear', function test() {
49
50
  const {
@@ -52,16 +53,28 @@ export const testDayViewValidation = (ElementToTest, getOptions) => {
52
53
  value: adapterToUse.date(new Date(2018, 2, 12)),
53
54
  shouldDisableYear: date => adapterToUse.getYear(date) === 2018
54
55
  })));
55
- expect(screen.getByText('1')).to.have.attribute('disabled');
56
- expect(screen.getByText('15')).to.have.attribute('disabled');
57
- expect(screen.getByText('30')).to.have.attribute('disabled');
56
+ expect(screen.getByRole('gridcell', {
57
+ name: '1'
58
+ })).to.have.attribute('disabled');
59
+ expect(screen.getByRole('gridcell', {
60
+ name: '15'
61
+ })).to.have.attribute('disabled');
62
+ expect(screen.getByRole('gridcell', {
63
+ name: '30'
64
+ })).to.have.attribute('disabled');
58
65
  setProps({
59
66
  value: adapterToUse.date(new Date(2019, 0, 1))
60
67
  });
61
68
  clock.runToLast();
62
- expect(screen.getByText('1')).not.to.have.attribute('disabled');
63
- expect(screen.getByText('15')).not.to.have.attribute('disabled');
64
- expect(screen.getByText('30')).not.to.have.attribute('disabled');
69
+ expect(screen.getByRole('gridcell', {
70
+ name: '1'
71
+ })).not.to.have.attribute('disabled');
72
+ expect(screen.getByRole('gridcell', {
73
+ name: '15'
74
+ })).not.to.have.attribute('disabled');
75
+ expect(screen.getByRole('gridcell', {
76
+ name: '30'
77
+ })).not.to.have.attribute('disabled');
65
78
  });
66
79
  it('should apply shouldDisableMonth', function test() {
67
80
  const {
@@ -70,16 +83,28 @@ export const testDayViewValidation = (ElementToTest, getOptions) => {
70
83
  value: adapterToUse.date(new Date(2018, 2, 12)),
71
84
  shouldDisableMonth: date => adapterToUse.getMonth(date) === 2
72
85
  })));
73
- expect(screen.getByText('1')).to.have.attribute('disabled');
74
- expect(screen.getByText('15')).to.have.attribute('disabled');
75
- expect(screen.getByText('30')).to.have.attribute('disabled');
86
+ expect(screen.getByRole('gridcell', {
87
+ name: '1'
88
+ })).to.have.attribute('disabled');
89
+ expect(screen.getByRole('gridcell', {
90
+ name: '15'
91
+ })).to.have.attribute('disabled');
92
+ expect(screen.getByRole('gridcell', {
93
+ name: '30'
94
+ })).to.have.attribute('disabled');
76
95
  setProps({
77
96
  value: adapterToUse.date(new Date(2018, 1, 1))
78
97
  });
79
98
  clock.runToLast();
80
- expect(screen.getByText('1')).not.to.have.attribute('disabled');
81
- expect(screen.getByText('15')).not.to.have.attribute('disabled');
82
- expect(screen.getByText('28')).not.to.have.attribute('disabled');
99
+ expect(screen.getByRole('gridcell', {
100
+ name: '1'
101
+ })).not.to.have.attribute('disabled');
102
+ expect(screen.getByRole('gridcell', {
103
+ name: '15'
104
+ })).not.to.have.attribute('disabled');
105
+ expect(screen.getByRole('gridcell', {
106
+ name: '28'
107
+ })).not.to.have.attribute('disabled');
83
108
  });
84
109
  it('should apply disablePast', function test() {
85
110
  let now;
@@ -96,21 +121,27 @@ export const testDayViewValidation = (ElementToTest, getOptions) => {
96
121
  })));
97
122
  const tomorrow = adapterToUse.addDays(now, 1);
98
123
  const yesterday = adapterToUse.addDays(now, -1);
99
- expect(screen.getByText(adapterToUse.format(now, 'dayOfMonth'))).not.to.have.attribute('disabled');
124
+ expect(screen.getByRole('gridcell', {
125
+ name: adapterToUse.format(now, 'dayOfMonth')
126
+ })).not.to.have.attribute('disabled');
100
127
  if (!adapterToUse.isSameMonth(now, tomorrow)) {
101
128
  setProps({
102
129
  value: tomorrow
103
130
  });
104
131
  clock.runToLast();
105
132
  }
106
- expect(screen.getByText(adapterToUse.format(tomorrow, 'dayOfMonth'))).not.to.have.attribute('disabled');
133
+ expect(screen.getByRole('gridcell', {
134
+ name: adapterToUse.format(tomorrow, 'dayOfMonth')
135
+ })).not.to.have.attribute('disabled');
107
136
  if (!adapterToUse.isSameMonth(yesterday, tomorrow)) {
108
137
  setProps({
109
138
  value: yesterday
110
139
  });
111
140
  clock.runToLast();
112
141
  }
113
- expect(screen.getByText(adapterToUse.format(yesterday, 'dayOfMonth'))).to.have.attribute('disabled');
142
+ expect(screen.getByRole('gridcell', {
143
+ name: adapterToUse.format(yesterday, 'dayOfMonth')
144
+ })).to.have.attribute('disabled');
114
145
  });
115
146
  it('should apply disableFuture', function test() {
116
147
  let now;
@@ -127,32 +158,48 @@ export const testDayViewValidation = (ElementToTest, getOptions) => {
127
158
  })));
128
159
  const tomorrow = adapterToUse.addDays(now, 1);
129
160
  const yesterday = adapterToUse.addDays(now, -1);
130
- expect(screen.getByText(adapterToUse.format(now, 'dayOfMonth'))).not.to.have.attribute('disabled');
161
+ expect(screen.getByRole('gridcell', {
162
+ name: adapterToUse.format(now, 'dayOfMonth')
163
+ })).not.to.have.attribute('disabled');
131
164
  if (!adapterToUse.isSameMonth(now, tomorrow)) {
132
165
  setProps({
133
166
  value: tomorrow
134
167
  });
135
168
  clock.runToLast();
136
169
  }
137
- expect(screen.getByText(adapterToUse.format(tomorrow, 'dayOfMonth'))).to.have.attribute('disabled');
170
+ expect(screen.getByRole('gridcell', {
171
+ name: adapterToUse.format(tomorrow, 'dayOfMonth')
172
+ })).to.have.attribute('disabled');
138
173
  if (!adapterToUse.isSameMonth(yesterday, tomorrow)) {
139
174
  setProps({
140
175
  value: yesterday
141
176
  });
142
177
  clock.runToLast();
143
178
  }
144
- expect(screen.getByText(adapterToUse.format(yesterday, 'dayOfMonth'))).not.to.have.attribute('disabled');
179
+ expect(screen.getByRole('gridcell', {
180
+ name: adapterToUse.format(yesterday, 'dayOfMonth')
181
+ })).not.to.have.attribute('disabled');
145
182
  });
146
183
  it('should apply minDate', function test() {
147
184
  render( /*#__PURE__*/_jsx(ElementToTest, _extends({}, defaultProps, {
148
185
  value: adapterToUse.date(new Date(2019, 5, 15)),
149
186
  minDate: adapterToUse.date(new Date(2019, 5, 4))
150
187
  })));
151
- expect(screen.getByText('1')).to.have.attribute('disabled');
152
- expect(screen.getByText('3')).to.have.attribute('disabled');
153
- expect(screen.getByText('4')).not.to.have.attribute('disabled');
154
- expect(screen.getByText('5')).not.to.have.attribute('disabled');
155
- expect(screen.getByText('30')).not.to.have.attribute('disabled');
188
+ expect(screen.getByRole('gridcell', {
189
+ name: '1'
190
+ })).to.have.attribute('disabled');
191
+ expect(screen.getByRole('gridcell', {
192
+ name: '3'
193
+ })).to.have.attribute('disabled');
194
+ expect(screen.getByRole('gridcell', {
195
+ name: '4'
196
+ })).not.to.have.attribute('disabled');
197
+ expect(screen.getByRole('gridcell', {
198
+ name: '5'
199
+ })).not.to.have.attribute('disabled');
200
+ expect(screen.getByRole('gridcell', {
201
+ name: '30'
202
+ })).not.to.have.attribute('disabled');
156
203
  expect(screen.getByLabelText('Previous month')).to.have.attribute('disabled');
157
204
  expect(screen.getByLabelText('Next month')).not.to.have.attribute('disabled');
158
205
  });
@@ -161,11 +208,21 @@ export const testDayViewValidation = (ElementToTest, getOptions) => {
161
208
  value: adapterToUse.date(new Date(2019, 5, 15)),
162
209
  maxDate: adapterToUse.date(new Date(2019, 5, 4))
163
210
  })));
164
- expect(screen.getByText('1')).not.to.have.attribute('disabled');
165
- expect(screen.getByText('3')).not.to.have.attribute('disabled');
166
- expect(screen.getByText('4')).not.to.have.attribute('disabled');
167
- expect(screen.getByText('5')).to.have.attribute('disabled');
168
- expect(screen.getByText('30')).to.have.attribute('disabled');
211
+ expect(screen.getByRole('gridcell', {
212
+ name: '1'
213
+ })).not.to.have.attribute('disabled');
214
+ expect(screen.getByRole('gridcell', {
215
+ name: '3'
216
+ })).not.to.have.attribute('disabled');
217
+ expect(screen.getByRole('gridcell', {
218
+ name: '4'
219
+ })).not.to.have.attribute('disabled');
220
+ expect(screen.getByRole('gridcell', {
221
+ name: '5'
222
+ })).to.have.attribute('disabled');
223
+ expect(screen.getByRole('gridcell', {
224
+ name: '30'
225
+ })).to.have.attribute('disabled');
169
226
  expect(screen.getByLabelText('Previous month')).not.to.have.attribute('disabled');
170
227
  expect(screen.getByLabelText('Next month')).to.have.attribute('disabled');
171
228
  });
@@ -178,11 +235,21 @@ export const testDayViewValidation = (ElementToTest, getOptions) => {
178
235
  value: adapterToUse.date(new Date(2019, 5, 15)),
179
236
  maxDateTime: adapterToUse.date(new Date(2019, 5, 4, 12, 0, 0))
180
237
  })));
181
- expect(screen.getByText('1')).not.to.have.attribute('disabled');
182
- expect(screen.getByText('3')).not.to.have.attribute('disabled');
183
- expect(screen.getByText('4')).not.to.have.attribute('disabled');
184
- expect(screen.getByText('5')).to.have.attribute('disabled');
185
- expect(screen.getByText('30')).to.have.attribute('disabled');
238
+ expect(screen.getByRole('gridcell', {
239
+ name: '1'
240
+ })).not.to.have.attribute('disabled');
241
+ expect(screen.getByRole('gridcell', {
242
+ name: '3'
243
+ })).not.to.have.attribute('disabled');
244
+ expect(screen.getByRole('gridcell', {
245
+ name: '4'
246
+ })).not.to.have.attribute('disabled');
247
+ expect(screen.getByRole('gridcell', {
248
+ name: '5'
249
+ })).to.have.attribute('disabled');
250
+ expect(screen.getByRole('gridcell', {
251
+ name: '30'
252
+ })).to.have.attribute('disabled');
186
253
  });
187
254
  it('should apply minDateTime', function test() {
188
255
  if (!withDate || !withTime) {
@@ -193,11 +260,21 @@ export const testDayViewValidation = (ElementToTest, getOptions) => {
193
260
  value: adapterToUse.date(new Date(2019, 5, 15)),
194
261
  minDateTime: adapterToUse.date(new Date(2019, 5, 4, 12, 0, 0))
195
262
  })));
196
- expect(screen.getByText('1')).to.have.attribute('disabled');
197
- expect(screen.getByText('3')).to.have.attribute('disabled');
198
- expect(screen.getByText('4')).not.to.have.attribute('disabled');
199
- expect(screen.getByText('5')).not.to.have.attribute('disabled');
200
- expect(screen.getByText('30')).not.to.have.attribute('disabled');
263
+ expect(screen.getByRole('gridcell', {
264
+ name: '1'
265
+ })).to.have.attribute('disabled');
266
+ expect(screen.getByRole('gridcell', {
267
+ name: '3'
268
+ })).to.have.attribute('disabled');
269
+ expect(screen.getByRole('gridcell', {
270
+ name: '4'
271
+ })).not.to.have.attribute('disabled');
272
+ expect(screen.getByRole('gridcell', {
273
+ name: '5'
274
+ })).not.to.have.attribute('disabled');
275
+ expect(screen.getByRole('gridcell', {
276
+ name: '30'
277
+ })).not.to.have.attribute('disabled');
201
278
  });
202
279
  });
203
280
  };
@@ -19,25 +19,18 @@ export const testMinutesViewValidation = (ElementToTest, getOption) => {
19
19
  return;
20
20
  }
21
21
  describe('minutes view:', () => {
22
- const defaultProps = _extends({
22
+ const defaultProps = {
23
23
  onChange: () => {},
24
24
  open: true,
25
25
  view: 'minutes',
26
26
  openTo: 'minutes',
27
- reduceAnimations: true
28
- }, componentFamily.includes('legacy-') ? {
29
- componentsProps: {
30
- toolbar: {
31
- hidden: true
32
- }
33
- }
34
- } : {
27
+ reduceAnimations: true,
35
28
  slotProps: {
36
29
  toolbar: {
37
30
  hidden: true
38
31
  }
39
32
  }
40
- });
33
+ };
41
34
  it('should apply shouldDisableTime', function test() {
42
35
  render( /*#__PURE__*/_jsx(ElementToTest, _extends({}, defaultProps, {
43
36
  value: adapterToUse.date(new Date(2018, 2, 12, 8, 15, 0)),
@@ -21,22 +21,15 @@ export const testMonthViewValidation = (ElementToTest, getOptions) => {
21
21
  views: ['month'],
22
22
  view: 'month',
23
23
  openTo: 'month'
24
- }, componentFamily !== 'calendar' && _extends({
24
+ }, componentFamily !== 'calendar' && {
25
25
  open: true,
26
- reduceAnimations: true
27
- }, componentFamily.includes('legacy-') ? {
28
- componentsProps: {
29
- toolbar: {
30
- hidden: true
31
- }
32
- }
33
- } : {
26
+ reduceAnimations: true,
34
27
  slotProps: {
35
28
  toolbar: {
36
29
  hidden: true
37
30
  }
38
31
  }
39
- }));
32
+ });
40
33
  it('should apply shouldDisableMonth', function test() {
41
34
  render( /*#__PURE__*/_jsx(ElementToTest, _extends({}, defaultProps, {
42
35
  value: null,
@@ -20,22 +20,15 @@ export const testYearViewValidation = (ElementToTest, getOptions) => {
20
20
  views: ['year'],
21
21
  view: 'year',
22
22
  openTo: 'year'
23
- }, componentFamily !== 'calendar' && _extends({
23
+ }, componentFamily !== 'calendar' && {
24
24
  open: true,
25
- reduceAnimations: true
26
- }, componentFamily.includes('legacy-') ? {
27
- componentsProps: {
28
- toolbar: {
29
- hidden: true
30
- }
31
- }
32
- } : {
25
+ reduceAnimations: true,
33
26
  slotProps: {
34
27
  toolbar: {
35
28
  hidden: true
36
29
  }
37
30
  }
38
- }));
31
+ });
39
32
  it('should apply shouldDisableYear', function test() {
40
33
  render( /*#__PURE__*/_jsx(ElementToTest, _extends({}, defaultProps, {
41
34
  value: null,
@@ -1,4 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["hook"];
2
4
  import * as React from 'react';
3
5
  import createDescribe from '@mui/monorepo/test/utils/createDescribe';
4
6
  import { buildFieldInteractions } from 'test/utils/pickers-utils';
@@ -16,7 +18,12 @@ function innerDescribeValue(ElementToTest, getOptions) {
16
18
  componentFamily
17
19
  } = options;
18
20
  function WrappedElementToTest(props) {
19
- return /*#__PURE__*/_jsx(ElementToTest, _extends({}, defaultProps, props));
21
+ const {
22
+ hook
23
+ } = props,
24
+ other = _objectWithoutPropertiesLoose(props, _excluded);
25
+ const hookResult = hook == null ? void 0 : hook(props);
26
+ return /*#__PURE__*/_jsx(ElementToTest, _extends({}, defaultProps, other, hookResult));
20
27
  }
21
28
  let renderWithProps;
22
29
  if (componentFamily === 'field' || componentFamily === 'picker') {
@@ -25,10 +32,12 @@ function innerDescribeValue(ElementToTest, getOptions) {
25
32
  render,
26
33
  Component: ElementToTest
27
34
  });
28
- renderWithProps = props => interactions.renderWithProps(_extends({}, defaultProps, props), componentFamily);
35
+ renderWithProps = (props, hook) => interactions.renderWithProps(_extends({}, defaultProps, props), hook, componentFamily);
29
36
  } else {
30
- renderWithProps = props => {
31
- const response = render( /*#__PURE__*/_jsx(WrappedElementToTest, _extends({}, props)));
37
+ renderWithProps = (props, hook) => {
38
+ const response = render( /*#__PURE__*/_jsx(WrappedElementToTest, _extends({}, props, {
39
+ hook: hook
40
+ })));
32
41
  return _extends({}, response, {
33
42
  input: null,
34
43
  selectSection: () => {
@@ -59,7 +59,7 @@ export const testControlledUnControlled = (ElementToTest, options) => {
59
59
  });
60
60
  assertRenderedValue(newValue);
61
61
  // TODO: Clean this exception or change the clock behavior
62
- expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily));
62
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, params));
63
63
  if (Array.isArray(newValue)) {
64
64
  newValue.forEach((value, index) => {
65
65
  expect(onChange.lastCall.args[0][index]).toEqualDateTime(value);
@@ -70,16 +70,27 @@ export const testControlledUnControlled = (ElementToTest, options) => {
70
70
  });
71
71
  it('should call onChange when updating a value defined with `props.value`', () => {
72
72
  const onChange = spy();
73
+ const useControlledElement = props => {
74
+ const [value, setValue] = React.useState((props == null ? void 0 : props.value) || null);
75
+ const handleChange = React.useCallback(newValue => {
76
+ setValue(newValue);
77
+ props == null ? void 0 : props.onChange(newValue);
78
+ }, [props]);
79
+ return {
80
+ value,
81
+ onChange: handleChange
82
+ };
83
+ };
73
84
  const {
74
85
  selectSection
75
86
  } = renderWithProps({
76
- defaultValue: values[0],
87
+ value: values[0],
77
88
  onChange
78
- });
89
+ }, useControlledElement);
79
90
  const newValue = setNewValue(values[0], {
80
91
  selectSection
81
92
  });
82
- expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily));
93
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, params));
83
94
  if (Array.isArray(newValue)) {
84
95
  newValue.forEach((value, index) => {
85
96
  expect(onChange.lastCall.args[0][index]).toEqualDateTime(value);
@@ -1,19 +1,21 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ const _excluded = ["componentFamily", "render", "renderWithProps", "values", "emptyValue", "setNewValue"];
1
3
  import * as React from 'react';
2
4
  import { expect } from 'chai';
3
5
  import { spy } from 'sinon';
4
6
  import { screen, userEvent } from '@mui/monorepo/test/utils';
5
- import { adapterToUse } from 'test/utils/pickers-utils';
7
+ import { adapterToUse, getExpectedOnChangeCount } from 'test/utils/pickers-utils';
6
8
  import { jsx as _jsx } from "react/jsx-runtime";
7
9
  export const testPickerActionBar = (ElementToTest, options) => {
8
10
  const {
9
- componentFamily,
10
- render,
11
- renderWithProps,
12
- values,
13
- emptyValue,
14
- setNewValue,
15
- type
16
- } = options;
11
+ componentFamily,
12
+ render,
13
+ renderWithProps,
14
+ values,
15
+ emptyValue,
16
+ setNewValue
17
+ } = options,
18
+ pickerParams = _objectWithoutPropertiesLoose(options, _excluded);
17
19
  if (componentFamily !== 'picker') {
18
20
  return;
19
21
  }
@@ -39,7 +41,7 @@ export const testPickerActionBar = (ElementToTest, options) => {
39
41
  // Clear the date
40
42
  userEvent.mousePress(screen.getByText(/clear/i));
41
43
  expect(onChange.callCount).to.equal(1);
42
- if (type === 'date-range') {
44
+ if (pickerParams.type === 'date-range') {
43
45
  onChange.lastCall.args[0].forEach((value, index) => {
44
46
  expect(value).to.deep.equal(emptyValue[index]);
45
47
  });
@@ -47,7 +49,7 @@ export const testPickerActionBar = (ElementToTest, options) => {
47
49
  expect(onChange.lastCall.args[0]).to.deep.equal(emptyValue);
48
50
  }
49
51
  expect(onAccept.callCount).to.equal(1);
50
- if (type === 'date-range') {
52
+ if (pickerParams.type === 'date-range') {
51
53
  onAccept.lastCall.args[0].forEach((value, index) => {
52
54
  expect(value).to.deep.equal(emptyValue[index]);
53
55
  });
@@ -109,8 +111,8 @@ export const testPickerActionBar = (ElementToTest, options) => {
109
111
 
110
112
  // Cancel the modifications
111
113
  userEvent.mousePress(screen.getByText(/cancel/i));
112
- expect(onChange.callCount).to.equal(2);
113
- if (type === 'date-range') {
114
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams) + 1);
115
+ if (pickerParams.type === 'date-range') {
114
116
  values[0].forEach((value, index) => {
115
117
  expect(onChange.lastCall.args[0][index]).toEqualDateTime(value);
116
118
  });
@@ -174,7 +176,7 @@ export const testPickerActionBar = (ElementToTest, options) => {
174
176
 
175
177
  // Accept the modifications
176
178
  userEvent.mousePress(screen.getByText(/ok/i));
177
- expect(onChange.callCount).to.equal(1); // The accepted value as already been committed, don't call onChange again
179
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams)); // The accepted value as already been committed, don't call onChange again
178
180
  expect(onAccept.callCount).to.equal(1);
179
181
  expect(onClose.callCount).to.equal(1);
180
182
  });
@@ -245,9 +247,9 @@ export const testPickerActionBar = (ElementToTest, options) => {
245
247
  }
246
248
  }));
247
249
  userEvent.mousePress(screen.getByText(/today/i));
248
- const startOfToday = type === 'date' ? adapterToUse.startOfDay(adapterToUse.date()) : adapterToUse.date();
250
+ const startOfToday = pickerParams.type === 'date' ? adapterToUse.startOfDay(adapterToUse.date()) : adapterToUse.date();
249
251
  expect(onChange.callCount).to.equal(1);
250
- if (type === 'date-range') {
252
+ if (pickerParams.type === 'date-range') {
251
253
  onChange.lastCall.args[0].forEach(value => {
252
254
  expect(value).toEqualDateTime(startOfToday);
253
255
  });
@@ -255,7 +257,7 @@ export const testPickerActionBar = (ElementToTest, options) => {
255
257
  expect(onChange.lastCall.args[0]).toEqualDateTime(startOfToday);
256
258
  }
257
259
  expect(onAccept.callCount).to.equal(1);
258
- if (type === 'date-range') {
260
+ if (pickerParams.type === 'date-range') {
259
261
  onAccept.lastCall.args[0].forEach(value => {
260
262
  expect(value).toEqualDateTime(startOfToday);
261
263
  });
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import { expect } from 'chai';
5
5
  import { spy } from 'sinon';
6
6
  import { screen, userEvent } from '@mui/monorepo/test/utils';
7
- import { getTextbox, openPicker } from 'test/utils/pickers-utils';
7
+ import { getExpectedOnChangeCount, getTextbox, openPicker } from 'test/utils/pickers-utils';
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  export const testPickerOpenCloseLifeCycle = (ElementToTest, options) => {
10
10
  const {
@@ -70,7 +70,7 @@ export const testPickerOpenCloseLifeCycle = (ElementToTest, options) => {
70
70
  isOpened: true,
71
71
  selectSection
72
72
  });
73
- expect(onChange.callCount).to.equal(1);
73
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams));
74
74
  if (pickerParams.type === 'date-range') {
75
75
  newValue = setNewValue(newValue, {
76
76
  isOpened: true,
@@ -131,7 +131,7 @@ export const testPickerOpenCloseLifeCycle = (ElementToTest, options) => {
131
131
  isOpened: true,
132
132
  selectSection
133
133
  });
134
- expect(onChange.callCount).to.equal(1);
134
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams));
135
135
  if (pickerParams.type === 'date-range') {
136
136
  newValue = setNewValue(newValue, {
137
137
  isOpened: true,
@@ -200,7 +200,8 @@ export const testPickerOpenCloseLifeCycle = (ElementToTest, options) => {
200
200
  isOpened: true,
201
201
  selectSection
202
202
  });
203
- expect(onChange.callCount).to.equal(1);
203
+ const initialChangeCount = getExpectedOnChangeCount(componentFamily, pickerParams);
204
+ expect(onChange.callCount).to.equal(initialChangeCount);
204
205
  if (pickerParams.type === 'date-range') {
205
206
  newValue = setNewValue(newValue, {
206
207
  isOpened: true,
@@ -232,7 +233,9 @@ export const testPickerOpenCloseLifeCycle = (ElementToTest, options) => {
232
233
  expect(onChange.lastCall.args[0][index]).toEqualDateTime(value);
233
234
  });
234
235
  } else {
235
- expect(onChange.callCount).to.equal(2);
236
+ expect(onChange.callCount).to.equal(initialChangeCount + getExpectedOnChangeCount(componentFamily, pickerParams) - (
237
+ // meridiem does not change this time in case of multi section digital clock
238
+ pickerParams.type === 'time' || pickerParams.type === 'date-time' ? 1 : 0));
236
239
  expect(onChange.lastCall.args[0]).toEqualDateTime(newValueBis);
237
240
  }
238
241
  expect(onAccept.callCount).to.equal(0);
@@ -263,7 +266,7 @@ export const testPickerOpenCloseLifeCycle = (ElementToTest, options) => {
263
266
  userEvent.keyPress(document.activeElement, {
264
267
  key: 'Escape'
265
268
  });
266
- expect(onChange.callCount).to.equal(1);
269
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams));
267
270
  expect(onAccept.callCount).to.equal(1);
268
271
  if (pickerParams.type === 'date-range') {
269
272
  newValue.forEach((value, index) => {
@@ -324,7 +327,7 @@ export const testPickerOpenCloseLifeCycle = (ElementToTest, options) => {
324
327
 
325
328
  // Dismiss the picker
326
329
  userEvent.mousePress(document.body);
327
- expect(onChange.callCount).to.equal(1);
330
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams));
328
331
  expect(onAccept.callCount).to.equal(1);
329
332
  expect(onAccept.lastCall.args[0]).toEqualDateTime(newValue);
330
333
  expect(onClose.callCount).to.equal(1);
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import * as React from 'react';
2
2
  import { TimeClockProps } from '../TimeClock';
3
3
  import { TimeView } from '../models';
4
4
  import { DigitalClockProps } from '../DigitalClock';
@@ -11,6 +11,6 @@ export type TimeViewRendererProps<TView extends TimeViewWithMeridiem, TComponent
11
11
  onViewChange?: (view: TView) => void;
12
12
  views: readonly TView[];
13
13
  };
14
- export declare const renderTimeViewClock: <TDate extends unknown>({ view, onViewChange, focusedView, onFocusedViewChange, views, value, defaultValue, onChange, className, classes, disableFuture, disablePast, minTime, maxTime, shouldDisableTime, shouldDisableClock, minutesStep, ampm, ampmInClock, components, componentsProps, slots, slotProps, readOnly, disabled, sx, autoFocus, showViewSwitcher, disableIgnoringDatePartForTimeValidation, }: TimeViewRendererProps<TimeViewWithMeridiem, TimeClockProps<TDate, TimeViewWithMeridiem>>) => JSX.Element;
15
- export declare const renderDigitalClockTimeView: <TDate extends unknown>({ view, onViewChange, focusedView, onFocusedViewChange, views, value, defaultValue, onChange, className, classes, disableFuture, disablePast, minTime, maxTime, shouldDisableTime, shouldDisableClock, minutesStep, ampm, components, componentsProps, slots, slotProps, readOnly, disabled, sx, autoFocus, disableIgnoringDatePartForTimeValidation, timeSteps, skipDisabled, }: TimeViewRendererProps<"hours", Omit<DigitalClockProps<TDate>, "timeStep"> & Pick<TimePickerProps<TDate>, "timeSteps">>) => JSX.Element;
16
- export declare const renderMultiSectionDigitalClockTimeView: <TDate extends unknown>({ view, onViewChange, focusedView, onFocusedViewChange, views, value, defaultValue, onChange, className, classes, disableFuture, disablePast, minTime, maxTime, shouldDisableTime, shouldDisableClock, minutesStep, ampm, components, componentsProps, slots, slotProps, readOnly, disabled, sx, autoFocus, disableIgnoringDatePartForTimeValidation, timeSteps, skipDisabled, }: TimeViewRendererProps<TimeViewWithMeridiem, MultiSectionDigitalClockProps<TDate>>) => JSX.Element;
14
+ export declare const renderTimeViewClock: <TDate extends unknown>({ view, onViewChange, focusedView, onFocusedViewChange, views, value, defaultValue, onChange, className, classes, disableFuture, disablePast, minTime, maxTime, shouldDisableTime, shouldDisableClock, minutesStep, ampm, ampmInClock, components, componentsProps, slots, slotProps, readOnly, disabled, sx, autoFocus, showViewSwitcher, disableIgnoringDatePartForTimeValidation, }: TimeViewRendererProps<TimeView, TimeClockProps<TDate, TimeView>>) => React.JSX.Element;
15
+ export declare const renderDigitalClockTimeView: <TDate extends unknown>({ view, onViewChange, focusedView, onFocusedViewChange, views, value, defaultValue, onChange, className, classes, disableFuture, disablePast, minTime, maxTime, shouldDisableTime, shouldDisableClock, minutesStep, ampm, components, componentsProps, slots, slotProps, readOnly, disabled, sx, autoFocus, disableIgnoringDatePartForTimeValidation, timeSteps, skipDisabled, }: TimeViewRendererProps<"hours", Omit<DigitalClockProps<TDate>, "timeStep"> & Pick<TimePickerProps<TDate>, "timeSteps">>) => React.JSX.Element;
16
+ export declare const renderMultiSectionDigitalClockTimeView: <TDate extends unknown>({ view, onViewChange, focusedView, onFocusedViewChange, views, value, defaultValue, onChange, className, classes, disableFuture, disablePast, minTime, maxTime, shouldDisableTime, shouldDisableClock, minutesStep, ampm, components, componentsProps, slots, slotProps, readOnly, disabled, sx, autoFocus, disableIgnoringDatePartForTimeValidation, timeSteps, skipDisabled, }: TimeViewRendererProps<TimeViewWithMeridiem, MultiSectionDigitalClockProps<TDate>>) => React.JSX.Element;
@@ -37,7 +37,7 @@ export const renderTimeViewClock = ({
37
37
  }) => /*#__PURE__*/_jsx(TimeClock, {
38
38
  view: view,
39
39
  onViewChange: onViewChange,
40
- focusedView: focusedView,
40
+ focusedView: focusedView && isTimeView(focusedView) ? focusedView : null,
41
41
  onFocusedViewChange: onFocusedViewChange,
42
42
  views: views.filter(isTimeView),
43
43
  value: value,