@mui/x-date-pickers 6.2.1 → 6.3.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 (612) hide show
  1. package/AdapterDateFns/AdapterDateFns.d.ts +109 -0
  2. package/AdapterDateFns/AdapterDateFns.js +598 -0
  3. package/AdapterDateFns/index.d.ts +1 -13
  4. package/AdapterDateFns/index.js +1 -149
  5. package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +109 -0
  6. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +610 -0
  7. package/AdapterDateFnsJalali/index.d.ts +1 -13
  8. package/AdapterDateFnsJalali/index.js +1 -149
  9. package/AdapterDayjs/AdapterDayjs.d.ts +53 -53
  10. package/AdapterDayjs/AdapterDayjs.js +146 -111
  11. package/AdapterLuxon/AdapterLuxon.d.ts +108 -0
  12. package/AdapterLuxon/AdapterLuxon.js +513 -0
  13. package/AdapterLuxon/index.d.ts +1 -14
  14. package/AdapterLuxon/index.js +1 -111
  15. package/AdapterMoment/AdapterMoment.d.ts +110 -0
  16. package/AdapterMoment/AdapterMoment.js +416 -0
  17. package/AdapterMoment/index.d.ts +1 -21
  18. package/AdapterMoment/index.js +1 -99
  19. package/AdapterMomentHijri/AdapterMomentHijri.d.ts +67 -0
  20. package/AdapterMomentHijri/AdapterMomentHijri.js +269 -0
  21. package/AdapterMomentHijri/index.d.ts +1 -18
  22. package/AdapterMomentHijri/index.js +1 -74
  23. package/AdapterMomentJalaali/AdapterMomentJalaali.d.ts +74 -0
  24. package/AdapterMomentJalaali/AdapterMomentJalaali.js +276 -0
  25. package/AdapterMomentJalaali/index.d.ts +1 -22
  26. package/AdapterMomentJalaali/index.js +1 -87
  27. package/CHANGELOG.md +70 -1
  28. package/DateCalendar/DateCalendar.types.d.ts +1 -1
  29. package/DateCalendar/DayCalendar.d.ts +1 -1
  30. package/DateCalendar/DayCalendar.js +1 -1
  31. package/DateCalendar/PickersCalendarHeader.d.ts +1 -1
  32. package/DateCalendar/useCalendarState.js +1 -1
  33. package/DateCalendar/useIsDateDisabled.d.ts +2 -0
  34. package/DateCalendar/useIsDateDisabled.js +27 -0
  35. package/DateField/DateField.js +20 -3
  36. package/DateField/DateField.types.d.ts +2 -2
  37. package/DateField/useDateField.js +4 -2
  38. package/DatePicker/DatePickerToolbar.js +1 -1
  39. package/DateTimeField/DateTimeField.js +21 -3
  40. package/DateTimeField/DateTimeField.types.d.ts +3 -2
  41. package/DateTimeField/useDateTimeField.js +4 -2
  42. package/DateTimePicker/DateTimePicker.js +1 -0
  43. package/DateTimePicker/shared.d.ts +6 -5
  44. package/DesktopDatePicker/DesktopDatePicker.js +1 -1
  45. package/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -1
  46. package/DesktopTimePicker/DesktopTimePicker.js +50 -8
  47. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +12 -4
  48. package/DigitalClock/DigitalClock.d.ts +7 -0
  49. package/DigitalClock/DigitalClock.js +397 -0
  50. package/DigitalClock/DigitalClock.types.d.ts +47 -0
  51. package/DigitalClock/digitalClockClasses.d.ts +11 -0
  52. package/DigitalClock/digitalClockClasses.js +6 -0
  53. package/DigitalClock/index.d.ts +4 -0
  54. package/DigitalClock/index.js +2 -0
  55. package/DigitalClock/package.json +6 -0
  56. package/MobileDatePicker/MobileDatePicker.js +1 -1
  57. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -1
  58. package/MobileTimePicker/MobileTimePicker.js +2 -1
  59. package/MobileTimePicker/MobileTimePicker.types.d.ts +8 -7
  60. package/MonthCalendar/MonthCalendar.types.d.ts +1 -1
  61. package/MultiSectionDigitalClock/MultiSectionDigitalClock.d.ts +7 -0
  62. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +479 -0
  63. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +57 -0
  64. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.d.ts +22 -0
  65. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +65 -0
  66. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +28 -0
  67. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +151 -0
  68. package/MultiSectionDigitalClock/index.d.ts +7 -0
  69. package/MultiSectionDigitalClock/index.js +3 -0
  70. package/MultiSectionDigitalClock/multiSectionDigitalClockClasses.d.ts +7 -0
  71. package/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +6 -0
  72. package/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.d.ts +9 -0
  73. package/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +6 -0
  74. package/MultiSectionDigitalClock/package.json +6 -0
  75. package/PickersDay/PickersDay.js +4 -1
  76. package/PickersLayout/PickersLayout.d.ts +2 -2
  77. package/PickersLayout/PickersLayout.js +2 -2
  78. package/PickersLayout/PickersLayout.types.d.ts +7 -8
  79. package/PickersLayout/usePickerLayout.d.ts +2 -2
  80. package/README.md +0 -9
  81. package/StaticDateTimePicker/StaticDateTimePicker.js +2 -1
  82. package/StaticTimePicker/StaticTimePicker.js +2 -1
  83. package/StaticTimePicker/StaticTimePicker.types.d.ts +1 -1
  84. package/TimeClock/TimeClock.js +35 -12
  85. package/TimeClock/TimeClock.types.d.ts +4 -67
  86. package/TimeField/TimeField.js +21 -3
  87. package/TimeField/TimeField.types.d.ts +3 -2
  88. package/TimeField/useTimeField.js +4 -2
  89. package/TimePicker/TimePicker.js +25 -2
  90. package/TimePicker/TimePicker.types.d.ts +4 -3
  91. package/TimePicker/TimePickerToolbar.d.ts +2 -2
  92. package/TimePicker/TimePickerToolbar.js +2 -2
  93. package/TimePicker/shared.d.ts +9 -7
  94. package/YearCalendar/YearCalendar.types.d.ts +1 -1
  95. package/dateViewRenderers/dateViewRenderers.d.ts +2 -2
  96. package/index.d.ts +2 -0
  97. package/index.js +4 -1
  98. package/internals/components/PickersToolbar.d.ts +3 -3
  99. package/internals/constants/dimensions.d.ts +1 -0
  100. package/internals/constants/dimensions.js +2 -1
  101. package/internals/demo/DemoContainer.js +4 -1
  102. package/internals/hooks/date-helpers-hooks.d.ts +3 -2
  103. package/internals/hooks/date-helpers-hooks.js +3 -3
  104. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +2 -2
  105. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
  106. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +7 -6
  107. package/internals/hooks/useField/useField.js +12 -11
  108. package/internals/hooks/useField/useField.types.d.ts +19 -4
  109. package/internals/hooks/useField/useField.utils.d.ts +8 -5
  110. package/internals/hooks/useField/useField.utils.js +60 -34
  111. package/internals/hooks/useField/useFieldCharacterEditing.js +18 -10
  112. package/internals/hooks/useField/useFieldState.js +4 -3
  113. package/internals/hooks/useIsLandscape.d.ts +2 -2
  114. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +2 -2
  115. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -6
  116. package/internals/hooks/usePicker/usePicker.d.ts +4 -3
  117. package/internals/hooks/usePicker/usePicker.types.d.ts +6 -5
  118. package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +5 -6
  119. package/internals/hooks/usePicker/usePickerValue.d.ts +1 -1
  120. package/internals/hooks/usePicker/usePickerValue.js +1 -1
  121. package/internals/hooks/usePicker/usePickerValue.types.d.ts +1 -1
  122. package/internals/hooks/usePicker/usePickerViews.d.ts +11 -11
  123. package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +2 -2
  124. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +6 -5
  125. package/internals/hooks/{validation/useValidation.d.ts → useValidation.d.ts} +1 -1
  126. package/internals/hooks/{validation/useValidation.js → useValidation.js} +1 -1
  127. package/internals/hooks/useViews.d.ts +8 -6
  128. package/internals/hooks/useViews.js +29 -13
  129. package/internals/index.d.ts +7 -7
  130. package/internals/index.js +5 -5
  131. package/internals/models/common.d.ts +3 -0
  132. package/internals/models/index.d.ts +1 -0
  133. package/internals/models/index.js +2 -1
  134. package/internals/models/props/basePickerProps.d.ts +3 -3
  135. package/internals/models/props/clock.d.ts +88 -0
  136. package/internals/models/props/tabs.d.ts +2 -2
  137. package/internals/models/props/toolbar.d.ts +3 -3
  138. package/internals/{hooks/validation/models.d.ts → models/validation.d.ts} +2 -5
  139. package/internals/models/validation.js +1 -0
  140. package/internals/utils/time-utils.d.ts +7 -7
  141. package/internals/utils/time-utils.js +2 -1
  142. package/internals/{hooks/validation/useDateValidation.d.ts → utils/validation/validateDate.d.ts} +2 -3
  143. package/internals/{hooks/validation/useDateValidation.js → utils/validation/validateDate.js} +1 -27
  144. package/internals/{hooks/validation/useDateTimeValidation.d.ts → utils/validation/validateDateTime.d.ts} +3 -3
  145. package/{modern/internals/hooks/validation/useDateTimeValidation.js → internals/utils/validation/validateDateTime.js} +2 -2
  146. package/internals/{hooks/validation/useTimeValidation.d.ts → utils/validation/validateTime.d.ts} +2 -2
  147. package/{modern/internals/hooks/validation/useTimeValidation.js → internals/utils/validation/validateTime.js} +1 -1
  148. package/internals/utils/views.d.ts +3 -2
  149. package/legacy/AdapterDateFns/AdapterDateFns.js +606 -0
  150. package/legacy/AdapterDateFns/index.js +1 -165
  151. package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +620 -0
  152. package/legacy/AdapterDateFnsJalali/index.js +1 -165
  153. package/legacy/AdapterDayjs/AdapterDayjs.js +146 -111
  154. package/legacy/AdapterLuxon/AdapterLuxon.js +524 -0
  155. package/legacy/AdapterLuxon/index.js +1 -127
  156. package/legacy/AdapterMoment/AdapterMoment.js +422 -0
  157. package/legacy/AdapterMoment/index.js +1 -115
  158. package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +284 -0
  159. package/legacy/AdapterMomentHijri/index.js +1 -90
  160. package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +291 -0
  161. package/legacy/AdapterMomentJalaali/index.js +1 -103
  162. package/legacy/DateCalendar/DayCalendar.js +1 -1
  163. package/legacy/DateCalendar/useCalendarState.js +1 -1
  164. package/legacy/DateCalendar/useIsDateDisabled.js +28 -0
  165. package/legacy/DateField/DateField.js +20 -3
  166. package/legacy/DateField/useDateField.js +4 -2
  167. package/legacy/DatePicker/DatePickerToolbar.js +1 -1
  168. package/legacy/DateTimeField/DateTimeField.js +21 -3
  169. package/legacy/DateTimeField/useDateTimeField.js +4 -2
  170. package/legacy/DateTimePicker/DateTimePicker.js +1 -0
  171. package/legacy/DesktopDatePicker/DesktopDatePicker.js +1 -1
  172. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -1
  173. package/legacy/DesktopTimePicker/DesktopTimePicker.js +51 -8
  174. package/legacy/DigitalClock/DigitalClock.js +419 -0
  175. package/legacy/DigitalClock/DigitalClock.types.js +1 -0
  176. package/legacy/DigitalClock/digitalClockClasses.js +6 -0
  177. package/legacy/DigitalClock/index.js +2 -0
  178. package/legacy/MobileDatePicker/MobileDatePicker.js +1 -1
  179. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +2 -1
  180. package/legacy/MobileTimePicker/MobileTimePicker.js +2 -1
  181. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.js +508 -0
  182. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.types.js +1 -0
  183. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +65 -0
  184. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +157 -0
  185. package/legacy/MultiSectionDigitalClock/index.js +3 -0
  186. package/legacy/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +6 -0
  187. package/legacy/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +6 -0
  188. package/legacy/PickersDay/PickersDay.js +3 -1
  189. package/legacy/PickersLayout/PickersLayout.js +2 -2
  190. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +2 -1
  191. package/legacy/StaticTimePicker/StaticTimePicker.js +2 -1
  192. package/legacy/TimeClock/TimeClock.js +35 -12
  193. package/legacy/TimeField/TimeField.js +21 -3
  194. package/legacy/TimeField/useTimeField.js +4 -2
  195. package/legacy/TimePicker/TimePicker.js +25 -2
  196. package/legacy/TimePicker/TimePickerToolbar.js +2 -2
  197. package/legacy/index.js +4 -1
  198. package/legacy/internals/constants/dimensions.js +2 -1
  199. package/legacy/internals/demo/DemoContainer.js +4 -1
  200. package/legacy/internals/hooks/date-helpers-hooks.js +3 -3
  201. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
  202. package/legacy/internals/hooks/useField/useField.js +11 -10
  203. package/legacy/internals/hooks/useField/useField.utils.js +58 -34
  204. package/legacy/internals/hooks/useField/useFieldCharacterEditing.js +18 -10
  205. package/legacy/internals/hooks/useField/useFieldState.js +6 -4
  206. package/legacy/internals/hooks/usePicker/usePickerValue.js +1 -1
  207. package/legacy/internals/hooks/{validation/useValidation.js → useValidation.js} +1 -1
  208. package/legacy/internals/hooks/useViews.js +30 -14
  209. package/legacy/internals/index.js +5 -5
  210. package/legacy/internals/models/index.js +2 -1
  211. package/legacy/internals/models/props/clock.js +1 -0
  212. package/legacy/internals/models/validation.js +1 -0
  213. package/legacy/internals/utils/time-utils.js +2 -1
  214. package/legacy/internals/{hooks/validation/useDateValidation.js → utils/validation/validateDate.js} +1 -28
  215. package/legacy/internals/{hooks/validation/useDateTimeValidation.js → utils/validation/validateDateTime.js} +2 -2
  216. package/legacy/internals/{hooks/validation/useTimeValidation.js → utils/validation/validateTime.js} +1 -1
  217. package/legacy/locales/beBY.js +5 -3
  218. package/legacy/locales/caES.js +6 -1
  219. package/legacy/locales/csCZ.js +6 -4
  220. package/legacy/locales/daDK.js +6 -2
  221. package/legacy/locales/deDE.js +6 -2
  222. package/legacy/locales/enUS.js +4 -0
  223. package/legacy/locales/esES.js +6 -1
  224. package/legacy/locales/faIR.js +11 -1
  225. package/legacy/locales/fiFI.js +6 -1
  226. package/legacy/locales/frFR.js +6 -1
  227. package/legacy/locales/heIL.js +6 -1
  228. package/legacy/locales/huHU.js +6 -2
  229. package/legacy/locales/index.js +1 -0
  230. package/legacy/locales/isIS.js +11 -1
  231. package/legacy/locales/itIT.js +6 -1
  232. package/legacy/locales/jaJP.js +6 -2
  233. package/legacy/locales/koKR.js +6 -1
  234. package/legacy/locales/kzKZ.js +6 -2
  235. package/legacy/locales/nbNO.js +11 -1
  236. package/legacy/locales/nlNL.js +11 -1
  237. package/legacy/locales/plPL.js +11 -1
  238. package/legacy/locales/ptBR.js +11 -1
  239. package/legacy/locales/ruRU.js +6 -2
  240. package/legacy/locales/svSE.js +11 -1
  241. package/legacy/locales/trTR.js +22 -7
  242. package/legacy/locales/ukUA.js +11 -1
  243. package/legacy/locales/urPK.js +11 -1
  244. package/legacy/locales/zhCN.js +44 -23
  245. package/legacy/models/common.js +1 -0
  246. package/legacy/models/index.js +2 -1
  247. package/legacy/tests/describeAdapters/describeAdapters.js +1 -3
  248. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.js +3 -1
  249. package/legacy/tests/describeGregorianAdapter/testCalculations.js +29 -26
  250. package/legacy/tests/describeGregorianAdapter/testLocalization.js +2 -2
  251. package/legacy/tests/describeHijriAdapter/describeHijriAdapter.js +23 -0
  252. package/legacy/tests/describeHijriAdapter/describeHijriAdapter.types.js +1 -0
  253. package/legacy/tests/describeHijriAdapter/index.js +1 -0
  254. package/legacy/tests/describeHijriAdapter/testCalculations.js +94 -0
  255. package/legacy/tests/describeHijriAdapter/testLocalization.js +12 -0
  256. package/legacy/tests/describeJalaliAdapter/describeJalaliAdapter.js +25 -0
  257. package/legacy/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +1 -0
  258. package/legacy/tests/describeJalaliAdapter/index.js +1 -0
  259. package/legacy/tests/describeJalaliAdapter/testCalculations.js +82 -0
  260. package/legacy/tests/describeJalaliAdapter/testLocalization.js +12 -0
  261. package/legacy/tests/describePicker/describePicker.js +159 -0
  262. package/legacy/tests/describePicker/describePicker.types.js +1 -0
  263. package/legacy/tests/describePicker/index.js +1 -0
  264. package/legacy/tests/describeValue/describeValue.js +1 -1
  265. package/legacy/tests/describeValue/testControlledUnControlled.js +8 -9
  266. package/legacy/tests/describeValue/testPickerActionBar.js +46 -13
  267. package/legacy/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -5
  268. package/legacy/timeViewRenderers/index.js +1 -1
  269. package/legacy/timeViewRenderers/timeViewRenderers.js +132 -4
  270. package/locales/beBY.d.ts +4 -2
  271. package/locales/beBY.js +3 -3
  272. package/locales/caES.d.ts +4 -2
  273. package/locales/caES.js +4 -1
  274. package/locales/csCZ.d.ts +4 -2
  275. package/locales/csCZ.js +4 -4
  276. package/locales/daDK.d.ts +4 -2
  277. package/locales/daDK.js +4 -2
  278. package/locales/deDE.d.ts +4 -2
  279. package/locales/deDE.js +4 -2
  280. package/locales/enUS.d.ts +3 -2
  281. package/locales/enUS.js +2 -0
  282. package/locales/esES.d.ts +4 -2
  283. package/locales/esES.js +4 -1
  284. package/locales/faIR.d.ts +4 -2
  285. package/locales/faIR.js +9 -1
  286. package/locales/fiFI.d.ts +4 -2
  287. package/locales/fiFI.js +4 -1
  288. package/locales/frFR.d.ts +4 -2
  289. package/locales/frFR.js +4 -1
  290. package/locales/heIL.d.ts +4 -2
  291. package/locales/heIL.js +4 -1
  292. package/locales/huHU.d.ts +4 -2
  293. package/locales/huHU.js +4 -2
  294. package/locales/index.d.ts +1 -0
  295. package/locales/index.js +1 -0
  296. package/locales/isIS.d.ts +4 -2
  297. package/locales/isIS.js +9 -1
  298. package/locales/itIT.d.ts +4 -2
  299. package/locales/itIT.js +4 -1
  300. package/locales/jaJP.d.ts +4 -2
  301. package/locales/jaJP.js +4 -2
  302. package/locales/koKR.d.ts +4 -2
  303. package/locales/koKR.js +4 -1
  304. package/locales/kzKZ.d.ts +4 -2
  305. package/locales/kzKZ.js +4 -2
  306. package/locales/nbNO.d.ts +4 -2
  307. package/locales/nbNO.js +9 -1
  308. package/locales/nlNL.d.ts +8 -7
  309. package/locales/nlNL.js +9 -1
  310. package/locales/plPL.d.ts +4 -2
  311. package/locales/plPL.js +9 -1
  312. package/locales/ptBR.d.ts +4 -2
  313. package/locales/ptBR.js +9 -1
  314. package/locales/ruRU.d.ts +4 -2
  315. package/locales/ruRU.js +4 -2
  316. package/locales/svSE.d.ts +4 -2
  317. package/locales/svSE.js +9 -1
  318. package/locales/trTR.d.ts +4 -2
  319. package/locales/trTR.js +14 -7
  320. package/locales/ukUA.d.ts +4 -2
  321. package/locales/ukUA.js +9 -1
  322. package/locales/urPK.d.ts +4 -2
  323. package/locales/urPK.js +9 -1
  324. package/locales/utils/getPickersLocalization.d.ts +3 -2
  325. package/locales/utils/pickersLocaleTextApi.d.ts +5 -3
  326. package/locales/zhCN.d.ts +4 -2
  327. package/locales/zhCN.js +22 -23
  328. package/models/adapters.d.ts +7 -6
  329. package/models/common.d.ts +5 -0
  330. package/models/common.js +1 -0
  331. package/models/fields.d.ts +19 -2
  332. package/models/index.d.ts +1 -0
  333. package/models/index.js +2 -1
  334. package/modern/AdapterDateFns/AdapterDateFns.js +597 -0
  335. package/modern/AdapterDateFns/index.js +1 -149
  336. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +608 -0
  337. package/modern/AdapterDateFnsJalali/index.js +1 -148
  338. package/modern/AdapterDayjs/AdapterDayjs.js +146 -111
  339. package/modern/AdapterLuxon/AdapterLuxon.js +512 -0
  340. package/modern/AdapterLuxon/index.js +1 -111
  341. package/modern/AdapterMoment/AdapterMoment.js +416 -0
  342. package/modern/AdapterMoment/index.js +1 -99
  343. package/modern/AdapterMomentHijri/AdapterMomentHijri.js +269 -0
  344. package/modern/AdapterMomentHijri/index.js +1 -74
  345. package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +276 -0
  346. package/modern/AdapterMomentJalaali/index.js +1 -87
  347. package/modern/DateCalendar/DayCalendar.js +1 -1
  348. package/modern/DateCalendar/useCalendarState.js +1 -1
  349. package/modern/DateCalendar/useIsDateDisabled.js +27 -0
  350. package/modern/DateField/DateField.js +20 -3
  351. package/modern/DateField/useDateField.js +4 -2
  352. package/modern/DatePicker/DatePickerToolbar.js +1 -1
  353. package/modern/DateTimeField/DateTimeField.js +21 -3
  354. package/modern/DateTimeField/useDateTimeField.js +4 -2
  355. package/modern/DateTimePicker/DateTimePicker.js +1 -0
  356. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
  357. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -1
  358. package/modern/DesktopTimePicker/DesktopTimePicker.js +49 -7
  359. package/modern/DigitalClock/DigitalClock.js +396 -0
  360. package/modern/DigitalClock/DigitalClock.types.js +1 -0
  361. package/modern/DigitalClock/digitalClockClasses.js +6 -0
  362. package/modern/DigitalClock/index.js +2 -0
  363. package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
  364. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -1
  365. package/modern/MobileTimePicker/MobileTimePicker.js +2 -1
  366. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +479 -0
  367. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.types.js +1 -0
  368. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +65 -0
  369. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +149 -0
  370. package/modern/MultiSectionDigitalClock/index.js +3 -0
  371. package/modern/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +6 -0
  372. package/modern/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +6 -0
  373. package/modern/PickersDay/PickersDay.js +4 -1
  374. package/modern/PickersLayout/PickersLayout.js +2 -2
  375. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -1
  376. package/modern/StaticTimePicker/StaticTimePicker.js +2 -1
  377. package/modern/TimeClock/TimeClock.js +35 -12
  378. package/modern/TimeField/TimeField.js +21 -3
  379. package/modern/TimeField/useTimeField.js +4 -2
  380. package/modern/TimePicker/TimePicker.js +25 -2
  381. package/modern/TimePicker/TimePickerToolbar.js +2 -2
  382. package/modern/index.js +4 -1
  383. package/modern/internals/constants/dimensions.js +2 -1
  384. package/modern/internals/demo/DemoContainer.js +4 -1
  385. package/modern/internals/hooks/date-helpers-hooks.js +3 -3
  386. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
  387. package/modern/internals/hooks/useField/useField.js +12 -11
  388. package/modern/internals/hooks/useField/useField.utils.js +60 -34
  389. package/modern/internals/hooks/useField/useFieldCharacterEditing.js +18 -10
  390. package/modern/internals/hooks/useField/useFieldState.js +4 -3
  391. package/modern/internals/hooks/usePicker/usePickerValue.js +1 -1
  392. package/modern/internals/hooks/{validation/useValidation.js → useValidation.js} +1 -1
  393. package/modern/internals/hooks/useViews.js +29 -13
  394. package/modern/internals/index.js +5 -5
  395. package/modern/internals/models/index.js +2 -1
  396. package/modern/internals/models/props/clock.js +1 -0
  397. package/modern/internals/models/validation.js +1 -0
  398. package/modern/internals/utils/time-utils.js +2 -1
  399. package/modern/internals/{hooks/validation/useDateValidation.js → utils/validation/validateDate.js} +1 -27
  400. package/{internals/hooks/validation/useDateTimeValidation.js → modern/internals/utils/validation/validateDateTime.js} +2 -2
  401. package/{internals/hooks/validation/useTimeValidation.js → modern/internals/utils/validation/validateTime.js} +1 -1
  402. package/modern/locales/beBY.js +3 -3
  403. package/modern/locales/caES.js +4 -1
  404. package/modern/locales/csCZ.js +4 -4
  405. package/modern/locales/daDK.js +4 -2
  406. package/modern/locales/deDE.js +4 -2
  407. package/modern/locales/enUS.js +2 -0
  408. package/modern/locales/esES.js +4 -1
  409. package/modern/locales/faIR.js +9 -1
  410. package/modern/locales/fiFI.js +4 -1
  411. package/modern/locales/frFR.js +4 -1
  412. package/modern/locales/heIL.js +4 -1
  413. package/modern/locales/huHU.js +4 -2
  414. package/modern/locales/index.js +1 -0
  415. package/modern/locales/isIS.js +9 -1
  416. package/modern/locales/itIT.js +4 -1
  417. package/modern/locales/jaJP.js +4 -2
  418. package/modern/locales/koKR.js +4 -1
  419. package/modern/locales/kzKZ.js +4 -2
  420. package/modern/locales/nbNO.js +9 -1
  421. package/modern/locales/nlNL.js +9 -1
  422. package/modern/locales/plPL.js +9 -1
  423. package/modern/locales/ptBR.js +9 -1
  424. package/modern/locales/ruRU.js +4 -2
  425. package/modern/locales/svSE.js +9 -1
  426. package/modern/locales/trTR.js +14 -7
  427. package/modern/locales/ukUA.js +9 -1
  428. package/modern/locales/urPK.js +9 -1
  429. package/modern/locales/zhCN.js +22 -23
  430. package/modern/models/common.js +1 -0
  431. package/modern/models/index.js +2 -1
  432. package/modern/tests/describeAdapters/describeAdapters.js +1 -3
  433. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.js +3 -1
  434. package/modern/tests/describeGregorianAdapter/testCalculations.js +29 -26
  435. package/modern/tests/describeGregorianAdapter/testLocalization.js +2 -2
  436. package/modern/tests/describeHijriAdapter/describeHijriAdapter.js +23 -0
  437. package/modern/tests/describeHijriAdapter/describeHijriAdapter.types.js +1 -0
  438. package/modern/tests/describeHijriAdapter/index.js +1 -0
  439. package/modern/tests/describeHijriAdapter/testCalculations.js +91 -0
  440. package/modern/tests/describeHijriAdapter/testLocalization.js +13 -0
  441. package/modern/tests/describeJalaliAdapter/describeJalaliAdapter.js +25 -0
  442. package/modern/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +1 -0
  443. package/modern/tests/describeJalaliAdapter/index.js +1 -0
  444. package/modern/tests/describeJalaliAdapter/testCalculations.js +83 -0
  445. package/modern/tests/describeJalaliAdapter/testLocalization.js +13 -0
  446. package/modern/tests/describePicker/describePicker.js +162 -0
  447. package/modern/tests/describePicker/describePicker.types.js +1 -0
  448. package/modern/tests/describePicker/index.js +1 -0
  449. package/modern/tests/describeValue/describeValue.js +1 -1
  450. package/modern/tests/describeValue/testControlledUnControlled.js +8 -9
  451. package/modern/tests/describeValue/testPickerActionBar.js +46 -13
  452. package/modern/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -5
  453. package/modern/timeViewRenderers/index.js +1 -1
  454. package/modern/timeViewRenderers/timeViewRenderers.js +130 -2
  455. package/node/AdapterDateFns/AdapterDateFns.js +607 -0
  456. package/node/AdapterDateFns/index.js +6 -152
  457. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +618 -0
  458. package/node/AdapterDateFnsJalali/index.js +6 -151
  459. package/node/AdapterDayjs/AdapterDayjs.js +146 -111
  460. package/node/AdapterLuxon/AdapterLuxon.js +521 -0
  461. package/node/AdapterLuxon/index.js +6 -114
  462. package/node/AdapterMoment/AdapterMoment.js +425 -0
  463. package/node/AdapterMoment/index.js +6 -102
  464. package/node/AdapterMomentHijri/AdapterMomentHijri.js +278 -0
  465. package/node/AdapterMomentHijri/index.js +6 -77
  466. package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +285 -0
  467. package/node/AdapterMomentJalaali/index.js +6 -90
  468. package/node/DateCalendar/DayCalendar.js +2 -2
  469. package/node/DateCalendar/useCalendarState.js +2 -2
  470. package/node/{internals/hooks/validation/useDateValidation.js → DateCalendar/useIsDateDisabled.js} +4 -37
  471. package/node/DateField/DateField.js +20 -3
  472. package/node/DateField/useDateField.js +5 -3
  473. package/node/DatePicker/DatePickerToolbar.js +1 -1
  474. package/node/DateTimeField/DateTimeField.js +21 -3
  475. package/node/DateTimeField/useDateTimeField.js +5 -3
  476. package/node/DateTimePicker/DateTimePicker.js +1 -0
  477. package/node/DesktopDatePicker/DesktopDatePicker.js +2 -2
  478. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +3 -2
  479. package/node/DesktopTimePicker/DesktopTimePicker.js +50 -8
  480. package/node/DigitalClock/DigitalClock.js +406 -0
  481. package/node/DigitalClock/digitalClockClasses.js +15 -0
  482. package/node/DigitalClock/index.js +25 -0
  483. package/node/MobileDatePicker/MobileDatePicker.js +2 -2
  484. package/node/MobileDateTimePicker/MobileDateTimePicker.js +3 -2
  485. package/node/MobileTimePicker/MobileTimePicker.js +3 -2
  486. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +489 -0
  487. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.types.js +5 -0
  488. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +73 -0
  489. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +159 -0
  490. package/node/MultiSectionDigitalClock/index.js +32 -0
  491. package/node/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +15 -0
  492. package/node/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +15 -0
  493. package/node/PickersDay/PickersDay.js +4 -1
  494. package/node/PickersLayout/PickersLayout.js +2 -2
  495. package/node/StaticDateTimePicker/StaticDateTimePicker.js +3 -2
  496. package/node/StaticTimePicker/StaticTimePicker.js +3 -2
  497. package/node/TimeClock/TimeClock.js +35 -12
  498. package/node/TimeField/TimeField.js +21 -3
  499. package/node/TimeField/useTimeField.js +5 -3
  500. package/node/TimePicker/TimePicker.js +25 -2
  501. package/node/TimePicker/TimePickerToolbar.js +2 -2
  502. package/node/index.js +25 -1
  503. package/node/internals/constants/dimensions.js +4 -2
  504. package/node/internals/demo/DemoContainer.js +4 -1
  505. package/node/internals/hooks/date-helpers-hooks.js +3 -3
  506. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
  507. package/node/internals/hooks/useField/useField.js +12 -11
  508. package/node/internals/hooks/useField/useField.utils.js +63 -36
  509. package/node/internals/hooks/useField/useFieldCharacterEditing.js +17 -9
  510. package/node/internals/hooks/useField/useFieldState.js +4 -3
  511. package/node/internals/hooks/usePicker/usePickerValue.js +1 -1
  512. package/node/internals/hooks/{validation/useValidation.js → useValidation.js} +1 -1
  513. package/node/internals/hooks/useViews.js +29 -13
  514. package/node/internals/index.js +9 -9
  515. package/node/internals/models/index.js +11 -0
  516. package/node/internals/models/props/clock.js +5 -0
  517. package/node/internals/models/validation.js +5 -0
  518. package/node/internals/utils/time-utils.js +2 -1
  519. package/node/internals/utils/validation/validateDate.js +40 -0
  520. package/node/internals/{hooks/validation/useDateTimeValidation.js → utils/validation/validateDateTime.js} +4 -4
  521. package/node/internals/{hooks/validation/useTimeValidation.js → utils/validation/validateTime.js} +1 -1
  522. package/node/locales/beBY.js +3 -3
  523. package/node/locales/caES.js +4 -1
  524. package/node/locales/csCZ.js +4 -2
  525. package/node/locales/daDK.js +4 -1
  526. package/node/locales/deDE.js +4 -1
  527. package/node/locales/enUS.js +2 -0
  528. package/node/locales/esES.js +4 -1
  529. package/node/locales/faIR.js +9 -1
  530. package/node/locales/fiFI.js +4 -1
  531. package/node/locales/frFR.js +4 -1
  532. package/node/locales/heIL.js +4 -1
  533. package/node/locales/huHU.js +4 -1
  534. package/node/locales/index.js +11 -0
  535. package/node/locales/isIS.js +9 -1
  536. package/node/locales/itIT.js +4 -1
  537. package/node/locales/jaJP.js +4 -1
  538. package/node/locales/koKR.js +4 -1
  539. package/node/locales/kzKZ.js +4 -1
  540. package/node/locales/nbNO.js +9 -1
  541. package/node/locales/nlNL.js +9 -1
  542. package/node/locales/plPL.js +9 -1
  543. package/node/locales/ptBR.js +9 -1
  544. package/node/locales/ruRU.js +4 -1
  545. package/node/locales/svSE.js +9 -1
  546. package/node/locales/trTR.js +14 -7
  547. package/node/locales/ukUA.js +9 -1
  548. package/node/locales/urPK.js +9 -1
  549. package/node/locales/zhCN.js +22 -23
  550. package/node/models/common.js +5 -0
  551. package/node/models/index.js +11 -0
  552. package/node/tests/describeAdapters/describeAdapters.js +1 -3
  553. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.js +3 -1
  554. package/node/tests/describeGregorianAdapter/testCalculations.js +29 -26
  555. package/node/tests/describeGregorianAdapter/testLocalization.js +2 -2
  556. package/node/tests/describeHijriAdapter/describeHijriAdapter.js +31 -0
  557. package/node/tests/describeHijriAdapter/describeHijriAdapter.types.js +5 -0
  558. package/node/tests/describeHijriAdapter/index.js +12 -0
  559. package/node/tests/describeHijriAdapter/testCalculations.js +98 -0
  560. package/node/tests/describeHijriAdapter/testLocalization.js +20 -0
  561. package/node/tests/describeJalaliAdapter/describeJalaliAdapter.js +33 -0
  562. package/node/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +5 -0
  563. package/node/tests/describeJalaliAdapter/index.js +12 -0
  564. package/node/tests/describeJalaliAdapter/testCalculations.js +90 -0
  565. package/node/tests/describeJalaliAdapter/testLocalization.js +20 -0
  566. package/node/tests/describePicker/describePicker.js +173 -0
  567. package/node/tests/describePicker/describePicker.types.js +5 -0
  568. package/node/tests/describePicker/index.js +12 -0
  569. package/node/tests/describeValue/describeValue.js +1 -1
  570. package/node/tests/describeValue/testControlledUnControlled.js +8 -9
  571. package/node/tests/describeValue/testPickerActionBar.js +46 -13
  572. package/node/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -5
  573. package/node/timeViewRenderers/index.js +12 -0
  574. package/node/timeViewRenderers/timeViewRenderers.js +134 -4
  575. package/package.json +3 -10
  576. package/tests/describeAdapters/describeAdapters.js +1 -3
  577. package/tests/describeGregorianAdapter/describeGregorianAdapter.js +3 -1
  578. package/tests/describeGregorianAdapter/testCalculations.js +29 -26
  579. package/tests/describeGregorianAdapter/testLocalization.js +2 -2
  580. package/tests/describeHijriAdapter/describeHijriAdapter.js +23 -0
  581. package/tests/describeHijriAdapter/describeHijriAdapter.types.js +1 -0
  582. package/tests/describeHijriAdapter/index.js +1 -0
  583. package/tests/describeHijriAdapter/testCalculations.js +91 -0
  584. package/tests/describeHijriAdapter/testLocalization.js +13 -0
  585. package/tests/describeJalaliAdapter/describeJalaliAdapter.js +25 -0
  586. package/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +1 -0
  587. package/tests/describeJalaliAdapter/index.js +1 -0
  588. package/tests/describeJalaliAdapter/testCalculations.js +83 -0
  589. package/tests/describeJalaliAdapter/testLocalization.js +13 -0
  590. package/tests/describePicker/describePicker.js +162 -0
  591. package/tests/describePicker/describePicker.types.js +1 -0
  592. package/tests/describePicker/index.js +1 -0
  593. package/tests/describeValue/describeValue.js +1 -1
  594. package/tests/describeValue/testControlledUnControlled.js +8 -9
  595. package/tests/describeValue/testPickerActionBar.js +46 -13
  596. package/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -5
  597. package/themeAugmentation/components.d.ts +12 -0
  598. package/themeAugmentation/overrides.d.ts +8 -0
  599. package/themeAugmentation/props.d.ts +8 -0
  600. package/timeViewRenderers/index.d.ts +1 -1
  601. package/timeViewRenderers/index.js +1 -1
  602. package/timeViewRenderers/timeViewRenderers.d.ts +11 -4
  603. package/timeViewRenderers/timeViewRenderers.js +130 -2
  604. /package/{internals/hooks/validation/models.js → DigitalClock/DigitalClock.types.js} +0 -0
  605. /package/{legacy/internals/hooks/validation/models.js → MultiSectionDigitalClock/MultiSectionDigitalClock.types.js} +0 -0
  606. /package/{modern/internals/hooks/validation/models.js → internals/models/props/clock.js} +0 -0
  607. /package/internals/utils/{validation.d.ts → validation/extractValidationProps.d.ts} +0 -0
  608. /package/internals/utils/{validation.js → validation/extractValidationProps.js} +0 -0
  609. /package/legacy/internals/utils/{validation.js → validation/extractValidationProps.js} +0 -0
  610. /package/modern/internals/utils/{validation.js → validation/extractValidationProps.js} +0 -0
  611. /package/node/{internals/hooks/validation/models.js → DigitalClock/DigitalClock.types.js} +0 -0
  612. /package/node/internals/utils/{validation.js → validation/extractValidationProps.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { FieldSectionType } from './fields';
1
+ import { FieldSectionContentType, FieldSectionType } from './fields';
2
2
  export interface AdapterFormats<TLibFormatToken = string> {
3
3
  /** Localized full date @example "Jan 1, 2019" */
4
4
  fullDate: TLibFormatToken;
@@ -59,7 +59,8 @@ export type AdapterUnits = 'years' | 'quarters' | 'months' | 'weeks' | 'days' |
59
59
  export type FieldFormatTokenMap = {
60
60
  [formatToken: string]: FieldSectionType | {
61
61
  sectionType: FieldSectionType;
62
- contentType: 'digit' | 'letter';
62
+ contentType: FieldSectionContentType;
63
+ maxLength?: number;
63
64
  };
64
65
  };
65
66
  export interface MuiPickersAdapter<TDate> {
@@ -540,17 +541,17 @@ export interface MuiPickersAdapter<TDate> {
540
541
  /**
541
542
  * Create a nested list with all the days of the month of the given date grouped by week.
542
543
  * @template TDate
543
- * @param {TDate} date The given date.
544
+ * @param {TDate} value The given date.
544
545
  * @returns {TDate[][]} A nested list with all the days of the month grouped by week.
545
546
  */
546
- getWeekArray(date: TDate): TDate[][];
547
+ getWeekArray(value: TDate): TDate[][];
547
548
  /**
548
549
  * Get the number of the week of the given date.
549
550
  * @template TDate
550
- * @param {TDate} date The given date.
551
+ * @param {TDate} value The given date.
551
552
  * @returns {number} The number of the week of the given date.
552
553
  */
553
- getWeekNumber(date: TDate): number;
554
+ getWeekNumber(value: TDate): number;
554
555
  /**
555
556
  * Create a list with all the years between the start end the end date.
556
557
  * @template TDate
@@ -0,0 +1,5 @@
1
+ export interface TimeStepOptions {
2
+ hours?: number;
3
+ minutes?: number;
4
+ seconds?: number;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { BaseFieldProps } from '../internals/models/fields';
3
3
  export type FieldSectionType = 'year' | 'month' | 'day' | 'weekDay' | 'hours' | 'minutes' | 'seconds' | 'meridiem';
4
+ export type FieldSectionContentType = 'digit' | 'digit-with-letter' | 'letter';
4
5
  export type FieldValueType = 'date' | 'time' | 'date-time';
5
6
  export interface FieldSection {
6
7
  /**
@@ -13,6 +14,11 @@ export interface FieldSection {
13
14
  * For example, in the format `MMMM D, YYYY`, the format of the month section is "MMMM".
14
15
  */
15
16
  format: string;
17
+ /**
18
+ * Maximum length of the value, only defined for "digit" sections.
19
+ * Will be used to determine how many leading zeros should be added to the value.
20
+ */
21
+ maxLength: number | null;
16
22
  /**
17
23
  * Placeholder rendered when the value of this section is empty.
18
24
  */
@@ -25,12 +31,23 @@ export interface FieldSection {
25
31
  * Type of content of the section.
26
32
  * Will determine if we should apply a digit-based editing or a letter-based editing.
27
33
  */
28
- contentType: 'digit' | 'letter';
34
+ contentType: FieldSectionContentType;
29
35
  /**
30
- * If `true`, the value of this section is supposed to have leading zeroes.
36
+ * If `true`, the value of this section is supposed to have leading zeroes when parsed by the date library.
31
37
  * For example, the value `1` should be rendered as "01" instead of "1".
38
+ * @deprecated Will be removed in v7, use `hasLeadingZerosInFormat` instead.
32
39
  */
33
40
  hasLeadingZeros: boolean;
41
+ /**
42
+ * If `true`, the value of this section is supposed to have leading zeroes when parsed by the date library.
43
+ * For example, the value `1` should be rendered as "01" instead of "1".
44
+ */
45
+ hasLeadingZerosInFormat: boolean;
46
+ /**
47
+ * If `true`, the value of this section is supposed to have leading zeroes when rendered in the input.
48
+ * For example, the value `1` should be rendered as "01" instead of "1".
49
+ */
50
+ hasLeadingZerosInInput: boolean;
34
51
  /**
35
52
  * If `true`, the section value has been modified since the last time the sections were generated from a valid date.
36
53
  * When we can generate a valid date from the section, we don't directly pass it to `onChange`,
package/models/index.d.ts CHANGED
@@ -2,3 +2,4 @@ export * from './fields';
2
2
  export * from './validation';
3
3
  export * from './views';
4
4
  export * from './adapters';
5
+ export * from './common';
package/models/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './fields';
2
2
  export * from './validation';
3
3
  export * from './views';
4
- export * from './adapters';
4
+ export * from './adapters';
5
+ export * from './common';
@@ -0,0 +1,597 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ /* eslint-disable class-methods-use-this */
3
+ import addDays from 'date-fns/addDays';
4
+ import addSeconds from 'date-fns/addSeconds';
5
+ import addMinutes from 'date-fns/addMinutes';
6
+ import addHours from 'date-fns/addHours';
7
+ import addWeeks from 'date-fns/addWeeks';
8
+ import addMonths from 'date-fns/addMonths';
9
+ import addYears from 'date-fns/addYears';
10
+ import differenceInYears from 'date-fns/differenceInYears';
11
+ import differenceInQuarters from 'date-fns/differenceInQuarters';
12
+ import differenceInMonths from 'date-fns/differenceInMonths';
13
+ import differenceInWeeks from 'date-fns/differenceInWeeks';
14
+ import differenceInDays from 'date-fns/differenceInDays';
15
+ import differenceInHours from 'date-fns/differenceInHours';
16
+ import differenceInMinutes from 'date-fns/differenceInMinutes';
17
+ import differenceInSeconds from 'date-fns/differenceInSeconds';
18
+ import differenceInMilliseconds from 'date-fns/differenceInMilliseconds';
19
+ import eachDayOfInterval from 'date-fns/eachDayOfInterval';
20
+ import endOfDay from 'date-fns/endOfDay';
21
+ import endOfWeek from 'date-fns/endOfWeek';
22
+ import endOfYear from 'date-fns/endOfYear';
23
+ import dateFnsFormat from 'date-fns/format';
24
+ import getDate from 'date-fns/getDate';
25
+ import getDay from 'date-fns/getDay';
26
+ import getDaysInMonth from 'date-fns/getDaysInMonth';
27
+ import getHours from 'date-fns/getHours';
28
+ import getMinutes from 'date-fns/getMinutes';
29
+ import getMonth from 'date-fns/getMonth';
30
+ import getSeconds from 'date-fns/getSeconds';
31
+ import getWeek from 'date-fns/getWeek';
32
+ import getYear from 'date-fns/getYear';
33
+ import isAfter from 'date-fns/isAfter';
34
+ import isBefore from 'date-fns/isBefore';
35
+ import isEqual from 'date-fns/isEqual';
36
+ import isSameDay from 'date-fns/isSameDay';
37
+ import isSameYear from 'date-fns/isSameYear';
38
+ import isSameMonth from 'date-fns/isSameMonth';
39
+ import isSameHour from 'date-fns/isSameHour';
40
+ import isValid from 'date-fns/isValid';
41
+ import dateFnsParse from 'date-fns/parse';
42
+ import setDate from 'date-fns/setDate';
43
+ import setHours from 'date-fns/setHours';
44
+ import setMinutes from 'date-fns/setMinutes';
45
+ import setMonth from 'date-fns/setMonth';
46
+ import setSeconds from 'date-fns/setSeconds';
47
+ import setYear from 'date-fns/setYear';
48
+ import startOfDay from 'date-fns/startOfDay';
49
+ import startOfMonth from 'date-fns/startOfMonth';
50
+ import endOfMonth from 'date-fns/endOfMonth';
51
+ import startOfWeek from 'date-fns/startOfWeek';
52
+ import startOfYear from 'date-fns/startOfYear';
53
+ import parseISO from 'date-fns/parseISO';
54
+ import formatISO from 'date-fns/formatISO';
55
+ import isWithinInterval from 'date-fns/isWithinInterval';
56
+ import defaultLocale from 'date-fns/locale/en-US';
57
+ // @ts-ignore
58
+ import longFormatters from 'date-fns/_lib/format/longFormatters';
59
+ const formatTokenMap = {
60
+ // Year
61
+ y: {
62
+ sectionType: 'year',
63
+ contentType: 'digit',
64
+ maxLength: 4
65
+ },
66
+ yy: 'year',
67
+ yyy: {
68
+ sectionType: 'year',
69
+ contentType: 'digit',
70
+ maxLength: 4
71
+ },
72
+ yyyy: 'year',
73
+ // Month
74
+ M: {
75
+ sectionType: 'month',
76
+ contentType: 'digit',
77
+ maxLength: 2
78
+ },
79
+ MM: 'month',
80
+ MMMM: {
81
+ sectionType: 'month',
82
+ contentType: 'letter'
83
+ },
84
+ MMM: {
85
+ sectionType: 'month',
86
+ contentType: 'letter'
87
+ },
88
+ L: {
89
+ sectionType: 'month',
90
+ contentType: 'digit',
91
+ maxLength: 2
92
+ },
93
+ LL: 'month',
94
+ LLL: {
95
+ sectionType: 'month',
96
+ contentType: 'letter'
97
+ },
98
+ LLLL: {
99
+ sectionType: 'month',
100
+ contentType: 'letter'
101
+ },
102
+ // Day of the month
103
+ d: {
104
+ sectionType: 'day',
105
+ contentType: 'digit',
106
+ maxLength: 2
107
+ },
108
+ dd: 'day',
109
+ do: {
110
+ sectionType: 'day',
111
+ contentType: 'digit-with-letter'
112
+ },
113
+ // Day of the week
114
+ E: {
115
+ sectionType: 'weekDay',
116
+ contentType: 'letter'
117
+ },
118
+ EE: {
119
+ sectionType: 'weekDay',
120
+ contentType: 'letter'
121
+ },
122
+ EEE: {
123
+ sectionType: 'weekDay',
124
+ contentType: 'letter'
125
+ },
126
+ EEEE: {
127
+ sectionType: 'weekDay',
128
+ contentType: 'letter'
129
+ },
130
+ EEEEE: {
131
+ sectionType: 'weekDay',
132
+ contentType: 'letter'
133
+ },
134
+ i: {
135
+ sectionType: 'weekDay',
136
+ contentType: 'digit',
137
+ maxLength: 1
138
+ },
139
+ ii: 'weekDay',
140
+ iii: {
141
+ sectionType: 'weekDay',
142
+ contentType: 'letter'
143
+ },
144
+ iiii: {
145
+ sectionType: 'weekDay',
146
+ contentType: 'letter'
147
+ },
148
+ e: {
149
+ sectionType: 'weekDay',
150
+ contentType: 'digit',
151
+ maxLength: 1
152
+ },
153
+ ee: 'weekDay',
154
+ eee: {
155
+ sectionType: 'weekDay',
156
+ contentType: 'letter'
157
+ },
158
+ eeee: {
159
+ sectionType: 'weekDay',
160
+ contentType: 'letter'
161
+ },
162
+ eeeee: {
163
+ sectionType: 'weekDay',
164
+ contentType: 'letter'
165
+ },
166
+ eeeeee: {
167
+ sectionType: 'weekDay',
168
+ contentType: 'letter'
169
+ },
170
+ c: {
171
+ sectionType: 'weekDay',
172
+ contentType: 'digit',
173
+ maxLength: 1
174
+ },
175
+ cc: 'weekDay',
176
+ ccc: {
177
+ sectionType: 'weekDay',
178
+ contentType: 'letter'
179
+ },
180
+ cccc: {
181
+ sectionType: 'weekDay',
182
+ contentType: 'letter'
183
+ },
184
+ ccccc: {
185
+ sectionType: 'weekDay',
186
+ contentType: 'letter'
187
+ },
188
+ cccccc: {
189
+ sectionType: 'weekDay',
190
+ contentType: 'letter'
191
+ },
192
+ // Meridiem
193
+ a: 'meridiem',
194
+ aa: 'meridiem',
195
+ aaa: 'meridiem',
196
+ // Hours
197
+ H: {
198
+ sectionType: 'hours',
199
+ contentType: 'digit',
200
+ maxLength: 2
201
+ },
202
+ HH: 'hours',
203
+ h: {
204
+ sectionType: 'hours',
205
+ contentType: 'digit',
206
+ maxLength: 2
207
+ },
208
+ hh: 'hours',
209
+ // Minutes
210
+ m: {
211
+ sectionType: 'minutes',
212
+ contentType: 'digit',
213
+ maxLength: 2
214
+ },
215
+ mm: 'minutes',
216
+ // Seconds
217
+ s: {
218
+ sectionType: 'seconds',
219
+ contentType: 'digit',
220
+ maxLength: 2
221
+ },
222
+ ss: 'seconds'
223
+ };
224
+ const defaultFormats = {
225
+ dayOfMonth: 'd',
226
+ fullDate: 'PP',
227
+ fullDateWithWeekday: 'PPPP',
228
+ fullDateTime: 'PP p',
229
+ fullDateTime12h: 'PP hh:mm aa',
230
+ fullDateTime24h: 'PP HH:mm',
231
+ fullTime: 'p',
232
+ fullTime12h: 'hh:mm aa',
233
+ fullTime24h: 'HH:mm',
234
+ hours12h: 'hh',
235
+ hours24h: 'HH',
236
+ keyboardDate: 'P',
237
+ keyboardDateTime: 'P p',
238
+ keyboardDateTime12h: 'P hh:mm aa',
239
+ keyboardDateTime24h: 'P HH:mm',
240
+ minutes: 'mm',
241
+ month: 'LLLL',
242
+ monthAndDate: 'MMMM d',
243
+ monthAndYear: 'LLLL yyyy',
244
+ monthShort: 'MMM',
245
+ weekday: 'EEEE',
246
+ weekdayShort: 'EEE',
247
+ normalDate: 'd MMMM',
248
+ normalDateWithWeekday: 'EEE, MMM d',
249
+ seconds: 'ss',
250
+ shortDate: 'MMM d',
251
+ year: 'yyyy'
252
+ };
253
+
254
+ /**
255
+ * Based on `@date-io/date-fns`
256
+ *
257
+ * MIT License
258
+ *
259
+ * Copyright (c) 2017 Dmitriy Kovalenko
260
+ *
261
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
262
+ * of this software and associated documentation files (the "Software"), to deal
263
+ * in the Software without restriction, including without limitation the rights
264
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
265
+ * copies of the Software, and to permit persons to whom the Software is
266
+ * furnished to do so, subject to the following conditions:
267
+ *
268
+ * The above copyright notice and this permission notice shall be included in all
269
+ * copies or substantial portions of the Software.
270
+ *
271
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
272
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
273
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
274
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
275
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
276
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
277
+ * SOFTWARE.
278
+ */
279
+ export class AdapterDateFns {
280
+ constructor({
281
+ locale: _locale,
282
+ formats
283
+ } = {}) {
284
+ this.isMUIAdapter = true;
285
+ this.lib = 'date-fns';
286
+ this.locale = void 0;
287
+ this.formats = void 0;
288
+ this.formatTokenMap = formatTokenMap;
289
+ this.escapedCharacters = {
290
+ start: "'",
291
+ end: "'"
292
+ };
293
+ this.date = value => {
294
+ if (typeof value === 'undefined') {
295
+ return new Date();
296
+ }
297
+ if (value === null) {
298
+ return null;
299
+ }
300
+ return new Date(value);
301
+ };
302
+ this.toJsDate = value => {
303
+ return value;
304
+ };
305
+ this.parseISO = isoString => {
306
+ return parseISO(isoString);
307
+ };
308
+ this.toISO = value => {
309
+ return formatISO(value, {
310
+ format: 'extended'
311
+ });
312
+ };
313
+ this.parse = (value, format) => {
314
+ if (value === '') {
315
+ return null;
316
+ }
317
+ return dateFnsParse(value, format, new Date(), {
318
+ locale: this.locale
319
+ });
320
+ };
321
+ this.getCurrentLocaleCode = () => {
322
+ return this.locale?.code || 'en-US';
323
+ };
324
+ // Note: date-fns input types are more lenient than this adapter, so we need to expose our more
325
+ // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.
326
+ this.is12HourCycleInCurrentLocale = () => {
327
+ if (this.locale) {
328
+ return /a/.test(this.locale.formatLong.time());
329
+ }
330
+
331
+ // By default, date-fns is using en-US locale with am/pm enabled
332
+ return true;
333
+ };
334
+ this.expandFormat = format => {
335
+ const longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
336
+
337
+ // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31
338
+ return format.match(longFormatRegexp).map(token => {
339
+ const firstCharacter = token[0];
340
+ if (firstCharacter === 'p' || firstCharacter === 'P') {
341
+ const longFormatter = longFormatters[firstCharacter];
342
+ const locale = this.locale || defaultLocale;
343
+ return longFormatter(token, locale.formatLong, {});
344
+ }
345
+ return token;
346
+ }).join('');
347
+ };
348
+ this.getFormatHelperText = format => {
349
+ return this.expandFormat(format).replace(/(aaa|aa|a)/g, '(a|p)m').toLocaleLowerCase();
350
+ };
351
+ this.isNull = value => {
352
+ return value === null;
353
+ };
354
+ this.isValid = value => {
355
+ return isValid(this.date(value));
356
+ };
357
+ this.format = (value, formatKey) => {
358
+ return this.formatByString(value, this.formats[formatKey]);
359
+ };
360
+ this.formatByString = (value, formatString) => {
361
+ return dateFnsFormat(value, formatString, {
362
+ locale: this.locale
363
+ });
364
+ };
365
+ this.formatNumber = numberToFormat => {
366
+ return numberToFormat;
367
+ };
368
+ this.getDiff = (value, comparing, unit) => {
369
+ switch (unit) {
370
+ case 'years':
371
+ return differenceInYears(value, this.date(comparing));
372
+ case 'quarters':
373
+ return differenceInQuarters(value, this.date(comparing));
374
+ case 'months':
375
+ return differenceInMonths(value, this.date(comparing));
376
+ case 'weeks':
377
+ return differenceInWeeks(value, this.date(comparing));
378
+ case 'days':
379
+ return differenceInDays(value, this.date(comparing));
380
+ case 'hours':
381
+ return differenceInHours(value, this.date(comparing));
382
+ case 'minutes':
383
+ return differenceInMinutes(value, this.date(comparing));
384
+ case 'seconds':
385
+ return differenceInSeconds(value, this.date(comparing));
386
+ default:
387
+ {
388
+ return differenceInMilliseconds(value, this.date(comparing));
389
+ }
390
+ }
391
+ };
392
+ this.isEqual = (value, comparing) => {
393
+ if (value === null && comparing === null) {
394
+ return true;
395
+ }
396
+ return isEqual(value, comparing);
397
+ };
398
+ this.isSameYear = (value, comparing) => {
399
+ return isSameYear(value, comparing);
400
+ };
401
+ this.isSameMonth = (value, comparing) => {
402
+ return isSameMonth(value, comparing);
403
+ };
404
+ this.isSameDay = (value, comparing) => {
405
+ return isSameDay(value, comparing);
406
+ };
407
+ this.isSameHour = (value, comparing) => {
408
+ return isSameHour(value, comparing);
409
+ };
410
+ this.isAfter = (value, comparing) => {
411
+ return isAfter(value, comparing);
412
+ };
413
+ this.isAfterYear = (value, comparing) => {
414
+ return isAfter(value, endOfYear(comparing));
415
+ };
416
+ this.isAfterDay = (value, comparing) => {
417
+ return isAfter(value, endOfDay(comparing));
418
+ };
419
+ this.isBefore = (value, comparing) => {
420
+ return isBefore(value, comparing);
421
+ };
422
+ this.isBeforeYear = (value, comparing) => {
423
+ return isBefore(value, startOfYear(comparing));
424
+ };
425
+ this.isBeforeDay = (value, comparing) => {
426
+ return isBefore(value, startOfDay(comparing));
427
+ };
428
+ this.isWithinRange = (value, [start, end]) => {
429
+ return isWithinInterval(value, {
430
+ start,
431
+ end
432
+ });
433
+ };
434
+ this.startOfYear = value => {
435
+ return startOfYear(value);
436
+ };
437
+ this.startOfMonth = value => {
438
+ return startOfMonth(value);
439
+ };
440
+ this.startOfWeek = value => {
441
+ return startOfWeek(value, {
442
+ locale: this.locale
443
+ });
444
+ };
445
+ this.startOfDay = value => {
446
+ return startOfDay(value);
447
+ };
448
+ this.endOfYear = value => {
449
+ return endOfYear(value);
450
+ };
451
+ this.endOfMonth = value => {
452
+ return endOfMonth(value);
453
+ };
454
+ this.endOfWeek = value => {
455
+ return endOfWeek(value, {
456
+ locale: this.locale
457
+ });
458
+ };
459
+ this.endOfDay = value => {
460
+ return endOfDay(value);
461
+ };
462
+ this.addYears = (value, amount) => {
463
+ return addYears(value, amount);
464
+ };
465
+ this.addMonths = (value, amount) => {
466
+ return addMonths(value, amount);
467
+ };
468
+ this.addWeeks = (value, amount) => {
469
+ return addWeeks(value, amount);
470
+ };
471
+ this.addDays = (value, amount) => {
472
+ return addDays(value, amount);
473
+ };
474
+ this.addHours = (value, amount) => {
475
+ return addHours(value, amount);
476
+ };
477
+ this.addMinutes = (value, amount) => {
478
+ return addMinutes(value, amount);
479
+ };
480
+ this.addSeconds = (value, amount) => {
481
+ return addSeconds(value, amount);
482
+ };
483
+ this.getYear = value => {
484
+ return getYear(value);
485
+ };
486
+ this.getMonth = value => {
487
+ return getMonth(value);
488
+ };
489
+ this.getDate = value => {
490
+ return getDate(value);
491
+ };
492
+ this.getHours = value => {
493
+ return getHours(value);
494
+ };
495
+ this.getMinutes = value => {
496
+ return getMinutes(value);
497
+ };
498
+ this.getSeconds = value => {
499
+ return getSeconds(value);
500
+ };
501
+ this.setYear = (value, year) => {
502
+ return setYear(value, year);
503
+ };
504
+ this.setMonth = (value, month) => {
505
+ return setMonth(value, month);
506
+ };
507
+ this.setDate = (value, date) => {
508
+ return setDate(value, date);
509
+ };
510
+ this.setHours = (value, hours) => {
511
+ return setHours(value, hours);
512
+ };
513
+ this.setMinutes = (value, minutes) => {
514
+ return setMinutes(value, minutes);
515
+ };
516
+ this.setSeconds = (value, seconds) => {
517
+ return setSeconds(value, seconds);
518
+ };
519
+ this.getDaysInMonth = value => {
520
+ return getDaysInMonth(value);
521
+ };
522
+ this.getNextMonth = value => {
523
+ return addMonths(value, 1);
524
+ };
525
+ this.getPreviousMonth = value => {
526
+ return addMonths(value, -1);
527
+ };
528
+ this.getMonthArray = value => {
529
+ const firstMonth = startOfYear(value);
530
+ const monthArray = [firstMonth];
531
+ while (monthArray.length < 12) {
532
+ const prevMonth = monthArray[monthArray.length - 1];
533
+ monthArray.push(this.getNextMonth(prevMonth));
534
+ }
535
+ return monthArray;
536
+ };
537
+ this.mergeDateAndTime = (dateParam, timeParam) => {
538
+ return this.setSeconds(this.setMinutes(this.setHours(dateParam, this.getHours(timeParam)), this.getMinutes(timeParam)), this.getSeconds(timeParam));
539
+ };
540
+ this.getWeekdays = () => {
541
+ const now = new Date();
542
+ return eachDayOfInterval({
543
+ start: startOfWeek(now, {
544
+ locale: this.locale
545
+ }),
546
+ end: endOfWeek(now, {
547
+ locale: this.locale
548
+ })
549
+ }).map(day => this.formatByString(day, 'EEEEEE'));
550
+ };
551
+ this.getWeekArray = value => {
552
+ const start = startOfWeek(startOfMonth(value), {
553
+ locale: this.locale
554
+ });
555
+ const end = endOfWeek(endOfMonth(value), {
556
+ locale: this.locale
557
+ });
558
+ let count = 0;
559
+ let current = start;
560
+ const nestedWeeks = [];
561
+ let lastDay = null;
562
+ while (isBefore(current, end)) {
563
+ const weekNumber = Math.floor(count / 7);
564
+ nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
565
+ const day = getDay(current);
566
+ if (lastDay !== day) {
567
+ lastDay = day;
568
+ nestedWeeks[weekNumber].push(current);
569
+ count += 1;
570
+ }
571
+ current = addDays(current, 1);
572
+ }
573
+ return nestedWeeks;
574
+ };
575
+ this.getWeekNumber = value => {
576
+ return getWeek(value, {
577
+ locale: this.locale
578
+ });
579
+ };
580
+ this.getYearRange = (start, end) => {
581
+ const startDate = startOfYear(start);
582
+ const endDate = endOfYear(end);
583
+ const years = [];
584
+ let current = startDate;
585
+ while (isBefore(current, endDate)) {
586
+ years.push(current);
587
+ current = addYears(current, 1);
588
+ }
589
+ return years;
590
+ };
591
+ this.getMeridiemText = ampm => {
592
+ return ampm === 'am' ? 'AM' : 'PM';
593
+ };
594
+ this.locale = _locale;
595
+ this.formats = _extends({}, defaultFormats, formats);
596
+ }
597
+ }