@mui/x-date-pickers 8.0.0-alpha.6 → 8.0.0-alpha.8

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 (327) 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 +242 -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/DateField.js +26 -31
  24. package/DateField/DateField.types.d.ts +6 -15
  25. package/DateField/useDateField.d.ts +1 -1
  26. package/DateField/useDateField.js +14 -11
  27. package/DatePicker/DatePicker.js +1 -1
  28. package/DatePicker/DatePicker.types.d.ts +5 -0
  29. package/DatePicker/DatePickerToolbar.d.ts +1 -2
  30. package/DatePicker/DatePickerToolbar.js +7 -11
  31. package/DatePicker/shared.d.ts +1 -1
  32. package/DateTimeField/DateTimeField.js +26 -31
  33. package/DateTimeField/DateTimeField.types.d.ts +6 -15
  34. package/DateTimeField/useDateTimeField.d.ts +1 -1
  35. package/DateTimeField/useDateTimeField.js +14 -11
  36. package/DateTimePicker/DateTimePicker.js +2 -2
  37. package/DateTimePicker/DateTimePickerTabs.js +2 -2
  38. package/DateTimePicker/DateTimePickerToolbar.d.ts +6 -2
  39. package/DateTimePicker/DateTimePickerToolbar.js +36 -31
  40. package/DateTimePicker/shared.d.ts +1 -1
  41. package/DesktopDatePicker/DesktopDatePicker.js +9 -14
  42. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +5 -0
  43. package/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
  44. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
  45. package/DesktopTimePicker/DesktopTimePicker.js +4 -19
  46. package/MobileDatePicker/MobileDatePicker.js +2 -11
  47. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
  48. package/MobileTimePicker/MobileTimePicker.js +2 -11
  49. package/PickersActionBar/PickersActionBar.d.ts +6 -3
  50. package/PickersActionBar/PickersActionBar.js +6 -3
  51. package/PickersLayout/PickersLayout.js +1 -5
  52. package/PickersLayout/PickersLayout.types.d.ts +2 -3
  53. package/PickersLayout/usePickerLayout.js +12 -31
  54. package/PickersShortcuts/PickersShortcuts.d.ts +2 -5
  55. package/PickersShortcuts/PickersShortcuts.js +13 -10
  56. package/PickersShortcuts/index.d.ts +1 -1
  57. package/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
  58. package/PickersTextField/PickersTextField.js +1 -1
  59. package/TimeField/TimeField.js +25 -30
  60. package/TimeField/TimeField.types.d.ts +6 -15
  61. package/TimeField/useTimeField.d.ts +1 -1
  62. package/TimeField/useTimeField.js +14 -11
  63. package/TimePicker/TimePicker.js +2 -2
  64. package/TimePicker/TimePickerToolbar.d.ts +1 -2
  65. package/TimePicker/TimePickerToolbar.js +20 -18
  66. package/TimePicker/shared.d.ts +1 -1
  67. package/hooks/index.d.ts +1 -0
  68. package/hooks/index.js +2 -1
  69. package/hooks/useIsValidValue.d.ts +7 -0
  70. package/hooks/useIsValidValue.js +11 -0
  71. package/hooks/useParsedFormat.d.ts +8 -6
  72. package/hooks/useParsedFormat.js +10 -12
  73. package/hooks/usePickerActionsContext.d.ts +3 -1
  74. package/hooks/usePickerActionsContext.js +0 -1
  75. package/hooks/usePickerContext.d.ts +5 -3
  76. package/hooks/usePickerContext.js +3 -2
  77. package/hooks/useSplitFieldProps.d.ts +12 -3
  78. package/hooks/useSplitFieldProps.js +8 -3
  79. package/index.d.ts +1 -0
  80. package/index.js +3 -2
  81. package/internals/components/PickerFieldUI.d.ts +132 -0
  82. package/internals/components/PickerFieldUI.js +306 -0
  83. package/internals/components/PickerProvider.d.ts +34 -12
  84. package/internals/components/PickerProvider.js +14 -4
  85. package/internals/components/PickersToolbar.d.ts +2 -3
  86. package/internals/components/PickersToolbar.js +1 -1
  87. package/internals/hooks/date-helpers-hooks.js +4 -3
  88. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
  89. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -96
  90. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +10 -33
  91. package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  92. package/internals/hooks/useField/index.d.ts +2 -0
  93. package/internals/hooks/useField/index.js +2 -1
  94. package/internals/hooks/useField/useField.js +12 -4
  95. package/internals/hooks/useField/useField.types.d.ts +11 -4
  96. package/internals/hooks/useField/useField.utils.js +2 -2
  97. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.d.ts +15 -0
  98. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
  99. package/internals/hooks/useField/useFieldState.js +2 -2
  100. package/internals/hooks/useField/useFieldV6TextField.js +2 -2
  101. package/internals/hooks/useField/useFieldV7TextField.js +3 -3
  102. package/internals/hooks/useFieldOwnerState.d.ts +1 -2
  103. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
  104. package/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
  105. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +8 -16
  106. package/internals/hooks/useNullablePickerContext.d.ts +5 -0
  107. package/internals/hooks/useNullablePickerContext.js +10 -0
  108. package/internals/hooks/useOpenState.js +3 -2
  109. package/internals/hooks/usePicker/usePicker.d.ts +1 -2
  110. package/internals/hooks/usePicker/usePicker.js +0 -9
  111. package/internals/hooks/usePicker/usePicker.types.d.ts +7 -9
  112. package/internals/hooks/usePicker/usePickerProvider.d.ts +12 -6
  113. package/internals/hooks/usePicker/usePickerProvider.js +26 -4
  114. package/internals/hooks/usePicker/usePickerValue.d.ts +1 -1
  115. package/internals/hooks/usePicker/usePickerValue.js +62 -185
  116. package/internals/hooks/usePicker/usePickerValue.types.d.ts +52 -55
  117. package/internals/hooks/usePicker/usePickerViews.d.ts +27 -23
  118. package/internals/hooks/usePicker/usePickerViews.js +17 -11
  119. package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
  120. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +2 -2
  121. package/internals/hooks/useUtils.d.ts +4 -3
  122. package/internals/hooks/useUtils.js +1 -1
  123. package/internals/index.d.ts +11 -6
  124. package/internals/index.js +6 -4
  125. package/internals/models/fields.d.ts +3 -16
  126. package/internals/models/index.d.ts +1 -0
  127. package/internals/models/index.js +2 -1
  128. package/internals/models/manager.d.ts +15 -0
  129. package/internals/models/manager.js +1 -0
  130. package/internals/models/props/basePickerProps.d.ts +2 -14
  131. package/internals/models/props/toolbar.d.ts +1 -5
  132. package/internals/utils/date-utils.js +1 -1
  133. package/internals/utils/valueManagers.js +4 -4
  134. package/locales/index.d.ts +1 -0
  135. package/locales/index.js +1 -0
  136. package/locales/nbNO.js +15 -19
  137. package/locales/utils/getPickersLocalization.d.ts +0 -7
  138. package/locales/utils/getPickersLocalization.js +0 -13
  139. package/locales/zhTW.d.ts +80 -0
  140. package/locales/zhTW.js +73 -0
  141. package/managers/index.d.ts +6 -0
  142. package/managers/index.js +3 -0
  143. package/managers/package.json +6 -0
  144. package/managers/useDateManager.d.ts +27 -0
  145. package/managers/useDateManager.js +55 -0
  146. package/managers/useDateTimeManager.d.ts +28 -0
  147. package/managers/useDateTimeManager.js +60 -0
  148. package/managers/useTimeManager.d.ts +28 -0
  149. package/managers/useTimeManager.js +51 -0
  150. package/models/adapters.d.ts +1 -1
  151. package/models/fields.d.ts +4 -4
  152. package/models/index.d.ts +1 -0
  153. package/models/index.js +1 -0
  154. package/models/manager.d.ts +87 -0
  155. package/models/manager.js +1 -0
  156. package/models/pickers.d.ts +7 -0
  157. package/modern/AdapterDateFns/AdapterDateFns.js +49 -47
  158. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
  159. package/modern/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
  160. package/modern/AdapterDateFnsJalaliV2/index.js +1 -0
  161. package/modern/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
  162. package/modern/AdapterDateFnsV2/index.js +1 -0
  163. package/modern/DateCalendar/DateCalendar.js +1 -1
  164. package/modern/DateField/DateField.js +26 -31
  165. package/modern/DateField/useDateField.js +14 -11
  166. package/modern/DatePicker/DatePicker.js +1 -1
  167. package/modern/DatePicker/DatePickerToolbar.js +7 -11
  168. package/modern/DateTimeField/DateTimeField.js +26 -31
  169. package/modern/DateTimeField/useDateTimeField.js +14 -11
  170. package/modern/DateTimePicker/DateTimePicker.js +2 -2
  171. package/modern/DateTimePicker/DateTimePickerTabs.js +2 -2
  172. package/modern/DateTimePicker/DateTimePickerToolbar.js +36 -31
  173. package/modern/DesktopDatePicker/DesktopDatePicker.js +9 -14
  174. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
  175. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
  176. package/modern/DesktopTimePicker/DesktopTimePicker.js +4 -19
  177. package/modern/MobileDatePicker/MobileDatePicker.js +2 -11
  178. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
  179. package/modern/MobileTimePicker/MobileTimePicker.js +2 -11
  180. package/modern/PickersActionBar/PickersActionBar.js +6 -3
  181. package/modern/PickersLayout/PickersLayout.js +1 -5
  182. package/modern/PickersLayout/usePickerLayout.js +12 -31
  183. package/modern/PickersShortcuts/PickersShortcuts.js +13 -10
  184. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
  185. package/modern/PickersTextField/PickersTextField.js +1 -1
  186. package/modern/TimeField/TimeField.js +25 -30
  187. package/modern/TimeField/useTimeField.js +14 -11
  188. package/modern/TimePicker/TimePicker.js +2 -2
  189. package/modern/TimePicker/TimePickerToolbar.js +20 -18
  190. package/modern/hooks/index.js +2 -1
  191. package/modern/hooks/useIsValidValue.js +11 -0
  192. package/modern/hooks/useParsedFormat.js +10 -12
  193. package/modern/hooks/usePickerActionsContext.js +0 -1
  194. package/modern/hooks/usePickerContext.js +3 -2
  195. package/modern/hooks/useSplitFieldProps.js +8 -3
  196. package/modern/index.js +3 -2
  197. package/modern/internals/components/PickerFieldUI.js +306 -0
  198. package/modern/internals/components/PickerProvider.js +14 -4
  199. package/modern/internals/components/PickersToolbar.js +1 -1
  200. package/modern/internals/hooks/date-helpers-hooks.js +4 -3
  201. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -96
  202. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  203. package/modern/internals/hooks/useField/index.js +2 -1
  204. package/modern/internals/hooks/useField/useField.js +12 -4
  205. package/modern/internals/hooks/useField/useField.utils.js +2 -2
  206. package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
  207. package/modern/internals/hooks/useField/useFieldState.js +2 -2
  208. package/modern/internals/hooks/useField/useFieldV6TextField.js +2 -2
  209. package/modern/internals/hooks/useField/useFieldV7TextField.js +3 -3
  210. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
  211. package/modern/internals/hooks/useNullablePickerContext.js +10 -0
  212. package/modern/internals/hooks/useOpenState.js +3 -2
  213. package/modern/internals/hooks/usePicker/usePicker.js +0 -9
  214. package/modern/internals/hooks/usePicker/usePickerProvider.js +26 -4
  215. package/modern/internals/hooks/usePicker/usePickerValue.js +62 -185
  216. package/modern/internals/hooks/usePicker/usePickerViews.js +17 -11
  217. package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
  218. package/modern/internals/hooks/useUtils.js +1 -1
  219. package/modern/internals/index.js +6 -4
  220. package/modern/internals/models/index.js +2 -1
  221. package/modern/internals/models/manager.js +1 -0
  222. package/modern/internals/utils/date-utils.js +1 -1
  223. package/modern/internals/utils/valueManagers.js +4 -4
  224. package/modern/locales/index.js +1 -0
  225. package/modern/locales/nbNO.js +15 -19
  226. package/modern/locales/utils/getPickersLocalization.js +0 -13
  227. package/modern/locales/zhTW.js +73 -0
  228. package/modern/managers/index.js +3 -0
  229. package/modern/managers/useDateManager.js +55 -0
  230. package/modern/managers/useDateTimeManager.js +60 -0
  231. package/modern/managers/useTimeManager.js +51 -0
  232. package/modern/models/index.js +1 -0
  233. package/modern/models/manager.js +1 -0
  234. package/node/AdapterDateFns/AdapterDateFns.js +97 -97
  235. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +97 -96
  236. package/node/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +94 -101
  237. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  238. package/node/AdapterDateFnsV2/AdapterDateFnsV2.js +291 -0
  239. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  240. package/node/DateCalendar/DateCalendar.js +1 -1
  241. package/node/DateField/DateField.js +26 -31
  242. package/node/DateField/useDateField.js +13 -10
  243. package/node/DatePicker/DatePicker.js +1 -1
  244. package/node/DatePicker/DatePickerToolbar.js +7 -11
  245. package/node/DateTimeField/DateTimeField.js +26 -31
  246. package/node/DateTimeField/useDateTimeField.js +13 -10
  247. package/node/DateTimePicker/DateTimePicker.js +2 -2
  248. package/node/DateTimePicker/DateTimePickerTabs.js +2 -2
  249. package/node/DateTimePicker/DateTimePickerToolbar.js +36 -31
  250. package/node/DesktopDatePicker/DesktopDatePicker.js +9 -14
  251. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
  252. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
  253. package/node/DesktopTimePicker/DesktopTimePicker.js +4 -19
  254. package/node/MobileDatePicker/MobileDatePicker.js +2 -11
  255. package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
  256. package/node/MobileTimePicker/MobileTimePicker.js +2 -11
  257. package/node/PickersActionBar/PickersActionBar.js +8 -5
  258. package/node/PickersLayout/PickersLayout.js +1 -5
  259. package/node/PickersLayout/usePickerLayout.js +16 -35
  260. package/node/PickersShortcuts/PickersShortcuts.js +13 -10
  261. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
  262. package/node/PickersTextField/PickersTextField.js +1 -1
  263. package/node/TimeField/TimeField.js +25 -30
  264. package/node/TimeField/useTimeField.js +13 -10
  265. package/node/TimePicker/TimePicker.js +2 -2
  266. package/node/TimePicker/TimePickerToolbar.js +20 -18
  267. package/node/hooks/index.js +8 -1
  268. package/node/hooks/useIsValidValue.js +18 -0
  269. package/node/hooks/useParsedFormat.js +10 -12
  270. package/node/hooks/usePickerContext.js +5 -4
  271. package/node/hooks/useSplitFieldProps.js +7 -2
  272. package/node/index.js +13 -1
  273. package/node/internals/components/PickerFieldUI.js +318 -0
  274. package/node/internals/components/PickerProvider.js +16 -6
  275. package/node/internals/components/PickersToolbar.js +1 -1
  276. package/node/internals/hooks/date-helpers-hooks.js +4 -3
  277. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +23 -98
  278. package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  279. package/node/internals/hooks/useField/index.js +8 -1
  280. package/node/internals/hooks/useField/useField.js +11 -3
  281. package/node/internals/hooks/useField/useField.utils.js +2 -2
  282. package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +55 -0
  283. package/node/internals/hooks/useField/useFieldState.js +2 -2
  284. package/node/internals/hooks/useField/useFieldV6TextField.js +2 -2
  285. package/node/internals/hooks/useField/useFieldV7TextField.js +3 -3
  286. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
  287. package/node/internals/hooks/useNullablePickerContext.js +16 -0
  288. package/node/internals/hooks/useOpenState.js +4 -2
  289. package/node/internals/hooks/usePicker/usePicker.js +0 -10
  290. package/node/internals/hooks/usePicker/usePickerProvider.js +26 -4
  291. package/node/internals/hooks/usePicker/usePickerValue.js +62 -185
  292. package/node/internals/hooks/usePicker/usePickerViews.js +17 -12
  293. package/node/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
  294. package/node/internals/hooks/useUtils.js +1 -1
  295. package/node/internals/index.js +45 -19
  296. package/node/internals/models/index.js +11 -0
  297. package/node/internals/models/manager.js +5 -0
  298. package/node/internals/utils/date-utils.js +1 -1
  299. package/node/internals/utils/valueManagers.js +4 -4
  300. package/node/locales/index.js +11 -0
  301. package/node/locales/nbNO.js +15 -19
  302. package/node/locales/utils/getPickersLocalization.js +2 -16
  303. package/node/locales/zhTW.js +79 -0
  304. package/node/managers/index.js +26 -0
  305. package/node/managers/useDateManager.js +63 -0
  306. package/node/managers/useDateTimeManager.js +68 -0
  307. package/node/managers/useTimeManager.js +59 -0
  308. package/node/models/index.js +11 -0
  309. package/node/models/manager.js +5 -0
  310. package/package.json +3 -3
  311. package/themeAugmentation/props.d.ts +1 -1
  312. package/validation/extractValidationProps.d.ts +1 -1
  313. package/AdapterDateFnsJalaliV3/index.d.ts +0 -1
  314. package/AdapterDateFnsJalaliV3/index.js +0 -1
  315. package/AdapterDateFnsV3/index.d.ts +0 -1
  316. package/AdapterDateFnsV3/index.js +0 -1
  317. package/internals/hooks/defaultizedFieldProps.d.ts +0 -18
  318. package/internals/hooks/defaultizedFieldProps.js +0 -40
  319. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
  320. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
  321. package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
  322. package/modern/AdapterDateFnsV3/index.js +0 -1
  323. package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
  324. package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
  325. package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
  326. package/node/internals/hooks/defaultizedFieldProps.js +0 -50
  327. package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -52
