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

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 (576) 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 +1903 -231
  21. package/DateCalendar/DateCalendar.js +4 -4
  22. package/DateCalendar/DateCalendar.types.d.ts +2 -1
  23. package/DateCalendar/DayCalendar.js +2 -0
  24. package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
  25. package/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  26. package/DateCalendar/PickersSlideTransition.d.ts +1 -1
  27. package/DateCalendar/PickersSlideTransition.js +12 -5
  28. package/DateCalendar/useCalendarState.d.ts +6 -4
  29. package/DateField/DateField.js +29 -33
  30. package/DateField/DateField.types.d.ts +7 -15
  31. package/DateField/useDateField.d.ts +1 -1
  32. package/DateField/useDateField.js +14 -11
  33. package/DatePicker/DatePicker.js +1 -1
  34. package/DatePicker/DatePicker.types.d.ts +7 -3
  35. package/DatePicker/DatePickerToolbar.d.ts +1 -2
  36. package/DatePicker/DatePickerToolbar.js +17 -33
  37. package/DatePicker/shared.d.ts +6 -5
  38. package/DateTimeField/DateTimeField.js +29 -33
  39. package/DateTimeField/DateTimeField.types.d.ts +7 -16
  40. package/DateTimeField/useDateTimeField.d.ts +1 -1
  41. package/DateTimeField/useDateTimeField.js +14 -11
  42. package/DateTimePicker/DateTimePicker.js +2 -2
  43. package/DateTimePicker/DateTimePicker.types.d.ts +4 -5
  44. package/DateTimePicker/DateTimePickerTabs.d.ts +2 -5
  45. package/DateTimePicker/DateTimePickerTabs.js +15 -20
  46. package/DateTimePicker/DateTimePickerToolbar.d.ts +16 -5
  47. package/DateTimePicker/DateTimePickerToolbar.js +88 -80
  48. package/DateTimePicker/shared.d.ts +8 -8
  49. package/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  50. package/DesktopDatePicker/DesktopDatePicker.js +11 -17
  51. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +7 -3
  52. package/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
  53. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +2 -2
  54. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +2 -2
  55. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +9 -34
  56. package/DesktopTimePicker/DesktopTimePicker.js +6 -22
  57. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  58. package/DigitalClock/DigitalClock.js +13 -11
  59. package/DigitalClock/DigitalClock.types.d.ts +8 -2
  60. package/MobileDatePicker/MobileDatePicker.js +4 -14
  61. package/MobileDatePicker/MobileDatePicker.types.d.ts +2 -3
  62. package/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
  63. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +4 -4
  64. package/MobileTimePicker/MobileTimePicker.js +4 -14
  65. package/MobileTimePicker/MobileTimePicker.types.d.ts +4 -4
  66. package/MonthCalendar/MonthCalendar.d.ts +1 -1
  67. package/MonthCalendar/MonthCalendar.js +31 -11
  68. package/MonthCalendar/MonthCalendar.types.d.ts +2 -2
  69. package/MonthCalendar/MonthCalendarButton.d.ts +24 -0
  70. package/{modern/MonthCalendar/PickersMonth.js → MonthCalendar/MonthCalendarButton.js} +20 -61
  71. package/MonthCalendar/index.d.ts +0 -3
  72. package/MonthCalendar/index.js +1 -2
  73. package/MonthCalendar/monthCalendarClasses.d.ts +7 -1
  74. package/MonthCalendar/monthCalendarClasses.js +1 -1
  75. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
  76. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +6 -6
  77. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +4 -4
  78. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +14 -10
  79. package/PickersActionBar/PickersActionBar.d.ts +6 -7
  80. package/PickersActionBar/PickersActionBar.js +26 -17
  81. package/PickersCalendarHeader/PickersCalendarHeader.js +10 -7
  82. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +3 -4
  83. package/PickersLayout/PickersLayout.d.ts +7 -5
  84. package/PickersLayout/PickersLayout.js +23 -42
  85. package/PickersLayout/PickersLayout.types.d.ts +20 -22
  86. package/PickersLayout/usePickerLayout.d.ts +5 -4
  87. package/PickersLayout/usePickerLayout.js +26 -53
  88. package/PickersSectionList/PickersSectionList.js +21 -16
  89. package/PickersSectionList/PickersSectionList.types.d.ts +13 -6
  90. package/PickersShortcuts/PickersShortcuts.d.ts +9 -11
  91. package/PickersShortcuts/PickersShortcuts.js +21 -11
  92. package/PickersShortcuts/index.d.ts +1 -1
  93. package/PickersTextField/PickersFilledInput/PickersFilledInput.d.ts +7 -0
  94. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  95. package/PickersTextField/PickersFilledInput/pickersFilledInputClasses.d.ts +1 -1
  96. package/PickersTextField/PickersInput/PickersInput.js +20 -14
  97. package/PickersTextField/PickersInput/pickersInputClasses.d.ts +3 -2
  98. package/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  99. package/PickersTextField/PickersInputBase/PickersInputBase.d.ts +3 -6
  100. package/PickersTextField/PickersInputBase/PickersInputBase.js +43 -37
  101. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +1 -0
  102. package/PickersTextField/PickersOutlinedInput/Outline.d.ts +0 -1
  103. package/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  104. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  105. package/PickersTextField/PickersTextField.js +75 -62
  106. package/PickersTextField/PickersTextField.types.d.ts +43 -4
  107. package/PickersTextField/usePickerTextFieldOwnerState.d.ts +4 -0
  108. package/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  109. package/README.md +8 -5
  110. package/StaticDatePicker/StaticDatePicker.js +2 -2
  111. package/StaticDatePicker/StaticDatePicker.types.d.ts +2 -3
  112. package/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  113. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +2 -2
  114. package/StaticTimePicker/StaticTimePicker.js +2 -2
  115. package/StaticTimePicker/StaticTimePicker.types.d.ts +2 -2
  116. package/TimeClock/Clock.d.ts +4 -0
  117. package/TimeClock/Clock.js +27 -27
  118. package/TimeClock/ClockNumber.js +15 -11
  119. package/TimeClock/ClockPointer.d.ts +6 -1
  120. package/TimeClock/ClockPointer.js +16 -10
  121. package/TimeClock/TimeClock.js +30 -12
  122. package/TimeField/TimeField.js +28 -32
  123. package/TimeField/TimeField.types.d.ts +7 -16
  124. package/TimeField/useTimeField.d.ts +1 -1
  125. package/TimeField/useTimeField.js +14 -11
  126. package/TimePicker/TimePicker.js +2 -2
  127. package/TimePicker/TimePicker.types.d.ts +4 -5
  128. package/TimePicker/TimePickerToolbar.d.ts +1 -3
  129. package/TimePicker/TimePickerToolbar.js +36 -51
  130. package/TimePicker/shared.d.ts +6 -6
  131. package/YearCalendar/YearCalendar.js +46 -13
  132. package/YearCalendar/YearCalendar.types.d.ts +2 -2
  133. package/YearCalendar/YearCalendarButton.d.ts +23 -0
  134. package/{modern/YearCalendar/PickersYear.js → YearCalendar/YearCalendarButton.js} +20 -59
  135. package/YearCalendar/index.d.ts +0 -3
  136. package/YearCalendar/index.js +1 -2
  137. package/YearCalendar/yearCalendarClasses.d.ts +7 -1
  138. package/YearCalendar/yearCalendarClasses.js +1 -1
  139. package/hooks/index.d.ts +2 -0
  140. package/hooks/index.js +3 -1
  141. package/hooks/useClearableField.d.ts +5 -3
  142. package/hooks/useClearableField.js +4 -2
  143. package/hooks/useIsValidValue.d.ts +7 -0
  144. package/hooks/useIsValidValue.js +11 -0
  145. package/hooks/useParsedFormat.d.ts +9 -7
  146. package/hooks/useParsedFormat.js +11 -13
  147. package/hooks/usePickerActionsContext.d.ts +7 -0
  148. package/hooks/usePickerActionsContext.js +15 -0
  149. package/hooks/usePickerContext.d.ts +5 -1
  150. package/hooks/usePickerContext.js +2 -2
  151. package/hooks/useSplitFieldProps.d.ts +12 -3
  152. package/hooks/useSplitFieldProps.js +8 -3
  153. package/index.d.ts +1 -0
  154. package/index.js +3 -2
  155. package/internals/components/PickerFieldUI.d.ts +133 -0
  156. package/internals/components/PickerFieldUI.js +317 -0
  157. package/internals/components/{PickersPopper.d.ts → PickerPopper/PickerPopper.d.ts} +26 -25
  158. package/{modern/internals/components/PickersPopper.js → internals/components/PickerPopper/PickerPopper.js} +47 -47
  159. package/internals/components/PickerPopper/index.d.ts +4 -0
  160. package/internals/components/PickerPopper/index.js +2 -0
  161. package/internals/components/PickerPopper/pickerPopperClasses.d.ts +9 -0
  162. package/internals/components/PickerPopper/pickerPopperClasses.js +6 -0
  163. package/internals/components/PickerProvider.d.ts +86 -32
  164. package/internals/components/PickerProvider.js +25 -7
  165. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
  166. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +11 -8
  167. package/internals/components/PickersModalDialog.d.ts +1 -3
  168. package/internals/components/PickersModalDialog.js +9 -3
  169. package/internals/components/PickersToolbar.d.ts +2 -3
  170. package/internals/components/PickersToolbar.js +15 -12
  171. package/internals/components/PickersToolbarButton.js +4 -6
  172. package/internals/components/PickersToolbarText.js +11 -13
  173. package/internals/hooks/date-helpers-hooks.js +4 -3
  174. package/internals/hooks/useClockReferenceDate.d.ts +2 -1
  175. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
  176. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +35 -120
  177. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +16 -38
  178. package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  179. package/internals/hooks/useField/index.d.ts +2 -0
  180. package/internals/hooks/useField/index.js +2 -1
  181. package/internals/hooks/useField/useField.d.ts +3 -3
  182. package/internals/hooks/useField/useField.js +17 -4
  183. package/internals/hooks/useField/useField.types.d.ts +55 -48
  184. package/internals/hooks/useField/useField.utils.d.ts +4 -3
  185. package/internals/hooks/useField/useField.utils.js +2 -2
  186. package/internals/hooks/useField/useFieldCharacterEditing.d.ts +6 -5
  187. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.d.ts +15 -0
  188. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +47 -0
  189. package/internals/hooks/useField/useFieldState.d.ts +9 -8
  190. package/internals/hooks/useField/useFieldState.js +2 -3
  191. package/internals/hooks/useField/useFieldV6TextField.d.ts +4 -3
  192. package/internals/hooks/useField/useFieldV6TextField.js +5 -2
  193. package/internals/hooks/useField/useFieldV7TextField.js +6 -3
  194. package/internals/hooks/useFieldOwnerState.d.ts +6 -0
  195. package/internals/hooks/useFieldOwnerState.js +16 -0
  196. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
  197. package/internals/hooks/useMobilePicker/useMobilePicker.js +34 -68
  198. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +15 -22
  199. package/internals/hooks/useNullablePickerContext.d.ts +5 -0
  200. package/internals/hooks/useNullablePickerContext.js +10 -0
  201. package/internals/hooks/useOpenState.d.ts +3 -2
  202. package/internals/hooks/useOpenState.js +11 -9
  203. package/internals/hooks/usePicker/index.d.ts +1 -1
  204. package/internals/hooks/usePicker/usePicker.d.ts +3 -4
  205. package/internals/hooks/usePicker/usePicker.js +4 -20
  206. package/internals/hooks/usePicker/usePicker.types.d.ts +10 -10
  207. package/internals/hooks/usePicker/usePickerProvider.d.ts +45 -10
  208. package/internals/hooks/usePicker/usePickerProvider.js +50 -16
  209. package/internals/hooks/usePicker/usePickerValue.d.ts +3 -2
  210. package/internals/hooks/usePicker/usePickerValue.js +84 -214
  211. package/internals/hooks/usePicker/usePickerValue.types.d.ts +130 -75
  212. package/internals/hooks/usePicker/usePickerViews.d.ts +59 -41
  213. package/internals/hooks/usePicker/usePickerViews.js +31 -20
  214. package/internals/hooks/useReduceAnimations.d.ts +2 -0
  215. package/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +5 -2
  216. package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +1 -1
  217. package/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
  218. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +7 -13
  219. package/internals/hooks/useToolbarOwnerState.d.ts +10 -0
  220. package/internals/hooks/useToolbarOwnerState.js +13 -0
  221. package/internals/hooks/useUtils.d.ts +4 -3
  222. package/internals/hooks/useUtils.js +1 -1
  223. package/internals/hooks/useValueWithTimezone.d.ts +5 -4
  224. package/internals/hooks/useViews.d.ts +5 -5
  225. package/internals/index.d.ts +27 -18
  226. package/internals/index.js +13 -8
  227. package/internals/models/common.d.ts +1 -1
  228. package/internals/models/fields.d.ts +8 -24
  229. package/internals/models/index.d.ts +1 -0
  230. package/internals/models/index.js +2 -1
  231. package/internals/models/manager.d.ts +15 -0
  232. package/internals/models/manager.js +1 -0
  233. package/internals/models/pickers.d.ts +1 -0
  234. package/internals/models/pickers.js +1 -0
  235. package/internals/models/props/basePickerProps.d.ts +3 -33
  236. package/internals/models/props/tabs.d.ts +0 -13
  237. package/internals/models/props/time.d.ts +2 -1
  238. package/internals/models/props/toolbar.d.ts +1 -19
  239. package/internals/models/value.d.ts +9 -0
  240. package/internals/utils/date-utils.d.ts +1 -1
  241. package/internals/utils/date-utils.js +1 -1
  242. package/internals/utils/utils.d.ts +3 -0
  243. package/internals/utils/utils.js +11 -1
  244. package/internals/utils/valueManagers.d.ts +4 -3
  245. package/internals/utils/valueManagers.js +4 -4
  246. package/locales/index.d.ts +1 -0
  247. package/locales/index.js +1 -0
  248. package/locales/nbNO.js +15 -19
  249. package/locales/nlNL.js +7 -7
  250. package/locales/roRO.js +15 -18
  251. package/locales/utils/getPickersLocalization.d.ts +0 -7
  252. package/locales/utils/getPickersLocalization.js +0 -13
  253. package/locales/zhTW.d.ts +80 -0
  254. package/locales/zhTW.js +73 -0
  255. package/managers/index.d.ts +6 -0
  256. package/managers/index.js +3 -0
  257. package/managers/package.json +6 -0
  258. package/managers/useDateManager.d.ts +27 -0
  259. package/managers/useDateManager.js +55 -0
  260. package/managers/useDateTimeManager.d.ts +28 -0
  261. package/managers/useDateTimeManager.js +60 -0
  262. package/managers/useTimeManager.d.ts +28 -0
  263. package/managers/useTimeManager.js +51 -0
  264. package/models/adapters.d.ts +5 -5
  265. package/models/fields.d.ts +33 -9
  266. package/models/index.d.ts +1 -0
  267. package/models/index.js +1 -0
  268. package/models/manager.d.ts +87 -0
  269. package/models/manager.js +1 -0
  270. package/models/pickers.d.ts +7 -0
  271. package/models/validation.d.ts +2 -1
  272. package/modern/AdapterDateFns/AdapterDateFns.js +49 -47
  273. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
  274. package/modern/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
  275. package/modern/AdapterDateFnsJalaliV2/index.js +1 -0
  276. package/modern/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
  277. package/modern/AdapterDateFnsV2/index.js +1 -0
  278. package/modern/AdapterMoment/AdapterMoment.js +10 -0
  279. package/modern/DateCalendar/DateCalendar.js +4 -4
  280. package/modern/DateCalendar/DayCalendar.js +2 -0
  281. package/modern/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  282. package/modern/DateCalendar/PickersSlideTransition.js +12 -5
  283. package/modern/DateField/DateField.js +29 -33
  284. package/modern/DateField/useDateField.js +14 -11
  285. package/modern/DatePicker/DatePicker.js +1 -1
  286. package/modern/DatePicker/DatePickerToolbar.js +17 -33
  287. package/modern/DateTimeField/DateTimeField.js +29 -33
  288. package/modern/DateTimeField/useDateTimeField.js +14 -11
  289. package/modern/DateTimePicker/DateTimePicker.js +2 -2
  290. package/modern/DateTimePicker/DateTimePickerTabs.js +15 -20
  291. package/modern/DateTimePicker/DateTimePickerToolbar.js +88 -80
  292. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  293. package/modern/DesktopDatePicker/DesktopDatePicker.js +11 -17
  294. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
  295. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +9 -34
  296. package/modern/DesktopTimePicker/DesktopTimePicker.js +6 -22
  297. package/modern/DigitalClock/DigitalClock.js +13 -11
  298. package/modern/MobileDatePicker/MobileDatePicker.js +4 -14
  299. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
  300. package/modern/MobileTimePicker/MobileTimePicker.js +4 -14
  301. package/modern/MonthCalendar/MonthCalendar.js +31 -11
  302. package/{MonthCalendar/PickersMonth.js → modern/MonthCalendar/MonthCalendarButton.js} +20 -61
  303. package/modern/MonthCalendar/index.js +1 -2
  304. package/modern/MonthCalendar/monthCalendarClasses.js +1 -1
  305. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
  306. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +14 -10
  307. package/modern/PickersActionBar/PickersActionBar.js +26 -17
  308. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +10 -7
  309. package/modern/PickersLayout/PickersLayout.js +23 -42
  310. package/modern/PickersLayout/usePickerLayout.js +26 -53
  311. package/modern/PickersSectionList/PickersSectionList.js +21 -16
  312. package/modern/PickersShortcuts/PickersShortcuts.js +21 -11
  313. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  314. package/modern/PickersTextField/PickersInput/PickersInput.js +20 -14
  315. package/modern/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  316. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +43 -37
  317. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  318. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  319. package/modern/PickersTextField/PickersTextField.js +75 -62
  320. package/modern/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  321. package/modern/StaticDatePicker/StaticDatePicker.js +2 -2
  322. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  323. package/modern/StaticTimePicker/StaticTimePicker.js +2 -2
  324. package/modern/TimeClock/Clock.js +27 -27
  325. package/modern/TimeClock/ClockNumber.js +15 -11
  326. package/modern/TimeClock/ClockPointer.js +16 -10
  327. package/modern/TimeClock/TimeClock.js +30 -12
  328. package/modern/TimeField/TimeField.js +28 -32
  329. package/modern/TimeField/useTimeField.js +14 -11
  330. package/modern/TimePicker/TimePicker.js +2 -2
  331. package/modern/TimePicker/TimePickerToolbar.js +36 -51
  332. package/modern/YearCalendar/YearCalendar.js +46 -13
  333. package/{YearCalendar/PickersYear.js → modern/YearCalendar/YearCalendarButton.js} +20 -59
  334. package/modern/YearCalendar/index.js +1 -2
  335. package/modern/YearCalendar/yearCalendarClasses.js +1 -1
  336. package/modern/hooks/index.js +3 -1
  337. package/modern/hooks/useClearableField.js +4 -2
  338. package/modern/hooks/useIsValidValue.js +11 -0
  339. package/modern/hooks/useParsedFormat.js +11 -13
  340. package/modern/hooks/usePickerActionsContext.js +15 -0
  341. package/modern/hooks/usePickerContext.js +2 -2
  342. package/modern/hooks/useSplitFieldProps.js +8 -3
  343. package/modern/index.js +3 -2
  344. package/modern/internals/components/PickerFieldUI.js +317 -0
  345. package/{internals/components/PickersPopper.js → modern/internals/components/PickerPopper/PickerPopper.js} +47 -47
  346. package/modern/internals/components/PickerPopper/index.js +2 -0
  347. package/modern/internals/components/PickerPopper/pickerPopperClasses.js +6 -0
  348. package/modern/internals/components/PickerProvider.js +25 -7
  349. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
  350. package/modern/internals/components/PickersModalDialog.js +9 -3
  351. package/modern/internals/components/PickersToolbar.js +15 -12
  352. package/modern/internals/components/PickersToolbarButton.js +4 -6
  353. package/modern/internals/components/PickersToolbarText.js +11 -13
  354. package/modern/internals/hooks/date-helpers-hooks.js +4 -3
  355. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +35 -120
  356. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  357. package/modern/internals/hooks/useField/index.js +2 -1
  358. package/modern/internals/hooks/useField/useField.js +17 -4
  359. package/modern/internals/hooks/useField/useField.utils.js +2 -2
  360. package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +47 -0
  361. package/modern/internals/hooks/useField/useFieldState.js +2 -3
  362. package/modern/internals/hooks/useField/useFieldV6TextField.js +5 -2
  363. package/modern/internals/hooks/useField/useFieldV7TextField.js +6 -3
  364. package/modern/internals/hooks/useFieldOwnerState.js +16 -0
  365. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +34 -68
  366. package/modern/internals/hooks/useNullablePickerContext.js +10 -0
  367. package/modern/internals/hooks/useOpenState.js +11 -9
  368. package/modern/internals/hooks/usePicker/usePicker.js +4 -20
  369. package/modern/internals/hooks/usePicker/usePickerProvider.js +50 -16
  370. package/modern/internals/hooks/usePicker/usePickerValue.js +84 -214
  371. package/modern/internals/hooks/usePicker/usePickerViews.js +31 -20
  372. package/modern/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +5 -2
  373. package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
  374. package/modern/internals/hooks/useToolbarOwnerState.js +13 -0
  375. package/modern/internals/hooks/useUtils.js +1 -1
  376. package/modern/internals/index.js +13 -8
  377. package/modern/internals/models/index.js +2 -1
  378. package/modern/internals/models/manager.js +1 -0
  379. package/modern/internals/models/pickers.js +1 -0
  380. package/modern/internals/utils/date-utils.js +1 -1
  381. package/modern/internals/utils/utils.js +11 -1
  382. package/modern/internals/utils/valueManagers.js +4 -4
  383. package/modern/locales/index.js +1 -0
  384. package/modern/locales/nbNO.js +15 -19
  385. package/modern/locales/nlNL.js +7 -7
  386. package/modern/locales/roRO.js +15 -18
  387. package/modern/locales/utils/getPickersLocalization.js +0 -13
  388. package/modern/locales/zhTW.js +73 -0
  389. package/modern/managers/index.js +3 -0
  390. package/modern/managers/useDateManager.js +55 -0
  391. package/modern/managers/useDateTimeManager.js +60 -0
  392. package/modern/managers/useTimeManager.js +51 -0
  393. package/modern/models/index.js +1 -0
  394. package/modern/models/manager.js +1 -0
  395. package/modern/validation/useValidation.js +1 -1
  396. package/modern/validation/validateDate.js +8 -0
  397. package/modern/validation/validateDateTime.js +8 -0
  398. package/modern/validation/validateTime.js +8 -0
  399. package/node/AdapterDateFns/AdapterDateFns.js +97 -97
  400. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +97 -96
  401. package/node/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +94 -101
  402. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  403. package/node/AdapterDateFnsV2/AdapterDateFnsV2.js +291 -0
  404. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  405. package/node/AdapterMoment/AdapterMoment.js +10 -0
  406. package/node/DateCalendar/DateCalendar.js +4 -4
  407. package/node/DateCalendar/DayCalendar.js +1 -0
  408. package/node/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  409. package/node/DateCalendar/PickersSlideTransition.js +12 -5
  410. package/node/DateField/DateField.js +29 -33
  411. package/node/DateField/useDateField.js +13 -10
  412. package/node/DatePicker/DatePicker.js +1 -1
  413. package/node/DatePicker/DatePickerToolbar.js +17 -33
  414. package/node/DateTimeField/DateTimeField.js +29 -33
  415. package/node/DateTimeField/useDateTimeField.js +13 -10
  416. package/node/DateTimePicker/DateTimePicker.js +2 -2
  417. package/node/DateTimePicker/DateTimePickerTabs.js +15 -20
  418. package/node/DateTimePicker/DateTimePickerToolbar.js +89 -80
  419. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  420. package/node/DesktopDatePicker/DesktopDatePicker.js +11 -17
  421. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
  422. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -35
  423. package/node/DesktopTimePicker/DesktopTimePicker.js +6 -22
  424. package/node/DigitalClock/DigitalClock.js +13 -11
  425. package/node/MobileDatePicker/MobileDatePicker.js +4 -14
  426. package/node/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
  427. package/node/MobileTimePicker/MobileTimePicker.js +4 -14
  428. package/node/MonthCalendar/MonthCalendar.js +31 -11
  429. package/node/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  430. package/node/MonthCalendar/index.js +1 -8
  431. package/node/MonthCalendar/monthCalendarClasses.js +1 -1
  432. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
  433. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -10
  434. package/node/PickersActionBar/PickersActionBar.js +28 -19
  435. package/node/PickersCalendarHeader/PickersCalendarHeader.js +10 -7
  436. package/node/PickersLayout/PickersLayout.js +23 -42
  437. package/node/PickersLayout/usePickerLayout.js +30 -57
  438. package/node/PickersSectionList/PickersSectionList.js +21 -16
  439. package/node/PickersShortcuts/PickersShortcuts.js +21 -11
  440. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  441. package/node/PickersTextField/PickersInput/PickersInput.js +20 -14
  442. package/node/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  443. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +43 -37
  444. package/node/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  445. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  446. package/node/PickersTextField/PickersTextField.js +75 -62
  447. package/node/PickersTextField/usePickerTextFieldOwnerState.js +18 -0
  448. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  449. package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  450. package/node/StaticTimePicker/StaticTimePicker.js +2 -2
  451. package/node/TimeClock/Clock.js +27 -27
  452. package/node/TimeClock/ClockNumber.js +15 -11
  453. package/node/TimeClock/ClockPointer.js +15 -10
  454. package/node/TimeClock/TimeClock.js +30 -12
  455. package/node/TimeField/TimeField.js +28 -32
  456. package/node/TimeField/useTimeField.js +13 -10
  457. package/node/TimePicker/TimePicker.js +2 -2
  458. package/node/TimePicker/TimePickerToolbar.js +36 -51
  459. package/node/YearCalendar/YearCalendar.js +45 -12
  460. package/node/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  461. package/node/YearCalendar/index.js +1 -8
  462. package/node/YearCalendar/yearCalendarClasses.js +1 -1
  463. package/node/hooks/index.js +15 -1
  464. package/node/hooks/useClearableField.js +4 -2
  465. package/node/hooks/useIsValidValue.js +18 -0
  466. package/node/hooks/useParsedFormat.js +11 -13
  467. package/node/hooks/usePickerActionsContext.js +22 -0
  468. package/node/hooks/usePickerContext.js +5 -4
  469. package/node/hooks/useSplitFieldProps.js +7 -2
  470. package/node/index.js +13 -1
  471. package/node/internals/components/PickerFieldUI.js +329 -0
  472. package/node/internals/components/{PickersPopper.js → PickerPopper/PickerPopper.js} +48 -48
  473. package/node/internals/components/PickerPopper/index.js +25 -0
  474. package/node/internals/components/PickerPopper/pickerPopperClasses.js +14 -0
  475. package/node/internals/components/PickerProvider.js +27 -9
  476. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
  477. package/node/internals/components/PickersModalDialog.js +9 -3
  478. package/node/internals/components/PickersToolbar.js +15 -12
  479. package/node/internals/components/PickersToolbarButton.js +4 -6
  480. package/node/internals/components/PickersToolbarText.js +10 -12
  481. package/node/internals/hooks/date-helpers-hooks.js +4 -3
  482. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +37 -122
  483. package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  484. package/node/internals/hooks/useField/index.js +8 -1
  485. package/node/internals/hooks/useField/useField.js +16 -3
  486. package/node/internals/hooks/useField/useField.utils.js +2 -2
  487. package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +56 -0
  488. package/node/internals/hooks/useField/useFieldState.js +2 -3
  489. package/node/internals/hooks/useField/useFieldV6TextField.js +5 -2
  490. package/node/internals/hooks/useField/useFieldV7TextField.js +6 -3
  491. package/node/internals/hooks/useFieldOwnerState.js +24 -0
  492. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +35 -69
  493. package/node/internals/hooks/useNullablePickerContext.js +16 -0
  494. package/node/internals/hooks/useOpenState.js +12 -9
  495. package/node/internals/hooks/usePicker/usePicker.js +4 -20
  496. package/node/internals/hooks/usePicker/usePickerProvider.js +51 -17
  497. package/node/internals/hooks/usePicker/usePickerValue.js +84 -213
  498. package/node/internals/hooks/usePicker/usePickerViews.js +31 -21
  499. package/node/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +7 -4
  500. package/node/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
  501. package/node/internals/hooks/useToolbarOwnerState.js +21 -0
  502. package/node/internals/hooks/useUtils.js +1 -1
  503. package/node/internals/index.js +87 -34
  504. package/node/internals/models/index.js +11 -0
  505. package/node/internals/models/manager.js +5 -0
  506. package/node/internals/models/pickers.js +5 -0
  507. package/node/internals/utils/date-utils.js +1 -1
  508. package/node/internals/utils/utils.js +14 -2
  509. package/node/internals/utils/valueManagers.js +4 -4
  510. package/node/locales/index.js +11 -0
  511. package/node/locales/nbNO.js +15 -19
  512. package/node/locales/nlNL.js +7 -7
  513. package/node/locales/roRO.js +15 -18
  514. package/node/locales/utils/getPickersLocalization.js +2 -16
  515. package/node/locales/zhTW.js +79 -0
  516. package/node/managers/index.js +26 -0
  517. package/node/managers/useDateManager.js +63 -0
  518. package/node/managers/useDateTimeManager.js +68 -0
  519. package/node/managers/useTimeManager.js +59 -0
  520. package/node/models/index.js +11 -0
  521. package/node/models/manager.js +5 -0
  522. package/node/validation/useValidation.js +1 -1
  523. package/node/validation/validateDate.js +8 -0
  524. package/node/validation/validateDateTime.js +8 -0
  525. package/node/validation/validateTime.js +8 -0
  526. package/package.json +5 -5
  527. package/themeAugmentation/components.d.ts +3 -11
  528. package/themeAugmentation/overrides.d.ts +5 -7
  529. package/themeAugmentation/props.d.ts +7 -9
  530. package/validation/extractValidationProps.d.ts +1 -1
  531. package/validation/useValidation.d.ts +7 -6
  532. package/validation/useValidation.js +1 -1
  533. package/validation/validateDate.d.ts +12 -3
  534. package/validation/validateDate.js +8 -0
  535. package/validation/validateDateTime.d.ts +12 -4
  536. package/validation/validateDateTime.js +8 -0
  537. package/validation/validateTime.d.ts +12 -3
  538. package/validation/validateTime.js +8 -0
  539. package/AdapterDateFnsJalaliV3/index.d.ts +0 -1
  540. package/AdapterDateFnsJalaliV3/index.js +0 -1
  541. package/AdapterDateFnsV3/index.d.ts +0 -1
  542. package/AdapterDateFnsV3/index.js +0 -1
  543. package/MonthCalendar/PickersMonth.d.ts +0 -28
  544. package/MonthCalendar/pickersMonthClasses.d.ts +0 -13
  545. package/MonthCalendar/pickersMonthClasses.js +0 -5
  546. package/YearCalendar/PickersYear.d.ts +0 -27
  547. package/YearCalendar/pickersYearClasses.d.ts +0 -13
  548. package/YearCalendar/pickersYearClasses.js +0 -5
  549. package/internals/components/pickersPopperClasses.d.ts +0 -9
  550. package/internals/components/pickersPopperClasses.js +0 -5
  551. package/internals/hooks/defaultizedFieldProps.d.ts +0 -18
  552. package/internals/hooks/defaultizedFieldProps.js +0 -40
  553. package/internals/hooks/useDefaultReduceAnimations.d.ts +0 -2
  554. package/internals/hooks/useIsLandscape.d.ts +0 -4
  555. package/internals/hooks/useIsLandscape.js +0 -35
  556. package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +0 -32
  557. package/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
  558. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
  559. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
  560. package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
  561. package/modern/AdapterDateFnsV3/index.js +0 -1
  562. package/modern/MonthCalendar/pickersMonthClasses.js +0 -5
  563. package/modern/YearCalendar/pickersYearClasses.js +0 -5
  564. package/modern/internals/components/pickersPopperClasses.js +0 -5
  565. package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
  566. package/modern/internals/hooks/useIsLandscape.js +0 -35
  567. package/modern/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
  568. package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
  569. package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
  570. package/node/MonthCalendar/pickersMonthClasses.js +0 -12
  571. package/node/YearCalendar/pickersYearClasses.js +0 -12
  572. package/node/internals/components/pickersPopperClasses.js +0 -12
  573. package/node/internals/hooks/defaultizedFieldProps.js +0 -50
  574. package/node/internals/hooks/useIsLandscape.js +0 -43
  575. package/node/internals/hooks/usePicker/usePickerLayoutProps.js +0 -38
  576. package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -52
