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

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 (274) hide show
  1. package/CHANGELOG.md +298 -23
  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 +3 -0
  8. package/DateRangePicker/DateRangePickerToolbar.js +6 -0
  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 +6 -0
  15. package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +1 -1
  16. package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
  17. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +3 -3
  18. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.d.ts +1 -1
  19. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
  20. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +3 -3
  21. package/MobileDateRangePicker/MobileDateRangePicker.d.ts +1 -1
  22. package/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
  23. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +3 -3
  24. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.d.ts +1 -1
  25. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +11 -12
  26. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +3 -3
  27. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +1 -1
  28. package/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
  29. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +11 -14
  30. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +1 -1
  31. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
  32. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +12 -16
  33. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +1 -1
  34. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
  35. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +12 -16
  36. package/SingleInputDateRangeField/SingleInputDateRangeField.d.ts +2 -2
  37. package/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
  38. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +11 -14
  39. package/SingleInputDateRangeField/index.d.ts +1 -1
  40. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +2 -3
  41. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -15
  42. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.d.ts +2 -2
  43. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +12 -10
  44. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +12 -15
  45. package/SingleInputDateTimeRangeField/index.d.ts +1 -1
  46. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +2 -3
  47. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -20
  48. package/SingleInputTimeRangeField/SingleInputTimeRangeField.d.ts +2 -2
  49. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
  50. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +12 -15
  51. package/SingleInputTimeRangeField/index.d.ts +1 -1
  52. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +2 -3
  53. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -14
  54. package/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
  55. package/index.d.ts +0 -1
  56. package/index.js +2 -1
  57. package/internals/hooks/models/useRangePicker.d.ts +5 -5
  58. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.d.ts +1 -1
  59. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
  60. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +5 -5
  61. package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +15 -15
  62. package/internals/hooks/useEnrichedRangePickerFieldProps.js +37 -40
  63. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.d.ts +1 -1
  64. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -8
  65. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +5 -5
  66. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +21 -0
  67. package/internals/hooks/useMultiInputFieldSelectedSections.js +43 -0
  68. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -1
  69. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +17 -12
  70. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +2 -3
  71. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -31
  72. package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +4 -4
  73. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +2 -3
  74. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -25
  75. package/internals/hooks/useRangePosition.d.ts +2 -4
  76. package/internals/hooks/useRangePosition.js +3 -6
  77. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
  78. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +1 -2
  79. package/internals/models/dateRange.d.ts +3 -15
  80. package/internals/models/dateTimeRange.d.ts +4 -6
  81. package/internals/models/index.d.ts +0 -1
  82. package/internals/models/index.js +0 -1
  83. package/internals/models/timeRange.d.ts +3 -6
  84. package/internals/utils/date-fields-utils.d.ts +1 -5
  85. package/internals/utils/releaseInfo.js +1 -1
  86. package/internals/utils/valueManagers.d.ts +1 -2
  87. package/internals/utils/valueManagers.js +11 -6
  88. package/models/fields.d.ts +69 -0
  89. package/models/index.d.ts +1 -0
  90. package/models/index.js +1 -0
  91. package/modern/DateRangeCalendar/DateRangeCalendar.js +3 -1
  92. package/modern/DateRangePicker/DateRangePicker.js +9 -9
  93. package/modern/DateRangePicker/DateRangePickerToolbar.js +6 -0
  94. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +11 -12
  95. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +7 -1
  96. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +6 -0
  97. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
  98. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
  99. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
  100. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +11 -12
  101. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
  102. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
  103. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
  104. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
  105. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -14
  106. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +12 -10
  107. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -19
  108. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
  109. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -13
  110. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
  111. package/modern/index.js +2 -1
  112. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
  113. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +34 -37
  114. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -8
  115. package/modern/internals/hooks/useMultiInputFieldSelectedSections.js +40 -0
  116. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +17 -12
  117. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -30
  118. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -24
  119. package/modern/internals/hooks/useRangePosition.js +3 -6
  120. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
  121. package/modern/internals/models/index.js +0 -1
  122. package/modern/internals/utils/releaseInfo.js +1 -1
  123. package/modern/internals/utils/valueManagers.js +11 -6
  124. package/modern/models/index.js +1 -0
  125. package/node/DateRangeCalendar/DateRangeCalendar.js +3 -1
  126. package/node/DateRangePicker/DateRangePicker.js +9 -9
  127. package/node/DateRangePicker/DateRangePickerToolbar.js +6 -0
  128. package/node/DateTimeRangePicker/DateTimeRangePicker.js +11 -12
  129. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +7 -1
  130. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +6 -0
  131. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -9
  132. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +11 -12
  133. package/node/MobileDateRangePicker/MobileDateRangePicker.js +9 -9
  134. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +13 -14
  135. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -19
  136. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -19
  137. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +17 -19
  138. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +12 -10
  139. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -16
  140. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +15 -13
  141. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -21
  142. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +11 -9
  143. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -15
  144. package/node/StaticDateRangePicker/StaticDateRangePicker.js +0 -1
  145. package/node/index.js +1 -1
  146. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -7
  147. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +33 -36
  148. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -8
  149. package/node/internals/hooks/useMultiInputFieldSelectedSections.js +50 -0
  150. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +16 -11
  151. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +23 -31
  152. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +23 -25
  153. package/node/internals/hooks/useRangePosition.js +3 -8
  154. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -0
  155. package/node/internals/models/index.js +0 -11
  156. package/node/internals/utils/releaseInfo.js +1 -1
  157. package/node/internals/utils/valueManagers.js +10 -5
  158. package/node/models/index.js +11 -0
  159. package/package.json +5 -5
  160. package/themeAugmentation/props.d.ts +12 -12
  161. package/internals/models/fields.d.ts +0 -49
  162. package/legacy/AdapterDateFns/index.js +0 -1
  163. package/legacy/AdapterDateFnsJalali/index.js +0 -1
  164. package/legacy/AdapterDateFnsV3/index.js +0 -1
  165. package/legacy/AdapterDayjs/index.js +0 -1
  166. package/legacy/AdapterLuxon/index.js +0 -1
  167. package/legacy/AdapterMoment/index.js +0 -1
  168. package/legacy/AdapterMomentHijri/index.js +0 -1
  169. package/legacy/AdapterMomentJalaali/index.js +0 -1
  170. package/legacy/DateRangeCalendar/DateRangeCalendar.js +0 -764
  171. package/legacy/DateRangeCalendar/DateRangeCalendar.types.js +0 -1
  172. package/legacy/DateRangeCalendar/dateRangeCalendarClasses.js +0 -5
  173. package/legacy/DateRangeCalendar/index.js +0 -2
  174. package/legacy/DateRangeCalendar/useDragRange.js +0 -258
  175. package/legacy/DateRangePicker/DateRangePicker.js +0 -334
  176. package/legacy/DateRangePicker/DateRangePicker.types.js +0 -1
  177. package/legacy/DateRangePicker/DateRangePickerToolbar.js +0 -127
  178. package/legacy/DateRangePicker/dateRangePickerToolbarClasses.js +0 -5
  179. package/legacy/DateRangePicker/index.js +0 -3
  180. package/legacy/DateRangePicker/shared.js +0 -33
  181. package/legacy/DateRangePickerDay/DateRangePickerDay.js +0 -366
  182. package/legacy/DateRangePickerDay/dateRangePickerDayClasses.js +0 -5
  183. package/legacy/DateRangePickerDay/index.js +0 -2
  184. package/legacy/DateTimeRangePicker/DateTimeRangePicker.js +0 -413
  185. package/legacy/DateTimeRangePicker/DateTimeRangePicker.types.js +0 -1
  186. package/legacy/DateTimeRangePicker/DateTimeRangePickerTabs.js +0 -191
  187. package/legacy/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +0 -57
  188. package/legacy/DateTimeRangePicker/DateTimeRangePickerToolbar.js +0 -184
  189. package/legacy/DateTimeRangePicker/dateTimeRangePickerTabsClasses.js +0 -6
  190. package/legacy/DateTimeRangePicker/dateTimeRangePickerToolbarClasses.js +0 -5
  191. package/legacy/DateTimeRangePicker/index.js +0 -5
  192. package/legacy/DateTimeRangePicker/shared.js +0 -54
  193. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -343
  194. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.types.js +0 -1
  195. package/legacy/DesktopDateRangePicker/index.js +0 -1
  196. package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +0 -491
  197. package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.js +0 -1
  198. package/legacy/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -48
  199. package/legacy/DesktopDateTimeRangePicker/index.js +0 -1
  200. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +0 -339
  201. package/legacy/MobileDateRangePicker/MobileDateRangePicker.types.js +0 -1
  202. package/legacy/MobileDateRangePicker/index.js +0 -1
  203. package/legacy/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +0 -484
  204. package/legacy/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.js +0 -1
  205. package/legacy/MobileDateTimeRangePicker/index.js +0 -1
  206. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +0 -316
  207. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
  208. package/legacy/MultiInputDateRangeField/index.js +0 -2
  209. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +0 -357
  210. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
  211. package/legacy/MultiInputDateTimeRangeField/index.js +0 -2
  212. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +0 -330
  213. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
  214. package/legacy/MultiInputTimeRangeField/index.js +0 -2
  215. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +0 -307
  216. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.types.js +0 -1
  217. package/legacy/SingleInputDateRangeField/index.js +0 -2
  218. package/legacy/SingleInputDateRangeField/useSingleInputDateRangeField.js +0 -30
  219. package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +0 -348
  220. package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.js +0 -1
  221. package/legacy/SingleInputDateTimeRangeField/index.js +0 -2
  222. package/legacy/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +0 -35
  223. package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.js +0 -321
  224. package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.types.js +0 -1
  225. package/legacy/SingleInputTimeRangeField/index.js +0 -2
  226. package/legacy/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +0 -29
  227. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +0 -276
  228. package/legacy/StaticDateRangePicker/StaticDateRangePicker.types.js +0 -1
  229. package/legacy/StaticDateRangePicker/index.js +0 -1
  230. package/legacy/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -87
  231. package/legacy/dateRangeViewRenderers/index.js +0 -1
  232. package/legacy/index.js +0 -52
  233. package/legacy/internals/constants/dimensions.js +0 -5
  234. package/legacy/internals/hooks/models/index.js +0 -1
  235. package/legacy/internals/hooks/models/useRangePicker.js +0 -1
  236. package/legacy/internals/hooks/useDesktopRangePicker/index.js +0 -1
  237. package/legacy/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +0 -154
  238. package/legacy/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.js +0 -1
  239. package/legacy/internals/hooks/useEnrichedRangePickerFieldProps.js +0 -258
  240. package/legacy/internals/hooks/useMobileRangePicker/index.js +0 -1
  241. package/legacy/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +0 -144
  242. package/legacy/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.js +0 -1
  243. package/legacy/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  244. package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -102
  245. package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -115
  246. package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
  247. package/legacy/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -109
  248. package/legacy/internals/hooks/useRangePosition.js +0 -39
  249. package/legacy/internals/hooks/useStaticRangePicker/index.js +0 -1
  250. package/legacy/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +0 -76
  251. package/legacy/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.js +0 -1
  252. package/legacy/internals/models/dateRange.js +0 -1
  253. package/legacy/internals/models/dateTimeRange.js +0 -1
  254. package/legacy/internals/models/index.js +0 -5
  255. package/legacy/internals/models/rangePickerProps.js +0 -1
  256. package/legacy/internals/models/timeRange.js +0 -1
  257. package/legacy/internals/utils/date-fields-utils.js +0 -26
  258. package/legacy/internals/utils/date-range-manager.js +0 -65
  259. package/legacy/internals/utils/date-utils.js +0 -12
  260. package/legacy/internals/utils/releaseInfo.js +0 -13
  261. package/legacy/internals/utils/validation/validateDateRange.js +0 -45
  262. package/legacy/internals/utils/validation/validateDateTimeRange.js +0 -45
  263. package/legacy/internals/utils/validation/validateTimeRange.js +0 -32
  264. package/legacy/internals/utils/valueManagers.js +0 -135
  265. package/legacy/locales/index.js +0 -1
  266. package/legacy/models/index.js +0 -3
  267. package/legacy/models/multiInputRangeFieldClasses.js +0 -1
  268. package/legacy/models/range.js +0 -1
  269. package/legacy/models/validation.js +0 -1
  270. package/legacy/themeAugmentation/index.js +0 -4
  271. package/modern/internals/models/fields.js +0 -1
  272. /package/{internals/models → models}/fields.js +0 -0
  273. /package/{legacy/internals → modern}/models/fields.js +0 -0
  274. /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, {
@@ -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 = "MTcwODYyODQwMDAwMA==";
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