@mui/x-date-pickers 8.0.0-alpha.1 → 8.0.0-alpha.11

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 (580) hide show
  1. package/AdapterDateFns/AdapterDateFns.d.ts +2 -4
  2. package/AdapterDateFns/AdapterDateFns.js +49 -47
  3. package/AdapterDateFnsBase/AdapterDateFnsBase.d.ts +1 -1
  4. package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +2 -4
  5. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
  6. package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.d.ts → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.d.ts} +2 -2
  7. package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
  8. package/AdapterDateFnsJalaliV2/index.d.ts +1 -0
  9. package/AdapterDateFnsJalaliV2/index.js +1 -0
  10. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
  11. package/{AdapterDateFnsV3/AdapterDateFnsV3.d.ts → AdapterDateFnsV2/AdapterDateFnsV2.d.ts} +2 -2
  12. package/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
  13. package/AdapterDateFnsV2/index.d.ts +1 -0
  14. package/AdapterDateFnsV2/index.js +1 -0
  15. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
  16. package/AdapterDayjs/AdapterDayjs.d.ts +1 -1
  17. package/AdapterLuxon/AdapterLuxon.d.ts +1 -1
  18. package/AdapterMoment/AdapterMoment.d.ts +1 -1
  19. package/AdapterMoment/AdapterMoment.js +10 -0
  20. package/CHANGELOG.md +2007 -230
  21. package/DateCalendar/DateCalendar.js +41 -22
  22. package/DateCalendar/DateCalendar.types.d.ts +2 -1
  23. package/DateCalendar/DayCalendar.d.ts +1 -2
  24. package/DateCalendar/DayCalendar.js +12 -36
  25. package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
  26. package/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  27. package/DateCalendar/PickersSlideTransition.d.ts +1 -1
  28. package/DateCalendar/PickersSlideTransition.js +12 -5
  29. package/DateCalendar/useCalendarState.d.ts +13 -27
  30. package/DateCalendar/useCalendarState.js +65 -55
  31. package/DateField/DateField.js +29 -33
  32. package/DateField/DateField.types.d.ts +7 -15
  33. package/DateField/useDateField.d.ts +1 -1
  34. package/DateField/useDateField.js +14 -11
  35. package/DatePicker/DatePicker.js +1 -1
  36. package/DatePicker/DatePicker.types.d.ts +7 -3
  37. package/DatePicker/DatePickerToolbar.d.ts +1 -2
  38. package/DatePicker/DatePickerToolbar.js +17 -33
  39. package/DatePicker/shared.d.ts +6 -5
  40. package/DateTimeField/DateTimeField.js +29 -33
  41. package/DateTimeField/DateTimeField.types.d.ts +7 -16
  42. package/DateTimeField/useDateTimeField.d.ts +1 -1
  43. package/DateTimeField/useDateTimeField.js +14 -11
  44. package/DateTimePicker/DateTimePicker.js +2 -2
  45. package/DateTimePicker/DateTimePicker.types.d.ts +4 -5
  46. package/DateTimePicker/DateTimePickerTabs.d.ts +2 -5
  47. package/DateTimePicker/DateTimePickerTabs.js +15 -20
  48. package/DateTimePicker/DateTimePickerToolbar.d.ts +16 -5
  49. package/DateTimePicker/DateTimePickerToolbar.js +88 -80
  50. package/DateTimePicker/shared.d.ts +8 -8
  51. package/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  52. package/DesktopDatePicker/DesktopDatePicker.js +11 -17
  53. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +7 -3
  54. package/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
  55. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +2 -2
  56. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +2 -2
  57. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +9 -34
  58. package/DesktopTimePicker/DesktopTimePicker.js +6 -22
  59. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  60. package/DigitalClock/DigitalClock.js +13 -11
  61. package/DigitalClock/DigitalClock.types.d.ts +8 -2
  62. package/MobileDatePicker/MobileDatePicker.js +4 -14
  63. package/MobileDatePicker/MobileDatePicker.types.d.ts +2 -3
  64. package/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
  65. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +4 -4
  66. package/MobileTimePicker/MobileTimePicker.js +4 -14
  67. package/MobileTimePicker/MobileTimePicker.types.d.ts +4 -4
  68. package/MonthCalendar/MonthCalendar.d.ts +1 -1
  69. package/MonthCalendar/MonthCalendar.js +31 -11
  70. package/MonthCalendar/MonthCalendar.types.d.ts +2 -2
  71. package/MonthCalendar/MonthCalendarButton.d.ts +24 -0
  72. package/{modern/MonthCalendar/PickersMonth.js → MonthCalendar/MonthCalendarButton.js} +20 -61
  73. package/MonthCalendar/index.d.ts +0 -3
  74. package/MonthCalendar/index.js +1 -2
  75. package/MonthCalendar/monthCalendarClasses.d.ts +7 -1
  76. package/MonthCalendar/monthCalendarClasses.js +1 -1
  77. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
  78. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +6 -6
  79. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +4 -4
  80. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +14 -10
  81. package/PickersActionBar/PickersActionBar.d.ts +6 -7
  82. package/PickersActionBar/PickersActionBar.js +26 -17
  83. package/PickersCalendarHeader/PickersCalendarHeader.js +12 -9
  84. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +4 -6
  85. package/PickersLayout/PickersLayout.d.ts +7 -5
  86. package/PickersLayout/PickersLayout.js +23 -42
  87. package/PickersLayout/PickersLayout.types.d.ts +20 -22
  88. package/PickersLayout/usePickerLayout.d.ts +5 -4
  89. package/PickersLayout/usePickerLayout.js +26 -53
  90. package/PickersSectionList/PickersSectionList.js +21 -16
  91. package/PickersSectionList/PickersSectionList.types.d.ts +13 -6
  92. package/PickersShortcuts/PickersShortcuts.d.ts +9 -11
  93. package/PickersShortcuts/PickersShortcuts.js +21 -11
  94. package/PickersShortcuts/index.d.ts +1 -1
  95. package/PickersTextField/PickersFilledInput/PickersFilledInput.d.ts +7 -0
  96. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  97. package/PickersTextField/PickersFilledInput/pickersFilledInputClasses.d.ts +1 -1
  98. package/PickersTextField/PickersInput/PickersInput.js +20 -14
  99. package/PickersTextField/PickersInput/pickersInputClasses.d.ts +3 -2
  100. package/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  101. package/PickersTextField/PickersInputBase/PickersInputBase.d.ts +3 -6
  102. package/PickersTextField/PickersInputBase/PickersInputBase.js +45 -38
  103. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +1 -0
  104. package/PickersTextField/PickersOutlinedInput/Outline.d.ts +0 -1
  105. package/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  106. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  107. package/PickersTextField/PickersTextField.js +75 -62
  108. package/PickersTextField/PickersTextField.types.d.ts +43 -4
  109. package/PickersTextField/usePickerTextFieldOwnerState.d.ts +4 -0
  110. package/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  111. package/README.md +8 -5
  112. package/StaticDatePicker/StaticDatePicker.js +2 -2
  113. package/StaticDatePicker/StaticDatePicker.types.d.ts +2 -3
  114. package/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  115. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +2 -2
  116. package/StaticTimePicker/StaticTimePicker.js +2 -2
  117. package/StaticTimePicker/StaticTimePicker.types.d.ts +2 -2
  118. package/TimeClock/Clock.d.ts +4 -0
  119. package/TimeClock/Clock.js +27 -27
  120. package/TimeClock/ClockNumber.js +15 -11
  121. package/TimeClock/ClockPointer.d.ts +6 -1
  122. package/TimeClock/ClockPointer.js +16 -10
  123. package/TimeClock/TimeClock.js +30 -12
  124. package/TimeField/TimeField.js +28 -32
  125. package/TimeField/TimeField.types.d.ts +7 -16
  126. package/TimeField/useTimeField.d.ts +1 -1
  127. package/TimeField/useTimeField.js +14 -11
  128. package/TimePicker/TimePicker.js +2 -2
  129. package/TimePicker/TimePicker.types.d.ts +4 -5
  130. package/TimePicker/TimePickerToolbar.d.ts +1 -3
  131. package/TimePicker/TimePickerToolbar.js +36 -51
  132. package/TimePicker/shared.d.ts +6 -6
  133. package/YearCalendar/YearCalendar.js +46 -13
  134. package/YearCalendar/YearCalendar.types.d.ts +2 -2
  135. package/YearCalendar/YearCalendarButton.d.ts +23 -0
  136. package/{modern/YearCalendar/PickersYear.js → YearCalendar/YearCalendarButton.js} +20 -59
  137. package/YearCalendar/index.d.ts +0 -3
  138. package/YearCalendar/index.js +1 -2
  139. package/YearCalendar/yearCalendarClasses.d.ts +7 -1
  140. package/YearCalendar/yearCalendarClasses.js +1 -1
  141. package/hooks/index.d.ts +2 -0
  142. package/hooks/index.js +3 -1
  143. package/hooks/useClearableField.d.ts +5 -3
  144. package/hooks/useClearableField.js +4 -2
  145. package/hooks/useIsValidValue.d.ts +7 -0
  146. package/hooks/useIsValidValue.js +11 -0
  147. package/hooks/useParsedFormat.d.ts +9 -7
  148. package/hooks/useParsedFormat.js +11 -13
  149. package/hooks/usePickerActionsContext.d.ts +7 -0
  150. package/hooks/usePickerActionsContext.js +15 -0
  151. package/hooks/usePickerContext.d.ts +5 -1
  152. package/hooks/usePickerContext.js +2 -2
  153. package/hooks/useSplitFieldProps.d.ts +12 -3
  154. package/hooks/useSplitFieldProps.js +8 -3
  155. package/index.d.ts +1 -0
  156. package/index.js +3 -2
  157. package/internals/components/PickerFieldUI.d.ts +133 -0
  158. package/internals/components/PickerFieldUI.js +317 -0
  159. package/internals/components/{PickersPopper.d.ts → PickerPopper/PickerPopper.d.ts} +26 -25
  160. package/{modern/internals/components/PickersPopper.js → internals/components/PickerPopper/PickerPopper.js} +47 -47
  161. package/internals/components/PickerPopper/index.d.ts +4 -0
  162. package/internals/components/PickerPopper/index.js +2 -0
  163. package/internals/components/PickerPopper/pickerPopperClasses.d.ts +9 -0
  164. package/internals/components/PickerPopper/pickerPopperClasses.js +6 -0
  165. package/internals/components/PickerProvider.d.ts +86 -32
  166. package/internals/components/PickerProvider.js +25 -7
  167. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
  168. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +11 -8
  169. package/internals/components/PickersModalDialog.d.ts +1 -3
  170. package/internals/components/PickersModalDialog.js +9 -3
  171. package/internals/components/PickersToolbar.d.ts +2 -3
  172. package/internals/components/PickersToolbar.js +15 -12
  173. package/internals/components/PickersToolbarButton.js +4 -6
  174. package/internals/components/PickersToolbarText.js +11 -13
  175. package/internals/hooks/date-helpers-hooks.js +4 -3
  176. package/internals/hooks/useClockReferenceDate.d.ts +2 -1
  177. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
  178. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +35 -120
  179. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +16 -38
  180. package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  181. package/internals/hooks/useField/index.d.ts +2 -0
  182. package/internals/hooks/useField/index.js +2 -1
  183. package/internals/hooks/useField/useField.d.ts +3 -3
  184. package/internals/hooks/useField/useField.js +17 -4
  185. package/internals/hooks/useField/useField.types.d.ts +55 -48
  186. package/internals/hooks/useField/useField.utils.d.ts +4 -3
  187. package/internals/hooks/useField/useField.utils.js +2 -2
  188. package/internals/hooks/useField/useFieldCharacterEditing.d.ts +6 -5
  189. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.d.ts +15 -0
  190. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +47 -0
  191. package/internals/hooks/useField/useFieldState.d.ts +9 -8
  192. package/internals/hooks/useField/useFieldState.js +2 -3
  193. package/internals/hooks/useField/useFieldV6TextField.d.ts +4 -3
  194. package/internals/hooks/useField/useFieldV6TextField.js +5 -2
  195. package/internals/hooks/useField/useFieldV7TextField.js +6 -3
  196. package/internals/hooks/useFieldOwnerState.d.ts +6 -0
  197. package/internals/hooks/useFieldOwnerState.js +16 -0
  198. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
  199. package/internals/hooks/useMobilePicker/useMobilePicker.js +34 -68
  200. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +15 -22
  201. package/internals/hooks/useNullablePickerContext.d.ts +5 -0
  202. package/internals/hooks/useNullablePickerContext.js +10 -0
  203. package/internals/hooks/useOpenState.d.ts +3 -2
  204. package/internals/hooks/useOpenState.js +11 -9
  205. package/internals/hooks/usePicker/index.d.ts +1 -1
  206. package/internals/hooks/usePicker/usePicker.d.ts +3 -4
  207. package/internals/hooks/usePicker/usePicker.js +4 -20
  208. package/internals/hooks/usePicker/usePicker.types.d.ts +10 -10
  209. package/internals/hooks/usePicker/usePickerProvider.d.ts +45 -10
  210. package/internals/hooks/usePicker/usePickerProvider.js +50 -16
  211. package/internals/hooks/usePicker/usePickerValue.d.ts +3 -2
  212. package/internals/hooks/usePicker/usePickerValue.js +84 -214
  213. package/internals/hooks/usePicker/usePickerValue.types.d.ts +130 -75
  214. package/internals/hooks/usePicker/usePickerViews.d.ts +59 -41
  215. package/internals/hooks/usePicker/usePickerViews.js +31 -20
  216. package/internals/hooks/useReduceAnimations.d.ts +2 -0
  217. package/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +5 -2
  218. package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +1 -1
  219. package/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
  220. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +7 -13
  221. package/internals/hooks/useToolbarOwnerState.d.ts +10 -0
  222. package/internals/hooks/useToolbarOwnerState.js +13 -0
  223. package/internals/hooks/useUtils.d.ts +4 -3
  224. package/internals/hooks/useUtils.js +1 -1
  225. package/internals/hooks/useValueWithTimezone.d.ts +5 -4
  226. package/internals/hooks/useViews.d.ts +5 -5
  227. package/internals/index.d.ts +27 -18
  228. package/internals/index.js +13 -8
  229. package/internals/models/common.d.ts +1 -1
  230. package/internals/models/fields.d.ts +8 -24
  231. package/internals/models/index.d.ts +1 -0
  232. package/internals/models/index.js +2 -1
  233. package/internals/models/manager.d.ts +15 -0
  234. package/internals/models/manager.js +1 -0
  235. package/internals/models/pickers.d.ts +1 -0
  236. package/internals/models/pickers.js +1 -0
  237. package/internals/models/props/basePickerProps.d.ts +3 -33
  238. package/internals/models/props/tabs.d.ts +0 -13
  239. package/internals/models/props/time.d.ts +2 -1
  240. package/internals/models/props/toolbar.d.ts +1 -19
  241. package/internals/models/value.d.ts +9 -0
  242. package/internals/utils/date-utils.d.ts +1 -1
  243. package/internals/utils/date-utils.js +1 -1
  244. package/internals/utils/utils.d.ts +3 -0
  245. package/internals/utils/utils.js +11 -1
  246. package/internals/utils/valueManagers.d.ts +4 -3
  247. package/internals/utils/valueManagers.js +4 -4
  248. package/locales/index.d.ts +1 -0
  249. package/locales/index.js +1 -0
  250. package/locales/nbNO.js +15 -19
  251. package/locales/nlNL.js +7 -7
  252. package/locales/roRO.js +15 -18
  253. package/locales/utils/getPickersLocalization.d.ts +0 -7
  254. package/locales/utils/getPickersLocalization.js +0 -13
  255. package/locales/zhTW.d.ts +80 -0
  256. package/locales/zhTW.js +73 -0
  257. package/managers/index.d.ts +6 -0
  258. package/managers/index.js +3 -0
  259. package/managers/package.json +6 -0
  260. package/managers/useDateManager.d.ts +27 -0
  261. package/managers/useDateManager.js +55 -0
  262. package/managers/useDateTimeManager.d.ts +28 -0
  263. package/managers/useDateTimeManager.js +60 -0
  264. package/managers/useTimeManager.d.ts +28 -0
  265. package/managers/useTimeManager.js +51 -0
  266. package/models/adapters.d.ts +5 -5
  267. package/models/fields.d.ts +33 -9
  268. package/models/index.d.ts +1 -0
  269. package/models/index.js +1 -0
  270. package/models/manager.d.ts +87 -0
  271. package/models/manager.js +1 -0
  272. package/models/pickers.d.ts +7 -0
  273. package/models/validation.d.ts +2 -1
  274. package/modern/AdapterDateFns/AdapterDateFns.js +49 -47
  275. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
  276. package/modern/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
  277. package/modern/AdapterDateFnsJalaliV2/index.js +1 -0
  278. package/modern/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
  279. package/modern/AdapterDateFnsV2/index.js +1 -0
  280. package/modern/AdapterMoment/AdapterMoment.js +10 -0
  281. package/modern/DateCalendar/DateCalendar.js +41 -22
  282. package/modern/DateCalendar/DayCalendar.js +12 -36
  283. package/modern/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  284. package/modern/DateCalendar/PickersSlideTransition.js +12 -5
  285. package/modern/DateCalendar/useCalendarState.js +65 -55
  286. package/modern/DateField/DateField.js +29 -33
  287. package/modern/DateField/useDateField.js +14 -11
  288. package/modern/DatePicker/DatePicker.js +1 -1
  289. package/modern/DatePicker/DatePickerToolbar.js +17 -33
  290. package/modern/DateTimeField/DateTimeField.js +29 -33
  291. package/modern/DateTimeField/useDateTimeField.js +14 -11
  292. package/modern/DateTimePicker/DateTimePicker.js +2 -2
  293. package/modern/DateTimePicker/DateTimePickerTabs.js +15 -20
  294. package/modern/DateTimePicker/DateTimePickerToolbar.js +88 -80
  295. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  296. package/modern/DesktopDatePicker/DesktopDatePicker.js +11 -17
  297. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
  298. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +9 -34
  299. package/modern/DesktopTimePicker/DesktopTimePicker.js +6 -22
  300. package/modern/DigitalClock/DigitalClock.js +13 -11
  301. package/modern/MobileDatePicker/MobileDatePicker.js +4 -14
  302. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
  303. package/modern/MobileTimePicker/MobileTimePicker.js +4 -14
  304. package/modern/MonthCalendar/MonthCalendar.js +31 -11
  305. package/{MonthCalendar/PickersMonth.js → modern/MonthCalendar/MonthCalendarButton.js} +20 -61
  306. package/modern/MonthCalendar/index.js +1 -2
  307. package/modern/MonthCalendar/monthCalendarClasses.js +1 -1
  308. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
  309. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +14 -10
  310. package/modern/PickersActionBar/PickersActionBar.js +26 -17
  311. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +12 -9
  312. package/modern/PickersLayout/PickersLayout.js +23 -42
  313. package/modern/PickersLayout/usePickerLayout.js +26 -53
  314. package/modern/PickersSectionList/PickersSectionList.js +21 -16
  315. package/modern/PickersShortcuts/PickersShortcuts.js +21 -11
  316. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  317. package/modern/PickersTextField/PickersInput/PickersInput.js +20 -14
  318. package/modern/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  319. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +45 -38
  320. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  321. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  322. package/modern/PickersTextField/PickersTextField.js +75 -62
  323. package/modern/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  324. package/modern/StaticDatePicker/StaticDatePicker.js +2 -2
  325. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  326. package/modern/StaticTimePicker/StaticTimePicker.js +2 -2
  327. package/modern/TimeClock/Clock.js +27 -27
  328. package/modern/TimeClock/ClockNumber.js +15 -11
  329. package/modern/TimeClock/ClockPointer.js +16 -10
  330. package/modern/TimeClock/TimeClock.js +30 -12
  331. package/modern/TimeField/TimeField.js +28 -32
  332. package/modern/TimeField/useTimeField.js +14 -11
  333. package/modern/TimePicker/TimePicker.js +2 -2
  334. package/modern/TimePicker/TimePickerToolbar.js +36 -51
  335. package/modern/YearCalendar/YearCalendar.js +46 -13
  336. package/{YearCalendar/PickersYear.js → modern/YearCalendar/YearCalendarButton.js} +20 -59
  337. package/modern/YearCalendar/index.js +1 -2
  338. package/modern/YearCalendar/yearCalendarClasses.js +1 -1
  339. package/modern/hooks/index.js +3 -1
  340. package/modern/hooks/useClearableField.js +4 -2
  341. package/modern/hooks/useIsValidValue.js +11 -0
  342. package/modern/hooks/useParsedFormat.js +11 -13
  343. package/modern/hooks/usePickerActionsContext.js +15 -0
  344. package/modern/hooks/usePickerContext.js +2 -2
  345. package/modern/hooks/useSplitFieldProps.js +8 -3
  346. package/modern/index.js +3 -2
  347. package/modern/internals/components/PickerFieldUI.js +317 -0
  348. package/{internals/components/PickersPopper.js → modern/internals/components/PickerPopper/PickerPopper.js} +47 -47
  349. package/modern/internals/components/PickerPopper/index.js +2 -0
  350. package/modern/internals/components/PickerPopper/pickerPopperClasses.js +6 -0
  351. package/modern/internals/components/PickerProvider.js +25 -7
  352. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
  353. package/modern/internals/components/PickersModalDialog.js +9 -3
  354. package/modern/internals/components/PickersToolbar.js +15 -12
  355. package/modern/internals/components/PickersToolbarButton.js +4 -6
  356. package/modern/internals/components/PickersToolbarText.js +11 -13
  357. package/modern/internals/hooks/date-helpers-hooks.js +4 -3
  358. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +35 -120
  359. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  360. package/modern/internals/hooks/useField/index.js +2 -1
  361. package/modern/internals/hooks/useField/useField.js +17 -4
  362. package/modern/internals/hooks/useField/useField.utils.js +2 -2
  363. package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +47 -0
  364. package/modern/internals/hooks/useField/useFieldState.js +2 -3
  365. package/modern/internals/hooks/useField/useFieldV6TextField.js +5 -2
  366. package/modern/internals/hooks/useField/useFieldV7TextField.js +6 -3
  367. package/modern/internals/hooks/useFieldOwnerState.js +16 -0
  368. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +34 -68
  369. package/modern/internals/hooks/useNullablePickerContext.js +10 -0
  370. package/modern/internals/hooks/useOpenState.js +11 -9
  371. package/modern/internals/hooks/usePicker/usePicker.js +4 -20
  372. package/modern/internals/hooks/usePicker/usePickerProvider.js +50 -16
  373. package/modern/internals/hooks/usePicker/usePickerValue.js +84 -214
  374. package/modern/internals/hooks/usePicker/usePickerViews.js +31 -20
  375. package/modern/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +5 -2
  376. package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
  377. package/modern/internals/hooks/useToolbarOwnerState.js +13 -0
  378. package/modern/internals/hooks/useUtils.js +1 -1
  379. package/modern/internals/index.js +13 -8
  380. package/modern/internals/models/index.js +2 -1
  381. package/modern/internals/models/manager.js +1 -0
  382. package/modern/internals/models/pickers.js +1 -0
  383. package/modern/internals/utils/date-utils.js +1 -1
  384. package/modern/internals/utils/utils.js +11 -1
  385. package/modern/internals/utils/valueManagers.js +4 -4
  386. package/modern/locales/index.js +1 -0
  387. package/modern/locales/nbNO.js +15 -19
  388. package/modern/locales/nlNL.js +7 -7
  389. package/modern/locales/roRO.js +15 -18
  390. package/modern/locales/utils/getPickersLocalization.js +0 -13
  391. package/modern/locales/zhTW.js +73 -0
  392. package/modern/managers/index.js +3 -0
  393. package/modern/managers/useDateManager.js +55 -0
  394. package/modern/managers/useDateTimeManager.js +60 -0
  395. package/modern/managers/useTimeManager.js +51 -0
  396. package/modern/models/index.js +1 -0
  397. package/modern/models/manager.js +1 -0
  398. package/modern/validation/useValidation.js +1 -1
  399. package/modern/validation/validateDate.js +8 -0
  400. package/modern/validation/validateDateTime.js +8 -0
  401. package/modern/validation/validateTime.js +8 -0
  402. package/node/AdapterDateFns/AdapterDateFns.js +97 -97
  403. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +97 -96
  404. package/node/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +94 -101
  405. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  406. package/node/AdapterDateFnsV2/AdapterDateFnsV2.js +291 -0
  407. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  408. package/node/AdapterMoment/AdapterMoment.js +10 -0
  409. package/node/DateCalendar/DateCalendar.js +41 -22
  410. package/node/DateCalendar/DayCalendar.js +12 -37
  411. package/node/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  412. package/node/DateCalendar/PickersSlideTransition.js +12 -5
  413. package/node/DateCalendar/useCalendarState.js +66 -57
  414. package/node/DateField/DateField.js +29 -33
  415. package/node/DateField/useDateField.js +13 -10
  416. package/node/DatePicker/DatePicker.js +1 -1
  417. package/node/DatePicker/DatePickerToolbar.js +17 -33
  418. package/node/DateTimeField/DateTimeField.js +29 -33
  419. package/node/DateTimeField/useDateTimeField.js +13 -10
  420. package/node/DateTimePicker/DateTimePicker.js +2 -2
  421. package/node/DateTimePicker/DateTimePickerTabs.js +15 -20
  422. package/node/DateTimePicker/DateTimePickerToolbar.js +89 -80
  423. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  424. package/node/DesktopDatePicker/DesktopDatePicker.js +11 -17
  425. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
  426. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -35
  427. package/node/DesktopTimePicker/DesktopTimePicker.js +6 -22
  428. package/node/DigitalClock/DigitalClock.js +13 -11
  429. package/node/MobileDatePicker/MobileDatePicker.js +4 -14
  430. package/node/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
  431. package/node/MobileTimePicker/MobileTimePicker.js +4 -14
  432. package/node/MonthCalendar/MonthCalendar.js +31 -11
  433. package/node/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  434. package/node/MonthCalendar/index.js +1 -8
  435. package/node/MonthCalendar/monthCalendarClasses.js +1 -1
  436. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
  437. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -10
  438. package/node/PickersActionBar/PickersActionBar.js +28 -19
  439. package/node/PickersCalendarHeader/PickersCalendarHeader.js +12 -9
  440. package/node/PickersLayout/PickersLayout.js +23 -42
  441. package/node/PickersLayout/usePickerLayout.js +30 -57
  442. package/node/PickersSectionList/PickersSectionList.js +21 -16
  443. package/node/PickersShortcuts/PickersShortcuts.js +21 -11
  444. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  445. package/node/PickersTextField/PickersInput/PickersInput.js +20 -14
  446. package/node/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  447. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +45 -38
  448. package/node/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  449. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  450. package/node/PickersTextField/PickersTextField.js +75 -62
  451. package/node/PickersTextField/usePickerTextFieldOwnerState.js +18 -0
  452. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  453. package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  454. package/node/StaticTimePicker/StaticTimePicker.js +2 -2
  455. package/node/TimeClock/Clock.js +27 -27
  456. package/node/TimeClock/ClockNumber.js +15 -11
  457. package/node/TimeClock/ClockPointer.js +15 -10
  458. package/node/TimeClock/TimeClock.js +30 -12
  459. package/node/TimeField/TimeField.js +28 -32
  460. package/node/TimeField/useTimeField.js +13 -10
  461. package/node/TimePicker/TimePicker.js +2 -2
  462. package/node/TimePicker/TimePickerToolbar.js +36 -51
  463. package/node/YearCalendar/YearCalendar.js +45 -12
  464. package/node/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  465. package/node/YearCalendar/index.js +1 -8
  466. package/node/YearCalendar/yearCalendarClasses.js +1 -1
  467. package/node/hooks/index.js +15 -1
  468. package/node/hooks/useClearableField.js +4 -2
  469. package/node/hooks/useIsValidValue.js +18 -0
  470. package/node/hooks/useParsedFormat.js +11 -13
  471. package/node/hooks/usePickerActionsContext.js +22 -0
  472. package/node/hooks/usePickerContext.js +5 -4
  473. package/node/hooks/useSplitFieldProps.js +7 -2
  474. package/node/index.js +13 -1
  475. package/node/internals/components/PickerFieldUI.js +329 -0
  476. package/node/internals/components/{PickersPopper.js → PickerPopper/PickerPopper.js} +48 -48
  477. package/node/internals/components/PickerPopper/index.js +25 -0
  478. package/node/internals/components/PickerPopper/pickerPopperClasses.js +14 -0
  479. package/node/internals/components/PickerProvider.js +27 -9
  480. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
  481. package/node/internals/components/PickersModalDialog.js +9 -3
  482. package/node/internals/components/PickersToolbar.js +15 -12
  483. package/node/internals/components/PickersToolbarButton.js +4 -6
  484. package/node/internals/components/PickersToolbarText.js +10 -12
  485. package/node/internals/hooks/date-helpers-hooks.js +4 -3
  486. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +37 -122
  487. package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  488. package/node/internals/hooks/useField/index.js +8 -1
  489. package/node/internals/hooks/useField/useField.js +16 -3
  490. package/node/internals/hooks/useField/useField.utils.js +2 -2
  491. package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +56 -0
  492. package/node/internals/hooks/useField/useFieldState.js +2 -3
  493. package/node/internals/hooks/useField/useFieldV6TextField.js +5 -2
  494. package/node/internals/hooks/useField/useFieldV7TextField.js +6 -3
  495. package/node/internals/hooks/useFieldOwnerState.js +24 -0
  496. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +35 -69
  497. package/node/internals/hooks/useNullablePickerContext.js +16 -0
  498. package/node/internals/hooks/useOpenState.js +12 -9
  499. package/node/internals/hooks/usePicker/usePicker.js +4 -20
  500. package/node/internals/hooks/usePicker/usePickerProvider.js +51 -17
  501. package/node/internals/hooks/usePicker/usePickerValue.js +84 -213
  502. package/node/internals/hooks/usePicker/usePickerViews.js +31 -21
  503. package/node/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +7 -4
  504. package/node/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
  505. package/node/internals/hooks/useToolbarOwnerState.js +21 -0
  506. package/node/internals/hooks/useUtils.js +1 -1
  507. package/node/internals/index.js +87 -34
  508. package/node/internals/models/index.js +11 -0
  509. package/node/internals/models/manager.js +5 -0
  510. package/node/internals/models/pickers.js +5 -0
  511. package/node/internals/utils/date-utils.js +1 -1
  512. package/node/internals/utils/utils.js +14 -2
  513. package/node/internals/utils/valueManagers.js +4 -4
  514. package/node/locales/index.js +11 -0
  515. package/node/locales/nbNO.js +15 -19
  516. package/node/locales/nlNL.js +7 -7
  517. package/node/locales/roRO.js +15 -18
  518. package/node/locales/utils/getPickersLocalization.js +2 -16
  519. package/node/locales/zhTW.js +79 -0
  520. package/node/managers/index.js +26 -0
  521. package/node/managers/useDateManager.js +63 -0
  522. package/node/managers/useDateTimeManager.js +68 -0
  523. package/node/managers/useTimeManager.js +59 -0
  524. package/node/models/index.js +11 -0
  525. package/node/models/manager.js +5 -0
  526. package/node/validation/useValidation.js +1 -1
  527. package/node/validation/validateDate.js +8 -0
  528. package/node/validation/validateDateTime.js +8 -0
  529. package/node/validation/validateTime.js +8 -0
  530. package/package.json +5 -5
  531. package/themeAugmentation/components.d.ts +3 -11
  532. package/themeAugmentation/overrides.d.ts +5 -7
  533. package/themeAugmentation/props.d.ts +7 -9
  534. package/validation/extractValidationProps.d.ts +1 -1
  535. package/validation/useValidation.d.ts +7 -6
  536. package/validation/useValidation.js +1 -1
  537. package/validation/validateDate.d.ts +12 -3
  538. package/validation/validateDate.js +8 -0
  539. package/validation/validateDateTime.d.ts +12 -4
  540. package/validation/validateDateTime.js +8 -0
  541. package/validation/validateTime.d.ts +12 -3
  542. package/validation/validateTime.js +8 -0
  543. package/AdapterDateFnsJalaliV3/index.d.ts +0 -1
  544. package/AdapterDateFnsJalaliV3/index.js +0 -1
  545. package/AdapterDateFnsV3/index.d.ts +0 -1
  546. package/AdapterDateFnsV3/index.js +0 -1
  547. package/MonthCalendar/PickersMonth.d.ts +0 -28
  548. package/MonthCalendar/pickersMonthClasses.d.ts +0 -13
  549. package/MonthCalendar/pickersMonthClasses.js +0 -5
  550. package/YearCalendar/PickersYear.d.ts +0 -27
  551. package/YearCalendar/pickersYearClasses.d.ts +0 -13
  552. package/YearCalendar/pickersYearClasses.js +0 -5
  553. package/internals/components/pickersPopperClasses.d.ts +0 -9
  554. package/internals/components/pickersPopperClasses.js +0 -5
  555. package/internals/hooks/defaultizedFieldProps.d.ts +0 -18
  556. package/internals/hooks/defaultizedFieldProps.js +0 -40
  557. package/internals/hooks/useDefaultReduceAnimations.d.ts +0 -2
  558. package/internals/hooks/useIsLandscape.d.ts +0 -4
  559. package/internals/hooks/useIsLandscape.js +0 -35
  560. package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +0 -32
  561. package/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
  562. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
  563. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
  564. package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
  565. package/modern/AdapterDateFnsV3/index.js +0 -1
  566. package/modern/MonthCalendar/pickersMonthClasses.js +0 -5
  567. package/modern/YearCalendar/pickersYearClasses.js +0 -5
  568. package/modern/internals/components/pickersPopperClasses.js +0 -5
  569. package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
  570. package/modern/internals/hooks/useIsLandscape.js +0 -35
  571. package/modern/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
  572. package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
  573. package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
  574. package/node/MonthCalendar/pickersMonthClasses.js +0 -12
  575. package/node/YearCalendar/pickersYearClasses.js +0 -12
  576. package/node/internals/components/pickersPopperClasses.js +0 -12
  577. package/node/internals/hooks/defaultizedFieldProps.js +0 -50
  578. package/node/internals/hooks/useIsLandscape.js +0 -43
  579. package/node/internals/hooks/usePicker/usePickerLayoutProps.js +0 -38
  580. package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -52
