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

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