@@ -1,19 +1,14 @@
1
1
  'use client';
2
2
 
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- const _excluded = ["slots", "slotProps", "InputProps", "inputProps"];
4
+ const _excluded = ["slots", "slotProps"];
6
5
  import * as React from 'react';
7
6
  import PropTypes from 'prop-types';
8
- import MuiTextField from '@mui/material/TextField';
9
7
  import { useThemeProps } from '@mui/material/styles';
10
- import useSlotProps from '@mui/utils/useSlotProps';
11
8
  import { refType } from '@mui/utils';
12
9
  import { useDateTimeField } from "./useDateTimeField.js";
13
- import { useClearableField } from "../hooks/index.js";
14
- import { PickersTextField } from "../PickersTextField/index.js";
15
- import { convertFieldResponseIntoMuiTextFieldProps } from "../internals/utils/convertFieldResponseIntoMuiTextFieldProps.js";
16
- import { useFieldOwnerState } from "../internals/hooks/useFieldOwnerState.js";
10
+ import { PickerFieldUI, useFieldTextFieldProps } from "../internals/components/PickerFieldUI.js";
11
+ import { CalendarIcon } from "../icons/index.js";
17
12
  import { jsx as _jsx } from "react/jsx-runtime";
18
13
  /**
19
14
  * Demos:
@@ -32,33 +27,21 @@ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inPro
32
27
  });
33
28
  const {
34
29
  slots,
35
- slotProps,
36
- InputProps,
37
- inputProps
30
+ slotProps
38
31
  } = themeProps,
39
32
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
40
- const ownerState = useFieldOwnerState(themeProps);
41
- const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure === false ? MuiTextField : PickersTextField);
42
- const textFieldProps = useSlotProps({
43
- elementType: TextField,
44
- externalSlotProps: slotProps?.textField,
45
- externalForwardedProps: other,
46
- ownerState,
47
- additionalProps: {
48
- ref: inRef
49
- }
33
+ const textFieldProps = useFieldTextFieldProps({
34
+ slotProps,
35
+ ref: inRef,
36
+ externalForwardedProps: other
50
37
  });
51
-
52
- // TODO: Remove when mui/material-ui#35088 will be merged
53
- textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
54
- textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
55
38
  const fieldResponse = useDateTimeField(textFieldProps);
56
- const convertedFieldResponse = convertFieldResponseIntoMuiTextFieldProps(fieldResponse);
57
- const processedFieldProps = useClearableField(_extends({}, convertedFieldResponse, {
58
- slots,
59
- slotProps
60
- }));
61
- return /*#__PURE__*/_jsx(TextField, _extends({}, processedFieldProps));
39
+ return /*#__PURE__*/_jsx(PickerFieldUI, {
40
+ slots: slots,
41
+ slotProps: slotProps,
42
+ fieldResponse: fieldResponse,
43
+ defaultOpenPickerIcon: CalendarIcon
44
+ });
62
45
  });