@@ -2,7 +2,7 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- const _excluded = ["onFocus", "onBlur", "className", "color", "disabled", "error", "variant", "required", "InputProps", "inputProps", "inputRef", "sectionListRef", "elements", "areAllSectionsEmpty", "onClick", "onKeyDown", "onKeyUp", "onPaste", "onInput", "endAdornment", "startAdornment", "tabIndex", "contentEditable", "focused", "value", "onChange", "fullWidth", "id", "name", "helperText", "FormHelperTextProps", "label", "InputLabelProps"];
5
+ const _excluded = ["onFocus", "onBlur", "className", "classes", "color", "disabled", "error", "variant", "required", "InputProps", "inputProps", "inputRef", "sectionListRef", "elements", "areAllSectionsEmpty", "onClick", "onKeyDown", "onKeyUp", "onPaste", "onInput", "endAdornment", "startAdornment", "tabIndex", "contentEditable", "focused", "value", "onChange", "fullWidth", "id", "name", "helperText", "FormHelperTextProps", "label", "InputLabelProps"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clsx from 'clsx';
@@ -18,6 +18,8 @@ import { getPickersTextFieldUtilityClass } from "./pickersTextFieldClasses.js";
18
18
  import { PickersOutlinedInput } from "./PickersOutlinedInput/index.js";
19
19
  import { PickersFilledInput } from "./PickersFilledInput/index.js";
20
20
  import { PickersInput } from "./PickersInput/index.js";
21
+ import { useFieldOwnerState } from "../internals/hooks/useFieldOwnerState.js";
22
+ import { PickerTextFieldOwnerStateContext } from "./usePickerTextFieldOwnerState.js";
21
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
24
  const VARIANT_COMPONENT = {
23
25
  standard: PickersInput,
@@ -29,15 +31,14 @@ const PickersTextFieldRoot = styled(FormControl, {
29
31
  slot: 'Root',
30
32
  overridesResolver: (props, styles) => styles.root
31
33
  })({});
32
- const useUtilityClasses = ownerState => {
34
+ const useUtilityClasses = (classes, ownerState) => {
33
35
  const {
34
- focused,
35
- disabled,
36
- classes,
37
- required
36
+ isFieldFocused,
37
+ isFieldDisabled,
38
+ isFieldRequired
38
39
  } = ownerState;
39
40
  const slots = {
40
- root: ['root', focused && !disabled && 'focused', disabled && 'disabled', required && 'required']
41
+ root: ['root', isFieldFocused && !isFieldDisabled && 'focused', isFieldDisabled && 'disabled', isFieldRequired && 'required']
41
42
  };
42
43
  return composeClasses(slots, getPickersTextFieldUtilityClass, classes);
43
44
  };
@@ -51,6 +52,7 @@ const PickersTextField = /*#__PURE__*/React.forwardRef(function PickersTextField
51
52
  onFocus,
52
53
  onBlur,
53
54
  className,
55
+ classes: classesProp,
54
56
  color = 'primary',
55
57
  disabled = false,
56
58
  error = false,
@@ -91,64 +93,75 @@ const PickersTextField = /*#__PURE__*/React.forwardRef(function PickersTextField
91
93
  const id = useId(idProp);
92
94
  const helperTextId = helperText && id ? `${id}-helper-text` : undefined;
93
95
  const inputLabelId = label && id ? `${id}-label` : undefined;
94
- const ownerState = _extends({}, props, {
95
- color,
96
- disabled,
97
- error,
98
- focused,
99
- required,
100
- variant
96
+ const fieldOwnerState = useFieldOwnerState({
97
+ disabled: props.disabled,
98
+ required: props.required,
99
+ readOnly: InputProps?.readOnly
101
100
  });
102
- const classes = useUtilityClasses(ownerState);
101
+ const ownerState = React.useMemo(() => _extends({}, fieldOwnerState, {
102
+ isFieldValueEmpty: areAllSectionsEmpty,
103
+ isFieldFocused: focused ?? false,
104
+ hasFieldError: error ?? false,
105
+ inputSize: props.size ?? 'medium',
106
+ inputColor: color ?? 'primary',
107
+ isInputInFullWidth: fullWidth ?? false,
108
+ hasStartAdornment: Boolean(startAdornment ?? InputProps?.startAdornment),
109
+ hasEndAdornment: Boolean(endAdornment ?? InputProps?.endAdornment),
110
+ inputHasLabel: !!label
111
+ }), [fieldOwnerState, areAllSectionsEmpty, focused, error, props.size, color, fullWidth, startAdornment, endAdornment, InputProps?.startAdornment, InputProps?.endAdornment, label]);
112
+ const classes = useUtilityClasses(classesProp, ownerState);
103
113
  const PickersInputComponent = VARIANT_COMPONENT[variant];
104
- return /*#__PURE__*/_jsxs(PickersTextFieldRoot, _extends({
105
- className: clsx(classes.root, className),
106
- ref: handleRootRef,
107
- focused: focused,
108
- disabled: disabled,
109
- variant: variant,
110
- error: error,
111
- color: color,
112
- fullWidth: fullWidth,
113
- required: required,
114
- ownerState: ownerState
115
- }, other, {
116
- children: [/*#__PURE__*/_jsx(InputLabel, _extends({
117
- htmlFor: id,
118
- id: inputLabelId
119
- }, InputLabelProps, {
120
- children: label
121
- })), /*#__PURE__*/_jsx(PickersInputComponent, _extends({
122
- elements: elements,
123
- areAllSectionsEmpty: areAllSectionsEmpty,
124
- onClick: onClick,
125
- onKeyDown: onKeyDown,
126
- onKeyUp: onKeyUp,
127
- onInput: onInput,
128
- onPaste: onPaste,
129
- onFocus: onFocus,
130
- onBlur: onBlur,
131
- endAdornment: endAdornment,
132
- startAdornment: startAdornment,
133
- tabIndex: tabIndex,
134
- contentEditable: contentEditable,
135
- value: value,
136
- onChange: onChange,
137
- id: id,
114
+ return /*#__PURE__*/_jsx(PickerTextFieldOwnerStateContext.Provider, {
115
+ value: ownerState,
116
+ children: /*#__PURE__*/_jsxs(PickersTextFieldRoot, _extends({
117
+ className: clsx(classes.root, className),
118
+ ref: handleRootRef,
119
+ focused: focused,
120
+ disabled: disabled,
121
+ variant: variant,
122
+ error: error,
123
+ color: color,
138
124
  fullWidth: fullWidth,
139
- inputProps: inputProps,
140
- inputRef: inputRef,
141
- sectionListRef: sectionListRef,
142
- label: label,
143
- name: name,
144
- role: "group",
145
- "aria-labelledby": inputLabelId
146
- }, InputProps)), helperText && /*#__PURE__*/_jsx(FormHelperText, _extends({
147
- id: helperTextId
148
- }, FormHelperTextProps, {
149
- children: helperText
150
- }))]
151
- }));
125
+ required: required,
126
+ ownerState: ownerState
127
+ }, other, {
128
+ children: [label != null && label !== '' && /*#__PURE__*/_jsx(InputLabel, _extends({
129
+ htmlFor: id,
130
+ id: inputLabelId
131
+ }, InputLabelProps, {
132
+ children: label
133
+ })), /*#__PURE__*/_jsx(PickersInputComponent, _extends({
134
+ elements: elements,
135
+ areAllSectionsEmpty: areAllSectionsEmpty,
136
+ onClick: onClick,
137
+ onKeyDown: onKeyDown,
138
+ onKeyUp: onKeyUp,
139
+ onInput: onInput,
140
+ onPaste: onPaste,
141
+ onFocus: onFocus,
142
+ onBlur: onBlur,
143
+ endAdornment: endAdornment,
144
+ startAdornment: startAdornment,
145
+ tabIndex: tabIndex,
146
+ contentEditable: contentEditable,
147
+ value: value,
148
+ onChange: onChange,
149
+ id: id,
150
+ fullWidth: fullWidth,
151
+ inputProps: inputProps,
152
+ inputRef: inputRef,
153
+ sectionListRef: sectionListRef,
154
+ label: label,
155
+ name: name,
156
+ role: "group",
157
+ "aria-labelledby": inputLabelId
158
+ }, InputProps)), helperText && /*#__PURE__*/_jsx(FormHelperText, _extends({
159
+ id: helperTextId
160
+ }, FormHelperTextProps, {
161
+ children: helperText
162
+ }))]
163
+ }))
164
+ });
152
165
  });
153
166
  process.env.NODE_ENV !== "production" ? PickersTextField.propTypes = {
154
167
  // ----------------------------- Warning --------------------------------
@@ -1,12 +1,13 @@
1
1
  import * as React from 'react';
2
- import { FormControlProps } from '@mui/material/FormControl';
2
+ import { FormControlOwnProps, FormControlProps } from '@mui/material/FormControl';
3
3
  import { FormHelperTextProps } from '@mui/material/FormHelperText';
4
4
  import { InputLabelProps } from '@mui/material/InputLabel';
5
5
  import { TextFieldVariants } from '@mui/material/TextField';
6
6
  import { PickersInputPropsUsedByField } from './PickersInputBase/PickersInputBase.types';
7
- import { PickersInputProps } from './PickersInput';
8
- import { PickersOutlinedInputProps } from './PickersOutlinedInput';
9
- import { PickersFilledInputProps } from './PickersFilledInput';
7
+ import type { PickersInputProps } from './PickersInput';
8
+ import type { PickersOutlinedInputProps } from './PickersOutlinedInput';
9
+ import type { PickersFilledInputProps } from './PickersFilledInput';
10
+ import { FieldOwnerState } from '../models';
10
11
  interface PickersTextFieldPropsUsedByField {
11
12
  onFocus: React.FocusEventHandler<HTMLDivElement>;
12
13
  onBlur: React.FocusEventHandler<HTMLDivElement>;
@@ -64,4 +65,42 @@ export interface PickersFilledTextFieldProps extends PickersBaseTextFieldProps {
64
65
  InputProps?: Partial<PickersFilledInputProps>;
65
66
  }
66
67
  export type PickersTextFieldProps<Variant extends TextFieldVariants = TextFieldVariants> = Variant extends 'filled' ? PickersFilledTextFieldProps : Variant extends 'standard' ? PickersStandardTextFieldProps : PickersOutlinedTextFieldProps;
68
+ export interface PickerTextFieldOwnerState extends FieldOwnerState {
69
+ /**
70
+ * `true` if the value of the field is currently empty.
71
+ */
72
+ isFieldValueEmpty: boolean;
73
+ /**
74
+ * `true` if the field is focused, `false` otherwise.
75
+ */
76
+ isFieldFocused: boolean;
77
+ /**
78
+ * `true` if the field has an error, `false` otherwise.
79
+ */
80
+ hasFieldError: boolean;
81
+ /**
82
+ * The size of the input.
83
+ */
84
+ inputSize: Exclude<FormControlOwnProps['size'], undefined>;
85
+ /**
86
+ * The color of the input.
87
+ */
88
+ inputColor: Exclude<FormControlOwnProps['color'], undefined>;
89
+ /**
90
+ * `true` if the input takes up the full width of its container.
91
+ */
92
+ isInputInFullWidth: boolean;
93
+ /**
94
+ * `true` if the input has a start adornment, `false` otherwise.
95
+ */
96
+ hasStartAdornment: boolean;
97
+ /**
98
+ * `true` if the input has an end adornment, `false` otherwise.
99
+ */
100
+ hasEndAdornment: boolean;
101
+ /**
102
+ * `true` if the input has a label, `false` otherwise.
103
+ */
104
+ inputHasLabel: boolean;
105
+ }
67
106
  export {};
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import { PickerTextFieldOwnerState } from './PickersTextField.types';
3
+ export declare const PickerTextFieldOwnerStateContext: React.Context<PickerTextFieldOwnerState | null>;
4
+ export declare const usePickerTextFieldOwnerState: () => PickerTextFieldOwnerState;
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ export const PickerTextFieldOwnerStateContext = /*#__PURE__*/React.createContext(null);
5
+ export const usePickerTextFieldOwnerState = () => {
6
+ const value = React.useContext(PickerTextFieldOwnerStateContext);
7
+ if (value == null) {
8
+ throw new Error(['MUI X: The `usePickerTextFieldOwnerState` can only be called in components that are used inside a PickerTextField component'].join('\n'));
9
+ }
10
+ return value;
11
+ };
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # MUI X Date Pickers
2
2
 
3
3
  This package is the Community plan edition of the Date and Time Picker components.
4
- It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components.
4
+ It's part of [MUI X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components.
5
5
 
6
6
  ## Installation
7
7
 
@@ -20,13 +20,16 @@ The pickers currently support the following date libraries:
20
20
  - [Moment.js](https://momentjs.com/)
21
21
 
22
22
  ```bash
23
- // date-fns
23
+ # date-fns
24
24
  npm install date-fns
25
- // or dayjs
25
+
26
+ # or dayjs
26
27
  npm install dayjs
27
- // or luxon
28
+
29
+ # or luxon
28
30
  npm install luxon
29
- // or moment
31
+
32
+ # or moment
30
33
  npm install moment
31
34
  ```
32
35
 
@@ -41,11 +41,11 @@ const StaticDatePicker = /*#__PURE__*/React.forwardRef(function StaticDatePicker
41
41
  const {
42
42
  renderPicker
43
43
  } = useStaticPicker({
44
+ ref,
44
45
  props,
45
46
  valueManager: singleItemValueManager,
46
47
  valueType: 'date',
47
- validator: validateDate,
48
- ref
48
+ validator: validateDate
49
49
  });
50
50
  return renderPicker();
51
51
  });
@@ -1,10 +1,9 @@
1
1
  import { MakeOptional } from '@mui/x-internals/types';
2
2
  import { BaseDatePickerProps, BaseDatePickerSlots, BaseDatePickerSlotProps } from '../DatePicker/shared';
3
3
  import { StaticOnlyPickerProps, UseStaticPickerSlots, UseStaticPickerSlotProps } from '../internals/hooks/useStaticPicker';
4
- import { DateView } from '../models';
5
- export interface StaticDatePickerSlots extends BaseDatePickerSlots, UseStaticPickerSlots<DateView> {
4
+ export interface StaticDatePickerSlots extends BaseDatePickerSlots, UseStaticPickerSlots {
6
5
  }
7
- export interface StaticDatePickerSlotProps extends BaseDatePickerSlotProps, UseStaticPickerSlotProps<DateView> {
6
+ export interface StaticDatePickerSlotProps extends BaseDatePickerSlotProps, UseStaticPickerSlotProps {
8
7
  }
9
8
  export interface StaticDatePickerProps extends BaseDatePickerProps, MakeOptional<StaticOnlyPickerProps, 'displayStaticWrapperAs'> {
10
9
  /**
@@ -51,11 +51,11 @@ const StaticDateTimePicker = /*#__PURE__*/React.forwardRef(function StaticDateTi
51
51
  const {
52
52
  renderPicker
53
53
  } = useStaticPicker({
54
+ ref,
54
55
  props,
55
56
  valueManager: singleItemValueManager,
56
57
  valueType: 'date-time',
57
- validator: validateDateTime,
58
- ref
58
+ validator: validateDateTime
59
59
  });
60
60
  return renderPicker();
61
61
  });
@@ -2,9 +2,9 @@ import { MakeOptional } from '@mui/x-internals/types';
2
2
  import { BaseDateTimePickerProps, BaseDateTimePickerSlots, BaseDateTimePickerSlotProps } from '../DateTimePicker/shared';
3
3
  import { StaticOnlyPickerProps, UseStaticPickerSlots, UseStaticPickerSlotProps } from '../internals/hooks/useStaticPicker';
4
4
  import { DateOrTimeView } from '../models';
5
- export interface StaticDateTimePickerSlots extends BaseDateTimePickerSlots, UseStaticPickerSlots<DateOrTimeView> {
5
+ export interface StaticDateTimePickerSlots extends BaseDateTimePickerSlots, UseStaticPickerSlots {
6
6
  }
7
- export interface StaticDateTimePickerSlotProps extends BaseDateTimePickerSlotProps, UseStaticPickerSlotProps<DateOrTimeView> {
7
+ export interface StaticDateTimePickerSlotProps extends BaseDateTimePickerSlotProps, UseStaticPickerSlotProps {
8
8
  }
9
9
  export interface StaticDateTimePickerProps extends BaseDateTimePickerProps<DateOrTimeView>, MakeOptional<StaticOnlyPickerProps, 'displayStaticWrapperAs'> {
10
10
  /**
@@ -43,11 +43,11 @@ const StaticTimePicker = /*#__PURE__*/React.forwardRef(function StaticTimePicker
43
43
  const {
44
44
  renderPicker
45
45
  } = useStaticPicker({
46
+ ref,
46
47
  props,
47
48
  valueManager: singleItemValueManager,
48
49
  valueType: 'time',
49
- validator: validateTime,
50
- ref
50
+ validator: validateTime
51
51
  });
52
52
  return renderPicker();
53
53
  });
@@ -2,9 +2,9 @@ import { MakeOptional } from '@mui/x-internals/types';
2
2
  import { BaseTimePickerProps, BaseTimePickerSlots, BaseTimePickerSlotProps } from '../TimePicker/shared';
3
3
  import { StaticOnlyPickerProps, UseStaticPickerSlots, UseStaticPickerSlotProps } from '../internals/hooks/useStaticPicker';
4
4
  import { TimeView } from '../models';
5
- export interface StaticTimePickerSlots extends BaseTimePickerSlots, UseStaticPickerSlots<TimeView> {
5
+ export interface StaticTimePickerSlots extends BaseTimePickerSlots, UseStaticPickerSlots {
6
6
  }
7
- export interface StaticTimePickerSlotProps extends BaseTimePickerSlotProps, UseStaticPickerSlotProps<TimeView> {
7
+ export interface StaticTimePickerSlotProps extends BaseTimePickerSlotProps, UseStaticPickerSlotProps {
8
8
  }
9
9
  export interface StaticTimePickerProps extends BaseTimePickerProps<TimeView>, MakeOptional<StaticOnlyPickerProps, 'displayStaticWrapperAs'> {
10
10
  /**
@@ -26,6 +26,10 @@ export interface ClockProps extends ReturnType<typeof useMeridiemMode>, FormProp
26
26
  * The current full date value.
27
27
  */
28
28
  value: PickerValidDate | null;
29
+ /**
30
+ * Minimum and maximum value of the clock.
31
+ */
32
+ viewRange: [number, number];
29
33
  className?: string;
30
34
  classes?: Partial<ClockClasses>;
31
35
  }
@@ -11,20 +11,17 @@ import { useUtils } from "../internals/hooks/useUtils.js";
11
11
  import { CLOCK_HOUR_WIDTH, getHours, getMinutes } from "./shared.js";
12
12
  import { getClockUtilityClass } from "./clockClasses.js";
13
13
  import { formatMeridiem } from "../internals/utils/date-utils.js";
14
+ import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
- const useUtilityClasses = ownerState => {
16
- const {
17
- classes,
18
- meridiemMode
19
- } = ownerState;
16
+ const useUtilityClasses = (classes, ownerState) => {
20
17
  const slots = {
21
18
  root: ['root'],
22
19
  clock: ['clock'],
23
20
  wrapper: ['wrapper'],
24
21
  squareMask: ['squareMask'],
25
22
  pin: ['pin'],
26
- amButton: ['amButton', meridiemMode === 'am' && 'selected'],
27
- pmButton: ['pmButton', meridiemMode === 'pm' && 'selected'],
23
+ amButton: ['amButton', ownerState.clockMeridiemMode === 'am' && 'selected'],
24
+ pmButton: ['pmButton', ownerState.clockMeridiemMode === 'pm' && 'selected'],
28
25
  meridiemText: ['meridiemText']
29
26
  };
30
27
  return composeClasses(slots, getClockUtilityClass, classes);
@@ -78,7 +75,7 @@ const ClockSquareMask = styled('div', {
78
75
  userSelect: 'none',
79
76
  variants: [{
80
77
  props: {
81
- disabled: false
78
+ isClockDisabled: false
82
79
  },
83
80
  style: {
84
81
  '@media (pointer: fine)': {
@@ -180,15 +177,23 @@ export function Clock(inProps) {
180
177
  selectedId,
181
178
  type,
182
179
  viewValue,
180
+ viewRange: [minViewValue, maxViewValue],
183
181
  disabled = false,
184
182
  readOnly,
185
- className
183
+ className,
184
+ classes: classesProp
186
185
  } = props;
187
- const ownerState = props;
188
186
  const utils = useUtils();
189
187
  const translations = usePickerTranslations();
188
+ const {
189
+ ownerState: pickerOwnerState
190
+ } = usePickerPrivateContext();
191
+ const ownerState = _extends({}, pickerOwnerState, {
192
+ isClockDisabled: disabled,
193
+ clockMeridiemMode: meridiemMode
194
+ });
190
195
  const isMoving = React.useRef(false);
191
- const classes = useUtilityClasses(ownerState);
196
+ const classes = useUtilityClasses(classesProp, ownerState);
192
197
  const isSelectedTimeDisabled = isTimeDisabled(viewValue, type);
193
198
  const isPointerInner = !ampm && type === 'hours' && (viewValue < 1 || viewValue > 12);
194
199
  const handleValueChange = (newValue, isFinish) => {
@@ -236,12 +241,7 @@ export function Clock(inProps) {
236
241
  }
237
242
  setTime(event.nativeEvent, 'finish');
238
243
  };
239
- const hasSelected = React.useMemo(() => {
240
- if (type === 'hours') {
241
- return true;
242
- }
243
- return viewValue % 5 === 0;
244
- }, [type, viewValue]);
244
+ const isPointerBetweenTwoClockValues = type === 'hours' ? false : viewValue % 5 !== 0;
245
245
  const keyboardControlStep = type === 'minutes' ? minutesStep : 1;
246
246
  const listboxRef = React.useRef(null);
247
247
  // Since this is rendered when a Popper is opened we can't use passive effects.
@@ -252,6 +252,8 @@ export function Clock(inProps) {
252
252
  listboxRef.current.focus();
253
253
  }
254
254
  }, [autoFocus]);
255
+ const clampValue = newValue => Math.max(minViewValue, Math.min(maxViewValue, newValue));
256
+ const circleValue = newValue => (newValue + (maxViewValue + 1)) % (maxViewValue + 1);
255
257
  const handleKeyDown = event => {
256
258
  // TODO: Why this early exit?
257
259
  if (isMoving.current) {
@@ -260,27 +262,27 @@ export function Clock(inProps) {
260
262
  switch (event.key) {
261
263
  case 'Home':
262
264
  // reset both hours and minutes
263
- handleValueChange(0, 'partial');
265
+ handleValueChange(minViewValue, 'partial');
264
266
  event.preventDefault();
265
267
  break;
266
268
  case 'End':
267
- handleValueChange(type === 'minutes' ? 59 : 23, 'partial');
269
+ handleValueChange(maxViewValue, 'partial');
268
270
  event.preventDefault();
269
271
  break;
270
272
  case 'ArrowUp':
271
- handleValueChange(viewValue + keyboardControlStep, 'partial');
273
+ handleValueChange(circleValue(viewValue + keyboardControlStep), 'partial');
272
274
  event.preventDefault();
273
275
  break;
274
276
  case 'ArrowDown':
275
- handleValueChange(viewValue - keyboardControlStep, 'partial');
277
+ handleValueChange(circleValue(viewValue - keyboardControlStep), 'partial');
276
278
  event.preventDefault();
277
279
  break;
278
280
  case 'PageUp':
279
- handleValueChange(viewValue + 5, 'partial');
281
+ handleValueChange(clampValue(viewValue + 5), 'partial');
280
282
  event.preventDefault();
281
283
  break;
282
284
  case 'PageDown':
283
- handleValueChange(viewValue - 5, 'partial');
285
+ handleValueChange(clampValue(viewValue - 5), 'partial');
284
286
  event.preventDefault();
285
287
  break;
286
288
  case 'Enter':
@@ -302,9 +304,7 @@ export function Clock(inProps) {
302
304
  onTouchEnd: handleTouchEnd,
303
305
  onMouseUp: handleMouseUp,
304
306
  onMouseMove: handleMouseMove,
305
- ownerState: {
306
- disabled
307
- },
307
+ ownerState: ownerState,
308
308
  className: classes.squareMask
309
309
  }), !isSelectedTimeDisabled && /*#__PURE__*/_jsxs(React.Fragment, {
310
310
  children: [/*#__PURE__*/_jsx(ClockPin, {
@@ -313,7 +313,7 @@ export function Clock(inProps) {
313
313
  type: type,
314
314
  viewValue: viewValue,
315
315
  isInner: isPointerInner,
316
- hasSelected: hasSelected
316
+ isBetweenTwoClockValues: isPointerBetweenTwoClockValues
317
317
  })]
318
318
  }), /*#__PURE__*/_jsx(ClockWrapper, {
319
319
  "aria-activedescendant": selectedId,
@@ -1,21 +1,17 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["className", "disabled", "index", "inner", "label", "selected"];
3
+ const _excluded = ["className", "classes", "disabled", "index", "inner", "label", "selected"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import { styled, useThemeProps } from '@mui/material/styles';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
8
  import { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from "./shared.js";
9
9
  import { getClockNumberUtilityClass, clockNumberClasses } from "./clockNumberClasses.js";
10
+ import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
- const useUtilityClasses = ownerState => {
12
- const {
13
- classes,
14
- selected,
15
- disabled
16
- } = ownerState;
12
+ const useUtilityClasses = (classes, ownerState) => {
17
13
  const slots = {
18
- root: ['root', selected && 'selected', disabled && 'disabled']
14
+ root: ['root', ownerState.isClockNumberSelected && 'selected', ownerState.isClockNumberDisabled && 'disabled']
19
15
  };
20
16
  return composeClasses(slots, getClockNumberUtilityClass, classes);
21
17
  };
@@ -52,7 +48,7 @@ const ClockNumberRoot = styled('span', {
52
48
  },
53
49
  variants: [{
54
50
  props: {
55
- inner: true
51
+ isClockNumberInInnerRing: true
56
52
  },
57
53
  style: _extends({}, theme.typography.body2, {
58
54
  color: (theme.vars || theme).palette.text.secondary
@@ -70,6 +66,7 @@ export function ClockNumber(inProps) {
70
66
  });
71
67
  const {
72
68
  className,
69
+ classes: classesProp,
73
70
  disabled,
74
71
  index,
75
72
  inner,
@@ -77,8 +74,15 @@ export function ClockNumber(inProps) {
77
74
  selected
78
75
  } = props,
79
76
  other = _objectWithoutPropertiesLoose(props, _excluded);
80
- const ownerState = props;
81
- const classes = useUtilityClasses(ownerState);
77
+ const {
78
+ ownerState: pickerOwnerState
79
+ } = usePickerPrivateContext();
80
+ const ownerState = _extends({}, pickerOwnerState, {
81
+ isClockNumberInInnerRing: inner,
82
+ isClockNumberSelected: selected,
83
+ isClockNumberDisabled: disabled
84
+ });
85
+ const classes = useUtilityClasses(classesProp, ownerState);
82
86
  const angle = index % 12 / 12 * Math.PI * 2 - Math.PI / 2;
83
87
  const length = (CLOCK_WIDTH - CLOCK_HOUR_WIDTH - 2) / 2 * (inner ? 0.65 : 1);
84
88
  const x = Math.round(Math.cos(angle) * length);
@@ -2,7 +2,12 @@ import * as React from 'react';
2
2
  import { TimeView } from '../models';
3
3
  import { ClockPointerClasses } from './clockPointerClasses';
4
4
  export interface ClockPointerProps extends React.HTMLAttributes<HTMLDivElement> {
5
- hasSelected: boolean;
5
+ /**
6
+ * `true` if the pointer is between two clock values.
7
+ * On the `hours` view, it is always false.
8
+ * On the `minutes` view, it is true if the pointer is on a value that is not a multiple of 5.
9
+ */
10
+ isBetweenTwoClockValues: boolean;
6
11
  isInner: boolean;
7
12
  type: TimeView;
8
13
  viewValue: number;