@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
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.10
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
  }
@@ -3,12 +3,12 @@ import Stack, { StackProps } from '@mui/material/Stack';
3
3
  import Typography, { TypographyProps } from '@mui/material/Typography';
4
4
  import { SlotComponentProps } from '@mui/utils';
5
5
  import { SlotComponentPropsFromProps } from '@mui/x-internals/types';
6
- import { FieldRef, PickerOwnerState } from '@mui/x-date-pickers/models';
6
+ import { FieldSelectedSections, FieldRef, PickerOwnerState, FieldOwnerState } from '@mui/x-date-pickers/models';
7
7
  import { UseClearableFieldSlots, UseClearableFieldSlotProps } from '@mui/x-date-pickers/hooks';
8
8
  import { PickersInputLocaleText } from '@mui/x-date-pickers/locales';
9
- import { UsePickerResponse, PickerVariant, DateOrTimeViewWithMeridiem, BaseSingleInputFieldProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
9
+ import { PickerVariant, DateOrTimeViewWithMeridiem, BaseSingleInputFieldProps, PickerRangeValue, PickerValue, PickerContextValue, PickerFieldPrivateContextValue } from '@mui/x-date-pickers/internals';
10
10
  import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
11
- import { RangeFieldSection, RangePosition, FieldType, UseDateRangeFieldProps, PickerRangeFieldSlotProps } from '../../models';
11
+ import { RangePosition, FieldType, PickerRangeFieldSlotProps } from '../../models';
12
12
  import { UseRangePositionResponse } from './useRangePosition';
13
13
  import { BaseMultiInputFieldProps } from '../models/fields';
14
14
  export interface RangePickerFieldSlots extends UseClearableFieldSlots {
@@ -31,31 +31,40 @@ export interface RangePickerFieldSlots extends UseClearableFieldSlots {
31
31
  textField?: React.ElementType;
32
32
  }
33
33
  export interface RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends UseClearableFieldSlotProps {
34
- field?: SlotComponentPropsFromProps<PickerRangeFieldSlotProps<PickerRangeValue, RangeFieldSection, TEnableAccessibleFieldDOMStructure>, {}, PickerOwnerState>;
35
- fieldRoot?: SlotComponentProps<typeof Stack, {}, Record<string, any>>;
36
- fieldSeparator?: SlotComponentProps<typeof Typography, {}, Record<string, any>>;
37
- textField?: SlotComponentProps<typeof PickersTextField, {}, UseDateRangeFieldProps<TEnableAccessibleFieldDOMStructure> & {
34
+ field?: SlotComponentPropsFromProps<PickerRangeFieldSlotProps<TEnableAccessibleFieldDOMStructure>, {}, PickerOwnerState>;
35
+ fieldRoot?: SlotComponentProps<typeof Stack, {}, FieldOwnerState>;
36
+ fieldSeparator?: SlotComponentProps<typeof Typography, {}, FieldOwnerState>;
37
+ textField?: SlotComponentProps<typeof PickersTextField, {}, FieldOwnerState & {
38
38
  position?: RangePosition;
39
39
  }>;
40
40
  }
41
- export type RangePickerPropsForFieldSlot<TIsSingleInput extends boolean, TEnableAccessibleFieldDOMStructure extends boolean, TError> = (TIsSingleInput extends true ? BaseSingleInputFieldProps<PickerRangeValue, RangeFieldSection, TEnableAccessibleFieldDOMStructure, TError> : never) | (TIsSingleInput extends false ? BaseMultiInputFieldProps<PickerRangeValue, RangeFieldSection, TEnableAccessibleFieldDOMStructure, TError> : never);
42
- export interface UseEnrichedRangePickerFieldPropsParams<TIsSingleInput extends boolean, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError> extends Pick<UsePickerResponse<PickerRangeValue, TView, RangeFieldSection, any>, 'open' | 'actions'>, UseRangePositionResponse {
41
+ export type RangePickerPropsForFieldSlot<TIsSingleInput extends boolean> = (TIsSingleInput extends true ? BaseSingleInputFieldProps<PickerRangeValue> : never) | (TIsSingleInput extends false ? BaseMultiInputFieldProps : never);
42
+ export interface UseEnrichedRangePickerFieldPropsParams<TIsSingleInput extends boolean, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError> extends UseRangePositionResponse {
43
+ contextValue: PickerContextValue<PickerRangeValue, TView, TError>;
44
+ fieldPrivateContextValue: PickerFieldPrivateContextValue;
43
45
  variant: PickerVariant;
44
46
  fieldType: FieldType;
45
47
  readOnly?: boolean;
46
48
  labelId?: string;
47
49
  disableOpenPicker?: boolean;
48
50
  onBlur?: () => void;
49
- label?: React.ReactNode;
50
51
  localeText: PickersInputLocaleText | undefined;
51
52
  pickerSlotProps: RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure> | undefined;
52
53
  pickerSlots: RangePickerFieldSlots | undefined;
53
- fieldProps: RangePickerPropsForFieldSlot<TIsSingleInput, TEnableAccessibleFieldDOMStructure, TError>;
54
- anchorRef?: React.Ref<HTMLDivElement>;
54
+ fieldProps: RangePickerPropsForFieldSlot<TIsSingleInput>;
55
+ anchorRef?: React.Ref<HTMLElement>;
55
56
  currentView?: TView | null;
56
57
  initialView?: TView;
57
- onViewChange?: (view: TView) => void;
58
- startFieldRef: React.RefObject<FieldRef<RangeFieldSection>>;
59
- endFieldRef: React.RefObject<FieldRef<RangeFieldSection>>;
58
+ startFieldRef: React.RefObject<FieldRef<PickerValue> | null>;
59
+ endFieldRef: React.RefObject<FieldRef<PickerValue> | null>;
60
+ singleInputFieldRef: React.RefObject<FieldRef<PickerRangeValue> | null>;
60
61
  }
61
- export declare const useEnrichedRangePickerFieldProps: <TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError>(params: UseEnrichedRangePickerFieldPropsParams<boolean, TView, TEnableAccessibleFieldDOMStructure, TError>) => BaseMultiInputFieldProps<PickerRangeValue, RangeFieldSection, TEnableAccessibleFieldDOMStructure, TError> | BaseSingleInputFieldProps<PickerRangeValue, RangeFieldSection, TEnableAccessibleFieldDOMStructure, TError>;
62
+ export declare const useEnrichedRangePickerField: <TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError>(params: UseEnrichedRangePickerFieldPropsParams<boolean, TView, TEnableAccessibleFieldDOMStructure, TError>) => {
63
+ fieldProps: BaseMultiInputFieldProps;
64
+ fieldPrivateContextValue: {};
65
+ } | {
66
+ fieldProps: BaseSingleInputFieldProps<PickerRangeValue>;
67
+ fieldPrivateContextValue: {
68
+ onSelectedSectionsChange: (selectedSection: FieldSelectedSections) => void;
69
+ };
70
+ };
@@ -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);