63
46
  process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
64
47
  // ----------------------------- Warning --------------------------------
@@ -81,6 +64,12 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
81
64
  * @default false
82
65
  */
83
66
  clearable: PropTypes.bool,
67
+ /**
68
+ * The position at which the clear button is placed.
69
+ * If the field is not clearable, the button is not rendered.
70
+ * @default 'end'
71
+ */
72
+ clearButtonPosition: PropTypes.oneOf(['end', 'start']),
84
73
  /**
85
74
  * The color of the component.
86
75
  * It supports both default and custom theme colors, which can be added as shown in the
@@ -252,6 +241,12 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
252
241
  * @param {FieldSelectedSections} newValue The new selected sections.
253
242
  */
254
243
  onSelectedSectionsChange: PropTypes.func,
244
+ /**
245
+ * The position at which the opening button is placed.
246
+ * If there is no picker to open, the button is not rendered
247
+ * @default 'end'
248
+ */
249
+ openPickerButtonPosition: PropTypes.oneOf(['end', 'start']),
255
250
  /**
256
251
  * If `true`, the component is read-only.
257
252
  * When read-only, the value cannot be changed but the user can interact with the interface.
@@ -1,14 +1,11 @@
1
- import * as React from 'react';
2
- import { MakeOptional, SlotComponentPropsFromProps } from '@mui/x-internals/types';
3
- import { TextFieldProps } from '@mui/material/TextField';
4
- import { DateTimeValidationError, BuiltInFieldTextFieldProps, FieldOwnerState } from '../models';
1
+ import { MakeOptional } from '@mui/x-internals/types';
2
+ import { DateTimeValidationError, BuiltInFieldTextFieldProps } from '../models';
5
3
  import { UseFieldInternalProps } from '../internals/hooks/useField';
6
- import { ExportedUseClearableFieldProps, UseClearableFieldSlots, UseClearableFieldSlotProps } from '../hooks/useClearableField';
7
4
  import { ExportedValidateDateTimeProps } from '../validation/validateDateTime';
8
5
  import { AmPmProps } from '../internals/models/props/time';
9
6
  import { PickerValue } from '../internals/models';
10
- import { PickersTextFieldProps } from '../PickersTextField';
11
- export interface UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, 'format'>, ExportedValidateDateTimeProps, ExportedUseClearableFieldProps, AmPmProps {
7
+ import { ExportedPickerFieldUIProps, PickerFieldUISlotProps, PickerFieldUISlots } from '../internals/components/PickerFieldUI';
8
+ export interface UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, 'format'>, ExportedValidateDateTimeProps, ExportedPickerFieldUIProps, AmPmProps {
12
9
  }
13
10
  export type DateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> = UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure> & Omit<BuiltInFieldTextFieldProps<TEnableAccessibleFieldDOMStructure>, keyof UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>> & {
14
11
  /**
@@ -22,13 +19,7 @@ export type DateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolea
22
19
  */
