@mui/x-date-pickers-pro 7.0.0-beta.2 → 7.0.0-beta.5

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 (278) hide show
  1. package/CHANGELOG.md +429 -30
  2. package/DateRangeCalendar/DateRangeCalendar.js +3 -1
  3. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +3 -0
  4. package/DateRangePicker/DateRangePicker.d.ts +1 -1
  5. package/DateRangePicker/DateRangePicker.js +9 -9
  6. package/DateRangePicker/DateRangePicker.types.d.ts +3 -3
  7. package/DateRangePicker/DateRangePickerToolbar.d.ts +5 -2
  8. package/DateRangePicker/DateRangePickerToolbar.js +22 -2
  9. package/DateTimeRangePicker/DateTimeRangePicker.d.ts +1 -1
  10. package/DateTimeRangePicker/DateTimeRangePicker.js +11 -12
  11. package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +3 -3
  12. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +7 -1
  13. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +3 -0
  14. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +45 -9
  15. package/DateTimeRangePicker/shared.js +8 -3
  16. package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +1 -1
  17. package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
  18. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +3 -3
  19. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.d.ts +1 -1
  20. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
  21. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +3 -3
  22. package/MobileDateRangePicker/MobileDateRangePicker.d.ts +1 -1
  23. package/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
  24. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +3 -3
  25. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.d.ts +1 -1
  26. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +11 -12
  27. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +3 -3
  28. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +1 -1
  29. package/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
  30. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +11 -14
  31. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +1 -1
  32. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
  33. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +12 -16
  34. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +1 -1
  35. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
  36. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +12 -16
  37. package/SingleInputDateRangeField/SingleInputDateRangeField.d.ts +2 -2
  38. package/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
  39. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +11 -14
  40. package/SingleInputDateRangeField/index.d.ts +1 -1
  41. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +2 -3
  42. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -15
  43. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.d.ts +2 -2
  44. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +12 -10
  45. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +12 -15
  46. package/SingleInputDateTimeRangeField/index.d.ts +1 -1
  47. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +2 -3
  48. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -20
  49. package/SingleInputTimeRangeField/SingleInputTimeRangeField.d.ts +2 -2
  50. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
  51. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +12 -15
  52. package/SingleInputTimeRangeField/index.d.ts +1 -1
  53. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +2 -3
  54. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -14
  55. package/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
  56. package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +1 -1
  57. package/index.d.ts +0 -1
  58. package/index.js +2 -1
  59. package/internals/hooks/models/useRangePicker.d.ts +5 -5
  60. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.d.ts +1 -1
  61. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
  62. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +5 -5
  63. package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +15 -15
  64. package/internals/hooks/useEnrichedRangePickerFieldProps.js +37 -40
  65. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.d.ts +1 -1
  66. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +18 -9
  67. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +5 -5
  68. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +21 -0
  69. package/internals/hooks/useMultiInputFieldSelectedSections.js +43 -0
  70. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -1
  71. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +17 -12
  72. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +2 -3
  73. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -31
  74. package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +4 -4
  75. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +2 -3
  76. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -25
  77. package/internals/hooks/useRangePosition.d.ts +2 -4
  78. package/internals/hooks/useRangePosition.js +3 -6
  79. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
  80. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +1 -2
  81. package/internals/models/dateRange.d.ts +3 -15
  82. package/internals/models/dateTimeRange.d.ts +4 -6
  83. package/internals/models/index.d.ts +0 -1
  84. package/internals/models/index.js +0 -1
  85. package/internals/models/timeRange.d.ts +3 -6
  86. package/internals/utils/date-fields-utils.d.ts +1 -5
  87. package/internals/utils/releaseInfo.js +1 -1
  88. package/internals/utils/valueManagers.d.ts +1 -2
  89. package/internals/utils/valueManagers.js +11 -6
  90. package/models/fields.d.ts +69 -0
  91. package/models/index.d.ts +1 -0
  92. package/models/index.js +1 -0
  93. package/modern/DateRangeCalendar/DateRangeCalendar.js +3 -1
  94. package/modern/DateRangePicker/DateRangePicker.js +9 -9
  95. package/modern/DateRangePicker/DateRangePickerToolbar.js +22 -2
  96. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +11 -12
  97. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +7 -1
  98. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +45 -9
  99. package/modern/DateTimeRangePicker/shared.js +7 -2
  100. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
  101. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
  102. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
  103. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +11 -12
  104. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
  105. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
  106. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
  107. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
  108. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -14
  109. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +12 -10
  110. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -19
  111. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
  112. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -13
  113. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
  114. package/modern/index.js +2 -1
  115. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
  116. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +34 -37
  117. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +18 -9
  118. package/modern/internals/hooks/useMultiInputFieldSelectedSections.js +40 -0
  119. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +17 -12
  120. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -30
  121. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -24
  122. package/modern/internals/hooks/useRangePosition.js +3 -6
  123. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
  124. package/modern/internals/models/index.js +0 -1
  125. package/modern/internals/utils/releaseInfo.js +1 -1
  126. package/modern/internals/utils/valueManagers.js +11 -6
  127. package/modern/models/index.js +1 -0
  128. package/node/DateRangeCalendar/DateRangeCalendar.js +3 -1
  129. package/node/DateRangePicker/DateRangePicker.js +9 -9
  130. package/node/DateRangePicker/DateRangePickerToolbar.js +22 -2
  131. package/node/DateTimeRangePicker/DateTimeRangePicker.js +11 -12
  132. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +7 -1
  133. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +45 -9
  134. package/node/DateTimeRangePicker/shared.js +7 -2
  135. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
  136. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
  137. package/node/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
  138. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +13 -14
  139. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
  140. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
  141. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
  142. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
  143. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -16
  144. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +15 -13
  145. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -21
  146. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
  147. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -15
  148. package/node/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
  149. package/node/index.js +1 -1
  150. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
  151. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +33 -36
  152. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +18 -9
  153. package/node/internals/hooks/useMultiInputFieldSelectedSections.js +50 -0
  154. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +16 -11
  155. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -31
  156. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -25
  157. package/node/internals/hooks/useRangePosition.js +3 -8
  158. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
  159. package/node/internals/models/index.js +0 -11
  160. package/node/internals/utils/releaseInfo.js +1 -1
  161. package/node/internals/utils/valueManagers.js +10 -5
  162. package/node/models/index.js +11 -0
  163. package/package.json +5 -5
  164. package/themeAugmentation/props.d.ts +15 -14
  165. package/internals/models/fields.d.ts +0 -49
  166. package/legacy/AdapterDateFns/index.js +0 -1
  167. package/legacy/AdapterDateFnsJalali/index.js +0 -1
  168. package/legacy/AdapterDateFnsV3/index.js +0 -1
  169. package/legacy/AdapterDayjs/index.js +0 -1
  170. package/legacy/AdapterLuxon/index.js +0 -1
  171. package/legacy/AdapterMoment/index.js +0 -1
  172. package/legacy/AdapterMomentHijri/index.js +0 -1
  173. package/legacy/AdapterMomentJalaali/index.js +0 -1
  174. package/legacy/DateRangeCalendar/DateRangeCalendar.js +0 -764
  175. package/legacy/DateRangeCalendar/DateRangeCalendar.types.js +0 -1
  176. package/legacy/DateRangeCalendar/dateRangeCalendarClasses.js +0 -5
  177. package/legacy/DateRangeCalendar/index.js +0 -2
  178. package/legacy/DateRangeCalendar/useDragRange.js +0 -258
  179. package/legacy/DateRangePicker/DateRangePicker.js +0 -334
  180. package/legacy/DateRangePicker/DateRangePicker.types.js +0 -1
  181. package/legacy/DateRangePicker/DateRangePickerToolbar.js +0 -127
  182. package/legacy/DateRangePicker/dateRangePickerToolbarClasses.js +0 -5
  183. package/legacy/DateRangePicker/index.js +0 -3
  184. package/legacy/DateRangePicker/shared.js +0 -33
  185. package/legacy/DateRangePickerDay/DateRangePickerDay.js +0 -366
  186. package/legacy/DateRangePickerDay/dateRangePickerDayClasses.js +0 -5
  187. package/legacy/DateRangePickerDay/index.js +0 -2
  188. package/legacy/DateTimeRangePicker/DateTimeRangePicker.js +0 -413
  189. package/legacy/DateTimeRangePicker/DateTimeRangePicker.types.js +0 -1
  190. package/legacy/DateTimeRangePicker/DateTimeRangePickerTabs.js +0 -191
  191. package/legacy/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +0 -57
  192. package/legacy/DateTimeRangePicker/DateTimeRangePickerToolbar.js +0 -184
  193. package/legacy/DateTimeRangePicker/dateTimeRangePickerTabsClasses.js +0 -6
  194. package/legacy/DateTimeRangePicker/dateTimeRangePickerToolbarClasses.js +0 -5
  195. package/legacy/DateTimeRangePicker/index.js +0 -5
  196. package/legacy/DateTimeRangePicker/shared.js +0 -54
  197. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -343
  198. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.types.js +0 -1
  199. package/legacy/DesktopDateRangePicker/index.js +0 -1
  200. package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +0 -491
  201. package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.js +0 -1
  202. package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -48
  203. package/legacy/DesktopDateTimeRangePicker/index.js +0 -1
  204. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +0 -339
  205. package/legacy/MobileDateRangePicker/MobileDateRangePicker.types.js +0 -1
  206. package/legacy/MobileDateRangePicker/index.js +0 -1
  207. package/legacy/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +0 -484
  208. package/legacy/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.js +0 -1
  209. package/legacy/MobileDateTimeRangePicker/index.js +0 -1
  210. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +0 -316
  211. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
  212. package/legacy/MultiInputDateRangeField/index.js +0 -2
  213. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +0 -357
  214. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
  215. package/legacy/MultiInputDateTimeRangeField/index.js +0 -2
  216. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +0 -330
  217. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
  218. package/legacy/MultiInputTimeRangeField/index.js +0 -2
  219. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +0 -307
  220. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.types.js +0 -1
  221. package/legacy/SingleInputDateRangeField/index.js +0 -2
  222. package/legacy/SingleInputDateRangeField/useSingleInputDateRangeField.js +0 -30
  223. package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +0 -348
  224. package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.js +0 -1
  225. package/legacy/SingleInputDateTimeRangeField/index.js +0 -2
  226. package/legacy/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +0 -35
  227. package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.js +0 -321
  228. package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.types.js +0 -1
  229. package/legacy/SingleInputTimeRangeField/index.js +0 -2
  230. package/legacy/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +0 -29
  231. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +0 -276
  232. package/legacy/StaticDateRangePicker/StaticDateRangePicker.types.js +0 -1
  233. package/legacy/StaticDateRangePicker/index.js +0 -1
  234. package/legacy/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -87
  235. package/legacy/dateRangeViewRenderers/index.js +0 -1
  236. package/legacy/index.js +0 -52
  237. package/legacy/internals/constants/dimensions.js +0 -5
  238. package/legacy/internals/hooks/models/index.js +0 -1
  239. package/legacy/internals/hooks/models/useRangePicker.js +0 -1
  240. package/legacy/internals/hooks/useDesktopRangePicker/index.js +0 -1
  241. package/legacy/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +0 -154
  242. package/legacy/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.js +0 -1
  243. package/legacy/internals/hooks/useEnrichedRangePickerFieldProps.js +0 -258
  244. package/legacy/internals/hooks/useMobileRangePicker/index.js +0 -1
  245. package/legacy/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +0 -144
  246. package/legacy/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.js +0 -1
  247. package/legacy/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  248. package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -102
  249. package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -115
  250. package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
  251. package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -109
  252. package/legacy/internals/hooks/useRangePosition.js +0 -39
  253. package/legacy/internals/hooks/useStaticRangePicker/index.js +0 -1
  254. package/legacy/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +0 -76
  255. package/legacy/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.js +0 -1
  256. package/legacy/internals/models/dateRange.js +0 -1
  257. package/legacy/internals/models/dateTimeRange.js +0 -1
  258. package/legacy/internals/models/index.js +0 -5
  259. package/legacy/internals/models/rangePickerProps.js +0 -1
  260. package/legacy/internals/models/timeRange.js +0 -1
  261. package/legacy/internals/utils/date-fields-utils.js +0 -26
  262. package/legacy/internals/utils/date-range-manager.js +0 -65
  263. package/legacy/internals/utils/date-utils.js +0 -12
  264. package/legacy/internals/utils/releaseInfo.js +0 -13
  265. package/legacy/internals/utils/validation/validateDateRange.js +0 -45
  266. package/legacy/internals/utils/validation/validateDateTimeRange.js +0 -45
  267. package/legacy/internals/utils/validation/validateTimeRange.js +0 -32
  268. package/legacy/internals/utils/valueManagers.js +0 -135
  269. package/legacy/locales/index.js +0 -1
  270. package/legacy/models/index.js +0 -3
  271. package/legacy/models/multiInputRangeFieldClasses.js +0 -1
  272. package/legacy/models/range.js +0 -1
  273. package/legacy/models/validation.js +0 -1
  274. package/legacy/themeAugmentation/index.js +0 -4
  275. package/modern/internals/models/fields.js +0 -1
  276. /package/{internals/models → models}/fields.js +0 -0
  277. /package/{legacy/internals → modern}/models/fields.js +0 -0
  278. /package/node/{internals/models → models}/fields.js +0 -0
