@mui/x-date-pickers 8.0.0-alpha.5 → 8.0.0-alpha.7

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 (305) 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/CHANGELOG.md +206 -1
  20. package/DateCalendar/DateCalendar.js +1 -1
  21. package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
  22. package/DateCalendar/PickersSlideTransition.d.ts +1 -1
  23. package/DateField/useDateField.d.ts +1 -1
  24. package/DateField/useDateField.js +13 -11
  25. package/DatePicker/DatePicker.js +1 -1
  26. package/DatePicker/DatePicker.types.d.ts +5 -0
  27. package/DatePicker/DatePickerToolbar.d.ts +1 -3
  28. package/DatePicker/DatePickerToolbar.js +10 -25
  29. package/DatePicker/shared.d.ts +1 -1
  30. package/DateTimeField/useDateTimeField.d.ts +1 -1
  31. package/DateTimeField/useDateTimeField.js +13 -11
  32. package/DateTimePicker/DateTimePicker.js +2 -2
  33. package/DateTimePicker/DateTimePicker.types.d.ts +2 -2
  34. package/DateTimePicker/DateTimePickerTabs.d.ts +2 -5
  35. package/DateTimePicker/DateTimePickerTabs.js +7 -14
  36. package/DateTimePicker/DateTimePickerToolbar.d.ts +12 -4
  37. package/DateTimePicker/DateTimePickerToolbar.js +42 -48
  38. package/DateTimePicker/shared.d.ts +3 -3
  39. package/DesktopDatePicker/DesktopDatePicker.js +9 -3
  40. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +7 -3
  41. package/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -10
  42. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +2 -2
  43. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +1 -2
  44. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -15
  45. package/DesktopTimePicker/DesktopTimePicker.js +3 -7
  46. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  47. package/MobileDatePicker/MobileDatePicker.js +2 -2
  48. package/MobileDatePicker/MobileDatePicker.types.d.ts +2 -3
  49. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  50. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +4 -4
  51. package/MobileTimePicker/MobileTimePicker.js +2 -2
  52. package/MobileTimePicker/MobileTimePicker.types.d.ts +4 -4
  53. package/PickersActionBar/PickersActionBar.d.ts +6 -7
  54. package/PickersActionBar/PickersActionBar.js +18 -16
  55. package/PickersLayout/PickersLayout.d.ts +2 -2
  56. package/PickersLayout/PickersLayout.js +1 -15
  57. package/PickersLayout/PickersLayout.types.d.ts +12 -15
  58. package/PickersLayout/usePickerLayout.d.ts +2 -2
  59. package/PickersLayout/usePickerLayout.js +13 -47
  60. package/PickersShortcuts/PickersShortcuts.d.ts +2 -5
  61. package/PickersShortcuts/PickersShortcuts.js +13 -10
  62. package/PickersShortcuts/index.d.ts +1 -1
  63. package/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
  64. package/PickersTextField/PickersTextField.js +1 -1
  65. package/StaticDatePicker/StaticDatePicker.types.d.ts +2 -3
  66. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +2 -2
  67. package/StaticTimePicker/StaticTimePicker.types.d.ts +2 -2
  68. package/TimeField/useTimeField.d.ts +1 -1
  69. package/TimeField/useTimeField.js +13 -11
  70. package/TimePicker/TimePicker.js +2 -2
  71. package/TimePicker/TimePicker.types.d.ts +2 -2
  72. package/TimePicker/TimePickerToolbar.d.ts +1 -2
  73. package/TimePicker/TimePickerToolbar.js +23 -35
  74. package/TimePicker/shared.d.ts +1 -1
  75. package/hooks/index.d.ts +2 -0
  76. package/hooks/index.js +3 -1
  77. package/hooks/useIsValidValue.d.ts +7 -0
  78. package/hooks/useIsValidValue.js +11 -0
  79. package/hooks/usePickerActionsContext.d.ts +7 -0
  80. package/hooks/usePickerActionsContext.js +15 -0
  81. package/hooks/usePickerContext.d.ts +3 -1
  82. package/hooks/usePickerContext.js +1 -2
  83. package/index.d.ts +1 -0
  84. package/index.js +3 -2
  85. package/internals/components/PickerProvider.d.ts +14 -8
  86. package/internals/components/PickerProvider.js +17 -6
  87. package/internals/components/PickersModalDialog.d.ts +1 -3
  88. package/internals/components/PickersModalDialog.js +9 -3
  89. package/internals/components/PickersPopper.d.ts +1 -3
  90. package/internals/components/PickersPopper.js +11 -6
  91. package/internals/components/PickersToolbar.d.ts +2 -3
  92. package/internals/components/PickersToolbar.js +1 -1
  93. package/internals/hooks/date-helpers-hooks.js +4 -3
  94. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +10 -12
  95. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +7 -7
  96. package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  97. package/internals/hooks/useField/index.d.ts +1 -1
  98. package/internals/hooks/useField/index.js +1 -1
  99. package/internals/hooks/useField/useField.d.ts +10 -1
  100. package/internals/hooks/useField/useField.js +17 -1
  101. package/internals/hooks/useField/useField.utils.js +2 -2
  102. package/internals/hooks/useField/useFieldState.js +2 -2
  103. package/internals/hooks/useField/useFieldV6TextField.js +2 -2
  104. package/internals/hooks/useMobilePicker/useMobilePicker.js +9 -10
  105. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -7
  106. package/internals/hooks/useOpenState.js +3 -2
  107. package/internals/hooks/usePicker/usePicker.d.ts +1 -1
  108. package/internals/hooks/usePicker/usePicker.js +0 -8
  109. package/internals/hooks/usePicker/usePicker.types.d.ts +6 -7
  110. package/internals/hooks/usePicker/usePickerProvider.d.ts +5 -5
  111. package/internals/hooks/usePicker/usePickerProvider.js +8 -5
  112. package/internals/hooks/usePicker/usePickerValue.d.ts +1 -1
  113. package/internals/hooks/usePicker/usePickerValue.js +82 -217
  114. package/internals/hooks/usePicker/usePickerValue.types.d.ts +82 -67
  115. package/internals/hooks/usePicker/usePickerViews.d.ts +35 -20
  116. package/internals/hooks/usePicker/usePickerViews.js +22 -14
  117. package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
  118. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +6 -6
  119. package/internals/hooks/useUtils.js +1 -1
  120. package/internals/index.d.ts +9 -7
  121. package/internals/index.js +5 -3
  122. package/internals/models/index.d.ts +1 -0
  123. package/internals/models/index.js +2 -1
  124. package/internals/models/manager.d.ts +12 -0
  125. package/internals/models/manager.js +1 -0
  126. package/internals/models/props/basePickerProps.d.ts +2 -2
  127. package/internals/models/props/tabs.d.ts +0 -13
  128. package/internals/models/props/toolbar.d.ts +1 -20
  129. package/internals/utils/date-utils.js +1 -1
  130. package/internals/utils/valueManagers.js +4 -4
  131. package/locales/index.d.ts +1 -0
  132. package/locales/index.js +1 -0
  133. package/locales/nbNO.js +15 -19
  134. package/locales/utils/getPickersLocalization.js +1 -1
  135. package/locales/zhTW.d.ts +80 -0
  136. package/locales/zhTW.js +73 -0
  137. package/managers/index.d.ts +6 -0
  138. package/managers/index.js +3 -0
  139. package/managers/package.json +6 -0
  140. package/managers/useDateManager.d.ts +27 -0
  141. package/managers/useDateManager.js +47 -0
  142. package/managers/useDateTimeManager.d.ts +28 -0
  143. package/managers/useDateTimeManager.js +52 -0
  144. package/managers/useTimeManager.d.ts +28 -0
  145. package/managers/useTimeManager.js +43 -0
  146. package/models/adapters.d.ts +1 -1
  147. package/models/index.d.ts +1 -0
  148. package/models/index.js +1 -0
  149. package/models/manager.d.ts +78 -0
  150. package/models/manager.js +1 -0
  151. package/models/pickers.d.ts +7 -0
  152. package/modern/AdapterDateFns/AdapterDateFns.js +49 -47
  153. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
  154. package/modern/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
  155. package/modern/AdapterDateFnsJalaliV2/index.js +1 -0
  156. package/modern/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
  157. package/modern/AdapterDateFnsV2/index.js +1 -0
  158. package/modern/DateCalendar/DateCalendar.js +1 -1
  159. package/modern/DateField/useDateField.js +13 -11
  160. package/modern/DatePicker/DatePicker.js +1 -1
  161. package/modern/DatePicker/DatePickerToolbar.js +10 -25
  162. package/modern/DateTimeField/useDateTimeField.js +13 -11
  163. package/modern/DateTimePicker/DateTimePicker.js +2 -2
  164. package/modern/DateTimePicker/DateTimePickerTabs.js +7 -14
  165. package/modern/DateTimePicker/DateTimePickerToolbar.js +42 -48
  166. package/modern/DesktopDatePicker/DesktopDatePicker.js +9 -3
  167. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -10
  168. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -15
  169. package/modern/DesktopTimePicker/DesktopTimePicker.js +3 -7
  170. package/modern/MobileDatePicker/MobileDatePicker.js +2 -2
  171. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  172. package/modern/MobileTimePicker/MobileTimePicker.js +2 -2
  173. package/modern/PickersActionBar/PickersActionBar.js +18 -16
  174. package/modern/PickersLayout/PickersLayout.js +1 -15
  175. package/modern/PickersLayout/usePickerLayout.js +13 -47
  176. package/modern/PickersShortcuts/PickersShortcuts.js +13 -10
  177. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
  178. package/modern/PickersTextField/PickersTextField.js +1 -1
  179. package/modern/TimeField/useTimeField.js +13 -11
  180. package/modern/TimePicker/TimePicker.js +2 -2
  181. package/modern/TimePicker/TimePickerToolbar.js +23 -35
  182. package/modern/hooks/index.js +3 -1
  183. package/modern/hooks/useIsValidValue.js +11 -0
  184. package/modern/hooks/usePickerActionsContext.js +15 -0
  185. package/modern/hooks/usePickerContext.js +1 -2
  186. package/modern/index.js +3 -2
  187. package/modern/internals/components/PickerProvider.js +17 -6
  188. package/modern/internals/components/PickersModalDialog.js +9 -3
  189. package/modern/internals/components/PickersPopper.js +11 -6
  190. package/modern/internals/components/PickersToolbar.js +1 -1
  191. package/modern/internals/hooks/date-helpers-hooks.js +4 -3
  192. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +10 -12
  193. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  194. package/modern/internals/hooks/useField/index.js +1 -1
  195. package/modern/internals/hooks/useField/useField.js +17 -1
  196. package/modern/internals/hooks/useField/useField.utils.js +2 -2
  197. package/modern/internals/hooks/useField/useFieldState.js +2 -2
  198. package/modern/internals/hooks/useField/useFieldV6TextField.js +2 -2
  199. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +9 -10
  200. package/modern/internals/hooks/useOpenState.js +3 -2
  201. package/modern/internals/hooks/usePicker/usePicker.js +0 -8
  202. package/modern/internals/hooks/usePicker/usePickerProvider.js +8 -5
  203. package/modern/internals/hooks/usePicker/usePickerValue.js +82 -217
  204. package/modern/internals/hooks/usePicker/usePickerViews.js +22 -14
  205. package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
  206. package/modern/internals/hooks/useUtils.js +1 -1
  207. package/modern/internals/index.js +5 -3
  208. package/modern/internals/models/index.js +2 -1
  209. package/modern/internals/models/manager.js +1 -0
  210. package/modern/internals/utils/date-utils.js +1 -1
  211. package/modern/internals/utils/valueManagers.js +4 -4
  212. package/modern/locales/index.js +1 -0
  213. package/modern/locales/nbNO.js +15 -19
  214. package/modern/locales/utils/getPickersLocalization.js +1 -1
  215. package/modern/locales/zhTW.js +73 -0
  216. package/modern/managers/index.js +3 -0
  217. package/modern/managers/useDateManager.js +47 -0
  218. package/modern/managers/useDateTimeManager.js +52 -0
  219. package/modern/managers/useTimeManager.js +43 -0
  220. package/modern/models/index.js +1 -0
  221. package/modern/models/manager.js +1 -0
  222. package/node/AdapterDateFns/AdapterDateFns.js +97 -97
  223. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +97 -96
  224. package/node/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +94 -101
  225. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  226. package/node/AdapterDateFnsV2/AdapterDateFnsV2.js +291 -0
  227. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  228. package/node/DateCalendar/DateCalendar.js +1 -1
  229. package/node/DateField/useDateField.js +12 -10
  230. package/node/DatePicker/DatePicker.js +1 -1
  231. package/node/DatePicker/DatePickerToolbar.js +10 -25
  232. package/node/DateTimeField/useDateTimeField.js +12 -10
  233. package/node/DateTimePicker/DateTimePicker.js +2 -2
  234. package/node/DateTimePicker/DateTimePickerTabs.js +7 -14
  235. package/node/DateTimePicker/DateTimePickerToolbar.js +43 -49
  236. package/node/DesktopDatePicker/DesktopDatePicker.js +9 -3
  237. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -10
  238. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -15
  239. package/node/DesktopTimePicker/DesktopTimePicker.js +3 -7
  240. package/node/MobileDatePicker/MobileDatePicker.js +2 -2
  241. package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  242. package/node/MobileTimePicker/MobileTimePicker.js +2 -2
  243. package/node/PickersActionBar/PickersActionBar.js +20 -18
  244. package/node/PickersLayout/PickersLayout.js +1 -15
  245. package/node/PickersLayout/usePickerLayout.js +17 -51
  246. package/node/PickersShortcuts/PickersShortcuts.js +13 -10
  247. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
  248. package/node/PickersTextField/PickersTextField.js +1 -1
  249. package/node/TimeField/useTimeField.js +12 -10
  250. package/node/TimePicker/TimePicker.js +2 -2
  251. package/node/TimePicker/TimePickerToolbar.js +23 -35
  252. package/node/hooks/index.js +15 -1
  253. package/node/hooks/useIsValidValue.js +18 -0
  254. package/node/hooks/usePickerActionsContext.js +22 -0
  255. package/node/hooks/usePickerContext.js +1 -1
  256. package/node/index.js +13 -1
  257. package/node/internals/components/PickerProvider.js +18 -7
  258. package/node/internals/components/PickersModalDialog.js +9 -3
  259. package/node/internals/components/PickersPopper.js +11 -6
  260. package/node/internals/components/PickersToolbar.js +1 -1
  261. package/node/internals/hooks/date-helpers-hooks.js +4 -3
  262. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +10 -12
  263. package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  264. package/node/internals/hooks/useField/index.js +6 -0
  265. package/node/internals/hooks/useField/useField.js +18 -1
  266. package/node/internals/hooks/useField/useField.utils.js +2 -2
  267. package/node/internals/hooks/useField/useFieldState.js +2 -2
  268. package/node/internals/hooks/useField/useFieldV6TextField.js +2 -2
  269. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +9 -10
  270. package/node/internals/hooks/useOpenState.js +4 -2
  271. package/node/internals/hooks/usePicker/usePicker.js +0 -9
  272. package/node/internals/hooks/usePicker/usePickerProvider.js +8 -5
  273. package/node/internals/hooks/usePicker/usePickerValue.js +82 -217
  274. package/node/internals/hooks/usePicker/usePickerViews.js +22 -15
  275. package/node/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
  276. package/node/internals/hooks/useUtils.js +1 -1
  277. package/node/internals/index.js +28 -20
  278. package/node/internals/models/index.js +11 -0
  279. package/node/internals/models/manager.js +5 -0
  280. package/node/internals/utils/date-utils.js +1 -1
  281. package/node/internals/utils/valueManagers.js +4 -4
  282. package/node/locales/index.js +11 -0
  283. package/node/locales/nbNO.js +15 -19
  284. package/node/locales/utils/getPickersLocalization.js +1 -1
  285. package/node/locales/zhTW.js +79 -0
  286. package/node/managers/index.js +26 -0
  287. package/node/managers/useDateManager.js +55 -0
  288. package/node/managers/useDateTimeManager.js +60 -0
  289. package/node/managers/useTimeManager.js +51 -0
  290. package/node/models/index.js +11 -0
  291. package/node/models/manager.js +5 -0
  292. package/package.json +3 -3
  293. package/themeAugmentation/props.d.ts +2 -3
  294. package/validation/extractValidationProps.d.ts +1 -1
  295. package/AdapterDateFnsJalaliV3/index.d.ts +0 -1
  296. package/AdapterDateFnsJalaliV3/index.js +0 -1
  297. package/AdapterDateFnsV3/index.d.ts +0 -1
  298. package/AdapterDateFnsV3/index.js +0 -1
  299. package/internals/hooks/defaultizedFieldProps.d.ts +0 -18
  300. package/internals/hooks/defaultizedFieldProps.js +0 -40
  301. package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
  302. package/modern/AdapterDateFnsV3/index.js +0 -1
  303. package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
  304. package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
  305. package/node/internals/hooks/defaultizedFieldProps.js +0 -50
