@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
@@ -28,6 +28,7 @@ type DateFnsLocale = typeof defaultLocale;
28
28
  */
29
29
  export declare class AdapterDateFns implements MuiPickersAdapter<Date, DateFnsLocale> {
30
30
  isMUIAdapter: boolean;
31
+ isTimezoneCompatible: boolean;
31
32
  lib: string;
32
33
  locale?: DateFnsLocale;
33
34
  formats: AdapterFormats;
@@ -38,6 +39,9 @@ export declare class AdapterDateFns implements MuiPickersAdapter<Date, DateFnsLo
38
39
  };
39
40
  constructor({ locale, formats }?: AdapterOptions<DateFnsLocale, never>);
40
41
  date: (value?: any) => Date | null;
42
+ dateWithTimezone: (value: string | null | undefined) => Date | null;
43
+ getTimezone: () => string;
44
+ setTimezone: (value: Date) => Date;
41
45
  toJsDate: (value: Date) => Date;
42
46
  parseISO: (isoString: string) => Date;
43
47
  toISO: (value: Date) => string;
@@ -85,12 +89,14 @@ export declare class AdapterDateFns implements MuiPickersAdapter<Date, DateFnsLo
85
89
  getHours: (value: Date) => number;
86
90
  getMinutes: (value: Date) => number;
87
91
  getSeconds: (value: Date) => number;
92
+ getMilliseconds: (value: Date) => number;
88
93
  setYear: (value: Date, year: number) => Date;
89
94
  setMonth: (value: Date, month: number) => Date;
90
95
  setDate: (value: Date, date: number) => Date;
91
96
  setHours: (value: Date, hours: number) => Date;
92
97
  setMinutes: (value: Date, minutes: number) => Date;
93
98
  setSeconds: (value: Date, seconds: number) => Date;
99
+ setMilliseconds: (value: Date, milliseconds: number) => Date;
94
100
  getDaysInMonth: (value: Date) => number;
95
101
  getNextMonth: (value: Date) => Date;
96
102
  getPreviousMonth: (value: Date) => Date;
@@ -27,6 +27,7 @@ import getHours from 'date-fns/getHours';
27
27
  import getMinutes from 'date-fns/getMinutes';
28
28
  import getMonth from 'date-fns/getMonth';
29
29
  import getSeconds from 'date-fns/getSeconds';
30
+ import getMilliseconds from 'date-fns/getMilliseconds';
30
31
  import getWeek from 'date-fns/getWeek';
31
32
  import getYear from 'date-fns/getYear';
32
33
  import isAfter from 'date-fns/isAfter';
@@ -43,6 +44,7 @@ import setHours from 'date-fns/setHours';
43
44
  import setMinutes from 'date-fns/setMinutes';
44
45
  import setMonth from 'date-fns/setMonth';
45
46
  import setSeconds from 'date-fns/setSeconds';
47
+ import setMilliseconds from 'date-fns/setMilliseconds';
46
48
  import setYear from 'date-fns/setYear';
47
49
  import startOfDay from 'date-fns/startOfDay';
48
50
  import startOfMonth from 'date-fns/startOfMonth';
@@ -221,33 +223,34 @@ const formatTokenMap = {
221
223
  ss: 'seconds'
222
224
  };
