@mui/x-date-pickers 6.4.0 → 6.6.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 (329) hide show
  1. package/AdapterDateFns/AdapterDateFns.d.ts +6 -0
  2. package/AdapterDateFns/AdapterDateFns.js +18 -0
  3. package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +6 -0
  4. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +18 -0
  5. package/AdapterDayjs/AdapterDayjs.d.ts +14 -1
  6. package/AdapterDayjs/AdapterDayjs.js +131 -14
  7. package/AdapterLuxon/AdapterLuxon.d.ts +7 -1
  8. package/AdapterLuxon/AdapterLuxon.js +58 -9
  9. package/AdapterMoment/AdapterMoment.d.ts +12 -1
  10. package/AdapterMoment/AdapterMoment.js +91 -2
  11. package/AdapterMomentHijri/AdapterMomentHijri.d.ts +4 -0
  12. package/AdapterMomentHijri/AdapterMomentHijri.js +10 -0
  13. package/AdapterMomentJalaali/AdapterMomentJalaali.d.ts +4 -0
  14. package/AdapterMomentJalaali/AdapterMomentJalaali.js +10 -0
  15. package/CHANGELOG.md +134 -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 +2 -2
  24. package/DateField/index.d.ts +1 -1
  25. package/DateField/useDateField.d.ts +1 -1
  26. package/DateField/useDateField.js +9 -46
  27. package/DateTimeField/DateTimeField.js +6 -0
  28. package/DateTimeField/DateTimeField.types.d.ts +2 -2
  29. package/DateTimeField/index.d.ts +1 -1
  30. package/DateTimeField/useDateTimeField.d.ts +1 -1
  31. package/DateTimeField/useDateTimeField.js +9 -60
  32. package/DateTimePicker/DateTimePicker.js +19 -2
  33. package/DateTimePicker/DateTimePicker.types.d.ts +4 -3
  34. package/DateTimePicker/DateTimePickerTabs.d.ts +3 -3
  35. package/DateTimePicker/DateTimePickerTabs.js +6 -5
  36. package/DateTimePicker/DateTimePickerToolbar.d.ts +5 -4
  37. package/DateTimePicker/DateTimePickerToolbar.js +46 -22
  38. package/DateTimePicker/shared.d.ts +6 -6
  39. package/DayCalendarSkeleton/DayCalendarSkeleton.d.ts +1 -1
  40. package/DesktopDatePicker/DesktopDatePicker.js +2 -2
  41. package/DesktopDateTimePicker/DesktopDateTimePicker.js +54 -12
  42. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +10 -3
  43. package/DesktopTimePicker/DesktopTimePicker.js +3 -4
  44. package/MobileDateTimePicker/MobileDateTimePicker.js +1 -2
  45. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +8 -7
  46. package/MobileTimePicker/MobileTimePicker.js +1 -2
  47. package/MonthCalendar/MonthCalendar.js +2 -2
  48. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  49. package/PickersActionBar/PickersActionBar.d.ts +2 -2
  50. package/PickersLayout/PickersLayout.d.ts +1 -1
  51. package/PickersShortcuts/PickersShortcuts.d.ts +2 -2
  52. package/README.md +5 -5
  53. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +1 -1
  54. package/TimeClock/Clock.d.ts +1 -1
  55. package/TimeClock/ClockNumber.d.ts +1 -1
  56. package/TimeClock/ClockNumbers.d.ts +2 -2
  57. package/TimeClock/ClockPointer.d.ts +1 -1
  58. package/TimeField/TimeField.js +6 -0
  59. package/TimeField/TimeField.types.d.ts +1 -1
  60. package/TimeField/index.d.ts +1 -1
  61. package/TimeField/useTimeField.d.ts +1 -1
  62. package/TimeField/useTimeField.js +9 -50
  63. package/TimePicker/TimePickerToolbar.d.ts +2 -2
  64. package/YearCalendar/YearCalendar.js +2 -2
  65. package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +13 -0
  66. package/dateTimeViewRenderers/dateTimeViewRenderers.js +148 -0
  67. package/dateTimeViewRenderers/index.d.ts +2 -0
  68. package/dateTimeViewRenderers/index.js +1 -0
  69. package/dateTimeViewRenderers/package.json +6 -0
  70. package/dateViewRenderers/dateViewRenderers.d.ts +3 -2
  71. package/dateViewRenderers/dateViewRenderers.js +2 -2
  72. package/icons/index.d.ts +42 -0
  73. package/{internals/components/icons → icons}/index.js +7 -7
  74. package/icons/package.json +6 -0
  75. package/index.d.ts +1 -0
  76. package/index.js +3 -2
  77. package/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.d.ts +2 -0
  78. package/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +5 -0
  79. package/internals/components/DateTimeViewWrapper/index.d.ts +1 -0
  80. package/internals/components/DateTimeViewWrapper/index.js +1 -0
  81. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  82. package/internals/components/PickersModalDialog.d.ts +1 -1
  83. package/internals/components/PickersPopper.d.ts +1 -1
  84. package/internals/components/PickersToolbarButton.d.ts +1 -0
  85. package/internals/components/PickersToolbarButton.js +8 -3
  86. package/internals/constants/dimensions.d.ts +1 -0
  87. package/internals/constants/dimensions.js +2 -1
  88. package/internals/demo/DemoContainer.d.ts +2 -2
  89. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +2 -2
  90. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
  91. package/internals/hooks/useField/useField.d.ts +1 -1
  92. package/internals/hooks/useField/useField.js +18 -5
  93. package/internals/hooks/useField/useField.types.d.ts +8 -2
  94. package/internals/hooks/useField/useFieldState.d.ts +1 -1
  95. package/internals/hooks/useField/useFieldState.js +22 -2
  96. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +2 -2
  97. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +2 -2
  98. package/internals/hooks/usePicker/usePickerValue.types.d.ts +32 -2
  99. package/internals/hooks/usePicker/usePickerViews.js +8 -10
  100. package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +2 -2
  101. package/internals/hooks/useViews.js +12 -9
  102. package/internals/index.d.ts +4 -2
  103. package/internals/index.js +4 -2
  104. package/internals/models/fields.d.ts +1 -1
  105. package/internals/utils/date-utils.d.ts +4 -1
  106. package/internals/utils/date-utils.js +4 -1
  107. package/internals/utils/fields.d.ts +5 -0
  108. package/internals/utils/fields.js +28 -0
  109. package/internals/utils/getDefaultReferenceDate.d.ts +15 -0
  110. package/internals/utils/getDefaultReferenceDate.js +62 -0
  111. package/internals/utils/time-utils.d.ts +2 -1
  112. package/internals/utils/time-utils.js +1 -0
  113. package/internals/utils/validation/extractValidationProps.d.ts +5 -1
  114. package/internals/utils/validation/extractValidationProps.js +4 -1
  115. package/internals/utils/valueManagers.js +21 -3
  116. package/legacy/AdapterDateFns/AdapterDateFns.js +18 -0
  117. package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +18 -0
  118. package/legacy/AdapterDayjs/AdapterDayjs.js +135 -14
  119. package/legacy/AdapterLuxon/AdapterLuxon.js +58 -9
  120. package/legacy/AdapterMoment/AdapterMoment.js +97 -6
  121. package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +10 -0
  122. package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +10 -0
  123. package/legacy/DateCalendar/DateCalendar.js +2 -2
  124. package/legacy/DateCalendar/PickersCalendarHeader.js +2 -2
  125. package/legacy/DateField/DateField.js +6 -0
  126. package/legacy/DateField/useDateField.js +8 -44
  127. package/legacy/DateTimeField/DateTimeField.js +6 -0
  128. package/legacy/DateTimeField/useDateTimeField.js +8 -60
  129. package/legacy/DateTimePicker/DateTimePicker.js +19 -2
  130. package/legacy/DateTimePicker/DateTimePickerTabs.js +6 -5
  131. package/legacy/DateTimePicker/DateTimePickerToolbar.js +51 -23
  132. package/legacy/DesktopDatePicker/DesktopDatePicker.js +2 -2
  133. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +55 -12
  134. package/legacy/DesktopTimePicker/DesktopTimePicker.js +3 -4
  135. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +1 -2
  136. package/legacy/MobileTimePicker/MobileTimePicker.js +1 -2
  137. package/legacy/MonthCalendar/MonthCalendar.js +2 -2
  138. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  139. package/legacy/TimeField/TimeField.js +6 -0
  140. package/legacy/TimeField/useTimeField.js +8 -48
  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 +20 -7
  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 +12 -9
  156. package/legacy/internals/index.js +4 -2
  157. package/legacy/internals/utils/date-utils.js +7 -0
  158. package/legacy/internals/utils/fields.js +28 -0
  159. package/legacy/internals/utils/getDefaultReferenceDate.js +64 -0
  160. package/legacy/internals/utils/time-utils.js +3 -0
  161. package/legacy/internals/utils/validation/extractValidationProps.js +4 -1
  162. package/legacy/internals/utils/valueManagers.js +20 -4
  163. package/legacy/locales/index.js +1 -0
  164. package/legacy/locales/viVN.js +93 -0
  165. package/legacy/models/index.js +1 -0
  166. package/legacy/models/timezone.js +1 -0
  167. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.js +16 -1
  168. package/legacy/tests/describeGregorianAdapter/testCalculations.js +350 -80
  169. package/legacy/tests/describeGregorianAdapter/testLocalization.js +3 -3
  170. package/legacy/tests/describeValidation/testDayViewValidation.js +129 -52
  171. package/legacy/tests/describeValidation/testMinutesViewValidation.js +3 -10
  172. package/legacy/tests/describeValidation/testMonthViewValidation.js +3 -10
  173. package/legacy/tests/describeValidation/testYearViewValidation.js +3 -10
  174. package/legacy/tests/describeValue/describeValue.js +38 -4
  175. package/legacy/tests/describeValue/testControlledUnControlled.js +44 -23
  176. package/legacy/tests/describeValue/testPickerActionBar.js +51 -45
  177. package/legacy/tests/describeValue/testPickerOpenCloseLifeCycle.js +102 -78
  178. package/legacy/timeViewRenderers/timeViewRenderers.js +1 -1
  179. package/locales/index.d.ts +1 -0
  180. package/locales/index.js +1 -0
  181. package/locales/viVN.d.ts +53 -0
  182. package/locales/viVN.js +57 -0
  183. package/models/adapters.d.ts +50 -9
  184. package/models/fields.d.ts +1 -1
  185. package/models/index.d.ts +1 -0
  186. package/models/index.js +1 -0
  187. package/models/timezone.d.ts +1 -0
  188. package/models/timezone.js +1 -0
  189. package/modern/AdapterDateFns/AdapterDateFns.js +18 -0
  190. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +18 -0
  191. package/modern/AdapterDayjs/AdapterDayjs.js +130 -14
  192. package/modern/AdapterLuxon/AdapterLuxon.js +57 -9
  193. package/modern/AdapterMoment/AdapterMoment.js +90 -2
  194. package/modern/AdapterMomentHijri/AdapterMomentHijri.js +10 -0
  195. package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +10 -0
  196. package/modern/DateCalendar/DateCalendar.js +2 -2
  197. package/modern/DateCalendar/PickersCalendarHeader.js +2 -2
  198. package/modern/DateField/DateField.js +6 -0
  199. package/modern/DateField/useDateField.js +9 -46
  200. package/modern/DateTimeField/DateTimeField.js +6 -0
  201. package/modern/DateTimeField/useDateTimeField.js +9 -60
  202. package/modern/DateTimePicker/DateTimePicker.js +19 -2
  203. package/modern/DateTimePicker/DateTimePickerTabs.js +6 -5
  204. package/modern/DateTimePicker/DateTimePickerToolbar.js +46 -22
  205. package/modern/DesktopDatePicker/DesktopDatePicker.js +2 -2
  206. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +53 -11
  207. package/modern/DesktopTimePicker/DesktopTimePicker.js +3 -4
  208. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -2
  209. package/modern/MobileTimePicker/MobileTimePicker.js +1 -2
  210. package/modern/MonthCalendar/MonthCalendar.js +2 -2
  211. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  212. package/modern/TimeField/TimeField.js +6 -0
  213. package/modern/TimeField/useTimeField.js +9 -50
  214. package/modern/YearCalendar/YearCalendar.js +2 -2
  215. package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +147 -0
  216. package/modern/dateTimeViewRenderers/index.js +1 -0
  217. package/modern/dateViewRenderers/dateViewRenderers.js +2 -2
  218. package/modern/{internals/components/icons → icons}/index.js +7 -7
  219. package/modern/index.js +3 -2
  220. package/modern/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +5 -0
  221. package/modern/internals/components/DateTimeViewWrapper/index.js +1 -0
  222. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  223. package/modern/internals/components/PickersToolbarButton.js +8 -3
  224. package/modern/internals/constants/dimensions.js +2 -1
  225. package/modern/internals/hooks/useField/useField.js +18 -5
  226. package/modern/internals/hooks/useField/useFieldState.js +22 -2
  227. package/modern/internals/hooks/usePicker/usePickerViews.js +8 -10
  228. package/modern/internals/hooks/useViews.js +12 -9
  229. package/modern/internals/index.js +4 -2
  230. package/modern/internals/utils/date-utils.js +4 -1
  231. package/modern/internals/utils/fields.js +28 -0
  232. package/modern/internals/utils/getDefaultReferenceDate.js +58 -0
  233. package/modern/internals/utils/time-utils.js +1 -0
  234. package/modern/internals/utils/validation/extractValidationProps.js +4 -1
  235. package/modern/internals/utils/valueManagers.js +21 -3
  236. package/modern/locales/index.js +1 -0
  237. package/modern/locales/viVN.js +57 -0
  238. package/modern/models/index.js +1 -0
  239. package/modern/models/timezone.js +1 -0
  240. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.js +13 -1
  241. package/modern/tests/describeGregorianAdapter/testCalculations.js +348 -80
  242. package/modern/tests/describeGregorianAdapter/testLocalization.js +3 -3
  243. package/modern/tests/describeValidation/testDayViewValidation.js +129 -52
  244. package/modern/tests/describeValidation/testMinutesViewValidation.js +3 -10
  245. package/modern/tests/describeValidation/testMonthViewValidation.js +3 -10
  246. package/modern/tests/describeValidation/testYearViewValidation.js +3 -10
  247. package/modern/tests/describeValue/describeValue.js +39 -4
  248. package/modern/tests/describeValue/testControlledUnControlled.js +35 -16
  249. package/modern/tests/describeValue/testPickerActionBar.js +38 -29
  250. package/modern/tests/describeValue/testPickerOpenCloseLifeCycle.js +89 -58
  251. package/modern/timeViewRenderers/timeViewRenderers.js +1 -1
  252. package/node/AdapterDateFns/AdapterDateFns.js +18 -0
  253. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +18 -0
  254. package/node/AdapterDayjs/AdapterDayjs.js +130 -14
  255. package/node/AdapterLuxon/AdapterLuxon.js +57 -9
  256. package/node/AdapterMoment/AdapterMoment.js +90 -2
  257. package/node/AdapterMomentHijri/AdapterMomentHijri.js +10 -0
  258. package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +10 -0
  259. package/node/DateCalendar/DateCalendar.js +2 -2
  260. package/node/DateCalendar/PickersCalendarHeader.js +2 -2
  261. package/node/DateField/DateField.js +6 -0
  262. package/node/DateField/useDateField.js +9 -46
  263. package/node/DateTimeField/DateTimeField.js +6 -0
  264. package/node/DateTimeField/useDateTimeField.js +9 -60
  265. package/node/DateTimePicker/DateTimePicker.js +19 -2
  266. package/node/DateTimePicker/DateTimePickerTabs.js +6 -5
  267. package/node/DateTimePicker/DateTimePickerToolbar.js +46 -22
  268. package/node/DesktopDatePicker/DesktopDatePicker.js +2 -2
  269. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +53 -11
  270. package/node/DesktopTimePicker/DesktopTimePicker.js +3 -4
  271. package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -2
  272. package/node/MobileTimePicker/MobileTimePicker.js +1 -2
  273. package/node/MonthCalendar/MonthCalendar.js +2 -2
  274. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +3 -2
  275. package/node/TimeField/TimeField.js +6 -0
  276. package/node/TimeField/useTimeField.js +9 -50
  277. package/node/YearCalendar/YearCalendar.js +2 -2
  278. package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +156 -0
  279. package/node/dateTimeViewRenderers/index.js +12 -0
  280. package/node/dateViewRenderers/dateViewRenderers.js +3 -3
  281. package/node/{internals/components/icons → icons}/index.js +15 -15
  282. package/node/index.js +13 -1
  283. package/node/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +12 -0
  284. package/node/internals/components/DateTimeViewWrapper/index.js +12 -0
  285. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  286. package/node/internals/components/PickersToolbarButton.js +8 -3
  287. package/node/internals/constants/dimensions.js +4 -2
  288. package/node/internals/hooks/useField/useField.js +18 -5
  289. package/node/internals/hooks/useField/useFieldState.js +22 -2
  290. package/node/internals/hooks/usePicker/usePickerViews.js +8 -10
  291. package/node/internals/hooks/useViews.js +12 -9
  292. package/node/internals/index.js +26 -0
  293. package/node/internals/utils/date-utils.js +7 -2
  294. package/node/internals/utils/fields.js +36 -0
  295. package/node/internals/utils/getDefaultReferenceDate.js +66 -0
  296. package/node/internals/utils/time-utils.js +3 -1
  297. package/node/internals/utils/validation/extractValidationProps.js +8 -2
  298. package/node/internals/utils/valueManagers.js +21 -2
  299. package/node/locales/index.js +11 -0
  300. package/node/locales/viVN.js +64 -0
  301. package/node/models/index.js +11 -0
  302. package/node/models/timezone.js +5 -0
  303. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.js +13 -1
  304. package/node/tests/describeGregorianAdapter/testCalculations.js +348 -80
  305. package/node/tests/describeGregorianAdapter/testLocalization.js +3 -4
  306. package/node/tests/describeValidation/testDayViewValidation.js +129 -52
  307. package/node/tests/describeValidation/testMinutesViewValidation.js +3 -10
  308. package/node/tests/describeValidation/testMonthViewValidation.js +3 -10
  309. package/node/tests/describeValidation/testYearViewValidation.js +3 -10
  310. package/node/tests/describeValue/describeValue.js +39 -4
  311. package/node/tests/describeValue/testControlledUnControlled.js +35 -16
  312. package/node/tests/describeValue/testPickerActionBar.js +38 -28
  313. package/node/tests/describeValue/testPickerOpenCloseLifeCycle.js +88 -57
  314. package/node/timeViewRenderers/timeViewRenderers.js +1 -1
  315. package/package.json +5 -5
  316. package/tests/describeGregorianAdapter/describeGregorianAdapter.js +14 -1
  317. package/tests/describeGregorianAdapter/testCalculations.js +348 -80
  318. package/tests/describeGregorianAdapter/testLocalization.js +3 -3
  319. package/tests/describeValidation/testDayViewValidation.js +129 -52
  320. package/tests/describeValidation/testMinutesViewValidation.js +3 -10
  321. package/tests/describeValidation/testMonthViewValidation.js +3 -10
  322. package/tests/describeValidation/testYearViewValidation.js +3 -10
  323. package/tests/describeValue/describeValue.js +39 -4
  324. package/tests/describeValue/testControlledUnControlled.js +35 -16
  325. package/tests/describeValue/testPickerActionBar.js +38 -29
  326. package/tests/describeValue/testPickerOpenCloseLifeCycle.js +89 -58
  327. package/timeViewRenderers/timeViewRenderers.d.ts +4 -4
  328. package/timeViewRenderers/timeViewRenderers.js +1 -1
  329. 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,20 +1,55 @@
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';
6
+ import { buildFieldInteractions } from 'test/utils/pickers-utils';
4
7
  import { testControlledUnControlled } from './testControlledUnControlled';
