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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
  2. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  3. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
  4. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
  5. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  6. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
  7. package/CHANGELOG.md +1903 -231
  8. package/DateRangeCalendar/DateRangeCalendar.js +15 -13
  9. package/DateRangePicker/DateRangePicker.js +1 -4
  10. package/DateRangePicker/DateRangePicker.types.d.ts +6 -2
  11. package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
  12. package/DateRangePicker/DateRangePickerToolbar.js +33 -41
  13. package/DateRangePicker/shared.d.ts +4 -3
  14. package/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  15. package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +1 -2
  16. package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +4 -5
  17. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
  18. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
  19. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  20. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -5
  21. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +81 -109
  22. package/DateTimeRangePicker/shared.d.ts +6 -5
  23. package/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  24. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +7 -2
  25. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  26. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
  27. package/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  28. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
  29. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  30. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
  31. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +9 -4
  32. package/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
  33. package/MultiInputDateRangeField/index.d.ts +5 -3
  34. package/MultiInputDateRangeField/index.js +2 -2
  35. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.d.ts +6 -0
  36. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  37. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +9 -4
  38. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
  39. package/MultiInputDateTimeRangeField/index.d.ts +5 -3
  40. package/MultiInputDateTimeRangeField/index.js +2 -2
  41. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.d.ts +6 -0
  42. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  43. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +9 -4
  44. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
  45. package/MultiInputTimeRangeField/index.d.ts +5 -3
  46. package/MultiInputTimeRangeField/index.js +2 -2
  47. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.d.ts +6 -0
  48. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  49. package/README.md +8 -5
  50. package/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
  51. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -16
  52. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  53. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
  54. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
  55. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -17
  56. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  57. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
  58. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
  59. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -17
  60. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  61. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
  62. package/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  63. package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
  64. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
  65. package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  66. package/hooks/index.d.ts +2 -0
  67. package/hooks/index.js +2 -0
  68. package/hooks/package.json +6 -0
  69. package/hooks/useMultiInputRangeField/index.d.ts +1 -0
  70. package/hooks/useMultiInputRangeField/index.js +1 -0
  71. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +53 -0
  72. package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  73. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +17 -0
  74. package/{modern/internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  75. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +17 -0
  76. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  77. package/hooks/usePickerRangePositionContext.d.ts +7 -0
  78. package/hooks/usePickerRangePositionContext.js +15 -0
  79. package/index.d.ts +2 -0
  80. package/index.js +4 -2
  81. package/internals/hooks/models/index.d.ts +1 -1
  82. package/internals/hooks/models/useRangePicker.d.ts +8 -11
  83. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  84. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +8 -10
  85. package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +25 -16
  86. package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
  87. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  88. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
  89. package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
  90. package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  91. package/internals/hooks/useRangePosition.d.ts +4 -3
  92. package/internals/hooks/useRangePosition.js +1 -1
  93. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
  94. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
  95. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -12
  96. package/internals/models/dateTimeRange.d.ts +1 -6
  97. package/internals/models/fields.d.ts +7 -11
  98. package/internals/models/index.d.ts +0 -1
  99. package/internals/models/index.js +0 -1
  100. package/internals/models/managers.d.ts +3 -0
  101. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.d.ts +3 -0
  102. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
  103. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +72 -0
  104. package/internals/utils/createMultiInputRangeField/index.d.ts +3 -0
  105. package/internals/utils/createMultiInputRangeField/index.js +2 -0
  106. package/internals/utils/date-fields-utils.d.ts +6 -6
  107. package/internals/utils/date-range-manager.js +2 -1
  108. package/internals/utils/releaseInfo.js +1 -1
  109. package/internals/utils/valueManagers.d.ts +4 -3
  110. package/internals/utils/valueManagers.js +7 -7
  111. package/managers/index.d.ts +6 -0
  112. package/managers/index.js +3 -0
  113. package/managers/package.json +6 -0
  114. package/managers/useDateRangeManager.d.ts +15 -0
  115. package/managers/useDateRangeManager.js +33 -0
  116. package/managers/useDateTimeRangeManager.d.ts +15 -0
  117. package/managers/useDateTimeRangeManager.js +33 -0
  118. package/managers/useTimeRangeManager.d.ts +15 -0
  119. package/managers/useTimeRangeManager.js +31 -0
  120. package/models/fields.d.ts +7 -11
  121. package/models/index.d.ts +1 -2
  122. package/models/index.js +1 -2
  123. package/models/range.d.ts +0 -2
  124. package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  125. package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  126. package/modern/DateRangeCalendar/DateRangeCalendar.js +15 -13
  127. package/modern/DateRangePicker/DateRangePicker.js +1 -4
  128. package/modern/DateRangePicker/DateRangePickerToolbar.js +33 -41
  129. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  130. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
  131. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  132. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +81 -109
  133. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  134. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  135. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  136. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  137. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
  138. package/modern/MultiInputDateRangeField/index.js +2 -2
  139. package/modern/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  140. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
  141. package/modern/MultiInputDateTimeRangeField/index.js +2 -2
  142. package/modern/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  143. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
  144. package/modern/MultiInputTimeRangeField/index.js +2 -2
  145. package/modern/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  146. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
  147. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
  148. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
  149. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
  150. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
  151. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
  152. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  153. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  154. package/modern/hooks/index.js +2 -0
  155. package/modern/hooks/useMultiInputRangeField/index.js +1 -0
  156. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  157. package/{internals/hooks/useMultiInputFieldSelectedSections.js → modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  158. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  159. package/modern/hooks/usePickerRangePositionContext.js +15 -0
  160. package/modern/index.js +4 -2
  161. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  162. package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +50 -63
  163. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  164. package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  165. package/modern/internals/hooks/useRangePosition.js +1 -1
  166. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
  167. package/modern/internals/models/index.js +0 -1
  168. package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
  169. package/modern/internals/utils/createMultiInputRangeField/index.js +2 -0
  170. package/modern/internals/utils/date-range-manager.js +2 -1
  171. package/modern/internals/utils/releaseInfo.js +1 -1
  172. package/modern/internals/utils/valueManagers.js +7 -7
  173. package/modern/managers/index.js +3 -0
  174. package/modern/managers/useDateRangeManager.js +33 -0
  175. package/modern/managers/useDateTimeRangeManager.js +33 -0
  176. package/modern/managers/useTimeRangeManager.js +31 -0
  177. package/modern/models/index.js +1 -2
  178. package/modern/validation/validateDateRange.js +8 -0
  179. package/modern/validation/validateDateTimeRange.js +4 -0
  180. package/modern/validation/validateTimeRange.js +8 -0
  181. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  182. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  183. package/node/DateRangeCalendar/DateRangeCalendar.js +14 -12
  184. package/node/DateRangePicker/DateRangePicker.js +1 -4
  185. package/node/DateRangePicker/DateRangePickerToolbar.js +31 -39
  186. package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  187. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +33 -31
  188. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  189. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +80 -108
  190. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  191. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  192. package/node/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  193. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  194. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +14 -124
  195. package/node/MultiInputDateRangeField/index.js +3 -9
  196. package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
  197. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -124
  198. package/node/MultiInputDateTimeRangeField/index.js +3 -9
  199. package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
  200. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +15 -125
  201. package/node/MultiInputTimeRangeField/index.js +3 -9
  202. package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
  203. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +22 -32
  204. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  205. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +22 -32
  206. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  207. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +22 -32
  208. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  209. package/node/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  210. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  211. package/node/hooks/index.js +19 -0
  212. package/node/hooks/useMultiInputRangeField/index.js +12 -0
  213. package/node/hooks/useMultiInputRangeField/useMultiInputRangeField.js +155 -0
  214. package/node/{internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +11 -10
  215. package/node/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +66 -0
  216. package/node/hooks/usePickerRangePositionContext.js +22 -0
  217. package/node/index.js +23 -1
  218. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +68 -100
  219. package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +52 -65
  220. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +57 -80
  221. package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
  222. package/node/internals/hooks/useRangePosition.js +1 -1
  223. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +16 -29
  224. package/node/internals/models/index.js +0 -11
  225. package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +143 -0
  226. package/node/internals/utils/createMultiInputRangeField/index.js +19 -0
  227. package/node/internals/utils/date-range-manager.js +2 -1
  228. package/node/internals/utils/releaseInfo.js +1 -1
  229. package/node/internals/utils/valueManagers.js +7 -7
  230. package/node/managers/index.js +26 -0
  231. package/node/managers/useDateRangeManager.js +40 -0
  232. package/node/managers/useDateTimeRangeManager.js +40 -0
  233. package/node/managers/useTimeRangeManager.js +38 -0
  234. package/node/models/index.js +0 -22
  235. package/node/validation/validateDateRange.js +8 -0
  236. package/node/validation/validateDateTimeRange.js +4 -0
  237. package/node/validation/validateTimeRange.js +8 -0
  238. package/package.json +6 -6
  239. package/themeAugmentation/overrides.d.ts +6 -4
  240. package/themeAugmentation/props.d.ts +2 -2
  241. package/validation/validateDateRange.d.ts +9 -1
  242. package/validation/validateDateRange.js +8 -0
  243. package/validation/validateDateTimeRange.d.ts +6 -2
  244. package/validation/validateDateTimeRange.js +4 -0
  245. package/validation/validateTimeRange.d.ts +9 -1
  246. package/validation/validateTimeRange.js +8 -0
  247. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -53
  248. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -54
  249. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -54
  250. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +0 -21
  251. package/internals/hooks/useMultiInputRangeField/shared.d.ts +0 -1
  252. package/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  253. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +0 -3
  254. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
  255. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +0 -3
  256. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
  257. package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +0 -11
  258. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +0 -3
  259. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
  260. package/internals/models/timeRange.d.ts +0 -6
  261. package/internals/models/timeRange.js +0 -1
  262. package/models/dateRange.d.ts +0 -7
  263. package/models/dateRange.js +0 -1
  264. package/models/multiInputRangeFieldClasses.d.ts +0 -7
  265. package/models/multiInputRangeFieldClasses.js +0 -1
  266. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
  267. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
  268. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
  269. package/modern/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  270. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -113
  271. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -113
  272. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
  273. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -113
  274. package/modern/internals/models/timeRange.js +0 -1
  275. package/modern/models/dateRange.js +0 -1
  276. package/modern/models/multiInputRangeFieldClasses.js +0 -1
  277. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -5
  278. package/node/internals/hooks/useMultiInputRangeField/shared.js +0 -16
  279. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -121
  280. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -121
  281. package/node/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -5
  282. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -121
  283. package/node/internals/models/timeRange.js +0 -5
  284. package/node/models/dateRange.js +0 -5
  285. package/node/models/multiInputRangeFieldClasses.js +0 -5
  286. /package/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  287. /package/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  288. /package/{MultiInputTimeRangeField/MultiInputTimeRangeField.types.js → modern/internals/models/managers.js} +0 -0
  289. /package/{internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js → modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  290. /package/node/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  291. /package/node/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
@@ -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
@@ -8,15 +8,14 @@ import useForkRef from '@mui/utils/useForkRef';
8
8
  import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
9
9
  import { onSpaceOrEnter } from '@mui/x-date-pickers/internals';
10
10
  const useMultiInputFieldSlotProps = ({
11
+ contextValue,
11
12
  variant,
12
- open,
13
- actions,
14
13
  readOnly,
15
14
  labelId,
16
15
  disableOpenPicker,
17
16
  onBlur,
18
17
  rangePosition,
19
- onRangePositionChange,
18
+ setRangePosition,
20
19
  localeText: inLocaleText,
21
20
  pickerSlotProps,
22
21
  pickerSlots,
@@ -24,7 +23,6 @@ const useMultiInputFieldSlotProps = ({
24
23
  anchorRef,
25
24
  currentView,
26
25
  initialView,
27
- onViewChange,
28
26
  startFieldRef,
29
27
  endFieldRef
30
28
  }) => {
@@ -33,7 +31,7 @@ const useMultiInputFieldSlotProps = ({
33
31
  const handleEndFieldRef = useForkRef(fieldProps.unstableEndFieldRef, endFieldRef);
34
32
  const previousRangePosition = React.useRef(rangePosition);
35
33
  React.useEffect(() => {
36
- if (!open || variant === 'mobile') {
34
+ if (!contextValue.open || variant === 'mobile') {
37
35
  return;
38
36
  }
39
37
  const currentFieldRef = rangePosition === 'start' ? startFieldRef : endFieldRef;
@@ -49,34 +47,36 @@ const useMultiInputFieldSlotProps = ({
49
47
  // use the current view or `0` when the range position has just been swapped
50
48
  previousRangePosition.current === rangePosition ? currentView : 0);
51
49
  previousRangePosition.current = rangePosition;
52
- }, [rangePosition, open, currentView, startFieldRef, endFieldRef, variant]);
50
+ }, [rangePosition, contextValue.open, currentView, startFieldRef, endFieldRef, variant]);
53
51
  const openRangeStartSelection = event => {
54
52
  event.stopPropagation();
55
- onRangePositionChange('start');
53
+ setRangePosition('start');
56
54
  if (!readOnly && !disableOpenPicker) {
57
- actions.onOpen(event);
55
+ event.preventDefault();
56
+ contextValue.setOpen(true);
58
57
  }
59
58
  };
60
59
  const openRangeEndSelection = event => {
61
60
  event.stopPropagation();
62
- onRangePositionChange('end');
61
+ setRangePosition('end');
63
62
  if (!readOnly && !disableOpenPicker) {
64
- actions.onOpen(event);
63
+ event.preventDefault();
64
+ contextValue.setOpen(true);
65
65
  }
66
66
  };
67
67
  const handleFocusStart = () => {
68
- if (open) {
69
- onRangePositionChange('start');
68
+ if (contextValue.open) {
69
+ setRangePosition('start');
70
70
  if (previousRangePosition.current !== 'start' && initialView) {
71
- onViewChange?.(initialView);
71
+ contextValue.setView?.(initialView);
72
72
  }
73
73
  }
74
74
  };
75
75
  const handleFocusEnd = () => {
76
- if (open) {
77
- onRangePositionChange('end');
76
+ if (contextValue.open) {
77
+ setRangePosition('end');
78
78
  if (previousRangePosition.current !== 'end' && initialView) {
79
- onViewChange?.(initialView);
79
+ contextValue.setView?.(initialView);
80
80
  }
81
81
  }
82
82
  };
@@ -95,8 +95,8 @@ const useMultiInputFieldSlotProps = ({
95
95
  label: inLocaleText?.start ?? translations.start,
96
96
  onKeyDown: onSpaceOrEnter(openRangeStartSelection),
97
97
  onFocus: handleFocusStart,
98
- focused: open ? rangePosition === 'start' : undefined
99
- }, !readOnly && !fieldProps.disabled && {
98
+ focused: contextValue.open ? rangePosition === 'start' : undefined
99
+ }, !readOnly && !contextValue.disabled && {
100
100
  onClick: openRangeStartSelection
101
101
  }, variant === 'mobile' && {
102
102
  readOnly: true
@@ -111,8 +111,8 @@ const useMultiInputFieldSlotProps = ({
111
111
  label: inLocaleText?.end ?? translations.end,
112
112
  onKeyDown: onSpaceOrEnter(openRangeEndSelection),
113
113
  onFocus: handleFocusEnd,
114
- focused: open ? rangePosition === 'end' : undefined
115
- }, !readOnly && !fieldProps.disabled && {
114
+ focused: contextValue.open ? rangePosition === 'end' : undefined
115
+ }, !readOnly && !contextValue.disabled && {
116
116
  onClick: openRangeEndSelection
117
117
  }, variant === 'mobile' && {
118
118
  readOnly: true
@@ -143,96 +143,83 @@ const useMultiInputFieldSlotProps = ({
143
143
  slots,
144
144
  slotProps
145
145
  });
146
- return enrichedFieldProps;
146
+ return {
147
+ fieldProps: enrichedFieldProps,
148
+ fieldPrivateContextValue: {}
149
+ };
147
150
  };
148
151
  const useSingleInputFieldSlotProps = ({
152
+ contextValue,
153
+ fieldPrivateContextValue,
149
154
  variant,
150
- open,
151
- actions,
152
155
  readOnly,
153
156
  labelId,
154
157
  disableOpenPicker,
155
- label,
156
158
  onBlur,
157
159
  rangePosition,
158
- onRangePositionChange,
159
- startFieldRef,
160
- endFieldRef,
161
- pickerSlots,
162
- pickerSlotProps,
160
+ setRangePosition,
161
+ singleInputFieldRef,
163
162
  fieldProps,
164
- anchorRef,
165
163
  currentView
166
164
  }) => {
167
- const handleFieldRef = useForkRef(fieldProps.unstableFieldRef, startFieldRef, endFieldRef);
165
+ const handleFieldRef = useForkRef(fieldProps.unstableFieldRef, singleInputFieldRef);
168
166
  React.useEffect(() => {
169
- if (!open || !startFieldRef.current || variant === 'mobile') {
167
+ if (!contextValue.open || !singleInputFieldRef.current || variant === 'mobile') {
170
168
  return;
171
169
  }
172
- if (startFieldRef.current.isFieldFocused()) {
170
+ if (singleInputFieldRef.current.isFieldFocused()) {
173
171
  return;
174
172
  }
175
173
 
176
174
  // bring back focus to the field with the current view section selected
177
175
  if (currentView) {
178
- const sections = startFieldRef.current.getSections().map(section => section.type);
176
+ const sections = singleInputFieldRef.current.getSections().map(section => section.type);
179
177
  const newSelectedSection = rangePosition === 'start' ? sections.indexOf(currentView) : sections.lastIndexOf(currentView);
180
- startFieldRef.current?.focusField(newSelectedSection);
178
+ singleInputFieldRef.current?.focusField(newSelectedSection);
181
179
  }
182
- }, [rangePosition, open, currentView, startFieldRef, variant]);
180
+ }, [rangePosition, contextValue.open, currentView, singleInputFieldRef, variant]);
183
181
  const updateRangePosition = () => {
184
- if (!startFieldRef.current?.isFieldFocused()) {
182
+ if (!singleInputFieldRef.current?.isFieldFocused()) {
185
183
  return;
186
184
  }
187
- const sections = startFieldRef.current.getSections();
188
- const activeSectionIndex = startFieldRef.current?.getActiveSectionIndex();
185
+ const sections = singleInputFieldRef.current.getSections();
186
+ const activeSectionIndex = singleInputFieldRef.current?.getActiveSectionIndex();
189
187
  const domRangePosition = activeSectionIndex == null || activeSectionIndex < sections.length / 2 ? 'start' : 'end';
190
188
  if (domRangePosition != null && domRangePosition !== rangePosition) {
191
- onRangePositionChange(domRangePosition);
189
+ setRangePosition(domRangePosition);
192
190
  }
193
191
  };
194
192
  const handleSelectedSectionsChange = useEventCallback(selectedSection => {
195
193
  setTimeout(updateRangePosition);
196
- fieldProps.onSelectedSectionsChange?.(selectedSection);
194
+ fieldPrivateContextValue.onSelectedSectionsChange?.(selectedSection);
197
195
  });
198
196
  const openPicker = event => {
199
197
  event.stopPropagation();
200
198
  if (!readOnly && !disableOpenPicker) {
201
- actions.onOpen(event);
199
+ event.preventDefault();
200
+ contextValue.setOpen(true);
202
201
  }
203
202
  };
204
- const slots = _extends({}, fieldProps.slots, {
205
- textField: pickerSlots?.textField,
206
- clearButton: pickerSlots?.clearButton,
207
- clearIcon: pickerSlots?.clearIcon
208
- });
209
- const slotProps = _extends({}, fieldProps.slotProps, {
210
- textField: pickerSlotProps?.textField,
211
- clearButton: pickerSlotProps?.clearButton,
212
- clearIcon: pickerSlotProps?.clearIcon
213
- });
214
203
  const enrichedFieldProps = _extends({}, fieldProps, {
215
- slots,
216
- slotProps,
217
- label,
218
204
  unstableFieldRef: handleFieldRef,
219
205
  onKeyDown: onSpaceOrEnter(openPicker, fieldProps.onKeyDown),
220
- onSelectedSectionsChange: handleSelectedSectionsChange,
221
206
  onBlur,
222
- InputProps: _extends({
223
- ref: anchorRef
224
- }, fieldProps?.InputProps),
225
- focused: open ? true : undefined
207
+ focused: contextValue.open ? true : undefined
226
208
  }, labelId != null && {
227
209
  id: labelId
228
210
  }, variant === 'mobile' && {
229
211
  readOnly: true
230
- }, !readOnly && !fieldProps.disabled && {
212
+ }, !readOnly && !contextValue.disabled && {
231
213
  onClick: openPicker
232
214
  });
233
- return enrichedFieldProps;
215
+ return {
216
+ fieldProps: enrichedFieldProps,
217
+ fieldPrivateContextValue: {
218
+ onSelectedSectionsChange: handleSelectedSectionsChange
219
+ }
220
+ };
234
221
  };
235
- export const useEnrichedRangePickerFieldProps = params => {
222
+ export const useEnrichedRangePickerField = params => {
236
223
  /* eslint-disable react-hooks/rules-of-hooks */
237
224
  if (process.env.NODE_ENV !== 'production') {
238
225
  const fieldTypeRef = React.useRef(params.fieldType);
@@ -1,16 +1,18 @@
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 { usePicker, PickersModalDialog, PickerProvider } from '@mui/x-date-pickers/internals';
9
+ import { usePicker, PickersModalDialog, PickerProvider, PickerFieldUIContextProvider } from '@mui/x-date-pickers/internals';
9
10
  import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
10
11
  import useId from '@mui/utils/useId';
11
- import { useEnrichedRangePickerFieldProps } from "../useEnrichedRangePickerFieldProps.js";
12
+ import { useEnrichedRangePickerField } from "../useEnrichedRangePickerField.js";
12
13
  import { getReleaseInfo } from "../../utils/releaseInfo.js";
13
14
  import { useRangePosition } from "../useRangePosition.js";
15
+ import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
14
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
17
  const releaseInfo = getReleaseInfo();
16
18
  export const useMobileRangePicker = _ref => {
@@ -22,107 +24,70 @@ export const useMobileRangePicker = _ref => {
22
24
  const {
23
25
  slots,
24
26
  slotProps: innerSlotProps,
25
- className,
26
- sx,
27
- format,
28
- formatDensity,
29
- enableAccessibleFieldDOMStructure,
30
- selectedSections,
31
- onSelectedSectionsChange,
32
- timezone,
33
27
  label,
34
28
  inputRef,
35
- name,
36
29
  readOnly,
37
- disabled,
38
30
  disableOpenPicker,
39
31
  localeText
40
32
  } = props;
41
33
  const startFieldRef = React.useRef(null);
42
34
  const endFieldRef = React.useRef(null);
35
+ const singleInputFieldRef = React.useRef(null);
43
36
  const fieldType = slots.field.fieldType ?? 'multi-input';
44
- const {
45
- rangePosition,
46
- onRangePositionChange
47
- } = useRangePosition(props, fieldType === 'single-input' ? startFieldRef : undefined);
37
+ const rangePositionResponse = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
48
38
  const labelId = useId();
49
39
  const contextTranslations = usePickerTranslations();
40
+ let fieldRef;
41
+ if (fieldType === 'single-input') {
42
+ fieldRef = singleInputFieldRef;
43
+ } else if (rangePositionResponse.rangePosition === 'start') {
44
+ fieldRef = startFieldRef;
45
+ } else {
46
+ fieldRef = endFieldRef;
47
+ }
50
48
  const {
51
- open,
52
- actions,
53
- layoutProps,
54
49
  providerProps,
55
50
  renderCurrentView,
56
- fieldProps: pickerFieldProps,
57
51
  ownerState
58
52
  } = usePicker(_extends({}, pickerParams, {
59
53
  props,
60
54
  variant: 'mobile',
61
55
  autoFocusView: true,
62
- fieldRef: rangePosition === 'start' ? startFieldRef : endFieldRef,
63
- localeText,
64
- additionalViewProps: {
65
- rangePosition,
66
- onRangePositionChange
67
- }
56
+ fieldRef,
57
+ localeText
68
58
  }));
69
- const Field = slots.field;
70
- const fieldProps = useSlotProps({
71
- elementType: Field,
72
- externalSlotProps: innerSlotProps?.field,
73
- additionalProps: _extends({
74
- // Internal props
75
- readOnly: readOnly ?? true,
76
- disabled,
77
- format,
78
- formatDensity,
79
- enableAccessibleFieldDOMStructure,
80
- selectedSections,
81
- onSelectedSectionsChange,
82
- timezone
83
- }, pickerFieldProps, {
84
- // onChange and value
85
59
 
86
- // Forwarded props
87
- className,
88
- sx
89
- }, fieldType === 'single-input' && !!inputRef && {
90
- inputRef
91
- }, fieldType === 'single-input' && {
92
- name
60
+ // Temporary hack to hide the opening button on the range pickers until we have migrate them to the new opening logic.
61
+ providerProps.contextValue.triggerStatus = 'hidden';
62
+ const Field = slots.field;
63
+ const _useSlotProps = useSlotProps({
64
+ elementType: Field,
65
+ externalSlotProps: innerSlotProps?.field,
66
+ additionalProps: {
67
+ // Internal props
68
+ readOnly: readOnly ?? true
69
+ },
70
+ ownerState
93
71
  }),
94
- ownerState
95
- });
72
+ fieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
96
73
  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
97
- const enrichedFieldProps = useEnrichedRangePickerFieldProps({
74
+ const enrichedFieldResponse = useEnrichedRangePickerField(_extends({
98
75
  variant: 'mobile',
99
76
  fieldType,
100
- open,
101
- actions,
77
+ // These direct access to `providerProps` will go away once the range fields handle the picker opening
78
+ contextValue: providerProps.contextValue,
79
+ fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
102
80
  readOnly,
103
81
  labelId,
104
82
  disableOpenPicker,
105
- label,
106
83
  localeText,
107
- rangePosition,
108
- onRangePositionChange,
109
84
  pickerSlots: slots,
110
85
  pickerSlotProps: innerSlotProps,
111
86
  fieldProps,
112
87
  startFieldRef,
113
- endFieldRef
114
- });
115
- const slotPropsForLayout = _extends({}, innerSlotProps, {
116
- tabs: _extends({}, innerSlotProps?.tabs, {
117
- rangePosition,
118
- onRangePositionChange
119
- }),
120
- toolbar: _extends({}, innerSlotProps?.toolbar, {
121
- titleId: labelId,
122
- rangePosition,
123
- onRangePositionChange
124
- })
125
- });
88
+ endFieldRef,
89
+ singleInputFieldRef
90
+ }, rangePositionResponse));
126
91
  const Layout = slots?.layout ?? PickersLayout;
127
92
  const finalLocaleText = _extends({}, contextTranslations, localeText);
128
93
  let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId;
@@ -141,21 +106,33 @@ export const useMobileRangePicker = _ref => {
141
106
  labelledById = labels.length > 0 ? labels.join(' ') : undefined;
142
107
  }
143
108
  const slotProps = _extends({}, innerSlotProps, {
109
+ toolbar: _extends({}, innerSlotProps?.toolbar, {
110
+ titleId: labelId
111
+ }),
144
112
  mobilePaper: _extends({
145
113
  'aria-labelledby': labelledById
146
114
  }, innerSlotProps?.mobilePaper)
147
115
  });
148
- const renderPicker = () => /*#__PURE__*/_jsxs(PickerProvider, _extends({}, providerProps, {
149
- children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersModalDialog, _extends({}, actions, {
150
- open: open,
116
+ const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
117
+ // This override will go away once the range fields handle the picker opening
118
+ fieldPrivateContextValue: _extends({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
119
+ children: /*#__PURE__*/_jsx(PickerFieldUIContextProvider, {
151
120
  slots: slots,
152
121
  slotProps: slotProps,
153
- children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {
154
- slots: slots,
155
- slotProps: slotPropsForLayout,
156
- children: renderCurrentView()
157
- }))
158
- }))]
122
+ inputRef: inputRef,
123
+ children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, {
124
+ value: rangePositionResponse,
125
+ children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldResponse.fieldProps)), /*#__PURE__*/_jsx(PickersModalDialog, {
126
+ slots: slots,
127
+ slotProps: slotProps,
128
+ children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
129
+ slots: slots,
130
+ slotProps: slotProps,
131
+ children: renderCurrentView()
132
+ }))
133
+ })]
134
+ })
135
+ })
159
136
  }));
160
137
  return {
161
138
  renderPicker
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { PickerRangePositionContext } from "../../hooks/usePickerRangePositionContext.js";
3
+
4
+ /**
5
+ * Returns information about the range position of the picker that wraps the current component.
6
+ * If no picker wraps the current component, returns `null`.
7
+ */
8
+ export function useNullablePickerRangePositionContext() {
9
+ return React.useContext(PickerRangePositionContext);
10
+ }