@@ -2,7 +2,7 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- const _excluded = ["ampm", "ampmInClock", "value", "onChange", "view", "isLandscape", "onViewChange", "toolbarFormat", "toolbarPlaceholder", "views", "toolbarTitle", "className", "classes"];
5
+ const _excluded = ["ampm", "ampmInClock", "toolbarFormat", "toolbarPlaceholder", "toolbarTitle", "className", "classes"];
6
6
  import * as React from 'react';
7
7
  import clsx from 'clsx';
8
8
  import PropTypes from 'prop-types';
@@ -206,10 +206,11 @@ const DateTimePickerToolbarAmPmSelection = styled('div', {
206
206
  });
207
207
 
208
208
  /**
209
- * If this context value is set to true, the toolbar will always be rendered in the desktop mode.
209
+ * If `forceDesktopVariant` is set to `true`, the toolbar will always be rendered in the desktop mode.
210
+ * If `onViewChange` is defined, the toolbar will call it instead of calling the default handler from `usePickerContext`.
210
211
  * This is used by the Date Time Range Picker Toolbar.
211
212
  */
212
- export const DateTimePickerToolbarForceDesktopVariant = /*#__PURE__*/React.createContext(false);
213
+ export const DateTimePickerToolbarOverrideContext = /*#__PURE__*/React.createContext(null);
213
214
 