223
225
  const defaultFormats = {
226
+ year: 'yyyy',
227
+ month: 'LLLL',
228
+ monthShort: 'MMM',
224
229
  dayOfMonth: 'd',
230
+ weekday: 'EEEE',
231
+ weekdayShort: 'EEE',
232
+ hours24h: 'HH',
233
+ hours12h: 'hh',
234
+ meridiem: 'aa',
235
+ minutes: 'mm',
236
+ seconds: 'ss',
225
237
  fullDate: 'PP',
226
238
  fullDateWithWeekday: 'PPPP',
227
- fullDateTime: 'PP p',
228
- fullDateTime12h: 'PP hh:mm aa',
229
- fullDateTime24h: 'PP HH:mm',
239
+ keyboardDate: 'P',
240
+ shortDate: 'MMM d',
241
+ normalDate: 'd MMMM',
242
+ normalDateWithWeekday: 'EEE, MMM d',
243
+ monthAndYear: 'LLLL yyyy',
244
+ monthAndDate: 'MMMM d',
230
245
  fullTime: 'p',
231
246
  fullTime12h: 'hh:mm aa',
232
247
  fullTime24h: 'HH:mm',
233
- hours12h: 'hh',
234
- hours24h: 'HH',
235
- keyboardDate: 'P',
248
+ fullDateTime: 'PP p',
249
+ fullDateTime12h: 'PP hh:mm aa',
250
+ fullDateTime24h: 'PP HH:mm',
236
251
  keyboardDateTime: 'P p',
237
252
  keyboardDateTime12h: 'P hh:mm aa',
238
- keyboardDateTime24h: 'P HH:mm',
239
- minutes: 'mm',
240
- month: 'LLLL',
241
- monthAndDate: 'MMMM d',
242
- monthAndYear: 'LLLL yyyy',
243
- monthShort: 'MMM',
244
- weekday: 'EEEE',
245
- weekdayShort: 'EEE',
246
- normalDate: 'd MMMM',
247
- normalDateWithWeekday: 'EEE, MMM d',
248
- seconds: 'ss',
249
- shortDate: 'MMM d',
250
- year: 'yyyy'
253
+ keyboardDateTime24h: 'P HH:mm'
251
254
  };
252
255
 
253
256
  /**
@@ -281,6 +284,7 @@ export class AdapterDateFns {
281
284
  formats
282
285
  } = {}) {
283
286
  this.isMUIAdapter = true;
287
+ this.isTimezoneCompatible = false;
284
288
  this.lib = 'date-fns';
285
289
  this.locale = void 0;
286
290
  this.formats = void 0;
@@ -298,6 +302,15 @@ export class AdapterDateFns {
298
302
  }
299
303
  return new Date(value);
300
304
  };
305
+ this.dateWithTimezone = value => {
306
+ return this.date(value);
307
+ };
308
+ this.getTimezone = () => {
309
+ return 'default';
310
+ };
311
+ this.setTimezone = value => {
312
+ return value;
313
+ };
301
314
  this.toJsDate = value => {
302
315
  return value;
303
316
  };
@@ -498,6 +511,9 @@ export class AdapterDateFns {
498
511
  this.getSeconds = value => {
499
512
  return getSeconds(value);
500
513
  };
514
+ this.getMilliseconds = value => {
515
+ return getMilliseconds(value);
516
+ };
501
517
  this.setYear = (value, year) => {
502
518
  return setYear(value, year);
503
519
  };
@@ -516,6 +532,9 @@ export class AdapterDateFns {
516
532
  this.setSeconds = (value, seconds) => {
517
533
  return setSeconds(value, seconds);
518
534
  };
535
+ this.setMilliseconds = (value, milliseconds) => {
536
+ return setMilliseconds(value, milliseconds);
537
+ };
519
538
  this.getDaysInMonth = value => {
520
539
  return getDaysInMonth(value);
521
540
  };
@@ -28,6 +28,7 @@ type DateFnsLocale = typeof defaultLocale;
28
28
  */
29
29
  export declare class AdapterDateFnsJalali implements MuiPickersAdapter<Date, DateFnsLocale> {
30
30
  isMUIAdapter: boolean;
31
+ isTimezoneCompatible: boolean;
31
32
  lib: string;
32
33
  locale?: DateFnsLocale;
33
34
  formats: AdapterFormats;
@@ -38,6 +39,9 @@ export declare class AdapterDateFnsJalali implements MuiPickersAdapter<Date, Dat
38
39
  };
39
40
  constructor({ locale, formats }?: AdapterOptions<DateFnsLocale, never>);
40
41
  date: (value?: any) => Date | null;
42
+ dateWithTimezone: (value: string | null | undefined) => Date | null;
43
+ getTimezone: () => string;
44
+ setTimezone: (value: Date) => Date;
41
45
  toJsDate: (value: Date) => Date;
42
46
  parseISO: (isoString: string) => Date;
43
47
  toISO: (value: Date) => string;