23
20
  slotProps?: DateTimeFieldSlotProps;
24
21
  };
25
- export interface DateTimeFieldSlots extends UseClearableFieldSlots {
26
- /**
27
- * Form control with an input to render the value.
28
- * @default <PickersTextField />, or <TextField /> from '@mui/material' if `enableAccessibleFieldDOMStructure` is `false`.
29
- */
30
- textField?: React.ElementType;
22
+ export interface DateTimeFieldSlots extends PickerFieldUISlots {
31
23
  }
32
- export interface DateTimeFieldSlotProps extends UseClearableFieldSlotProps {
33
- textField?: SlotComponentPropsFromProps<PickersTextFieldProps | TextFieldProps, {}, FieldOwnerState>;
24
+ export interface DateTimeFieldSlotProps extends PickerFieldUISlotProps {
34
25
  }
@@ -1,2 +1,2 @@
1
1
  import { UseDateTimeFieldProps } from './DateTimeField.types';
2
- export declare const useDateTimeField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>>(inProps: TAllProps) => import("../internals").UseFieldResponse<TEnableAccessibleFieldDOMStructure, Omit<TAllProps & Omit<UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>, keyof import("../internals/hooks/defaultizedFieldProps").UseDefaultizedDateTimeFieldBaseProps> & Required<Pick<UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>, keyof import("../internals/hooks/defaultizedFieldProps").UseDefaultizedDateTimeFieldBaseProps>>, "disabled" | "format" | "onChange" | "onError" | "defaultValue" | "value" | "readOnly" | "ampm" | "disableFuture" | "disablePast" | "maxDate" | "minDate" | "timezone" | "referenceDate" | "formatDensity" | "shouldRespectLeadingZeros" | "selectedSections" | "onSelectedSectionsChange" | "unstableFieldRef" | "enableAccessibleFieldDOMStructure" | "minutesStep" | "shouldDisableDate" | "shouldDisableMonth" | "shouldDisableYear" | "minTime" | "maxTime" | "shouldDisableTime" | "disableIgnoringDatePartForTimeValidation" | "minDateTime" | "maxDateTime" | "dateSeparator">>;
2
+ export declare const useDateTimeField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>>(props: TAllProps) => import("../internals").UseFieldResponse<TEnableAccessibleFieldDOMStructure, Omit<TAllProps, "disabled" | "readOnly" | "value" | "defaultValue" | "autoFocus" | "onChange" | "onError" | "format" | "ampm" | "disableFuture" | "disablePast" | "maxDate" | "minDate" | "timezone" | "shouldDisableYear" | "shouldDisableMonth" | "shouldDisableDate" | "minTime" | "maxTime" | "minutesStep" | "shouldDisableTime" | "disableIgnoringDatePartForTimeValidation" | "minDateTime" | "maxDateTime" | "referenceDate" | "formatDensity" | "shouldRespectLeadingZeros" | "selectedSections" | "onSelectedSectionsChange" | "unstableFieldRef" | "unstableStartFieldRef" | "unstableEndFieldRef" | "enableAccessibleFieldDOMStructure" | "dateSeparator">>;
@@ -1,22 +1,25 @@
1
1
  'use client';
2
2
 
3
- import { singleItemFieldValueManager, singleItemValueManager } from "../internals/utils/valueManagers.js";
4
- import { useField } from "../internals/hooks/useField/index.js";
5
- import { validateDateTime } from "../validation/index.js";
3
+ import { useField, useFieldInternalPropsWithDefaults } from "../internals/hooks/useField/index.js";
6
4
  import { useSplitFieldProps } from "../hooks/index.js";
7
- import { useDefaultizedDateTimeField } from "../internals/hooks/defaultizedFieldProps.js";
8
- export const useDateTimeField = inProps => {
9
- const props = useDefaultizedDateTimeField(inProps);
5
+ import { useDateTimeManager } from "../managers/index.js";
6
+ export const useDateTimeField = props => {
7
+ const manager = useDateTimeManager(props);
10
8
  const {
11
9
  forwardedProps,
12
10
  internalProps
13
11
  } = useSplitFieldProps(props, 'date-time');
12
+ const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
13
+ manager,
14
+ internalProps
15
+ });
14
16
  return useField({
15
17
  forwardedProps,
16
- internalProps,
17
- valueManager: singleItemValueManager,
18
- fieldValueManager: singleItemFieldValueManager,
19
- validator: validateDateTime,
20
- valueType: 'date-time'
18
+ internalProps: internalPropsWithDefaults,
19
+ valueManager: manager.internal_valueManager,
20
+ fieldValueManager: manager.internal_fieldValueManager,
21
+ validator: manager.validator,
22
+ valueType: manager.valueType,
23
+ getOpenPickerButtonAriaLabel: manager.internal_getOpenPickerButtonAriaLabel
21
24
  });
22
25
  };
@@ -69,8 +69,8 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
69
69
  autoFocus: PropTypes.bool,
70
70
  className: PropTypes.string,
71
71
  /**
72
- * If `true`, the popover or modal will close after submitting the full date.
73
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
72
+ * If `true`, the Picker will close after submitting the full date.
73
+ * @default false
74
74
  */
75
75
  closeOnSelect: PropTypes.bool,
76
76
  /**
@@ -78,11 +78,11 @@ const DateTimePickerTabs = function DateTimePickerTabs(inProps) {
78
78
  } = usePickerPrivateContext();
79
79
  const {
80
80
  view,
81
- onViewChange
81
+ setView
82
82
  } = usePickerContext();
83
83
  const classes = useUtilityClasses(classesProp);
84
84
  const handleChange = (event, value) => {
85
- onViewChange(tabToView(value));
85
+ setView(tabToView(value));
86
86
  };
87
87
  if (hidden) {
88
88
  return null;
@@ -2,13 +2,15 @@ import * as React from 'react';
2
2
  import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar';
3
3
  import { DateTimePickerToolbarClasses } from './dateTimePickerToolbarClasses';
4
4
  import { DateOrTimeViewWithMeridiem, PickerValue } from '../internals/models';
5
+ import { DateTimeValidationError } from '../models';
6
+ import { SetValueActionOptions } from '../internals/hooks/usePicker/usePickerValue.types';
5
7
  export interface ExportedDateTimePickerToolbarProps extends ExportedBaseToolbarProps {
6
8
  /**
7
9
  * Override or extend the styles applied to the component.
8
10
  */
9
11
  classes?: Partial<DateTimePickerToolbarClasses>;
10
12
  }
