@mui/x-date-pickers 8.0.0-alpha.0 → 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 (584) 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 +2215 -119
  21. package/DateCalendar/DateCalendar.js +5 -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 -45
  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 +92 -93
  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 -46
  56. package/DesktopTimePicker/DesktopTimePicker.js +6 -22
  57. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  58. package/DigitalClock/DigitalClock.js +14 -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 +32 -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 +12 -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 -54
  85. package/PickersLayout/PickersLayout.types.d.ts +20 -22
  86. package/PickersLayout/usePickerLayout.d.ts +5 -4
  87. package/PickersLayout/usePickerLayout.js +26 -57
  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 +51 -44
  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 +10 -7
  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 +28 -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 +31 -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 +40 -64
  130. package/TimePicker/shared.d.ts +6 -6
  131. package/YearCalendar/YearCalendar.js +47 -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 +15 -6
  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 +94 -14
  164. package/internals/components/PickerProvider.js +28 -8
  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 +16 -15
  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 +36 -121
  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 +56 -49
  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 +3 -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 +8 -4
  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 +35 -69
  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 +10 -29
  206. package/internals/hooks/usePicker/usePicker.types.d.ts +11 -11
  207. package/internals/hooks/usePicker/usePickerProvider.d.ts +58 -7
  208. package/internals/hooks/usePicker/usePickerProvider.js +102 -12
  209. package/internals/hooks/usePicker/usePickerValue.d.ts +3 -2
  210. package/internals/hooks/usePicker/usePickerValue.js +100 -218
  211. package/internals/hooks/usePicker/usePickerValue.types.d.ts +135 -79
  212. package/internals/hooks/usePicker/usePickerViews.d.ts +59 -40
  213. package/internals/hooks/usePicker/usePickerViews.js +31 -19
  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 +8 -13
  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 +20 -15
  224. package/internals/hooks/useValueWithTimezone.js +13 -1
  225. package/internals/hooks/useViews.d.ts +5 -5
  226. package/internals/index.d.ts +28 -19
  227. package/internals/index.js +13 -8
  228. package/internals/models/common.d.ts +2 -1
  229. package/internals/models/fields.d.ts +8 -24
  230. package/internals/models/index.d.ts +1 -0
  231. package/internals/models/index.js +2 -1
  232. package/internals/models/manager.d.ts +15 -0
  233. package/internals/models/manager.js +1 -0
  234. package/internals/models/pickers.d.ts +1 -0
  235. package/internals/models/pickers.js +1 -0
  236. package/internals/models/props/basePickerProps.d.ts +3 -33
  237. package/internals/models/props/tabs.d.ts +0 -13
  238. package/internals/models/props/time.d.ts +2 -1
  239. package/internals/models/props/toolbar.d.ts +1 -20
  240. package/internals/models/value.d.ts +9 -0
  241. package/internals/utils/date-utils.d.ts +3 -3
  242. package/internals/utils/date-utils.js +1 -1
  243. package/internals/utils/utils.d.ts +3 -0
  244. package/internals/utils/utils.js +11 -1
  245. package/internals/utils/valueManagers.d.ts +4 -3
  246. package/internals/utils/valueManagers.js +4 -4
  247. package/locales/index.d.ts +1 -0
  248. package/locales/index.js +1 -0
  249. package/locales/nbNO.js +15 -19
  250. package/locales/nlNL.js +7 -7
  251. package/locales/roRO.js +15 -18
  252. package/locales/utils/getPickersLocalization.d.ts +0 -7
  253. package/locales/utils/getPickersLocalization.js +0 -13
  254. package/locales/zhTW.d.ts +80 -0
  255. package/locales/zhTW.js +73 -0
  256. package/managers/index.d.ts +6 -0
  257. package/managers/index.js +3 -0
  258. package/managers/package.json +6 -0
  259. package/managers/useDateManager.d.ts +27 -0
  260. package/managers/useDateManager.js +55 -0
  261. package/managers/useDateTimeManager.d.ts +28 -0
  262. package/managers/useDateTimeManager.js +60 -0
  263. package/managers/useTimeManager.d.ts +28 -0
  264. package/managers/useTimeManager.js +51 -0
  265. package/models/adapters.d.ts +5 -5
  266. package/models/common.d.ts +1 -0
  267. package/models/fields.d.ts +33 -10
  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 +25 -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 +5 -4
  282. package/modern/DateCalendar/DayCalendar.js +2 -0
  283. package/modern/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  284. package/modern/DateCalendar/PickersSlideTransition.js +12 -5
  285. package/modern/DateField/DateField.js +29 -33
  286. package/modern/DateField/useDateField.js +14 -11
  287. package/modern/DatePicker/DatePicker.js +1 -1
  288. package/modern/DatePicker/DatePickerToolbar.js +17 -45
  289. package/modern/DateTimeField/DateTimeField.js +29 -33
  290. package/modern/DateTimeField/useDateTimeField.js +14 -11
  291. package/modern/DateTimePicker/DateTimePicker.js +2 -2
  292. package/modern/DateTimePicker/DateTimePickerTabs.js +15 -20
  293. package/modern/DateTimePicker/DateTimePickerToolbar.js +92 -93
  294. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  295. package/modern/DesktopDatePicker/DesktopDatePicker.js +11 -17
  296. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
  297. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +9 -46
  298. package/modern/DesktopTimePicker/DesktopTimePicker.js +6 -22
  299. package/modern/DigitalClock/DigitalClock.js +14 -11
  300. package/modern/MobileDatePicker/MobileDatePicker.js +4 -14
  301. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
  302. package/modern/MobileTimePicker/MobileTimePicker.js +4 -14
  303. package/modern/MonthCalendar/MonthCalendar.js +32 -11
  304. package/{MonthCalendar/PickersMonth.js → modern/MonthCalendar/MonthCalendarButton.js} +20 -61
  305. package/modern/MonthCalendar/index.js +1 -2
  306. package/modern/MonthCalendar/monthCalendarClasses.js +1 -1
  307. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +12 -7
  308. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +14 -10
  309. package/modern/PickersActionBar/PickersActionBar.js +26 -17
  310. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +10 -7
  311. package/modern/PickersLayout/PickersLayout.js +23 -54
  312. package/modern/PickersLayout/usePickerLayout.js +26 -57
  313. package/modern/PickersSectionList/PickersSectionList.js +21 -16
  314. package/modern/PickersShortcuts/PickersShortcuts.js +21 -11
  315. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  316. package/modern/PickersTextField/PickersInput/PickersInput.js +20 -14
  317. package/modern/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  318. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +51 -44
  319. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  320. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  321. package/modern/PickersTextField/PickersTextField.js +75 -62
  322. package/modern/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  323. package/modern/StaticDatePicker/StaticDatePicker.js +2 -2
  324. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  325. package/modern/StaticTimePicker/StaticTimePicker.js +2 -2
  326. package/modern/TimeClock/Clock.js +28 -27
  327. package/modern/TimeClock/ClockNumber.js +15 -11
  328. package/modern/TimeClock/ClockPointer.js +16 -10
  329. package/modern/TimeClock/TimeClock.js +31 -12
  330. package/modern/TimeField/TimeField.js +28 -32
  331. package/modern/TimeField/useTimeField.js +14 -11
  332. package/modern/TimePicker/TimePicker.js +2 -2
  333. package/modern/TimePicker/TimePickerToolbar.js +40 -64
  334. package/modern/YearCalendar/YearCalendar.js +47 -13
  335. package/{YearCalendar/PickersYear.js → modern/YearCalendar/YearCalendarButton.js} +20 -59
  336. package/modern/YearCalendar/index.js +1 -2
  337. package/modern/YearCalendar/yearCalendarClasses.js +1 -1
  338. package/modern/hooks/index.js +3 -1
  339. package/modern/hooks/useClearableField.js +4 -2
  340. package/modern/hooks/useIsValidValue.js +11 -0
  341. package/modern/hooks/useParsedFormat.js +11 -13
  342. package/modern/hooks/usePickerActionsContext.js +15 -0
  343. package/modern/hooks/usePickerContext.js +2 -2
  344. package/modern/hooks/useSplitFieldProps.js +8 -3
  345. package/modern/index.js +3 -2
  346. package/modern/internals/components/PickerFieldUI.js +317 -0
  347. package/{internals/components/PickersPopper.js → modern/internals/components/PickerPopper/PickerPopper.js} +47 -47
  348. package/modern/internals/components/PickerPopper/index.js +2 -0
  349. package/modern/internals/components/PickerPopper/pickerPopperClasses.js +6 -0
  350. package/modern/internals/components/PickerProvider.js +28 -8
  351. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
  352. package/modern/internals/components/PickersModalDialog.js +9 -3
  353. package/modern/internals/components/PickersToolbar.js +16 -15
  354. package/modern/internals/components/PickersToolbarButton.js +4 -6
  355. package/modern/internals/components/PickersToolbarText.js +11 -13
  356. package/modern/internals/hooks/date-helpers-hooks.js +4 -3
  357. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +36 -121
  358. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  359. package/modern/internals/hooks/useField/index.js +2 -1
  360. package/modern/internals/hooks/useField/useField.js +17 -4
  361. package/modern/internals/hooks/useField/useField.utils.js +2 -2
  362. package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +47 -0
  363. package/modern/internals/hooks/useField/useFieldState.js +3 -3
  364. package/modern/internals/hooks/useField/useFieldV6TextField.js +5 -2
  365. package/modern/internals/hooks/useField/useFieldV7TextField.js +8 -4
  366. package/modern/internals/hooks/useFieldOwnerState.js +16 -0
  367. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +35 -69
  368. package/modern/internals/hooks/useNullablePickerContext.js +10 -0
  369. package/modern/internals/hooks/useOpenState.js +11 -9
  370. package/modern/internals/hooks/usePicker/usePicker.js +10 -29
  371. package/modern/internals/hooks/usePicker/usePickerProvider.js +102 -12
  372. package/modern/internals/hooks/usePicker/usePickerValue.js +100 -218
  373. package/modern/internals/hooks/usePicker/usePickerViews.js +31 -19
  374. package/modern/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +5 -2
  375. package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +8 -13
  376. package/modern/internals/hooks/useToolbarOwnerState.js +13 -0
  377. package/modern/internals/hooks/useUtils.js +1 -1
  378. package/modern/internals/hooks/useValueWithTimezone.js +13 -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 +5 -4
  410. package/node/DateCalendar/DayCalendar.js +1 -0
  411. package/node/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  412. package/node/DateCalendar/PickersSlideTransition.js +12 -5
  413. package/node/DateField/DateField.js +29 -33
  414. package/node/DateField/useDateField.js +13 -10
  415. package/node/DatePicker/DatePicker.js +1 -1
  416. package/node/DatePicker/DatePickerToolbar.js +17 -45
  417. package/node/DateTimeField/DateTimeField.js +29 -33
  418. package/node/DateTimeField/useDateTimeField.js +13 -10
  419. package/node/DateTimePicker/DateTimePicker.js +2 -2
  420. package/node/DateTimePicker/DateTimePickerTabs.js +15 -20
  421. package/node/DateTimePicker/DateTimePickerToolbar.js +93 -93
  422. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  423. package/node/DesktopDatePicker/DesktopDatePicker.js +11 -17
  424. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
  425. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -47
  426. package/node/DesktopTimePicker/DesktopTimePicker.js +6 -22
  427. package/node/DigitalClock/DigitalClock.js +14 -11
  428. package/node/MobileDatePicker/MobileDatePicker.js +4 -14
  429. package/node/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
  430. package/node/MobileTimePicker/MobileTimePicker.js +4 -14
  431. package/node/MonthCalendar/MonthCalendar.js +32 -11
  432. package/node/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  433. package/node/MonthCalendar/index.js +1 -8
  434. package/node/MonthCalendar/monthCalendarClasses.js +1 -1
  435. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +12 -7
  436. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -10
  437. package/node/PickersActionBar/PickersActionBar.js +28 -19
  438. package/node/PickersCalendarHeader/PickersCalendarHeader.js +10 -7
  439. package/node/PickersLayout/PickersLayout.js +23 -54
  440. package/node/PickersLayout/usePickerLayout.js +30 -61
  441. package/node/PickersSectionList/PickersSectionList.js +21 -16
  442. package/node/PickersShortcuts/PickersShortcuts.js +21 -11
  443. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  444. package/node/PickersTextField/PickersInput/PickersInput.js +20 -14
  445. package/node/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  446. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +51 -44
  447. package/node/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  448. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  449. package/node/PickersTextField/PickersTextField.js +75 -62
  450. package/node/PickersTextField/usePickerTextFieldOwnerState.js +18 -0
  451. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  452. package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  453. package/node/StaticTimePicker/StaticTimePicker.js +2 -2
  454. package/node/TimeClock/Clock.js +28 -27
  455. package/node/TimeClock/ClockNumber.js +15 -11
  456. package/node/TimeClock/ClockPointer.js +15 -10
  457. package/node/TimeClock/TimeClock.js +31 -12
  458. package/node/TimeField/TimeField.js +28 -32
  459. package/node/TimeField/useTimeField.js +13 -10
  460. package/node/TimePicker/TimePicker.js +2 -2
  461. package/node/TimePicker/TimePickerToolbar.js +40 -64
  462. package/node/YearCalendar/YearCalendar.js +46 -12
  463. package/node/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  464. package/node/YearCalendar/index.js +1 -8
  465. package/node/YearCalendar/yearCalendarClasses.js +1 -1
  466. package/node/hooks/index.js +15 -1
  467. package/node/hooks/useClearableField.js +4 -2
  468. package/node/hooks/useIsValidValue.js +18 -0
  469. package/node/hooks/useParsedFormat.js +11 -13
  470. package/node/hooks/usePickerActionsContext.js +22 -0
  471. package/node/hooks/usePickerContext.js +5 -4
  472. package/node/hooks/useSplitFieldProps.js +7 -2
  473. package/node/index.js +13 -1
  474. package/node/internals/components/PickerFieldUI.js +329 -0
  475. package/node/internals/components/{PickersPopper.js → PickerPopper/PickerPopper.js} +48 -48
  476. package/node/internals/components/PickerPopper/index.js +25 -0
  477. package/node/internals/components/PickerPopper/pickerPopperClasses.js +14 -0
  478. package/node/internals/components/PickerProvider.js +30 -10
  479. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
  480. package/node/internals/components/PickersModalDialog.js +9 -3
  481. package/node/internals/components/PickersToolbar.js +16 -15
  482. package/node/internals/components/PickersToolbarButton.js +4 -6
  483. package/node/internals/components/PickersToolbarText.js +10 -12
  484. package/node/internals/hooks/date-helpers-hooks.js +4 -3
  485. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +38 -123
  486. package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  487. package/node/internals/hooks/useField/index.js +8 -1
  488. package/node/internals/hooks/useField/useField.js +16 -3
  489. package/node/internals/hooks/useField/useField.utils.js +2 -2
  490. package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +56 -0
  491. package/node/internals/hooks/useField/useFieldState.js +3 -3
  492. package/node/internals/hooks/useField/useFieldV6TextField.js +5 -2
  493. package/node/internals/hooks/useField/useFieldV7TextField.js +8 -4
  494. package/node/internals/hooks/useFieldOwnerState.js +24 -0
  495. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +36 -70
  496. package/node/internals/hooks/useNullablePickerContext.js +16 -0
  497. package/node/internals/hooks/useOpenState.js +12 -9
  498. package/node/internals/hooks/usePicker/usePicker.js +10 -29
  499. package/node/internals/hooks/usePicker/usePickerProvider.js +105 -12
  500. package/node/internals/hooks/usePicker/usePickerValue.js +100 -217
  501. package/node/internals/hooks/usePicker/usePickerViews.js +31 -20
  502. package/node/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +7 -4
  503. package/node/internals/hooks/useStaticPicker/useStaticPicker.js +8 -13
  504. package/node/internals/hooks/useToolbarOwnerState.js +21 -0
  505. package/node/internals/hooks/useUtils.js +1 -1
  506. package/node/internals/hooks/useValueWithTimezone.js +13 -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 +7 -7
  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 -33
  561. package/internals/hooks/usePicker/usePickerLayoutProps.js +0 -34
  562. package/internals/hooks/usePicker/usePickerOwnerState.d.ts +0 -10
  563. package/internals/hooks/usePicker/usePickerOwnerState.js +0 -16
  564. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
  565. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
  566. package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
  567. package/modern/AdapterDateFnsV3/index.js +0 -1
  568. package/modern/MonthCalendar/pickersMonthClasses.js +0 -5
  569. package/modern/YearCalendar/pickersYearClasses.js +0 -5
  570. package/modern/internals/components/pickersPopperClasses.js +0 -5
  571. package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
  572. package/modern/internals/hooks/useIsLandscape.js +0 -35
  573. package/modern/internals/hooks/usePicker/usePickerLayoutProps.js +0 -34
  574. package/modern/internals/hooks/usePicker/usePickerOwnerState.js +0 -16
  575. package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
  576. package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
  577. package/node/MonthCalendar/pickersMonthClasses.js +0 -12
  578. package/node/YearCalendar/pickersYearClasses.js +0 -12
  579. package/node/internals/components/pickersPopperClasses.js +0 -12
  580. package/node/internals/hooks/defaultizedFieldProps.js +0 -50
  581. package/node/internals/hooks/useIsLandscape.js +0 -43
  582. package/node/internals/hooks/usePicker/usePickerLayoutProps.js +0 -41
  583. package/node/internals/hooks/usePicker/usePickerOwnerState.js +0 -23
  584. 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