@@ -13,106 +13,6 @@ var _useOpenState = require("../useOpenState");
13
13
  var _useUtils = require("../useUtils");
14
14
  var _validation = require("../../../validation");
15
15
  var _useValueWithTimezone = require("../useValueWithTimezone");
16
- /**
17
- * Decide if the new value should be published
18
- * The published value will be passed to `onChange` if defined.
19
- */
20
- const shouldPublishValue = params => {
21
- const {
22
- action,
23
- hasChanged,
24
- dateState,
25
- isControlled
26
- } = params;
27
- const isCurrentValueTheDefaultValue = !isControlled && !dateState.hasBeenModifiedSinceMount;
28
-
29
- // The field is responsible for only calling `onChange` when needed.
30
- if (action.name === 'setValueFromField') {
31
- return true;
32
- }
33
- if (action.name === 'setValueFromAction') {
34
- // If the component is not controlled, and the value has not been modified since the mount,
35
- // Then we want to publish the default value whenever the user pressed the "Accept", "Today" or "Clear" button.
36
- if (isCurrentValueTheDefaultValue && ['accept', 'today', 'clear'].includes(action.pickerAction)) {
37
- return true;
38
- }
39
- return hasChanged(dateState.lastPublishedValue);
40
- }
41
- if (action.name === 'setValueFromView' && action.selectionState !== 'shallow') {
42
- // On the first view,
43
- // If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`
44
- if (isCurrentValueTheDefaultValue) {
45
- return true;
46
- }
47
- return hasChanged(dateState.lastPublishedValue);
48
- }
49
- if (action.name === 'setValueFromShortcut') {
50
- // On the first view,
51
- // If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`
52
- if (isCurrentValueTheDefaultValue) {
53
- return true;
54
- }
55
- return hasChanged(dateState.lastPublishedValue);
56
- }
57
- return false;
58
- };
59
-
60
- /**
61
- * Decide if the new value should be committed.
62
- * The committed value will be passed to `onAccept` if defined.
63
- * It will also be used as a reset target when calling the `cancel` picker action (when clicking on the "Cancel" button).
64
- */
65
- const shouldCommitValue = params => {
66
- const {
67
- action,
68
- hasChanged,
69
- dateState,
70
- isControlled,
71
- closeOnSelect
72
- } = params;
73
- const isCurrentValueTheDefaultValue = !isControlled && !dateState.hasBeenModifiedSinceMount;
74
- if (action.name === 'setValueFromAction') {
75
- // If the component is not controlled, and the value has not been modified since the mount,
76
- // Then we want to commit the default value whenever the user pressed the "Accept", "Today" or "Clear" button.
77
- if (isCurrentValueTheDefaultValue && ['accept', 'today', 'clear'].includes(action.pickerAction)) {
78
- return true;
79
- }
80
- return hasChanged(dateState.lastCommittedValue);
81
- }
82
- if (action.name === 'setValueFromView' && action.selectionState === 'finish' && closeOnSelect) {
83
- // On picker where the 1st view is also the last view,
84
- // If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onAccept`
85
- if (isCurrentValueTheDefaultValue) {
86
- return true;
87
- }
88
- return hasChanged(dateState.lastCommittedValue);
89
- }
90
- if (action.name === 'setValueFromShortcut') {
91
- return action.changeImportance === 'accept' && hasChanged(dateState.lastCommittedValue);
92
- }
93
- return false;
94
- };
95
-
96
- /**
97
- * Decide if the picker should be closed after the value is updated.
98
- */
99
- const shouldClosePicker = params => {
100
- const {
101
- action,
102
- closeOnSelect
103
- } = params;
104
- if (action.name === 'setValueFromAction') {
105
- return true;
106
- }
107
- if (action.name === 'setValueFromView') {
108
- return action.selectionState === 'finish' && closeOnSelect;
109
- }
110
- if (action.name === 'setValueFromShortcut') {
111
- return action.changeImportance === 'accept';
112
- }
113
- return false;
114
- };
115
-
116
16
  /**
117
17
  * Manage the value lifecycle of all the pickers.
118
18
  */