11
- export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolbarProps, BaseToolbarProps<PickerValue> {
13
+ export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolbarProps, BaseToolbarProps {
12
14
  /**
13
15
  * If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.
14
16
  */
@@ -22,8 +24,10 @@ export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolba
22
24
  * This is used by the Date Time Range Picker Toolbar.
23
25
  */
24
26
  export declare const DateTimePickerToolbarOverrideContext: React.Context<{
27
+ value: PickerValue;
28
+ setValue: (value: PickerValue, options?: SetValueActionOptions<DateTimeValidationError>) => void;
25
29
  forceDesktopVariant: boolean;
26
- onViewChange: (view: DateOrTimeViewWithMeridiem) => void;
30
+ setView: (view: DateOrTimeViewWithMeridiem) => void;
27
31
  view: DateOrTimeViewWithMeridiem | null;
28
32
  } | null>;
29
33
  /**
@@ -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", "isLandscape", "toolbarFormat", "toolbarPlaceholder", "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';
@@ -230,9 +230,6 @@ function DateTimePickerToolbar(inProps) {
230
230
  const {
231
231
  ampm,
232
232
  ampmInClock,
233
- value,
234
- onChange,
235
- isLandscape,
236
233
  toolbarFormat,
237
234
  toolbarPlaceholder = '––',
238
235
  toolbarTitle: inToolbarTitle,
@@ -241,31 +238,37 @@ function DateTimePickerToolbar(inProps) {
241
238
  } = props,
242
239
  other = _objectWithoutPropertiesLoose(props, _excluded);
243
240
  const {
241
+ value: valueContext,
242
+ setValue: setValueContext,
244
243
  disabled,
245
244
  readOnly,
246
245
  variant,
247
- view: viewCtx,
248
- onViewChange: onViewChangeCtx,
246
+ orientation,
247
+ view: viewContext,
248
+ setView: setViewContext,
249
249
  views
250
250
  } = usePickerContext();
251
+ const translations = usePickerTranslations();
251
252
  const ownerState = useToolbarOwnerState();
252
253
  const classes = useUtilityClasses(classesProp, ownerState);
253
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;
254
260
  const {
255
261
  meridiemMode,
256
262
  handleMeridiemChange
257
- } = useMeridiemMode(value, ampm, onChange);
258
- const translations = usePickerTranslations();
259
- const overrides = React.useContext(DateTimePickerToolbarOverrideContext);
263
+ } = useMeridiemMode(value, ampm, newValue => setValue(newValue, {
264
+ changeImportance: 'set'
265
+ }));
260
266
  const toolbarVariant = overrides?.forceDesktopVariant ? 'desktop' : variant;
261
267
  const isDesktop = toolbarVariant === 'desktop';
262
268
  const showAmPmControl = Boolean(ampm && !ampmInClock);
263
269
  const toolbarTitle = inToolbarTitle ?? translations.dateTimePickerToolbarTitle;
264
- const view = overrides ? overrides.view : viewCtx;
265
- const onViewChange = overrides ? overrides.onViewChange : onViewChangeCtx;
266
- const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');
267
270
  const dateText = React.useMemo(() => {
268
- if (!value) {
271
+ if (!utils.isValid(value)) {
269
272
  return toolbarPlaceholder;
270
273
  }
271
274
  if (toolbarFormat) {
@@ -273,8 +276,13 @@ function DateTimePickerToolbar(inProps) {
273
276
  }
274
277
  return utils.format(value, 'shortDate');
275
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
+ };
276
285
  return /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({
277
- isLandscape: isLandscape,
278
286
  className: clsx(classes.root, className),
279
287
  toolbarTitle: toolbarTitle,
280
288
  toolbarVariant: toolbarVariant
@@ -286,13 +294,13 @@ function DateTimePickerToolbar(inProps) {
286
294
  children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {
287
295
  tabIndex: -1,
288
296
  variant: "subtitle1",
289
- onClick: () => onViewChange('year'),
297
+ onClick: () => setView('year'),
290
298
  selected: view === 'year',
291
- value: value ? utils.format(value, 'year') : '–'
299
+ value: formatSection('year', '–')
292
300
  }), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {
293
301
  tabIndex: -1,
294
302
  variant: isDesktop ? 'h5' : 'h4',
295
- onClick: () => onViewChange('day'),
303
+ onClick: () => setView('day'),
296
304
  selected: view === 'day',
297
305
  value: dateText
298
306
  })]
@@ -307,10 +315,10 @@ function DateTimePickerToolbar(inProps) {
307
315
  children: [views.includes('hours') && /*#__PURE__*/_jsxs(React.Fragment, {
308
316
  children: [/*#__PURE__*/_jsx(PickersToolbarButton, {
309
317
  variant: isDesktop ? 'h5' : 'h3',
310
- width: isDesktop && !isLandscape ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
311
- onClick: () => onViewChange('hours'),
318
+ width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
319
+ onClick: () => setView('hours'),
312
320
  selected: view === 'hours',
313
- value: value ? formatHours(value) : '--'
321
+ value: formatSection(ampm ? 'hours12h' : 'hours24h', '--')
314
322
  }), /*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {
315
323
  variant: isDesktop ? 'h5' : 'h3',
316
324
  value: ":",
@@ -319,10 +327,10 @@ function DateTimePickerToolbar(inProps) {
319
327
  toolbarVariant: toolbarVariant
320
328
  }), /*#__PURE__*/_jsx(PickersToolbarButton, {
321
329
  variant: isDesktop ? 'h5' : 'h3',
322
- width: isDesktop && !isLandscape ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
323
- onClick: () => onViewChange('minutes'),
330
+ width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
331
+ onClick: () => setView('minutes'),
324
332
  selected: view === 'minutes' || !views.includes('minutes') && view === 'hours',
325
- value: value ? utils.format(value, 'minutes') : '--',
333
+ value: formatSection('minutes', '--'),
326
334
  disabled: !views.includes('minutes')
327
335
  })]
328
336
  }), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {
@@ -334,10 +342,10 @@ function DateTimePickerToolbar(inProps) {
334
342
  toolbarVariant: toolbarVariant
335
343
  }), /*#__PURE__*/_jsx(PickersToolbarButton, {
336
344
  variant: isDesktop ? 'h5' : 'h3',
337
- width: isDesktop && !isLandscape ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
338
- onClick: () => onViewChange('seconds'),
345
+ width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
346
+ onClick: () => setView('seconds'),
339
347
  selected: view === 'seconds',
340
- value: value ? utils.format(value, 'seconds') : '--'
348
+ value: formatSection('seconds', '--')
341
349
  })]
342
350
  })]