5
8
  import { testPickerOpenCloseLifeCycle } from './testPickerOpenCloseLifeCycle';
6
9
  import { testPickerActionBar } from './testPickerActionBar';
7
10
  import { jsx as _jsx } from "react/jsx-runtime";
8
11
  const TEST_SUITES = [testControlledUnControlled, testPickerOpenCloseLifeCycle, testPickerActionBar];
9
12
  function innerDescribeValue(ElementToTest, getOptions) {
13
+ const options = getOptions();
10
14
  const {
11
- defaultProps
12
- } = getOptions();
15
+ defaultProps,
16
+ render,
17
+ clock,
18
+ componentFamily
19
+ } = options;
13
20
  function WrappedElementToTest(props) {
14
- 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));
27
+ }
28
+ let renderWithProps;
29
+ if (componentFamily === 'field' || componentFamily === 'picker') {
30
+ const interactions = buildFieldInteractions({
31
+ clock,
32
+ render,
33
+ Component: ElementToTest
34
+ });
35
+ renderWithProps = (props, hook) => interactions.renderWithProps(_extends({}, defaultProps, props), hook, componentFamily);
36
+ } else {
37
+ renderWithProps = (props, hook) => {
38
+ const response = render( /*#__PURE__*/_jsx(WrappedElementToTest, _extends({}, props, {
39
+ hook: hook
40
+ })));
41
+ return _extends({}, response, {
42
+ input: null,
43
+ selectSection: () => {
44
+ throw new Error('You can only select a section on components that render a field');
45
+ }
46
+ });
47
+ };
15
48
  }