214
215
  /**
215
216
  * Demos:
@@ -229,40 +230,45 @@ function DateTimePickerToolbar(inProps) {
229
230
  const {
230
231
  ampm,
231
232
  ampmInClock,
232
- value,
233
- onChange,
234
- view,
235
- isLandscape,
236
- onViewChange,
237
233
  toolbarFormat,
238
234
  toolbarPlaceholder = '––',
239
- views,
240
235
  toolbarTitle: inToolbarTitle,
241
236
  className,
242
237
  classes: classesProp
243
238
  } = props,
244
239
  other = _objectWithoutPropertiesLoose(props, _excluded);
245
240
  const {
241
+ value: valueContext,
242
+ setValue: setValueContext,
246
243
  disabled,
247
244
  readOnly,
248
- variant
245
+ variant,
246
+ orientation,
247
+ view: viewContext,
248
+ setView: setViewContext,
249
+ views
249
250
  } = usePickerContext();
251
+ const translations = usePickerTranslations();
250
252
  const ownerState = useToolbarOwnerState();
251
253
  const classes = useUtilityClasses(classesProp, ownerState);
252
254
  const utils = useUtils();
255
+ const overrides = React.useContext(DateTimePickerToolbarOverrideContext);
256
+ const value = overrides ? overrides.value : valueContext;
257
+ const setValue = overrides ? overrides.setValue : setValueContext;
258
+ const view = overrides ? overrides.view : viewContext;
259
+ const setView = overrides ? overrides.setView : setViewContext;
253
260
  const {
254
261
  meridiemMode,
255
262
  handleMeridiemChange
256
- } = useMeridiemMode(value, ampm, onChange);
257
- const translations = usePickerTranslations();
258
- const forceDesktopVariant = React.useContext(DateTimePickerToolbarForceDesktopVariant);
259
- const toolbarVariant = forceDesktopVariant ? 'desktop' : variant;
263
+ } = useMeridiemMode(value, ampm, newValue => setValue(newValue, {
264
+ changeImportance: 'set'
265
+ }));
266
+ const toolbarVariant = overrides?.forceDesktopVariant ? 'desktop' : variant;
260
267
  const isDesktop = toolbarVariant === 'desktop';
261
268
  const showAmPmControl = Boolean(ampm && !ampmInClock);
262
269
  const toolbarTitle = inToolbarTitle ?? translations.dateTimePickerToolbarTitle;
263
- const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');
264
270
  const dateText = React.useMemo(() => {
265
- if (!value) {
271
+ if (!utils.isValid(value)) {
266
272
  return toolbarPlaceholder;
267
273
  }
268
274
  if (toolbarFormat) {
@@ -270,8 +276,13 @@ function DateTimePickerToolbar(inProps) {
270
276
  }
271
277
  return utils.format(value, 'shortDate');
272
278
  }, [value, toolbarFormat, toolbarPlaceholder, utils]);
279
+ const formatSection = (format, fallback) => {
280
+ if (!utils.isValid(value)) {
281
+ return fallback;
282
+ }
283
+ return utils.format(value, format);
284
+ };
273
285
  return /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({
274
- isLandscape: isLandscape,
275
286
  className: clsx(classes.root, className),
276
287
  toolbarTitle: toolbarTitle,
277
288
  toolbarVariant: toolbarVariant
@@ -283,13 +294,13 @@ function DateTimePickerToolbar(inProps) {
283
294
  children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {
284
295
  tabIndex: -1,
285
296
  variant: "subtitle1",
286
- onClick: () => onViewChange('year'),
297
+ onClick: () => setView('year'),
287
298
  selected: view === 'year',
288
- value: value ? utils.format(value, 'year') : '–'
299
+ value: formatSection('year', '–')
289
300
  }), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {
290
301
  tabIndex: -1,
291
302
  variant: isDesktop ? 'h5' : 'h4',
292
- onClick: () => onViewChange('day'),
303
+ onClick: () => setView('day'),
293
304
  selected: view === 'day',
294
305
  value: dateText
295
306
  })]
@@ -304,10 +315,10 @@ function DateTimePickerToolbar(inProps) {
304
315
  children: [views.includes('hours') && /*#__PURE__*/_jsxs(React.Fragment, {
305
316
  children: [/*#__PURE__*/_jsx(PickersToolbarButton, {
306
317
  variant: isDesktop ? 'h5' : 'h3',
307
- width: isDesktop && !isLandscape ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
308
- onClick: () => onViewChange('hours'),
318
+ width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
319
+ onClick: () => setView('hours'),
309
320
  selected: view === 'hours',
310
- value: value ? formatHours(value) : '--'
321
+ value: formatSection(ampm ? 'hours12h' : 'hours24h', '--')
311
322
  }), /*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {
312
323
  variant: isDesktop ? 'h5' : 'h3',
313
324
  value: ":",
@@ -316,10 +327,10 @@ function DateTimePickerToolbar(inProps) {
316
327
  toolbarVariant: toolbarVariant
317
328
  }), /*#__PURE__*/_jsx(PickersToolbarButton, {
318
329
  variant: isDesktop ? 'h5' : 'h3',
319
- width: isDesktop && !isLandscape ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
320
- onClick: () => onViewChange('minutes'),
330
+ width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
331
+ onClick: () => setView('minutes'),
321
332
  selected: view === 'minutes' || !views.includes('minutes') && view === 'hours',
322
- value: value ? utils.format(value, 'minutes') : '--',
333
+ value: formatSection('minutes', '--'),
323
334
  disabled: !views.includes('minutes')
324
335
  })]
325
336
  }), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {
@@ -331,10 +342,10 @@ function DateTimePickerToolbar(inProps) {
331
342
  toolbarVariant: toolbarVariant
332
343
  }), /*#__PURE__*/_jsx(PickersToolbarButton, {
333
344
  variant: isDesktop ? 'h5' : 'h3',
334
- width: isDesktop && !isLandscape ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
335
- onClick: () => onViewChange('seconds'),
345
+ width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
346
+ onClick: () => setView('seconds'),
336
347
  selected: view === 'seconds',
337
- value: value ? utils.format(value, 'seconds') : '--'
348
+ value: formatSection('seconds', '--')
338
349
  })]