- wrapperVariant,
124
23
  validator
125
24
  }) => {
126
25
  const {
@@ -128,8 +27,9 @@ const usePickerValue = ({
128
27
  onChange,
129
28
  value: inValueWithoutRenderTimezone,
130
29
  defaultValue: inDefaultValue,
131
- closeOnSelect = wrapperVariant === 'desktop',
132
- timezone: timezoneProp
30
+ closeOnSelect = false,
31
+ timezone: timezoneProp,
32
+ referenceDate
133
33
  } = props;
134
34
  const {
135
35
  current: defaultValue
@@ -137,6 +37,7 @@ const usePickerValue = ({
137
37
  const {
138
38
  current: isControlled
139
39
  } = React.useRef(inValueWithoutRenderTimezone !== undefined);
40
+ const [previousTimezoneProp, setPreviousTimezoneProp] = React.useState(timezoneProp);
140
41
 
141
42
  /* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */
142
43
  if (process.env.NODE_ENV !== 'production') {
@@ -156,8 +57,8 @@ const usePickerValue = ({
156
57
  const utils = (0, _useUtils.useUtils)();
157
58
  const adapter = (0, _useUtils.useLocalizationContext)();
158
59
  const {
159
- isOpen,
160
- setIsOpen
60
+ open,
61
+ setOpen
161
62
  } = (0, _useOpenState.useOpenState)(props);
162
63
  const {
163
64
  timezone,
@@ -167,6 +68,7 @@ const usePickerValue = ({
167
68
  timezone: timezoneProp,
168
69
  value: inValueWithoutRenderTimezone,
169
70
  defaultValue,
71
+ referenceDate,
170
72
  onChange,
171
73
  valueManager
172
74
  });
@@ -183,10 +85,19 @@ const usePickerValue = ({
183
85
  draft: initialValue,
184
86
  lastPublishedValue: initialValue,
185
87
  lastCommittedValue: initialValue,
186
- lastControlledValue: inValueWithTimezoneToRender,
88
+ lastControlledValue: inValueWithoutRenderTimezone,
187
89
  hasBeenModifiedSinceMount: false
188
90
  };
189
91
  });
92
+ const timezoneFromDraftValue = valueManager.getTimezone(utils, dateState.draft);
93
+ if (previousTimezoneProp !== timezoneProp) {
94
+ setPreviousTimezoneProp(timezoneProp);
95
+ if (timezoneProp && timezoneFromDraftValue && timezoneProp !== timezoneFromDraftValue) {
96
+ setDateState(prev => (0, _extends2.default)({}, prev, {
97
+ draft: valueManager.setTimezone(utils, timezoneProp, prev.draft)
98
+ }));
99
+ }
100
+ }
190
101
  const {
191
102
  getValidationErrorForNewValue
192
103
  } = (0, _validation.useValidation)({
@@ -196,50 +107,57 @@ const usePickerValue = ({
196
107
  value: dateState.draft,
197
108
  onError: props.onError
198
109
  });
199
- const updateDate = (0, _useEventCallback.default)(action => {
200
- const updaterParams = {
201
- action,
202
- dateState,
203
- hasChanged: comparison => !valueManager.areValuesEqual(utils, action.value, comparison),
204
- isControlled,
205
- closeOnSelect
206
- };
207
- const shouldPublish = shouldPublishValue(updaterParams);
208
- const shouldCommit = shouldCommitValue(updaterParams);
209
- 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
+ }
210
129
  setDateState(prev => (0, _extends2.default)({}, prev, {
211
- draft: action.value,
212
- lastPublishedValue: shouldPublish ? action.value : prev.lastPublishedValue,
213
- lastCommittedValue: shouldCommit ? action.value : prev.lastCommittedValue,
130
+ draft: newValue,
131
+ lastPublishedValue: shouldPublish ? newValue : prev.lastPublishedValue,
132
+ lastCommittedValue: shouldCommit ? newValue : prev.lastCommittedValue,
214
133
  hasBeenModifiedSinceMount: true
215
134
  }));
216
135
  let cachedContext = null;
217
136
  const getContext = () => {
218
137
  if (!cachedContext) {
219
- const validationError = action.name === 'setValueFromField' ? action.context.validationError : getValidationErrorForNewValue(action.value);
220
138
  cachedContext = {
221
- validationError
139
+ validationError: validationError == null ? getValidationErrorForNewValue(newValue) : validationError
222
140
  };
223
- if (action.name === 'setValueFromShortcut') {
224
- cachedContext.shortcut = action.shortcut;
141
+ if (shortcut) {
142
+ cachedContext.shortcut = shortcut;
225
143
  }
226
144
  }
227
145
  return cachedContext;
228
146
  };
229
147
  if (shouldPublish) {
230
- handleValueChange(action.value, getContext());
148
+ handleValueChange(newValue, getContext());
231
149
  }
232
150
  if (shouldCommit && onAccept) {
233
- onAccept(action.value, getContext());
151
+ onAccept(newValue, getContext());
234
152
  }
235
153
  if (shouldClose) {
236
- setIsOpen(false);
154
+ setOpen(false);
237
155
  }
238
156
  });
239
- if (inValueWithTimezoneToRender !== undefined && (dateState.lastControlledValue === undefined || !valueManager.areValuesEqual(utils, dateState.lastControlledValue, inValueWithTimezoneToRender))) {
157
+ if (dateState.lastControlledValue !== inValueWithoutRenderTimezone) {
240
158
  const isUpdateComingFromPicker = valueManager.areValuesEqual(utils, dateState.draft, inValueWithTimezoneToRender);
241
159
  setDateState(prev => (0, _extends2.default)({}, prev, {
242
- lastControlledValue: inValueWithTimezoneToRender
160
+ lastControlledValue: inValueWithoutRenderTimezone
243
161
  }, isUpdateComingFromPicker ? {} : {
244
162
  lastCommittedValue: inValueWithTimezoneToRender,
245
163
  lastPublishedValue: inValueWithTimezoneToRender,
@@ -247,85 +165,6 @@ const usePickerValue = ({
247
165
  hasBeenModifiedSinceMount: true
248
166
  }));
249
167
  }
250
- const handleClear = (0, _useEventCallback.default)(() => {
251
- updateDate({
252
- value: valueManager.emptyValue,
253
- name: 'setValueFromAction',
254
- pickerAction: 'clear'
255
- });
256
- });
257
- const handleAccept = (0, _useEventCallback.default)(() => {
258
- updateDate({
259
- value: dateState.lastPublishedValue,
260
- name: 'setValueFromAction',
261
- pickerAction: 'accept'
262
- });
263
- });
264
- const handleDismiss = (0, _useEventCallback.default)(() => {
265
- updateDate({
266
- value: dateState.lastPublishedValue,
267
- name: 'setValueFromAction',
268
- pickerAction: 'dismiss'
269
- });
270
- });
271
- const handleCancel = (0, _useEventCallback.default)(() => {
272
- updateDate({
273
- value: dateState.lastCommittedValue,
274
- name: 'setValueFromAction',
275
- pickerAction: 'cancel'
276
- });
277
- });
278
- const handleSetToday = (0, _useEventCallback.default)(() => {
279
- updateDate({
280
- value: valueManager.getTodayValue(utils, timezone, valueType),
281
- name: 'setValueFromAction',
282
- pickerAction: 'today'
283
- });
284
- });
285
- const handleOpen = (0, _useEventCallback.default)(event => {
286
- event.preventDefault();
287
- setIsOpen(true);
288
- });
289
- const handleClose = (0, _useEventCallback.default)(event => {
290
- event?.preventDefault();
291
- setIsOpen(false);
292
- });
293
- const handleChange = (0, _useEventCallback.default)((newValue, selectionState = 'partial') => updateDate({
294
- name: 'setValueFromView',
295
- value: newValue,
296
- selectionState
297
- }));
298
- const handleSelectShortcut = (0, _useEventCallback.default)((newValue, changeImportance, shortcut) => updateDate({
299
- name: 'setValueFromShortcut',
300
- value: newValue,
301
- changeImportance,
302
- shortcut
303
- }));
304
- const handleChangeFromField = (0, _useEventCallback.default)((newValue, context) => updateDate({
305
- name: 'setValueFromField',
306
- value: newValue,
307
- context
308
- }));
309
- const actions = {
310
- onClear: handleClear,
311
- onAccept: handleAccept,
312
- onDismiss: handleDismiss,
313
- onCancel: handleCancel,
314
- onSetToday: handleSetToday,
315
- onOpen: handleOpen,
316
- onClose: handleClose
317
- };
318
- const fieldResponse = {
319
- value: dateState.draft,
320
- onChange: handleChangeFromField
321
- };
322
- const viewValue = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
323
- const viewResponse = {
324
- value: viewValue,
325
- onChange: handleChange,
326
- onClose: handleClose,
327
- open: isOpen
328
- };
329
168
  const isValid = testedValue => {
330
169
  const error = validator({
331
170
  adapter,
@@ -335,18 +174,62 @@ const usePickerValue = ({
335
174
  });
336
175
  return !valueManager.hasError(error);
337
176
  };
338
- const layoutResponse = (0, _extends2.default)({}, actions, {
339
- value: viewValue,
340
- onChange: handleChange,
341
- onSelectShortcut: handleSelectShortcut,
342
- 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
+ });
343
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
+ });
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
+ };
344
230
  return {
345
- open: isOpen,
346
- fieldProps: fieldResponse,
347
231
  viewProps: viewResponse,
348
- layoutProps: layoutResponse,
349
- actions
232
+ provider: providerParams
350
233
  };
351
234
  };
352
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,15 +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
137
+ view: popperView
138
+ }), [actionsContextValue, views, popperView]);
139
+ const privateContextValue = React.useMemo(() => ({
140
+ hasUIView,
141
+ doesTheCurrentViewHasAnUI
142
+ }), [hasUIView, doesTheCurrentViewHasAnUI]);
143
+ const providerParams = {
144
+ hasUIView,
145
+ views,
146
+ contextValue,
147
+ actionsContextValue,
148
+ privateContextValue
141
149
  };
142
150
  return {
143
- hasUIView,
144
- shouldRestoreFocus,
145
- layoutProps,
151
+ provider: providerParams,
146
152
  renderCurrentView: () => {
147
153
  if (popperView == null) {
148
154
  return null;
@@ -151,9 +157,10 @@ const usePickerViews = ({
151
157
  if (renderer == null) {
152
158
  return null;
153
159
  }
154
- const rendererProps = (0, _extends2.default)({}, propsToForwardToView, additionalViewProps, propsFromPickerValue, {
160
+ const rendererProps = (0, _extends2.default)({}, propsToForwardToView, {
155
161
  views,
156
162
  timezone,
163
+ value,
157
164
  onChange: setValueAndGoToNextView,
158
165
  view: popperView,
159
166
  onViewChange: setView,
@@ -162,8 +169,12 @@ const usePickerViews = ({
162
169
  showViewSwitcher: timeViewsCount > 1,
163
170
  timeViewsCount
164
171
  });
165
- if (rendererInterceptor) {
166
- 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
+ });
167
178
  }
168
179
  return renderer(rendererProps);
169
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
- wrapperVariant: displayStaticWrapperAs
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
  }
@@ -19,6 +19,7 @@ const useValueWithTimezone = ({
19
19
  timezone: timezoneProp,
20
20
  value: valueProp,
21
21
  defaultValue,
22
+ referenceDate,
22
23
  onChange,
23
24
  valueManager
24
25
  }) => {
@@ -32,7 +33,16 @@ const useValueWithTimezone = ({
32
33
  }
33
34
  return valueManager.setTimezone(utils, inputTimezone, newValue);
34
35
  });
35
- const timezoneToRender = timezoneProp ?? inputTimezone ?? 'default';
36
+ let timezoneToRender;
37
+ if (timezoneProp) {
38
+ timezoneToRender = timezoneProp;
39
+ } else if (inputTimezone) {
40
+ timezoneToRender = inputTimezone;
41
+ } else if (referenceDate) {
42
+ timezoneToRender = utils.getTimezone(referenceDate);
43
+ } else {
44
+ timezoneToRender = 'default';
45
+ }
36
46
  const valueWithTimezoneToRender = React.useMemo(() => valueManager.setTimezone(utils, timezoneToRender, inputValue), [valueManager, utils, timezoneToRender, inputValue]);
37
47
  const handleValueChange = (0, _useEventCallback.default)((newValue, ...otherParams) => {
38
48
  const newValueWithInputTimezone = setInputTimezone(newValue);
@@ -54,6 +64,7 @@ const useControlledValueWithTimezone = ({
54
64
  timezone: timezoneProp,
55
65
  value: valueProp,
56
66
  defaultValue,
67
+ referenceDate,
57
68
  onChange: onChangeProp,
58
69
  valueManager
59
70
  }) => {
@@ -71,6 +82,7 @@ const useControlledValueWithTimezone = ({
71
82
  timezone: timezoneProp,
72
83
  value: valueWithInputTimezone,
73
84
  defaultValue: undefined,
85
+ referenceDate,
74
86
  onChange,
75
87
  valueManager
76
88
  });