@mui/x-date-pickers 6.2.0 → 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 (637) 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 +118 -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 +2 -1
  45. package/DesktopDateTimePicker/DesktopDateTimePicker.js +3 -1
  46. package/DesktopTimePicker/DesktopTimePicker.js +51 -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/LocalizationProvider/LocalizationProvider.d.ts +1 -1
  57. package/LocalizationProvider/LocalizationProvider.js +1 -1
  58. package/MobileDatePicker/MobileDatePicker.js +2 -1
  59. package/MobileDateTimePicker/MobileDateTimePicker.js +3 -1
  60. package/MobileTimePicker/MobileTimePicker.js +3 -1
  61. package/MobileTimePicker/MobileTimePicker.types.d.ts +8 -7
  62. package/MonthCalendar/MonthCalendar.types.d.ts +1 -1
  63. package/MultiSectionDigitalClock/MultiSectionDigitalClock.d.ts +7 -0
  64. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +479 -0
  65. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +57 -0
  66. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.d.ts +22 -0
  67. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +65 -0
  68. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +28 -0
  69. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +151 -0
  70. package/MultiSectionDigitalClock/index.d.ts +7 -0
  71. package/MultiSectionDigitalClock/index.js +3 -0
  72. package/MultiSectionDigitalClock/multiSectionDigitalClockClasses.d.ts +7 -0
  73. package/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +6 -0
  74. package/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.d.ts +9 -0
  75. package/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +6 -0
  76. package/MultiSectionDigitalClock/package.json +6 -0
  77. package/PickersDay/PickersDay.js +4 -1
  78. package/PickersLayout/PickersLayout.d.ts +2 -2
  79. package/PickersLayout/PickersLayout.js +2 -2
  80. package/PickersLayout/PickersLayout.types.d.ts +7 -8
  81. package/PickersLayout/usePickerLayout.d.ts +2 -2
  82. package/README.md +0 -9
  83. package/StaticDatePicker/StaticDatePicker.js +1 -0
  84. package/StaticDateTimePicker/StaticDateTimePicker.js +5 -3
  85. package/StaticTimePicker/StaticTimePicker.js +5 -3
  86. package/StaticTimePicker/StaticTimePicker.types.d.ts +1 -1
  87. package/TimeClock/TimeClock.js +35 -12
  88. package/TimeClock/TimeClock.types.d.ts +4 -67
  89. package/TimeField/TimeField.js +21 -3
  90. package/TimeField/TimeField.types.d.ts +3 -2
  91. package/TimeField/useTimeField.js +4 -2
  92. package/TimePicker/TimePicker.js +25 -2
  93. package/TimePicker/TimePicker.types.d.ts +4 -3
  94. package/TimePicker/TimePickerToolbar.d.ts +2 -2
  95. package/TimePicker/TimePickerToolbar.js +2 -2
  96. package/TimePicker/shared.d.ts +9 -7
  97. package/YearCalendar/YearCalendar.types.d.ts +1 -1
  98. package/dateViewRenderers/dateViewRenderers.d.ts +2 -2
  99. package/index.d.ts +2 -0
  100. package/index.js +4 -1
  101. package/internals/components/PickersToolbar.d.ts +3 -3
  102. package/internals/constants/dimensions.d.ts +1 -0
  103. package/internals/constants/dimensions.js +2 -1
  104. package/internals/demo/DemoContainer.js +4 -1
  105. package/internals/hooks/date-helpers-hooks.d.ts +3 -2
  106. package/internals/hooks/date-helpers-hooks.js +3 -3
  107. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +2 -2
  108. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +15 -15
  109. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +7 -6
  110. package/internals/hooks/useField/useField.js +12 -11
  111. package/internals/hooks/useField/useField.types.d.ts +19 -5
  112. package/internals/hooks/useField/useField.utils.d.ts +9 -6
  113. package/internals/hooks/useField/useField.utils.js +60 -34
  114. package/internals/hooks/useField/useFieldCharacterEditing.js +18 -10
  115. package/internals/hooks/useField/useFieldState.js +5 -4
  116. package/internals/hooks/useIsLandscape.d.ts +2 -2
  117. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +2 -2
  118. package/internals/hooks/useMobilePicker/useMobilePicker.js +10 -10
  119. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -6
  120. package/internals/hooks/usePicker/usePicker.d.ts +4 -3
  121. package/internals/hooks/usePicker/usePicker.js +2 -0
  122. package/internals/hooks/usePicker/usePicker.types.d.ts +6 -5
  123. package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +5 -6
  124. package/internals/hooks/usePicker/usePickerValue.d.ts +2 -2
  125. package/internals/hooks/usePicker/usePickerValue.js +10 -12
  126. package/internals/hooks/usePicker/usePickerValue.types.d.ts +5 -3
  127. package/internals/hooks/usePicker/usePickerViews.d.ts +11 -11
  128. package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +2 -2
  129. package/internals/hooks/useStaticPicker/useStaticPicker.js +10 -10
  130. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +6 -5
  131. package/internals/hooks/{validation/useValidation.d.ts → useValidation.d.ts} +1 -1
  132. package/internals/hooks/{validation/useValidation.js → useValidation.js} +1 -1
  133. package/internals/hooks/useViews.d.ts +8 -6
  134. package/internals/hooks/useViews.js +29 -13
  135. package/internals/index.d.ts +7 -7
  136. package/internals/index.js +5 -5
  137. package/internals/models/common.d.ts +3 -0
  138. package/internals/models/index.d.ts +1 -0
  139. package/internals/models/index.js +2 -1
  140. package/internals/models/props/basePickerProps.d.ts +3 -3
  141. package/internals/models/props/clock.d.ts +88 -0
  142. package/internals/models/props/tabs.d.ts +2 -2
  143. package/internals/models/props/toolbar.d.ts +3 -3
  144. package/internals/{hooks/validation/models.d.ts → models/validation.d.ts} +2 -5
  145. package/internals/models/validation.js +1 -0
  146. package/internals/utils/time-utils.d.ts +7 -7
  147. package/internals/utils/time-utils.js +2 -1
  148. package/internals/{hooks/validation/useDateValidation.d.ts → utils/validation/validateDate.d.ts} +2 -3
  149. package/internals/{hooks/validation/useDateValidation.js → utils/validation/validateDate.js} +1 -27
  150. package/internals/{hooks/validation/useDateTimeValidation.d.ts → utils/validation/validateDateTime.d.ts} +3 -3
  151. package/{modern/internals/hooks/validation/useDateTimeValidation.js → internals/utils/validation/validateDateTime.js} +2 -2
  152. package/internals/{hooks/validation/useTimeValidation.d.ts → utils/validation/validateTime.d.ts} +2 -2
  153. package/{modern/internals/hooks/validation/useTimeValidation.js → internals/utils/validation/validateTime.js} +1 -1
  154. package/internals/utils/valueManagers.js +1 -1
  155. package/internals/utils/views.d.ts +3 -2
  156. package/legacy/AdapterDateFns/AdapterDateFns.js +606 -0
  157. package/legacy/AdapterDateFns/index.js +1 -165
  158. package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +620 -0
  159. package/legacy/AdapterDateFnsJalali/index.js +1 -165
  160. package/legacy/AdapterDayjs/AdapterDayjs.js +146 -111
  161. package/legacy/AdapterLuxon/AdapterLuxon.js +524 -0
  162. package/legacy/AdapterLuxon/index.js +1 -127
  163. package/legacy/AdapterMoment/AdapterMoment.js +422 -0
  164. package/legacy/AdapterMoment/index.js +1 -115
  165. package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +284 -0
  166. package/legacy/AdapterMomentHijri/index.js +1 -90
  167. package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +291 -0
  168. package/legacy/AdapterMomentJalaali/index.js +1 -103
  169. package/legacy/DateCalendar/DayCalendar.js +1 -1
  170. package/legacy/DateCalendar/useCalendarState.js +1 -1
  171. package/legacy/DateCalendar/useIsDateDisabled.js +28 -0
  172. package/legacy/DateField/DateField.js +20 -3
  173. package/legacy/DateField/useDateField.js +4 -2
  174. package/legacy/DatePicker/DatePickerToolbar.js +1 -1
  175. package/legacy/DateTimeField/DateTimeField.js +21 -3
  176. package/legacy/DateTimeField/useDateTimeField.js +4 -2
  177. package/legacy/DateTimePicker/DateTimePicker.js +1 -0
  178. package/legacy/DesktopDatePicker/DesktopDatePicker.js +2 -1
  179. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +3 -1
  180. package/legacy/DesktopTimePicker/DesktopTimePicker.js +52 -8
  181. package/legacy/DigitalClock/DigitalClock.js +419 -0
  182. package/legacy/DigitalClock/DigitalClock.types.js +1 -0
  183. package/legacy/DigitalClock/digitalClockClasses.js +6 -0
  184. package/legacy/DigitalClock/index.js +2 -0
  185. package/legacy/LocalizationProvider/LocalizationProvider.js +1 -1
  186. package/legacy/MobileDatePicker/MobileDatePicker.js +2 -1
  187. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +3 -1
  188. package/legacy/MobileTimePicker/MobileTimePicker.js +3 -1
  189. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.js +508 -0
  190. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.types.js +1 -0
  191. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +65 -0
  192. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +157 -0
  193. package/legacy/MultiSectionDigitalClock/index.js +3 -0
  194. package/legacy/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +6 -0
  195. package/legacy/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +6 -0
  196. package/legacy/PickersDay/PickersDay.js +3 -1
  197. package/legacy/PickersLayout/PickersLayout.js +2 -2
  198. package/legacy/StaticDatePicker/StaticDatePicker.js +1 -0
  199. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +5 -3
  200. package/legacy/StaticTimePicker/StaticTimePicker.js +5 -3
  201. package/legacy/TimeClock/TimeClock.js +35 -12
  202. package/legacy/TimeField/TimeField.js +21 -3
  203. package/legacy/TimeField/useTimeField.js +4 -2
  204. package/legacy/TimePicker/TimePicker.js +25 -2
  205. package/legacy/TimePicker/TimePickerToolbar.js +2 -2
  206. package/legacy/index.js +4 -1
  207. package/legacy/internals/constants/dimensions.js +2 -1
  208. package/legacy/internals/demo/DemoContainer.js +4 -1
  209. package/legacy/internals/hooks/date-helpers-hooks.js +3 -3
  210. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +10 -11
  211. package/legacy/internals/hooks/useField/useField.js +11 -10
  212. package/legacy/internals/hooks/useField/useField.utils.js +58 -34
  213. package/legacy/internals/hooks/useField/useFieldCharacterEditing.js +18 -10
  214. package/legacy/internals/hooks/useField/useFieldState.js +7 -5
  215. package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +5 -6
  216. package/legacy/internals/hooks/usePicker/usePicker.js +2 -0
  217. package/legacy/internals/hooks/usePicker/usePickerValue.js +10 -14
  218. package/legacy/internals/hooks/useStaticPicker/useStaticPicker.js +7 -8
  219. package/legacy/internals/hooks/{validation/useValidation.js → useValidation.js} +1 -1
  220. package/legacy/internals/hooks/useViews.js +30 -14
  221. package/legacy/internals/index.js +5 -5
  222. package/legacy/internals/models/index.js +2 -1
  223. package/legacy/internals/models/props/clock.js +1 -0
  224. package/legacy/internals/models/validation.js +1 -0
  225. package/legacy/internals/utils/time-utils.js +2 -1
  226. package/legacy/internals/{hooks/validation/useDateValidation.js → utils/validation/validateDate.js} +1 -28
  227. package/legacy/internals/{hooks/validation/useDateTimeValidation.js → utils/validation/validateDateTime.js} +2 -2
  228. package/legacy/internals/{hooks/validation/useTimeValidation.js → utils/validation/validateTime.js} +1 -1
  229. package/legacy/internals/utils/valueManagers.js +2 -2
  230. package/legacy/locales/beBY.js +5 -3
  231. package/legacy/locales/caES.js +6 -1
  232. package/legacy/locales/csCZ.js +6 -4
  233. package/legacy/locales/daDK.js +6 -2
  234. package/legacy/locales/deDE.js +6 -2
  235. package/legacy/locales/enUS.js +4 -0
  236. package/legacy/locales/esES.js +6 -1
  237. package/legacy/locales/faIR.js +11 -1
  238. package/legacy/locales/fiFI.js +6 -1
  239. package/legacy/locales/frFR.js +6 -1
  240. package/legacy/locales/heIL.js +6 -1
  241. package/legacy/locales/huHU.js +6 -2
  242. package/legacy/locales/index.js +1 -0
  243. package/legacy/locales/isIS.js +11 -1
  244. package/legacy/locales/itIT.js +6 -1
  245. package/legacy/locales/jaJP.js +6 -2
  246. package/legacy/locales/koKR.js +6 -1
  247. package/legacy/locales/kzKZ.js +6 -2
  248. package/legacy/locales/nbNO.js +11 -1
  249. package/legacy/locales/nlNL.js +11 -1
  250. package/legacy/locales/plPL.js +11 -1
  251. package/legacy/locales/ptBR.js +11 -1
  252. package/legacy/locales/ruRU.js +6 -2
  253. package/legacy/locales/svSE.js +11 -1
  254. package/legacy/locales/trTR.js +22 -7
  255. package/legacy/locales/ukUA.js +11 -1
  256. package/legacy/locales/urPK.js +11 -1
  257. package/legacy/locales/zhCN.js +44 -23
  258. package/legacy/models/common.js +1 -0
  259. package/legacy/models/index.js +2 -1
  260. package/legacy/tests/describeAdapters/describeAdapters.js +1 -3
  261. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.js +3 -1
  262. package/legacy/tests/describeGregorianAdapter/testCalculations.js +29 -26
  263. package/legacy/tests/describeGregorianAdapter/testLocalization.js +2 -2
  264. package/legacy/tests/describeHijriAdapter/describeHijriAdapter.js +23 -0
  265. package/legacy/tests/describeHijriAdapter/describeHijriAdapter.types.js +1 -0
  266. package/legacy/tests/describeHijriAdapter/index.js +1 -0
  267. package/legacy/tests/describeHijriAdapter/testCalculations.js +94 -0
  268. package/legacy/tests/describeHijriAdapter/testLocalization.js +12 -0
  269. package/legacy/tests/describeJalaliAdapter/describeJalaliAdapter.js +25 -0
  270. package/legacy/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +1 -0
  271. package/legacy/tests/describeJalaliAdapter/index.js +1 -0
  272. package/legacy/tests/describeJalaliAdapter/testCalculations.js +82 -0
  273. package/legacy/tests/describeJalaliAdapter/testLocalization.js +12 -0
  274. package/legacy/tests/describePicker/describePicker.js +159 -0
  275. package/legacy/tests/describePicker/describePicker.types.js +1 -0
  276. package/legacy/tests/describePicker/index.js +1 -0
  277. package/legacy/tests/describeValue/describeValue.js +1 -1
  278. package/legacy/tests/describeValue/testControlledUnControlled.js +8 -9
  279. package/legacy/tests/describeValue/testPickerActionBar.js +46 -13
  280. package/legacy/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -5
  281. package/legacy/timeViewRenderers/index.js +1 -1
  282. package/legacy/timeViewRenderers/timeViewRenderers.js +132 -4
  283. package/locales/beBY.d.ts +4 -2
  284. package/locales/beBY.js +3 -3
  285. package/locales/caES.d.ts +4 -2
  286. package/locales/caES.js +4 -1
  287. package/locales/csCZ.d.ts +4 -2
  288. package/locales/csCZ.js +4 -4
  289. package/locales/daDK.d.ts +4 -2
  290. package/locales/daDK.js +4 -2
  291. package/locales/deDE.d.ts +4 -2
  292. package/locales/deDE.js +4 -2
  293. package/locales/enUS.d.ts +3 -2
  294. package/locales/enUS.js +2 -0
  295. package/locales/esES.d.ts +4 -2
  296. package/locales/esES.js +4 -1
  297. package/locales/faIR.d.ts +4 -2
  298. package/locales/faIR.js +9 -1
  299. package/locales/fiFI.d.ts +4 -2
  300. package/locales/fiFI.js +4 -1
  301. package/locales/frFR.d.ts +4 -2
  302. package/locales/frFR.js +4 -1
  303. package/locales/heIL.d.ts +4 -2
  304. package/locales/heIL.js +4 -1
  305. package/locales/huHU.d.ts +4 -2
  306. package/locales/huHU.js +4 -2
  307. package/locales/index.d.ts +1 -0
  308. package/locales/index.js +1 -0
  309. package/locales/isIS.d.ts +4 -2
  310. package/locales/isIS.js +9 -1
  311. package/locales/itIT.d.ts +4 -2
  312. package/locales/itIT.js +4 -1
  313. package/locales/jaJP.d.ts +4 -2
  314. package/locales/jaJP.js +4 -2
  315. package/locales/koKR.d.ts +4 -2
  316. package/locales/koKR.js +4 -1
  317. package/locales/kzKZ.d.ts +4 -2
  318. package/locales/kzKZ.js +4 -2
  319. package/locales/nbNO.d.ts +4 -2
  320. package/locales/nbNO.js +9 -1
  321. package/locales/nlNL.d.ts +8 -7
  322. package/locales/nlNL.js +9 -1
  323. package/locales/plPL.d.ts +4 -2
  324. package/locales/plPL.js +9 -1
  325. package/locales/ptBR.d.ts +4 -2
  326. package/locales/ptBR.js +9 -1
  327. package/locales/ruRU.d.ts +4 -2
  328. package/locales/ruRU.js +4 -2
  329. package/locales/svSE.d.ts +4 -2
  330. package/locales/svSE.js +9 -1
  331. package/locales/trTR.d.ts +4 -2
  332. package/locales/trTR.js +14 -7
  333. package/locales/ukUA.d.ts +4 -2
  334. package/locales/ukUA.js +9 -1
  335. package/locales/urPK.d.ts +4 -2
  336. package/locales/urPK.js +9 -1
  337. package/locales/utils/getPickersLocalization.d.ts +3 -2
  338. package/locales/utils/pickersLocaleTextApi.d.ts +5 -3
  339. package/locales/zhCN.d.ts +4 -2
  340. package/locales/zhCN.js +22 -23
  341. package/models/adapters.d.ts +7 -6
  342. package/models/common.d.ts +5 -0
  343. package/models/common.js +1 -0
  344. package/models/fields.d.ts +20 -2
  345. package/models/index.d.ts +1 -0
  346. package/models/index.js +2 -1
  347. package/modern/AdapterDateFns/AdapterDateFns.js +597 -0
  348. package/modern/AdapterDateFns/index.js +1 -149
  349. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +608 -0
  350. package/modern/AdapterDateFnsJalali/index.js +1 -148
  351. package/modern/AdapterDayjs/AdapterDayjs.js +146 -111
  352. package/modern/AdapterLuxon/AdapterLuxon.js +512 -0
  353. package/modern/AdapterLuxon/index.js +1 -111
  354. package/modern/AdapterMoment/AdapterMoment.js +416 -0
  355. package/modern/AdapterMoment/index.js +1 -99
  356. package/modern/AdapterMomentHijri/AdapterMomentHijri.js +269 -0
  357. package/modern/AdapterMomentHijri/index.js +1 -74
  358. package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +276 -0
  359. package/modern/AdapterMomentJalaali/index.js +1 -87
  360. package/modern/DateCalendar/DayCalendar.js +1 -1
  361. package/modern/DateCalendar/useCalendarState.js +1 -1
  362. package/modern/DateCalendar/useIsDateDisabled.js +27 -0
  363. package/modern/DateField/DateField.js +20 -3
  364. package/modern/DateField/useDateField.js +4 -2
  365. package/modern/DatePicker/DatePickerToolbar.js +1 -1
  366. package/modern/DateTimeField/DateTimeField.js +21 -3
  367. package/modern/DateTimeField/useDateTimeField.js +4 -2
  368. package/modern/DateTimePicker/DateTimePicker.js +1 -0
  369. package/modern/DesktopDatePicker/DesktopDatePicker.js +2 -1
  370. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +3 -1
  371. package/modern/DesktopTimePicker/DesktopTimePicker.js +50 -7
  372. package/modern/DigitalClock/DigitalClock.js +396 -0
  373. package/modern/DigitalClock/DigitalClock.types.js +1 -0
  374. package/modern/DigitalClock/digitalClockClasses.js +6 -0
  375. package/modern/DigitalClock/index.js +2 -0
  376. package/modern/LocalizationProvider/LocalizationProvider.js +1 -1
  377. package/modern/MobileDatePicker/MobileDatePicker.js +2 -1
  378. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +3 -1
  379. package/modern/MobileTimePicker/MobileTimePicker.js +3 -1
  380. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +479 -0
  381. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.types.js +1 -0
  382. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +65 -0
  383. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +149 -0
  384. package/modern/MultiSectionDigitalClock/index.js +3 -0
  385. package/modern/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +6 -0
  386. package/modern/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +6 -0
  387. package/modern/PickersDay/PickersDay.js +4 -1
  388. package/modern/PickersLayout/PickersLayout.js +2 -2
  389. package/modern/StaticDatePicker/StaticDatePicker.js +1 -0
  390. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +5 -3
  391. package/modern/StaticTimePicker/StaticTimePicker.js +5 -3
  392. package/modern/TimeClock/TimeClock.js +35 -12
  393. package/modern/TimeField/TimeField.js +21 -3
  394. package/modern/TimeField/useTimeField.js +4 -2
  395. package/modern/TimePicker/TimePicker.js +25 -2
  396. package/modern/TimePicker/TimePickerToolbar.js +2 -2
  397. package/modern/index.js +4 -1
  398. package/modern/internals/constants/dimensions.js +2 -1
  399. package/modern/internals/demo/DemoContainer.js +4 -1
  400. package/modern/internals/hooks/date-helpers-hooks.js +3 -3
  401. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +15 -15
  402. package/modern/internals/hooks/useField/useField.js +12 -11
  403. package/modern/internals/hooks/useField/useField.utils.js +60 -34
  404. package/modern/internals/hooks/useField/useFieldCharacterEditing.js +18 -10
  405. package/modern/internals/hooks/useField/useFieldState.js +5 -4
  406. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +10 -10
  407. package/modern/internals/hooks/usePicker/usePicker.js +2 -0
  408. package/modern/internals/hooks/usePicker/usePickerValue.js +10 -12
  409. package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +10 -10
  410. package/modern/internals/hooks/{validation/useValidation.js → useValidation.js} +1 -1
  411. package/modern/internals/hooks/useViews.js +29 -13
  412. package/modern/internals/index.js +5 -5
  413. package/modern/internals/models/index.js +2 -1
  414. package/modern/internals/models/props/clock.js +1 -0
  415. package/modern/internals/models/validation.js +1 -0
  416. package/modern/internals/utils/time-utils.js +2 -1
  417. package/modern/internals/{hooks/validation/useDateValidation.js → utils/validation/validateDate.js} +1 -27
  418. package/{internals/hooks/validation/useDateTimeValidation.js → modern/internals/utils/validation/validateDateTime.js} +2 -2
  419. package/{internals/hooks/validation/useTimeValidation.js → modern/internals/utils/validation/validateTime.js} +1 -1
  420. package/modern/internals/utils/valueManagers.js +1 -1
  421. package/modern/locales/beBY.js +3 -3
  422. package/modern/locales/caES.js +4 -1
  423. package/modern/locales/csCZ.js +4 -4
  424. package/modern/locales/daDK.js +4 -2
  425. package/modern/locales/deDE.js +4 -2
  426. package/modern/locales/enUS.js +2 -0
  427. package/modern/locales/esES.js +4 -1
  428. package/modern/locales/faIR.js +9 -1
  429. package/modern/locales/fiFI.js +4 -1
  430. package/modern/locales/frFR.js +4 -1
  431. package/modern/locales/heIL.js +4 -1
  432. package/modern/locales/huHU.js +4 -2
  433. package/modern/locales/index.js +1 -0
  434. package/modern/locales/isIS.js +9 -1
  435. package/modern/locales/itIT.js +4 -1
  436. package/modern/locales/jaJP.js +4 -2
  437. package/modern/locales/koKR.js +4 -1
  438. package/modern/locales/kzKZ.js +4 -2
  439. package/modern/locales/nbNO.js +9 -1
  440. package/modern/locales/nlNL.js +9 -1
  441. package/modern/locales/plPL.js +9 -1
  442. package/modern/locales/ptBR.js +9 -1
  443. package/modern/locales/ruRU.js +4 -2
  444. package/modern/locales/svSE.js +9 -1
  445. package/modern/locales/trTR.js +14 -7
  446. package/modern/locales/ukUA.js +9 -1
  447. package/modern/locales/urPK.js +9 -1
  448. package/modern/locales/zhCN.js +22 -23
  449. package/modern/models/common.js +1 -0
  450. package/modern/models/index.js +2 -1
  451. package/modern/tests/describeAdapters/describeAdapters.js +1 -3
  452. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.js +3 -1
  453. package/modern/tests/describeGregorianAdapter/testCalculations.js +29 -26
  454. package/modern/tests/describeGregorianAdapter/testLocalization.js +2 -2
  455. package/modern/tests/describeHijriAdapter/describeHijriAdapter.js +23 -0
  456. package/modern/tests/describeHijriAdapter/describeHijriAdapter.types.js +1 -0
  457. package/modern/tests/describeHijriAdapter/index.js +1 -0
  458. package/modern/tests/describeHijriAdapter/testCalculations.js +91 -0
  459. package/modern/tests/describeHijriAdapter/testLocalization.js +13 -0
  460. package/modern/tests/describeJalaliAdapter/describeJalaliAdapter.js +25 -0
  461. package/modern/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +1 -0
  462. package/modern/tests/describeJalaliAdapter/index.js +1 -0
  463. package/modern/tests/describeJalaliAdapter/testCalculations.js +83 -0
  464. package/modern/tests/describeJalaliAdapter/testLocalization.js +13 -0
  465. package/modern/tests/describePicker/describePicker.js +162 -0
  466. package/modern/tests/describePicker/describePicker.types.js +1 -0
  467. package/modern/tests/describePicker/index.js +1 -0
  468. package/modern/tests/describeValue/describeValue.js +1 -1
  469. package/modern/tests/describeValue/testControlledUnControlled.js +8 -9
  470. package/modern/tests/describeValue/testPickerActionBar.js +46 -13
  471. package/modern/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -5
  472. package/modern/timeViewRenderers/index.js +1 -1
  473. package/modern/timeViewRenderers/timeViewRenderers.js +130 -2
  474. package/node/AdapterDateFns/AdapterDateFns.js +607 -0
  475. package/node/AdapterDateFns/index.js +6 -152
  476. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +618 -0
  477. package/node/AdapterDateFnsJalali/index.js +6 -151
  478. package/node/AdapterDayjs/AdapterDayjs.js +146 -111
  479. package/node/AdapterLuxon/AdapterLuxon.js +521 -0
  480. package/node/AdapterLuxon/index.js +6 -114
  481. package/node/AdapterMoment/AdapterMoment.js +425 -0
  482. package/node/AdapterMoment/index.js +6 -102
  483. package/node/AdapterMomentHijri/AdapterMomentHijri.js +278 -0
  484. package/node/AdapterMomentHijri/index.js +6 -77
  485. package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +285 -0
  486. package/node/AdapterMomentJalaali/index.js +6 -90
  487. package/node/DateCalendar/DayCalendar.js +2 -2
  488. package/node/DateCalendar/useCalendarState.js +2 -2
  489. package/node/{internals/hooks/validation/useDateValidation.js → DateCalendar/useIsDateDisabled.js} +4 -37
  490. package/node/DateField/DateField.js +20 -3
  491. package/node/DateField/useDateField.js +5 -3
  492. package/node/DatePicker/DatePickerToolbar.js +1 -1
  493. package/node/DateTimeField/DateTimeField.js +21 -3
  494. package/node/DateTimeField/useDateTimeField.js +5 -3
  495. package/node/DateTimePicker/DateTimePicker.js +1 -0
  496. package/node/DesktopDatePicker/DesktopDatePicker.js +3 -2
  497. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +4 -2
  498. package/node/DesktopTimePicker/DesktopTimePicker.js +51 -8
  499. package/node/DigitalClock/DigitalClock.js +406 -0
  500. package/node/DigitalClock/digitalClockClasses.js +15 -0
  501. package/node/DigitalClock/index.js +25 -0
  502. package/node/LocalizationProvider/LocalizationProvider.js +1 -1
  503. package/node/MobileDatePicker/MobileDatePicker.js +3 -2
  504. package/node/MobileDateTimePicker/MobileDateTimePicker.js +4 -2
  505. package/node/MobileTimePicker/MobileTimePicker.js +4 -2
  506. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +489 -0
  507. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.types.js +5 -0
  508. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +73 -0
  509. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +159 -0
  510. package/node/MultiSectionDigitalClock/index.js +32 -0
  511. package/node/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +15 -0
  512. package/node/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +15 -0
  513. package/node/PickersDay/PickersDay.js +4 -1
  514. package/node/PickersLayout/PickersLayout.js +2 -2
  515. package/node/StaticDatePicker/StaticDatePicker.js +1 -0
  516. package/node/StaticDateTimePicker/StaticDateTimePicker.js +5 -3
  517. package/node/StaticTimePicker/StaticTimePicker.js +5 -3
  518. package/node/TimeClock/TimeClock.js +35 -12
  519. package/node/TimeField/TimeField.js +21 -3
  520. package/node/TimeField/useTimeField.js +5 -3
  521. package/node/TimePicker/TimePicker.js +25 -2
  522. package/node/TimePicker/TimePickerToolbar.js +2 -2
  523. package/node/index.js +25 -1
  524. package/node/internals/constants/dimensions.js +4 -2
  525. package/node/internals/demo/DemoContainer.js +4 -1
  526. package/node/internals/hooks/date-helpers-hooks.js +3 -3
  527. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +15 -15
  528. package/node/internals/hooks/useField/useField.js +12 -11
  529. package/node/internals/hooks/useField/useField.utils.js +63 -36
  530. package/node/internals/hooks/useField/useFieldCharacterEditing.js +17 -9
  531. package/node/internals/hooks/useField/useFieldState.js +5 -4
  532. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +10 -10
  533. package/node/internals/hooks/usePicker/usePicker.js +2 -0
  534. package/node/internals/hooks/usePicker/usePickerValue.js +10 -12
  535. package/node/internals/hooks/useStaticPicker/useStaticPicker.js +10 -10
  536. package/node/internals/hooks/{validation/useValidation.js → useValidation.js} +1 -1
  537. package/node/internals/hooks/useViews.js +29 -13
  538. package/node/internals/index.js +9 -9
  539. package/node/internals/models/index.js +11 -0
  540. package/node/internals/models/props/clock.js +5 -0
  541. package/node/internals/models/validation.js +5 -0
  542. package/node/internals/utils/time-utils.js +2 -1
  543. package/node/internals/utils/validation/validateDate.js +40 -0
  544. package/node/internals/{hooks/validation/useDateTimeValidation.js → utils/validation/validateDateTime.js} +4 -4
  545. package/node/internals/{hooks/validation/useTimeValidation.js → utils/validation/validateTime.js} +1 -1
  546. package/node/internals/utils/valueManagers.js +1 -1
  547. package/node/locales/beBY.js +3 -3
  548. package/node/locales/caES.js +4 -1
  549. package/node/locales/csCZ.js +4 -2
  550. package/node/locales/daDK.js +4 -1
  551. package/node/locales/deDE.js +4 -1
  552. package/node/locales/enUS.js +2 -0
  553. package/node/locales/esES.js +4 -1
  554. package/node/locales/faIR.js +9 -1
  555. package/node/locales/fiFI.js +4 -1
  556. package/node/locales/frFR.js +4 -1
  557. package/node/locales/heIL.js +4 -1
  558. package/node/locales/huHU.js +4 -1
  559. package/node/locales/index.js +11 -0
  560. package/node/locales/isIS.js +9 -1
  561. package/node/locales/itIT.js +4 -1
  562. package/node/locales/jaJP.js +4 -1
  563. package/node/locales/koKR.js +4 -1
  564. package/node/locales/kzKZ.js +4 -1
  565. package/node/locales/nbNO.js +9 -1
  566. package/node/locales/nlNL.js +9 -1
  567. package/node/locales/plPL.js +9 -1
  568. package/node/locales/ptBR.js +9 -1
  569. package/node/locales/ruRU.js +4 -1
  570. package/node/locales/svSE.js +9 -1
  571. package/node/locales/trTR.js +14 -7
  572. package/node/locales/ukUA.js +9 -1
  573. package/node/locales/urPK.js +9 -1
  574. package/node/locales/zhCN.js +22 -23
  575. package/node/models/common.js +5 -0
  576. package/node/models/index.js +11 -0
  577. package/node/tests/describeAdapters/describeAdapters.js +1 -3
  578. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.js +3 -1
  579. package/node/tests/describeGregorianAdapter/testCalculations.js +29 -26
  580. package/node/tests/describeGregorianAdapter/testLocalization.js +2 -2
  581. package/node/tests/describeHijriAdapter/describeHijriAdapter.js +31 -0
  582. package/node/tests/describeHijriAdapter/describeHijriAdapter.types.js +5 -0
  583. package/node/tests/describeHijriAdapter/index.js +12 -0
  584. package/node/tests/describeHijriAdapter/testCalculations.js +98 -0
  585. package/node/tests/describeHijriAdapter/testLocalization.js +20 -0
  586. package/node/tests/describeJalaliAdapter/describeJalaliAdapter.js +33 -0
  587. package/node/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +5 -0
  588. package/node/tests/describeJalaliAdapter/index.js +12 -0
  589. package/node/tests/describeJalaliAdapter/testCalculations.js +90 -0
  590. package/node/tests/describeJalaliAdapter/testLocalization.js +20 -0
  591. package/node/tests/describePicker/describePicker.js +173 -0
  592. package/node/tests/describePicker/describePicker.types.js +5 -0
  593. package/node/tests/describePicker/index.js +12 -0
  594. package/node/tests/describeValue/describeValue.js +1 -1
  595. package/node/tests/describeValue/testControlledUnControlled.js +8 -9
  596. package/node/tests/describeValue/testPickerActionBar.js +46 -13
  597. package/node/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -5
  598. package/node/timeViewRenderers/index.js +12 -0
  599. package/node/timeViewRenderers/timeViewRenderers.js +134 -4
  600. package/package.json +3 -10
  601. package/tests/describeAdapters/describeAdapters.js +1 -3
  602. package/tests/describeGregorianAdapter/describeGregorianAdapter.js +3 -1
  603. package/tests/describeGregorianAdapter/testCalculations.js +29 -26
  604. package/tests/describeGregorianAdapter/testLocalization.js +2 -2
  605. package/tests/describeHijriAdapter/describeHijriAdapter.js +23 -0
  606. package/tests/describeHijriAdapter/describeHijriAdapter.types.js +1 -0
  607. package/tests/describeHijriAdapter/index.js +1 -0
  608. package/tests/describeHijriAdapter/testCalculations.js +91 -0
  609. package/tests/describeHijriAdapter/testLocalization.js +13 -0
  610. package/tests/describeJalaliAdapter/describeJalaliAdapter.js +25 -0
  611. package/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +1 -0
  612. package/tests/describeJalaliAdapter/index.js +1 -0
  613. package/tests/describeJalaliAdapter/testCalculations.js +83 -0
  614. package/tests/describeJalaliAdapter/testLocalization.js +13 -0
  615. package/tests/describePicker/describePicker.js +162 -0
  616. package/tests/describePicker/describePicker.types.js +1 -0
  617. package/tests/describePicker/index.js +1 -0
  618. package/tests/describeValue/describeValue.js +1 -1
  619. package/tests/describeValue/testControlledUnControlled.js +8 -9
  620. package/tests/describeValue/testPickerActionBar.js +46 -13
  621. package/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -5
  622. package/themeAugmentation/components.d.ts +12 -0
  623. package/themeAugmentation/overrides.d.ts +8 -0
  624. package/themeAugmentation/props.d.ts +8 -0
  625. package/timeViewRenderers/index.d.ts +1 -1
  626. package/timeViewRenderers/index.js +1 -1
  627. package/timeViewRenderers/timeViewRenderers.d.ts +11 -4
  628. package/timeViewRenderers/timeViewRenderers.js +130 -2
  629. /package/{internals/hooks/validation/models.js → DigitalClock/DigitalClock.types.js} +0 -0
  630. /package/{legacy/internals/hooks/validation/models.js → MultiSectionDigitalClock/MultiSectionDigitalClock.types.js} +0 -0
  631. /package/{modern/internals/hooks/validation/models.js → internals/models/props/clock.js} +0 -0
  632. /package/internals/utils/{validation.d.ts → validation/extractValidationProps.d.ts} +0 -0
  633. /package/internals/utils/{validation.js → validation/extractValidationProps.js} +0 -0
  634. /package/legacy/internals/utils/{validation.js → validation/extractValidationProps.js} +0 -0
  635. /package/modern/internals/utils/{validation.js → validation/extractValidationProps.js} +0 -0
  636. /package/node/{internals/hooks/validation/models.js → DigitalClock/DigitalClock.types.js} +0 -0
  637. /package/node/internals/utils/{validation.js → validation/extractValidationProps.js} +0 -0