343
351
  }), showAmPmControl && !isDesktop && /*#__PURE__*/_jsxs(DateTimePickerToolbarAmPmSelection, {
@@ -360,7 +368,7 @@ function DateTimePickerToolbar(inProps) {
360
368
  })]
361
369
  }), ampm && isDesktop && /*#__PURE__*/_jsx(PickersToolbarButton, {
362
370
  variant: "h5",
363
- onClick: () => onViewChange('meridiem'),
371
+ onClick: () => setView('meridiem'),
364
372
  selected: view === 'meridiem',
365
373
  value: value && meridiemMode ? formatMeridiem(utils, meridiemMode) : '--',
366
374
  width: MULTI_SECTION_CLOCK_SECTION_WIDTH
@@ -385,8 +393,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
385
393
  * @default `true` for Desktop, `false` for Mobile.
386
394
  */
387
395
  hidden: PropTypes.bool,
388
- isLandscape: PropTypes.bool.isRequired,
389
- onChange: PropTypes.func.isRequired,
390
396
  /**
391
397
  * The system prop that allows defining system overrides as well as additional CSS styles.
392
398
  */
@@ -404,7 +410,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
404
410
  /**
405
411
  * If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.
406
412
  */
407
- toolbarTitle: PropTypes.node,
408
- value: PropTypes.object
413
+ toolbarTitle: PropTypes.node
409
414
  } : void 0;
410
415
  export { DateTimePickerToolbar };
@@ -35,7 +35,7 @@ export interface BaseDateTimePickerSlotProps extends DateCalendarSlotProps, Time
35
35
  */
36
36
  toolbar?: ExportedDateTimePickerToolbarProps;
37
37
  }
