@mui/x-date-pickers 9.0.0-alpha.3 → 9.0.0-rc.0

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 (296) hide show
  1. package/AdapterDateFnsBase/AdapterDateFnsBase.mjs +1 -1
  2. package/AdapterDayjs/AdapterDayjs.mjs +1 -1
  3. package/AdapterLuxon/AdapterLuxon.mjs +1 -1
  4. package/AdapterMoment/AdapterMoment.mjs +1 -1
  5. package/AdapterMomentHijri/AdapterMomentHijri.mjs +1 -1
  6. package/AdapterMomentJalaali/AdapterMomentJalaali.mjs +1 -1
  7. package/CHANGELOG.md +384 -1
  8. package/DateCalendar/DateCalendar.js +1 -1
  9. package/DateCalendar/DateCalendar.mjs +1 -1
  10. package/DateCalendar/DayCalendar.d.mts +7 -7
  11. package/DateCalendar/DayCalendar.d.ts +7 -7
  12. package/DateCalendar/DayCalendar.js +23 -25
  13. package/DateCalendar/DayCalendar.mjs +23 -25
  14. package/DateField/DateField.d.mts +1 -1
  15. package/DateField/DateField.d.ts +1 -1
  16. package/DateField/DateField.js +26 -8
  17. package/DateField/DateField.mjs +26 -8
  18. package/DateField/DateField.types.d.mts +3 -3
  19. package/DateField/DateField.types.d.ts +3 -3
  20. package/DateField/useDateField.d.mts +1 -1
  21. package/DateField/useDateField.d.ts +1 -1
  22. package/DateField/useDateField.js +1 -1
  23. package/DateField/useDateField.mjs +1 -1
  24. package/DatePicker/DatePicker.d.mts +1 -1
  25. package/DatePicker/DatePicker.d.ts +1 -1
  26. package/DatePicker/DatePicker.js +1 -5
  27. package/DatePicker/DatePicker.mjs +1 -5
  28. package/DatePicker/DatePicker.types.d.mts +3 -3
  29. package/DatePicker/DatePicker.types.d.ts +3 -3
  30. package/DateTimeField/DateTimeField.d.mts +1 -1
  31. package/DateTimeField/DateTimeField.d.ts +1 -1
  32. package/DateTimeField/DateTimeField.js +26 -8
  33. package/DateTimeField/DateTimeField.mjs +26 -8
  34. package/DateTimeField/DateTimeField.types.d.mts +2 -2
  35. package/DateTimeField/DateTimeField.types.d.ts +2 -2
  36. package/DateTimeField/useDateTimeField.d.mts +1 -1
  37. package/DateTimeField/useDateTimeField.d.ts +1 -1
  38. package/DateTimeField/useDateTimeField.js +1 -1
  39. package/DateTimeField/useDateTimeField.mjs +1 -1
  40. package/DateTimePicker/DateTimePicker.d.mts +1 -1
  41. package/DateTimePicker/DateTimePicker.d.ts +1 -1
  42. package/DateTimePicker/DateTimePicker.js +1 -5
  43. package/DateTimePicker/DateTimePicker.mjs +1 -5
  44. package/DateTimePicker/DateTimePicker.types.d.mts +3 -3
  45. package/DateTimePicker/DateTimePicker.types.d.ts +3 -3
  46. package/DesktopDatePicker/DesktopDatePicker.d.mts +1 -1
  47. package/DesktopDatePicker/DesktopDatePicker.d.ts +1 -1
  48. package/DesktopDatePicker/DesktopDatePicker.js +1 -5
  49. package/DesktopDatePicker/DesktopDatePicker.mjs +1 -5
  50. package/DesktopDatePicker/DesktopDatePicker.types.d.mts +3 -3
  51. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +3 -3
  52. package/DesktopDateTimePicker/DesktopDateTimePicker.d.mts +1 -1
  53. package/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +1 -1
  54. package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -5
  55. package/DesktopDateTimePicker/DesktopDateTimePicker.mjs +1 -5
  56. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.mts +3 -3
  57. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +3 -3
  58. package/DesktopTimePicker/DesktopTimePicker.d.mts +1 -1
  59. package/DesktopTimePicker/DesktopTimePicker.d.ts +1 -1
  60. package/DesktopTimePicker/DesktopTimePicker.js +0 -4
  61. package/DesktopTimePicker/DesktopTimePicker.mjs +0 -4
  62. package/DesktopTimePicker/DesktopTimePicker.types.d.mts +3 -3
  63. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +3 -3
  64. package/DigitalClock/DigitalClock.d.mts +1 -1
  65. package/DigitalClock/DigitalClock.d.ts +1 -1
  66. package/DigitalClock/DigitalClock.js +5 -3
  67. package/DigitalClock/DigitalClock.mjs +6 -4
  68. package/MobileDatePicker/MobileDatePicker.d.mts +1 -1
  69. package/MobileDatePicker/MobileDatePicker.d.ts +1 -1
  70. package/MobileDatePicker/MobileDatePicker.js +1 -5
  71. package/MobileDatePicker/MobileDatePicker.mjs +1 -5
  72. package/MobileDatePicker/MobileDatePicker.types.d.mts +3 -3
  73. package/MobileDatePicker/MobileDatePicker.types.d.ts +3 -3
  74. package/MobileDateTimePicker/MobileDateTimePicker.d.mts +1 -1
  75. package/MobileDateTimePicker/MobileDateTimePicker.d.ts +1 -1
  76. package/MobileDateTimePicker/MobileDateTimePicker.js +1 -5
  77. package/MobileDateTimePicker/MobileDateTimePicker.mjs +1 -5
  78. package/MobileDateTimePicker/MobileDateTimePicker.types.d.mts +3 -3
  79. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +3 -3
  80. package/MobileTimePicker/MobileTimePicker.d.mts +1 -1
  81. package/MobileTimePicker/MobileTimePicker.d.ts +1 -1
  82. package/MobileTimePicker/MobileTimePicker.js +0 -4
  83. package/MobileTimePicker/MobileTimePicker.mjs +0 -4
  84. package/MobileTimePicker/MobileTimePicker.types.d.mts +3 -3
  85. package/MobileTimePicker/MobileTimePicker.types.d.ts +3 -3
  86. package/MonthCalendar/MonthCalendarButton.js +2 -2
  87. package/MonthCalendar/MonthCalendarButton.mjs +3 -3
  88. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +46 -9
  89. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.mjs +47 -10
  90. package/PickerDay/PickerDay.d.mts +14 -0
  91. package/PickerDay/PickerDay.d.ts +14 -0
  92. package/{PickerDay2/PickerDay2.js → PickerDay/PickerDay.js} +110 -45
  93. package/{PickerDay2/PickerDay2.mjs → PickerDay/PickerDay.mjs} +110 -45
  94. package/PickerDay/PickerDay.types.d.mts +137 -0
  95. package/PickerDay/PickerDay.types.d.ts +137 -0
  96. package/PickerDay/index.d.mts +4 -0
  97. package/PickerDay/index.d.ts +4 -0
  98. package/PickerDay/index.js +25 -0
  99. package/PickerDay/index.mjs +2 -0
  100. package/{PickerDay2/pickerDay2Classes.d.mts → PickerDay/pickerDayClasses.d.mts} +4 -4
  101. package/{PickerDay2/pickerDay2Classes.d.ts → PickerDay/pickerDayClasses.d.ts} +4 -4
  102. package/PickerDay/pickerDayClasses.js +14 -0
  103. package/PickerDay/pickerDayClasses.mjs +6 -0
  104. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +27 -1
  105. package/PickersTextField/PickersFilledInput/PickersFilledInput.mjs +27 -1
  106. package/PickersTextField/PickersInput/PickersInput.js +27 -1
  107. package/PickersTextField/PickersInput/PickersInput.mjs +27 -1
  108. package/PickersTextField/PickersInputBase/PickersInputBase.js +26 -0
  109. package/PickersTextField/PickersInputBase/PickersInputBase.mjs +26 -0
  110. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.mts +26 -0
  111. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +26 -0
  112. package/PickersTextField/PickersOutlinedInput/Outline.js +1 -1
  113. package/PickersTextField/PickersOutlinedInput/Outline.mjs +1 -1
  114. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +27 -1
  115. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.mjs +27 -1
  116. package/PickersTextField/PickersTextField.js +42 -2
  117. package/PickersTextField/PickersTextField.mjs +42 -2
  118. package/PickersTextField/PickersTextField.types.d.mts +22 -6
  119. package/PickersTextField/PickersTextField.types.d.ts +22 -6
  120. package/StaticDatePicker/StaticDatePicker.js +1 -1
  121. package/StaticDatePicker/StaticDatePicker.mjs +1 -1
  122. package/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  123. package/StaticDateTimePicker/StaticDateTimePicker.mjs +1 -1
  124. package/TimeField/TimeField.d.mts +1 -1
  125. package/TimeField/TimeField.d.ts +1 -1
  126. package/TimeField/TimeField.js +26 -8
  127. package/TimeField/TimeField.mjs +26 -8
  128. package/TimeField/TimeField.types.d.mts +2 -2
  129. package/TimeField/TimeField.types.d.ts +2 -2
  130. package/TimeField/useTimeField.d.mts +1 -1
  131. package/TimeField/useTimeField.d.ts +1 -1
  132. package/TimePicker/TimePicker.d.mts +1 -1
  133. package/TimePicker/TimePicker.d.ts +1 -1
  134. package/TimePicker/TimePicker.js +0 -4
  135. package/TimePicker/TimePicker.mjs +0 -4
  136. package/TimePicker/TimePicker.types.d.mts +3 -3
  137. package/TimePicker/TimePicker.types.d.ts +3 -3
  138. package/YearCalendar/YearCalendarButton.js +2 -2
  139. package/YearCalendar/YearCalendarButton.mjs +3 -3
  140. package/hooks/useParsedFormat.js +5 -7
  141. package/hooks/useParsedFormat.mjs +5 -7
  142. package/hooks/useSplitFieldProps.d.mts +1 -1
  143. package/hooks/useSplitFieldProps.d.ts +1 -1
  144. package/hooks/useSplitFieldProps.js +1 -1
  145. package/hooks/useSplitFieldProps.mjs +1 -1
  146. package/index.d.mts +1 -2
  147. package/index.d.ts +1 -2
  148. package/index.js +2 -14
  149. package/index.mjs +2 -3
  150. package/internals/components/PickerFieldUI.d.mts +22 -13
  151. package/internals/components/PickerFieldUI.d.ts +22 -13
  152. package/internals/components/PickerFieldUI.js +22 -80
  153. package/internals/components/PickerFieldUI.mjs +22 -80
  154. package/internals/components/PickerPopper/PickerPopper.js +20 -2
  155. package/internals/components/PickerPopper/PickerPopper.mjs +20 -2
  156. package/internals/components/PickersToolbar.js +3 -1
  157. package/internals/components/PickersToolbar.mjs +3 -1
  158. package/internals/demo/DemoContainer.js +6 -8
  159. package/internals/demo/DemoContainer.mjs +6 -8
  160. package/internals/hooks/PickerDay.types.d.mts +12 -0
  161. package/internals/hooks/PickerDay.types.d.ts +12 -0
  162. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.mts +2 -2
  163. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +2 -2
  164. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.mts +6 -6
  165. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +6 -6
  166. package/internals/hooks/useField/buildSectionsFromFormat.d.mts +0 -1
  167. package/internals/hooks/useField/buildSectionsFromFormat.d.ts +0 -1
  168. package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  169. package/internals/hooks/useField/buildSectionsFromFormat.mjs +1 -1
  170. package/internals/hooks/useField/index.d.mts +1 -1
  171. package/internals/hooks/useField/index.d.ts +1 -1
  172. package/internals/hooks/useField/index.js +2 -8
  173. package/internals/hooks/useField/index.mjs +1 -1
  174. package/internals/hooks/useField/useField.d.mts +2 -2
  175. package/internals/hooks/useField/useField.d.ts +2 -2
  176. package/internals/hooks/useField/useField.js +265 -8
  177. package/internals/hooks/useField/useField.mjs +264 -8
  178. package/internals/hooks/useField/useField.types.d.mts +12 -51
  179. package/internals/hooks/useField/useField.types.d.ts +12 -51
  180. package/internals/hooks/useField/useField.utils.d.mts +2 -3
  181. package/internals/hooks/useField/useField.utils.d.ts +2 -3
  182. package/internals/hooks/useField/useField.utils.js +8 -65
  183. package/internals/hooks/useField/useField.utils.mjs +6 -62
  184. package/internals/hooks/useField/useFieldHiddenInputProps.d.mts +2 -4
  185. package/internals/hooks/useField/useFieldHiddenInputProps.d.ts +2 -4
  186. package/internals/hooks/useField/useFieldHiddenInputProps.js +1 -3
  187. package/internals/hooks/useField/useFieldHiddenInputProps.mjs +1 -3
  188. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +2 -3
  189. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.mjs +2 -3
  190. package/internals/hooks/useField/useFieldRootProps.d.mts +5 -5
  191. package/internals/hooks/useField/useFieldRootProps.d.ts +5 -5
  192. package/internals/hooks/useField/useFieldRootProps.js +183 -11
  193. package/internals/hooks/useField/useFieldRootProps.mjs +183 -11
  194. package/internals/hooks/useField/useFieldSectionContainerProps.d.mts +3 -5
  195. package/internals/hooks/useField/useFieldSectionContainerProps.d.ts +3 -5
  196. package/internals/hooks/useField/useFieldSectionContainerProps.js +2 -4
  197. package/internals/hooks/useField/useFieldSectionContainerProps.mjs +2 -4
  198. package/internals/hooks/useField/useFieldSectionContentProps.d.mts +6 -7
  199. package/internals/hooks/useField/useFieldSectionContentProps.d.ts +6 -7
  200. package/internals/hooks/useField/useFieldSectionContentProps.js +2 -4
  201. package/internals/hooks/useField/useFieldSectionContentProps.mjs +2 -4
  202. package/internals/hooks/useField/useFieldState.d.mts +4 -4
  203. package/internals/hooks/useField/useFieldState.d.ts +4 -4
  204. package/internals/hooks/useField/useFieldState.js +3 -6
  205. package/internals/hooks/useField/useFieldState.mjs +3 -6
  206. package/internals/hooks/useMobilePicker/useMobilePicker.d.mts +2 -2
  207. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +2 -2
  208. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.mts +6 -6
  209. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +6 -6
  210. package/internals/hooks/useNullableFieldPrivateContext.d.mts +3 -2
  211. package/internals/hooks/useNullableFieldPrivateContext.d.ts +3 -2
  212. package/internals/hooks/usePicker/usePicker.js +13 -10
  213. package/internals/hooks/usePicker/usePicker.mjs +13 -10
  214. package/internals/hooks/usePicker/usePicker.types.d.mts +2 -1
  215. package/internals/hooks/usePicker/usePicker.types.d.ts +2 -1
  216. package/{PickersDay → internals/hooks}/usePickerDayOwnerState.d.mts +2 -3
  217. package/{PickersDay → internals/hooks}/usePickerDayOwnerState.d.ts +2 -3
  218. package/{PickersDay → internals/hooks}/usePickerDayOwnerState.js +3 -5
  219. package/{PickersDay → internals/hooks}/usePickerDayOwnerState.mjs +3 -5
  220. package/internals/index.d.mts +5 -4
  221. package/internals/index.d.ts +5 -4
  222. package/internals/index.js +16 -9
  223. package/internals/index.mjs +4 -3
  224. package/internals/models/manager.d.mts +3 -5
  225. package/internals/models/manager.d.ts +3 -5
  226. package/internals/utils/isElementInteractive.d.mts +1 -0
  227. package/internals/utils/isElementInteractive.d.ts +1 -0
  228. package/internals/utils/isElementInteractive.js +34 -0
  229. package/internals/utils/isElementInteractive.mjs +28 -0
  230. package/internals/utils/valueManagers.js +1 -2
  231. package/internals/utils/valueManagers.mjs +2 -3
  232. package/managers/index.d.mts +2 -2
  233. package/managers/index.d.ts +2 -2
  234. package/managers/useDateManager.d.mts +3 -6
  235. package/managers/useDateManager.d.ts +3 -6
  236. package/managers/useDateManager.js +2 -6
  237. package/managers/useDateManager.mjs +2 -6
  238. package/managers/useDateTimeManager.d.mts +3 -6
  239. package/managers/useDateTimeManager.d.ts +3 -6
  240. package/managers/useDateTimeManager.js +2 -6
  241. package/managers/useDateTimeManager.mjs +2 -6
  242. package/managers/useTimeManager.d.mts +4 -6
  243. package/managers/useTimeManager.d.ts +4 -6
  244. package/managers/useTimeManager.js +1 -3
  245. package/managers/useTimeManager.mjs +1 -3
  246. package/models/fields.d.mts +7 -4
  247. package/models/fields.d.ts +7 -4
  248. package/models/manager.d.mts +2 -8
  249. package/models/manager.d.ts +2 -8
  250. package/package.json +12 -26
  251. package/themeAugmentation/components.d.mts +4 -8
  252. package/themeAugmentation/components.d.ts +4 -8
  253. package/themeAugmentation/overrides.d.mts +2 -4
  254. package/themeAugmentation/overrides.d.ts +2 -4
  255. package/themeAugmentation/props.d.mts +5 -7
  256. package/themeAugmentation/props.d.ts +5 -7
  257. package/PickerDay2/PickerDay2.d.mts +0 -7
  258. package/PickerDay2/PickerDay2.d.ts +0 -7
  259. package/PickerDay2/PickerDay2.types.d.mts +0 -18
  260. package/PickerDay2/PickerDay2.types.d.ts +0 -18
  261. package/PickerDay2/index.d.mts +0 -4
  262. package/PickerDay2/index.d.ts +0 -4
  263. package/PickerDay2/index.js +0 -25
  264. package/PickerDay2/index.mjs +0 -2
  265. package/PickerDay2/pickerDay2Classes.js +0 -14
  266. package/PickerDay2/pickerDay2Classes.mjs +0 -6
  267. package/PickersDay/PickersDay.d.mts +0 -15
  268. package/PickersDay/PickersDay.d.ts +0 -15
  269. package/PickersDay/PickersDay.js +0 -384
  270. package/PickersDay/PickersDay.mjs +0 -377
  271. package/PickersDay/PickersDay.types.d.mts +0 -114
  272. package/PickersDay/PickersDay.types.d.ts +0 -114
  273. package/PickersDay/index.d.mts +0 -4
  274. package/PickersDay/index.d.ts +0 -4
  275. package/PickersDay/index.js +0 -25
  276. package/PickersDay/index.mjs +0 -2
  277. package/PickersDay/pickersDayClasses.d.mts +0 -19
  278. package/PickersDay/pickersDayClasses.d.ts +0 -19
  279. package/PickersDay/pickersDayClasses.js +0 -14
  280. package/PickersDay/pickersDayClasses.mjs +0 -6
  281. package/internals/hooks/useField/useFieldRootHandleKeyDown.d.mts +0 -16
  282. package/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +0 -16
  283. package/internals/hooks/useField/useFieldRootHandleKeyDown.js +0 -211
  284. package/internals/hooks/useField/useFieldRootHandleKeyDown.mjs +0 -205
  285. package/internals/hooks/useField/useFieldV6TextField.d.mts +0 -26
  286. package/internals/hooks/useField/useFieldV6TextField.d.ts +0 -26
  287. package/internals/hooks/useField/useFieldV6TextField.js +0 -421
  288. package/internals/hooks/useField/useFieldV6TextField.mjs +0 -412
  289. package/internals/hooks/useField/useFieldV7TextField.d.mts +0 -3
  290. package/internals/hooks/useField/useFieldV7TextField.d.ts +0 -3
  291. package/internals/hooks/useField/useFieldV7TextField.js +0 -271
  292. package/internals/hooks/useField/useFieldV7TextField.mjs +0 -263
  293. /package/{PickerDay2/PickerDay2.types.js → PickerDay/PickerDay.types.js} +0 -0
  294. /package/{PickerDay2/PickerDay2.types.mjs → PickerDay/PickerDay.types.mjs} +0 -0
  295. /package/{PickersDay/PickersDay.types.js → internals/hooks/PickerDay.types.js} +0 -0
  296. /package/{PickersDay/PickersDay.types.mjs → internals/hooks/PickerDay.types.mjs} +0 -0
