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

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 (294) 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 +2007 -230
  8. package/DateRangeCalendar/DateRangeCalendar.js +73 -46
  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 +6 -8
  28. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
  29. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -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/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
  50. package/README.md +8 -5
  51. package/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
  52. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -16
  53. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  54. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
  55. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
  56. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -17
  57. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  58. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
  59. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
  60. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -17
  61. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  62. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
  63. package/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  64. package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
  65. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
  66. package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  67. package/hooks/index.d.ts +2 -0
  68. package/hooks/index.js +2 -0
  69. package/hooks/package.json +6 -0
  70. package/hooks/useMultiInputRangeField/index.d.ts +1 -0
  71. package/hooks/useMultiInputRangeField/index.js +1 -0
  72. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +53 -0
  73. package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  74. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +17 -0
  75. package/{modern/internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  76. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +17 -0
  77. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  78. package/hooks/usePickerRangePositionContext.d.ts +7 -0
  79. package/hooks/usePickerRangePositionContext.js +15 -0
  80. package/index.d.ts +2 -0
  81. package/index.js +4 -2
  82. package/internals/hooks/models/index.d.ts +1 -1
  83. package/internals/hooks/models/useRangePicker.d.ts +8 -11
  84. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  85. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +8 -10
  86. package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +25 -16
  87. package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
  88. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  89. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
  90. package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
  91. package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  92. package/internals/hooks/useRangePosition.d.ts +4 -3
  93. package/internals/hooks/useRangePosition.js +1 -1
  94. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
  95. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
  96. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -12
  97. package/internals/models/dateTimeRange.d.ts +1 -6
  98. package/internals/models/fields.d.ts +7 -11
  99. package/internals/models/index.d.ts +0 -1
  100. package/internals/models/index.js +0 -1
  101. package/internals/models/managers.d.ts +3 -0
  102. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.d.ts +3 -0
  103. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
  104. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +72 -0
  105. package/internals/utils/createMultiInputRangeField/index.d.ts +3 -0
  106. package/internals/utils/createMultiInputRangeField/index.js +2 -0
  107. package/internals/utils/date-fields-utils.d.ts +6 -6
  108. package/internals/utils/date-range-manager.js +2 -1
  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 +73 -46
  128. package/modern/DateRangePicker/DateRangePicker.js +1 -4
  129. package/modern/DateRangePicker/DateRangePickerToolbar.js +33 -41
  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 +81 -109
  134. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  135. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  136. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +6 -8
  137. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -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/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
  148. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
  149. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
  150. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
  151. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
  152. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
  153. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
  154. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  155. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  156. package/modern/hooks/index.js +2 -0
  157. package/modern/hooks/useMultiInputRangeField/index.js +1 -0
  158. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  159. package/{internals/hooks/useMultiInputFieldSelectedSections.js → modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  160. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  161. package/modern/hooks/usePickerRangePositionContext.js +15 -0
  162. package/modern/index.js +4 -2
  163. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  164. package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
  165. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  166. package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  167. package/modern/internals/hooks/useRangePosition.js +1 -1
  168. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
  169. package/modern/internals/models/index.js +0 -1
  170. package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
  171. package/modern/internals/utils/createMultiInputRangeField/index.js +2 -0
  172. package/modern/internals/utils/date-range-manager.js +2 -1
  173. package/modern/internals/utils/releaseInfo.js +1 -1
  174. package/modern/internals/utils/valueManagers.js +7 -7
  175. package/modern/managers/index.js +3 -0
  176. package/modern/managers/useDateRangeManager.js +33 -0
  177. package/modern/managers/useDateTimeRangeManager.js +33 -0
  178. package/modern/managers/useTimeRangeManager.js +31 -0
  179. package/modern/models/index.js +1 -2
  180. package/modern/validation/validateDateRange.js +8 -0
  181. package/modern/validation/validateDateTimeRange.js +4 -0
  182. package/modern/validation/validateTimeRange.js +8 -0
  183. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  184. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  185. package/node/DateRangeCalendar/DateRangeCalendar.js +72 -45
  186. package/node/DateRangePicker/DateRangePicker.js +1 -4
  187. package/node/DateRangePicker/DateRangePickerToolbar.js +31 -39
  188. package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  189. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +33 -31
  190. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  191. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +80 -108
  192. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  193. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  194. package/node/MobileDateRangePicker/MobileDateRangePicker.js +6 -8
  195. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -16
  196. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +14 -124
  197. package/node/MultiInputDateRangeField/index.js +3 -9
  198. package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
  199. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -124
  200. package/node/MultiInputDateTimeRangeField/index.js +3 -9
  201. package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
  202. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +15 -125
  203. package/node/MultiInputTimeRangeField/index.js +3 -9
  204. package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
  205. package/node/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +2 -2
  206. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +22 -32
  207. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  208. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +22 -32
  209. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  210. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +22 -32
  211. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  212. package/node/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  213. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  214. package/node/hooks/index.js +19 -0
  215. package/node/hooks/useMultiInputRangeField/index.js +12 -0
  216. package/node/hooks/useMultiInputRangeField/useMultiInputRangeField.js +155 -0
  217. package/node/{internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +11 -10
  218. package/node/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +66 -0
  219. package/node/hooks/usePickerRangePositionContext.js +22 -0
  220. package/node/index.js +23 -1
  221. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  222. package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +52 -65
  223. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  224. package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
  225. package/node/internals/hooks/useRangePosition.js +1 -1
  226. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +16 -29
  227. package/node/internals/models/index.js +0 -11
  228. package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +143 -0
  229. package/node/internals/utils/createMultiInputRangeField/index.js +19 -0
  230. package/node/internals/utils/date-range-manager.js +2 -1
  231. package/node/internals/utils/releaseInfo.js +1 -1
  232. package/node/internals/utils/valueManagers.js +7 -7
  233. package/node/managers/index.js +26 -0
  234. package/node/managers/useDateRangeManager.js +40 -0
  235. package/node/managers/useDateTimeRangeManager.js +40 -0
  236. package/node/managers/useTimeRangeManager.js +38 -0
  237. package/node/models/index.js +0 -22
  238. package/node/validation/validateDateRange.js +8 -0
  239. package/node/validation/validateDateTimeRange.js +4 -0
  240. package/node/validation/validateTimeRange.js +8 -0
  241. package/package.json +6 -6
  242. package/themeAugmentation/overrides.d.ts +6 -4
  243. package/themeAugmentation/props.d.ts +2 -2
  244. package/validation/validateDateRange.d.ts +9 -1
  245. package/validation/validateDateRange.js +8 -0
  246. package/validation/validateDateTimeRange.d.ts +6 -2
  247. package/validation/validateDateTimeRange.js +4 -0
  248. package/validation/validateTimeRange.d.ts +9 -1
  249. package/validation/validateTimeRange.js +8 -0
  250. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -53
  251. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -54
  252. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -54
  253. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +0 -21
  254. package/internals/hooks/useMultiInputRangeField/shared.d.ts +0 -1
  255. package/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  256. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +0 -3
  257. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
  258. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +0 -3
  259. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
  260. package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +0 -11
  261. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +0 -3
  262. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
  263. package/internals/models/timeRange.d.ts +0 -6
  264. package/internals/models/timeRange.js +0 -1
  265. package/models/dateRange.d.ts +0 -7
  266. package/models/dateRange.js +0 -1
  267. package/models/multiInputRangeFieldClasses.d.ts +0 -7
  268. package/models/multiInputRangeFieldClasses.js +0 -1
  269. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
  270. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
  271. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
  272. package/modern/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  273. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
  274. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
  275. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
  276. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
  277. package/modern/internals/models/timeRange.js +0 -1
  278. package/modern/models/dateRange.js +0 -1
  279. package/modern/models/multiInputRangeFieldClasses.js +0 -1
  280. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -5
  281. package/node/internals/hooks/useMultiInputRangeField/shared.js +0 -16
  282. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -121
  283. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -121
  284. package/node/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -5
  285. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -121
  286. package/node/internals/models/timeRange.js +0 -5
  287. package/node/models/dateRange.js +0 -5
  288. package/node/models/multiInputRangeFieldClasses.js +0 -5
  289. /package/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  290. /package/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  291. /package/{MultiInputTimeRangeField/MultiInputTimeRangeField.types.js → modern/internals/models/managers.js} +0 -0
  292. /package/{internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js → modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  293. /package/node/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  294. /package/node/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
@@ -0,0 +1,149 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import useEventCallback from '@mui/utils/useEventCallback';
5
+ import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
6
+ import { useValidation } from '@mui/x-date-pickers/validation';
7
+ import { useMultiInputRangeFieldTextFieldProps } from "./useMultiInputRangeFieldTextFieldProps.js";
8
+ import { useMultiInputRangeFieldSelectedSections } from "./useMultiInputRangeFieldSelectedSections.js";
9
+ /**
10
+ * Basic example:
11
+ *
12
+ * ```tsx
13
+ * import Box from '@mui/material/Box';
14
+ * import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
15
+ * import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
16
+ * import { useDateRangeManager } from '@mui/x-date-pickers-pro/managers';
17
+ *
18
+ * function MultiInputField(props) {
19
+ * const manager = useDateRangeManager();
20
+ * const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
21
+ * const { startDate, endDate } = useMultiInputRangeField({
22
+ * manager,
23
+ * internalProps,
24
+ * startForwardedProps: forwardedProps,
25
+ * endForwardedProps: forwardedProps,
26
+ * });
27
+ *
28
+ * return (
29
+ * <Box {...forwardedProps}>
30
+ * <PickersTextField {...startDate} />
31
+ * <span>{' – '}</span>
32
+ * <PickersTextField {...endDate} />
33
+ * </Box>
34
+ * );
35
+ * }
36
+ * ```
37
+ *
38
+ * @param {UseMultiInputRangeFieldParameters<TManager, TForwardedProps>} parameters The parameters of the hook.
39
+ * @param {TManager} parameters.manager The manager of the field.
40
+ * @param {PickerManagerFieldInternalProps<TManager>} parameters.internalProps The internal props of the field.
41
+ * @param {TForwardedProps} parameters.startForwardedProps The forwarded props of the start field.
42
+ * @param {TForwardedProps} parameters.endForwardedProps The forwarded props of the end field.
43
+ * @returns {UseMultiInputRangeFieldReturnValue<TManager, TForwardedProps>} The props to pass to the start and the end components.
44
+ */
45
+ export function useMultiInputRangeField(parameters) {
46
+ const {
47
+ manager,
48
+ internalProps,
49
+ startForwardedProps,
50
+ endForwardedProps
51
+ } = parameters;
52
+ const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
53
+ manager,
54
+ internalProps
55
+ });
56
+ const {
57
+ value: valueProp,
58
+ defaultValue,
59
+ format,
60
+ formatDensity,
61
+ shouldRespectLeadingZeros,
62
+ onChange,
63
+ disabled,
64
+ readOnly,
65
+ selectedSections,
66
+ onSelectedSectionsChange,
67
+ timezone: timezoneProp,
68
+ enableAccessibleFieldDOMStructure,
69
+ autoFocus,
70
+ referenceDate,
71
+ unstableStartFieldRef,
72
+ unstableEndFieldRef
73
+ } = internalPropsWithDefaults;
74
+ const {
75
+ value,
76
+ handleValueChange,
77
+ timezone
78
+ } = useControlledValueWithTimezone({
79
+ name: 'useMultiInputRangeField',
80
+ timezone: timezoneProp,
81
+ value: valueProp,
82
+ defaultValue,
83
+ referenceDate,
84
+ onChange,
85
+ valueManager: manager.internal_valueManager
86
+ });
87
+ const {
88
+ validationError,
89
+ getValidationErrorForNewValue
90
+ } = useValidation({
91
+ props: internalPropsWithDefaults,
92
+ value,
93
+ timezone,
94
+ validator: manager.validator,
95
+ onError: internalPropsWithDefaults.onError
96
+ });
97
+ const buildChangeHandler = index => {
98
+ return (newSingleValue, rawContext) => {
99
+ const newRange = index === 0 ? [newSingleValue, value[1]] : [value[0], newSingleValue];
100
+ const context = _extends({}, rawContext, {
101
+ validationError: getValidationErrorForNewValue(newRange)
102
+ });
103
+ handleValueChange(newRange, context);
104
+ };
105
+ };
106
+ const handleStartDateChange = useEventCallback(buildChangeHandler(0));
107
+ const handleEndDateChange = useEventCallback(buildChangeHandler(1));
108
+ const selectedSectionsResponse = useMultiInputRangeFieldSelectedSections({
109
+ selectedSections,
110
+ onSelectedSectionsChange,
111
+ unstableStartFieldRef,
112
+ unstableEndFieldRef
113
+ });
114
+ const sharedProps = {
115
+ disabled,
116
+ readOnly,
117
+ timezone,
118
+ format,
119
+ formatDensity,
120
+ shouldRespectLeadingZeros,
121
+ enableAccessibleFieldDOMStructure
122
+ };
123
+ const startDateProps = useMultiInputRangeFieldTextFieldProps({
124
+ valueType: manager.valueType,
125
+ fieldProps: _extends({
126
+ error: !!validationError[0]
127
+ }, startForwardedProps, selectedSectionsResponse.start, sharedProps, {
128
+ value: valueProp === undefined ? undefined : valueProp[0],
129
+ defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
130
+ onChange: handleStartDateChange,
131
+ autoFocus // Do not add on end field.
132
+ })
133
+ });
134
+ const endDateProps = useMultiInputRangeFieldTextFieldProps({
135
+ valueType: manager.valueType,
136
+ fieldProps: _extends({
137
+ error: !!validationError[1]
138
+ }, endForwardedProps, selectedSectionsResponse.end, sharedProps, {
139
+ value: valueProp === undefined ? undefined : valueProp[1],
140
+ defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
141
+ onChange: handleEndDateChange
142
+ })
143
+ });
144
+ return {
145
+ startDate: startDateProps,
146
+ endDate: endDateProps,
147
+ enableAccessibleFieldDOMStructure
148
+ };
149
+ }
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import { PickerRangeValue, PickerValue, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
3
+ import { FieldRef, FieldSelectedSections } from '@mui/x-date-pickers/models';
4
+ import { MultiInputFieldRefs } from '../../models';
5
+ interface UseMultiInputRangeFieldSelectedSectionsParameters extends Pick<UseFieldInternalProps<PickerRangeValue, any, any>, 'selectedSections' | 'onSelectedSectionsChange'>, MultiInputFieldRefs {
6
+ }
7
+ interface UseMultiInputFieldSelectedSectionsResponseItem {
8
+ unstableFieldRef?: React.Ref<FieldRef<PickerValue>>;
9
+ selectedSections: FieldSelectedSections;
10
+ onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
11
+ }
12
+ interface UseMultiInputFieldSelectedSectionsResponse {
13
+ start: UseMultiInputFieldSelectedSectionsResponseItem;
14
+ end: UseMultiInputFieldSelectedSectionsResponseItem;
15
+ }
16
+ export declare const useMultiInputRangeFieldSelectedSections: (parameters: UseMultiInputRangeFieldSelectedSectionsParameters) => UseMultiInputFieldSelectedSectionsResponse;
17
+ export {};
@@ -1,10 +1,12 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
  import useForkRef from '@mui/utils/useForkRef';
3
5
  import useEventCallback from '@mui/utils/useEventCallback';
4
- export const useMultiInputFieldSelectedSections = params => {
6
+ export const useMultiInputRangeFieldSelectedSections = parameters => {
5
7
  const unstableEndFieldRef = React.useRef(null);
6
- const handleUnstableEndFieldRef = useForkRef(params.unstableEndFieldRef, unstableEndFieldRef);
7
- const [startSelectedSection, setStartSelectedSection] = React.useState(params.selectedSections ?? null);
8
+ const handleUnstableEndFieldRef = useForkRef(parameters.unstableEndFieldRef, unstableEndFieldRef);
9
+ const [startSelectedSection, setStartSelectedSection] = React.useState(parameters.selectedSections ?? null);
8
10
  const [endSelectedSection, setEndSelectedSection] = React.useState(null);
9
11
  const getActiveField = () => {
10
12
  if (unstableEndFieldRef.current && unstableEndFieldRef.current.isFieldFocused()) {
@@ -15,25 +17,25 @@ export const useMultiInputFieldSelectedSections = params => {
15
17
  const handleStartSelectedSectionChange = useEventCallback(newSelectedSections => {
16
18
  setStartSelectedSection(newSelectedSections);
17
19
  if (getActiveField() === 'start') {
18
- params.onSelectedSectionsChange?.(newSelectedSections);
20
+ parameters.onSelectedSectionsChange?.(newSelectedSections);
19
21
  }
20
22
  });
21
23
  const handleEndSelectedSectionChange = useEventCallback(newSelectedSections => {
22
24
  setEndSelectedSection(newSelectedSections);
23
25
  if (getActiveField() === 'end') {
24
- params.onSelectedSectionsChange?.(newSelectedSections);
26
+ parameters.onSelectedSectionsChange?.(newSelectedSections);
25
27
  }
26
28
  });
27
29
  const activeField = getActiveField();
28
30
  return {
29
31
  start: {
30
- unstableFieldRef: params.unstableStartFieldRef,
31
- selectedSections: activeField === 'start' && params.selectedSections !== undefined ? params.selectedSections : startSelectedSection,
32
+ unstableFieldRef: parameters.unstableStartFieldRef,
33
+ selectedSections: activeField === 'start' && parameters.selectedSections !== undefined ? parameters.selectedSections : startSelectedSection,
32
34
  onSelectedSectionsChange: handleStartSelectedSectionChange
33
35
  },
34
36
  end: {
35
37
  unstableFieldRef: handleUnstableEndFieldRef,
36
- selectedSections: activeField === 'end' && params.selectedSections !== undefined ? params.selectedSections : endSelectedSection,
38
+ selectedSections: activeField === 'end' && parameters.selectedSections !== undefined ? parameters.selectedSections : endSelectedSection,
37
39
  onSelectedSectionsChange: handleEndSelectedSectionChange
38
40
  }
39
41
  };
@@ -0,0 +1,17 @@
1
+ import { UseDateManagerReturnValue, UseDateTimeManagerReturnValue, UseTimeManagerReturnValue } from '@mui/x-date-pickers/managers';
2
+ import { PickerValueType } from '@mui/x-date-pickers/models';
3
+ import { PickerManagerEnableAccessibleFieldDOMStructure, PickerManagerFieldInternalProps, UseFieldResponse } from '@mui/x-date-pickers/internals';
4
+ import { PickerAnyRangeManager } from '../../internals/models/managers';
5
+ import { UseDateRangeManagerReturnValue, UseDateTimeRangeManagerReturnValue, UseTimeRangeManagerReturnValue } from '../../managers';
6
+ /**
7
+ * @ignore - internal hook.
8
+ */
9
+ export declare function useMultiInputRangeFieldTextFieldProps<TManager extends PickerAnyRangeManager, TForwardedProps extends {
10
+ [key: string]: any;
11
+ }>(parameters: UseMultiInputRangeFieldTextFieldProps<TManager>): Omit<UseFieldResponse<PickerManagerEnableAccessibleFieldDOMStructure<TManager>, TForwardedProps>, "clearable" | "onClear">;
12
+ interface UseMultiInputRangeFieldTextFieldProps<TManager extends PickerAnyRangeManager> {
13
+ valueType: PickerValueType;
14
+ fieldProps: PickerManagerFieldInternalProps<GetDerivedManager<TManager>>;
15
+ }
16
+ type GetDerivedManager<TManager extends PickerAnyRangeManager> = TManager extends UseDateRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseDateManagerReturnValue<TEnableAccessibleFieldDOMStructure> : TManager extends UseTimeRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure> : TManager extends UseDateTimeRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseDateTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure> : never;
17
+ export {};
@@ -0,0 +1,59 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ const _excluded = ["clearable", "onClear"];
3
+ import { useDateManager, useDateTimeManager, useTimeManager } from '@mui/x-date-pickers/managers';
4
+ import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
5
+ import { useField, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
6
+ /**
7
+ * @ignore - internal hook.
8
+ */
9
+ export function useMultiInputRangeFieldTextFieldProps(parameters) {
10
+ const {
11
+ fieldProps,
12
+ valueType
13
+ } = parameters;
14
+ let useManager;
15
+ switch (valueType) {
16
+ case 'date':
17
+ {
18
+ useManager = useDateManager;
19
+ break;
20
+ }
21
+ case 'time':
22
+ {
23
+ useManager = useTimeManager;
24
+ break;
25
+ }
26
+ case 'date-time':
27
+ {
28
+ useManager = useDateTimeManager;
29
+ break;
30
+ }
31
+ default:
32
+ {
33
+ throw new Error(`Unknown valueType: ${valueType}`);
34
+ }
35
+ }
36
+ const manager = useManager({
37
+ enableAccessibleFieldDOMStructure: fieldProps.enableAccessibleFieldDOMStructure
38
+ });
39
+ const {
40
+ forwardedProps,
41
+ internalProps
42
+ } = useSplitFieldProps(fieldProps, 'date');
43
+ const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
44
+ manager,
45
+ internalProps
46
+ });
47
+ const _ref = useField({
48
+ forwardedProps,
49
+ internalProps: internalPropsWithDefaults,
50
+ valueManager: manager.internal_valueManager,
51
+ fieldValueManager: manager.internal_fieldValueManager,
52
+ validator: manager.validator,
53
+ valueType: manager.valueType,
54
+ // TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
55
+ getOpenPickerButtonAriaLabel: () => ''
56
+ }),
57
+ fieldResponse = _objectWithoutPropertiesLoose(_ref, _excluded);
58
+ return fieldResponse;
59
+ }
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import { UseRangePositionResponse } from '../internals/hooks/useRangePosition';
3
+ export declare const PickerRangePositionContext: React.Context<UseRangePositionResponse | null>;
4
+ /**
5
+ * Returns information about the range position of the picker that wraps the current component.
6
+ */
7
+ export declare function usePickerRangePositionContext(): UseRangePositionResponse;
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ export const PickerRangePositionContext = /*#__PURE__*/React.createContext(null);
5
+
6
+ /**
7
+ * Returns information about the range position of the picker that wraps the current component.
8
+ */
9
+ export function usePickerRangePositionContext() {
10
+ const value = React.useContext(PickerRangePositionContext);
11
+ if (value == null) {
12
+ throw new Error(['MUI X: The `usePickerRangePositionContext` can only be called in components that are used inside a picker component'].join('\n'));
13
+ }
14
+ return value;
15
+ }
package/index.d.ts CHANGED
@@ -17,4 +17,6 @@ export * from './DesktopDateTimeRangePicker';
17
17
  export * from './MobileDateTimeRangePicker';
18
18
  export * from './dateRangeViewRenderers';
19
19
  export * from './models';
20
+ export * from './hooks';
20
21
  export * from './validation';
22
+ export * from './managers';
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.0.0-alpha.1
2
+ * @mui/x-date-pickers-pro v8.0.0-alpha.11
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -32,4 +32,6 @@ export * from "./MobileDateTimeRangePicker/index.js";
32
32
  // View renderers
33
33
  export * from "./dateRangeViewRenderers/index.js";
34
34
  export * from "./models/index.js";
35
- export * from "./validation/index.js";
35
+ export * from "./hooks/index.js";
36
+ export * from "./validation/index.js";
37
+ export * from "./managers/index.js";
@@ -1 +1 @@
1
- export type { UseRangePickerSlots, UseRangePickerSlotProps, RangeOnlyPickerProps, RangePickerAdditionalViewProps, UseRangePickerProps, UseRangePickerParams, } from './useRangePicker';
1
+ export type { UseRangePickerSlots, UseRangePickerSlotProps, RangeOnlyPickerProps, UseRangePickerProps, UseRangePickerParams, } from './useRangePicker';
@@ -1,21 +1,18 @@
1
- import { UsePickerParams, BasePickerProps, ExportedBaseToolbarProps, UsePickerViewsProps, BaseNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerViewsNonStaticProps, DateOrTimeViewWithMeridiem, ExportedBaseTabsProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
1
+ import { UsePickerParams, BasePickerProps, ExportedBaseToolbarProps, UsePickerViewsProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, DateOrTimeViewWithMeridiem, ExportedBaseTabsProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
2
2
  import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout';
3
3
  import { BaseRangeNonStaticPickerProps } from '../../models';
4
- import { UseRangePositionProps, UseRangePositionResponse } from '../useRangePosition';
5
- import { RangePickerFieldSlots, RangePickerFieldSlotProps } from '../useEnrichedRangePickerFieldProps';
6
- import { RangeFieldSection } from '../../../models';
7
- export interface UseRangePickerSlots<TView extends DateOrTimeViewWithMeridiem> extends ExportedPickersLayoutSlots<PickerRangeValue, TView>, RangePickerFieldSlots {
4
+ import { UseRangePositionProps } from '../useRangePosition';
5
+ import { RangePickerFieldSlots, RangePickerFieldSlotProps } from '../useEnrichedRangePickerField';
6
+ export interface UseRangePickerSlots extends ExportedPickersLayoutSlots<PickerRangeValue>, RangePickerFieldSlots {
8
7
  }
9
- export interface UseRangePickerSlotProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedPickersLayoutSlotProps<PickerRangeValue, TView>, RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure> {
8
+ export interface UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedPickersLayoutSlotProps<PickerRangeValue>, RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure> {
10
9
  tabs?: ExportedBaseTabsProps;
11
10
  toolbar?: ExportedBaseToolbarProps;
12
11
  }
13
- export interface RangeOnlyPickerProps extends BaseNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerViewsNonStaticProps, BaseRangeNonStaticPickerProps, UseRangePositionProps {
12
+ export interface RangeOnlyPickerProps extends UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, BaseRangeNonStaticPickerProps, UseRangePositionProps {
14
13
  }
15
- export interface UseRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>, TAdditionalViewProps extends {}> extends RangeOnlyPickerProps, BasePickerProps<PickerRangeValue, TView, TError, TExternalProps, TAdditionalViewProps> {
14
+ export interface UseRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends RangeOnlyPickerProps, BasePickerProps<PickerRangeValue, TView, TError, TExternalProps> {
16
15
  }
17
- export interface RangePickerAdditionalViewProps extends Pick<UseRangePositionResponse, 'rangePosition' | 'onRangePositionChange'> {
18
- }
19
- export interface UseRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseRangePickerProps<TView, any, TExternalProps, TAdditionalViewProps>, TAdditionalViewProps extends {}> extends Pick<UsePickerParams<PickerRangeValue, TView, RangeFieldSection, TExternalProps, TAdditionalViewProps>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor'> {
16
+ export interface UseRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseRangePickerProps<TView, any, TExternalProps>> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor' | 'ref'> {
20
17
  props: TExternalProps;
21
18
  }
@@ -1,14 +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 = ["props"];
3
+ const _excluded = ["props"],
4
+ _excluded2 = ["ownerState"];
4
5
  import * as React from 'react';
5
6
  import useSlotProps from '@mui/utils/useSlotProps';
6
7
  import { useLicenseVerifier } from '@mui/x-license';
7
8
  import { PickersLayout } from '@mui/x-date-pickers/PickersLayout';
8
- import { executeInTheNextEventLoopTick, getActiveElement, usePicker, PickersPopper, PickerProvider } from '@mui/x-date-pickers/internals';
9
- import { useEnrichedRangePickerFieldProps } from "../useEnrichedRangePickerFieldProps.js";
9
+ import { executeInTheNextEventLoopTick, getActiveElement, usePicker, PickerPopper, PickerProvider, PickerFieldUIContextProvider } from '@mui/x-date-pickers/internals';
10
+ import { useEnrichedRangePickerField } from "../useEnrichedRangePickerField.js";
10
11
  import { getReleaseInfo } from "../../utils/releaseInfo.js";
11
12
  import { useRangePosition } from "../useRangePosition.js";
13
+ import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
12
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
15
  const releaseInfo = getReleaseInfo();
14
16
  export const useDesktopRangePicker = _ref => {
@@ -20,58 +22,45 @@ export const useDesktopRangePicker = _ref => {
20
22
  const {
21
23
  slots,
22
24
  slotProps,
23
- className,
24
- sx,
25
- format,
26
- formatDensity,
27
- enableAccessibleFieldDOMStructure,
28
- selectedSections,
29
- onSelectedSectionsChange,
30
- timezone,
31
- label,
32
25
  inputRef,
33
- name,
34
26
  readOnly,
35
- disabled,
36
27
  autoFocus,
37
28
  disableOpenPicker,
38
- localeText,
39
- reduceAnimations
29
+ localeText
40
30
  } = props;
41
31
  const fieldContainerRef = React.useRef(null);
42
- const anchorRef = React.useRef(null);
43
32
  const popperRef = React.useRef(null);
44
33
  const startFieldRef = React.useRef(null);
45
34
  const endFieldRef = React.useRef(null);
35
+ const singleInputFieldRef = React.useRef(null);
46
36
  const initialView = React.useRef(props.openTo ?? null);
47
37
  const fieldType = slots.field.fieldType ?? 'multi-input';
38
+ const rangePositionResponse = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
39
+ let fieldRef;
40
+ if (fieldType === 'single-input') {
41
+ fieldRef = singleInputFieldRef;
42
+ } else if (rangePositionResponse.rangePosition === 'start') {
43
+ fieldRef = startFieldRef;
44
+ } else {
45
+ fieldRef = endFieldRef;
46
+ }
48
47
  const {
49
- rangePosition,
50
- onRangePositionChange
51
- } = useRangePosition(props, fieldType === 'single-input' ? startFieldRef : undefined);
52
- const {
53
- open,
54
- actions,
55
- layoutProps,
56
48
  providerProps,
57
49
  renderCurrentView,
58
- shouldRestoreFocus,
59
- fieldProps: pickerFieldProps,
60
50
  ownerState
61
51
  } = usePicker(_extends({}, pickerParams, {
62
52
  props,
63
53
  variant: 'desktop',
64
54
  autoFocusView: false,
65
- fieldRef: rangePosition === 'start' ? startFieldRef : endFieldRef,
66
- localeText,
67
- additionalViewProps: {
68
- rangePosition,
69
- onRangePositionChange
70
- }
55
+ fieldRef,
56
+ localeText
71
57
  }));
58
+
59
+ // Temporary hack to hide the opening button on the range pickers until we have migrate them to the new opening logic.
60
+ providerProps.contextValue.triggerStatus = 'hidden';
72
61
  React.useEffect(() => {
73
- if (layoutProps.view) {
74
- initialView.current = layoutProps.view;
62
+ if (providerProps.contextValue.view) {
63
+ initialView.current = providerProps.contextValue.view;
75
64
  }
76
65
  // eslint-disable-next-line react-hooks/exhaustive-deps
77
66
  }, []);
@@ -80,90 +69,69 @@ export const useDesktopRangePicker = _ref => {
80
69
  if (fieldContainerRef.current?.contains(getActiveElement(document)) || popperRef.current?.contains(getActiveElement(document))) {
81
70
  return;
82
71
  }
83
- actions.onDismiss();
72
+
73
+ // This direct access to `providerProps` will go away once the range fields stop having their views in a tooltip.
74
+ providerProps.privateContextValue.dismissViews();
84
75
  });
85
76
  };
86
77
  const Field = slots.field;
87
- const fieldProps = useSlotProps({
88
- elementType: Field,
89
- externalSlotProps: slotProps?.field,
90
- additionalProps: _extends({
91
- // Internal props
92
- readOnly,
93
- disabled,
94
- format,
95
- formatDensity,
96
- enableAccessibleFieldDOMStructure,
97
- selectedSections,
98
- onSelectedSectionsChange,
99
- timezone,
100
- autoFocus: autoFocus && !props.open
101
- }, pickerFieldProps, {
102
- // onChange and value
103
-
104
- // Forwarded props
105
- className,
106
- sx,
107
- ref: fieldContainerRef
108
- }, fieldType === 'single-input' && !!inputRef && {
109
- inputRef
110
- }, fieldType === 'single-input' && {
111
- name
78
+ const _useSlotProps = useSlotProps({
79
+ elementType: Field,
80
+ externalSlotProps: slotProps?.field,
81
+ additionalProps: {
82
+ // Internal props
83
+ readOnly,
84
+ autoFocus: autoFocus && !props.open,
85
+ // Forwarded props
86
+ ref: fieldContainerRef
87
+ },
88
+ ownerState
112
89
  }),
113
- ownerState
114
- });
115
- const enrichedFieldProps = useEnrichedRangePickerFieldProps({
90
+ fieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
91
+ const enrichedFieldResponse = useEnrichedRangePickerField(_extends({
116
92
  variant: 'desktop',
117
93
  fieldType,
118
- open,
119
- actions,
94
+ // These direct access to `providerProps` will go away once the range fields handle the picker opening
95
+ contextValue: providerProps.contextValue,
96
+ fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
120
97
  readOnly,
121
98
  disableOpenPicker,
122
- label,
123
99
  localeText,
124
100
  onBlur: handleBlur,
125
- rangePosition,
126
- onRangePositionChange,
127
101
  pickerSlotProps: slotProps,
128
102
  pickerSlots: slots,
129
103
  fieldProps,
130
- anchorRef,
104
+ anchorRef: providerProps.contextValue.triggerRef,
131
105
  startFieldRef,
132
106
  endFieldRef,
133
- currentView: layoutProps.view !== props.openTo ? layoutProps.view : undefined,
134
- initialView: initialView.current ?? undefined,
135
- onViewChange: layoutProps.onViewChange
136
- });
137
- const slotPropsForLayout = _extends({}, slotProps, {
138
- tabs: _extends({}, slotProps?.tabs, {
139
- rangePosition,
140
- onRangePositionChange
141
- }),
142
- toolbar: _extends({}, slotProps?.toolbar, {
143
- rangePosition,
144
- onRangePositionChange
145
- })
146
- });
107
+ singleInputFieldRef,
108
+ currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
109
+ initialView: initialView.current ?? undefined
110
+ }, rangePositionResponse));
147
111
  const Layout = slots?.layout ?? PickersLayout;
148
- const renderPicker = () => /*#__PURE__*/_jsxs(PickerProvider, _extends({}, providerProps, {
149
- children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersPopper, _extends({
150
- role: "tooltip",
151
- placement: "bottom-start",
152
- containerRef: popperRef,
153
- anchorEl: anchorRef.current,
154
- onBlur: handleBlur
155
- }, actions, {
156
- open: open,
112
+ const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
113
+ // This override will go away once the range fields handle the picker opening
114
+ fieldPrivateContextValue: _extends({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
115
+ children: /*#__PURE__*/_jsx(PickerFieldUIContextProvider, {
157
116
  slots: slots,
158
117
  slotProps: slotProps,
159
- shouldRestoreFocus: shouldRestoreFocus,
160
- reduceAnimations: reduceAnimations,
161
- children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {
162
- slots: slots,
163
- slotProps: slotPropsForLayout,
164
- children: renderCurrentView()
165
- }))
166
- }))]
118
+ inputRef: inputRef,
119
+ children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, {
120
+ value: rangePositionResponse,
121
+ children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldResponse.fieldProps)), /*#__PURE__*/_jsx(PickerPopper, {
122
+ role: "tooltip",
123
+ containerRef: popperRef,
124
+ onBlur: handleBlur,
125
+ slots: slots,
126
+ slotProps: slotProps,
127
+ children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
128
+ slots: slots,
129
+ slotProps: slotProps,
130
+ children: renderCurrentView()
131
+ }))
132
+ })]
133
+ })
134
+ })
167
135
  }));
168
136
  return {
169
137
  renderPicker
@@ -1,8 +1,8 @@
1
- import { PickersPopperSlots, PickersPopperSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem } from '@mui/x-date-pickers/internals';
2
- import { RangeOnlyPickerProps, RangePickerAdditionalViewProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
3
- export interface UseDesktopRangePickerSlots<TView extends DateOrTimeViewWithMeridiem> extends UseRangePickerSlots<TView>, PickersPopperSlots {
1
+ import { PickerPopperSlots, PickerPopperSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem } from '@mui/x-date-pickers/internals';
2
+ import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
3
+ export interface UseDesktopRangePickerSlots extends UseRangePickerSlots, PickerPopperSlots {
4
4
  }
5
- export interface UseDesktopRangePickerSlotProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TView, TEnableAccessibleFieldDOMStructure>, PickersPopperSlotProps {
5
+ export interface UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, PickerPopperSlotProps {
6
6
  }
7
7
  export interface DesktopRangeOnlyPickerProps extends RangeOnlyPickerProps {
8
8
  /**
@@ -10,19 +10,17 @@ export interface DesktopRangeOnlyPickerProps extends RangeOnlyPickerProps {
10
10
  */
11
11
  autoFocus?: boolean;
12
12
  }
13
- export interface UseDesktopRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>> extends UseRangePickerProps<TView, TError, TExternalProps, DesktopRangePickerAdditionalViewProps> {
13
+ export interface UseDesktopRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends UseRangePickerProps<TView, TError, TExternalProps> {
14
14
  /**
15
15
  * Overridable component slots.
16
16
  * @default {}
17
17
  */
18
- slots: UseDesktopRangePickerSlots<TView>;
18
+ slots: UseDesktopRangePickerSlots;
19
19
  /**
20
20
  * The props used for each component slot.
21
21
  * @default {}
22
22
  */
23
- slotProps?: UseDesktopRangePickerSlotProps<TView, TEnableAccessibleFieldDOMStructure>;
23
+ slotProps?: UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>;
24
24
  }
25
- export interface DesktopRangePickerAdditionalViewProps extends RangePickerAdditionalViewProps {
26
- }
27
- export interface UseDesktopRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps, DesktopRangePickerAdditionalViewProps> {
25
+ export interface UseDesktopRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps> {
28
26
  }