16
49
  TEST_SUITES.forEach(testSuite => {
17
- testSuite(WrappedElementToTest, getOptions);
50
+ testSuite(WrappedElementToTest, _extends({}, options, {
51
+ renderWithProps
52
+ }));
18
53
  });
19
54
  }
20
55
  /**
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["render", "values", "componentFamily", "emptyValue", "assertRenderedValue", "setNewValue", "clock"];
3
+ const _excluded = ["render", "renderWithProps", "values", "componentFamily", "emptyValue", "assertRenderedValue", "setNewValue", "clock"];
4
4
  import * as React from 'react';
5
5
  import { expect } from 'chai';
6
6
  import { spy } from 'sinon';
@@ -9,18 +9,18 @@ import { inputBaseClasses } from '@mui/material/InputBase';
9
9
  import { getExpectedOnChangeCount } from 'test/utils/pickers-utils';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
- export const testControlledUnControlled = (ElementToTest, getOptions) => {
13
- const _getOptions = getOptions(),
14
- {
12
+ export const testControlledUnControlled = (ElementToTest, options) => {
13
+ const {
15
14
  render,
15
+ renderWithProps,
16
16
  values,
17
17
  componentFamily,
18
18
  emptyValue,
19
19
  assertRenderedValue,
20
20
  setNewValue,
21
21
  clock
22
- } = _getOptions,
23
- pickerParams = _objectWithoutPropertiesLoose(_getOptions, _excluded);
22
+ } = options,
23
+ pickerParams = _objectWithoutPropertiesLoose(options, _excluded);
24
24
  const params = pickerParams;
25
25
  describe('Controlled / uncontrolled value', () => {
26
26
  it('should render `props.defaultValue` if no `props.value` is passed', () => {
@@ -48,14 +48,18 @@ export const testControlledUnControlled = (ElementToTest, getOptions) => {
48
48
  });
49
49
  it('should call onChange when updating a value defined with `props.defaultValue` and update the rendered value', () => {
50
50
  const onChange = spy();
51
- render( /*#__PURE__*/_jsx(ElementToTest, {
51
+ const {
52
+ selectSection
53
+ } = renderWithProps({
52
54
  defaultValue: values[0],
53
- onChange: onChange
54
- }));
55
- const newValue = setNewValue(values[0]);
55
+ onChange
56
+ });
57
+ const newValue = setNewValue(values[0], {
58
+ selectSection
59
+ });
56
60
  assertRenderedValue(newValue);