339
350
  })]
340
351
  }), showAmPmControl && !isDesktop && /*#__PURE__*/_jsxs(DateTimePickerToolbarAmPmSelection, {
@@ -357,7 +368,7 @@ function DateTimePickerToolbar(inProps) {
357
368
  })]
358
369
  }), ampm && isDesktop && /*#__PURE__*/_jsx(PickersToolbarButton, {
359
370
  variant: "h5",
360
- onClick: () => onViewChange('meridiem'),
371
+ onClick: () => setView('meridiem'),
361
372
  selected: view === 'meridiem',
362
373
  value: value && meridiemMode ? formatMeridiem(utils, meridiemMode) : '--',
363
374
  width: MULTI_SECTION_CLOCK_SECTION_WIDTH
@@ -382,14 +393,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
382
393
  * @default `true` for Desktop, `false` for Mobile.
383
394
  */
384
395
  hidden: PropTypes.bool,
385
- isLandscape: PropTypes.bool.isRequired,
386
- onChange: PropTypes.func.isRequired,
387
- /**
388
- * Callback called when a toolbar is clicked
389
- * @template TView
390
- * @param {TView} view The view to open
391
- */
392
- onViewChange: PropTypes.func.isRequired,
393
396
  /**
394
397
  * The system prop that allows defining system overrides as well as additional CSS styles.
395
398
  */
@@ -407,15 +410,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
407
410
  /**
408
411
  * If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.
409
412
  */
410
- toolbarTitle: PropTypes.node,
411
- value: PropTypes.object,
412
- /**
413
- * Currently visible picker view.
414
- */
415
- view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
416
- /**
417
- * Available views.
418
- */
419
- views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
413
+ toolbarTitle: PropTypes.node
420
414
  } : void 0;
421
415
  export { DateTimePickerToolbar };
@@ -16,6 +16,8 @@ import { DateField } from "../DateField/index.js";
16
16
  import { renderDateViewCalendar } from "../dateViewRenderers/index.js";
17
17
  import { resolveDateFormat } from "../internals/utils/date-utils.js";
18
18
  import { buildGetOpenDialogAriaText } from "../locales/utils/getPickersLocalization.js";
19
+ const emptyActions = [];
20
+
19
21
  /**
20
22
  * Demos:
21
23
  *
@@ -40,6 +42,7 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
40
42
 
41
43
  // Props with the default values specific to the desktop variant
42
44
  const props = _extends({}, defaultizedProps, {
45
+ closeOnSelect: defaultizedProps.closeOnSelect ?? true,
43
46
  viewRenderers,
44
47
  format: resolveDateFormat(utils, defaultizedProps, false),
45
48
  yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
@@ -53,7 +56,10 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
53
56
  }),
54
57
  toolbar: _extends({
55
58
  hidden: true
56
- }, defaultizedProps.slotProps?.toolbar)
59
+ }, defaultizedProps.slotProps?.toolbar),
60
+ actionBar: ownerState => _extends({
61
+ actions: emptyActions
62
+ }, resolveComponentProps(defaultizedProps.slotProps?.actionBar, ownerState))
57
63
  })
58
64
  });
59
65
  const {
@@ -86,8 +92,8 @@ DesktopDatePicker.propTypes = {
86
92
  autoFocus: PropTypes.bool,
87
93
  className: PropTypes.string,
88
94
  /**
89
- * If `true`, the popover or modal will close after submitting the full date.
90
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
95
+ * If `true`, the Picker will close after submitting the full date.
96
+ * @default true
91
97
  */
92
98
  closeOnSelect: PropTypes.bool,
93
99
  /**
@@ -27,7 +27,12 @@ import { isInternalTimeView } from "../internals/utils/time-utils.js";
27
27
  import { isDatePickerView } from "../internals/utils/date-utils.js";
28
28
  import { buildGetOpenDialogAriaText } from "../locales/utils/getPickersLocalization.js";
29
29
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
30
- const rendererInterceptor = function rendererInterceptor(inViewRenderers, popperView, rendererProps) {
30
+ const rendererInterceptor = function RendererInterceptor(props) {
31
+ const {
32
+ viewRenderers,
33
+ popperView,
34
+ rendererProps
35
+ } = props;
31
36
  const {
32
37
  openTo,
33
38
  focusedView,
@@ -46,8 +51,10 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
46
51
  }]
47
52
  });
48
53
  const isTimeViewActive = isInternalTimeView(popperView);
54
+ const dateView = isTimeViewActive ? 'day' : popperView;
55
+ const timeView = isTimeViewActive ? popperView : 'hours';
49
56
  return /*#__PURE__*/_jsxs(React.Fragment, {
50
- children: [inViewRenderers[!isTimeViewActive ? popperView : 'day']?.(_extends({}, rendererProps, {
57
+ children: [viewRenderers[dateView]?.(_extends({}, rendererProps, {
51
58
  view: !isTimeViewActive ? popperView : 'day',
52
59
  focusedView: focusedView && isDatePickerView(focusedView) ? focusedView : null,
53
60
  views: rendererProps.views.filter(isDatePickerView),
@@ -60,7 +67,7 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
60
67
  sx: {
61
68
  gridColumn: 2
62
69
  }
63
- }), inViewRenderers[isTimeViewActive ? popperView : 'hours']?.(_extends({}, finalProps, {
70
+ }), viewRenderers[timeView]?.(_extends({}, finalProps, {
64
71
  view: isTimeViewActive ? popperView : 'hours',
65
72
  focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
66
73
  openTo: isInternalTimeView(openTo) ? openTo : 'hours',
@@ -108,7 +115,6 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
108
115
  // Need to avoid adding the `meridiem` view when unexpected renderer is specified
109
116
  const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
110
117
  const views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(view => view !== 'meridiem') : resolvedViews;
111
- const actionBarActions = shouldRenderTimeInASingleColumn ? [] : ['accept'];
112
118
 
113
119
  // Props with the default values specific to the desktop variant
114
120
  const props = _extends({}, defaultizedProps, {
@@ -135,10 +141,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
135
141
  }, defaultizedProps.slotProps?.toolbar),
136
142
  tabs: _extends({
137
143
  hidden: true
138
- }, defaultizedProps.slotProps?.tabs),
139
- actionBar: ownerState => _extends({
140
- actions: actionBarActions
141
- }, resolveComponentProps(defaultizedProps.slotProps?.actionBar, ownerState))
144
+ }, defaultizedProps.slotProps?.tabs)
142
145
  })
143
146
  });
144
147
  const {
@@ -182,8 +185,8 @@ DesktopDateTimePicker.propTypes = {
182
185
  autoFocus: PropTypes.bool,
183
186
  className: PropTypes.string,
184
187
  /**
185
- * If `true`, the popover or modal will close after submitting the full date.
186
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
188
+ * If `true`, the Picker will close after submitting the full date.
189
+ * @default false
187
190
  */
188
191
  closeOnSelect: PropTypes.bool,
189
192
  /**
@@ -65,17 +65,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes =
65
65
  */
66
66
  classes: PropTypes.object,
67
67
  className: PropTypes.string,
68
- isValid: PropTypes.func.isRequired,
69
- onAccept: PropTypes.func.isRequired,
70
- onCancel: PropTypes.func.isRequired,
71
- onChange: PropTypes.func.isRequired,
72
- onClear: PropTypes.func.isRequired,
73
- onClose: PropTypes.func.isRequired,
74
- onDismiss: PropTypes.func.isRequired,
75
- onOpen: PropTypes.func.isRequired,
76
- onSelectShortcut: PropTypes.func.isRequired,
77
- onSetToday: PropTypes.func.isRequired,
78
- onViewChange: PropTypes.func.isRequired,
79
68
  /**
80
69
  * The props used for each component slot.
81
70
  * @default {}
@@ -89,9 +78,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes =
89
78
  /**
90
79
  * The system prop that allows defining system overrides as well as additional CSS styles.
91
80
  */
92
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
93
- value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
94
- view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
95
- views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
81
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
96
82
  } : void 0;
97
83
  export { DesktopDateTimePickerLayout };
@@ -46,7 +46,6 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
46
46
  meridiem: renderTimeView
47
47
  }, defaultizedProps.viewRenderers);
48
48
  const ampmInClock = defaultizedProps.ampmInClock ?? true;
49
- const actionBarActions = shouldRenderTimeInASingleColumn ? [] : ['accept'];
50
49
  // Need to avoid adding the `meridiem` view when unexpected renderer is specified
51
50
  const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
52
51
  const views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(view => view !== 'meridiem') : resolvedViews;
@@ -71,10 +70,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
71
70
  toolbar: _extends({
72
71
  hidden: true,
73
72
  ampmInClock
74
- }, defaultizedProps.slotProps?.toolbar),
75
- actionBar: _extends({
76
- actions: actionBarActions
77
- }, defaultizedProps.slotProps?.actionBar)
73
+ }, defaultizedProps.slotProps?.toolbar)
78
74
  })
79
75
  });