@@ -1,263 +0,0 @@
1
- 'use client';
2
-
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
- import _formatErrorMessage from "@mui/x-internals/formatErrorMessage";
5
- import * as React from 'react';
6
- import useForkRef from '@mui/utils/useForkRef';
7
- import useEventCallback from '@mui/utils/useEventCallback';
8
- import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
9
- import { parseSelectedSections } from "./useField.utils.mjs";
10
- import { getActiveElement } from "../../utils/utils.mjs";
11
- import { useSplitFieldProps } from "../../../hooks/index.mjs";
12
- import { useFieldCharacterEditing } from "./useFieldCharacterEditing.mjs";
13
- import { useFieldState } from "./useFieldState.mjs";
14
- import { useFieldInternalPropsWithDefaults } from "./useFieldInternalPropsWithDefaults.mjs";
15
- import { syncSelectionToDOM } from "./syncSelectionToDOM.mjs";
16
- import { useFieldRootProps } from "./useFieldRootProps.mjs";
17
- import { useFieldHiddenInputProps } from "./useFieldHiddenInputProps.mjs";
18
- import { useFieldSectionContainerProps } from "./useFieldSectionContainerProps.mjs";
19
- import { useFieldSectionContentProps } from "./useFieldSectionContentProps.mjs";
20
- export const useFieldV7TextField = parameters => {
21
- const {
22
- props,
23
- manager,
24
- skipContextFieldRefAssignment,
25
- manager: {
26
- valueType,
27
- internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
28
- }
29
- } = parameters;
30
- const {
31
- internalProps,
32
- forwardedProps
33
- } = useSplitFieldProps(props, valueType);
34
- const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
35
- manager,
36
- internalProps,
37
- skipContextFieldRefAssignment
38
- });
39
- const {
40
- sectionListRef: sectionListRefProp,
41
- onBlur,
42
- onClick,
43
- onFocus,
44
- onInput,
45
- onPaste,
46
- onKeyDown,
47
- onClear,
48
- clearable
49
- } = forwardedProps;
50
- const {
51
- disabled = false,
52
- readOnly = false,
53
- autoFocus = false,
54
- focused: focusedProp,
55
- unstableFieldRef
56
- } = internalPropsWithDefaults;
57
- const sectionListRef = React.useRef(null);
58
- const handleSectionListRef = useForkRef(sectionListRefProp, sectionListRef);
59
- const domGetters = React.useMemo(() => ({
60
- isReady: () => sectionListRef.current != null,
61
- getRoot: () => sectionListRef.current.getRoot(),
62
- getSectionContainer: sectionIndex => sectionListRef.current.getSectionContainer(sectionIndex),
63
- getSectionContent: sectionIndex => sectionListRef.current.getSectionContent(sectionIndex),
64
- getSectionIndexFromDOMElement: element => sectionListRef.current.getSectionIndexFromDOMElement(element)
65
- }), [sectionListRef]);
66
- const stateResponse = useFieldState({
67
- manager,
68
- internalPropsWithDefaults,
69
- forwardedProps
70
- });
71
- const {
72
- // States and derived states
73
- areAllSectionsEmpty,
74
- error,
75
- parsedSelectedSections,
76
- sectionOrder,
77
- state,
78
- value,
79
- // Methods to update the states
80
- clearValue,
81
- setSelectedSections
82
- } = stateResponse;
83
- const applyCharacterEditing = useFieldCharacterEditing({
84
- stateResponse
85
- });
86
- const openPickerAriaLabel = useOpenPickerButtonAriaLabel(value);
87
- const [focused, setFocused] = React.useState(false);
88
- function focusField(newSelectedSections = 0) {
89
- if (disabled || !sectionListRef.current ||
90
- // if the field is already focused, we don't need to focus it again
91
- getActiveSectionIndex(sectionListRef) != null) {
92
- return;
93
- }
94
- const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);
95
- setFocused(true);
96
- sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();
97
- }
98
- const rootProps = useFieldRootProps({
99
- manager,
100
- internalPropsWithDefaults,
101
- stateResponse,
102
- applyCharacterEditing,
103
- focused,
104
- setFocused,
105
- domGetters
106
- });
107
- const hiddenInputProps = useFieldHiddenInputProps({
108
- manager,
109
- stateResponse
110
- });
111
- const createSectionContainerProps = useFieldSectionContainerProps({
112
- stateResponse,
113
- internalPropsWithDefaults
114
- });
115
- const createSectionContentProps = useFieldSectionContentProps({
116
- manager,
117
- stateResponse,
118
- applyCharacterEditing,
119
- internalPropsWithDefaults,
120
- domGetters,
121
- focused
122
- });
123
- const handleRootKeyDown = useEventCallback(event => {
124
- onKeyDown?.(event);
125
- rootProps.onKeyDown(event);
126
- });
127
- const handleRootBlur = useEventCallback(event => {
128
- onBlur?.(event);
129
- rootProps.onBlur(event);
130
- });
131
- const handleRootFocus = useEventCallback(event => {
132
- onFocus?.(event);
133
- rootProps.onFocus(event);
134
- });
135
- const handleRootClick = useEventCallback(event => {
136
- // The click event on the clear or open button would propagate to the input, trigger this handler and result in an inadvertent section selection.
137
- // We avoid this by checking if the call of `handleInputClick` is actually intended, or a propagated call, which should be skipped.
138
- if (event.isDefaultPrevented()) {
139
- return;
140
- }
141
- onClick?.(event);
142
- rootProps.onClick(event);
143
- });
144
- const handleRootPaste = useEventCallback(event => {
145
- onPaste?.(event);
146
- rootProps.onPaste(event);
147
- });
148
- const handleRootInput = useEventCallback(event => {
149
- onInput?.(event);
150
- rootProps.onInput(event);
151
- });
152
- const handleClear = useEventCallback((event, ...args) => {
153
- event.preventDefault();
154
- onClear?.(event, ...args);
155
- clearValue();
156
- if (!isFieldFocused(sectionListRef)) {
157
- // setSelectedSections is called internally
158
- focusField(0);
159
- } else {
160
- setSelectedSections(sectionOrder.startIndex);
161
- }
162
- });
163
- const elements = React.useMemo(() => {
164
- return state.sections.map((section, sectionIndex) => {
165
- const content = createSectionContentProps(section, sectionIndex);
166
- return {
167
- container: createSectionContainerProps(sectionIndex),
168
- content: createSectionContentProps(section, sectionIndex),
169
- before: {
170
- children: section.startSeparator
171
- },
172
- after: {
173
- children: section.endSeparator,
174
- 'data-range-position': section.isEndFormatSeparator ? content['data-range-position'] : undefined
175
- }
176
- };
177
- });
178
- }, [state.sections, createSectionContainerProps, createSectionContentProps]);
179
- React.useEffect(() => {
180
- if (sectionListRef.current == null) {
181
- throw new Error(process.env.NODE_ENV !== "production" ? `MUI X: The \`sectionListRef\` prop has not been initialized by \`PickersSectionList\`
182
- You probably tried to pass a component to the \`textField\` slot that contains an \`<input />\` element instead of a \`PickersSectionList\`.
183
-
184
- If you want to keep using an \`<input />\` HTML element for the editing, please add the \`enableAccessibleFieldDOMStructure={false}\` prop to your Picker or Field component:
185
-
186
- <DatePicker enableAccessibleFieldDOMStructure={false} slots={{ textField: MyCustomTextField }} />
187
-
188
- Learn more about the field accessible DOM structure on the MUI documentation: https://mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element` : _formatErrorMessage(159));
189
- }
190
- if (autoFocus && !disabled && sectionListRef.current) {
191
- sectionListRef.current.getSectionContent(sectionOrder.startIndex).focus();
192
- }
193
- }, []); // eslint-disable-line react-hooks/exhaustive-deps
194
-
195
- useEnhancedEffect(() => {
196
- if (!focused || !sectionListRef.current) {
197
- return;
198
- }
199
- if (parsedSelectedSections === 'all') {
200
- sectionListRef.current.getRoot().focus();
201
- } else if (typeof parsedSelectedSections === 'number') {
202
- const domElement = sectionListRef.current.getSectionContent(parsedSelectedSections);
203
- if (domElement) {
204
- domElement.focus();
205
- }
206
- }
207
- }, [parsedSelectedSections, focused]);
208
- useEnhancedEffect(() => {
209
- syncSelectionToDOM({
210
- focused,
211
- domGetters,
212
- stateResponse
213
- });
214
- });
215
- React.useImperativeHandle(unstableFieldRef, () => ({
216
- getSections: () => state.sections,
217
- getActiveSectionIndex: () => getActiveSectionIndex(sectionListRef),
218
- setSelectedSections: newSelectedSections => {
219
- if (disabled || !sectionListRef.current) {
220
- return;
221
- }
222
- const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);
223
- const newActiveSectionIndex = newParsedSelectedSections === 'all' ? 0 : newParsedSelectedSections;
224
- setFocused(newActiveSectionIndex !== null);
225
- setSelectedSections(newSelectedSections);
226
- },
227
- focusField,
228
- isFieldFocused: () => isFieldFocused(sectionListRef)
229
- }));
230
- return _extends({}, forwardedProps, rootProps, {
231
- onBlur: handleRootBlur,
232
- onClick: handleRootClick,
233
- onFocus: handleRootFocus,
234
- onInput: handleRootInput,
235
- onPaste: handleRootPaste,
236
- onKeyDown: handleRootKeyDown,
237
- onClear: handleClear
238
- }, hiddenInputProps, {
239
- error,
240
- clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled),
241
- focused: focusedProp ?? focused,
242
- sectionListRef: handleSectionListRef,
243
- // Additional
244
- enableAccessibleFieldDOMStructure: true,
245
- elements,
246
- areAllSectionsEmpty,
247
- disabled,
248
- readOnly,
249
- autoFocus,
250
- openPickerAriaLabel
251
- });
252
- };
253
- function getActiveSectionIndex(sectionListRef) {
254
- const activeElement = getActiveElement(sectionListRef.current?.getRoot());
255
- if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {
256
- return null;
257
- }
258
- return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);
259
- }
260
- function isFieldFocused(sectionListRef) {
261
- const activeElement = getActiveElement(sectionListRef.current?.getRoot());
262
- return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);
263
- }