@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers",
3
- "version": "6.5.0",
3
+ "version": "6.7.0",
4
4
  "description": "The community edition of the date picker components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@babel/runtime": "^7.21.0",
37
- "@mui/utils": "^5.12.3",
37
+ "@mui/utils": "^5.13.1",
38
38
  "@types/react-transition-group": "^4.4.6",
39
39
  "clsx": "^1.2.1",
40
40
  "prop-types": "^15.8.1",
@@ -53,8 +53,8 @@
53
53
  "moment": "^2.29.4",
54
54
  "moment-hijri": "^2.1.2",
55
55
  "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0",
56
- "react": "^17.0.2 || ^18.0.0",
57
- "react-dom": "^17.0.2 || ^18.0.0"
56
+ "react": "^17.0.0 || ^18.0.0",
57
+ "react-dom": "^17.0.0 || ^18.0.0"
58
58
  },
59
59
  "peerDependenciesMeta": {
60
60
  "@emotion/react": {
@@ -4,10 +4,23 @@ import { testCalculations } from './testCalculations';
4
4
  import { testLocalization } from './testLocalization';
5
5
  import { testFormat } from './testFormat';
6
6
  function innerGregorianDescribeAdapter(Adapter, params) {
7
+ var _params$prepareAdapte;
8
+ const prepareAdapter = (_params$prepareAdapte = params.prepareAdapter) != null ? _params$prepareAdapte : e => e;
7
9
  const adapter = new Adapter();
10
+ const adapterTZ = params.dateLibInstanceWithTimezoneSupport ? new Adapter({
11
+ dateLibInstance: params.dateLibInstanceWithTimezoneSupport
12
+ }) : new Adapter();
13
+ const adapterFr = new Adapter({
14
+ locale: params.frenchLocale,
15
+ dateLibInstance: params.dateLibInstanceWithTimezoneSupport
16
+ });
17
+ prepareAdapter(adapter);
18
+ prepareAdapter(adapterTZ);
8
19
  describe(adapter.lib, () => {
9
20
  const testSuitParams = _extends({}, params, {
10
- adapter
21
+ adapter,
22
+ adapterTZ,
23
+ adapterFr
11
24
  });
12
25
  testCalculations(testSuitParams);
13
26
  testLocalization(testSuitParams);
@@ -1,22 +1,25 @@
1
1
  import { expect } from 'chai';
2
2
  import { TEST_DATE_ISO_STRING, TEST_DATE_LOCALE_STRING } from './describeGregorianAdapter.utils';
3
3
  export const testCalculations = ({
4
- adapter
4
+ adapter,
5
+ adapterTZ,
6
+ adapterFr,
7
+ setDefaultTimezone
5
8
  }) => {
6
9
  const testDateIso = adapter.date(TEST_DATE_ISO_STRING);
7
10
  const testDateLocale = adapter.date(TEST_DATE_LOCALE_STRING);
8
11
  describe('Method: date', () => {
9
12
  it('should parse strings', () => {
10
- expect(adapter.isEqual(testDateIso, adapter.date(TEST_DATE_ISO_STRING))).to.equal(true);
11
- expect(adapter.isEqual(testDateLocale, adapter.date(TEST_DATE_LOCALE_STRING))).to.equal(true);
13
+ expect(adapter.date(TEST_DATE_ISO_STRING)).toEqualDateTime(testDateIso);
14
+ expect(adapter.date(TEST_DATE_LOCALE_STRING)).toEqualDateTime(testDateLocale);
12
15
  });
13
16
  it('should parse native Date object', () => {
14
- expect(adapter.isEqual(testDateIso, adapter.date(new Date(TEST_DATE_ISO_STRING)))).to.equal(true);
15
- expect(adapter.isEqual(testDateLocale, adapter.date(new Date(TEST_DATE_LOCALE_STRING)))).to.equal(true);
17
+ expect(adapter.date(new Date(TEST_DATE_ISO_STRING))).toEqualDateTime(testDateIso);
18
+ expect(adapter.date(new Date(TEST_DATE_LOCALE_STRING))).toEqualDateTime(testDateLocale);
16
19
  });
17
20
  it('should parse already-parsed object', () => {
18
- expect(adapter.isEqual(testDateIso, adapter.date(adapter.date(TEST_DATE_ISO_STRING)))).to.equal(true);
19
- expect(adapter.isEqual(testDateLocale, adapter.date(adapter.date(TEST_DATE_LOCALE_STRING)))).to.equal(true);
21
+ expect(adapter.date(testDateIso)).toEqualDateTime(testDateIso);
22
+ expect(adapter.date(testDateLocale)).toEqualDateTime(testDateLocale);
20
23
  });
21
24
  it('should parse null', () => {
22
25
  expect(adapter.date(null)).to.equal(null);
@@ -25,6 +28,111 @@ export const testCalculations = ({
25
28
  expect(Math.abs(adapter.toJsDate(adapter.date(undefined)).getTime() - Date.now())).to.be.lessThan(5);
26
29
  });
27
30
  });
31
+ describe('Method: dateWithTimezone', () => {
32
+ it('should parse ISO strings', () => {
33
+ if (adapter.isTimezoneCompatible) {
34
+ const test = (timezone, expectedTimezones = timezone) => {
35
+ [adapterTZ, adapterFr].forEach(instance => {
36
+ const dateWithZone = instance.dateWithTimezone(TEST_DATE_ISO_STRING, timezone);
37
+ expect(instance.getTimezone(dateWithZone)).to.equal(expectedTimezones);
38
+
39
+ // Should keep the time of the value in the UTC timezone
40
+ expect(dateWithZone).toEqualDateTime(TEST_DATE_ISO_STRING);
41
+ });
42
+ };
43
+ test('UTC');
44
+ test('system');
45
+ test('America/New_York');
46
+ test('Europe/Paris');
47
+ setDefaultTimezone('America/New_York');
48
+ test('default', 'America/New_York');
49
+ setDefaultTimezone('Europe/Paris');
50
+ test('default', 'Europe/Paris');
51
+
52
+ // Reset to the default timezone
53
+ setDefaultTimezone(undefined);
54
+ } else {
55
+ expect(adapter.dateWithTimezone(TEST_DATE_ISO_STRING, 'system')).toEqualDateTime(TEST_DATE_ISO_STRING);
56
+ expect(adapter.dateWithTimezone(TEST_DATE_ISO_STRING, 'default')).toEqualDateTime(TEST_DATE_ISO_STRING);
57
+ }
58
+ });
59
+ it('should parse locale strings', () => {
60
+ if (adapter.isTimezoneCompatible) {
61
+ const test = timezone => {
62
+ [adapterTZ, adapterFr].forEach(instance => {
63
+ const dateWithZone = instance.dateWithTimezone(TEST_DATE_LOCALE_STRING, timezone);
64
+ expect(instance.getTimezone(dateWithZone)).to.equal(timezone);
65
+
66
+ // Should keep the time of the date in the target timezone
67
+ expect(instance.format(dateWithZone, 'fullTime24h')).to.equal('00:00');
68
+ });
69
+ };
70
+ test('UTC');
71
+ test('system');
72
+ test('America/New_York');
73
+ test('Europe/Paris');
74
+ } else {
75
+ expect(adapter.dateWithTimezone(TEST_DATE_LOCALE_STRING, 'system')).toEqualDateTime(TEST_DATE_LOCALE_STRING);
76
+ }
77
+ });
78
+ it('should parse null', () => {
79
+ expect(adapter.dateWithTimezone(null, 'system')).to.equal(null);
80
+ if (adapter.isTimezoneCompatible) {
81
+ expect(adapter.dateWithTimezone(null, 'UTC')).to.equal(null);
82
+ expect(adapter.dateWithTimezone(null, 'America/New_York')).to.equal(null);
83
+ }
84
+ });
85
+ it('should parse undefined', () => {
86
+ if (adapter.isTimezoneCompatible) {
87
+ const testTodayZone = timezone => {
88
+ const dateWithZone = adapterTZ.dateWithTimezone(undefined, timezone);
89
+ expect(adapterTZ.getTimezone(dateWithZone)).to.equal(timezone);
90
+ expect(adapterTZ.getDiff(dateWithZone, adapterTZ.date(new Date()))).to.be.lessThan(5);
91
+ expect(Math.abs(adapterTZ.toJsDate(dateWithZone).getTime() - Date.now())).to.be.lessThan(5);
92
+ };
93
+ testTodayZone('system');
94
+ testTodayZone('UTC');
95
+ testTodayZone('America/New_York');
96
+ } else {
97
+ expect(Math.abs(adapterTZ.toJsDate(adapter.dateWithTimezone(undefined, 'system')).getTime() - Date.now())).to.be.lessThan(5);
98
+ }
99
+ });
100
+ });
101
+ it('Method: getTimezone', () => {
102
+ if (!adapter.isTimezoneCompatible) {
103
+ return;
104
+ }
105
+ const testTimezone = (timezone, expectedTimezone = timezone) => {
106
+ expect(adapter.getTimezone(adapter.dateWithTimezone(undefined, timezone))).to.equal(expectedTimezone);
107
+ };
108
+ testTimezone('system');
109
+ testTimezone('Europe/Paris');
110
+ testTimezone('America/New_York');
111
+ testTimezone('UTC');
112
+ setDefaultTimezone('America/Chicago');
113
+ testTimezone('default', 'America/Chicago');
114
+ setDefaultTimezone(undefined);
115
+ });
116
+ describe('Method: setTimezone', () => {
117
+ it('should support "default"', () => {
118
+ if (adapter.isTimezoneCompatible) {
119
+ const test = timezone => {
120
+ setDefaultTimezone(timezone);
121
+ const dateWithLocaleTimezone = adapter.dateWithTimezone(undefined, 'system');
122
+ const dateWithDefaultTimezone = adapter.setTimezone(dateWithLocaleTimezone, 'default');
123
+ expect(adapter.getTimezone(dateWithDefaultTimezone)).to.equal(timezone);
124
+ };
125
+ test('America/New_York');
126
+ test('Europe/Paris');
127
+
128
+ // Reset to the default timezone
129
+ setDefaultTimezone(undefined);
130
+ } else {
131
+ const localeDate = adapter.dateWithTimezone(undefined, 'system');
132
+ expect(adapter.setTimezone(localeDate, 'default')).to.equal(localeDate);
133
+ }
134
+ });
135
+ });
28
136
  it('Method: toJsDate', () => {
29
137
  expect(adapter.toJsDate(testDateIso)).to.be.instanceOf(Date);
30
138
  expect(adapter.toJsDate(testDateLocale)).to.be.instanceOf(Date);
@@ -103,78 +211,238 @@ export const testCalculations = ({
103
211
  expect(adapter.getDiff(testDateLocale, '2018-09-29', 'weeks')).to.equal(4);
104
212
  });
105
213
  });
106
- it('Method: isEqual', () => {
107
- expect(adapter.isEqual(adapter.date(null), null)).to.equal(true);
108
- expect(adapter.isEqual(testDateIso, adapter.date(TEST_DATE_ISO_STRING))).to.equal(true);
109
- expect(adapter.isEqual(null, testDateIso)).to.equal(false);
110
- expect(adapter.isEqual(testDateLocale, adapter.date(TEST_DATE_LOCALE_STRING))).to.equal(true);
111
- expect(adapter.isEqual(null, testDateLocale)).to.equal(false);
112
- });
113
- it('Method: isSameYear', () => {
114
- expect(adapter.isSameYear(testDateIso, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
115
- expect(adapter.isSameYear(testDateIso, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
116
- expect(adapter.isSameYear(testDateLocale, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
117
- expect(adapter.isSameYear(testDateLocale, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
118
- });
119
- it('Method: isSameMonth', () => {
120
- expect(adapter.isSameMonth(testDateIso, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
121
- expect(adapter.isSameMonth(testDateIso, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
122
- expect(adapter.isSameMonth(testDateLocale, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
123
- expect(adapter.isSameMonth(testDateLocale, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
124
- });
125
- it('Method: isSameDay', () => {
126
- expect(adapter.isSameDay(testDateIso, adapter.date('2018-10-30T00:00:00.000Z'))).to.equal(true);
127
- expect(adapter.isSameDay(testDateIso, adapter.date('2019-10-30T00:00:00.000Z'))).to.equal(false);
128
- expect(adapter.isSameDay(testDateLocale, adapter.date('2018-10-30T00:00:00.000Z'))).to.equal(true);
129
- expect(adapter.isSameDay(testDateLocale, adapter.date('2019-10-30T00:00:00.000Z'))).to.equal(false);
130
- });
131
- it('Method: isSameHour', () => {
132
- expect(adapter.isSameHour(testDateIso, adapter.date('2018-10-30T11:00:00.000Z'))).to.equal(true);
133
- expect(adapter.isSameHour(testDateIso, adapter.date('2018-10-30T12:00:00.000Z'))).to.equal(false);
134
- });
135
- it('Method: isAfter', () => {
136
- expect(adapter.isAfter(adapter.date(), testDateIso)).to.equal(true);
137
- expect(adapter.isAfter(testDateIso, adapter.date())).to.equal(false);
138
- expect(adapter.isAfter(adapter.date(), testDateLocale)).to.equal(true);
139
- expect(adapter.isAfter(testDateLocale, adapter.date())).to.equal(false);
140
- });
141
- it('Method: isAfterYear', () => {
142
- const nextYearIso = adapter.addYears(testDateIso, 1);
143
- expect(adapter.isAfterYear(nextYearIso, testDateIso)).to.equal(true);
144
- expect(adapter.isAfterYear(testDateIso, nextYearIso)).to.equal(false);
145
- const nextYearLocale = adapter.addYears(testDateLocale, 1);
146
- expect(adapter.isAfterYear(nextYearLocale, testDateLocale)).to.equal(true);
147
- expect(adapter.isAfterYear(testDateLocale, nextYearLocale)).to.equal(false);
148
- });
149
- it('Method: isAfterDay', () => {
150
- const nextDayIso = adapter.addDays(testDateIso, 1);
151
- expect(adapter.isAfterDay(nextDayIso, testDateIso)).to.equal(true);
152
- expect(adapter.isAfterDay(testDateIso, nextDayIso)).to.equal(false);
153
- const nextDayLocale = adapter.addDays(testDateLocale, 1);
154
- expect(adapter.isAfterDay(nextDayLocale, testDateLocale)).to.equal(true);
155
- expect(adapter.isAfterDay(testDateLocale, nextDayLocale)).to.equal(false);
156
- });
157
- it('Method: isBefore', () => {
158
- expect(adapter.isBefore(testDateIso, adapter.date())).to.equal(true);
159
- expect(adapter.isBefore(adapter.date(), testDateIso)).to.equal(false);
160
- expect(adapter.isBefore(testDateLocale, adapter.date())).to.equal(true);
161
- expect(adapter.isBefore(adapter.date(), testDateLocale)).to.equal(false);
162
- });
163
- it('Method: isBeforeYear', () => {
164
- const nextYearIso = adapter.addYears(testDateIso, -1);
165
- expect(adapter.isBeforeYear(nextYearIso, testDateIso)).to.equal(true);
166
- expect(adapter.isBeforeYear(testDateIso, nextYearIso)).to.equal(false);
167
- const nextYearLocale = adapter.addYears(testDateLocale, -1);
168
- expect(adapter.isBeforeYear(nextYearLocale, testDateLocale)).to.equal(true);
169
- expect(adapter.isBeforeYear(testDateLocale, nextYearLocale)).to.equal(false);
170
- });
171
- it('Method: isBeforeDay', () => {
172
- const nextDayIso = adapter.addDays(testDateIso, -1);
173
- expect(adapter.isBeforeDay(nextDayIso, testDateIso)).to.equal(true);
174
- expect(adapter.isBeforeDay(testDateIso, nextDayIso)).to.equal(false);
175
- const nextDayLocale = adapter.addDays(testDateLocale, -1);
176
- expect(adapter.isBeforeDay(nextDayLocale, testDateLocale)).to.equal(true);
177
- expect(adapter.isBeforeDay(testDateLocale, nextDayLocale)).to.equal(false);
214
+ describe('Method: isEqual', () => {
215
+ it('should work in the same timezone', () => {
216
+ expect(adapter.isEqual(adapter.date(null), null)).to.equal(true);
217
+ expect(adapter.isEqual(testDateIso, adapter.date(TEST_DATE_ISO_STRING))).to.equal(true);
218
+ expect(adapter.isEqual(null, testDateIso)).to.equal(false);
219
+ expect(adapter.isEqual(testDateLocale, adapter.date(TEST_DATE_LOCALE_STRING))).to.equal(true);
220
+ expect(adapter.isEqual(null, testDateLocale)).to.equal(false);
221
+ });
222
+ it('should work with different timezones', function test() {
223
+ if (!adapter.isTimezoneCompatible) {
224
+ this.skip();
225
+ }
226
+ const dateInLondonTZ = adapterTZ.setTimezone(testDateIso, 'Europe/London');
227
+ const dateInParisTZ = adapterTZ.setTimezone(testDateIso, 'Europe/Paris');
228
+ expect(adapterTZ.isEqual(dateInLondonTZ, dateInParisTZ)).to.equal(true);
229
+ });
230
+ });
231
+ describe('Method: isSameYear', () => {
232
+ it('should work in the same timezone', () => {
233
+ expect(adapter.isSameYear(testDateIso, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
234
+ expect(adapter.isSameYear(testDateIso, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
235
+ expect(adapter.isSameYear(testDateLocale, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
236
+ expect(adapter.isSameYear(testDateLocale, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
237
+ });
238
+ it('should work with different timezones', function test() {
239
+ if (!adapter.isTimezoneCompatible) {
240
+ this.skip();
241
+ }
242
+
243
+ // Both dates below have the same timestamp, but they are not in the same year when represented in their respective timezone.
244
+ // The adapter should still consider that they are in the same year.
245
+ const dateInLondonTZ = adapterTZ.endOfYear(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
246
+ const dateInParisTZ = adapterTZ.setTimezone(dateInLondonTZ, 'Europe/Paris');
247
+ expect(adapterTZ.isSameYear(dateInLondonTZ, dateInParisTZ)).to.equal(true);
248
+ expect(adapterTZ.isSameYear(dateInParisTZ, dateInLondonTZ)).to.equal(true);
249
+ });
250
+ });
251
+ describe('Method: isSameMonth', () => {
252
+ it('should work in the same timezone', () => {
253
+ expect(adapter.isSameMonth(testDateIso, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
254
+ expect(adapter.isSameMonth(testDateIso, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
255
+ expect(adapter.isSameMonth(testDateLocale, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
256
+ expect(adapter.isSameMonth(testDateLocale, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
257
+ });
258
+ it('should work with different timezones', function test() {
259
+ if (!adapter.isTimezoneCompatible) {
260
+ this.skip();
261
+ }
262
+
263
+ // Both dates below have the same timestamp, but they are not in the same month when represented in their respective timezone.
264
+ // The adapter should still consider that they are in the same month.
265
+ const dateInLondonTZ = adapterTZ.endOfMonth(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
266
+ const dateInParisTZ = adapterTZ.setTimezone(dateInLondonTZ, 'Europe/Paris');
267
+ expect(adapterTZ.isSameMonth(dateInLondonTZ, dateInParisTZ)).to.equal(true);
268
+ expect(adapterTZ.isSameMonth(dateInParisTZ, dateInLondonTZ)).to.equal(true);
269
+ });
270
+ });
271
+ describe('Method: isSameDay', () => {
272
+ it('should work in the same timezone', () => {
273
+ expect(adapter.isSameDay(testDateIso, adapter.date('2018-10-30T00:00:00.000Z'))).to.equal(true);
274
+ expect(adapter.isSameDay(testDateIso, adapter.date('2019-10-30T00:00:00.000Z'))).to.equal(false);
275
+ expect(adapter.isSameDay(testDateLocale, adapter.date('2018-10-30T00:00:00.000Z'))).to.equal(true);
276
+ expect(adapter.isSameDay(testDateLocale, adapter.date('2019-10-30T00:00:00.000Z'))).to.equal(false);
277
+ });
278
+ it('should work with different timezones', function test() {
279
+ if (!adapter.isTimezoneCompatible) {
280
+ this.skip();
281
+ }
282
+
283
+ // Both dates below have the same timestamp, but they are not in the same day when represented in their respective timezone.
284
+ // The adapter should still consider that they are in the same day.
285
+ const dateInLondonTZ = adapterTZ.endOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
286
+ const dateInParisTZ = adapterTZ.setTimezone(dateInLondonTZ, 'Europe/Paris');
287
+ expect(adapterTZ.isSameDay(dateInLondonTZ, dateInParisTZ)).to.equal(true);
288
+ expect(adapterTZ.isSameDay(dateInParisTZ, dateInLondonTZ)).to.equal(true);
289
+ });
290
+ });
291
+ describe('Method: isSameHour', () => {
292
+ it('should work in the same timezone', () => {
293
+ expect(adapter.isSameHour(testDateIso, adapter.date('2018-10-30T11:00:00.000Z'))).to.equal(true);
294
+ expect(adapter.isSameHour(testDateIso, adapter.date('2018-10-30T12:00:00.000Z'))).to.equal(false);
295
+ });
296
+ it('should work with different timezones', function test() {
297
+ if (!adapter.isTimezoneCompatible) {
298
+ this.skip();
299
+ }
300
+
301
+ // Both dates below have the same timestamp, but they are not in the same day when represented in their respective timezone.
302
+ // The adapter should still consider that they are in the same day.
303
+ const dateInLondonTZ = adapterTZ.setTimezone(testDateIso, 'Europe/London');
304
+ const dateInParisTZ = adapterTZ.setTimezone(dateInLondonTZ, 'Europe/Paris');
305
+ expect(adapterTZ.isSameHour(dateInLondonTZ, dateInParisTZ)).to.equal(true);
306
+ expect(adapterTZ.isSameHour(dateInParisTZ, dateInLondonTZ)).to.equal(true);
307
+ });
308
+ });
309
+ describe('Method: isAfter', () => {
310
+ it('should work with the same timezone', () => {
311
+ expect(adapter.isAfter(adapter.date(), testDateIso)).to.equal(true);
312
+ expect(adapter.isAfter(testDateIso, adapter.date())).to.equal(false);
313
+ expect(adapter.isAfter(adapter.date(), testDateLocale)).to.equal(true);
314
+ expect(adapter.isAfter(testDateLocale, adapter.date())).to.equal(false);
315
+ });
316
+ it('should work with different timezones', function test() {
317
+ if (!adapter.isTimezoneCompatible) {
318
+ this.skip();
319
+ }
320
+ const dateInLondonTZ = adapterTZ.endOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
321
+ const dateInParisTZ = adapterTZ.addMinutes(adapterTZ.endOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/Paris')), 30);
322
+ expect(adapter.isAfter(dateInLondonTZ, dateInParisTZ)).to.equal(true);
323
+ expect(adapter.isAfter(dateInParisTZ, dateInLondonTZ)).to.equal(false);
324
+ });
325
+ });
326
+ describe('Method: isAfterYear', () => {
327
+ it('should work in the same timezone', () => {
328
+ const nextYearIso = adapter.addYears(testDateIso, 1);
329
+ expect(adapter.isAfterYear(nextYearIso, testDateIso)).to.equal(true);
330
+ expect(adapter.isAfterYear(testDateIso, nextYearIso)).to.equal(false);
331
+ const nextYearLocale = adapter.addYears(testDateLocale, 1);
332
+ expect(adapter.isAfterYear(nextYearLocale, testDateLocale)).to.equal(true);
333
+ expect(adapter.isAfterYear(testDateLocale, nextYearLocale)).to.equal(false);
334
+ });
335
+ it('should work with different timezones', function test() {
336
+ if (!adapter.isTimezoneCompatible) {
337
+ this.skip();
338
+ }
339
+
340
+ // Both dates below have the same timestamp, but they are not in the same year when represented in their respective timezone.
341
+ // The adapter should still consider that they are in the same year.
342
+ const dateInLondonTZ = adapterTZ.endOfYear(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
343
+ const dateInParisTZ = adapterTZ.setTimezone(dateInLondonTZ, 'Europe/Paris');
344
+ expect(adapterTZ.isAfterYear(dateInLondonTZ, dateInParisTZ)).to.equal(false);
345
+ expect(adapterTZ.isAfterYear(dateInParisTZ, dateInLondonTZ)).to.equal(false);
346
+ });
347
+ });
348
+ describe('Method: isAfterDay', () => {
349
+ it('should work with the same timezone', () => {
350
+ const nextDayIso = adapter.addDays(testDateIso, 1);
351
+ expect(adapter.isAfterDay(nextDayIso, testDateIso)).to.equal(true);
352
+ expect(adapter.isAfterDay(testDateIso, nextDayIso)).to.equal(false);
353
+ const nextDayLocale = adapter.addDays(testDateLocale, 1);
354
+ expect(adapter.isAfterDay(nextDayLocale, testDateLocale)).to.equal(true);
355
+ expect(adapter.isAfterDay(testDateLocale, nextDayLocale)).to.equal(false);
356
+ });
357
+ it('should work with different timezones', function test() {
358
+ if (!adapter.isTimezoneCompatible) {
359
+ this.skip();
360
+ }
361
+
362
+ // Both dates below have the same timestamp, but they are not in the same day when represented in their respective timezone.
363
+ // The adapter should still consider that they are in the same day.
364
+ const dateInLondonTZ = adapterTZ.endOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
365
+ const dateInParisTZ = adapterTZ.setTimezone(dateInLondonTZ, 'Europe/Paris');
366
+ expect(adapterTZ.isAfterDay(dateInLondonTZ, dateInParisTZ)).to.equal(false);
367
+ expect(adapterTZ.isAfterDay(dateInParisTZ, dateInLondonTZ)).to.equal(false);
368
+
369
+ // Both dates below have the same day when represented in their respective timezone,
370
+ // But not when represented in the same timezone
371
+ // The adapter should consider that they are not in the same day
372
+ const dateInLondonTZ2 = adapterTZ.startOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
373
+ const dateInParisTZ2 = adapterTZ.addHours(adapterTZ.setTimezone(dateInLondonTZ2, 'Europe/Paris'), -1);
374
+ expect(adapterTZ.isAfterDay(dateInLondonTZ2, dateInParisTZ2)).to.equal(true);
375
+ expect(adapterTZ.isAfterDay(dateInParisTZ2, dateInLondonTZ2)).to.equal(false);
376
+ });
377
+ });
378
+ describe('Method: isBefore', () => {
379
+ it('should work with the same timezone', () => {
380
+ expect(adapter.isBefore(testDateIso, adapter.date())).to.equal(true);
381
+ expect(adapter.isBefore(adapter.date(), testDateIso)).to.equal(false);
382
+ expect(adapter.isBefore(testDateLocale, adapter.date())).to.equal(true);
383
+ expect(adapter.isBefore(adapter.date(), testDateLocale)).to.equal(false);
384
+ });
385
+ it('should work with different timezones', function test() {
386
+ if (!adapter.isTimezoneCompatible) {
387
+ this.skip();
388
+ }
389
+ const dateInLondonTZ = adapterTZ.endOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
390
+ const dateInParisTZ = adapterTZ.addMinutes(adapterTZ.endOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/Paris')), 30);
391
+ expect(adapter.isBefore(dateInLondonTZ, dateInParisTZ)).to.equal(false);
392
+ expect(adapter.isBefore(dateInParisTZ, dateInLondonTZ)).to.equal(true);
393
+ });
394
+ });
395
+ describe('Method: isBeforeYear', () => {
396
+ it('should work in the same timezone', () => {
397
+ const nextYearIso = adapter.addYears(testDateIso, -1);
398
+ expect(adapter.isBeforeYear(nextYearIso, testDateIso)).to.equal(true);
399
+ expect(adapter.isBeforeYear(testDateIso, nextYearIso)).to.equal(false);
400
+ const nextYearLocale = adapter.addYears(testDateLocale, -1);
401
+ expect(adapter.isBeforeYear(nextYearLocale, testDateLocale)).to.equal(true);
402
+ expect(adapter.isBeforeYear(testDateLocale, nextYearLocale)).to.equal(false);
403
+ });
404
+ it('should work with different timezones', function test() {
405
+ if (!adapter.isTimezoneCompatible) {
406
+ this.skip();
407
+ }
408
+
409
+ // Both dates below have the same timestamp, but they are not in the same year when represented in their respective timezone.
410
+ // The adapter should still consider that they are in the same year.
411
+ const dateInLondonTZ = adapterTZ.endOfYear(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
412
+ const dateInParisTZ = adapterTZ.setTimezone(dateInLondonTZ, 'Europe/Paris');
413
+ expect(adapterTZ.isBeforeYear(dateInLondonTZ, dateInParisTZ)).to.equal(false);
414
+ expect(adapterTZ.isBeforeYear(dateInParisTZ, dateInLondonTZ)).to.equal(false);
415
+ });
416
+ });
417
+ describe('Method: isBeforeDay', () => {
418
+ it('should work with the same timezone', () => {
419
+ const previousDayIso = adapter.addDays(testDateIso, -1);
420
+ expect(adapter.isBeforeDay(previousDayIso, testDateIso)).to.equal(true);
421
+ expect(adapter.isBeforeDay(testDateIso, previousDayIso)).to.equal(false);
422
+ const previousDayLocale = adapter.addDays(testDateLocale, -1);
423
+ expect(adapter.isBeforeDay(previousDayLocale, testDateLocale)).to.equal(true);
424
+ expect(adapter.isBeforeDay(testDateLocale, previousDayLocale)).to.equal(false);
425
+ });
426
+ it('should work with different timezones', function test() {
427
+ if (!adapter.isTimezoneCompatible) {
428
+ this.skip();
429
+ }
430
+
431
+ // Both dates below have the same timestamp, but they are not in the same day when represented in their respective timezone.
432
+ // The adapter should still consider that they are in the same day.
433
+ const dateInLondonTZ = adapterTZ.endOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
434
+ const dateInParisTZ = adapterTZ.setTimezone(dateInLondonTZ, 'Europe/Paris');
435
+ expect(adapterTZ.isBeforeDay(dateInLondonTZ, dateInParisTZ)).to.equal(false);
436
+ expect(adapterTZ.isBeforeDay(dateInParisTZ, dateInLondonTZ)).to.equal(false);
437
+
438
+ // Both dates below have the same day when represented in their respective timezone,
439
+ // But not when represented in the same timezone
440
+ // The adapter should consider that they are not in the same day
441
+ const dateInLondonTZ2 = adapterTZ.endOfDay(adapterTZ.setTimezone(testDateIso, 'Europe/London'));
442
+ const dateInParisTZ2 = adapterTZ.addHours(adapterTZ.setTimezone(dateInLondonTZ2, 'Europe/Paris'), -1);
443
+ expect(adapterTZ.isBeforeDay(dateInLondonTZ2, dateInParisTZ2)).to.equal(false);
444
+ expect(adapterTZ.isBeforeDay(dateInParisTZ2, dateInLondonTZ2)).to.equal(true);
445
+ });
178
446
  });
179
447
  describe('Method: isWithinRange', () => {
180
448
  it('should work on simple examples', () => {
@@ -1,5 +1,5 @@
1
1
  import { expect } from 'chai';
2
- import sinon from 'sinon';
2
+ import { stub } from 'sinon';
3
3
  import { cleanText } from 'test/utils/pickers-utils';
4
4
  import { TEST_DATE_ISO_STRING } from './describeGregorianAdapter.utils';
5
5
  export const testLocalization = ({
@@ -15,10 +15,10 @@ export const testLocalization = ({
15
15
 
16
16
  // Moment only translates for 12-hour cycle.
17
17
  if (adapter.lib === 'moment') {
18
- const stub = sinon.stub(adapter, 'is12HourCycleInCurrentLocale').returns(false);
18
+ const sinonStub = stub(adapter, 'is12HourCycleInCurrentLocale').returns(false);
19
19
  expect(adapter.getMeridiemText('am')).to.equal('AM');
20
20
  expect(adapter.getMeridiemText('pm')).to.equal('PM');
21
- stub.restore();
21
+ sinonStub.restore();
22
22
  }
23
23
  });
24
24
  it('Method: expandFormat', () => {