@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
@@ -1,13 +1,14 @@
1
- import { FieldChangeHandlerContext, UseFieldInternalProps } from '../useField';
1
+ import * as React from 'react';
2
+ import { UseFieldInternalProps } from '../useField';
2
3
  import { Validator } from '../../../validation';
3
- import { WrapperVariant } from '../../models/common';
4
- import { FieldSection, FieldValueType, TimezoneProps, MuiPickersAdapter, PickersTimezone, PickerChangeHandlerContext, PickerValidDate, OnErrorProps, InferError } from '../../../models';
4
+ import { TimezoneProps, MuiPickersAdapter, PickersTimezone, PickerChangeHandlerContext, PickerValidDate, OnErrorProps, InferError, PickerValueType, PickerChangeImportance } from '../../../models';
5
5
  import { GetDefaultReferenceDateProps } from '../../utils/getDefaultReferenceDate';
6
- import { PickerShortcutChangeImportance, PickersShortcutsItemContext } from '../../../PickersShortcuts';
7
- export interface PickerValueManager<TValue, TError> {
6
+ import type { PickersShortcutsItemContext } from '../../../PickersShortcuts';
7
+ import { InferNonNullablePickerValue, PickerValidValue } from '../../models';
8
+ export interface PickerValueManager<TValue extends PickerValidValue, TError> {
8
9
  /**
9
10
  * Determines if two values are equal.
10
- * @template TValue
11
+ * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
11
12
  * @param {MuiPickersAdapter} utils The adapter.
12
13
  * @param {TValue} valueLeft The first value to compare.
13
14
  * @param {TValue} valueRight The second value to compare.
@@ -20,15 +21,15 @@ export interface PickerValueManager<TValue, TError> {
20
21
  emptyValue: TValue;
21
22
  /**
22
23
  * Method returning the value to set when clicking the "Today" button
23
- * @template TValue
24
+ * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
24
25
  * @param {MuiPickersAdapter} utils The adapter.
25
26
  * @param {PickersTimezone} timezone The current timezone.
26
- * @param {FieldValueType} valueType The type of the value being edited.
27
+ * @param {PickerValueType} valueType The type of the value being edited.
27
28
  * @returns {TValue} The value to set when clicking the "Today" button.
28
29
  */
29
- getTodayValue: (utils: MuiPickersAdapter, timezone: PickersTimezone, valueType: FieldValueType) => TValue;
30
+ getTodayValue: (utils: MuiPickersAdapter, timezone: PickersTimezone, valueType: PickerValueType) => TValue;
30
31
  /**
31
- * @template TValue
32
+ * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
32
33
  * Method returning the reference value to use when mounting the component.
33
34
  * @param {object} params The params of the method.
34
35
  * @param {PickerValidDate | undefined} params.referenceDate The referenceDate provided by the user.
@@ -48,10 +49,10 @@ export interface PickerValueManager<TValue, TError> {
48
49
  granularity: number;
49
50
  timezone: PickersTimezone;
50
51
  getTodayDate?: () => PickerValidDate;
51
- }) => TValue;
52
+ }) => InferNonNullablePickerValue<TValue>;
52
53
  /**
53
54
  * Method parsing the input value to replace all invalid dates by `null`.
54
- * @template TValue
55
+ * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
55
56
  * @param {MuiPickersAdapter} utils The adapter.
56
57
  * @param {TValue} value The value to parse.
57
58
  * @returns {TValue} The value without invalid date.
@@ -59,7 +60,7 @@ export interface PickerValueManager<TValue, TError> {
59
60
  cleanValue: (utils: MuiPickersAdapter, value: TValue) => TValue;
60
61
  /**
61
62
  * Generates the new value, given the previous value and the new proposed value.
62
- * @template TValue
63
+ * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
63
64
  * @param {MuiPickersAdapter} utils The adapter.
64
65
  * @param {TValue} lastValidDateValue The last valid value.
65
66
  * @param {TValue} value The proposed value.
@@ -88,7 +89,7 @@ export interface PickerValueManager<TValue, TError> {
88
89
  /**
89
90
  * Return the timezone of the date inside a value.
90
91
  * Throw an error on range picker if both values don't have the same timezone.
91
- @template TValue
92
+ * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
92
93
  @param {MuiPickersAdapter} utils The utils to manipulate the date.
93
94
  @param {TValue} value The current value.
94
95
  @returns {string | null} The timezone of the current value.
@@ -96,7 +97,7 @@ export interface PickerValueManager<TValue, TError> {
96
97
  getTimezone: (utils: MuiPickersAdapter, value: TValue) => string | null;
97
98
  /**
98
99
  * Change the timezone of the dates inside a value.
99
- @template TValue
100
+ * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
100
101
  @param {MuiPickersAdapter} utils The utils to manipulate the date.
101
102
  @param {PickersTimezone} timezone The current timezone.
102
103
  @param {TValue} value The value to convert.
@@ -105,24 +106,24 @@ export interface PickerValueManager<TValue, TError> {
105
106
  setTimezone: (utils: MuiPickersAdapter, timezone: PickersTimezone, value: TValue) => TValue;
106
107
  }
107
108
  export type PickerSelectionState = 'partial' | 'shallow' | 'finish';
108
- export interface UsePickerValueState<TValue> {
109
+ export interface UsePickerValueState<TValue extends PickerValidValue> {
109
110
  /**
110
111
  * Date displayed on the views and the field.
111
112
  * It is updated whenever the user modifies something.
112
113
  */
113
114
  draft: TValue;
114
115
  /**
115
- * Last value published (e.g: the last value for which `shouldPublishValue` returned `true`).
116
+ * Last value published (the last value for which `shouldPublishValue` returned `true`).
116
117
  * If `onChange` is defined, it's the value that was passed on the last call to this callback.
117
118
  */
118
119
  lastPublishedValue: TValue;
119
120
  /**
120
- * Last value committed (e.g: the last value for which `shouldCommitValue` returned `true`).
121
+ * Last value committed (the last value for which `shouldCommitValue` returned `true`).
121
122
  * If `onAccept` is defined, it's the value that was passed on the last call to this callback.
122
123
  */
123
124
  lastCommittedValue: TValue;
124
125
  /**
125
- * Last value passed with `props.value`.
126
+ * Last value passed to `props.value`.
126
127
  * Used to update the `draft` value whenever the `value` prop changes.
127
128
  */
128
129
  lastControlledValue: TValue | undefined;
@@ -135,41 +136,10 @@ export interface UsePickerValueState<TValue> {
135
136
  */
136
137
  hasBeenModifiedSinceMount: boolean;
137
138
  }
138
- export interface PickerValueUpdaterParams<TValue, TError> {
139
- action: PickerValueUpdateAction<TValue, TError>;
140
- dateState: UsePickerValueState<TValue>;
141
- /**
142
- * Check if the new draft value has changed compared to some given value.
143
- * @template TValue
144
- * @param {TValue} comparisonValue The value to compare the new draft value with.
145
- * @returns {boolean} `true` if the new draft value is equal to the comparison value.
146
- */
147
- hasChanged: (comparisonValue: TValue) => boolean;
148
- isControlled: boolean;
149
- closeOnSelect: boolean;
150
- }
151
- export type PickerValueUpdateAction<TValue, TError> = {
152
- name: 'setValueFromView';
153
- value: TValue;
154
- selectionState: PickerSelectionState;
155
- } | {
156
- name: 'setValueFromField';
157
- value: TValue;
158
- context: FieldChangeHandlerContext<TError>;
159
- } | {
160
- name: 'setValueFromAction';
161
- value: TValue;
162
- pickerAction: 'accept' | 'today' | 'cancel' | 'dismiss' | 'clear';
163
- } | {
164
- name: 'setValueFromShortcut';
165
- value: TValue;
166
- changeImportance: PickerShortcutChangeImportance;
167
- shortcut: PickersShortcutsItemContext;
168
- };
169
139
  /**
170
140
  * Props used to handle the value that are common to all pickers.
171
141
  */
172
- export interface UsePickerValueBaseProps<TValue, TError> extends OnErrorProps<TValue, TError> {
142
+ export interface UsePickerValueBaseProps<TValue extends PickerValidValue, TError> extends OnErrorProps<TValue, TError> {
173
143
  /**
174
144
  * The selected value.
175
145
  * Used when the component is controlled.
@@ -202,8 +172,8 @@ export interface UsePickerValueBaseProps<TValue, TError> extends OnErrorProps<TV
202
172
  */
203
173
  export interface UsePickerValueNonStaticProps {
204
174
  /**
205
- * If `true`, the popover or modal will close after submitting the full date.
206
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
175
+ * If `true`, the Picker will close after submitting the full date.
176
+ * @default false
207
177
  */
208
178
  closeOnSelect?: boolean;
209
179
  /**
@@ -225,47 +195,133 @@ export interface UsePickerValueNonStaticProps {
225
195
  /**
226
196
  * Props used to handle the value of the pickers.
227
197
  */
228
- export interface UsePickerValueProps<TValue, TError> extends UsePickerValueBaseProps<TValue, TError>, UsePickerValueNonStaticProps, TimezoneProps {
198
+ export interface UsePickerValueProps<TValue extends PickerValidValue, TError> extends UsePickerValueBaseProps<TValue, TError>, UsePickerValueNonStaticProps, TimezoneProps {
199
+ referenceDate?: PickerValidDate;
229
200
  }
230
- export interface UsePickerValueParams<TValue, TExternalProps extends UsePickerValueProps<TValue, any>> {
201
+ export interface UsePickerValueParams<TValue extends PickerValidValue, TExternalProps extends UsePickerValueProps<TValue, any>> {
231
202
  props: TExternalProps;
232
203
  valueManager: PickerValueManager<TValue, InferError<TExternalProps>>;
233
- valueType: FieldValueType;
234
- wrapperVariant: WrapperVariant;
204
+ valueType: PickerValueType;
235
205
  validator: Validator<TValue, InferError<TExternalProps>, TExternalProps>;
236
206
  }
237
- export interface UsePickerValueActions {
238
- onAccept: () => void;
239
- onClear: () => void;
240
- onDismiss: () => void;
241
- onCancel: () => void;
242
- onSetToday: () => void;
243
- onOpen: (event: React.UIEvent) => void;
244
- onClose: (event?: React.UIEvent) => void;
245
- }
246
- export type UsePickerValueFieldResponse<TValue, TSection extends FieldSection, TError> = Required<Pick<UseFieldInternalProps<TValue, TSection, any, TError>, 'value' | 'onChange'>>;
207
+ export type UsePickerValueFieldResponse<TValue extends PickerValidValue, TError> = Required<Pick<UseFieldInternalProps<TValue, any, TError>, 'value' | 'onChange'>>;
247
208
  /**
248
209
  * Props passed to `usePickerViews`.
249
210
  */
250
- export interface UsePickerValueViewsResponse<TValue> {
211
+ export interface UsePickerValueViewsResponse<TValue extends PickerValidValue> {
251
212
  value: TValue;
252
213
  onChange: (value: TValue, selectionState?: PickerSelectionState) => void;
253
214
  open: boolean;
254
- onClose: (event?: React.MouseEvent) => void;
215
+ setOpen: React.Dispatch<React.SetStateAction<boolean>>;
255
216
  }
256
217
  /**
257
- * Props passed to `usePickerLayoutProps`.
218
+ * Params passed to `usePickerProvider`.
258
219
  */
259
- export interface UsePickerValueLayoutResponse<TValue> extends UsePickerValueActions {
220
+ export interface UsePickerValueProviderParams<TValue extends PickerValidValue, TError> {
260
221
  value: TValue;
261
- onChange: (newValue: TValue) => void;
262
- onSelectShortcut: (newValue: TValue, changeImportance: PickerShortcutChangeImportance, shortcut: PickersShortcutsItemContext) => void;
263
- isValid: (value: TValue) => boolean;
222
+ contextValue: UsePickerValueContextValue<TValue, TError>;
223
+ actionsContextValue: UsePickerValueActionsContextValue<TValue, TError>;
224
+ privateContextValue: UsePickerValuePrivateContextValue;
225
+ isValidContextValue: (value: TValue) => boolean;
264
226
  }
265
- export interface UsePickerValueResponse<TValue, TSection extends FieldSection, TError> {
266
- open: boolean;
267
- actions: UsePickerValueActions;
227
+ export interface UsePickerValueResponse<TValue extends PickerValidValue, TError> {
268
228
  viewProps: UsePickerValueViewsResponse<TValue>;
269
- fieldProps: UsePickerValueFieldResponse<TValue, TSection, TError>;
270
- layoutProps: UsePickerValueLayoutResponse<TValue>;
229
+ provider: UsePickerValueProviderParams<TValue, TError>;
230
+ }
231
+ export interface UsePickerValueContextValue<TValue extends PickerValidValue, TError> extends UsePickerValueActionsContextValue<TValue, TError> {
232
+ /**
233
+ * The current value of the picker.
234
+ */
235
+ value: TValue;
236
+ /**
237
+ * The timezone to use when rendering the dates.
238
+ * If a `timezone` prop is provided, it will be used.
239
+ * If the `value` prop contains a valid date, its timezone will be used.
240
+ * If no `value` prop is provided, but the `defaultValue` contains a valid date, its timezone will be used.
241
+ * If no `value` or `defaultValue` is provided, but the `referenceDate` is provided, its timezone will be used.
242
+ * Otherwise, the timezone will be the default one of your date library.
243
+ */
244
+ timezone: PickersTimezone;
245
+ /**
246
+ * Whether the picker is open.
247
+ */
248
+ open: boolean;
249
+ }
250
+ export interface UsePickerValueActionsContextValue<TValue extends PickerValidValue, TError> {
251
+ /**
252
+ * Set the current value of the picker.
253
+ * @param {TValue} value The new value of the picker.
254
+ * @param {SetValueActionOptions<TError>} options The options to customize the behavior of this update.
255
+ */
256
+ setValue: (value: TValue, options?: SetValueActionOptions<TError>) => void;
257
+ /**
258
+ * Set the current open state of the Picker.
259
+ * ```ts
260
+ * setOpen(true); // Opens the picker.
261
+ * setOpen(false); // Closes the picker.
262
+ * setOpen((prevOpen) => !prevOpen); // Toggles the open state.
263
+ * ```
264
+ * @param {React.SetStateAction<boolean>} action The new open state of the Picker.
265
+ * It can be a function that will receive the current open state.
266
+ */
267
+ setOpen: React.Dispatch<React.SetStateAction<boolean>>;
268
+ /**
269
+ * Set the current value of the picker to be empty.
270
+ * The value will be `null` on single pickers and `[null, null]` on range pickers.
271
+ */
272
+ clearValue: () => void;
273
+ /**
274
+ * Set the current value of the picker to be the current date.
275
+ * The value will be `today` on single pickers and `[today, today]` on range pickers.
276
+ * With `today` being the current date, with its time set to `00:00:00` on Date Pickers and its time set to the current time on Time and Date Pickers.
277
+ */
278
+ setValueToToday: () => void;
279
+ /**
280
+ * Accept the current value of the picker.
281
+ * Will call `onAccept` if defined.
282
+ * If the picker is re-opened, this value will be the one used to initialize the views.
283
+ */
284
+ acceptValueChanges: () => void;
285
+ /**
286
+ * Cancel the changes made to the current value of the picker.
287
+ * The value will be reset to the last accepted value.
288
+ */
289
+ cancelValueChanges: () => void;
290
+ }
291
+ export interface UsePickerValuePrivateContextValue {
292
+ /**
293
+ * Close the picker and accepts the current value if it is not equal to the last accepted value.
294
+ */
295
+ dismissViews: () => void;
296
+ }
297
+ export interface SetValueActionOptions<TError = string | null> {
298
+ /**
299
+ * The importance of the change when picking a value:
300
+ * - "accept": fires `onChange`, fires `onAccept` and closes the picker.
301
+ * - "set": fires `onChange` but do not fire `onAccept` and does not close the picker.
302
+ * @default "accept"
303
+ */
304
+ changeImportance?: PickerChangeImportance;
305
+ /**
306
+ * The validation error associated to the current value.
307
+ * If not defined, the validation will be computed by the picker.
308
+ */
309
+ validationError?: TError;
310
+ /**
311
+ * The shortcut that triggered this change.
312
+ * It should not be defined if the change does not come from a shortcut.
313
+ */
314
+ shortcut?: PickersShortcutsItemContext;
315
+ /**
316
+ * Whether the value should call `onChange` and `onAccept` when the value is not controlled and has never been modified.
317
+ * If `true`, the `onChange` and `onAccept` callback will only be fired if the value has been modified (and is not equal to the last published value).
318
+ * If `false`, the `onChange` and `onAccept` callback will be fired when the value has never been modified (`onAccept` only if `changeImportance` is set to "accept").
319
+ * @default false
320
+ */
321
+ skipPublicationIfPristine?: boolean;
322
+ /**
323
+ * Whether the picker should close.
324
+ * @default changeImportance === "accept"
325
+ */
326
+ shouldClose?: boolean;
271
327
  }
@@ -3,11 +3,11 @@ import { SxProps } from '@mui/system';
3
3
  import { Theme } from '@mui/material/styles';
4
4
  import { UseViewsOptions } from '../useViews';
5
5
  import type { UsePickerValueViewsResponse } from './usePickerValue.types';
6
- import { DateOrTimeViewWithMeridiem } from '../../models';
7
- import { FieldRef, FieldSection, PickerValidDate, TimezoneProps } from '../../../models';
8
- interface PickerViewsRendererBaseExternalProps<TView extends DateOrTimeViewWithMeridiem> extends Omit<UsePickerViewsProps<any, TView, any, any>, 'openTo' | 'viewRenderers'> {
6
+ import { DateOrTimeViewWithMeridiem, PickerRangeValue, PickerValidValue, PickerValue } from '../../models';
7
+ import { FieldRef, PickerValidDate, TimezoneProps } from '../../../models';
8
+ export interface PickerViewsRendererBaseExternalProps extends Omit<UsePickerViewsProps<any, any, any>, 'openTo' | 'viewRenderers'> {
9
9
  }
10
- export type PickerViewsRendererProps<TValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends PickerViewsRendererBaseExternalProps<TView>, TAdditionalProps extends {}> = Omit<TExternalProps, 'className' | 'sx'> & TAdditionalProps & UsePickerValueViewsResponse<TValue> & {
10
+ export type PickerViewsRendererProps<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends PickerViewsRendererBaseExternalProps> = Omit<TExternalProps, 'className' | 'sx'> & Pick<UsePickerValueViewsResponse<TValue>, 'value' | 'onChange'> & {
11
11
  view: TView;
12
12
  views: readonly TView[];
13
13
  focusedView: TView | null;
@@ -15,76 +15,96 @@ export type PickerViewsRendererProps<TValue, TView extends DateOrTimeViewWithMer
15
15
  showViewSwitcher: boolean;
16
16
  timeViewsCount: number;
17
17
  };
18
- export type PickerViewRenderer<TValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends PickerViewsRendererBaseExternalProps<TView>, TAdditionalProps extends {}> = (props: PickerViewsRendererProps<TValue, TView, TExternalProps, TAdditionalProps>) => React.ReactNode;
19
- export type PickerViewRendererLookup<TValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends PickerViewsRendererBaseExternalProps<any>, TAdditionalProps extends {}> = {
20
- [K in TView]: PickerViewRenderer<TValue, K, TExternalProps, TAdditionalProps> | null;
21
- };
18
+ export type PickerViewRenderer<TValue extends PickerValidValue, TExternalProps extends PickerViewsRendererBaseExternalProps> = (props: PickerViewsRendererProps<TValue, any, TExternalProps>) => React.ReactNode;
19
+ export type PickerViewRendererLookup<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends PickerViewsRendererBaseExternalProps> = Record<TView, PickerViewRenderer<TValue, TExternalProps> | null>;
22
20
  /**
23
21
  * Props used to handle the views that are common to all pickers.
24
22
  */
25
- export interface UsePickerViewsBaseProps<TValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TView, any, any>, TAdditionalProps extends {}> extends Omit<UseViewsOptions<any, TView>, 'onChange' | 'onFocusedViewChange' | 'focusedView'>, TimezoneProps {
23
+ export interface UsePickerViewsBaseProps<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TView, any>> extends Omit<UseViewsOptions<any, TView>, 'onChange' | 'onFocusedViewChange' | 'focusedView'>, TimezoneProps {
26
24
  /**
27
25
  * If `null`, the section will only have field editing.
28
26
  * If `undefined`, internally defined view will be used.
29
27
  */
30
- viewRenderers: PickerViewRendererLookup<TValue, TView, TExternalProps, TAdditionalProps>;
31
- /**
32
- * If `true`, disable heavy animations.
33
- * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
34
- */
35
- reduceAnimations?: boolean;
28
+ viewRenderers: PickerViewRendererLookup<TValue, TView, TExternalProps>;
36
29
  /**
37
30
  * The date used to generate the new value when both `value` and `defaultValue` are empty.
38
31
  * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
39
32
  */
40
33
  referenceDate?: PickerValidDate;
41
34
  }
42
- /**
43
- * Props used to handle the views of the pickers.
44
- */
45
- export interface UsePickerViewsNonStaticProps {
46
- /**
47
- * If `true`, the open picker button will not be rendered (renders only the field).
48
- * @default false
49
- */
50
- disableOpenPicker?: boolean;
51
- }
52
35
  /**
53
36
  * Props used to handle the value of the pickers.
54
37
  */
55
- export interface UsePickerViewsProps<TValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TView, any, any>, TAdditionalProps extends {}> extends UsePickerViewsBaseProps<TValue, TView, TExternalProps, TAdditionalProps> {
38
+ export interface UsePickerViewsProps<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TView, any>> extends UsePickerViewsBaseProps<TValue, TView, TExternalProps> {
56
39
  className?: string;
57
40
  sx?: SxProps<Theme>;
58
41
  }
59
- export interface UsePickerViewParams<TValue, TView extends DateOrTimeViewWithMeridiem, TSection extends FieldSection, TExternalProps extends UsePickerViewsProps<TValue, TView, TExternalProps, TAdditionalProps>, TAdditionalProps extends {}> {
42
+ export interface UsePickerViewParams<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TView, TExternalProps>> {
60
43
  props: TExternalProps;
61
44
  propsFromPickerValue: UsePickerValueViewsResponse<TValue>;
62
- additionalViewProps: TAdditionalProps;
63
45
  autoFocusView: boolean;
64
- fieldRef: React.RefObject<FieldRef<TSection>> | undefined;
46
+ fieldRef?: React.RefObject<FieldRef<PickerValue> | FieldRef<PickerRangeValue> | null>;
65
47
  /**
66
48
  * A function that intercepts the regular picker rendering.
67
49
  * Can be used to consume the provided `viewRenderers` and render a custom component wrapping them.
68
- * @param {PickerViewRendererLookup<TValue, TView, TExternalProps, TAdditionalProps>} viewRenderers The `viewRenderers` that were provided to the picker component.
50
+ * @param {PickerViewRendererLookup<TValue, TView, TExternalProps>} viewRenderers The `viewRenderers` that were provided to the picker component.
69
51
  * @param {TView} popperView The current picker view.
70
52
  * @param {any} rendererProps All the props that are being passed down to the renderer.
71
53
  * @returns {React.ReactNode} A React node that will be rendered instead of the default renderer.
72
54
  */
73
- rendererInterceptor?: (viewRenderers: PickerViewRendererLookup<TValue, TView, TExternalProps, TAdditionalProps>, popperView: TView, rendererProps: PickerViewsRendererProps<TValue, TView, TExternalProps, TAdditionalProps>) => React.ReactNode;
55
+ rendererInterceptor?: React.JSXElementConstructor<PickerRendererInterceptorProps<TValue, TView, TExternalProps>>;
56
+ }
57
+ export interface PickerRendererInterceptorProps<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TView, TExternalProps>> {
58
+ viewRenderers: PickerViewRendererLookup<TValue, TView, TExternalProps>;
59
+ popperView: TView;
60
+ rendererProps: PickerViewsRendererProps<TValue, TView, TExternalProps>;
74
61
  }
75
62
  export interface UsePickerViewsResponse<TView extends DateOrTimeViewWithMeridiem> {
63
+ renderCurrentView: () => React.ReactNode;
64
+ provider: UsePickerViewsProviderParams<TView>;
65
+ }
66
+ export interface UsePickerViewsActionsContextValue<TView extends DateOrTimeViewWithMeridiem> {
76
67
  /**
77
- * Indicates if the the picker has at least one view that should be rendered in UI.
68
+ * Set the current view.
69
+ * @template TView
70
+ * @param {TView} view The view to render
78
71
  */
79
- hasUIView: boolean;
80
- renderCurrentView: () => React.ReactNode;
81
- shouldRestoreFocus: () => boolean;
82
- layoutProps: UsePickerViewsLayoutResponse<TView>;
72
+ setView: (view: TView) => void;
83
73
  }
84
- export interface UsePickerViewsLayoutResponse<TView extends DateOrTimeViewWithMeridiem> {
74
+ export interface UsePickerViewsContextValue<TView extends DateOrTimeViewWithMeridiem> extends UsePickerViewsActionsContextValue<TView> {
75
+ /**
76
+ * The views that the picker must render.
77
+ * It is equal to the picker `views` prop if defined.
78
+ * Otherwise, a default set of views is provided based on the component you are using:
79
+ * - Date Pickers: ['year', 'day']
80
+ * - Time Pickers: ['hours', 'minutes']
81
+ * - Date Time Pickers: ['year', 'day', 'hours', 'minutes']
82
+ * - Date Range Pickers: ['day']
83
+ * - Date Time Range Pickers: ['day', 'hours', 'minutes']
84
+ */
85
+ views: readonly TView[];
86
+ /**
87
+ * The view currently rendered.
88
+ */
85
89
  view: TView | null;
86
- onViewChange: (view: TView) => void;
90
+ }
91
+ export interface UsePickerViewsPrivateContextValue {
92
+ /**
93
+ * Whether one of the view has an UI (it has a view renderer associated).
94
+ */
95
+ hasUIView: boolean;
96
+ /**
97
+ * Check whether the current view has an UI.
98
+ * @returns {boolean} Whether the current view has an UI.
99
+ */
100
+ doesTheCurrentViewHasAnUI: () => boolean;
101
+ }
102
+ export interface UsePickerViewsProviderParams<TView extends DateOrTimeViewWithMeridiem> {
103
+ hasUIView: boolean;
87
104
  views: readonly TView[];
105
+ contextValue: UsePickerViewsContextValue<TView>;
106
+ actionsContextValue: UsePickerViewsActionsContextValue<TView>;
107
+ privateContextValue: UsePickerViewsPrivateContextValue;
88
108
  }
89
109
  /**
90
110
  * Manage the views of all the pickers:
@@ -92,5 +112,4 @@ export interface UsePickerViewsLayoutResponse<TView extends DateOrTimeViewWithMe
92
112
  * - Handles the switch between UI views and field views
93
113
  * - Handles the focus management when switching views
94
114
  */
95
- export declare const usePickerViews: <TValue, TView extends DateOrTimeViewWithMeridiem, TSection extends FieldSection, TExternalProps extends UsePickerViewsProps<TValue, TView, any, any>, TAdditionalProps extends {}>({ props, propsFromPickerValue, additionalViewProps, autoFocusView, rendererInterceptor, fieldRef, }: UsePickerViewParams<TValue, TView, TSection, TExternalProps, TAdditionalProps>) => UsePickerViewsResponse<TView>;
96
- export {};
115
+ export declare const usePickerViews: <TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TView, any>>({ props, propsFromPickerValue, autoFocusView, rendererInterceptor: RendererInterceptor, fieldRef, }: UsePickerViewParams<TValue, TView, TExternalProps>) => UsePickerViewsResponse<TView>;
@@ -11,14 +11,10 @@ import { isTimeView } from "../../utils/time-utils.js";
11
11
  * Props used to handle the views that are common to all pickers.
12
12
  */
13
13
 
14
- /**
15
- * Props used to handle the views of the pickers.
16
- */
17
-
18
14
  /**
19
15
  * Props used to handle the value of the pickers.
20
16
  */
21
-
17
+ import { jsx as _jsx } from "react/jsx-runtime";
22
18
  /**
23
19
  * Manage the views of all the pickers:
24
20
  * - Handles the view switch
@@ -28,15 +24,15 @@ import { isTimeView } from "../../utils/time-utils.js";
28
24
  export const usePickerViews = ({
29
25
  props,
30
26
  propsFromPickerValue,
31
- additionalViewProps,
32
27
  autoFocusView,
33
- rendererInterceptor,
28
+ rendererInterceptor: RendererInterceptor,
34
29
  fieldRef
35
30
  }) => {
36
31
  const {
37
32
  onChange,
33
+ value,
38
34
  open,
39
- onClose
35
+ setOpen
40
36
  } = propsFromPickerValue;
41
37
  const {
42
38
  view: inView,
@@ -88,7 +84,7 @@ export const usePickerViews = ({
88
84
  return acc;
89
85
  }, 0), [viewRenderers, views]);
90
86
  const currentViewMode = viewModeLookup[view];
91
- const shouldRestoreFocus = useEventCallback(() => currentViewMode === 'UI');
87
+ const doesTheCurrentViewHasAnUI = useEventCallback(() => currentViewMode === 'UI');
92
88
  const [popperView, setPopperView] = React.useState(currentViewMode === 'UI' ? view : null);
93
89
  if (popperView !== view && viewModeLookup[view] === 'UI') {
94
90
  setPopperView(view);
@@ -96,7 +92,7 @@ export const usePickerViews = ({
96
92
  useEnhancedEffect(() => {
97
93
  // Handle case of `DateTimePicker` without time renderers
98
94
  if (currentViewMode === 'field' && open) {
99
- onClose();
95
+ setOpen(false);
100
96
  setTimeout(() => {
101
97
  fieldRef?.current?.setSelectedSections(view);
102
98
  // focusing the input before the range selection is done
@@ -127,15 +123,26 @@ export const usePickerViews = ({
127
123
  setFocusedView(newView, true);
128
124
  }, [open]); // eslint-disable-line react-hooks/exhaustive-deps
129
125
 
130
- const layoutProps = {
126
+ const actionsContextValue = React.useMemo(() => ({
127
+ setView
128
+ }), [setView]);
129
+ const contextValue = React.useMemo(() => _extends({}, actionsContextValue, {
131
130
  views,
132
- view: popperView,
133
- onViewChange: setView
131
+ view: popperView
132
+ }), [actionsContextValue, views, popperView]);
133
+ const privateContextValue = React.useMemo(() => ({
134
+ hasUIView,
135
+ doesTheCurrentViewHasAnUI
136
+ }), [hasUIView, doesTheCurrentViewHasAnUI]);
137
+ const providerParams = {
138
+ hasUIView,
139
+ views,
140
+ contextValue,
141
+ actionsContextValue,
142
+ privateContextValue
134
143
  };
135
144
  return {
136
- hasUIView,
137
- shouldRestoreFocus,
138
- layoutProps,
145
+ provider: providerParams,
139
146
  renderCurrentView: () => {
140
147
  if (popperView == null) {
141
148
  return null;
@@ -144,9 +151,10 @@ export const usePickerViews = ({
144
151
  if (renderer == null) {
145
152
  return null;
146
153
  }
147
- const rendererProps = _extends({}, propsToForwardToView, additionalViewProps, propsFromPickerValue, {
154
+ const rendererProps = _extends({}, propsToForwardToView, {
148
155
  views,
149
156
  timezone,
157
+ value,
150
158
  onChange: setValueAndGoToNextView,
151
159
  view: popperView,
152
160
  onViewChange: setView,
@@ -155,8 +163,12 @@ export const usePickerViews = ({
155
163
  showViewSwitcher: timeViewsCount > 1,
156
164
  timeViewsCount
157
165
  });
158
- if (rendererInterceptor) {
159
- return rendererInterceptor(viewRenderers, popperView, rendererProps);
166
+ if (RendererInterceptor) {
167
+ return /*#__PURE__*/_jsx(RendererInterceptor, {
168
+ viewRenderers: viewRenderers,
169
+ popperView: popperView,
170
+ rendererProps: rendererProps
171
+ });
160
172
  }
161
173
  return renderer(rendererProps);
162
174
  }
@@ -0,0 +1,2 @@
1
+ export declare const slowAnimationDevices: boolean;
2
+ export declare function useReduceAnimations(customReduceAnimations: boolean | undefined): boolean;
@@ -6,9 +6,12 @@ const mobileVersionMatches = typeof navigator !== 'undefined' && navigator.userA
6
6
  const androidVersion = mobileVersionMatches && mobileVersionMatches[1] ? parseInt(mobileVersionMatches[1], 10) : null;
7
7
  const iOSVersion = mobileVersionMatches && mobileVersionMatches[2] ? parseInt(mobileVersionMatches[2], 10) : null;
8
8
  export const slowAnimationDevices = androidVersion && androidVersion < 10 || iOSVersion && iOSVersion < 13 || false;
9
- export const useDefaultReduceAnimations = () => {
9
+ export function useReduceAnimations(customReduceAnimations) {
10
10
  const prefersReduced = useMediaQuery(PREFERS_REDUCED_MOTION, {
11
11
  defaultMatches: false
12
12
  });
13
+ if (customReduceAnimations != null) {
14
+ return customReduceAnimations;
15
+ }
13
16
  return prefersReduced || slowAnimationDevices;
14
- };
17
+ }
@@ -7,6 +7,6 @@ import { DateOrTimeViewWithMeridiem } from '../../models';
7
7
  * - StaticDateTimePicker
8
8
  * - StaticTimePicker
9
9
  */
10
- export declare const useStaticPicker: <TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseStaticPickerProps<TView, any, TExternalProps>>({ props, ref, ...pickerParams }: UseStaticPickerParams<TView, TExternalProps>) => {
10
+ export declare const useStaticPicker: <TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseStaticPickerProps<TView, any, TExternalProps>>({ props, ...pickerParams }: UseStaticPickerParams<TView, TExternalProps>) => {
11
11
  renderPicker: () => React.JSX.Element;
12
12
  };