80
76
  const {
@@ -117,8 +113,8 @@ DesktopTimePicker.propTypes = {
117
113
  autoFocus: PropTypes.bool,
118
114
  className: PropTypes.string,
119
115
  /**
120
- * If `true`, the popover or modal will close after submitting the full date.
121
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
116
+ * If `true`, the Picker will close after submitting the full date.
117
+ * @default false
122
118
  */
123
119
  closeOnSelect: PropTypes.bool,
124
120
  /**
@@ -83,8 +83,8 @@ MobileDatePicker.propTypes = {
83
83
  autoFocus: PropTypes.bool,
84
84
  className: PropTypes.string,
85
85
  /**
86
- * If `true`, the popover or modal will close after submitting the full date.
87
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
86
+ * If `true`, the Picker will close after submitting the full date.
87
+ * @default false
88
88
  */
89
89
  closeOnSelect: PropTypes.bool,
90
90
  /**
@@ -103,8 +103,8 @@ MobileDateTimePicker.propTypes = {
103
103
  autoFocus: PropTypes.bool,
104
104
  className: PropTypes.string,
105
105
  /**
106
- * If `true`, the popover or modal will close after submitting the full date.
107
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
106
+ * If `true`, the Picker will close after submitting the full date.
107
+ * @default false
108
108
  */
109
109
  closeOnSelect: PropTypes.bool,
110
110
  /**
@@ -96,8 +96,8 @@ MobileTimePicker.propTypes = {
96
96
  autoFocus: PropTypes.bool,
97
97
  className: PropTypes.string,
98
98
  /**
99
- * If `true`, the popover or modal will close after submitting the full date.
100
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
99
+ * If `true`, the Picker will close after submitting the full date.
100
+ * @default false
101
101
  */
102
102
  closeOnSelect: PropTypes.bool,
103
103
  /**
@@ -2,13 +2,14 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- const _excluded = ["onAccept", "onClear", "onCancel", "onSetToday", "actions"];
5
+ const _excluded = ["actions"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import { styled } from '@mui/material/styles';
9
9
  import Button from '@mui/material/Button';
10
10
  import DialogActions from '@mui/material/DialogActions';
11
11
  import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
12
+ import { usePickerActionsContext } from "../hooks/index.js";
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
13
14
  const PickersActionBarRoot = styled(DialogActions, {
14
15
  name: 'MuiPickersLayout',
@@ -26,16 +27,18 @@ const PickersActionBarRoot = styled(DialogActions, {
26
27
  *
27
28
  * - [PickersActionBar API](https://mui.com/x/api/date-pickers/pickers-action-bar/)
28
29
  */
29
- function PickersActionBar(props) {
30
+ function PickersActionBarComponent(props) {
30
31
  const {
31
- onAccept,
32
- onClear,
33
- onCancel,
34
- onSetToday,
35
32
  actions
36
33
  } = props,
37
34
  other = _objectWithoutPropertiesLoose(props, _excluded);
38
35
  const translations = usePickerTranslations();
36
+ const {
37
+ clearValue,
38
+ setValueToToday,
39
+ acceptValueChanges,
40
+ cancelValueChanges
41
+ } = usePickerActionsContext();
39
42
  if (actions == null || actions.length === 0) {
40
43
  return null;
41
44
  }
@@ -43,22 +46,22 @@ function PickersActionBar(props) {
43
46
  switch (actionType) {
44
47
  case 'clear':
45
48
  return /*#__PURE__*/_jsx(Button, {
46
- onClick: onClear,
49
+ onClick: clearValue,
47
50
  children: translations.clearButtonLabel
48
51
  }, actionType);
49
52
  case 'cancel':
50
53
  return /*#__PURE__*/_jsx(Button, {
51
- onClick: onCancel,
54
+ onClick: cancelValueChanges,
52
55
  children: translations.cancelButtonLabel
53
56
  }, actionType);
54
57
  case 'accept':
55
58
  return /*#__PURE__*/_jsx(Button, {
56
- onClick: onAccept,
59
+ onClick: acceptValueChanges,
57
60
  children: translations.okButtonLabel
58
61
  }, actionType);
59
62
  case 'today':
60
63
  return /*#__PURE__*/_jsx(Button, {
61
- onClick: onSetToday,
64
+ onClick: setValueToToday,
62
65
  children: translations.todayButtonLabel
63
66
  }, actionType);
64
67
  default:
@@ -69,7 +72,7 @@ function PickersActionBar(props) {
69
72
  children: buttons
70
73
  }));
71
74
  }
72
- process.env.NODE_ENV !== "production" ? PickersActionBar.propTypes = {
75
+ process.env.NODE_ENV !== "production" ? PickersActionBarComponent.propTypes = {
73
76
  // ----------------------------- Warning --------------------------------
74
77
  // | These PropTypes are generated from the TypeScript type definitions |
75
78
  // | To update them edit the TypeScript types and run "pnpm proptypes" |
@@ -77,7 +80,9 @@ process.env.NODE_ENV !== "production" ? PickersActionBar.propTypes = {
77
80
  /**
78
81
  * Ordered array of actions to display.
79
82
  * If empty, does not display that action bar.
80
- * @default `['cancel', 'accept']` for mobile and `[]` for desktop
83
+ * @default
84
+ * - `[]` for Desktop Date Picker and Desktop Date Range Picker
85
+ * - `['cancel', 'accept']` for all other Pickers
81
86
  */
82
87
  actions: PropTypes.arrayOf(PropTypes.oneOf(['accept', 'cancel', 'clear', 'today']).isRequired),
83
88
  /**
@@ -85,13 +90,10 @@ process.env.NODE_ENV !== "production" ? PickersActionBar.propTypes = {
85
90
  * @default false
86
91
  */
87
92
  disableSpacing: PropTypes.bool,
88
- onAccept: PropTypes.func.isRequired,
89
- onCancel: PropTypes.func.isRequired,
90
- onClear: PropTypes.func.isRequired,
91
- onSetToday: PropTypes.func.isRequired,
92
93
  /**
93
94
  * The system prop that allows defining system overrides as well as additional CSS styles.
94
95
  */
95
96
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
96
97
  } : void 0;
98
+ const PickersActionBar = /*#__PURE__*/React.memo(PickersActionBarComponent);
97
99
  export { PickersActionBar };
@@ -150,17 +150,6 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
150
150
  */
151
151
  classes: PropTypes.object,
152
152
  className: PropTypes.string,
153
- isValid: PropTypes.func.isRequired,
154
- onAccept: PropTypes.func.isRequired,
155
- onCancel: PropTypes.func.isRequired,
156
- onChange: PropTypes.func.isRequired,
157
- onClear: PropTypes.func.isRequired,
158
- onClose: PropTypes.func.isRequired,
159
- onDismiss: PropTypes.func.isRequired,
160
- onOpen: PropTypes.func.isRequired,
161
- onSelectShortcut: PropTypes.func.isRequired,
162
- onSetToday: PropTypes.func.isRequired,
163
- onViewChange: PropTypes.func.isRequired,
164
153
  /**
165
154
  * The props used for each component slot.
166
155
  * @default {}
@@ -174,9 +163,6 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
174
163
  /**
175
164
  * The system prop that allows defining system overrides as well as additional CSS styles.
176
165
  */
177
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
178
- value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
179
- view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
180
- views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
166
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
181
167
  } : void 0;
182
168
  export { PickersLayout };
@@ -1,6 +1,8 @@
1
1
  'use client';
2
2
 
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
4
  import _extends from "@babel/runtime/helpers/esm/extends";
5
+ const _excluded = ["ownerState"];
4
6
  import * as React from 'react';
5
7
  import useSlotProps from '@mui/utils/useSlotProps';
6
8
  import composeClasses from '@mui/utils/composeClasses';
@@ -34,30 +36,14 @@ const usePickerLayout = props => {
34
36
  ownerState: pickerOwnerState
35
37
  } = usePickerPrivateContext();
36
38
  const {
37
- variant,
38
- orientation
39
+ view
39
40
  } = usePickerContext();
40
41
  const isRtl = useRtl();
41
42
  const {
42
- onAccept,
43
- onClear,
44
- onCancel,
45
- onSetToday,
46
- view,
47
- views,
48
- onViewChange,
49
- value,
50
- onChange,
51
- onSelectShortcut,
52
- isValid,
53
43
  children,
54
44
  slots,
55
45
  slotProps,
56
46
  classes: classesProp
57
- // TODO: Remove this "as" hack. It get introduced to mark `value` prop in PickersLayoutProps as not required.
58
- // The true type should be
59
- // - For pickers value: PickerValidDate | null
60
- // - For range pickers value: [PickerValidDate | null, PickerValidDate | null]
61
47
  } = props;
62
48
  const ownerState = React.useMemo(() => _extends({}, pickerOwnerState, {
63
49
  layoutDirection: isRtl ? 'rtl' : 'ltr'
@@ -66,19 +52,16 @@ const usePickerLayout = props => {
66
52
 
67
53
  // Action bar
68
54
  const ActionBar = slots?.actionBar ?? PickersActionBar;
69
- const actionBarProps = useSlotProps({
70
- elementType: ActionBar,
71
- externalSlotProps: slotProps?.actionBar,
72
- additionalProps: {
73
- onAccept,
74
- onClear,
75
- onCancel,
76
- onSetToday,
77
- actions: variant === 'desktop' ? [] : ['cancel', 'accept']
78
- },
79
- className: classes.actionBar,
80
- ownerState
81
- });
55
+ const _useSlotProps = useSlotProps({
56
+ elementType: ActionBar,
57
+ externalSlotProps: slotProps?.actionBar,
58
+ additionalProps: {
59
+ actions: ['cancel', 'accept']
60
+ },
61
+ className: classes.actionBar,
62
+ ownerState
63
+ }),
64
+ actionBarProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded);
82
65
  const actionBar = /*#__PURE__*/_jsx(ActionBar, _extends({}, actionBarProps));
83
66
 
84
67
  // Toolbar
@@ -86,15 +69,6 @@ const usePickerLayout = props => {
86
69
  const toolbarProps = useSlotProps({
87
70
  elementType: Toolbar,
88
71
  externalSlotProps: slotProps?.toolbar,
89
- additionalProps: {
90
- isLandscape: orientation === 'landscape',
91
- // Will be removed in a follow up PR?
92
- onChange,
93
- value,
94
- view,
95
- onViewChange,
96
- views
97
- },
98
72
  className: classes.toolbar,
99
73
  ownerState
100
74
  });
@@ -106,8 +80,6 @@ const usePickerLayout = props => {
106
80
  // Tabs
107
81
  const Tabs = slots?.tabs;
108
82
  const tabs = view && Tabs ? /*#__PURE__*/_jsx(Tabs, _extends({
109
- view: view,
110
- onViewChange: onViewChange,
111
83
  className: classes.tabs
112
84
  }, slotProps?.tabs)) : null;
113
85
 
@@ -116,12 +88,6 @@ const usePickerLayout = props => {
116
88
  const shortcutsProps = useSlotProps({
117
89
  elementType: Shortcuts,
118
90
  externalSlotProps: slotProps?.shortcuts,
119
- additionalProps: {
120
- isValid,
121
- isLandscape: orientation === 'landscape',
122
- // Will be removed in a follow up PR?
123
- onChange: onSelectShortcut
124
- },
125
91
  className: classes.shortcuts,
126
92
  ownerState
127
93
  });