@mui/x-date-pickers 9.0.0-alpha.4 → 9.0.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 (300) 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 +374 -2
  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 +22 -28
  17. package/DateField/DateField.mjs +22 -28
  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 +22 -28
  33. package/DateTimeField/DateTimeField.mjs +22 -28
  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 +2 -2
  67. package/DigitalClock/DigitalClock.mjs +3 -3
  68. package/LocalizationProvider/LocalizationProvider.d.mts +0 -6
  69. package/LocalizationProvider/LocalizationProvider.d.ts +0 -6
  70. package/LocalizationProvider/LocalizationProvider.js +1 -10
  71. package/LocalizationProvider/LocalizationProvider.mjs +0 -9
  72. package/LocalizationProvider/index.d.mts +1 -1
  73. package/LocalizationProvider/index.d.ts +1 -1
  74. package/LocalizationProvider/index.js +0 -6
  75. package/LocalizationProvider/index.mjs +1 -1
  76. package/MobileDatePicker/MobileDatePicker.d.mts +1 -1
  77. package/MobileDatePicker/MobileDatePicker.d.ts +1 -1
  78. package/MobileDatePicker/MobileDatePicker.js +1 -5
  79. package/MobileDatePicker/MobileDatePicker.mjs +1 -5
  80. package/MobileDatePicker/MobileDatePicker.types.d.mts +3 -3
  81. package/MobileDatePicker/MobileDatePicker.types.d.ts +3 -3
  82. package/MobileDateTimePicker/MobileDateTimePicker.d.mts +1 -1
  83. package/MobileDateTimePicker/MobileDateTimePicker.d.ts +1 -1
  84. package/MobileDateTimePicker/MobileDateTimePicker.js +1 -5
  85. package/MobileDateTimePicker/MobileDateTimePicker.mjs +1 -5
  86. package/MobileDateTimePicker/MobileDateTimePicker.types.d.mts +3 -3
  87. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +3 -3
  88. package/MobileTimePicker/MobileTimePicker.d.mts +1 -1
  89. package/MobileTimePicker/MobileTimePicker.d.ts +1 -1
  90. package/MobileTimePicker/MobileTimePicker.js +0 -4
  91. package/MobileTimePicker/MobileTimePicker.mjs +0 -4
  92. package/MobileTimePicker/MobileTimePicker.types.d.mts +3 -3
  93. package/MobileTimePicker/MobileTimePicker.types.d.ts +3 -3
  94. package/MonthCalendar/MonthCalendarButton.js +2 -2
  95. package/MonthCalendar/MonthCalendarButton.mjs +3 -3
  96. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +2 -2
  97. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.mjs +3 -3
  98. package/PickerDay/PickerDay.d.mts +14 -0
  99. package/PickerDay/PickerDay.d.ts +14 -0
  100. package/{PickerDay2/PickerDay2.js → PickerDay/PickerDay.js} +110 -45
  101. package/{PickerDay2/PickerDay2.mjs → PickerDay/PickerDay.mjs} +110 -45
  102. package/PickerDay/PickerDay.types.d.mts +137 -0
  103. package/PickerDay/PickerDay.types.d.ts +137 -0
  104. package/PickerDay/index.d.mts +4 -0
  105. package/PickerDay/index.d.ts +4 -0
  106. package/PickerDay/index.js +25 -0
  107. package/PickerDay/index.mjs +2 -0
  108. package/{PickerDay2/pickerDay2Classes.d.mts → PickerDay/pickerDayClasses.d.mts} +4 -4
  109. package/{PickerDay2/pickerDay2Classes.d.ts → PickerDay/pickerDayClasses.d.ts} +4 -4
  110. package/PickerDay/pickerDayClasses.js +14 -0
  111. package/PickerDay/pickerDayClasses.mjs +6 -0
  112. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +37 -16
  113. package/PickersTextField/PickersFilledInput/PickersFilledInput.mjs +37 -16
  114. package/PickersTextField/PickersInput/PickersInput.js +35 -14
  115. package/PickersTextField/PickersInput/PickersInput.mjs +35 -14
  116. package/PickersTextField/PickersInputBase/PickersInputBase.js +38 -8
  117. package/PickersTextField/PickersInputBase/PickersInputBase.mjs +38 -8
  118. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.mts +56 -13
  119. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +56 -13
  120. package/PickersTextField/PickersOutlinedInput/Outline.js +1 -1
  121. package/PickersTextField/PickersOutlinedInput/Outline.mjs +1 -1
  122. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +33 -11
  123. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.mjs +33 -11
  124. package/PickersTextField/PickersTextField.js +92 -39
  125. package/PickersTextField/PickersTextField.mjs +92 -39
  126. package/PickersTextField/PickersTextField.types.d.mts +56 -28
  127. package/PickersTextField/PickersTextField.types.d.ts +56 -28
  128. package/PickersTextField/index.d.mts +1 -1
  129. package/PickersTextField/index.d.ts +1 -1
  130. package/StaticDatePicker/StaticDatePicker.js +1 -1
  131. package/StaticDatePicker/StaticDatePicker.mjs +1 -1
  132. package/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  133. package/StaticDateTimePicker/StaticDateTimePicker.mjs +1 -1
  134. package/TimeField/TimeField.d.mts +1 -1
  135. package/TimeField/TimeField.d.ts +1 -1
  136. package/TimeField/TimeField.js +23 -29
  137. package/TimeField/TimeField.mjs +23 -29
  138. package/TimeField/TimeField.types.d.mts +2 -2
  139. package/TimeField/TimeField.types.d.ts +2 -2
  140. package/TimeField/useTimeField.d.mts +1 -1
  141. package/TimeField/useTimeField.d.ts +1 -1
  142. package/TimePicker/TimePicker.d.mts +1 -1
  143. package/TimePicker/TimePicker.d.ts +1 -1
  144. package/TimePicker/TimePicker.js +0 -4
  145. package/TimePicker/TimePicker.mjs +0 -4
  146. package/TimePicker/TimePicker.types.d.mts +3 -3
  147. package/TimePicker/TimePicker.types.d.ts +3 -3
  148. package/YearCalendar/YearCalendarButton.js +2 -2
  149. package/YearCalendar/YearCalendarButton.mjs +3 -3
  150. package/hooks/useParsedFormat.js +5 -7
  151. package/hooks/useParsedFormat.mjs +5 -7
  152. package/hooks/useSplitFieldProps.d.mts +1 -1
  153. package/hooks/useSplitFieldProps.d.ts +1 -1
  154. package/hooks/useSplitFieldProps.js +1 -1
  155. package/hooks/useSplitFieldProps.mjs +1 -1
  156. package/index.d.mts +1 -2
  157. package/index.d.ts +1 -2
  158. package/index.js +2 -14
  159. package/index.mjs +2 -3
  160. package/internals/components/PickerFieldUI.d.mts +11 -17
  161. package/internals/components/PickerFieldUI.d.ts +11 -17
  162. package/internals/components/PickerFieldUI.js +65 -114
  163. package/internals/components/PickerFieldUI.mjs +65 -114
  164. package/internals/components/PickerPopper/PickerPopper.js +3 -0
  165. package/internals/components/PickerPopper/PickerPopper.mjs +3 -0
  166. package/internals/components/PickersToolbar.js +3 -1
  167. package/internals/components/PickersToolbar.mjs +3 -1
  168. package/internals/demo/DemoContainer.js +6 -8
  169. package/internals/demo/DemoContainer.mjs +6 -8
  170. package/internals/hooks/PickerDay.types.d.mts +12 -0
  171. package/internals/hooks/PickerDay.types.d.ts +12 -0
  172. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.mts +2 -2
  173. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +2 -2
  174. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.mts +6 -6
  175. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +6 -6
  176. package/internals/hooks/useField/buildSectionsFromFormat.d.mts +0 -1
  177. package/internals/hooks/useField/buildSectionsFromFormat.d.ts +0 -1
  178. package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
  179. package/internals/hooks/useField/buildSectionsFromFormat.mjs +1 -1
  180. package/internals/hooks/useField/index.d.mts +1 -1
  181. package/internals/hooks/useField/index.d.ts +1 -1
  182. package/internals/hooks/useField/index.js +2 -8
  183. package/internals/hooks/useField/index.mjs +1 -1
  184. package/internals/hooks/useField/useField.d.mts +2 -2
  185. package/internals/hooks/useField/useField.d.ts +2 -2
  186. package/internals/hooks/useField/useField.js +265 -8
  187. package/internals/hooks/useField/useField.mjs +264 -8
  188. package/internals/hooks/useField/useField.types.d.mts +11 -50
  189. package/internals/hooks/useField/useField.types.d.ts +11 -50
  190. package/internals/hooks/useField/useField.utils.d.mts +2 -3
  191. package/internals/hooks/useField/useField.utils.d.ts +2 -3
  192. package/internals/hooks/useField/useField.utils.js +8 -65
  193. package/internals/hooks/useField/useField.utils.mjs +6 -62
  194. package/internals/hooks/useField/useFieldHiddenInputProps.d.mts +2 -4
  195. package/internals/hooks/useField/useFieldHiddenInputProps.d.ts +2 -4
  196. package/internals/hooks/useField/useFieldHiddenInputProps.js +1 -3
  197. package/internals/hooks/useField/useFieldHiddenInputProps.mjs +1 -3
  198. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +0 -1
  199. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.mjs +0 -1
  200. package/internals/hooks/useField/useFieldRootProps.d.mts +5 -5
  201. package/internals/hooks/useField/useFieldRootProps.d.ts +5 -5
  202. package/internals/hooks/useField/useFieldRootProps.js +183 -11
  203. package/internals/hooks/useField/useFieldRootProps.mjs +183 -11
  204. package/internals/hooks/useField/useFieldSectionContainerProps.d.mts +3 -5
  205. package/internals/hooks/useField/useFieldSectionContainerProps.d.ts +3 -5
  206. package/internals/hooks/useField/useFieldSectionContainerProps.js +2 -4
  207. package/internals/hooks/useField/useFieldSectionContainerProps.mjs +2 -4
  208. package/internals/hooks/useField/useFieldSectionContentProps.d.mts +6 -7
  209. package/internals/hooks/useField/useFieldSectionContentProps.d.ts +6 -7
  210. package/internals/hooks/useField/useFieldSectionContentProps.js +2 -4
  211. package/internals/hooks/useField/useFieldSectionContentProps.mjs +2 -4
  212. package/internals/hooks/useField/useFieldState.d.mts +4 -4
  213. package/internals/hooks/useField/useFieldState.d.ts +4 -4
  214. package/internals/hooks/useField/useFieldState.js +3 -6
  215. package/internals/hooks/useField/useFieldState.mjs +3 -6
  216. package/internals/hooks/useMobilePicker/useMobilePicker.d.mts +2 -2
  217. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +2 -2
  218. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.mts +6 -6
  219. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +6 -6
  220. package/internals/hooks/useNullableFieldPrivateContext.d.mts +1 -1
  221. package/internals/hooks/useNullableFieldPrivateContext.d.ts +1 -1
  222. package/internals/hooks/usePicker/usePicker.js +1 -3
  223. package/internals/hooks/usePicker/usePicker.mjs +1 -3
  224. package/{PickersDay → internals/hooks}/usePickerDayOwnerState.d.mts +2 -3
  225. package/{PickersDay → internals/hooks}/usePickerDayOwnerState.d.ts +2 -3
  226. package/{PickersDay → internals/hooks}/usePickerDayOwnerState.js +3 -5
  227. package/{PickersDay → internals/hooks}/usePickerDayOwnerState.mjs +3 -5
  228. package/internals/index.d.mts +4 -4
  229. package/internals/index.d.ts +4 -4
  230. package/internals/index.js +9 -9
  231. package/internals/index.mjs +3 -3
  232. package/internals/models/manager.d.mts +3 -5
  233. package/internals/models/manager.d.ts +3 -5
  234. package/internals/utils/valueManagers.js +1 -2
  235. package/internals/utils/valueManagers.mjs +2 -3
  236. package/managers/index.d.mts +2 -2
  237. package/managers/index.d.ts +2 -2
  238. package/managers/useDateManager.d.mts +3 -6
  239. package/managers/useDateManager.d.ts +3 -6
  240. package/managers/useDateManager.js +2 -6
  241. package/managers/useDateManager.mjs +2 -6
  242. package/managers/useDateTimeManager.d.mts +3 -6
  243. package/managers/useDateTimeManager.d.ts +3 -6
  244. package/managers/useDateTimeManager.js +2 -6
  245. package/managers/useDateTimeManager.mjs +2 -6
  246. package/managers/useTimeManager.d.mts +4 -6
  247. package/managers/useTimeManager.d.ts +4 -6
  248. package/managers/useTimeManager.js +1 -3
  249. package/managers/useTimeManager.mjs +1 -3
  250. package/models/fields.d.mts +3 -4
  251. package/models/fields.d.ts +3 -4
  252. package/models/manager.d.mts +2 -8
  253. package/models/manager.d.ts +2 -8
  254. package/package.json +55 -69
  255. package/themeAugmentation/components.d.mts +4 -8
  256. package/themeAugmentation/components.d.ts +4 -8
  257. package/themeAugmentation/overrides.d.mts +2 -4
  258. package/themeAugmentation/overrides.d.ts +2 -4
  259. package/themeAugmentation/props.d.mts +5 -7
  260. package/themeAugmentation/props.d.ts +5 -7
  261. package/PickerDay2/PickerDay2.d.mts +0 -7
  262. package/PickerDay2/PickerDay2.d.ts +0 -7
  263. package/PickerDay2/PickerDay2.types.d.mts +0 -18
  264. package/PickerDay2/PickerDay2.types.d.ts +0 -18
  265. package/PickerDay2/index.d.mts +0 -4
  266. package/PickerDay2/index.d.ts +0 -4
  267. package/PickerDay2/index.js +0 -25
  268. package/PickerDay2/index.mjs +0 -2
  269. package/PickerDay2/pickerDay2Classes.js +0 -14
  270. package/PickerDay2/pickerDay2Classes.mjs +0 -6
  271. package/PickersDay/PickersDay.d.mts +0 -15
  272. package/PickersDay/PickersDay.d.ts +0 -15
  273. package/PickersDay/PickersDay.js +0 -384
  274. package/PickersDay/PickersDay.mjs +0 -377
  275. package/PickersDay/PickersDay.types.d.mts +0 -114
  276. package/PickersDay/PickersDay.types.d.ts +0 -114
  277. package/PickersDay/index.d.mts +0 -4
  278. package/PickersDay/index.d.ts +0 -4
  279. package/PickersDay/index.js +0 -25
  280. package/PickersDay/index.mjs +0 -2
  281. package/PickersDay/pickersDayClasses.d.mts +0 -19
  282. package/PickersDay/pickersDayClasses.d.ts +0 -19
  283. package/PickersDay/pickersDayClasses.js +0 -14
  284. package/PickersDay/pickersDayClasses.mjs +0 -6
  285. package/internals/hooks/useField/useFieldRootHandleKeyDown.d.mts +0 -16
  286. package/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +0 -16
  287. package/internals/hooks/useField/useFieldRootHandleKeyDown.js +0 -211
  288. package/internals/hooks/useField/useFieldRootHandleKeyDown.mjs +0 -205
  289. package/internals/hooks/useField/useFieldV6TextField.d.mts +0 -26
  290. package/internals/hooks/useField/useFieldV6TextField.d.ts +0 -26
  291. package/internals/hooks/useField/useFieldV6TextField.js +0 -422
  292. package/internals/hooks/useField/useFieldV6TextField.mjs +0 -413
  293. package/internals/hooks/useField/useFieldV7TextField.d.mts +0 -3
  294. package/internals/hooks/useField/useFieldV7TextField.d.ts +0 -3
  295. package/internals/hooks/useField/useFieldV7TextField.js +0 -272
  296. package/internals/hooks/useField/useFieldV7TextField.mjs +0 -264
  297. /package/{PickerDay2/PickerDay2.types.js → PickerDay/PickerDay.types.js} +0 -0
  298. /package/{PickerDay2/PickerDay2.types.mjs → PickerDay/PickerDay.types.mjs} +0 -0
  299. /package/{PickersDay/PickersDay.types.js → internals/hooks/PickerDay.types.js} +0 -0
  300. /package/{PickersDay/PickersDay.types.mjs → internals/hooks/PickerDay.types.mjs} +0 -0
@@ -1,264 +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
- fieldRef
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(fieldRef, () => ({
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
- clearValue
230
- }));
231
- return _extends({}, forwardedProps, rootProps, {
232
- onBlur: handleRootBlur,
233
- onClick: handleRootClick,
234
- onFocus: handleRootFocus,
235
- onInput: handleRootInput,
236
- onPaste: handleRootPaste,
237
- onKeyDown: handleRootKeyDown,
238
- onClear: handleClear
239
- }, hiddenInputProps, {
240
- error,
241
- clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled),
242
- focused: focusedProp ?? focused,
243
- sectionListRef: handleSectionListRef,
244
- // Additional
245
- enableAccessibleFieldDOMStructure: true,
246
- elements,
247
- areAllSectionsEmpty,
248
- disabled,
249
- readOnly,
250
- autoFocus,
251
- openPickerAriaLabel
252
- });
253
- };
254
- function getActiveSectionIndex(sectionListRef) {
255
- const activeElement = getActiveElement(sectionListRef.current?.getRoot());
256
- if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {
257
- return null;
258
- }
259
- return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);
260
- }
261
- function isFieldFocused(sectionListRef) {
262
- const activeElement = getActiveElement(sectionListRef.current?.getRoot());
263
- return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);
264
- }