@@ -85,12 +89,14 @@ export declare class AdapterDateFnsJalali implements MuiPickersAdapter<Date, Dat
85
89
  getHours: (value: Date) => number;
86
90
  getMinutes: (value: Date) => number;
87
91
  getSeconds: (value: Date) => number;
92
+ getMilliseconds: (value: Date) => number;
88
93
  setYear: (value: Date, year: number) => Date;
89
94
  setMonth: (value: Date, month: number) => Date;
90
95
  setDate: (value: Date, date: number) => Date;
91
96
  setHours: (value: Date, hours: number) => Date;
92
97
  setMinutes: (value: Date, minutes: number) => Date;
93
98
  setSeconds: (value: Date, seconds: number) => Date;
99
+ setMilliseconds: (value: Date, milliseconds: number) => Date;
94
100
  getDaysInMonth: (value: Date) => number;
95
101
  getNextMonth: (value: Date) => Date;
96
102
  getPreviousMonth: (value: Date) => Date;
@@ -24,6 +24,7 @@ import dateFnsFormat from 'date-fns-jalali/format';
24
24
  import formatISO from 'date-fns-jalali/formatISO';
25
25
  import getHours from 'date-fns-jalali/getHours';
26
26
  import getSeconds from 'date-fns-jalali/getSeconds';
27
+ import getMilliseconds from 'date-fns-jalali/getMilliseconds';
27
28
  import getWeek from 'date-fns-jalali/getWeek';
28
29
  import getYear from 'date-fns-jalali/getYear';
29
30
  import getMonth from 'date-fns-jalali/getMonth';
@@ -45,6 +46,7 @@ import setHours from 'date-fns-jalali/setHours';
45
46
  import setMinutes from 'date-fns-jalali/setMinutes';
46
47
  import setMonth from 'date-fns-jalali/setMonth';
47
48
  import setSeconds from 'date-fns-jalali/setSeconds';
49
+ import setMilliseconds from 'date-fns-jalali/setMilliseconds';
48
50
  import setYear from 'date-fns-jalali/setYear';
49
51
  import startOfDay from 'date-fns-jalali/startOfDay';
50
52
  import startOfMonth from 'date-fns-jalali/startOfMonth';
@@ -221,33 +223,34 @@ const formatTokenMap = {
221
223
  ss: 'seconds'
222
224
  };
223
225
  const defaultFormats = {
226
+ year: 'yyyy',
227
+ month: 'LLLL',
228
+ monthShort: 'MMM',
224
229
  dayOfMonth: 'd',
230
+ weekday: 'EEEE',
231
+ weekdayShort: 'EEE',
232
+ hours24h: 'HH',
233
+ hours12h: 'hh',
234
+ meridiem: 'aa',
235
+ minutes: 'mm',
236
+ seconds: 'ss',
225
237
  fullDate: 'PPP',
226
238
  fullDateWithWeekday: 'PPPP',
239
+ keyboardDate: 'P',
240
+ shortDate: 'd MMM',
241
+ normalDate: 'd MMMM',
242
+ normalDateWithWeekday: 'EEE, d MMMM',
243
+ monthAndYear: 'LLLL yyyy',
244
+ monthAndDate: 'd MMMM',
227
245
  fullDateTime: 'PPP p',
228
246
  fullDateTime12h: 'PPP hh:mm aa',
229
247
  fullDateTime24h: 'PPP HH:mm',
230
248
  fullTime: 'p',
231
249
  fullTime12h: 'hh:mm aaa',
232
250
  fullTime24h: 'HH:mm',
233
- hours12h: 'hh',
234
- hours24h: 'HH',
235
- keyboardDate: 'P',
236
251
  keyboardDateTime: 'P p',
237
252
  keyboardDateTime12h: 'P hh:mm aa',
238
- keyboardDateTime24h: 'P HH:mm',
239
- minutes: 'mm',
240
- month: 'LLLL',
241
- monthAndDate: 'd MMMM',
242
- monthAndYear: 'LLLL yyyy',
243
- monthShort: 'MMM',
244
- weekday: 'EEEE',
245
- weekdayShort: 'EEE',
246
- normalDate: 'd MMMM',
247
- normalDateWithWeekday: 'EEE, d MMMM',
248
- seconds: 'ss',
249
- shortDate: 'd MMM',
250
- year: 'yyyy'
253
+ keyboardDateTime24h: 'P HH:mm'
251
254
  };