@@ -55,11 +55,13 @@ const TimeField = /*#__PURE__*/React.forwardRef(function TimeField(inProps, ref)
55
55
  return /*#__PURE__*/_jsx(TextField, _extends({
56
56
  ref: ref
57
57
  }, fieldProps, {
58
+ InputProps: _extends({}, fieldProps.InputProps, {
59
+ readOnly
60
+ }),
58
61
  inputProps: _extends({}, fieldProps.inputProps, {
59
- ref: inputRef,
60
- onPaste,
61
62
  inputMode,
62
- readOnly
63
+ onPaste,
64
+ ref: inputRef
63
65
  })
64
66
  }));
65
67
  });
@@ -268,11 +270,27 @@ process.env.NODE_ENV !== "production" ? TimeField.propTypes = {
268
270
  shouldDisableClock: PropTypes.func,
269
271
  /**
270
272
  * Disable specific time.
273
+ * @template TDate
271
274
  * @param {TDate} value The value to check.
272
275
  * @param {TimeView} view The clock type of the timeValue.
273
276
  * @returns {boolean} If `true` the time will be disabled.
274
277
  */
275
278
  shouldDisableTime: PropTypes.func,
279
+ /**
280
+ * If `true`, the format will respect the leading zeroes (e.g: on dayjs, the format `M/D/YYYY` will render `8/16/2018`)
281
+ * If `false`, the format will always add leading zeroes (e.g: on dayjs, the format `M/D/YYYY` will render `08/16/2018`)
282
+ *
283
+ * Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (e.g: "DD"), so `shouldRespectLeadingZeros={true}` might lead to inconsistencies when using `AdapterLuxon`.
284
+ *
285
+ * Warning n°2: When `shouldRespectLeadingZeros={true}`, the field will add an invisible character on the sections containing a single digit to make sure `onChange` is fired.
286
+ * If you need to get the clean value from the input, you can remove this character using `input.value.replace(/\u200e/g, '')`.
287
+ *
288
+ * Warning n°3: When used in strict mode, dayjs and moment require to respect the leading zeros.
289
+ * This mean that when using `shouldRespectLeadingZeros={false}`, if you retrieve the value directly from the input (not listening to `onChange`) and your format contains tokens without leading zeros, the value will not be parsed by your library.
290
+ *
291
+ * @default `false`
292
+ */
293
+ shouldRespectLeadingZeros: PropTypes.bool,
276
294
  /**
277
295
  * The size of the component.
278
296
  */
@@ -3,8 +3,9 @@ import { SlotComponentProps } from '@mui/base/utils';
3
3
  import TextField from '@mui/material/TextField';
4
4
  import { UseFieldInternalProps } from '../internals/hooks/useField';
5
5
  import { DefaultizedProps, MakeOptional } from '../internals/models/helpers';
6
- import { BaseTimeValidationProps, TimeValidationProps } from '../internals/hooks/validation/models';
7
- import { FieldsTextFieldProps, UncapitalizeObjectKeys } from '../internals';
6
+ import { BaseTimeValidationProps, TimeValidationProps } from '../internals/models/validation';
7
+ import { UncapitalizeObjectKeys } from '../internals/utils/slots-migration';
8
+ import { FieldsTextFieldProps } from '../internals/models/fields';
8
9
  import { FieldSection, TimeValidationError } from '../models';
9
10
  export interface UseTimeFieldParams<TDate, TChildProps extends {}> {
10
11
  props: UseTimeFieldComponentProps<TDate, TChildProps>;
@@ -1,9 +1,9 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["value", "defaultValue", "format", "formatDensity", "onChange", "readOnly", "onError", "disableFuture", "disablePast", "minTime", "maxTime", "minutesStep", "shouldDisableClock", "shouldDisableTime", "disableIgnoringDatePartForTimeValidation", "selectedSections", "onSelectedSectionsChange", "ampm", "unstableFieldRef"];
3
+ const _excluded = ["value", "defaultValue", "format", "formatDensity", "shouldRespectLeadingZeros", "onChange", "readOnly", "onError", "disableFuture", "disablePast", "minTime", "maxTime", "minutesStep", "shouldDisableClock", "shouldDisableTime", "disableIgnoringDatePartForTimeValidation", "selectedSections", "onSelectedSectionsChange", "ampm", "unstableFieldRef"];
4
4
  import { singleItemFieldValueManager, singleItemValueManager } from '../internals/utils/valueManagers';
5
5
  import { useField } from '../internals/hooks/useField';
6
- import { validateTime } from '../internals/hooks/validation/useTimeValidation';
6
+ import { validateTime } from '../internals/utils/validation/validateTime';
7
7
  import { useUtils } from '../internals/hooks/useUtils';
8
8
  const useDefaultizedTimeField = props => {
9
9
  var _props$ampm, _props$disablePast, _props$disableFuture, _props$format;
@@ -26,6 +26,7 @@ export const useTimeField = ({
26
26
  defaultValue,
27
27
  format,
28
28
  formatDensity,
29
+ shouldRespectLeadingZeros,
29
30
  onChange,
30
31
  readOnly,
31
32
  onError,
@@ -51,6 +52,7 @@ export const useTimeField = ({
51
52
  defaultValue,
52
53
  format,
53
54
  formatDensity,
55
+ shouldRespectLeadingZeros,
54
56
  onChange,
55
57
  readOnly,
56
58
  onError,
@@ -207,7 +207,7 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes = {
207
207
  * Used when the component view is not controlled.
208
208
  * Must be a valid option from `views` list.
209
209
  */
210
- openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),
210
+ openTo: PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']),
211
211
  /**
212
212
  * Force rendering in particular orientation.
213
213
  */
@@ -236,11 +236,17 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes = {
236
236
  shouldDisableClock: PropTypes.func,
237
237
  /**
238
238
  * Disable specific time.
239
+ * @template TDate
239
240
  * @param {TDate} value The value to check.
240
241
  * @param {TimeView} view The clock type of the timeValue.
241
242
  * @returns {boolean} If `true` the time will be disabled.
242
243
  */
243
244
  shouldDisableTime: PropTypes.func,
245
+ /**
246
+ * If `true`, disabled digital clock items will not be rendered.
247
+ * @default false
248
+ */
249
+ skipDisabled: PropTypes.bool,
244
250
  /**
245
251
  * The props used for each component slot.
246
252
  * @default {}
@@ -255,6 +261,22 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes = {
255
261
  * The system prop that allows defining system overrides as well as additional CSS styles.
256
262
  */
257
263
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
264
+ /**
265
+ * Amount of time options below or at which the single column time renderer is used.
266
+ * @default 24
267
+ */
268
+ thresholdToRenderTimeInASingleColumn: PropTypes.number,
269
+ /**
270
+ * The time steps between two time unit options.
271
+ * For example, if `timeStep.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.
272
+ * When single column time renderer is used, only `timeStep.minutes` will be used.
273
+ * @default{ hours: 1, minutes: 5, seconds: 5 }
274
+ */
275
+ timeSteps: PropTypes.shape({
276
+ hours: PropTypes.number,
277
+ minutes: PropTypes.number,
278
+ seconds: PropTypes.number
279
+ }),
258
280
  /**
259
281
  * The selected value.
260
282
  * Used when the component is controlled.
@@ -265,7 +287,7 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes = {
265
287
  * Used when the component view is controlled.
266
288
  * Must be a valid option from `views` list.
267
289
  */
268
- view: PropTypes.oneOf(['hours', 'minutes', 'seconds']),
290
+ view: PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']),
269
291
  /**
270
292
  * Define custom view renderers for each section.
271
293
  * If `null`, the section will only have field editing.
@@ -273,6 +295,7 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes = {
273
295
  */
274
296
  viewRenderers: PropTypes.shape({
275
297
  hours: PropTypes.func,
298
+ meridiem: PropTypes.func,
276
299
  minutes: PropTypes.func,
277
300
  seconds: PropTypes.func
278
301
  }),
@@ -1,11 +1,12 @@
1
1
  import { DesktopTimePickerProps, DesktopTimePickerSlotsComponent, DesktopTimePickerSlotsComponentsProps } from '../DesktopTimePicker';
2
+ import { TimeViewWithMeridiem } from '../internals/models';
2
3
  import { UncapitalizeObjectKeys } from '../internals/utils/slots-migration';
3
4
  import { MobileTimePickerProps, MobileTimePickerSlotsComponent, MobileTimePickerSlotsComponentsProps } from '../MobileTimePicker';
4
- export interface TimePickerSlotsComponents<TDate> extends DesktopTimePickerSlotsComponent<TDate>, MobileTimePickerSlotsComponent<TDate> {
5
+ export interface TimePickerSlotsComponents<TDate> extends DesktopTimePickerSlotsComponent<TDate>, MobileTimePickerSlotsComponent<TDate, TimeViewWithMeridiem> {
5
6
  }
6
- export interface TimePickerSlotsComponentsProps<TDate> extends DesktopTimePickerSlotsComponentsProps<TDate>, MobileTimePickerSlotsComponentsProps<TDate> {
7
+ export interface TimePickerSlotsComponentsProps<TDate> extends DesktopTimePickerSlotsComponentsProps<TDate>, MobileTimePickerSlotsComponentsProps<TDate, TimeViewWithMeridiem> {
7
8
  }
8
- export interface TimePickerProps<TDate> extends DesktopTimePickerProps<TDate>, MobileTimePickerProps<TDate> {
9
+ export interface TimePickerProps<TDate> extends DesktopTimePickerProps<TDate>, Omit<MobileTimePickerProps<TDate, TimeViewWithMeridiem>, 'views'> {
9
10
  /**
10
11
  * CSS media query when `Mobile` mode will be changed to `Desktop`.
11
12
  * @default '@media (pointer: fine)'
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar';
3
3
  import { TimePickerToolbarClasses } from './timePickerToolbarClasses';
4
- import { TimeView } from '../models';
5
- export interface TimePickerToolbarProps<TDate> extends BaseToolbarProps<TDate | null, TimeView> {
4
+ import { TimeViewWithMeridiem } from '../internals/models';
5
+ export interface TimePickerToolbarProps<TDate> extends BaseToolbarProps<TDate | null, TimeViewWithMeridiem> {
6
6
  ampm?: boolean;
7
7
  ampmInClock?: boolean;
8
8
  classes?: Partial<TimePickerToolbarClasses>;
@@ -240,7 +240,7 @@ process.env.NODE_ENV !== "production" ? TimePickerToolbar.propTypes = {
240
240
  /**
241
241
  * Currently visible picker view.
242
242
  */
243
- view: PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired,
244
- views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
243
+ view: PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']).isRequired,
244
+ views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']).isRequired).isRequired
245
245
  } : void 0;
246
246
  export { TimePickerToolbar };
@@ -1,14 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import { DefaultizedProps } from '../internals/models/helpers';
3
- import { TimeClockSlotsComponent, TimeClockSlotsComponentsProps, ExportedTimeClockProps } from '../TimeClock/TimeClock.types';
3
+ import { TimeClockSlotsComponent, TimeClockSlotsComponentsProps } from '../TimeClock/TimeClock.types';
4
4
  import { BasePickerInputProps } from '../internals/models/props/basePickerProps';
5
- import { BaseTimeValidationProps } from '../internals/hooks/validation/models';
5
+ import { BaseTimeValidationProps } from '../internals/models/validation';
6
6
  import { LocalizedComponent } from '../locales/utils/pickersLocaleTextApi';
7
7
  import { TimePickerToolbarProps, ExportedTimePickerToolbarProps } from './TimePickerToolbar';
8
- import { TimeValidationError, TimeView } from '../models';
8
+ import { TimeValidationError } from '../models';
9
9
  import { PickerViewRendererLookup } from '../internals/hooks/usePicker/usePickerViews';
10
10
  import { TimeViewRendererProps } from '../timeViewRenderers';
11
11
  import { UncapitalizeObjectKeys } from '../internals/utils/slots-migration';
12
+ import { BaseClockProps, ExportedBaseClockProps } from '../internals/models/props/clock';
13
+ import { TimeViewWithMeridiem } from '../internals/models';
12
14
  export interface BaseTimePickerSlotsComponent<TDate> extends TimeClockSlotsComponent {
13
15
  /**
14
16
  * Custom component for the toolbar rendered above the views.
@@ -19,7 +21,7 @@ export interface BaseTimePickerSlotsComponent<TDate> extends TimeClockSlotsCompo
19
21
  export interface BaseTimePickerSlotsComponentsProps extends TimeClockSlotsComponentsProps {
20
22
  toolbar?: ExportedTimePickerToolbarProps;
21
23
  }
22
- export interface BaseTimePickerProps<TDate> extends BasePickerInputProps<TDate | null, TDate, TimeView, TimeValidationError>, ExportedTimeClockProps<TDate> {
24
+ export interface BaseTimePickerProps<TDate, TView extends TimeViewWithMeridiem> extends BasePickerInputProps<TDate | null, TDate, TView, TimeValidationError>, ExportedBaseClockProps<TDate> {
23
25
  /**
24
26
  * Display ampm controls under the clock (instead of in the toolbar).
25
27
  * @default true on desktop, false on mobile
@@ -52,8 +54,8 @@ export interface BaseTimePickerProps<TDate> extends BasePickerInputProps<TDate |
52
54
  * If `null`, the section will only have field editing.
53
55
  * If `undefined`, internally defined view will be the used.
54
56
  */
55
- viewRenderers?: Partial<PickerViewRendererLookup<TDate | null, TimeView, TimeViewRendererProps<TDate, TimeView>, {}>>;
57
+ viewRenderers?: Partial<PickerViewRendererLookup<TDate | null, TView, TimeViewRendererProps<TView, BaseClockProps<TDate, TView>>, {}>>;
56
58
  }
57
- type UseTimePickerDefaultizedProps<TDate, Props extends BaseTimePickerProps<TDate>> = LocalizedComponent<TDate, Omit<DefaultizedProps<Props, 'views' | 'openTo' | keyof BaseTimeValidationProps>, 'components' | 'componentsProps'>>;
58
- export declare function useTimePickerDefaultizedProps<TDate, Props extends BaseTimePickerProps<TDate>>(props: Props, name: string): UseTimePickerDefaultizedProps<TDate, Props>;
59
+ type UseTimePickerDefaultizedProps<TDate, TView extends TimeViewWithMeridiem, Props extends BaseTimePickerProps<TDate, TView>> = LocalizedComponent<TDate, Omit<DefaultizedProps<Props, 'views' | 'openTo' | keyof BaseTimeValidationProps>, 'components' | 'componentsProps'>>;
60
+ export declare function useTimePickerDefaultizedProps<TDate, TView extends TimeViewWithMeridiem, Props extends BaseTimePickerProps<TDate, TView>>(props: Props, name: string): UseTimePickerDefaultizedProps<TDate, TView, Props>;
59
61
  export {};
@@ -1,7 +1,7 @@
1
1
  import { SxProps } from '@mui/system';
2
2
  import { Theme } from '@mui/material/styles';
3
3
  import { YearCalendarClasses } from './yearCalendarClasses';
4
- import { BaseDateValidationProps, YearValidationProps } from '../internals/hooks/validation/models';
4
+ import { BaseDateValidationProps, YearValidationProps } from '../internals/models/validation';
5
5
  export interface ExportedYearCalendarProps {
6
6
  /**
7
7
  * Years rendered per row.
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { DateCalendarProps } from '../DateCalendar';
3
- import { DateOrTimeView } from '../models';
4
- export interface DateViewRendererProps<TDate, TView extends DateOrTimeView> extends Omit<DateCalendarProps<TDate>, 'views' | 'openTo' | 'view' | 'onViewChange' | 'focusedView'> {
3
+ import { DateOrTimeViewWithMeridiem } from '../internals/models';
4
+ export interface DateViewRendererProps<TDate, TView extends DateOrTimeViewWithMeridiem> extends Omit<DateCalendarProps<TDate>, 'views' | 'openTo' | 'view' | 'onViewChange' | 'focusedView'> {
5
5
  view: TView;
6
6
  onViewChange?: (view: TView) => void;
7
7
  views: readonly TView[];
package/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './TimeClock';
2
+ export * from './DigitalClock';
3
+ export * from './MultiSectionDigitalClock';
2
4
  export * from './LocalizationProvider';
3
5
  export * from './PickersDay';
4
6
  export * from './locales';
package/index.js CHANGED
@@ -1,11 +1,14 @@
1
1
  /**
2
- * @mui/x-date-pickers v6.2.0
2
+ * @mui/x-date-pickers v6.3.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
+ // Clocks
8
9
  export * from './TimeClock';
10
+ export * from './DigitalClock';
11
+ export * from './MultiSectionDigitalClock';
9
12
  export * from './LocalizationProvider';
10
13
  export * from './PickersDay';
11
14
  export * from './locales';
@@ -1,14 +1,14 @@
1
1
  import * as React from 'react';
2
2
  import { BaseToolbarProps } from '../models/props/toolbar';
3
3
  import { PickersToolbarClasses } from './pickersToolbarClasses';
4
- import { DateOrTimeView } from '../../models';
5
- export interface PickersToolbarProps<TValue, TView extends DateOrTimeView> extends Pick<BaseToolbarProps<TValue, TView>, 'isLandscape' | 'hidden' | 'titleId'> {
4
+ import { DateOrTimeViewWithMeridiem } from '../models';
5
+ export interface PickersToolbarProps<TValue, TView extends DateOrTimeViewWithMeridiem> extends Pick<BaseToolbarProps<TValue, TView>, 'isLandscape' | 'hidden' | 'titleId'> {
6
6
  className?: string;
7
7
  landscapeDirection?: 'row' | 'column';
8
8
  toolbarTitle: React.ReactNode;
9
9
  classes?: Partial<PickersToolbarClasses>;
10
10
  }
11
- type PickersToolbarComponent = (<TValue, TView extends DateOrTimeView>(props: React.PropsWithChildren<PickersToolbarProps<TValue, TView>> & React.RefAttributes<HTMLDivElement>) => JSX.Element) & {
11
+ type PickersToolbarComponent = (<TValue, TView extends DateOrTimeViewWithMeridiem>(props: React.PropsWithChildren<PickersToolbarProps<TValue, TView>> & React.RefAttributes<HTMLDivElement>) => JSX.Element) & {
12
12
  propTypes?: any;
13
13
  };
14
14
  export declare const PickersToolbar: PickersToolbarComponent;
@@ -2,3 +2,4 @@ export declare const DAY_SIZE = 36;
2
2
  export declare const DAY_MARGIN = 2;
3
3
  export declare const DIALOG_WIDTH = 320;
4
4
  export declare const VIEW_HEIGHT = 358;
5
+ export declare const DIGITAL_CLOCK_VIEW_HEIGHT = 232;
@@ -1,4 +1,5 @@
1
1
  export const DAY_SIZE = 36;
2
2
  export const DAY_MARGIN = 2;
3
3
  export const DIALOG_WIDTH = 320;
4
- export const VIEW_HEIGHT = 358;
4
+ export const VIEW_HEIGHT = 358;
5
+ export const DIGITAL_CLOCK_VIEW_HEIGHT = 232;
@@ -9,6 +9,9 @@ const getChildTypeFromChildName = childName => {
9
9
  if (childName.match(/^([A-Za-z]+)Range(Calendar|Clock)$/)) {
10
10
  return 'multi-panel-UI-view';
11
11
  }
12
+ if (childName.match(/^([A-Za-z]*)(DigitalClock)$/)) {
13
+ return 'Tall-UI-view';
14
+ }
12
15
  if (childName.match(/^Static([A-Za-z]+)/) || childName.match(/^([A-Za-z]+)(Calendar|Clock)$/)) {
13
16
  return 'UI-view';
14
17
  }
@@ -73,7 +76,7 @@ export function DemoContainer(props) {
73
76
  });
74
77
  const getSpacing = direction => {
75
78
  if (direction === 'row') {
76
- return childrenTypes.has('UI-view') ? 3 : 2;
79
+ return childrenTypes.has('UI-view') || childrenTypes.has('Tall-UI-view') ? 3 : 2;
77
80
  }
78
81
  return childrenTypes.has('UI-view') ? 4 : 3;
79
82
  };
@@ -1,4 +1,5 @@
1
1
  import { PickerOnChangeFn } from './useViews';
2
+ import { PickerSelectionState } from './usePicker';
2
3
  interface MonthValidationOptions<TDate> {
3
4
  disablePast?: boolean;
4
5
  disableFuture?: boolean;
@@ -7,8 +8,8 @@ interface MonthValidationOptions<TDate> {
7
8
  }
8
9
  export declare function useNextMonthDisabled<TDate>(month: TDate, { disableFuture, maxDate }: Pick<MonthValidationOptions<TDate>, 'disableFuture' | 'maxDate'>): boolean;
9
10
  export declare function usePreviousMonthDisabled<TDate>(month: TDate, { disablePast, minDate }: Pick<MonthValidationOptions<TDate>, 'disablePast' | 'minDate'>): boolean;
10
- export declare function useMeridiemMode<TDate>(date: TDate | null, ampm: boolean | undefined, onChange: PickerOnChangeFn<TDate>): {
11
- meridiemMode: "am" | "pm" | null;
11
+ export declare function useMeridiemMode<TDate>(date: TDate | null, ampm: boolean | undefined, onChange: PickerOnChangeFn<TDate>, selectionState?: PickerSelectionState): {
12
+ meridiemMode: import("../utils/time-utils").Meridiem | null;
12
13
  handleMeridiemChange: (mode: 'am' | 'pm') => void;
13
14
  };
14
15
  export {};
@@ -23,13 +23,13 @@ export function usePreviousMonthDisabled(month, {
23
23
  return !utils.isBefore(firstEnabledMonth, month);
24
24
  }, [disablePast, minDate, month, utils]);
25
25
  }
26
- export function useMeridiemMode(date, ampm, onChange) {
26
+ export function useMeridiemMode(date, ampm, onChange, selectionState) {
27
27
  const utils = useUtils();
28
28
  const meridiemMode = getMeridiem(date, utils);
29
29
  const handleMeridiemChange = React.useCallback(mode => {
30
30
  const timeWithMeridiem = date == null ? null : convertToMeridiem(date, mode, Boolean(ampm), utils);
31
- onChange(timeWithMeridiem, 'partial');
32
- }, [ampm, date, onChange, utils]);
31
+ onChange(timeWithMeridiem, selectionState != null ? selectionState : 'partial');
32
+ }, [ampm, date, onChange, selectionState, utils]);
33
33
  return {
34
34
  meridiemMode,
35
35
  handleMeridiemChange
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import { UseDesktopPickerParams, UseDesktopPickerProps } from './useDesktopPicker.types';
3
- import { DateOrTimeView } from '../../../models';
3
+ import { DateOrTimeViewWithMeridiem } from '../../models';
4
4
  /**
5
5
  * Hook managing all the single-date desktop pickers:
6
6
  * - DesktopDatePicker
7
7
  * - DesktopDateTimePicker
8
8
  * - DesktopTimePicker
9
9
  */
10
- export declare const useDesktopPicker: <TDate, TView extends DateOrTimeView, TExternalProps extends UseDesktopPickerProps<TDate, TView, any, TExternalProps>>({ props, valueManager, getOpenDialogAriaText, validator, }: UseDesktopPickerParams<TDate, TView, TExternalProps>) => {
10
+ export declare const useDesktopPicker: <TDate, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseDesktopPickerProps<TDate, TView, any, TExternalProps>>({ props, getOpenDialogAriaText, ...pickerParams }: UseDesktopPickerParams<TDate, TView, TExternalProps>) => {
11
11
  renderPicker: () => JSX.Element;
12
12
  };
@@ -1,7 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["ownerState"],
4
- _excluded2 = ["ownerState"];
3
+ const _excluded = ["props", "getOpenDialogAriaText"],
4
+ _excluded2 = ["ownerState"],
5
+ _excluded3 = ["ownerState"];
5
6
  import * as React from 'react';
6
7
  import { useSlotProps } from '@mui/base/utils';
7
8
  import MuiInputAdornment from '@mui/material/InputAdornment';
@@ -21,13 +22,13 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
21
22
  * - DesktopDateTimePicker
22
23
  * - DesktopTimePicker
23
24
  */
24
- export const useDesktopPicker = ({
25
- props,
26
- valueManager,
27
- getOpenDialogAriaText,
28
- validator
29
- }) => {
25
+ export const useDesktopPicker = _ref => {
30
26
  var _innerSlotProps$toolb, _innerSlotProps$toolb2, _slots$inputAdornment, _slots$openPickerButt, _slots$layout;
27
+ let {
28
+ props,
29
+ getOpenDialogAriaText
30
+ } = _ref,
31
+ pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
31
32
  const {
32
33
  slots,
33
34
  slotProps: innerSlotProps,
@@ -55,15 +56,13 @@ export const useDesktopPicker = ({
55
56
  renderCurrentView,
56
57
  shouldRestoreFocus,
57
58
  fieldProps: pickerFieldProps
58
- } = usePicker({
59
+ } = usePicker(_extends({}, pickerParams, {
59
60
  props,
60
61
  inputRef: internalInputRef,
61
- valueManager,
62
- validator,
63
62
  autoFocusView: true,
64
63
  additionalViewProps: {},
65
64
  wrapperVariant: 'desktop'
66
- });
65
+ }));
67
66
  const InputAdornment = (_slots$inputAdornment = slots.inputAdornment) != null ? _slots$inputAdornment : MuiInputAdornment;
68
67
  const _useSlotProps = useSlotProps({
69
68
  elementType: InputAdornment,
@@ -73,7 +72,7 @@ export const useDesktopPicker = ({
73
72
  },
74
73
  ownerState: props
75
74
  }),
76
- inputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded);
75
+ inputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
77
76
  const OpenPickerButton = (_slots$openPickerButt = slots.openPickerButton) != null ? _slots$openPickerButt : IconButton;
78
77
  const _useSlotProps2 = useSlotProps({
79
78
  elementType: OpenPickerButton,
@@ -86,7 +85,7 @@ export const useDesktopPicker = ({
86
85
  },
87
86
  ownerState: props
88
87
  }),
89
- openPickerButtonProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded2);
88
+ openPickerButtonProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);
90
89
  const OpenPickerIcon = slots.openPickerIcon;
91
90
  const Field = slots.field;
92
91
  const fieldProps = useSlotProps({
@@ -102,7 +101,8 @@ export const useDesktopPicker = ({
102
101
  format,
103
102
  formatDensity,
104
103
  label,
105
- autoFocus: autoFocus && !props.open
104
+ autoFocus: autoFocus && !props.open,
105
+ focused: open ? true : undefined
106
106
  }),
107
107
  ownerState: props
108
108
  });
@@ -6,12 +6,13 @@ import { SlotComponentProps } from '@mui/base/utils';
6
6
  import { BaseNonStaticPickerProps, BasePickerProps, BaseNonRangeNonStaticPickerProps } from '../../models/props/basePickerProps';
7
7
  import { PickersPopperSlotsComponent, PickersPopperSlotsComponentsProps } from '../../components/PickersPopper';
8
8
  import { UsePickerParams, UsePickerProps } from '../usePicker';
9
- import { BaseSingleInputFieldProps, FieldSection, DateOrTimeView, MuiPickersAdapter } from '../../../models';
9
+ import { BaseSingleInputFieldProps, FieldSection, MuiPickersAdapter } from '../../../models';
10
10
  import { ExportedPickersLayoutSlotsComponent, ExportedPickersLayoutSlotsComponentsProps, PickersLayoutSlotsComponentsProps } from '../../../PickersLayout/PickersLayout.types';
11
11
  import { UsePickerValueNonStaticProps } from '../usePicker/usePickerValue.types';
12
12
  import { UsePickerViewsNonStaticProps, UsePickerViewsProps } from '../usePicker/usePickerViews';
13
13
  import { UncapitalizeObjectKeys } from '../../utils/slots-migration';
14
- export interface UseDesktopPickerSlotsComponent<TDate, TView extends DateOrTimeView> extends Pick<PickersPopperSlotsComponent, 'DesktopPaper' | 'DesktopTransition' | 'DesktopTrapFocus' | 'Popper'>, ExportedPickersLayoutSlotsComponent<TDate | null, TDate, TView> {
14
+ import { DateOrTimeViewWithMeridiem } from '../../models';
15
+ export interface UseDesktopPickerSlotsComponent<TDate, TView extends DateOrTimeViewWithMeridiem> extends Pick<PickersPopperSlotsComponent, 'DesktopPaper' | 'DesktopTransition' | 'DesktopTrapFocus' | 'Popper'>, ExportedPickersLayoutSlotsComponent<TDate | null, TDate, TView> {
15
16
  /**
16
17
  * Component used to enter the date with the keyboard.
17
18
  */
@@ -37,9 +38,9 @@ export interface UseDesktopPickerSlotsComponent<TDate, TView extends DateOrTimeV
37
38
  */
38
39
  OpenPickerIcon: React.ElementType;
39
40
  }
40
- export interface UseDesktopPickerSlotsComponentsProps<TDate, TView extends DateOrTimeView> extends ExportedUseDesktopPickerSlotsComponentsProps<TDate, TView>, Pick<PickersLayoutSlotsComponentsProps<TDate | null, TDate, TView>, 'toolbar'> {
41
+ export interface UseDesktopPickerSlotsComponentsProps<TDate, TView extends DateOrTimeViewWithMeridiem> extends ExportedUseDesktopPickerSlotsComponentsProps<TDate, TView>, Pick<PickersLayoutSlotsComponentsProps<TDate | null, TDate, TView>, 'toolbar'> {
41
42
  }
42
- export interface ExportedUseDesktopPickerSlotsComponentsProps<TDate, TView extends DateOrTimeView> extends PickersPopperSlotsComponentsProps, ExportedPickersLayoutSlotsComponentsProps<TDate | null, TDate, TView> {
43
+ export interface ExportedUseDesktopPickerSlotsComponentsProps<TDate, TView extends DateOrTimeViewWithMeridiem> extends PickersPopperSlotsComponentsProps, ExportedPickersLayoutSlotsComponentsProps<TDate | null, TDate, TView> {
43
44
  field?: SlotComponentProps<React.ElementType<BaseSingleInputFieldProps<TDate | null, FieldSection, unknown>>, {}, UsePickerProps<TDate | null, any, FieldSection, any, any, any>>;
44
45
  textField?: SlotComponentProps<typeof TextField, {}, Record<string, any>>;
45
46
  inputAdornment?: Partial<InputAdornmentProps>;
@@ -52,7 +53,7 @@ export interface DesktopOnlyPickerProps<TDate> extends BaseNonStaticPickerProps,
52
53
  */
53
54
  autoFocus?: boolean;
54
55
  }
55
- export interface UseDesktopPickerProps<TDate, TView extends DateOrTimeView, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>> extends BasePickerProps<TDate | null, TDate, TView, TError, TExternalProps, {}>, DesktopOnlyPickerProps<TDate> {
56
+ export interface UseDesktopPickerProps<TDate, TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>> extends BasePickerProps<TDate | null, TDate, TView, TError, TExternalProps, {}>, DesktopOnlyPickerProps<TDate> {
56
57
  /**
57
58
  * Overridable component slots.
58
59
  * @default {}
@@ -64,7 +65,7 @@ export interface UseDesktopPickerProps<TDate, TView extends DateOrTimeView, TErr
64
65
  */
65
66
  slotProps?: UseDesktopPickerSlotsComponentsProps<TDate, TView>;
66
67
  }
67
- export interface UseDesktopPickerParams<TDate, TView extends DateOrTimeView, TExternalProps extends UseDesktopPickerProps<TDate, TView, any, TExternalProps>> extends Pick<UsePickerParams<TDate | null, TDate, TView, FieldSection, TExternalProps, {}>, 'valueManager' | 'validator'> {
68
+ export interface UseDesktopPickerParams<TDate, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseDesktopPickerProps<TDate, TView, any, TExternalProps>> extends Pick<UsePickerParams<TDate | null, TDate, TView, FieldSection, TExternalProps, {}>, 'valueManager' | 'valueType' | 'validator'> {
68
69
  props: TExternalProps;
69
70
  getOpenDialogAriaText: (date: TDate | null, utils: MuiPickersAdapter<TDate>) => string;
70
71
  }
@@ -6,7 +6,7 @@ import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
6
6
  import useEventCallback from '@mui/utils/useEventCallback';
7
7
  import useForkRef from '@mui/utils/useForkRef';
8
8
  import { useTheme } from '@mui/material/styles';
9
- import { useValidation } from '../validation/useValidation';
9
+ import { useValidation } from '../useValidation';
10
10
  import { useUtils } from '../useUtils';
11
11
  import { adjustSectionValue, isAndroid, cleanString, getSectionOrder } from './useField.utils';
12
12
  import { useFieldState } from './useFieldState';
@@ -26,15 +26,6 @@ export const useField = params => {
26
26
  sectionsValueBoundaries,
27
27
  placeholder
28
28
  } = useFieldState(params);
29
- const {
30
- applyCharacterEditing,
31
- resetCharacterQuery
32
- } = useFieldCharacterEditing({
33
- sections: state.sections,
34
- updateSectionValue,
35
- sectionsValueBoundaries,
36
- setTempAndroidValueStr
37
- });
38
29
  const {
39
30
  inputRef: inputRefProp,
40
31
  internalProps,
@@ -56,6 +47,15 @@ export const useField = params => {
56
47
  validator
57
48
  } = params,
58
49
  otherForwardedProps = _objectWithoutPropertiesLoose(params.forwardedProps, _excluded);
50
+ const {
51
+ applyCharacterEditing,
52
+ resetCharacterQuery
53
+ } = useFieldCharacterEditing({
54
+ sections: state.sections,
55
+ updateSectionValue,
56
+ sectionsValueBoundaries,
57
+ setTempAndroidValueStr
58
+ });
59
59
  const inputRef = React.useRef(null);
60
60
  const handleRef = useForkRef(inputRefProp, inputRef);
61
61
  const focusTimeoutRef = React.useRef(undefined);
@@ -121,7 +121,8 @@ export const useField = params => {
121
121
  const activeSection = state.sections[selectedSectionIndexes.startIndex];
122
122
  const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);
123
123
  const digitsOnly = /^[0-9]+$/.test(pastedValue);
124
- const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly;
124
+ const digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);
125
+ const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;
125
126
  if (isValidPastedValue) {
126
127
  // Early return to let the paste update section, value
127
128
  return;
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
- import { FieldSectionType, FieldSection, FieldSelectedSections, MuiPickersAdapter } from '../../../models';
2
+ import { FieldSectionType, FieldSection, FieldSelectedSections, MuiPickersAdapter, FieldSectionContentType, FieldValueType } from '../../../models';
3
3
  import type { PickerValueManager } from '../usePicker';
4
- import { InferError, Validator } from '../validation/useValidation';
4
+ import { InferError, Validator } from '../useValidation';
5
5
  export interface UseFieldParams<TValue, TDate, TSection extends FieldSection, TForwardedProps extends UseFieldForwardedProps, TInternalProps extends UseFieldInternalProps<any, any, any>> {
6
6
  inputRef?: React.Ref<HTMLInputElement>;
7
7
  forwardedProps: TForwardedProps;
@@ -47,6 +47,21 @@ export interface UseFieldInternalProps<TValue, TSection extends FieldSection, TE
47
47
  * @default "dense"
48
48
  */
49
49
  formatDensity?: 'dense' | 'spacious';
50
+ /**
51
+ * If `true`, the format will respect the leading zeroes (e.g: on dayjs, the format `M/D/YYYY` will render `8/16/2018`)
52
+ * If `false`, the format will always add leading zeroes (e.g: on dayjs, the format `M/D/YYYY` will render `08/16/2018`)
53
+ *
54
+ * Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (e.g: "DD"), so `shouldRespectLeadingZeros={true}` might lead to inconsistencies when using `AdapterLuxon`.
55
+ *
56
+ * Warning n°2: When `shouldRespectLeadingZeros={true}`, the field will add an invisible character on the sections containing a single digit to make sure `onChange` is fired.
57
+ * If you need to get the clean value from the input, you can remove this character using `input.value.replace(/\u200e/g, '')`.
58
+ *
59
+ * Warning n°3: When used in strict mode, dayjs and moment require to respect the leading zeros.
60
+ * This mean that when using `shouldRespectLeadingZeros={false}`, if you retrieve the value directly from the input (not listening to `onChange`) and your format contains tokens without leading zeros, the value will not be parsed by your library.
61
+ *
62
+ * @default `false`
63
+ */
64
+ shouldRespectLeadingZeros?: boolean;
50
65
  /**
51
66
  * It prevents the user from changing the value of the field
52
67
  * (not from interacting with the field).
@@ -119,7 +134,7 @@ export type FieldSectionsValueBoundaries<TDate> = {
119
134
  [SectionType in FieldSectionType]: (params: {
120
135
  currentDate: TDate | null;
121
136
  format: string;
122
- contentType: 'digit' | 'letter';
137
+ contentType: FieldSectionContentType;
123
138
  }) => FieldSectionValueBoundaries<TDate, SectionType>;
124
139
  };
125
140
  export type FieldChangeHandler<TValue, TError> = (value: TValue, context: FieldChangeHandlerContext<TError>) => void;
@@ -180,7 +195,7 @@ export interface FieldValueManager<TValue, TDate, TSection extends FieldSection>
180
195
  * Creates the string value to render in the input based on the current section list.
181
196
  * @template TSection
182
197
  * @param {TSection[]} sections The current section list.
183
- * @param {boolean} isRTL `true` is the current orientation is "right to left"
198
+ * @param {boolean} isRTL `true` if the current orientation is "right to left"
184
199
  * @returns {string} The string value to render in the input.
185
200
  */
186
201
  getValueStrFromSections: (sections: TSection[], isRTL: boolean) => string;
@@ -249,7 +264,6 @@ export type UseFieldValidationProps<TValue, TInternalProps extends {
249
264
  value: TValue;
250
265
  };
251
266
  export type AvailableAdjustKeyCode = 'ArrowUp' | 'ArrowDown' | 'PageUp' | 'PageDown' | 'Home' | 'End';
252
- export type FieldValueType = 'date' | 'time' | 'date-time';
253
267
  export type SectionNeighbors = {
254
268
  [sectionIndex: number]: {
255
269
  /**