@@ -5,7 +5,7 @@ import * as React from 'react';
5
5
  import { resolveComponentProps } from '@mui/base/utils';
6
6
  import useEventCallback from '@mui/utils/useEventCallback';
7
7
  import useForkRef from '@mui/utils/useForkRef';
8
- import { onSpaceOrEnter, useLocaleText, getActiveElement } from '@mui/x-date-pickers/internals';
8
+ import { onSpaceOrEnter, useLocaleText } from '@mui/x-date-pickers/internals';
9
9
  const useMultiInputFieldSlotProps = ({
10
10
  wrapperVariant,
11
11
  open,
@@ -23,34 +23,32 @@ const useMultiInputFieldSlotProps = ({
23
23
  anchorRef,
24
24
  currentView,
25
25
  initialView,
26
- onViewChange
26
+ onViewChange,
27
+ startFieldRef,
28
+ endFieldRef
27
29
  }) => {
28
30
  const localeText = useLocaleText();
29
- const startRef = React.useRef(null);
30
- const endRef = React.useRef(null);
31
- const startFieldRef = React.useRef(null);
32
- const endFieldRef = React.useRef(null);
33
31
  const handleStartFieldRef = useForkRef(fieldProps.unstableStartFieldRef, startFieldRef);
34
- const handleEndFieldRef = useForkRef(fieldProps.unstableFieldRef, endFieldRef);
32
+ const handleEndFieldRef = useForkRef(fieldProps.unstableEndFieldRef, endFieldRef);
35
33
  const previousRangePosition = React.useRef(rangePosition);
36
34
  React.useEffect(() => {
37
35
  if (!open) {
38
36
  return;
39
37
  }
40
- const currentRef = rangePosition === 'start' ? startRef : endRef;
41
- currentRef.current?.focus();
42
38
  const currentFieldRef = rangePosition === 'start' ? startFieldRef : endFieldRef;
39
+ currentFieldRef.current?.focusField();
43
40
  if (!currentFieldRef.current || !currentView) {
44
41
  // could happen when the user is switching between the inputs
45
42
  previousRangePosition.current = rangePosition;
46
43
  return;
47
44
  }
45
+
48
46
  // bring back focus to the field
49
47
  currentFieldRef.current.setSelectedSections(
50
48
  // use the current view or `0` when the range position has just been swapped
51
49
  previousRangePosition.current === rangePosition ? currentView : 0);
52
50
  previousRangePosition.current = rangePosition;
53
- }, [rangePosition, open, currentView]);
51
+ }, [rangePosition, open, currentView, startFieldRef, endFieldRef]);
54
52
  const openRangeStartSelection = event => {
55
53
  event.stopPropagation();
56
54
  onRangePositionChange('start');
@@ -89,11 +87,10 @@ const useMultiInputFieldSlotProps = ({
89
87
  const slotProps = _extends({}, fieldProps.slotProps, {
90
88
  textField: ownerState => {
91
89
  const resolvedComponentProps = resolveComponentProps(pickerSlotProps?.textField, ownerState);
92
- let inputProps;
90
+ let textFieldProps;
93
91
  let InputProps;
94
92
  if (ownerState.position === 'start') {
95
- inputProps = _extends({
96
- inputRef: startRef,
93
+ textFieldProps = _extends({
97
94
  label: inLocaleText?.start ?? localeText.start,
98
95
  onKeyDown: onSpaceOrEnter(openRangeStartSelection),
99
96
  onFocus: handleFocusStart,
@@ -109,8 +106,7 @@ const useMultiInputFieldSlotProps = ({
109
106
  });
110
107
  }
111
108
  } else {
112
- inputProps = _extends({
113
- inputRef: endRef,
109
+ textFieldProps = _extends({
114
110
  label: inLocaleText?.end ?? localeText.end,
115
111
  onKeyDown: onSpaceOrEnter(openRangeEndSelection),
116
112
  onFocus: handleFocusEnd,
@@ -124,7 +120,7 @@ const useMultiInputFieldSlotProps = ({
124
120
  }
125
121
  return _extends({}, labelId != null && {
126
122
  id: `${labelId}-${ownerState.position}`
127
- }, inputProps, resolveComponentProps(pickerSlotProps?.textField, ownerState), {
123
+ }, textFieldProps, resolveComponentProps(pickerSlotProps?.textField, ownerState), {
128
124
  InputProps
129
125
  });
130
126
  },
@@ -138,12 +134,13 @@ const useMultiInputFieldSlotProps = ({
138
134
  });
139
135
 
140
136
  /* TODO: remove this when a clearable behavior for multiple input range fields is implemented */
141
- const restFieldProps = _objectWithoutPropertiesLoose(fieldProps, _excluded);
137
+ const _ref = fieldProps,
138
+ restFieldProps = _objectWithoutPropertiesLoose(_ref, _excluded);
142
139
  const enrichedFieldProps = _extends({}, restFieldProps, {
143
- slots,
144
- slotProps,
145
140
  unstableStartFieldRef: handleStartFieldRef,
146
- unstableEndFieldRef: handleEndFieldRef
141
+ unstableEndFieldRef: handleEndFieldRef,
142
+ slots,
143
+ slotProps
147
144
  });
148
145
  return enrichedFieldProps;
149
146
  };
@@ -152,49 +149,50 @@ const useSingleInputFieldSlotProps = ({
152
149
  open,
153
150
  actions,
154
151
  readOnly,
155
- inputRef: inInputRef,
156
152
  labelId,
157
153
  disableOpenPicker,
158
154
  label,
159
155
  onBlur,
160
156
  rangePosition,
161
157
  onRangePositionChange,
162
- singleInputFieldRef,
158
+ startFieldRef,
159
+ endFieldRef,
163
160
  pickerSlots,
164
161
  pickerSlotProps,
165
162
  fieldProps,
166
163
  anchorRef,
167
164
  currentView
168
165
  }) => {
169
- const inputRef = React.useRef(null);
170
- const handleInputRef = useForkRef(inInputRef, inputRef);
171
- const handleFieldRef = useForkRef(fieldProps.unstableFieldRef, singleInputFieldRef);
166
+ const handleFieldRef = useForkRef(fieldProps.unstableFieldRef, startFieldRef, endFieldRef);
172
167
  React.useEffect(() => {
173
- if (!open) {
168
+ if (!open || !startFieldRef.current) {
174
169
  return;
175
170
  }
176
- inputRef.current?.focus();
177
- if (!singleInputFieldRef.current || !currentView) {
171
+ if (startFieldRef.current.isFieldFocused()) {
178
172
  return;
179
173
  }
180
- const sections = singleInputFieldRef.current.getSections().map(section => section.type);
174
+
181
175
  // bring back focus to the field with the current view section selected
182
- singleInputFieldRef.current.setSelectedSections(rangePosition === 'start' ? sections.indexOf(currentView) : sections.lastIndexOf(currentView));
183
- }, [rangePosition, open, currentView, singleInputFieldRef]);
176
+ if (currentView) {
177
+ const sections = startFieldRef.current.getSections().map(section => section.type);
178
+ const newSelectedSection = rangePosition === 'start' ? sections.indexOf(currentView) : sections.lastIndexOf(currentView);
179
+ startFieldRef.current?.focusField(newSelectedSection);
180
+ }
181
+ }, [rangePosition, open, currentView, startFieldRef]);
184
182
  const updateRangePosition = () => {
185
- if (!singleInputFieldRef.current || inputRef.current !== getActiveElement(document)) {
183
+ if (!startFieldRef.current?.isFieldFocused()) {
186
184
  return;
187
185
  }
188
- const sections = singleInputFieldRef.current.getSections();
189
- const activeSectionIndex = singleInputFieldRef.current?.getActiveSectionIndex();
186
+ const sections = startFieldRef.current.getSections();
187
+ const activeSectionIndex = startFieldRef.current?.getActiveSectionIndex();
190
188
  const domRangePosition = activeSectionIndex == null || activeSectionIndex < sections.length / 2 ? 'start' : 'end';
191
189
  if (domRangePosition != null && domRangePosition !== rangePosition) {
192
190
  onRangePositionChange(domRangePosition);
193
191
  }
194
192
  };
195
- const handleSelectedSectionsChange = useEventCallback(selectedSections => {
193
+ const handleSelectedSectionsChange = useEventCallback(selectedSection => {
196
194
  setTimeout(updateRangePosition);
197
- fieldProps.onSelectedSectionsChange?.(selectedSections);
195
+ fieldProps.onSelectedSectionsChange?.(selectedSection);
198
196
  });
199
197
  const openPicker = event => {
200
198
  event.stopPropagation();
@@ -217,7 +215,6 @@ const useSingleInputFieldSlotProps = ({
217
215
  slotProps,
218
216
  label,
219
217
  unstableFieldRef: handleFieldRef,
220
- inputRef: handleInputRef,
221
218
  onKeyDown: onSpaceOrEnter(openPicker, fieldProps.onKeyDown),
222
219
  onSelectedSectionsChange: handleSelectedSectionsChange,
223
220
  onBlur,
@@ -27,6 +27,9 @@ export const useMobileRangePicker = _ref => {
27
27
  sx,
28
28
  format,
29
29
  formatDensity,
30
+ enableAccessibleFieldDOMStructure,
31
+ selectedSections,
32
+ onSelectedSectionsChange,
30
33
  timezone,
31
34
  label,
32
35
  inputRef,
@@ -36,11 +39,13 @@ export const useMobileRangePicker = _ref => {
36
39
  disableOpenPicker,
37
40
  localeText
38
41
  } = props;
42
+ const startFieldRef = React.useRef(null);
43
+ const endFieldRef = React.useRef(null);
44
+ const fieldType = slots.field.fieldType ?? 'multi-input';
39
45
  const {
40
46
  rangePosition,
41
- onRangePositionChange,
42
- singleInputFieldRef
43
- } = useRangePosition(props);
47
+ onRangePositionChange
48
+ } = useRangePosition(props, fieldType === 'single-input' ? startFieldRef : undefined);
44
49
  const labelId = useId();
45
50
  const contextLocaleText = useLocaleText();
46
51
  const {
@@ -53,13 +58,13 @@ export const useMobileRangePicker = _ref => {
53
58
  props,
54
59
  wrapperVariant: 'mobile',
55
60
  autoFocusView: true,
61
+ fieldRef: rangePosition === 'start' ? startFieldRef : endFieldRef,
56
62
  additionalViewProps: {
57
63
  rangePosition,
58
64
  onRangePositionChange
59
65
  }
60
66
  }));
61
67
  const Field = slots.field;
62
- const fieldType = Field.fieldType ?? 'multi-input';
63
68
  const fieldProps = useSlotProps({
64
69
  elementType: Field,
65
70
  externalSlotProps: innerSlotProps?.field,
@@ -70,11 +75,14 @@ export const useMobileRangePicker = _ref => {
70
75
  sx,
71
76
  format,
72
77
  formatDensity,
78
+ enableAccessibleFieldDOMStructure,
79
+ selectedSections,
80
+ onSelectedSectionsChange,
73
81
  timezone
74
- }, fieldType === 'single-input' && {
82
+ }, inputRef ? {
75
83
  inputRef,
76
84
  name
77
- }),
85
+ } : {}),
78
86
  ownerState: props
79
87
  });
80
88
  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
@@ -90,10 +98,11 @@ export const useMobileRangePicker = _ref => {
90
98
  localeText,
91
99
  rangePosition,
92
100
  onRangePositionChange,
93
- singleInputFieldRef,
94
101
  pickerSlots: slots,
95
102
  pickerSlotProps: innerSlotProps,
96
- fieldProps
103
+ fieldProps,
104
+ startFieldRef,
105
+ endFieldRef
97
106
  });
98
107
  const slotPropsForLayout = _extends({}, innerSlotProps, {
99
108
  tabs: _extends({}, innerSlotProps?.tabs, {
@@ -108,7 +117,7 @@ export const useMobileRangePicker = _ref => {
108
117
  });
109
118
  const Layout = slots?.layout ?? PickersLayout;
110
119
  const finalLocaleText = _extends({}, contextLocaleText, localeText);
111
- let labelledById = labelId;
120
+ let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId;
112
121
  if (isToolbarHidden) {
113
122
  const labels = [];
114
123
  if (fieldType === 'multi-input') {
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+ import useForkRef from '@mui/utils/useForkRef';
3
+ import useEventCallback from '@mui/utils/useEventCallback';
4
+ export const useMultiInputFieldSelectedSections = params => {
5
+ const unstableEndFieldRef = React.useRef(null);
6
+ const handleUnstableEndFieldRef = useForkRef(params.unstableEndFieldRef, unstableEndFieldRef);
7
+ const [startSelectedSection, setStartSelectedSection] = React.useState(params.selectedSections ?? null);
8
+ const [endSelectedSection, setEndSelectedSection] = React.useState(null);
9
+ const getActiveField = () => {
10
+ if (unstableEndFieldRef.current && unstableEndFieldRef.current.isFieldFocused()) {
11
+ return 'end';
12
+ }
13
+ return 'start';
14
+ };
15
+ const handleStartSelectedSectionChange = useEventCallback(newSelectedSections => {
16
+ setStartSelectedSection(newSelectedSections);
17
+ if (getActiveField() === 'start') {
18
+ params.onSelectedSectionsChange?.(newSelectedSections);
19
+ }
20
+ });
21
+ const handleEndSelectedSectionChange = useEventCallback(newSelectedSections => {
22
+ setEndSelectedSection(newSelectedSections);
23
+ if (getActiveField() === 'end') {
24
+ params.onSelectedSectionsChange?.(newSelectedSections);
25
+ }
26
+ });
27
+ const activeField = getActiveField();
28
+ return {
29
+ start: {
30
+ unstableFieldRef: params.unstableStartFieldRef,
31
+ selectedSections: activeField === 'start' && params.selectedSections !== undefined ? params.selectedSections : startSelectedSection,
32
+ onSelectedSectionsChange: handleStartSelectedSectionChange
33
+ },
34
+ end: {
35
+ unstableFieldRef: handleUnstableEndFieldRef,
36
+ selectedSections: activeField === 'end' && params.selectedSections !== undefined ? params.selectedSections : endSelectedSection,
37
+ onSelectedSectionsChange: handleEndSelectedSectionChange
38
+ }
39
+ };
40
+ };
@@ -1,11 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useDateField as useDateField } from '@mui/x-date-pickers/DateField';
4
- import { useLocalizationContext, useValidation, useControlledValueWithTimezone } from '@mui/x-date-pickers/internals';
5
- import { useDefaultizedDateRangeFieldProps } from '../../../SingleInputDateRangeField/useSingleInputDateRangeField';
4
+ import { useLocalizationContext, useValidation, useControlledValueWithTimezone, useDefaultizedDateField } from '@mui/x-date-pickers/internals';
6
5
  import { validateDateRange } from '../../utils/validation/validateDateRange';
7
6
  import { rangeValueManager } from '../../utils/valueManagers';
8
7
  import { excludeProps } from './shared';
8
+ import { useMultiInputFieldSelectedSections } from '../useMultiInputFieldSelectedSections';
9
9
  export const useMultiInputDateRangeField = ({
10
10
  sharedProps: inSharedProps,
11
11
  startTextFieldProps,
@@ -13,7 +13,7 @@ export const useMultiInputDateRangeField = ({
13
13
  endTextFieldProps,
14
14
  unstableEndFieldRef
15
15
  }) => {
16
- const sharedProps = useDefaultizedDateRangeFieldProps(inSharedProps);
16
+ const sharedProps = useDefaultizedDateField(inSharedProps);
17
17
  const adapter = useLocalizationContext();
18
18
  const {
19
19
  value: valueProp,
@@ -26,7 +26,9 @@ export const useMultiInputDateRangeField = ({
26
26
  readOnly,
27
27
  selectedSections,
28
28
  onSelectedSectionsChange,
29
- timezone: timezoneProp
29
+ timezone: timezoneProp,
30
+ enableAccessibleFieldDOMStructure,
31
+ autoFocus
30
32
  } = sharedProps;
31
33
  const {
32
34
  value,
@@ -63,37 +65,40 @@ export const useMultiInputDateRangeField = ({
63
65
  value,
64
66
  timezone
65
67
  }), validateDateRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
68
+ const selectedSectionsResponse = useMultiInputFieldSelectedSections({
69
+ selectedSections,
70
+ onSelectedSectionsChange,
71
+ unstableStartFieldRef,
72
+ unstableEndFieldRef
73
+ });
66
74
  const startFieldProps = _extends({
67
75
  error: !!validationError[0]
68
- }, startTextFieldProps, {
76
+ }, startTextFieldProps, selectedSectionsResponse.start, {
69
77
  disabled,
70
78
  readOnly,
71
79
  format,
72
80
  formatDensity,
73
81
  shouldRespectLeadingZeros,
74
82
  timezone,
75
- unstableFieldRef: unstableStartFieldRef,
76
83
  value: valueProp === undefined ? undefined : valueProp[0],
77
84
  defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
78
85
  onChange: handleStartDateChange,
79
- selectedSections,
80
- onSelectedSectionsChange
86
+ enableAccessibleFieldDOMStructure,
87
+ autoFocus // Do not add on end field.
81
88
  });
82
89
  const endFieldProps = _extends({
83
90
  error: !!validationError[1]
84
- }, endTextFieldProps, {
91
+ }, endTextFieldProps, selectedSectionsResponse.end, {
85
92
  format,
86
93
  formatDensity,
87
94
  shouldRespectLeadingZeros,
88
95
  disabled,
89
96
  readOnly,
90
97
  timezone,
91
- unstableFieldRef: unstableEndFieldRef,
92
98
  value: valueProp === undefined ? undefined : valueProp[1],
93
99
  defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
94
100
  onChange: handleEndDateChange,
95
- selectedSections,
96
- onSelectedSectionsChange
101
+ enableAccessibleFieldDOMStructure
97
102
  });
98
103
  const startDateResponse = useDateField(startFieldProps);
99
104
  const endDateResponse = useDateField(endFieldProps);
@@ -1,26 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useDateTimeField as useDateTimeField } from '@mui/x-date-pickers/DateTimeField';
4
- import { applyDefaultDate, useDefaultDates, useLocalizationContext, useUtils, useValidation, useControlledValueWithTimezone } from '@mui/x-date-pickers/internals';
4
+ import { useLocalizationContext, useValidation, useControlledValueWithTimezone, useDefaultizedDateTimeField } from '@mui/x-date-pickers/internals';
5
5
  import { validateDateTimeRange } from '../../utils/validation/validateDateTimeRange';
6
6
  import { rangeValueManager } from '../../utils/valueManagers';
7
7
  import { excludeProps } from './shared';
8
- export const useDefaultizedDateTimeRangeFieldProps = props => {
9
- const utils = useUtils();
10
- const defaultDates = useDefaultDates();
11
- const ampm = props.ampm ?? utils.is12HourCycleInCurrentLocale();
12
- const defaultFormat = ampm ? utils.formats.keyboardDateTime12h : utils.formats.keyboardDateTime24h;
13
- return _extends({}, props, {
14
- disablePast: props.disablePast ?? false,
15
- disableFuture: props.disableFuture ?? false,
16
- format: props.format ?? defaultFormat,
17
- minDate: applyDefaultDate(utils, props.minDateTime ?? props.minDate, defaultDates.minDate),
18
- maxDate: applyDefaultDate(utils, props.maxDateTime ?? props.maxDate, defaultDates.maxDate),
19
- minTime: props.minDateTime ?? props.minTime,
20
- maxTime: props.maxDateTime ?? props.maxTime,
21
- disableIgnoringDatePartForTimeValidation: Boolean(props.minDateTime || props.maxDateTime)
22
- });
23
- };
8
+ import { useMultiInputFieldSelectedSections } from '../useMultiInputFieldSelectedSections';
24
9
  export const useMultiInputDateTimeRangeField = ({
25
10
  sharedProps: inSharedProps,
26
11
  startTextFieldProps,
@@ -28,19 +13,22 @@ export const useMultiInputDateTimeRangeField = ({
28
13
  endTextFieldProps,
29
14
  unstableEndFieldRef
30
15
  }) => {
31
- const sharedProps = useDefaultizedDateTimeRangeFieldProps(inSharedProps);
16
+ const sharedProps = useDefaultizedDateTimeField(inSharedProps);
32
17
  const adapter = useLocalizationContext();
33
18
  const {
34
19
  value: valueProp,
35
20
  defaultValue,
36
21
  format,
22
+ formatDensity,
37
23
  shouldRespectLeadingZeros,
38
- timezone: timezoneProp,
39
24
  onChange,
40
25
  disabled,
41
26
  readOnly,
42
27
  selectedSections,
43
- onSelectedSectionsChange
28
+ onSelectedSectionsChange,
29
+ timezone: timezoneProp,
30
+ enableAccessibleFieldDOMStructure,
31
+ autoFocus
44
32
  } = sharedProps;
45
33
  const {
46
34
  value,
@@ -77,35 +65,40 @@ export const useMultiInputDateTimeRangeField = ({
77
65
  value,
78
66
  timezone
79
67
  }), validateDateTimeRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
68
+ const selectedSectionsResponse = useMultiInputFieldSelectedSections({
69
+ selectedSections,
70
+ onSelectedSectionsChange,
71
+ unstableStartFieldRef,
72
+ unstableEndFieldRef
73
+ });
80
74
  const startFieldProps = _extends({
81
75
  error: !!validationError[0]
82
- }, startTextFieldProps, {
83
- format,
84
- shouldRespectLeadingZeros,
76
+ }, startTextFieldProps, selectedSectionsResponse.start, {
85
77
  disabled,
86
78
  readOnly,
79
+ format,
80
+ formatDensity,
81
+ shouldRespectLeadingZeros,
87
82
  timezone,
88
- unstableFieldRef: unstableStartFieldRef,
89
83
  value: valueProp === undefined ? undefined : valueProp[0],
90
84
  defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
91
85
  onChange: handleStartDateChange,
92
- selectedSections,
93
- onSelectedSectionsChange
86
+ enableAccessibleFieldDOMStructure,
87
+ autoFocus // Do not add on end field.
94
88
  });
95
89
  const endFieldProps = _extends({
96
90
  error: !!validationError[1]
97
- }, endTextFieldProps, {
91
+ }, endTextFieldProps, selectedSectionsResponse.end, {
98
92
  format,
93
+ formatDensity,
99
94
  shouldRespectLeadingZeros,
100
95
  disabled,
101
96
  readOnly,
102
97
  timezone,
103
- unstableFieldRef: unstableEndFieldRef,
104
98
  value: valueProp === undefined ? undefined : valueProp[1],
105
99
  defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
106
100
  onChange: handleEndDateChange,
107
- selectedSections,
108
- onSelectedSectionsChange
101
+ enableAccessibleFieldDOMStructure
109
102
  });
110
103
  const startDateResponse = useDateTimeField(startFieldProps);
111
104
  const endDateResponse = useDateTimeField(endFieldProps);
@@ -1,20 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useTimeField as useTimeField } from '@mui/x-date-pickers/TimeField';
4
- import { useLocalizationContext, useUtils, useValidation, useControlledValueWithTimezone } from '@mui/x-date-pickers/internals';
4
+ import { useLocalizationContext, useValidation, useControlledValueWithTimezone, useDefaultizedTimeField } from '@mui/x-date-pickers/internals';
5
5
  import { validateTimeRange } from '../../utils/validation/validateTimeRange';
6
6
  import { rangeValueManager } from '../../utils/valueManagers';
7
7
  import { excludeProps } from './shared';
8
- export const useDefaultizedTimeRangeFieldProps = props => {
9
- const utils = useUtils();
10
- const ampm = props.ampm ?? utils.is12HourCycleInCurrentLocale();
11
- const defaultFormat = ampm ? utils.formats.fullTime12h : utils.formats.fullTime24h;
12
- return _extends({}, props, {
13
- disablePast: props.disablePast ?? false,
14
- disableFuture: props.disableFuture ?? false,
15
- format: props.format ?? defaultFormat
16
- });
17
- };
8
+ import { useMultiInputFieldSelectedSections } from '../useMultiInputFieldSelectedSections';
18
9
  export const useMultiInputTimeRangeField = ({
19
10
  sharedProps: inSharedProps,
20
11
  startTextFieldProps,
@@ -22,19 +13,22 @@ export const useMultiInputTimeRangeField = ({
22
13
  endTextFieldProps,
23
14
  unstableEndFieldRef
24
15
  }) => {
25
- const sharedProps = useDefaultizedTimeRangeFieldProps(inSharedProps);
16
+ const sharedProps = useDefaultizedTimeField(inSharedProps);
26
17
  const adapter = useLocalizationContext();
27
18
  const {
28
19
  value: valueProp,
29
20
  defaultValue,
30
21
  format,
22
+ formatDensity,
31
23
  shouldRespectLeadingZeros,
32
- timezone: timezoneProp,
33
24
  onChange,
34
25
  disabled,
35
26
  readOnly,
36
27
  selectedSections,
37
- onSelectedSectionsChange
28
+ onSelectedSectionsChange,
29
+ timezone: timezoneProp,
30
+ enableAccessibleFieldDOMStructure,
31
+ autoFocus
38
32
  } = sharedProps;
39
33
  const {
40
34
  value,
@@ -71,35 +65,40 @@ export const useMultiInputTimeRangeField = ({
71
65
  value,
72
66
  timezone
73
67
  }), validateTimeRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
68
+ const selectedSectionsResponse = useMultiInputFieldSelectedSections({
69
+ selectedSections,
70
+ onSelectedSectionsChange,
71
+ unstableStartFieldRef,
72
+ unstableEndFieldRef
73
+ });
74
74
  const startFieldProps = _extends({
75
75
  error: !!validationError[0]
76
- }, startTextFieldProps, {
77
- format,
78
- shouldRespectLeadingZeros,
76
+ }, startTextFieldProps, selectedSectionsResponse.start, {
79
77
  disabled,
80
78
  readOnly,
79
+ format,
80
+ formatDensity,
81
+ shouldRespectLeadingZeros,
81
82
  timezone,
82
- unstableFieldRef: unstableStartFieldRef,
83
83
  value: valueProp === undefined ? undefined : valueProp[0],
84
84
  defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
85
85
  onChange: handleStartDateChange,
86
- selectedSections,
87
- onSelectedSectionsChange
86
+ enableAccessibleFieldDOMStructure,
87
+ autoFocus // Do not add on end field.
88
88
  });
89
89
  const endFieldProps = _extends({
90
90
  error: !!validationError[1]
91
- }, endTextFieldProps, {
91
+ }, endTextFieldProps, selectedSectionsResponse.end, {
92
92
  format,
93
+ formatDensity,
93
94
  shouldRespectLeadingZeros,
94
95
  disabled,
95
96
  readOnly,
96
97
  timezone,
97
- unstableFieldRef: unstableEndFieldRef,
98
98
  value: valueProp === undefined ? undefined : valueProp[1],
99
99
  defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
100
100
  onChange: handleEndDateChange,
101
- selectedSections,
102
- onSelectedSectionsChange
101
+ enableAccessibleFieldDOMStructure
103
102
  });
104
103
  const startDateResponse = useTimeField(startFieldProps);
105
104
  const endDateResponse = useTimeField(endFieldProps);
@@ -1,8 +1,6 @@
1
- import * as React from 'react';
2
1
  import useControlled from '@mui/utils/useControlled';
3
2
  import useEventCallback from '@mui/utils/useEventCallback';
4
- export const useRangePosition = props => {
5
- const singleInputFieldRef = React.useRef();
3
+ export const useRangePosition = (props, singleInputFieldRef) => {
6
4
  const [rangePosition, setRangePosition] = useControlled({
7
5
  name: 'useRangePosition',
8
6
  state: 'rangePosition',
@@ -13,7 +11,7 @@ export const useRangePosition = props => {
13
11
  // When using a single input field,
14
12
  // we want to select the 1st section of the edited date when updating the range position.
15
13
  const syncRangePositionWithSingleInputField = newRangePosition => {
16
- if (singleInputFieldRef.current == null) {
14
+ if (singleInputFieldRef?.current == null) {
17
15
  return;
18
16
  }
19
17
  const sections = singleInputFieldRef.current.getSections();
@@ -27,7 +25,6 @@ export const useRangePosition = props => {
27
25
  });
28
26
  return {
29
27
  rangePosition,
30
- onRangePositionChange: handleRangePositionChange,
31
- singleInputFieldRef
28
+ onRangePositionChange: handleRangePositionChange
32
29
  };
33
30
  };
@@ -46,6 +46,7 @@ export const useStaticRangePicker = _ref => {
46
46
  } = usePicker(_extends({}, pickerParams, {
47
47
  props,
48
48
  autoFocusView: autoFocus ?? false,
49
+ fieldRef: undefined,
49
50
  additionalViewProps: {
50
51
  rangePosition,
51
52
  onRangePositionChange
@@ -1,5 +1,4 @@
1
1
  export * from './dateRange';
2
2
  export * from './dateTimeRange';
3
3
  export * from './timeRange';
4
- export * from './fields';
5
4
  export * from './rangePickerProps';
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTcwNzQyOTYwMDAwMA==";
3
+ const releaseInfo = "MTcwOTM1NTYwMDAwMA==";
4
4
  if (process.env.NODE_ENV !== 'production') {
5
5
  // A simple hack to set the value in the test environment (has no build step).
6
6
  // eslint-disable-next-line no-useless-concat