57
61
  // TODO: Clean this exception or change the clock behavior
58
- expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily));
62
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, params));
59
63
  if (Array.isArray(newValue)) {
60
64
  newValue.forEach((value, index) => {
61
65
  expect(onChange.lastCall.args[0][index]).toEqualDateTime(value);
@@ -66,12 +70,27 @@ export const testControlledUnControlled = (ElementToTest, getOptions) => {
66
70
  });
67
71
  it('should call onChange when updating a value defined with `props.value`', () => {
68
72
  const onChange = spy();
69
- render( /*#__PURE__*/_jsx(ElementToTest, {
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
+ };
84
+ const {
85
+ selectSection
86
+ } = renderWithProps({
70
87
  value: values[0],
71
- onChange: onChange
72
- }));
73
- const newValue = setNewValue(values[0]);
74
- expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily));
88
+ onChange
89
+ }, useControlledElement);
90
+ const newValue = setNewValue(values[0], {
91
+ selectSection
92
+ });
93
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, params));
75
94
  if (Array.isArray(newValue)) {
76
95
  newValue.forEach((value, index) => {
77
96
  expect(onChange.lastCall.args[0][index]).toEqualDateTime(value);
@@ -1,18 +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
- export const testPickerActionBar = (ElementToTest, getOptions) => {
9
+ export const testPickerActionBar = (ElementToTest, options) => {
8
10
  const {
9
- componentFamily,
10
- render,
11
- values,
12
- emptyValue,
13
- setNewValue,
14
- type
15
- } = getOptions();
11
+ componentFamily,
12
+ render,
13
+ renderWithProps,
14
+ values,
15
+ emptyValue,
16
+ setNewValue
17
+ } = options,
18
+ pickerParams = _objectWithoutPropertiesLoose(options, _excluded);
16
19
  if (componentFamily !== 'picker') {
17
20
  return;
18
21
  }
@@ -38,7 +41,7 @@ export const testPickerActionBar = (ElementToTest, getOptions) => {
38
41
  // Clear the date
39
42
  userEvent.mousePress(screen.getByText(/clear/i));
40
43
  expect(onChange.callCount).to.equal(1);
41
- if (type === 'date-range') {
44
+ if (pickerParams.type === 'date-range') {
42
45
  onChange.lastCall.args[0].forEach((value, index) => {
43
46
  expect(value).to.deep.equal(emptyValue[index]);
44
47
  });
@@ -46,7 +49,7 @@ export const testPickerActionBar = (ElementToTest, getOptions) => {
46
49
  expect(onChange.lastCall.args[0]).to.deep.equal(emptyValue);
47
50
  }
48
51
  expect(onAccept.callCount).to.equal(1);
49
- if (type === 'date-range') {
52
+ if (pickerParams.type === 'date-range') {
50
53
  onAccept.lastCall.args[0].forEach((value, index) => {
51
54
  expect(value).to.deep.equal(emptyValue[index]);
52
55
  });
@@ -84,10 +87,12 @@ export const testPickerActionBar = (ElementToTest, getOptions) => {
84
87
  const onChange = spy();
85
88
  const onAccept = spy();
86
89
  const onClose = spy();
87
- render( /*#__PURE__*/_jsx(ElementToTest, {
88
- onChange: onChange,
89
- onAccept: onAccept,
90
- onClose: onClose,
90
+ const {
91
+ selectSection
92
+ } = renderWithProps({
93
+ onChange,
94
+ onAccept,
95
+ onClose,
91
96
  open: true,
92
97
  value: values[0],
93
98
  slotProps: {
@@ -96,17 +101,18 @@ export const testPickerActionBar = (ElementToTest, getOptions) => {
96
101
  }
97
102
  },
98
103
  closeOnSelect: false
99
- }));
104
+ });
100
105
 
101
106
  // Change the value (already tested)
102
107
  setNewValue(values[0], {
103
- isOpened: true
108
+ isOpened: true,
109
+ selectSection
104
110
  });
105
111
 
106
112
  // Cancel the modifications
107
113
  userEvent.mousePress(screen.getByText(/cancel/i));
108
- expect(onChange.callCount).to.equal(2);
109
- if (type === 'date-range') {
114
+ expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams) + 1);
115
+ if (pickerParams.type === 'date-range') {
110
116
  values[0].forEach((value, index) => {
111
117
  expect(onChange.lastCall.args[0][index]).toEqualDateTime(value);
112
118
  });
@@ -146,10 +152,12 @@ export const testPickerActionBar = (ElementToTest, getOptions) => {
146
152
  const onChange = spy();
147
153
  const onAccept = spy();
148
154
  const onClose = spy();
149
- render( /*#__PURE__*/_jsx(ElementToTest, {
150
- onChange: onChange,
151
- onAccept: onAccept,
152
- onClose: onClose,
155
+ const {
156
+ selectSection
157
+ } = renderWithProps({
158
+ onChange,
159
+ onAccept,
160
+ onClose,
153
161
  open: true,
154
162
  defaultValue: values[0],
155
163
  slotProps: {
@@ -158,16 +166,17 @@ export const testPickerActionBar = (ElementToTest, getOptions) => {
158
166
  }
159
167
  },
160
168
  closeOnSelect: false
161
- }));
169
+ });
162
170
 
163
171
  // Change the value (already tested)
164
172
  setNewValue(values[0], {
165
- isOpened: true
173
+ isOpened: true,
174
+ selectSection
166
175
  });
167
176
 
168
177
  // Accept the modifications
169
178
  userEvent.mousePress(screen.getByText(/ok/i));
170
- 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
171
180
  expect(onAccept.callCount).to.equal(1);
172
181
  expect(onClose.callCount).to.equal(1);
173
182
  });
@@ -238,9 +247,9 @@ export const testPickerActionBar = (ElementToTest, getOptions) => {
238
247
  }
239
248
  }));
240
249
  userEvent.mousePress(screen.getByText(/today/i));
241
- const startOfToday = type === 'date' ? adapterToUse.startOfDay(adapterToUse.date()) : adapterToUse.date();
250
+ const startOfToday = pickerParams.type === 'date' ? adapterToUse.startOfDay(adapterToUse.date()) : adapterToUse.date();
242
251
  expect(onChange.callCount).to.equal(1);
243
- if (type === 'date-range') {
252
+ if (pickerParams.type === 'date-range') {
244
253
  onChange.lastCall.args[0].forEach(value => {
245
254
  expect(value).toEqualDateTime(startOfToday);
246
255
  });
@@ -248,7 +257,7 @@ export const testPickerActionBar = (ElementToTest, getOptions) => {
248
257
  expect(onChange.lastCall.args[0]).toEqualDateTime(startOfToday);
249
258
  }
250
259
  expect(onAccept.callCount).to.equal(1);
251
- if (type === 'date-range') {
260
+ if (pickerParams.type === 'date-range') {
252
261
  onAccept.lastCall.args[0].forEach(value => {
253
262
  expect(value).toEqualDateTime(startOfToday);
254
263
  });