38
- export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem, TAdditionalProps extends {} = {}> = PickerViewRendererLookup<PickerValue, TView, Omit<DateViewRendererProps<TView>, 'slots' | 'slotProps'> & Omit<TimeViewRendererProps<TimeViewWithMeridiem, BaseClockProps<TimeViewWithMeridiem>>, 'slots' | 'slotProps'>, TAdditionalProps>;
38
+ export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem> = PickerViewRendererLookup<PickerValue, TView, Omit<DateViewRendererProps<TView>, 'slots' | 'slotProps'> & Omit<TimeViewRendererProps<TimeViewWithMeridiem, BaseClockProps<TimeViewWithMeridiem>>, 'slots' | 'slotProps'>>;
39
39
  export interface BaseDateTimePickerProps<TView extends DateOrTimeViewWithMeridiem> extends BasePickerInputProps<PickerValue, TView, DateTimeValidationError>, Omit<ExportedDateCalendarProps, 'onViewChange'>, ExportedBaseClockProps, ExportedValidateDateTimeProps {
40
40
  /**
41
41
  * Display ampm controls under the clock (instead of in the toolbar).
@@ -7,15 +7,14 @@ import resolveComponentProps from '@mui/utils/resolveComponentProps';
7
7
  import { refType } from '@mui/utils';
8
8
  import { singleItemValueManager } from "../internals/utils/valueManagers.js";
9
9
  import { useDatePickerDefaultizedProps } from "../DatePicker/shared.js";
10
- import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
11
10
  import { useUtils } from "../internals/hooks/useUtils.js";
12
11
  import { validateDate, extractValidationProps } from "../validation/index.js";
13
12
  import { useDesktopPicker } from "../internals/hooks/useDesktopPicker/index.js";
14
- import { CalendarIcon } from "../icons/index.js";
15
13
  import { DateField } from "../DateField/index.js";
16
14
  import { renderDateViewCalendar } from "../dateViewRenderers/index.js";
17
15
  import { resolveDateFormat } from "../internals/utils/date-utils.js";
18
- import { buildGetOpenDialogAriaText } from "../locales/utils/getPickersLocalization.js";
16
+ const emptyActions = [];
17
+
19
18
  /**
20
19
  * Demos:
21
20
  *
@@ -27,7 +26,6 @@ import { buildGetOpenDialogAriaText } from "../locales/utils/getPickersLocalizat
27
26
  * - [DesktopDatePicker API](https://mui.com/x/api/date-pickers/desktop-date-picker/)
28
27
  */
29
28
  const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker(inProps, ref) {
30
- const translations = usePickerTranslations();
31
29
  const utils = useUtils();
32
30
 
33
31
  // Props with the default values common to all date pickers
@@ -40,11 +38,11 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
40
38
 
41
39
  // Props with the default values specific to the desktop variant
42
40
  const props = _extends({}, defaultizedProps, {
41
+ closeOnSelect: defaultizedProps.closeOnSelect ?? true,
43
42
  viewRenderers,
44
43
  format: resolveDateFormat(utils, defaultizedProps, false),
45
44
  yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
46
45
  slots: _extends({
47
- openPickerIcon: CalendarIcon,
48
46
  field: DateField
49
47
  }, defaultizedProps.slots),
50
48
  slotProps: _extends({}, defaultizedProps.slotProps, {
@@ -53,7 +51,10 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
53
51
  }),
54
52
  toolbar: _extends({
55
53
  hidden: true
56
- }, defaultizedProps.slotProps?.toolbar)
54
+ }, defaultizedProps.slotProps?.toolbar),
55
+ actionBar: ownerState => _extends({
56
+ actions: emptyActions
57
+ }, resolveComponentProps(defaultizedProps.slotProps?.actionBar, ownerState))
57
58
  })
58
59
  });
59
60
  const {
@@ -62,12 +63,6 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
62
63
  props,
63
64
  valueManager: singleItemValueManager,
64
65
  valueType: 'date',
65
- getOpenDialogAriaText: buildGetOpenDialogAriaText({
66
- utils,
67
- formatKey: 'fullDate',
68
- contextTranslation: translations.openDatePickerDialogue,
69
- propsTranslation: props.localeText?.openDatePickerDialogue
70
- }),
71
66
  validator: validateDate
72
67
  });
73
68
  return renderPicker();
@@ -86,8 +81,8 @@ DesktopDatePicker.propTypes = {
86
81
  autoFocus: PropTypes.bool,
87
82
  className: PropTypes.string,
88
83
  /**
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).
84
+ * If `true`, the Picker will close after submitting the full date.
85
+ * @default true
91
86
  */
92
87
  closeOnSelect: PropTypes.bool,
93
88
  /**
@@ -22,4 +22,9 @@ export interface DesktopDatePickerProps<TEnableAccessibleFieldDOMStructure exten
22
22
  * @default 4
23
23
  */
24
24
  yearsPerRow?: 3 | 4;
25
+ /**
26
+ * If `true`, the Picker will close after submitting the full date.
27
+ * @default true
28
+ */
29
+ closeOnSelect?: boolean;
25
30
  }