252
255
  const NUMBER_SYMBOL_MAP = {
253
256
  '1': '۱',
@@ -293,6 +296,7 @@ export class AdapterDateFnsJalali {
293
296
  formats
294
297
  } = {}) {
295
298
  this.isMUIAdapter = true;
299
+ this.isTimezoneCompatible = false;
296
300
  this.lib = 'date-fns-jalali';
297
301
  this.locale = void 0;
298
302
  this.formats = void 0;
@@ -310,6 +314,15 @@ export class AdapterDateFnsJalali {
310
314
  }
311
315
  return new Date(value);
312
316
  };
317
+ this.dateWithTimezone = value => {
318
+ return this.date(value);
319
+ };
320
+ this.getTimezone = () => {
321
+ return 'default';
322
+ };
323
+ this.setTimezone = value => {
324
+ return value;
325
+ };
313
326
  this.toJsDate = value => {
314
327
  return value;
315
328
  };
@@ -510,6 +523,9 @@ export class AdapterDateFnsJalali {
510
523
  this.getSeconds = value => {
511
524
  return getSeconds(value);
512
525
  };
526
+ this.getMilliseconds = value => {
527
+ return getMilliseconds(value);
528
+ };
513
529
  this.setYear = (value, year) => {
514
530
  return setYear(value, year);
515
531
  };
@@ -528,6 +544,9 @@ export class AdapterDateFnsJalali {
528
544
  this.setSeconds = (value, seconds) => {
529
545
  return setSeconds(value, seconds);
530
546
  };
547
+ this.setMilliseconds = (value, milliseconds) => {
548
+ return setMilliseconds(value, milliseconds);
549
+ };
531
550
  this.getDaysInMonth = value => {
532
551
  return getDaysInMonth(value);
533
552
  };
@@ -1,5 +1,5 @@
1
1
  import defaultDayjs, { Dayjs } from 'dayjs';
2
- import { FieldFormatTokenMap, MuiPickersAdapter, AdapterFormats, AdapterUnits, AdapterOptions } from '../models';
2
+ import { FieldFormatTokenMap, MuiPickersAdapter, AdapterFormats, AdapterUnits, AdapterOptions, PickersTimezone } from '../models';
3
3
  type Constructor = (...args: Parameters<typeof defaultDayjs>) => Dayjs;
4
4
  /**
5
5
  * Based on `@date-io/dayjs`
@@ -28,6 +28,7 @@ type Constructor = (...args: Parameters<typeof defaultDayjs>) => Dayjs;
28
28
  */
29
29
  export declare class AdapterDayjs implements MuiPickersAdapter<Dayjs, string> {
30
30
  isMUIAdapter: boolean;
31
+ isTimezoneCompatible: boolean;
31
32
  lib: string;
32
33
  rawDayJsInstance: typeof defaultDayjs;
33
34
  dayjs: Constructor;
@@ -39,8 +40,18 @@ export declare class AdapterDayjs implements MuiPickersAdapter<Dayjs, string> {
39
40
  };
40
41
  formatTokenMap: FieldFormatTokenMap;
41
42
  constructor({ locale, formats, instance }?: AdapterOptions<string, typeof defaultDayjs>);
43
+ private setLocaleToValue;
44
+ private hasUTCPlugin;
45
+ private hasTimezonePlugin;
46
+ private isSame;
47
+ private createSystemDate;
48
+ private createUTCDate;
49
+ private createTZDate;
42
50
  private getLocaleFormats;
43
51
  date: (value?: any) => defaultDayjs.Dayjs | null;
52
+ dateWithTimezone: (value: string | null | undefined, timezone: PickersTimezone) => Dayjs | null;
53
+ getTimezone: (value: Dayjs) => string;
54
+ setTimezone: (value: Dayjs, timezone: PickersTimezone) => Dayjs;
44
55
  toJsDate: (value: Dayjs) => Date;
45
56
  parseISO: (isoString: string) => defaultDayjs.Dayjs;
46
57
  toISO: (value: Dayjs) => string;
@@ -88,12 +99,14 @@ export declare class AdapterDayjs implements MuiPickersAdapter<Dayjs, string> {
88
99
  getHours: (value: Dayjs) => number;
89
100
  getMinutes: (value: Dayjs) => number;
90
101
  getSeconds: (value: Dayjs) => number;
102
+ getMilliseconds: (value: Dayjs) => number;
91
103
  setYear: (value: Dayjs, year: number) => defaultDayjs.Dayjs;
92
104
  setMonth: (value: Dayjs, month: number) => defaultDayjs.Dayjs;
93
105
  setDate: (value: Dayjs, date: number) => defaultDayjs.Dayjs;
94
106
  setHours: (value: Dayjs, hours: number) => defaultDayjs.Dayjs;
95
107
  setMinutes: (value: Dayjs, minutes: number) => defaultDayjs.Dayjs;
96
108
  setSeconds: (value: Dayjs, seconds: number) => defaultDayjs.Dayjs;
109
+ setMilliseconds: (value: Dayjs, milliseconds: number) => defaultDayjs.Dayjs;
97
110
  getDaysInMonth: (value: Dayjs) => number;
98
111
  getNextMonth: (value: Dayjs) => defaultDayjs.Dayjs;
99
112
  getPreviousMonth: (value: Dayjs) => defaultDayjs.Dayjs;
@@ -94,34 +94,37 @@ const formatTokenMap = {
94
94
  ss: 'seconds'
95
95
  };
96
96
  const defaultFormats = {
97
- normalDateWithWeekday: 'ddd, MMM D',
98
- normalDate: 'D MMMM',
99
- shortDate: 'MMM D',
100
- monthAndDate: 'MMMM D',
101
- dayOfMonth: 'D',
102
97
  year: 'YYYY',
103
98
  month: 'MMMM',
104
99
  monthShort: 'MMM',
105
- monthAndYear: 'MMMM YYYY',
100
+ dayOfMonth: 'D',
106
101
  weekday: 'dddd',
107
102
  weekdayShort: 'ddd',
108
- minutes: 'mm',
109
- hours12h: 'hh',
110
103
  hours24h: 'HH',
104
+ hours12h: 'hh',
105
+ meridiem: 'A',
106
+ minutes: 'mm',
111
107
  seconds: 'ss',
108
+ fullDate: 'll',
109
+ fullDateWithWeekday: 'dddd, LL',
110
+ keyboardDate: 'L',
111
+ shortDate: 'MMM D',
112
+ normalDate: 'D MMMM',
113
+ normalDateWithWeekday: 'ddd, MMM D',
114
+ monthAndYear: 'MMMM YYYY',
115
+ monthAndDate: 'MMMM D',
112
116
  fullTime: 'LT',
113
117
  fullTime12h: 'hh:mm A',
114
118
  fullTime24h: 'HH:mm',
115
- fullDate: 'll',
116
- fullDateWithWeekday: 'dddd, LL',
117
119
  fullDateTime: 'lll',
118
120
  fullDateTime12h: 'll hh:mm A',
119
121
  fullDateTime24h: 'll HH:mm',
120
- keyboardDate: 'L',
121
122
  keyboardDateTime: 'L LT',
122
123
  keyboardDateTime12h: 'L hh:mm A',
123
124
  keyboardDateTime24h: 'L HH:mm'
124
125
  };
126
+ const MISSING_UTC_PLUGIN = ['Missing UTC plugin', 'To be able to use UTC or timezones, you have to enable the `utc` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc'].join('\n');
127
+ const MISSING_TIMEZONE_PLUGIN = ['Missing timezone plugin', 'To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone'].join('\n');
125
128
  const withLocale = (dayjs, locale) => !locale ? dayjs : (...args) => dayjs(...args).locale(locale);
126
129
 
127
130
  /**
@@ -156,6 +159,7 @@ export class AdapterDayjs {
156
159
  instance
157
160
  } = {}) {
158
161
  this.isMUIAdapter = true;
162
+ this.isTimezoneCompatible = true;
159
163
  this.lib = 'dayjs';
160
164
  this.rawDayJsInstance = void 0;
161
165
  this.dayjs = void 0;
@@ -166,6 +170,44 @@ export class AdapterDayjs {
166
170
  end: ']'
167
171
  };
168
172
  this.formatTokenMap = formatTokenMap;
173
+ this.setLocaleToValue = value => {
174
+ const expectedLocale = this.getCurrentLocaleCode();
175
+ if (expectedLocale === value.locale()) {
176
+ return value;
177
+ }
178
+ return value.locale(expectedLocale);
179
+ };
180
+ this.hasUTCPlugin = () => typeof defaultDayjs.utc !== 'undefined';
181
+ this.hasTimezonePlugin = () => typeof defaultDayjs.tz !== 'undefined';
182
+ this.isSame = (value, comparing, comparisonTemplate) => {
183
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
184
+ return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);
185
+ };
186
+ this.createSystemDate = value => {
187
+ // TODO v7: Stop using `this.rawDayJsInstance` (drop the `instance` param on the adapters)
188
+ return this.rawDayJsInstance(value);
189
+ };
190
+ this.createUTCDate = value => {
191
+ /* istanbul ignore next */
192
+ if (!this.hasUTCPlugin()) {
193
+ throw new Error(MISSING_UTC_PLUGIN);
194
+ }
195
+ return defaultDayjs.utc(value);
196
+ };
197
+ this.createTZDate = (value, timezone) => {
198
+ /* istanbul ignore next */
199
+ if (!this.hasUTCPlugin()) {
200
+ throw new Error(MISSING_UTC_PLUGIN);
201
+ }
202
+
203
+ /* istanbul ignore next */
204
+ if (!this.hasTimezonePlugin()) {
205
+ throw new Error(MISSING_TIMEZONE_PLUGIN);
206
+ }
207
+ const cleanTimezone = timezone === 'default' ? undefined : timezone;
208
+ const keepLocalTime = value !== undefined && !value.endsWith('Z');
209
+ return defaultDayjs(value).tz(cleanTimezone, keepLocalTime);
210
+ };
169
211
  this.getLocaleFormats = () => {
170
212
  const locales = defaultDayjs.Ls;
171
213
  const locale = this.locale || 'en';
@@ -182,6 +224,63 @@ export class AdapterDayjs {
182
224
  }
183
225
  return this.dayjs(value);
184
226
  };
227
+ this.dateWithTimezone = (value, timezone) => {
228
+ if (value === null) {
229
+ return null;
230
+ }
231
+ let parsedValue;
232
+ if (timezone === 'UTC') {
233
+ parsedValue = this.createUTCDate(value);
234
+ } else if (timezone === 'system' || timezone === 'default' && !this.hasTimezonePlugin()) {
235
+ parsedValue = this.createSystemDate(value);
236
+ } else {
237
+ parsedValue = this.createTZDate(value, timezone);
238
+ }
239
+ if (this.locale === undefined) {
240
+ return parsedValue;
241
+ }
242
+ return parsedValue.locale(this.locale);
243
+ };
244
+ this.getTimezone = value => {
245
+ if (this.hasUTCPlugin() && value.isUTC()) {
246
+ return 'UTC';
247
+ }
248
+ if (this.hasTimezonePlugin()) {
249
+ var _value$$x;
250
+ // @ts-ignore
251
+ const zone = (_value$$x = value.$x) == null ? void 0 : _value$$x.$timezone;
252
+ return zone != null ? zone : 'system';
253
+ }
254
+ return 'system';
255
+ };
256
+ this.setTimezone = (value, timezone) => {
257
+ if (this.getTimezone(value) === timezone) {
258
+ return value;
259
+ }
260
+ if (timezone === 'UTC') {
261
+ /* istanbul ignore next */
262
+ if (!this.hasUTCPlugin()) {
263
+ throw new Error(MISSING_UTC_PLUGIN);
264
+ }
265
+ return value.utc();
266
+ }
267
+ if (timezone === 'system') {
268
+ if (this.hasUTCPlugin()) {
269
+ return value.local();
270
+ }
271
+ return value;
272
+ }
273
+ if (!this.hasTimezonePlugin()) {
274
+ if (timezone === 'default') {
275
+ return value;
276
+ }
277
+
278
+ /* istanbul ignore next */
279
+ throw new Error(MISSING_TIMEZONE_PLUGIN);
280
+ }
281
+ const cleanZone = timezone === 'default' ? undefined : timezone;
282
+ return defaultDayjs.tz(value, cleanZone);
283
+ };
185
284
  this.toJsDate = value => {
186
285
  return value.toDate();
187
286
  };
@@ -242,37 +341,49 @@ export class AdapterDayjs {
242
341
  return this.dayjs(value).isSame(comparing);
243
342
  };
244
343
  this.isSameYear = (value, comparing) => {
245
- return value.isSame(comparing, 'year');
344
+ return this.isSame(value, comparing, 'YYYY');
246
345
  };
247
346
  this.isSameMonth = (value, comparing) => {
248
- return value.isSame(comparing, 'month');
347
+ return this.isSame(value, comparing, 'YYYY-MM');
249
348
  };
250
349
  this.isSameDay = (value, comparing) => {
251
- return value.isSame(comparing, 'day');
350
+ return this.isSame(value, comparing, 'YYYY-MM-DD');
252
351
  };
253
352
  this.isSameHour = (value, comparing) => {
254
353
  return value.isSame(comparing, 'hour');
255
354
  };
256
355
  this.isAfter = (value, comparing) => {
257
- return value.isAfter(comparing);
356
+ return value > comparing;
258
357
  };
259
358
  this.isAfterYear = (value, comparing) => {
260
- return value.isAfter(comparing, 'year');
359
+ if (!this.hasUTCPlugin()) {
360
+ return value.isAfter(comparing, 'year');
361
+ }
362
+ return !this.isSameYear(value, comparing) && value.utc() > comparing.utc();
261
363
  };
262
364
  this.isAfterDay = (value, comparing) => {
263
- return value.isAfter(comparing, 'day');
365
+ if (!this.hasUTCPlugin()) {
366
+ return value.isAfter(comparing, 'day');
367
+ }
368
+ return !this.isSameDay(value, comparing) && value.utc() > comparing.utc();
264
369
  };
265
370
  this.isBefore = (value, comparing) => {
266
- return value.isBefore(comparing);
371
+ return value < comparing;
267
372
  };
268
373
  this.isBeforeYear = (value, comparing) => {
269
- return value.isBefore(comparing, 'year');
374
+ if (!this.hasUTCPlugin()) {
375
+ return value.isBefore(comparing, 'year');
376
+ }
377
+ return !this.isSameYear(value, comparing) && value.utc() < comparing.utc();
270
378
  };
271
379
  this.isBeforeDay = (value, comparing) => {
272
- return value.isBefore(comparing, 'day');
380
+ if (!this.hasUTCPlugin()) {
381
+ return value.isBefore(comparing, 'day');
382
+ }
383
+ return !this.isSameDay(value, comparing) && value.utc() < comparing.utc();
273
384
  };
274
385
  this.isWithinRange = (value, [start, end]) => {
275
- return value.isBetween(start, end, null, '[]');
386
+ return value >= start && value <= end;
276
387
  };
277
388
  this.startOfYear = value => {
278
389
  return value.startOf('year');
@@ -337,6 +448,9 @@ export class AdapterDayjs {
337
448
  this.getSeconds = value => {
338
449
  return value.second();
339
450
  };
451
+ this.getMilliseconds = value => {
452
+ return value.millisecond();
453
+ };
340
454
  this.setYear = (value, year) => {
341
455
  return value.set('year', year);
342
456
  };
@@ -355,6 +469,9 @@ export class AdapterDayjs {
355
469
  this.setSeconds = (value, seconds) => {
356
470
  return value.set('second', seconds);
357
471
  };
472
+ this.setMilliseconds = (value, milliseconds) => {
473
+ return value.set('millisecond', milliseconds);
474
+ };
358
475
  this.getDaysInMonth = value => {
359
476
  return value.daysInMonth();
360
477
  };
@@ -381,12 +498,13 @@ export class AdapterDayjs {
381
498
  return [0, 1, 2, 3, 4, 5, 6].map(diff => this.formatByString(start.add(diff, 'day'), 'dd'));
382
499
  };
383
500
  this.getWeekArray = value => {
384
- const start = value.startOf('month').startOf('week');
385
- const end = value.endOf('month').endOf('week');
501
+ const cleanLocale = this.setLocaleToValue(value);
502
+ const start = cleanLocale.startOf('month').startOf('week');
503
+ const end = cleanLocale.endOf('month').endOf('week');
386
504
  let count = 0;
387
505
  let current = start;
388
506
  const nestedWeeks = [];
389
- while (current.isBefore(end)) {
507
+ while (current < end) {
390
508
  const weekNumber = Math.floor(count / 7);
391
509
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
392
510
  nestedWeeks[weekNumber].push(current);
@@ -403,7 +521,7 @@ export class AdapterDayjs {
403
521
  const endDate = end.endOf('year');
404
522
  const years = [];
405
523
  let current = startDate;
406
- while (current.isBefore(endDate)) {
524
+ while (current < endDate) {
407
525
  years.push(current);
408
526
  current = current.add(1, 'year');
409
527
  }
@@ -1,5 +1,5 @@
1
1
  import { DateTime } from 'luxon';
2
- import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiPickersAdapter } from '../models';
2
+ import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiPickersAdapter, PickersTimezone } from '../models';
3
3
  /**
4
4
  * Based on `@date-io/luxon`
5
5
  *
@@ -27,6 +27,7 @@ import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiP
27
27
  */
28
28
  export declare class AdapterLuxon implements MuiPickersAdapter<DateTime, string> {
29
29
  isMUIAdapter: boolean;
30
+ isTimezoneCompatible: boolean;
30
31
  lib: string;
31
32
  locale: string;
32
33
  formats: AdapterFormats;
@@ -37,6 +38,9 @@ export declare class AdapterLuxon implements MuiPickersAdapter<DateTime, string>
37
38
  formatTokenMap: FieldFormatTokenMap;
38
39
  constructor({ locale, formats }?: AdapterOptions<string, never>);
39
40
  date: (value?: any) => DateTime | null;
41
+ dateWithTimezone: (value: string | null | undefined, timezone: PickersTimezone) => DateTime | null;
42
+ getTimezone: (value: DateTime) => string;
43
+ setTimezone: (value: DateTime, timezone: PickersTimezone) => DateTime;
40
44
  toJsDate: (value: DateTime) => Date;
41
45
  parseISO: (isoString: string) => DateTime;
42
46
  toISO: (value: DateTime) => string;
@@ -84,12 +88,14 @@ export declare class AdapterLuxon implements MuiPickersAdapter<DateTime, string>
84
88
  getHours: (value: DateTime) => number;
85
89
  getMinutes: (value: DateTime) => number;
86
90
  getSeconds: (value: DateTime) => number;
91
+ getMilliseconds: (value: DateTime) => number;
87
92
  setYear: (value: DateTime, year: number) => DateTime;
88
93
  setMonth: (value: DateTime, month: number) => DateTime;
89
94
  setDate: (value: DateTime, date: number) => DateTime;
90
95
  setHours: (value: DateTime, hours: number) => DateTime;
91
96
  setMinutes: (value: DateTime, minutes: number) => DateTime;
92
97
  setSeconds: (value: DateTime, seconds: number) => DateTime;
98
+ setMilliseconds: (value: DateTime, milliseconds: number) => DateTime;
93
99
  getDaysInMonth: (value: DateTime) => import("luxon").PossibleDaysInMonth;
94
100
  getNextMonth: (value: DateTime) => DateTime;
95
101
  getPreviousMonth: (value: DateTime) => DateTime;