@@ -120,7 +20,6 @@ const usePickerValue = ({
120
20
  props,
121
21
  valueManager,
122
22
  valueType,
123
- variant,
124
23
  validator
125
24
  }) => {
126
25
  const {
@@ -128,7 +27,7 @@ const usePickerValue = ({
128
27
  onChange,
129
28
  value: inValueWithoutRenderTimezone,
130
29
  defaultValue: inDefaultValue,
131
- closeOnSelect = variant === 'desktop',
30
+ closeOnSelect = false,
132
31
  timezone: timezoneProp,
133
32
  referenceDate
134
33
  } = props;
@@ -158,8 +57,8 @@ const usePickerValue = ({
158
57
  const utils = (0, _useUtils.useUtils)();
159
58
  const adapter = (0, _useUtils.useLocalizationContext)();
160
59
  const {
161
- isOpen,
162
- setIsOpen
60
+ open,
61
+ setOpen
163
62
  } = (0, _useOpenState.useOpenState)(props);
164
63
  const {
165
64
  timezone,
@@ -208,44 +107,51 @@ const usePickerValue = ({
208
107
  value: dateState.draft,
209
108
  onError: props.onError
210
109
  });
211
- const updateDate = (0, _useEventCallback.default)(action => {
212
- const updaterParams = {
213
- action,
214
- dateState,
215
- hasChanged: comparison => !valueManager.areValuesEqual(utils, action.value, comparison),
216
- isControlled,
217
- closeOnSelect
218
- };
219
- const shouldPublish = shouldPublishValue(updaterParams);
220
- const shouldCommit = shouldCommitValue(updaterParams);
221
- const shouldClose = shouldClosePicker(updaterParams);
110
+ const setValue = (0, _useEventCallback.default)((newValue, options) => {
111
+ const {
112
+ changeImportance = 'accept',
113
+ skipPublicationIfPristine = false,
114
+ validationError,
115
+ shortcut,
116
+ shouldClose = changeImportance === 'accept'
117
+ } = options ?? {};
118
+ let shouldPublish;
119
+ let shouldCommit;
120
+ if (!skipPublicationIfPristine && !isControlled && !dateState.hasBeenModifiedSinceMount) {
121
+ // If the value is not controlled and the value has never been modified before,
122
+ // Then clicking on any value (including the one equal to `defaultValue`) should call `onChange` and `onAccept`
123
+ shouldPublish = true;
124
+ shouldCommit = changeImportance === 'accept';
125
+ } else {
126
+ shouldPublish = !valueManager.areValuesEqual(utils, newValue, dateState.lastPublishedValue);
127
+ shouldCommit = changeImportance === 'accept' && !valueManager.areValuesEqual(utils, newValue, dateState.lastCommittedValue);
128
+ }
222
129
  setDateState(prev => (0, _extends2.default)({}, prev, {
223
- draft: action.value,
224
- lastPublishedValue: shouldPublish ? action.value : prev.lastPublishedValue,
225
- lastCommittedValue: shouldCommit ? action.value : prev.lastCommittedValue,
130
+ draft: newValue,
131
+ lastPublishedValue: shouldPublish ? newValue : prev.lastPublishedValue,
132
+ lastCommittedValue: shouldCommit ? newValue : prev.lastCommittedValue,
226
133
  hasBeenModifiedSinceMount: true
227
134
  }));
228
135
  let cachedContext = null;
229
136
  const getContext = () => {
230
137
  if (!cachedContext) {
231
- const validationError = action.name === 'setValueFromField' ? action.context.validationError : getValidationErrorForNewValue(action.value);
232
138
  cachedContext = {
233
- validationError
139
+ validationError: validationError == null ? getValidationErrorForNewValue(newValue) : validationError
234
140
  };
235
- if (action.name === 'setValueFromShortcut') {
236
- cachedContext.shortcut = action.shortcut;
141
+ if (shortcut) {
142
+ cachedContext.shortcut = shortcut;
237
143
  }
238
144
  }
239
145
  return cachedContext;
240
146
  };
241
147
  if (shouldPublish) {
242
- handleValueChange(action.value, getContext());
148
+ handleValueChange(newValue, getContext());
243
149
  }
244
150
  if (shouldCommit && onAccept) {
245
- onAccept(action.value, getContext());
151
+ onAccept(newValue, getContext());
246
152
  }
247
153
  if (shouldClose) {
248
- setIsOpen(false);
154
+ setOpen(false);
249
155
  }
250
156
  });
251
157
  if (dateState.lastControlledValue !== inValueWithoutRenderTimezone) {
@@ -259,85 +165,6 @@ const usePickerValue = ({
259
165
  hasBeenModifiedSinceMount: true
260
166
  }));
261
167
  }
262
- const handleClear = (0, _useEventCallback.default)(() => {
263
- updateDate({
264
- value: valueManager.emptyValue,
265
- name: 'setValueFromAction',
266
- pickerAction: 'clear'
267
- });
268
- });
269
- const handleAccept = (0, _useEventCallback.default)(() => {
270
- updateDate({
271
- value: dateState.lastPublishedValue,
272
- name: 'setValueFromAction',
273
- pickerAction: 'accept'
274
- });
275
- });
276
- const handleDismiss = (0, _useEventCallback.default)(() => {
277
- updateDate({
278
- value: dateState.lastPublishedValue,
279
- name: 'setValueFromAction',
280
- pickerAction: 'dismiss'
281
- });
282
- });
283
- const handleCancel = (0, _useEventCallback.default)(() => {
284
- updateDate({
285
- value: dateState.lastCommittedValue,
286
- name: 'setValueFromAction',
287
- pickerAction: 'cancel'
288
- });
289
- });
290
- const handleSetToday = (0, _useEventCallback.default)(() => {
291
- updateDate({
292
- value: valueManager.getTodayValue(utils, timezone, valueType),
293
- name: 'setValueFromAction',
294
- pickerAction: 'today'
295
- });
296
- });
297
- const handleOpen = (0, _useEventCallback.default)(event => {
298
- event.preventDefault();
299
- setIsOpen(true);
300
- });
301
- const handleClose = (0, _useEventCallback.default)(event => {
302
- event?.preventDefault();
303
- setIsOpen(false);
304
- });
305
- const handleChange = (0, _useEventCallback.default)((newValue, selectionState = 'partial') => updateDate({
306
- name: 'setValueFromView',
307
- value: newValue,
308
- selectionState
309
- }));
310
- const handleSelectShortcut = (0, _useEventCallback.default)((newValue, changeImportance, shortcut) => updateDate({
311
- name: 'setValueFromShortcut',
312
- value: newValue,
313
- changeImportance,
314
- shortcut
315
- }));
316
- const handleChangeFromField = (0, _useEventCallback.default)((newValue, context) => updateDate({
317
- name: 'setValueFromField',
318
- value: newValue,
319
- context
320
- }));
321
- const actions = {
322
- onClear: handleClear,
323
- onAccept: handleAccept,
324
- onDismiss: handleDismiss,
325
- onCancel: handleCancel,
326
- onSetToday: handleSetToday,
327
- onOpen: handleOpen,
328
- onClose: handleClose
329
- };
330
- const fieldResponse = {
331
- value: dateState.draft,
332
- onChange: handleChangeFromField
333
- };
334
- const viewValue = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
335
- const viewResponse = {
336
- value: viewValue,
337
- onChange: handleChange,
338
- onClose: handleClose,
339
- open: isOpen
340
- };
341
168
  const isValid = testedValue => {
342
169
  const error = validator({
343
170
  adapter,
@@ -347,18 +174,62 @@ const usePickerValue = ({
347
174
  });
348
175
  return !valueManager.hasError(error);
349
176
  };
350
- const layoutResponse = (0, _extends2.default)({}, actions, {
351
- value: viewValue,
352
- onChange: handleChange,
353
- onSelectShortcut: handleSelectShortcut,
354
- isValid
177
+ const clearValue = (0, _useEventCallback.default)(() => setValue(valueManager.emptyValue));
178
+ const setValueToToday = (0, _useEventCallback.default)(() => setValue(valueManager.getTodayValue(utils, timezone, valueType)));
179
+ const acceptValueChanges = (0, _useEventCallback.default)(() => setValue(dateState.lastPublishedValue));
180
+ const cancelValueChanges = (0, _useEventCallback.default)(() => setValue(dateState.lastCommittedValue, {
181
+ skipPublicationIfPristine: true
182
+ }));
183
+ const dismissViews = (0, _useEventCallback.default)(() => {
184
+ setValue(dateState.lastPublishedValue, {
185
+ skipPublicationIfPristine: true
186
+ });
187
+ });
188
+ const setValueFromView = (0, _useEventCallback.default)((newValue, selectionState = 'partial') => {
189
+ // TODO: Expose a new method (private?) like `setView` that only updates the draft value.
190
+ if (selectionState === 'shallow') {
191
+ setDateState(prev => (0, _extends2.default)({}, prev, {
192
+ draft: newValue,
193
+ hasBeenModifiedSinceMount: true
194
+ }));
195
+ }
196
+ setValue(newValue, {
197
+ changeImportance: selectionState === 'finish' && closeOnSelect ? 'accept' : 'set'
198
+ });
355
199
  });
200
+ const valueWithoutError = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
201
+ const viewResponse = {
202
+ value: valueWithoutError,
203
+ onChange: setValueFromView,
204
+ open,
205
+ setOpen
206
+ };
207
+ const actionsContextValue = React.useMemo(() => ({
208
+ setValue,
209
+ setOpen,
210
+ clearValue,
211
+ setValueToToday,
212
+ acceptValueChanges,
213
+ cancelValueChanges
214
+ }), [setValue, setOpen, clearValue, setValueToToday, acceptValueChanges, cancelValueChanges]);
215
+ const contextValue = React.useMemo(() => (0, _extends2.default)({}, actionsContextValue, {
216
+ value: dateState.draft,
217
+ timezone,
218
+ open
219
+ }), [actionsContextValue, timezone, open, dateState.draft]);
220
+ const privateContextValue = React.useMemo(() => ({
221
+ dismissViews
222
+ }), [dismissViews]);
223
+ const providerParams = {
224
+ value: dateState.draft,
225
+ contextValue,
226
+ actionsContextValue,
227
+ privateContextValue,
228
+ isValidContextValue: isValid
229
+ };
356
230
  return {
357
- open: isOpen,
358
- fieldProps: fieldResponse,
359
231
  viewProps: viewResponse,
360
- layoutProps: layoutResponse,
361
- actions
232
+ provider: providerParams
362
233
  };
363
234
  };
364
235
  exports.usePickerValue = usePickerValue;
@@ -13,19 +13,14 @@ var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedE
13
13
  var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
14
14
  var _useViews = require("../useViews");
15
15
  var _timeUtils = require("../../utils/time-utils");
16
+ var _jsxRuntime = require("react/jsx-runtime");
16
17
  const _excluded = ["className", "sx"];
17
18
  /**
18
19
  * Props used to handle the views that are common to all pickers.
19
20
  */
20
-
21
- /**
22
- * Props used to handle the views of the pickers.
23
- */
24
-
25
21
  /**
26
22
  * Props used to handle the value of the pickers.
27
23
  */
28
-
29
24
  /**
30
25
  * Manage the views of all the pickers:
31
26
  * - Handles the view switch
@@ -35,15 +30,15 @@ const _excluded = ["className", "sx"];
35
30
  const usePickerViews = ({
36
31
  props,
37
32
  propsFromPickerValue,
38
- additionalViewProps,
39
33
  autoFocusView,
40
- rendererInterceptor,
34
+ rendererInterceptor: RendererInterceptor,
41
35
  fieldRef
42
36
  }) => {
43
37
  const {
44
38
  onChange,
39
+ value,
45
40
  open,
46
- onClose
41
+ setOpen
47
42
  } = propsFromPickerValue;
48
43
  const {
49
44
  view: inView,
@@ -95,7 +90,7 @@ const usePickerViews = ({
95
90
  return acc;
96
91
  }, 0), [viewRenderers, views]);
97
92
  const currentViewMode = viewModeLookup[view];
98
- const shouldRestoreFocus = (0, _useEventCallback.default)(() => currentViewMode === 'UI');
93
+ const doesTheCurrentViewHasAnUI = (0, _useEventCallback.default)(() => currentViewMode === 'UI');
99
94
  const [popperView, setPopperView] = React.useState(currentViewMode === 'UI' ? view : null);
100
95
  if (popperView !== view && viewModeLookup[view] === 'UI') {
101
96
  setPopperView(view);
@@ -103,7 +98,7 @@ const usePickerViews = ({
103
98
  (0, _useEnhancedEffect.default)(() => {
104
99
  // Handle case of `DateTimePicker` without time renderers
105
100
  if (currentViewMode === 'field' && open) {
106
- onClose();
101
+ setOpen(false);
107
102
  setTimeout(() => {
108
103
  fieldRef?.current?.setSelectedSections(view);
109
104
  // focusing the input before the range selection is done
@@ -134,16 +129,26 @@ const usePickerViews = ({
134
129
  setFocusedView(newView, true);
135
130
  }, [open]); // eslint-disable-line react-hooks/exhaustive-deps
136
131
 
137
- const layoutProps = {
132
+ const actionsContextValue = React.useMemo(() => ({
133
+ setView
134
+ }), [setView]);
135
+ const contextValue = React.useMemo(() => (0, _extends2.default)({}, actionsContextValue, {
138
136
  views,
139
- view: popperView,
140
- onViewChange: setView
141
- };
142
- return {
137
+ view: popperView
138
+ }), [actionsContextValue, views, popperView]);
139
+ const privateContextValue = React.useMemo(() => ({
140
+ hasUIView,
141
+ doesTheCurrentViewHasAnUI
142
+ }), [hasUIView, doesTheCurrentViewHasAnUI]);
143
+ const providerParams = {
143
144
  hasUIView,
144
145
  views,
145
- shouldRestoreFocus,
146
- layoutProps,
146
+ contextValue,
147
+ actionsContextValue,
148
+ privateContextValue
149
+ };
150
+ return {
151
+ provider: providerParams,
147
152
  renderCurrentView: () => {
148
153
  if (popperView == null) {
149
154
  return null;
@@ -152,9 +157,10 @@ const usePickerViews = ({
152
157
  if (renderer == null) {
153
158
  return null;
154
159
  }
155
- const rendererProps = (0, _extends2.default)({}, propsToForwardToView, additionalViewProps, propsFromPickerValue, {
160
+ const rendererProps = (0, _extends2.default)({}, propsToForwardToView, {
156
161
  views,
157
162
  timezone,
163
+ value,
158
164
  onChange: setValueAndGoToNextView,
159
165
  view: popperView,
160
166
  onViewChange: setView,
@@ -163,8 +169,12 @@ const usePickerViews = ({
163
169
  showViewSwitcher: timeViewsCount > 1,
164
170
  timeViewsCount
165
171
  });
166
- if (rendererInterceptor) {
167
- return rendererInterceptor(viewRenderers, popperView, rendererProps);
172
+ if (RendererInterceptor) {
173
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(RendererInterceptor, {
174
+ viewRenderers: viewRenderers,
175
+ popperView: popperView,
176
+ rendererProps: rendererProps
177
+ });
168
178
  }
169
179
  return renderer(rendererProps);
170
180
  }
@@ -4,7 +4,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useDefaultReduceAnimations = exports.slowAnimationDevices = void 0;
7
+ exports.slowAnimationDevices = void 0;
8
+ exports.useReduceAnimations = useReduceAnimations;
8
9
  var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
9
10
  const PREFERS_REDUCED_MOTION = '@media (prefers-reduced-motion: reduce)';
10
11
 
@@ -13,10 +14,12 @@ const mobileVersionMatches = typeof navigator !== 'undefined' && navigator.userA
13
14
  const androidVersion = mobileVersionMatches && mobileVersionMatches[1] ? parseInt(mobileVersionMatches[1], 10) : null;
14
15
  const iOSVersion = mobileVersionMatches && mobileVersionMatches[2] ? parseInt(mobileVersionMatches[2], 10) : null;
15
16
  const slowAnimationDevices = exports.slowAnimationDevices = androidVersion && androidVersion < 10 || iOSVersion && iOSVersion < 13 || false;
16
- const useDefaultReduceAnimations = () => {
17
+ function useReduceAnimations(customReduceAnimations) {
17
18
  const prefersReduced = (0, _useMediaQuery.default)(PREFERS_REDUCED_MOTION, {
18
19
  defaultMatches: false
19
20
  });
21
+ if (customReduceAnimations != null) {
22
+ return customReduceAnimations;
23
+ }
20
24
  return prefersReduced || slowAnimationDevices;
21
- };
22
- exports.useDefaultReduceAnimations = useDefaultReduceAnimations;
25
+ }
@@ -15,8 +15,9 @@ var _usePicker = require("../usePicker");
15
15
  var _PickerProvider = require("../../components/PickerProvider");
16
16
  var _PickersLayout = require("../../../PickersLayout");
17
17
  var _dimensions = require("../../constants/dimensions");
18
+ var _utils = require("../../utils/utils");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
- const _excluded = ["props", "ref"];
20
+ const _excluded = ["props"];
20
21
  const PickerStaticLayout = (0, _styles.styled)(_PickersLayout.PickersLayout)(({
21
22
  theme
22
23
  }) => ({
@@ -33,39 +34,33 @@ const PickerStaticLayout = (0, _styles.styled)(_PickersLayout.PickersLayout)(({
33
34
  */
34
35
  const useStaticPicker = _ref => {
35
36
  let {
36
- props,
37
- ref
37
+ props
38
38
  } = _ref,
39
39
  pickerParams = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
40
40
  const {
41
41
  localeText,
42
42
  slots,
43
43
  slotProps,
44
- className,
45
- sx,
46
44
  displayStaticWrapperAs,
47
45
  autoFocus
48
46
  } = props;
49
47
  const {
50
- layoutProps,
51
48
  providerProps,
52
49
  renderCurrentView
53
50
  } = (0, _usePicker.usePicker)((0, _extends2.default)({}, pickerParams, {
54
51
  props,
55
52
  autoFocusView: autoFocus ?? false,
56
- fieldRef: undefined,
57
53
  localeText,
58
- additionalViewProps: {},
59
54
  variant: displayStaticWrapperAs
60
55
  }));
61
56
  const Layout = slots?.layout ?? PickerStaticLayout;
62
57
  const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickerProvider.PickerProvider, (0, _extends2.default)({}, providerProps, {
63
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, layoutProps, slotProps?.layout, {
58
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
64
59
  slots: slots,
65
60
  slotProps: slotProps,
66
- sx: [...(Array.isArray(sx) ? sx : [sx]), ...(Array.isArray(slotProps?.layout?.sx) ? slotProps.layout.sx : [slotProps?.layout?.sx])],
67
- className: (0, _clsx.default)(className, slotProps?.layout?.className),
68
- ref: ref,
61
+ sx: (0, _utils.mergeSx)(providerProps.contextValue.rootSx, slotProps?.layout?.sx),
62
+ className: (0, _clsx.default)(providerProps.contextValue.rootClassName, slotProps?.layout?.className),
63
+ ref: providerProps.contextValue.rootRef,
69
64
  children: renderCurrentView()
70
65
  }))
71
66
  }));
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useToolbarOwnerState = useToolbarOwnerState;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var React = _interopRequireWildcard(require("react"));
11
+ var _RtlProvider = require("@mui/system/RtlProvider");
12
+ var _usePickerPrivateContext = require("./usePickerPrivateContext");
13
+ function useToolbarOwnerState() {
14
+ const {
15
+ ownerState: pickerOwnerState
16
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
17
+ const isRtl = (0, _RtlProvider.useRtl)();
18
+ return React.useMemo(() => (0, _extends2.default)({}, pickerOwnerState, {
19
+ toolbarDirection: isRtl ? 'rtl' : 'ltr'
20
+ }), [pickerOwnerState, isRtl]);
21
+ }
@@ -30,7 +30,7 @@ const useDefaultDates = () => useLocalizationContext().defaultDates;
30
30
  exports.useDefaultDates = useDefaultDates;
31
31
  const useNow = timezone => {
32
32
  const utils = useUtils();
33
- const now = React.useRef();
33
+ const now = React.useRef(undefined);
34
34
  if (now.current === undefined) {
35
35
  now.current = utils.date(undefined, timezone);
36
36
  }