@@ -12,10 +12,8 @@ import { singleItemValueManager } from "../internals/utils/valueManagers.js";
12
12
  import { DateTimeField } from "../DateTimeField/index.js";
13
13
  import { useDateTimePickerDefaultizedProps } from "../DateTimePicker/shared.js";
14
14
  import { renderDateViewCalendar } from "../dateViewRenderers/dateViewRenderers.js";
15
- import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
16
15
  import { useUtils } from "../internals/hooks/useUtils.js";
17
16
  import { validateDateTime, extractValidationProps } from "../validation/index.js";
18
- import { CalendarIcon } from "../icons/index.js";
19
17
  import { useDesktopPicker } from "../internals/hooks/useDesktopPicker/index.js";
20
18
  import { resolveDateTimeFormat, resolveTimeViewsResponse } from "../internals/utils/date-time-utils.js";
21
19
  import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from "../timeViewRenderers/index.js";
@@ -25,9 +23,13 @@ import { DesktopDateTimePickerLayout } from "./DesktopDateTimePickerLayout.js";
25
23
  import { VIEW_HEIGHT } from "../internals/constants/dimensions.js";
26
24
  import { isInternalTimeView } from "../internals/utils/time-utils.js";
27
25
  import { isDatePickerView } from "../internals/utils/date-utils.js";
28
- import { buildGetOpenDialogAriaText } from "../locales/utils/getPickersLocalization.js";
29
26
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
30
- const rendererInterceptor = function rendererInterceptor(inViewRenderers, popperView, rendererProps) {
27
+ const rendererInterceptor = function RendererInterceptor(props) {
28
+ const {
29
+ viewRenderers,
30
+ popperView,
31
+ rendererProps
32
+ } = props;
31
33
  const {
32
34
  openTo,
33
35
  focusedView,
@@ -46,8 +48,10 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
46
48
  }]
47
49
  });
48
50
  const isTimeViewActive = isInternalTimeView(popperView);
51
+ const dateView = isTimeViewActive ? 'day' : popperView;
52
+ const timeView = isTimeViewActive ? popperView : 'hours';
49
53
  return /*#__PURE__*/_jsxs(React.Fragment, {
50
- children: [inViewRenderers[!isTimeViewActive ? popperView : 'day']?.(_extends({}, rendererProps, {
54
+ children: [viewRenderers[dateView]?.(_extends({}, rendererProps, {
51
55
  view: !isTimeViewActive ? popperView : 'day',
52
56
  focusedView: focusedView && isDatePickerView(focusedView) ? focusedView : null,
53
57
  views: rendererProps.views.filter(isDatePickerView),
@@ -60,7 +64,7 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
60
64
  sx: {
61
65
  gridColumn: 2
62
66
  }
63
- }), inViewRenderers[isTimeViewActive ? popperView : 'hours']?.(_extends({}, finalProps, {
67
+ }), viewRenderers[timeView]?.(_extends({}, finalProps, {
64
68
  view: isTimeViewActive ? popperView : 'hours',
65
69
  focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
66
70
  openTo: isInternalTimeView(openTo) ? openTo : 'hours',
@@ -83,7 +87,6 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
83
87
  * - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)
84
88
  */
85
89
  const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {
86
- const translations = usePickerTranslations();
87
90
  const utils = useUtils();
88
91
 
89
92
  // Props with the default values common to all date time pickers
@@ -108,7 +111,6 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
108
111
  // Need to avoid adding the `meridiem` view when unexpected renderer is specified
109
112
  const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
110
113
  const views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(view => view !== 'meridiem') : resolvedViews;
111
- const actionBarActions = shouldRenderTimeInASingleColumn ? [] : ['accept'];
112
114
 
113
115
  // Props with the default values specific to the desktop variant
114
116
  const props = _extends({}, defaultizedProps, {
@@ -122,8 +124,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
122
124
  shouldRenderTimeInASingleColumn,
123
125
  slots: _extends({
124
126
  field: DateTimeField,
125
- layout: DesktopDateTimePickerLayout,
126
- openPickerIcon: CalendarIcon
127
+ layout: DesktopDateTimePickerLayout
127
128
  }, defaultizedProps.slots),
128
129
  slotProps: _extends({}, defaultizedProps.slotProps, {
129
130
  field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
@@ -135,10 +136,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
135
136
  }, defaultizedProps.slotProps?.toolbar),
136
137
  tabs: _extends({
137
138
  hidden: true
138
- }, defaultizedProps.slotProps?.tabs),
139
- actionBar: ownerState => _extends({
140
- actions: actionBarActions
141
- }, resolveComponentProps(defaultizedProps.slotProps?.actionBar, ownerState))
139
+ }, defaultizedProps.slotProps?.tabs)
142
140
  })
143
141
  });
144
142
  const {
@@ -147,12 +145,6 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
147
145
  props,
148
146
  valueManager: singleItemValueManager,
149
147
  valueType: 'date-time',
150
- getOpenDialogAriaText: buildGetOpenDialogAriaText({
151
- utils,
152
- formatKey: 'fullDate',
153
- contextTranslation: translations.openDatePickerDialogue,
154
- propsTranslation: props.localeText?.openDatePickerDialogue
155
- }),
156
148
  validator: validateDateTime,
157
149
  rendererInterceptor
158
150
  });
@@ -182,8 +174,8 @@ DesktopDateTimePicker.propTypes = {
182
174
  autoFocus: PropTypes.bool,
183
175
  className: PropTypes.string,
184
176
  /**
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).
177
+ * If `true`, the Picker will close after submitting the full date.
178
+ * @default false
187
179
  */
188
180
  closeOnSelect: PropTypes.bool,
189
181
  /**
@@ -65,9 +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
- onChange: PropTypes.func.isRequired,
70
- onSelectShortcut: PropTypes.func.isRequired,
71
68
  /**
72
69
  * The props used for each component slot.
73
70
  * @default {}
@@ -81,7 +78,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes =
81
78
  /**
82
79
  * The system prop that allows defining system overrides as well as additional CSS styles.
83
80
  */
84
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
85
- value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object])
81
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
86
82
  } : void 0;
87
83
  export { DesktopDateTimePickerLayout };