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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
  2. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  3. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
  4. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
  5. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  6. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
  7. package/CHANGELOG.md +1903 -231
  8. package/DateRangeCalendar/DateRangeCalendar.js +15 -13
  9. package/DateRangePicker/DateRangePicker.js +1 -4
  10. package/DateRangePicker/DateRangePicker.types.d.ts +6 -2
  11. package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
  12. package/DateRangePicker/DateRangePickerToolbar.js +33 -41
  13. package/DateRangePicker/shared.d.ts +4 -3
  14. package/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  15. package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +1 -2
  16. package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +4 -5
  17. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
  18. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
  19. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  20. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -5
  21. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +81 -109
  22. package/DateTimeRangePicker/shared.d.ts +6 -5
  23. package/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  24. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +7 -2
  25. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  26. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
  27. package/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  28. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
  29. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  30. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
  31. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +9 -4
  32. package/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
  33. package/MultiInputDateRangeField/index.d.ts +5 -3
  34. package/MultiInputDateRangeField/index.js +2 -2
  35. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.d.ts +6 -0
  36. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  37. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +9 -4
  38. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
  39. package/MultiInputDateTimeRangeField/index.d.ts +5 -3
  40. package/MultiInputDateTimeRangeField/index.js +2 -2
  41. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.d.ts +6 -0
  42. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  43. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +9 -4
  44. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
  45. package/MultiInputTimeRangeField/index.d.ts +5 -3
  46. package/MultiInputTimeRangeField/index.js +2 -2
  47. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.d.ts +6 -0
  48. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  49. package/README.md +8 -5
  50. package/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
  51. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -16
  52. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  53. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
  54. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
  55. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -17
  56. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  57. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
  58. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
  59. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -17
  60. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  61. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
  62. package/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  63. package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
  64. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
  65. package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  66. package/hooks/index.d.ts +2 -0
  67. package/hooks/index.js +2 -0
  68. package/hooks/package.json +6 -0
  69. package/hooks/useMultiInputRangeField/index.d.ts +1 -0
  70. package/hooks/useMultiInputRangeField/index.js +1 -0
  71. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +53 -0
  72. package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  73. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +17 -0
  74. package/{modern/internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  75. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +17 -0
  76. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  77. package/hooks/usePickerRangePositionContext.d.ts +7 -0
  78. package/hooks/usePickerRangePositionContext.js +15 -0
  79. package/index.d.ts +2 -0
  80. package/index.js +4 -2
  81. package/internals/hooks/models/index.d.ts +1 -1
  82. package/internals/hooks/models/useRangePicker.d.ts +8 -11
  83. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  84. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +8 -10
  85. package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +25 -16
  86. package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
  87. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  88. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
  89. package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
  90. package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  91. package/internals/hooks/useRangePosition.d.ts +4 -3
  92. package/internals/hooks/useRangePosition.js +1 -1
  93. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
  94. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
  95. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -12
  96. package/internals/models/dateTimeRange.d.ts +1 -6
  97. package/internals/models/fields.d.ts +7 -11
  98. package/internals/models/index.d.ts +0 -1
  99. package/internals/models/index.js +0 -1
  100. package/internals/models/managers.d.ts +3 -0
  101. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.d.ts +3 -0
  102. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
  103. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +72 -0
  104. package/internals/utils/createMultiInputRangeField/index.d.ts +3 -0
  105. package/internals/utils/createMultiInputRangeField/index.js +2 -0
  106. package/internals/utils/date-fields-utils.d.ts +6 -6
  107. package/internals/utils/date-range-manager.js +2 -1
  108. package/internals/utils/releaseInfo.js +1 -1
  109. package/internals/utils/valueManagers.d.ts +4 -3
  110. package/internals/utils/valueManagers.js +7 -7
  111. package/managers/index.d.ts +6 -0
  112. package/managers/index.js +3 -0
  113. package/managers/package.json +6 -0
  114. package/managers/useDateRangeManager.d.ts +15 -0
  115. package/managers/useDateRangeManager.js +33 -0
  116. package/managers/useDateTimeRangeManager.d.ts +15 -0
  117. package/managers/useDateTimeRangeManager.js +33 -0
  118. package/managers/useTimeRangeManager.d.ts +15 -0
  119. package/managers/useTimeRangeManager.js +31 -0
  120. package/models/fields.d.ts +7 -11
  121. package/models/index.d.ts +1 -2
  122. package/models/index.js +1 -2
  123. package/models/range.d.ts +0 -2
  124. package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  125. package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  126. package/modern/DateRangeCalendar/DateRangeCalendar.js +15 -13
  127. package/modern/DateRangePicker/DateRangePicker.js +1 -4
  128. package/modern/DateRangePicker/DateRangePickerToolbar.js +33 -41
  129. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  130. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
  131. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  132. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +81 -109
  133. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  134. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  135. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  136. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  137. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
  138. package/modern/MultiInputDateRangeField/index.js +2 -2
  139. package/modern/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  140. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
  141. package/modern/MultiInputDateTimeRangeField/index.js +2 -2
  142. package/modern/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  143. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
  144. package/modern/MultiInputTimeRangeField/index.js +2 -2
  145. package/modern/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  146. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
  147. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
  148. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
  149. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
  150. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
  151. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
  152. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  153. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  154. package/modern/hooks/index.js +2 -0
  155. package/modern/hooks/useMultiInputRangeField/index.js +1 -0
  156. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  157. package/{internals/hooks/useMultiInputFieldSelectedSections.js → modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  158. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  159. package/modern/hooks/usePickerRangePositionContext.js +15 -0
  160. package/modern/index.js +4 -2
  161. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  162. package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
  163. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  164. package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  165. package/modern/internals/hooks/useRangePosition.js +1 -1
  166. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
  167. package/modern/internals/models/index.js +0 -1
  168. package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
  169. package/modern/internals/utils/createMultiInputRangeField/index.js +2 -0
  170. package/modern/internals/utils/date-range-manager.js +2 -1
  171. package/modern/internals/utils/releaseInfo.js +1 -1
  172. package/modern/internals/utils/valueManagers.js +7 -7
  173. package/modern/managers/index.js +3 -0
  174. package/modern/managers/useDateRangeManager.js +33 -0
  175. package/modern/managers/useDateTimeRangeManager.js +33 -0
  176. package/modern/managers/useTimeRangeManager.js +31 -0
  177. package/modern/models/index.js +1 -2
  178. package/modern/validation/validateDateRange.js +8 -0
  179. package/modern/validation/validateDateTimeRange.js +4 -0
  180. package/modern/validation/validateTimeRange.js +8 -0
  181. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  182. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  183. package/node/DateRangeCalendar/DateRangeCalendar.js +14 -12
  184. package/node/DateRangePicker/DateRangePicker.js +1 -4
  185. package/node/DateRangePicker/DateRangePickerToolbar.js +31 -39
  186. package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  187. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +33 -31
  188. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  189. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +80 -108
  190. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  191. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  192. package/node/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  193. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  194. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +14 -124
  195. package/node/MultiInputDateRangeField/index.js +3 -9
  196. package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
  197. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -124
  198. package/node/MultiInputDateTimeRangeField/index.js +3 -9
  199. package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
  200. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +15 -125
  201. package/node/MultiInputTimeRangeField/index.js +3 -9
  202. package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
  203. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +22 -32
  204. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  205. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +22 -32
  206. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  207. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +22 -32
  208. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  209. package/node/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  210. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  211. package/node/hooks/index.js +19 -0
  212. package/node/hooks/useMultiInputRangeField/index.js +12 -0
  213. package/node/hooks/useMultiInputRangeField/useMultiInputRangeField.js +155 -0
  214. package/node/{internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +11 -10
  215. package/node/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +66 -0
  216. package/node/hooks/usePickerRangePositionContext.js +22 -0
  217. package/node/index.js +23 -1
  218. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  219. package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +52 -65
  220. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  221. package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
  222. package/node/internals/hooks/useRangePosition.js +1 -1
  223. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +16 -29
  224. package/node/internals/models/index.js +0 -11
  225. package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +143 -0
  226. package/node/internals/utils/createMultiInputRangeField/index.js +19 -0
  227. package/node/internals/utils/date-range-manager.js +2 -1
  228. package/node/internals/utils/releaseInfo.js +1 -1
  229. package/node/internals/utils/valueManagers.js +7 -7
  230. package/node/managers/index.js +26 -0
  231. package/node/managers/useDateRangeManager.js +40 -0
  232. package/node/managers/useDateTimeRangeManager.js +40 -0
  233. package/node/managers/useTimeRangeManager.js +38 -0
  234. package/node/models/index.js +0 -22
  235. package/node/validation/validateDateRange.js +8 -0
  236. package/node/validation/validateDateTimeRange.js +4 -0
  237. package/node/validation/validateTimeRange.js +8 -0
  238. package/package.json +6 -6
  239. package/themeAugmentation/overrides.d.ts +6 -4
  240. package/themeAugmentation/props.d.ts +2 -2
  241. package/validation/validateDateRange.d.ts +9 -1
  242. package/validation/validateDateRange.js +8 -0
  243. package/validation/validateDateTimeRange.d.ts +6 -2
  244. package/validation/validateDateTimeRange.js +4 -0
  245. package/validation/validateTimeRange.d.ts +9 -1
  246. package/validation/validateTimeRange.js +8 -0
  247. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -53
  248. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -54
  249. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -54
  250. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +0 -21
  251. package/internals/hooks/useMultiInputRangeField/shared.d.ts +0 -1
  252. package/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  253. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +0 -3
  254. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
  255. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +0 -3
  256. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
  257. package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +0 -11
  258. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +0 -3
  259. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
  260. package/internals/models/timeRange.d.ts +0 -6
  261. package/internals/models/timeRange.js +0 -1
  262. package/models/dateRange.d.ts +0 -7
  263. package/models/dateRange.js +0 -1
  264. package/models/multiInputRangeFieldClasses.d.ts +0 -7
  265. package/models/multiInputRangeFieldClasses.js +0 -1
  266. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
  267. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
  268. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
  269. package/modern/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  270. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
  271. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
  272. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
  273. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
  274. package/modern/internals/models/timeRange.js +0 -1
  275. package/modern/models/dateRange.js +0 -1
  276. package/modern/models/multiInputRangeFieldClasses.js +0 -1
  277. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -5
  278. package/node/internals/hooks/useMultiInputRangeField/shared.js +0 -16
  279. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -121
  280. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -121
  281. package/node/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -5
  282. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -121
  283. package/node/internals/models/timeRange.js +0 -5
  284. package/node/models/dateRange.js +0 -5
  285. package/node/models/multiInputRangeFieldClasses.js +0 -5
  286. /package/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  287. /package/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  288. /package/{MultiInputTimeRangeField/MultiInputTimeRangeField.types.js → modern/internals/models/managers.js} +0 -0
  289. /package/{internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js → modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  290. /package/node/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  291. /package/node/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
@@ -2,21 +2,19 @@
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 = ["value", "rangePosition", "onRangePositionChange", "toolbarFormat", "className", "onViewChange", "view", "views"];
5
+ const _excluded = ["toolbarFormat", "className", "classes"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clsx from 'clsx';
9
9
  import Typography from '@mui/material/Typography';
10
10
  import { styled, useThemeProps } from '@mui/material/styles';
11
11
  import composeClasses from '@mui/utils/composeClasses';
12
- import { PickersToolbar, PickersToolbarButton, useUtils } from '@mui/x-date-pickers/internals';
13
- import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
12
+ import { PickersToolbar, PickersToolbarButton, useUtils, useToolbarOwnerState } from '@mui/x-date-pickers/internals';
13
+ import { usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
14
14
  import { getDateRangePickerToolbarUtilityClass } from "./dateRangePickerToolbarClasses.js";
15
+ import { usePickerRangePositionContext } from "../hooks/index.js";
15
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
- const useUtilityClasses = ownerState => {
17
- const {
18
- classes
19
- } = ownerState;
17
+ const useUtilityClasses = classes => {
20
18
  const slots = {
21
19
  root: ['root'],
22
20
  container: ['container']
@@ -52,39 +50,50 @@ const DateRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateRangeP
52
50
  name: 'MuiDateRangePickerToolbar'
53
51
  });
54
52
  const {
55
- value: [start, end],
56
- rangePosition,
57
- onRangePositionChange,
58
- toolbarFormat,
59
- className
53
+ toolbarFormat: toolbarFormatProp,
54
+ className,
55
+ classes: classesProp
60
56
  } = props,
61
57
  other = _objectWithoutPropertiesLoose(props, _excluded);
58
+ const {
59
+ value
60
+ } = usePickerContext();
62
61
  const translations = usePickerTranslations();
63
- const startDateValue = start ? utils.formatByString(start, toolbarFormat || utils.formats.shortDate) : translations.start;
64
- const endDateValue = end ? utils.formatByString(end, toolbarFormat || utils.formats.shortDate) : translations.end;
65
- const ownerState = props;
66
- const classes = useUtilityClasses(ownerState);
62
+ const ownerState = useToolbarOwnerState();
63
+ const {
64
+ rangePosition,
65
+ setRangePosition
66
+ } = usePickerRangePositionContext();
67
+ const classes = useUtilityClasses(classesProp);
68
+
69
+ // This can't be a default value when spreading because it breaks the API generation.
70
+ const toolbarFormat = toolbarFormatProp ?? utils.formats.shortDate;
71
+ const formatDate = (date, fallback) => {
72
+ if (!utils.isValid(date)) {
73
+ return fallback;
74
+ }
75
+ return utils.formatByString(date, toolbarFormat);
76
+ };
67
77
  return /*#__PURE__*/_jsx(DateRangePickerToolbarRoot, _extends({}, other, {
68
78
  toolbarTitle: translations.dateRangePickerToolbarTitle,
69
- isLandscape: false,
70
79
  className: clsx(classes.root, className),
71
80
  ownerState: ownerState,
72
81
  ref: ref,
73
82
  children: /*#__PURE__*/_jsxs(DateRangePickerToolbarContainer, {
74
83
  className: classes.container,
75
84
  children: [/*#__PURE__*/_jsx(PickersToolbarButton, {
76
- variant: start !== null ? 'h5' : 'h6',
77
- value: startDateValue,
85
+ variant: value[0] == null ? 'h6' : 'h5',
86
+ value: formatDate(value[0], translations.start),
78
87
  selected: rangePosition === 'start',
79
- onClick: () => onRangePositionChange('start')
88
+ onClick: () => setRangePosition('start')
80
89
  }), /*#__PURE__*/_jsxs(Typography, {
81
90
  variant: "h5",
82
91
  children: ["\xA0", '–', "\xA0"]
83
92
  }), /*#__PURE__*/_jsx(PickersToolbarButton, {
84
- variant: end !== null ? 'h5' : 'h6',
85
- value: endDateValue,
93
+ variant: value[1] == null ? 'h6' : 'h5',
94
+ value: formatDate(value[1], translations.end),
86
95
  selected: rangePosition === 'end',
87
- onClick: () => onRangePositionChange('end')
96
+ onClick: () => setRangePosition('end')
88
97
  })]
89
98
  })
90
99
  }));
@@ -104,14 +113,6 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
104
113
  * @default `true` for Desktop, `false` for Mobile.
105
114
  */
106
115
  hidden: PropTypes.bool,
107
- onRangePositionChange: PropTypes.func.isRequired,
108
- /**
109
- * Callback called when a toolbar is clicked
110
- * @template TView
111
- * @param {TView} view The view to open
112
- */
113
- onViewChange: PropTypes.func.isRequired,
114
- rangePosition: PropTypes.oneOf(['end', 'start']).isRequired,
115
116
  /**
116
117
  * The system prop that allows defining system overrides as well as additional CSS styles.
117
118
  */
@@ -125,15 +126,6 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
125
126
  * Toolbar value placeholder—it is displayed when the value is empty.
126
127
  * @default "––"
127
128
  */
128
- toolbarPlaceholder: PropTypes.node,
129
- value: PropTypes.arrayOf(PropTypes.object).isRequired,
130
- /**
131
- * Currently visible picker view.
132
- */
133
- view: PropTypes.oneOf(['day']).isRequired,
134
- /**
135
- * Available views.
136
- */
137
- views: PropTypes.arrayOf(PropTypes.oneOf(['day'])).isRequired
129
+ toolbarPlaceholder: PropTypes.node
138
130
  } : void 0;
139
131
  export { DateRangePickerToolbar };
@@ -68,8 +68,8 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
68
68
  calendars: PropTypes.oneOf([1, 2, 3]),
69
69
  className: PropTypes.string,
70
70
  /**
71
- * If `true`, the popover or modal will close after submitting the full date.
72
- * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).
71
+ * If `true`, the Picker will close after submitting the full date.
72
+ * @default false
73
73
  */
74
74
  closeOnSelect: PropTypes.bool,
75
75
  /**
@@ -168,12 +168,10 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
168
168
  formatDensity: PropTypes.oneOf(['dense', 'spacious']),
169
169
  /**
170
170
  * Pass a ref to the `input` element.
171
- * Ignored if the field has several inputs.
172
171
  */
173
172
  inputRef: refType,
174
173
  /**
175
174
  * The label content.
176
- * Ignored if the field has several inputs.
177
175
  */
178
176
  label: PropTypes.node,
179
177
  /**
@@ -222,7 +220,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePicker.propTypes = {
222
220
  minutesStep: PropTypes.number,
223
221
  /**
224
222
  * Name attribute used by the `input` element in the Field.
225
- * Ignored if the field has several inputs.
226
223
  */
227
224
  name: PropTypes.string,
228
225
  /**
@@ -7,11 +7,12 @@ import { styled, useThemeProps } from '@mui/material/styles';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
8
  import useEventCallback from '@mui/utils/useEventCallback';
9
9
  import { TimeIcon, DateRangeIcon, ArrowLeftIcon, ArrowRightIcon } from '@mui/x-date-pickers/icons';
10
- import { isDatePickerView } from '@mui/x-date-pickers/internals';
11
- import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
10
+ import { isDatePickerView, usePickerPrivateContext } from '@mui/x-date-pickers/internals';
11
+ import { usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
12
12
  import IconButton from '@mui/material/IconButton';
13
13
  import Button from '@mui/material/Button';
14
14
  import { getDateTimeRangePickerTabsUtilityClass } from "./dateTimeRangePickerTabsClasses.js";
15
+ import { usePickerRangePositionContext } from "../hooks/index.js";
15
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
17
  const viewToTab = (view, rangePosition) => {
17
18
  if (isDatePickerView(view)) {
@@ -25,10 +26,7 @@ const tabToView = tab => {
25
26
  }
26
27
  return 'hours';
27
28
  };
28
- const useUtilityClasses = ownerState => {
29
- const {
30
- classes
31
- } = ownerState;
29
+ const useUtilityClasses = classes => {
32
30
  const slots = {
33
31
  root: ['root'],
34
32
  tabButton: ['tabButton'],
@@ -72,18 +70,26 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(inProps) {
72
70
  });
73
71
  const {
74
72
  dateIcon = /*#__PURE__*/_jsx(DateRangeIcon, {}),
75
- onViewChange,
76
73
  timeIcon = /*#__PURE__*/_jsx(TimeIcon, {}),
77
- view,
78
74
  hidden = typeof window === 'undefined' || window.innerHeight < 667,
79
- rangePosition,
80
- onRangePositionChange,
81
75
  className,
76
+ classes: classesProp,
82
77
  sx
83
78
  } = props;
84
79
  const translations = usePickerTranslations();
85
- const classes = useUtilityClasses(props);
86
- const value = React.useMemo(() => viewToTab(view, rangePosition), [view, rangePosition]);
80
+ const {
81
+ ownerState
82
+ } = usePickerPrivateContext();
83
+ const {
84
+ view,
85
+ setView
86
+ } = usePickerContext();
87
+ const classes = useUtilityClasses(classesProp);
88
+ const {
89
+ rangePosition,
90
+ setRangePosition
91
+ } = usePickerRangePositionContext();
92
+ const value = React.useMemo(() => view == null ? null : viewToTab(view, rangePosition), [view, rangePosition]);
87
93
  const isPreviousHidden = value === 'start-date';
88
94
  const isNextHidden = value === 'end-time';
89
95
  const tabLabel = React.useMemo(() => {
@@ -102,26 +108,34 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(inProps) {
102
108
  }, [translations.endDate, translations.endTime, translations.startDate, translations.startTime, value]);
103
109
  const handleRangePositionChange = useEventCallback(newTab => {
104
110
  if (newTab.includes('start')) {
105
- onRangePositionChange('start');
111
+ setRangePosition('start');
106
112
  } else {
107
- onRangePositionChange('end');
113
+ setRangePosition('end');
108
114
  }
109
115
  });
110
116
  const changeToPreviousTab = useEventCallback(() => {
111
- const previousTab = tabOptions[tabOptions.indexOf(value) - 1];
112
- onViewChange(tabToView(previousTab));
117
+ const previousTab = value == null ? tabOptions[0] : tabOptions[tabOptions.indexOf(value) - 1];
118
+ setView(tabToView(previousTab));
113
119
  handleRangePositionChange(previousTab);
114
120
  });
115
121
  const changeToNextTab = useEventCallback(() => {
116
- const nextTab = tabOptions[tabOptions.indexOf(value) + 1];
117
- onViewChange(tabToView(nextTab));
122
+ const nextTab = value == null ? tabOptions[0] : tabOptions[tabOptions.indexOf(value) + 1];
123
+ setView(tabToView(nextTab));
118
124
  handleRangePositionChange(nextTab);
119
125
  });
120
126
  if (hidden) {
121
127
  return null;
122
128
  }
129
+ let startIcon;
130
+ if (view == null) {
131
+ startIcon = null;
132
+ } else if (isDatePickerView(view)) {
133
+ startIcon = dateIcon;
134
+ } else {
135
+ startIcon = timeIcon;
136
+ }
123
137
  return /*#__PURE__*/_jsxs(DateTimeRangePickerTabsRoot, {
124
- ownerState: props,
138
+ ownerState: ownerState,
125
139
  className: clsx(classes.root, className),
126
140
  sx: sx,
127
141
  children: [!isPreviousHidden ? /*#__PURE__*/_jsx(IconButton, {
@@ -132,7 +146,7 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(inProps) {
132
146
  }) : /*#__PURE__*/_jsx(DateTimeRangePickerTabFiller, {
133
147
  className: classes.filler
134
148
  }), /*#__PURE__*/_jsx(DateTimeRangePickerTab, {
135
- startIcon: isDatePickerView(view) ? dateIcon : timeIcon,
149
+ startIcon: startIcon,
136
150
  className: classes.tabButton,
137
151
  size: "large",
138
152
  children: tabLabel
@@ -166,14 +180,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerTabs.propTypes = {
166
180
  * @default `window.innerHeight < 667` for `DesktopDateTimeRangePicker` and `MobileDateTimeRangePicker`
167
181
  */
168
182
  hidden: PropTypes.bool,
169
- onRangePositionChange: PropTypes.func.isRequired,
170
- /**
171
- * Callback called when a tab is clicked.
172
- * @template TView
173
- * @param {TView} view The view to open
174
- */
175
- onViewChange: PropTypes.func.isRequired,
176
- rangePosition: PropTypes.oneOf(['end', 'start']).isRequired,
177
183
  /**
178
184
  * The system prop that allows defining system overrides as well as additional CSS styles.
179
185
  */
@@ -182,10 +188,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerTabs.propTypes = {
182
188
  * Time tab icon.
183
189
  * @default TimeIcon
184
190
  */
185
- timeIcon: PropTypes.element,
186
- /**
187
- * Currently visible picker view.
188
- */
189
- view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired
191
+ timeIcon: PropTypes.element
190
192
  } : void 0;
191
193
  export { DateTimeRangePickerTabs };
@@ -1,17 +1,16 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["rangePosition", "onRangePositionChange", "viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
3
+ const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className"];
4
4
  import { isInternalTimeView, useUtils } from '@mui/x-date-pickers/internals';
5
5
  import { isRangeValid } from "../internals/utils/date-utils.js";
6
6
  import { calculateRangeChange } from "../internals/utils/date-range-manager.js";
7
+ import { usePickerRangePositionContext } from "../hooks/index.js";
7
8
  /**
8
9
  * @ignore - internal component.
9
10
  */
10
- function DateTimeRangePickerTimeWrapper(props, ref) {
11
+ function DateTimeRangePickerTimeWrapper(props) {
11
12
  const utils = useUtils();
12
13
  const {
13
- rangePosition,
14
- onRangePositionChange,
15
14
  viewRenderer,
16
15
  value,
17
16
  onChange,
@@ -20,6 +19,10 @@ function DateTimeRangePickerTimeWrapper(props, ref) {
20
19
  views
21
20
  } = props,
22
21
  other = _objectWithoutPropertiesLoose(props, _excluded);
22
+ const {
23
+ rangePosition,
24
+ setRangePosition
25
+ } = usePickerRangePositionContext();
23
26
  if (!viewRenderer) {
24
27
  return null;
25
28
  }
@@ -42,12 +45,11 @@ function DateTimeRangePickerTimeWrapper(props, ref) {
42
45
  // reset view to the first time view and swap range position after selecting the last time view (start or end position)
43
46
  if (selectedView === timeViews[timeViews.length - 1] && onViewChange) {
44
47
  onViewChange(views[0]);
45
- onRangePositionChange(rangePosition === 'start' ? 'end' : 'start');
48
+ setRangePosition(rangePosition === 'start' ? 'end' : 'start');
46
49
  }
47
50
  onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView);
48
51
  };
49
52
  return viewRenderer(_extends({}, other, {
50
- ref,
51
53
  views,
52
54
  onViewChange,
53
55
  value: currentValue,
@@ -2,22 +2,20 @@
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 = ["value", "rangePosition", "onRangePositionChange", "className", "onViewChange", "toolbarVariant", "onChange", "classes", "view", "isLandscape", "views", "ampm", "hidden", "toolbarFormat", "toolbarPlaceholder", "titleId", "sx"];
5
+ const _excluded = ["className", "classes", "classes", "ampm", "hidden", "toolbarFormat", "toolbarPlaceholder", "titleId", "sx"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clsx from 'clsx';
9
9
  import { styled, useThemeProps } from '@mui/material/styles';
10
10
  import composeClasses from '@mui/utils/composeClasses';
11
- import { useUtils } from '@mui/x-date-pickers/internals';
11
+ import { useUtils, useToolbarOwnerState, DateTimePickerToolbarOverrideContext } from '@mui/x-date-pickers/internals';
12
12
  import { usePickerContext, usePickerTranslations } from '@mui/x-date-pickers/hooks';
13
13
  import { DateTimePickerToolbar } from '@mui/x-date-pickers/DateTimePicker';
14
14
  import { getDateTimeRangePickerToolbarUtilityClass } from "./dateTimeRangePickerToolbarClasses.js";
15
15
  import { calculateRangeChange } from "../internals/utils/date-range-manager.js";
16
+ import { usePickerRangePositionContext } from "../hooks/index.js";
16
17
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
- const useUtilityClasses = ownerState => {
18
- const {
19
- classes
20
- } = ownerState;
18
+ const useUtilityClasses = classes => {
21
19
  const slots = {
22
20
  root: ['root'],
23
21
  startToolbar: ['startToolbar'],
@@ -39,36 +37,13 @@ const DateTimeRangePickerToolbarStart = styled(DateTimePickerToolbar, {
39
37
  overridesResolver: (_, styles) => styles.startToolbar
40
38
  })({
41
39
  borderBottom: 'none',
42
- variants: [{
43
- props: ({
44
- toolbarVariant
45
- }) => toolbarVariant !== 'desktop',
46
- style: {
47
- padding: '12px 8px 0 12px'
48
- }
49
- }, {
50
- props: {
51
- toolbarVariant: 'desktop'
52
- },
53
- style: {
54
- paddingBottom: 0
55
- }
56
- }]
40
+ paddingBottom: 0
57
41
  });
58
42
  const DateTimeRangePickerToolbarEnd = styled(DateTimePickerToolbar, {
59
43
  name: 'MuiDateTimeRangePickerToolbar',
60
44
  slot: 'EndToolbar',
61
45
  overridesResolver: (_, styles) => styles.endToolbar
62
- })({
63
- variants: [{
64
- props: ({
65
- toolbarVariant
66
- }) => toolbarVariant !== 'desktop',
67
- style: {
68
- padding: '12px 8px 12px 12px'
69
- }
70
- }]
71
- });
46
+ })({});
72
47
  const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTimeRangePickerToolbar(inProps, ref) {
73
48
  const props = useThemeProps({
74
49
  props: inProps,
@@ -76,15 +51,8 @@ const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTi
76
51
  });
77
52
  const utils = useUtils();
78
53
  const {
79
- value: [start, end],
80
- rangePosition,
81
- onRangePositionChange,
82
54
  className,
83
- onViewChange,
84
- onChange,
85
- view,
86
- isLandscape,
87
- views,
55
+ classes: classesProp,
88
56
  ampm,
89
57
  hidden,
90
58
  toolbarFormat,
@@ -94,11 +62,22 @@ const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTi
94
62
  } = props,
95
63
  other = _objectWithoutPropertiesLoose(props, _excluded);
96
64
  const {
65
+ value,
66
+ setValue,
97
67
  disabled,
98
- readOnly
68
+ readOnly,
69
+ view,
70
+ setView,
71
+ views
99
72
  } = usePickerContext();
73
+ const translations = usePickerTranslations();
74
+ const ownerState = useToolbarOwnerState();
75
+ const {
76
+ rangePosition,
77
+ setRangePosition
78
+ } = usePickerRangePositionContext();
79
+ const classes = useUtilityClasses(classesProp);
100
80
  const commonToolbarProps = {
101
- isLandscape,
102
81
  views,
103
82
  ampm,
104
83
  disabled,
@@ -107,41 +86,58 @@ const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTi
107
86
  toolbarFormat,
108
87
  toolbarPlaceholder
109
88
  };
110
- const translations = usePickerTranslations();
111
- const ownerState = props;
112
- const classes = useUtilityClasses(ownerState);
113
- const handleStartRangeViewChange = React.useCallback(newView => {
114
- if (newView === 'year' || newView === 'month') {
115
- return;
116
- }
117
- if (rangePosition !== 'start') {
118
- onRangePositionChange('start');
119
- }
120
- onViewChange(newView);
121
- }, [onRangePositionChange, onViewChange, rangePosition]);
122
- const handleEndRangeViewChange = React.useCallback(newView => {
123
- if (newView === 'year' || newView === 'month') {
124
- return;
125
- }
126
- if (rangePosition !== 'end') {
127
- onRangePositionChange('end');
128
- }
129
- onViewChange(newView);
130
- }, [onRangePositionChange, onViewChange, rangePosition]);
131
- const handleOnChange = React.useCallback(newDate => {
89
+ const wrappedSetValue = React.useCallback(newDate => {
132
90
  const {
133
91
  nextSelection,
134
92
  newRange
135
93
  } = calculateRangeChange({
136
94
  newDate,
137
95
  utils,
138
- range: props.value,
96
+ range: value,
139
97
  rangePosition,
140
98
  allowRangeFlip: true
141
99
  });
142
- onRangePositionChange(nextSelection);
143
- onChange(newRange);
144
- }, [onChange, onRangePositionChange, props.value, rangePosition, utils]);
100
+ setRangePosition(nextSelection);
101
+ setValue(newRange, {
102
+ changeImportance: 'set'
103
+ });
104
+ }, [setValue, setRangePosition, value, rangePosition, utils]);
105
+ const startOverrides = React.useMemo(() => {
106
+ const handleStartRangeViewChange = newView => {
107
+ if (newView === 'year' || newView === 'month') {
108
+ return;
109
+ }
110
+ if (rangePosition !== 'start') {
111
+ setRangePosition('start');
112
+ }
113
+ setView(newView);
114
+ };
115
+ return {
116
+ value: value[0],
117
+ setValue: wrappedSetValue,
118
+ forceDesktopVariant: true,
119
+ setView: handleStartRangeViewChange,
120
+ view: rangePosition === 'start' ? view : null
121
+ };
122
+ }, [value, wrappedSetValue, rangePosition, view, setRangePosition, setView]);
123
+ const endOverrides = React.useMemo(() => {
124
+ const handleEndRangeViewChange = newView => {
125
+ if (newView === 'year' || newView === 'month') {
126
+ return;
127
+ }
128
+ if (rangePosition !== 'end') {
129
+ setRangePosition('end');
130
+ }
131
+ setView(newView);
132
+ };
133
+ return {
134
+ value: value[1],
135
+ setValue: wrappedSetValue,
136
+ forceDesktopVariant: true,
137
+ setView: handleEndRangeViewChange,
138
+ view: rangePosition === 'end' ? view : null
139
+ };
140
+ }, [value, wrappedSetValue, rangePosition, view, setRangePosition, setView]);
145
141
  if (hidden) {
146
142
  return null;
147
143
  }
@@ -151,27 +147,23 @@ const DateTimeRangePickerToolbar = /*#__PURE__*/React.forwardRef(function DateTi
151
147
  ref: ref,
152
148
  sx: sx
153
149
  }, other, {
154
- children: [/*#__PURE__*/_jsx(DateTimeRangePickerToolbarStart, _extends({
155
- value: start,
156
- onViewChange: handleStartRangeViewChange,
157
- toolbarTitle: translations.start,
158
- ownerState: ownerState,
159
- toolbarVariant: "desktop",
160
- view: rangePosition === 'start' ? view : undefined,
161
- className: classes.startToolbar,
162
- onChange: handleOnChange,
163
- titleId: titleId ? `${titleId}-start-toolbar` : undefined
164
- }, commonToolbarProps)), /*#__PURE__*/_jsx(DateTimeRangePickerToolbarEnd, _extends({
165
- value: end,
166
- onViewChange: handleEndRangeViewChange,
167
- toolbarTitle: translations.end,
168
- ownerState: ownerState,
169
- toolbarVariant: "desktop",
170
- view: rangePosition === 'end' ? view : undefined,
171
- className: classes.endToolbar,
172
- onChange: handleOnChange,
173
- titleId: titleId ? `${titleId}-end-toolbar` : undefined
174
- }, commonToolbarProps))]
150
+ children: [/*#__PURE__*/_jsx(DateTimePickerToolbarOverrideContext.Provider, {
151
+ value: startOverrides,
152
+ children: /*#__PURE__*/_jsx(DateTimeRangePickerToolbarStart, _extends({
153
+ toolbarTitle: translations.start,
154
+ ownerState: ownerState,
155
+ className: classes.startToolbar,
156
+ titleId: titleId ? `${titleId}-start-toolbar` : undefined
157
+ }, commonToolbarProps))
158
+ }), /*#__PURE__*/_jsx(DateTimePickerToolbarOverrideContext.Provider, {
159
+ value: endOverrides,
160
+ children: /*#__PURE__*/_jsx(DateTimeRangePickerToolbarEnd, _extends({
161
+ toolbarTitle: translations.end,
162
+ ownerState: ownerState,
163
+ className: classes.endToolbar,
164
+ titleId: titleId ? `${titleId}-end-toolbar` : undefined
165
+ }, commonToolbarProps))
166
+ })]
175
167
  }));
176
168
  });
177
169
  process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
@@ -190,16 +182,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
190
182
  * @default `true` for Desktop, `false` for Mobile.
191
183
  */
192
184
  hidden: PropTypes.bool,
193
- isLandscape: PropTypes.bool.isRequired,
194
- onChange: PropTypes.func.isRequired,
195
- onRangePositionChange: PropTypes.func.isRequired,
196
- /**
197
- * Callback called when a toolbar is clicked
198
- * @template TView
199
- * @param {TView} view The view to open
200
- */
201
- onViewChange: PropTypes.func.isRequired,
202
- rangePosition: PropTypes.oneOf(['end', 'start']).isRequired,
203
185
  /**
204
186
  * The system prop that allows defining system overrides as well as additional CSS styles.
205
187
  */
@@ -213,16 +195,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
213
195
  * Toolbar value placeholder—it is displayed when the value is empty.
214
196
  * @default "––"
215
197
  */
216
- toolbarPlaceholder: PropTypes.node,
217
- toolbarVariant: PropTypes.oneOf(['desktop', 'mobile']),
218
- value: PropTypes.arrayOf(PropTypes.object).isRequired,
219
- /**
220
- * Currently visible picker view.
221
- */
222
- view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'seconds']).isRequired,
223
- /**
224
- * Available views.
225
- */
226
- views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'seconds']).isRequired).isRequired
198
+ toolbarPlaceholder: PropTypes.node
227
199
  } : void 0;
228
200
  export { DateTimeRangePickerToolbar };