@mui/x-date-pickers 7.0.0-alpha.4 → 7.0.0-alpha.6

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 (252) hide show
  1. package/CHANGELOG.md +342 -0
  2. package/DateCalendar/DateCalendar.types.d.ts +6 -6
  3. package/DateCalendar/DayCalendar.d.ts +4 -4
  4. package/DateCalendar/index.d.ts +1 -1
  5. package/DateField/DateField.js +17 -50
  6. package/DateField/DateField.types.d.ts +5 -9
  7. package/DateField/useDateField.d.ts +2 -2
  8. package/DateField/useDateField.js +1 -5
  9. package/DatePicker/DatePicker.js +5 -1
  10. package/DatePicker/DatePicker.types.d.ts +6 -6
  11. package/DatePicker/index.d.ts +1 -1
  12. package/DatePicker/shared.d.ts +6 -6
  13. package/DateTimeField/DateTimeField.js +17 -50
  14. package/DateTimeField/DateTimeField.types.d.ts +5 -9
  15. package/DateTimeField/useDateTimeField.d.ts +2 -2
  16. package/DateTimeField/useDateTimeField.js +1 -5
  17. package/DateTimePicker/DateTimePicker.js +5 -1
  18. package/DateTimePicker/DateTimePicker.types.d.ts +6 -6
  19. package/DateTimePicker/index.d.ts +1 -1
  20. package/DateTimePicker/shared.d.ts +6 -6
  21. package/DesktopDatePicker/DesktopDatePicker.js +7 -2
  22. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +6 -6
  23. package/DesktopDatePicker/index.d.ts +1 -1
  24. package/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  25. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +8 -8
  26. package/DesktopDateTimePicker/index.d.ts +1 -1
  27. package/DesktopTimePicker/DesktopTimePicker.js +5 -1
  28. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +8 -8
  29. package/DesktopTimePicker/index.d.ts +1 -1
  30. package/DigitalClock/DigitalClock.types.d.ts +4 -4
  31. package/DigitalClock/index.d.ts +1 -1
  32. package/MobileDatePicker/MobileDatePicker.js +7 -2
  33. package/MobileDatePicker/MobileDatePicker.types.d.ts +6 -6
  34. package/MobileDatePicker/index.d.ts +1 -1
  35. package/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  36. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +6 -6
  37. package/MobileDateTimePicker/index.d.ts +1 -1
  38. package/MobileTimePicker/MobileTimePicker.js +5 -1
  39. package/MobileTimePicker/MobileTimePicker.types.d.ts +6 -6
  40. package/MobileTimePicker/index.d.ts +1 -1
  41. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +4 -4
  42. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +3 -3
  43. package/MultiSectionDigitalClock/index.d.ts +1 -1
  44. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +8 -8
  45. package/PickersCalendarHeader/index.d.ts +1 -1
  46. package/PickersLayout/PickersLayout.types.d.ts +6 -6
  47. package/PickersLayout/index.d.ts +1 -1
  48. package/PickersSectionList/PickersSectionList.d.ts +11 -0
  49. package/PickersSectionList/PickersSectionList.js +223 -0
  50. package/PickersSectionList/PickersSectionList.types.d.ts +56 -0
  51. package/PickersSectionList/index.d.ts +4 -0
  52. package/PickersSectionList/index.js +2 -0
  53. package/PickersSectionList/package.json +6 -0
  54. package/PickersSectionList/pickersSectionListClasses.d.ts +11 -0
  55. package/PickersSectionList/pickersSectionListClasses.js +6 -0
  56. package/StaticDatePicker/StaticDatePicker.js +1 -1
  57. package/StaticDatePicker/StaticDatePicker.types.d.ts +7 -7
  58. package/StaticDatePicker/index.d.ts +1 -1
  59. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +7 -7
  60. package/StaticDateTimePicker/index.d.ts +1 -1
  61. package/StaticTimePicker/StaticTimePicker.types.d.ts +7 -7
  62. package/StaticTimePicker/index.d.ts +1 -1
  63. package/TimeClock/TimeClock.types.d.ts +5 -5
  64. package/TimeClock/index.d.ts +1 -1
  65. package/TimeField/TimeField.js +17 -50
  66. package/TimeField/TimeField.types.d.ts +5 -9
  67. package/TimeField/useTimeField.d.ts +2 -2
  68. package/TimeField/useTimeField.js +1 -5
  69. package/TimePicker/TimePicker.js +5 -1
  70. package/TimePicker/TimePicker.types.d.ts +6 -6
  71. package/TimePicker/index.d.ts +1 -1
  72. package/TimePicker/shared.d.ts +5 -5
  73. package/hooks/index.d.ts +1 -0
  74. package/hooks/useClearableField.d.ts +32 -20
  75. package/hooks/useClearableField.js +32 -33
  76. package/index.d.ts +1 -0
  77. package/index.js +4 -1
  78. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +9 -9
  79. package/internals/components/PickersArrowSwitcher/index.d.ts +3 -1
  80. package/internals/components/PickersArrowSwitcher/index.js +2 -1
  81. package/internals/components/{PickersTextField → PickersInput}/Outline.d.ts +1 -0
  82. package/internals/components/{PickersTextField → PickersInput}/Outline.js +35 -19
  83. package/internals/components/PickersInput/PickersFilledInput.d.ts +3 -0
  84. package/internals/components/PickersInput/PickersFilledInput.js +166 -0
  85. package/internals/components/PickersInput/PickersInput.d.ts +15 -0
  86. package/internals/components/{PickersTextField → PickersInput}/PickersInput.js +78 -106
  87. package/internals/components/PickersInput/PickersInput.types.d.ts +60 -0
  88. package/internals/components/PickersInput/PickersOutlinedInput.d.ts +3 -0
  89. package/internals/components/PickersInput/PickersOutlinedInput.js +117 -0
  90. package/internals/components/PickersInput/PickersStandardInput.d.ts +3 -0
  91. package/internals/components/PickersInput/PickersStandardInput.js +123 -0
  92. package/internals/components/PickersInput/index.d.ts +4 -0
  93. package/internals/components/PickersInput/index.js +3 -0
  94. package/internals/components/PickersInput/pickersInputClasses.d.ts +84 -0
  95. package/internals/components/PickersInput/pickersInputClasses.js +18 -0
  96. package/internals/components/PickersModalDialog.d.ts +4 -4
  97. package/internals/components/PickersPopper.d.ts +4 -4
  98. package/internals/components/PickersTextField/PickersTextField.d.ts +1 -2
  99. package/internals/components/PickersTextField/PickersTextField.js +15 -6
  100. package/internals/components/PickersTextField/PickersTextField.types.d.ts +46 -3
  101. package/internals/components/PickersTextField/pickersTextFieldClasses.d.ts +0 -31
  102. package/internals/components/PickersTextField/pickersTextFieldClasses.js +3 -6
  103. package/internals/hooks/useDesktopPicker/index.d.ts +1 -1
  104. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  105. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +8 -8
  106. package/internals/hooks/useField/index.d.ts +1 -1
  107. package/internals/hooks/useField/useField.js +11 -4
  108. package/internals/hooks/useField/useField.types.d.ts +4 -24
  109. package/internals/hooks/useField/useField.utils.js +24 -4
  110. package/internals/hooks/useField/useFieldState.js +7 -3
  111. package/internals/hooks/useMobilePicker/index.d.ts +1 -1
  112. package/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  113. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -7
  114. package/internals/hooks/useStaticPicker/index.d.ts +1 -1
  115. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +5 -5
  116. package/internals/index.d.ts +7 -6
  117. package/internals/index.js +1 -0
  118. package/internals/models/props/basePickerProps.d.ts +4 -0
  119. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +3 -0
  120. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +26 -0
  121. package/legacy/DateField/DateField.js +19 -47
  122. package/legacy/DateField/useDateField.js +1 -4
  123. package/legacy/DatePicker/DatePicker.js +5 -1
  124. package/legacy/DateTimeField/DateTimeField.js +19 -47
  125. package/legacy/DateTimeField/useDateTimeField.js +1 -4
  126. package/legacy/DateTimePicker/DateTimePicker.js +5 -1
  127. package/legacy/DesktopDatePicker/DesktopDatePicker.js +7 -2
  128. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  129. package/legacy/DesktopTimePicker/DesktopTimePicker.js +5 -1
  130. package/legacy/MobileDatePicker/MobileDatePicker.js +7 -2
  131. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  132. package/legacy/MobileTimePicker/MobileTimePicker.js +5 -1
  133. package/legacy/PickersSectionList/PickersSectionList.js +230 -0
  134. package/legacy/PickersSectionList/index.js +2 -0
  135. package/legacy/PickersSectionList/pickersSectionListClasses.js +6 -0
  136. package/legacy/StaticDatePicker/StaticDatePicker.js +1 -1
  137. package/legacy/TimeField/TimeField.js +19 -47
  138. package/legacy/TimeField/useTimeField.js +1 -4
  139. package/legacy/TimePicker/TimePicker.js +5 -1
  140. package/legacy/hooks/useClearableField.js +30 -32
  141. package/legacy/index.js +4 -1
  142. package/legacy/internals/components/PickersArrowSwitcher/index.js +2 -1
  143. package/legacy/internals/components/{PickersTextField → PickersInput}/Outline.js +40 -22
  144. package/legacy/internals/components/PickersInput/PickersFilledInput.js +161 -0
  145. package/legacy/internals/components/{PickersTextField → PickersInput}/PickersInput.js +75 -90
  146. package/legacy/internals/components/PickersInput/PickersInput.types.js +1 -0
  147. package/legacy/internals/components/PickersInput/PickersOutlinedInput.js +110 -0
  148. package/legacy/internals/components/PickersInput/PickersStandardInput.js +117 -0
  149. package/legacy/internals/components/PickersInput/index.js +3 -0
  150. package/legacy/internals/components/PickersInput/pickersInputClasses.js +18 -0
  151. package/legacy/internals/components/PickersTextField/PickersTextField.js +16 -7
  152. package/legacy/internals/components/PickersTextField/pickersTextFieldClasses.js +3 -6
  153. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  154. package/legacy/internals/hooks/useField/useField.js +12 -5
  155. package/legacy/internals/hooks/useField/useField.utils.js +26 -4
  156. package/legacy/internals/hooks/useField/useFieldState.js +7 -3
  157. package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  158. package/legacy/internals/index.js +1 -0
  159. package/legacy/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +24 -0
  160. package/legacy/locales/ruRU.js +1 -2
  161. package/locales/ruRU.js +1 -2
  162. package/models/fields.d.ts +2 -1
  163. package/modern/DateField/DateField.js +17 -50
  164. package/modern/DateField/useDateField.js +1 -5
  165. package/modern/DatePicker/DatePicker.js +5 -1
  166. package/modern/DateTimeField/DateTimeField.js +17 -50
  167. package/modern/DateTimeField/useDateTimeField.js +1 -5
  168. package/modern/DateTimePicker/DateTimePicker.js +5 -1
  169. package/modern/DesktopDatePicker/DesktopDatePicker.js +7 -2
  170. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  171. package/modern/DesktopTimePicker/DesktopTimePicker.js +5 -1
  172. package/modern/MobileDatePicker/MobileDatePicker.js +7 -2
  173. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  174. package/modern/MobileTimePicker/MobileTimePicker.js +5 -1
  175. package/modern/PickersSectionList/PickersSectionList.js +221 -0
  176. package/modern/PickersSectionList/PickersSectionList.types.js +1 -0
  177. package/modern/PickersSectionList/index.js +2 -0
  178. package/modern/PickersSectionList/pickersSectionListClasses.js +6 -0
  179. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  180. package/modern/TimeField/TimeField.js +17 -50
  181. package/modern/TimeField/useTimeField.js +1 -5
  182. package/modern/TimePicker/TimePicker.js +5 -1
  183. package/modern/hooks/useClearableField.js +32 -33
  184. package/modern/index.js +4 -1
  185. package/modern/internals/components/PickersArrowSwitcher/index.js +2 -1
  186. package/modern/internals/components/{PickersTextField → PickersInput}/Outline.js +35 -19
  187. package/modern/internals/components/PickersInput/PickersFilledInput.js +165 -0
  188. package/modern/internals/components/{PickersTextField → PickersInput}/PickersInput.js +78 -106
  189. package/modern/internals/components/PickersInput/PickersInput.types.js +1 -0
  190. package/modern/internals/components/PickersInput/PickersOutlinedInput.js +117 -0
  191. package/modern/internals/components/PickersInput/PickersStandardInput.js +123 -0
  192. package/modern/internals/components/PickersInput/index.js +3 -0
  193. package/modern/internals/components/PickersInput/pickersInputClasses.js +18 -0
  194. package/modern/internals/components/PickersTextField/PickersTextField.js +15 -6
  195. package/modern/internals/components/PickersTextField/pickersTextFieldClasses.js +3 -6
  196. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  197. package/modern/internals/hooks/useField/useField.js +11 -4
  198. package/modern/internals/hooks/useField/useField.utils.js +24 -4
  199. package/modern/internals/hooks/useField/useFieldState.js +7 -3
  200. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  201. package/modern/internals/index.js +1 -0
  202. package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +26 -0
  203. package/modern/locales/ruRU.js +1 -2
  204. package/node/DateField/DateField.js +18 -51
  205. package/node/DateField/useDateField.js +1 -5
  206. package/node/DatePicker/DatePicker.js +5 -1
  207. package/node/DateTimeField/DateTimeField.js +18 -51
  208. package/node/DateTimeField/useDateTimeField.js +1 -5
  209. package/node/DateTimePicker/DateTimePicker.js +5 -1
  210. package/node/DesktopDatePicker/DesktopDatePicker.js +10 -5
  211. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  212. package/node/DesktopTimePicker/DesktopTimePicker.js +5 -1
  213. package/node/MobileDatePicker/MobileDatePicker.js +10 -5
  214. package/node/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  215. package/node/MobileTimePicker/MobileTimePicker.js +5 -1
  216. package/node/PickersSectionList/PickersSectionList.js +228 -0
  217. package/node/PickersSectionList/index.js +49 -0
  218. package/node/PickersSectionList/pickersSectionListClasses.js +14 -0
  219. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  220. package/node/TimeField/TimeField.js +18 -51
  221. package/node/TimeField/useTimeField.js +1 -5
  222. package/node/TimePicker/TimePicker.js +5 -1
  223. package/node/hooks/useClearableField.js +33 -34
  224. package/node/index.js +13 -1
  225. package/node/internals/components/PickersArrowSwitcher/index.js +14 -1
  226. package/node/internals/components/{PickersTextField → PickersInput}/Outline.js +35 -19
  227. package/node/internals/components/PickersInput/PickersFilledInput.js +174 -0
  228. package/node/internals/components/{PickersTextField → PickersInput}/PickersInput.js +80 -108
  229. package/node/internals/components/PickersInput/PickersInput.types.js +5 -0
  230. package/node/internals/components/PickersInput/PickersOutlinedInput.js +125 -0
  231. package/node/internals/components/PickersInput/PickersStandardInput.js +132 -0
  232. package/node/internals/components/PickersInput/index.js +32 -0
  233. package/node/internals/components/PickersInput/pickersInputClasses.js +29 -0
  234. package/node/internals/components/PickersTextField/PickersTextField.js +15 -6
  235. package/node/internals/components/PickersTextField/pickersTextFieldClasses.js +6 -9
  236. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  237. package/node/internals/hooks/useField/useField.js +11 -4
  238. package/node/internals/hooks/useField/useField.utils.js +24 -4
  239. package/node/internals/hooks/useField/useFieldState.js +7 -3
  240. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  241. package/node/internals/index.js +7 -0
  242. package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +34 -0
  243. package/node/locales/ruRU.js +1 -2
  244. package/package.json +5 -5
  245. package/themeAugmentation/overrides.d.ts +5 -7
  246. package/themeAugmentation/props.d.ts +6 -8
  247. package/internals/components/PickersTextField/PickersInput.d.ts +0 -3
  248. package/internals/components/PickersTextField/PickersInput.types.d.ts +0 -45
  249. /package/{internals/components/PickersTextField/PickersInput.types.js → PickersSectionList/PickersSectionList.types.js} +0 -0
  250. /package/{legacy/internals/components/PickersTextField → internals/components/PickersInput}/PickersInput.types.js +0 -0
  251. /package/{modern/internals/components/PickersTextField/PickersInput.types.js → legacy/PickersSectionList/PickersSectionList.types.js} +0 -0
  252. /package/node/{internals/components/PickersTextField/PickersInput.types.js → PickersSectionList/PickersSectionList.types.js} +0 -0
@@ -1,8 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["slots", "slotProps", "InputProps", "inputProps"],
4
- _excluded2 = ["inputRef"],
5
- _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
3
+ var _excluded = ["slots", "slotProps", "InputProps", "inputProps"];
6
4
  import * as React from 'react';
7
5
  import PropTypes from 'prop-types';
8
6
  import MuiTextField from '@mui/material/TextField';
@@ -11,6 +9,7 @@ import { useSlotProps } from '@mui/base/utils';
11
9
  import { refType } from '@mui/utils';
12
10
  import { useDateField } from './useDateField';
13
11
  import { useClearableField } from '../hooks';
12
+ import { convertFieldResponseIntoMuiTextFieldProps } from '../internals/utils/convertFieldResponseIntoMuiTextFieldProps';
14
13
  import { jsx as _jsx } from "react/jsx-runtime";
15
14
  /**
16
15
  * Demos:
@@ -22,7 +21,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
22
21
  *
23
22
  * - [DateField API](https://mui.com/x/api/date-pickers/date-field/)
24
23
  */
25
- var DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, ref) {
24
+ var DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, inRef) {
26
25
  var _slots$textField;
27
26
  var themeProps = useThemeProps({
28
27
  props: inProps,
@@ -35,53 +34,26 @@ var DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, ref) {
35
34
  other = _objectWithoutProperties(themeProps, _excluded);
36
35
  var ownerState = themeProps;
37
36
  var TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : MuiTextField;
38
- var _useSlotProps = useSlotProps({
39
- elementType: TextField,
40
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
41
- externalForwardedProps: other,
42
- ownerState: ownerState
43
- }),
44
- externalInputRef = _useSlotProps.inputRef,
45
- textFieldProps = _objectWithoutProperties(_useSlotProps, _excluded2);
37
+ var textFieldProps = useSlotProps({
38
+ elementType: TextField,
39
+ externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
40
+ externalForwardedProps: other,
41
+ additionalProps: {
42
+ ref: inRef
43
+ },
44
+ ownerState: ownerState
45
+ });
46
46
 
47
47
  // TODO: Remove when mui/material-ui#35088 will be merged
48
48
  textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
49
49
  textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
50
- var _useDateField = useDateField({
51
- props: textFieldProps,
52
- inputRef: externalInputRef
53
- }),
54
- inputRef = _useDateField.ref,
55
- onPaste = _useDateField.onPaste,
56
- onKeyDown = _useDateField.onKeyDown,
57
- inputMode = _useDateField.inputMode,
58
- readOnly = _useDateField.readOnly,
59
- clearable = _useDateField.clearable,
60
- onClear = _useDateField.onClear,
61
- fieldProps = _objectWithoutProperties(_useDateField, _excluded3);
62
- var _useClearableField = useClearableField({
63
- onClear: onClear,
64
- clearable: clearable,
65
- fieldProps: fieldProps,
66
- InputProps: fieldProps.InputProps,
67
- slots: slots,
68
- slotProps: slotProps
69
- }),
70
- ProcessedInputProps = _useClearableField.InputProps,
71
- processedFieldProps = _useClearableField.fieldProps;
72
- return /*#__PURE__*/_jsx(TextField, _extends({
73
- ref: ref
74
- }, processedFieldProps, {
75
- InputProps: _extends({}, ProcessedInputProps, {
76
- readOnly: readOnly
77
- }),
78
- inputProps: _extends({}, fieldProps.inputProps, {
79
- inputMode: inputMode,
80
- onPaste: onPaste,
81
- onKeyDown: onKeyDown,
82
- ref: inputRef
83
- })
50
+ var fieldResponse = useDateField(textFieldProps);
51
+ var convertedFieldResponse = convertFieldResponseIntoMuiTextFieldProps(fieldResponse);
52
+ var processedFieldProps = useClearableField(_extends({}, convertedFieldResponse, {
53
+ slots: slots,
54
+ slotProps: slotProps
84
55
  }));
56
+ return /*#__PURE__*/_jsx(TextField, _extends({}, processedFieldProps));
85
57
  });
86
58
  process.env.NODE_ENV !== "production" ? DateField.propTypes = {
87
59
  // ----------------------------- Warning --------------------------------
@@ -259,7 +231,7 @@ process.env.NODE_ENV !== "production" ? DateField.propTypes = {
259
231
  * 4. If `null` is provided, no section will be selected
260
232
  * If not provided, the selected sections will be handled internally.
261
233
  */
262
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
234
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
263
235
  endIndex: PropTypes.number.isRequired,
264
236
  startIndex: PropTypes.number.isRequired
265
237
  })]),
@@ -17,15 +17,12 @@ var useDefaultizedDateField = function useDefaultizedDateField(props) {
17
17
  maxDate: applyDefaultDate(utils, props.maxDate, defaultDates.maxDate)
18
18
  });
19
19
  };
20
- export var useDateField = function useDateField(_ref) {
21
- var inProps = _ref.props,
22
- inputRef = _ref.inputRef;
20
+ export var useDateField = function useDateField(inProps) {
23
21
  var props = useDefaultizedDateField(inProps);
24
22
  var _splitFieldInternalAn = splitFieldInternalAndForwardedProps(props, 'date'),
25
23
  forwardedProps = _splitFieldInternalAn.forwardedProps,
26
24
  internalProps = _splitFieldInternalAn.internalProps;
27
25
  return useField({
28
- inputRef: inputRef,
29
26
  forwardedProps: forwardedProps,
30
27
  internalProps: internalProps,
31
28
  valueManager: singleItemValueManager,
@@ -159,6 +159,10 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
159
159
  * @default 3
160
160
  */
161
161
  monthsPerRow: PropTypes.oneOf([3, 4]),
162
+ /**
163
+ * Name attribute used by the `input` element in the Field.
164
+ */
165
+ name: PropTypes.string,
162
166
  /**
163
167
  * Callback fired when the value is accepted.
164
168
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -257,7 +261,7 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
257
261
  * 4. If `null` is provided, no section will be selected
258
262
  * If not provided, the selected sections will be handled internally.
259
263
  */
260
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
264
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
261
265
  endIndex: PropTypes.number.isRequired,
262
266
  startIndex: PropTypes.number.isRequired
263
267
  })]),
@@ -1,8 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["slots", "slotProps", "InputProps", "inputProps"],
4
- _excluded2 = ["inputRef"],
5
- _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
3
+ var _excluded = ["slots", "slotProps", "InputProps", "inputProps"];
6
4
  import * as React from 'react';
7
5
  import PropTypes from 'prop-types';
8
6
  import MuiTextField from '@mui/material/TextField';
@@ -11,6 +9,7 @@ import { useSlotProps } from '@mui/base/utils';
11
9
  import { refType } from '@mui/utils';
12
10
  import { useDateTimeField } from './useDateTimeField';
13
11
  import { useClearableField } from '../hooks';
12
+ import { convertFieldResponseIntoMuiTextFieldProps } from '../internals/utils/convertFieldResponseIntoMuiTextFieldProps';
14
13
  import { jsx as _jsx } from "react/jsx-runtime";
15
14
  /**
16
15
  * Demos:
@@ -22,7 +21,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
22
21
  *
23
22
  * - [DateTimeField API](https://mui.com/x/api/date-pickers/date-time-field/)
24
23
  */
25
- var DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, ref) {
24
+ var DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, inRef) {
26
25
  var _slots$textField;
27
26
  var themeProps = useThemeProps({
28
27
  props: inProps,
@@ -35,53 +34,26 @@ var DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps
35
34
  other = _objectWithoutProperties(themeProps, _excluded);
36
35
  var ownerState = themeProps;
37
36
  var TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : MuiTextField;
38
- var _useSlotProps = useSlotProps({
39
- elementType: TextField,
40
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
41
- externalForwardedProps: other,
42
- ownerState: ownerState
43
- }),
44
- externalInputRef = _useSlotProps.inputRef,
45
- textFieldProps = _objectWithoutProperties(_useSlotProps, _excluded2);
37
+ var textFieldProps = useSlotProps({
38
+ elementType: TextField,
39
+ externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
40
+ externalForwardedProps: other,
41
+ ownerState: ownerState,
42
+ additionalProps: {
43
+ ref: inRef
44
+ }
45
+ });
46
46
 
47
47
  // TODO: Remove when mui/material-ui#35088 will be merged
48
48
  textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
49
49
  textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
50
- var _useDateTimeField = useDateTimeField({
51
- props: textFieldProps,
52
- inputRef: externalInputRef
53
- }),
54
- inputRef = _useDateTimeField.ref,
55
- onPaste = _useDateTimeField.onPaste,
56
- onKeyDown = _useDateTimeField.onKeyDown,
57
- inputMode = _useDateTimeField.inputMode,
58
- readOnly = _useDateTimeField.readOnly,
59
- clearable = _useDateTimeField.clearable,
60
- onClear = _useDateTimeField.onClear,
61
- fieldProps = _objectWithoutProperties(_useDateTimeField, _excluded3);
62
- var _useClearableField = useClearableField({
63
- onClear: onClear,
64
- clearable: clearable,
65
- fieldProps: fieldProps,
66
- InputProps: fieldProps.InputProps,
67
- slots: slots,
68
- slotProps: slotProps
69
- }),
70
- ProcessedInputProps = _useClearableField.InputProps,
71
- processedFieldProps = _useClearableField.fieldProps;
72
- return /*#__PURE__*/_jsx(TextField, _extends({
73
- ref: ref
74
- }, processedFieldProps, {
75
- InputProps: _extends({}, ProcessedInputProps, {
76
- readOnly: readOnly
77
- }),
78
- inputProps: _extends({}, fieldProps.inputProps, {
79
- inputMode: inputMode,
80
- onPaste: onPaste,
81
- onKeyDown: onKeyDown,
82
- ref: inputRef
83
- })
50
+ var fieldResponse = useDateTimeField(textFieldProps);
51
+ var convertedFieldResponse = convertFieldResponseIntoMuiTextFieldProps(fieldResponse);
52
+ var processedFieldProps = useClearableField(_extends({}, convertedFieldResponse, {
53
+ slots: slots,
54
+ slotProps: slotProps
84
55
  }));
56
+ return /*#__PURE__*/_jsx(TextField, _extends({}, processedFieldProps));
85
57
  });
86
58
  process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
87
59
  // ----------------------------- Warning --------------------------------
@@ -292,7 +264,7 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
292
264
  * 4. If `null` is provided, no section will be selected
293
265
  * If not provided, the selected sections will be handled internally.
294
266
  */
295
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
267
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
296
268
  endIndex: PropTypes.number.isRequired,
297
269
  startIndex: PropTypes.number.isRequired
298
270
  })]),
@@ -22,15 +22,12 @@ var useDefaultizedDateTimeField = function useDefaultizedDateTimeField(props) {
22
22
  maxTime: (_props$maxDateTime2 = props.maxDateTime) != null ? _props$maxDateTime2 : props.maxTime
23
23
  });
24
24
  };
25
- export var useDateTimeField = function useDateTimeField(_ref) {
26
- var inProps = _ref.props,
27
- inputRef = _ref.inputRef;
25
+ export var useDateTimeField = function useDateTimeField(inProps) {
28
26
  var props = useDefaultizedDateTimeField(inProps);
29
27
  var _splitFieldInternalAn = splitFieldInternalAndForwardedProps(props, 'date-time'),
30
28
  forwardedProps = _splitFieldInternalAn.forwardedProps,
31
29
  internalProps = _splitFieldInternalAn.internalProps;
32
30
  return useField({
33
- inputRef: inputRef,
34
31
  forwardedProps: forwardedProps,
35
32
  internalProps: internalProps,
36
33
  valueManager: singleItemValueManager,
@@ -197,6 +197,10 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
197
197
  * @default 3
198
198
  */
199
199
  monthsPerRow: PropTypes.oneOf([3, 4]),
200
+ /**
201
+ * Name attribute used by the `input` element in the Field.
202
+ */
203
+ name: PropTypes.string,
200
204
  /**
201
205
  * Callback fired when the value is accepted.
202
206
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -295,7 +299,7 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
295
299
  * 4. If `null` is provided, no section will be selected
296
300
  * If not provided, the selected sections will be handled internally.
297
301
  */
298
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
302
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
299
303
  endIndex: PropTypes.number.isRequired,
300
304
  startIndex: PropTypes.number.isRequired
301
305
  })]),
@@ -5,7 +5,8 @@ import { resolveComponentProps } from '@mui/base/utils';
5
5
  import { refType } from '@mui/utils';
6
6
  import { singleItemValueManager } from '../internals/utils/valueManagers';
7
7
  import { useDatePickerDefaultizedProps } from '../DatePicker/shared';
8
- import { useLocaleText, useUtils, validateDate } from '../internals';
8
+ import { useLocaleText, useUtils } from '../internals/hooks/useUtils';
9
+ import { validateDate } from '../internals/utils/validation/validateDate';
9
10
  import { useDesktopPicker } from '../internals/hooks/useDesktopPicker';
10
11
  import { CalendarIcon } from '../icons';
11
12
  import { DateField } from '../DateField';
@@ -177,6 +178,10 @@ DesktopDatePicker.propTypes = {
177
178
  * @default 3
178
179
  */
179
180
  monthsPerRow: PropTypes.oneOf([3, 4]),
181
+ /**
182
+ * Name attribute used by the `input` element in the Field.
183
+ */
184
+ name: PropTypes.string,
180
185
  /**
181
186
  * Callback fired when the value is accepted.
182
187
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -275,7 +280,7 @@ DesktopDatePicker.propTypes = {
275
280
  * 4. If `null` is provided, no section will be selected
276
281
  * If not provided, the selected sections will be handled internally.
277
282
  */
278
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
283
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
279
284
  endIndex: PropTypes.number.isRequired,
280
285
  startIndex: PropTypes.number.isRequired
281
286
  })]),
@@ -253,6 +253,10 @@ DesktopDateTimePicker.propTypes = {
253
253
  * @default 3
254
254
  */
255
255
  monthsPerRow: PropTypes.oneOf([3, 4]),
256
+ /**
257
+ * Name attribute used by the `input` element in the Field.
258
+ */
259
+ name: PropTypes.string,
256
260
  /**
257
261
  * Callback fired when the value is accepted.
258
262
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -351,7 +355,7 @@ DesktopDateTimePicker.propTypes = {
351
355
  * 4. If `null` is provided, no section will be selected
352
356
  * If not provided, the selected sections will be handled internally.
353
357
  */
354
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
358
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
355
359
  endIndex: PropTypes.number.isRequired,
356
360
  startIndex: PropTypes.number.isRequired
357
361
  })]),
@@ -189,6 +189,10 @@ DesktopTimePicker.propTypes = {
189
189
  * @default 1
190
190
  */
191
191
  minutesStep: PropTypes.number,
192
+ /**
193
+ * Name attribute used by the `input` element in the Field.
194
+ */
195
+ name: PropTypes.string,
192
196
  /**
193
197
  * Callback fired when the value is accepted.
194
198
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -269,7 +273,7 @@ DesktopTimePicker.propTypes = {
269
273
  * 4. If `null` is provided, no section will be selected
270
274
  * If not provided, the selected sections will be handled internally.
271
275
  */
272
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
276
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
273
277
  endIndex: PropTypes.number.isRequired,
274
278
  startIndex: PropTypes.number.isRequired
275
279
  })]),
@@ -5,7 +5,8 @@ import { resolveComponentProps } from '@mui/base/utils';
5
5
  import { refType } from '@mui/utils';
6
6
  import { useMobilePicker } from '../internals/hooks/useMobilePicker';
7
7
  import { useDatePickerDefaultizedProps } from '../DatePicker/shared';
8
- import { useLocaleText, useUtils, validateDate } from '../internals';
8
+ import { useUtils, useLocaleText } from '../internals/hooks/useUtils';
9
+ import { validateDate } from '../internals/utils/validation/validateDate';
9
10
  import { DateField } from '../DateField';
10
11
  import { extractValidationProps } from '../internals/utils/validation/extractValidationProps';
11
12
  import { singleItemValueManager } from '../internals/utils/valueManagers';
@@ -174,6 +175,10 @@ MobileDatePicker.propTypes = {
174
175
  * @default 3
175
176
  */
176
177
  monthsPerRow: PropTypes.oneOf([3, 4]),
178
+ /**
179
+ * Name attribute used by the `input` element in the Field.
180
+ */
181
+ name: PropTypes.string,
177
182
  /**
178
183
  * Callback fired when the value is accepted.
179
184
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -272,7 +277,7 @@ MobileDatePicker.propTypes = {
272
277
  * 4. If `null` is provided, no section will be selected
273
278
  * If not provided, the selected sections will be handled internally.
274
279
  */
275
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
280
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
276
281
  endIndex: PropTypes.number.isRequired,
277
282
  startIndex: PropTypes.number.isRequired
278
283
  })]),
@@ -223,6 +223,10 @@ MobileDateTimePicker.propTypes = {
223
223
  * @default 3
224
224
  */
225
225
  monthsPerRow: PropTypes.oneOf([3, 4]),
226
+ /**
227
+ * Name attribute used by the `input` element in the Field.
228
+ */
229
+ name: PropTypes.string,
226
230
  /**
227
231
  * Callback fired when the value is accepted.
228
232
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -321,7 +325,7 @@ MobileDateTimePicker.propTypes = {
321
325
  * 4. If `null` is provided, no section will be selected
322
326
  * If not provided, the selected sections will be handled internally.
323
327
  */
324
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
328
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
325
329
  endIndex: PropTypes.number.isRequired,
326
330
  startIndex: PropTypes.number.isRequired
327
331
  })]),
@@ -167,6 +167,10 @@ MobileTimePicker.propTypes = {
167
167
  * @default 1
168
168
  */
169
169
  minutesStep: PropTypes.number,
170
+ /**
171
+ * Name attribute used by the `input` element in the Field.
172
+ */
173
+ name: PropTypes.string,
170
174
  /**
171
175
  * Callback fired when the value is accepted.
172
176
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -247,7 +251,7 @@ MobileTimePicker.propTypes = {
247
251
  * 4. If `null` is provided, no section will be selected
248
252
  * If not provided, the selected sections will be handled internally.
249
253
  */
250
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
254
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
251
255
  endIndex: PropTypes.number.isRequired,
252
256
  startIndex: PropTypes.number.isRequired
253
257
  })]),
@@ -0,0 +1,230 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ var _excluded = ["slots", "slotProps", "elements", "sectionListRef"];
4
+ import * as React from 'react';
5
+ import styled from '@mui/system/styled';
6
+ import PropTypes from 'prop-types';
7
+ import { useSlotProps } from '@mui/base/utils';
8
+ import composeClasses from '@mui/utils/composeClasses';
9
+ import useForkRef from '@mui/utils/useForkRef';
10
+ import { getPickersSectionListUtilityClass, pickersSectionListClasses } from './pickersSectionListClasses';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { jsxs as _jsxs } from "react/jsx-runtime";
13
+ export var PickersSectionListRoot = styled('div', {
14
+ name: 'MuiPickersSectionList',
15
+ slot: 'Root',
16
+ overridesResolver: function overridesResolver(props, styles) {
17
+ return styles.root;
18
+ }
19
+ })({
20
+ direction: 'ltr /*! @noflip */',
21
+ outline: 'none'
22
+ });
23
+ export var PickersSectionListSection = styled('span', {
24
+ name: 'MuiPickersSectionList',
25
+ slot: 'Section',
26
+ overridesResolver: function overridesResolver(props, styles) {
27
+ return styles.section;
28
+ }
29
+ })({});
30
+ export var PickersSectionListSectionSeparator = styled('span', {
31
+ name: 'MuiPickersSectionList',
32
+ slot: 'SectionSeparator',
33
+ overridesResolver: function overridesResolver(props, styles) {
34
+ return styles.sectionSeparator;
35
+ }
36
+ })({
37
+ whiteSpace: 'pre'
38
+ });
39
+ export var PickersSectionListSectionContent = styled('span', {
40
+ name: 'MuiPickersSectionList',
41
+ slot: 'SectionContent',
42
+ overridesResolver: function overridesResolver(props, styles) {
43
+ return styles.sectionContent;
44
+ }
45
+ })({
46
+ outline: 'none'
47
+ });
48
+ var useUtilityClasses = function useUtilityClasses(ownerState) {
49
+ var classes = ownerState.classes;
50
+ var slots = {
51
+ root: ['root'],
52
+ section: ['section'],
53
+ sectionContent: ['sectionContent']
54
+ };
55
+ return composeClasses(slots, getPickersSectionListUtilityClass, classes);
56
+ };
57
+ /**
58
+ * Demos:
59
+ *
60
+ * - [Custom field](https://mui.com/x/react-date-pickers/custom-field/)
61
+ *
62
+ * API:
63
+ *
64
+ * - [PickersSectionList API](https://mui.com/x/api/date-pickers/pickers-section-list/)
65
+ */
66
+ function PickersSection(props) {
67
+ var _slots$section, _slots$sectionContent, _slots$sectionSeparat;
68
+ var slots = props.slots,
69
+ slotProps = props.slotProps,
70
+ element = props.element,
71
+ classes = props.classes;
72
+ var Section = (_slots$section = slots == null ? void 0 : slots.section) != null ? _slots$section : PickersSectionListSection;
73
+ var sectionProps = useSlotProps({
74
+ elementType: Section,
75
+ externalSlotProps: slotProps == null ? void 0 : slotProps.section,
76
+ externalForwardedProps: element.container,
77
+ className: classes.section,
78
+ ownerState: {}
79
+ });
80
+ var SectionContent = (_slots$sectionContent = slots == null ? void 0 : slots.sectionContent) != null ? _slots$sectionContent : PickersSectionListSectionContent;
81
+ var sectionContentProps = useSlotProps({
82
+ elementType: SectionContent,
83
+ externalSlotProps: slotProps == null ? void 0 : slotProps.sectionContent,
84
+ externalForwardedProps: element.content,
85
+ additionalProps: {
86
+ suppressContentEditableWarning: true
87
+ },
88
+ className: classes.sectionContent,
89
+ ownerState: {}
90
+ });
91
+ var SectionSeparator = (_slots$sectionSeparat = slots == null ? void 0 : slots.sectionSeparator) != null ? _slots$sectionSeparat : PickersSectionListSectionSeparator;
92
+ var sectionSeparatorBeforeProps = useSlotProps({
93
+ elementType: SectionSeparator,
94
+ externalSlotProps: slotProps == null ? void 0 : slotProps.sectionSeparator,
95
+ externalForwardedProps: element.before,
96
+ ownerState: {
97
+ position: 'before'
98
+ }
99
+ });
100
+ var sectionSeparatorAfterProps = useSlotProps({
101
+ elementType: SectionSeparator,
102
+ externalSlotProps: slotProps == null ? void 0 : slotProps.sectionSeparator,
103
+ externalForwardedProps: element.after,
104
+ ownerState: {
105
+ position: 'after'
106
+ }
107
+ });
108
+ return /*#__PURE__*/_jsxs(Section, _extends({}, sectionProps, {
109
+ children: [/*#__PURE__*/_jsx(SectionSeparator, _extends({}, sectionSeparatorBeforeProps)), /*#__PURE__*/_jsx(SectionContent, _extends({}, sectionContentProps)), /*#__PURE__*/_jsx(SectionSeparator, _extends({}, sectionSeparatorAfterProps))]
110
+ }));
111
+ }
112
+ var PickersSectionList = /*#__PURE__*/React.forwardRef(function PickersSectionList(props, ref) {
113
+ var _slots$root;
114
+ var slots = props.slots,
115
+ slotProps = props.slotProps,
116
+ elements = props.elements,
117
+ sectionListRef = props.sectionListRef,
118
+ other = _objectWithoutProperties(props, _excluded);
119
+ var classes = useUtilityClasses(props);
120
+ var rootRef = React.useRef(null);
121
+ var handleRootRef = useForkRef(ref, rootRef);
122
+ var _getRoot = function getRoot(methodName) {
123
+ if (!rootRef.current) {
124
+ throw new Error("MUI: Cannot call sectionListRef.".concat(methodName, " before the mount of the component"));
125
+ }
126
+ return rootRef.current;
127
+ };
128
+ React.useImperativeHandle(sectionListRef, function () {
129
+ return {
130
+ getRoot: function getRoot() {
131
+ return _getRoot('getRoot');
132
+ },
133
+ getSectionContainer: function getSectionContainer(index) {
134
+ var root = _getRoot('getSectionContainer');
135
+ return root.querySelector(".".concat(pickersSectionListClasses.section, "[data-sectionindex=\"").concat(index, "\"]"));
136
+ },
137
+ getSectionContent: function getSectionContent(index) {
138
+ var root = _getRoot('getSectionContent');
139
+ return root.querySelector(".".concat(pickersSectionListClasses.section, "[data-sectionindex=\"").concat(index, "\"] .").concat(pickersSectionListClasses.sectionContent));
140
+ },
141
+ getSectionIndexFromDOMElement: function getSectionIndexFromDOMElement(element) {
142
+ var root = _getRoot('getSectionIndexFromDOMElement');
143
+ if (element == null || !root.contains(element)) {
144
+ return null;
145
+ }
146
+ var sectionContainer = null;
147
+ if (element.classList.contains(pickersSectionListClasses.section)) {
148
+ sectionContainer = element;
149
+ } else if (element.classList.contains(pickersSectionListClasses.sectionContent)) {
150
+ sectionContainer = element.parentElement;
151
+ }
152
+ if (sectionContainer == null) {
153
+ return null;
154
+ }
155
+ return Number(sectionContainer.dataset.sectionindex);
156
+ }
157
+ };
158
+ });
159
+ var Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : PickersSectionListRoot;
160
+ var rootProps = useSlotProps({
161
+ elementType: Root,
162
+ externalSlotProps: slotProps == null ? void 0 : slotProps.root,
163
+ externalForwardedProps: other,
164
+ additionalProps: {
165
+ ref: handleRootRef,
166
+ suppressContentEditableWarning: true
167
+ },
168
+ className: classes.root,
169
+ ownerState: {}
170
+ });
171
+ return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {
172
+ children: rootProps.contentEditable ? elements.map(function (_ref) {
173
+ var content = _ref.content,
174
+ before = _ref.before,
175
+ after = _ref.after;
176
+ return "".concat(before.children).concat(content.children).concat(after.children);
177
+ }).join('') : /*#__PURE__*/_jsx(React.Fragment, {
178
+ children: elements.map(function (element, elementIndex) {
179
+ return /*#__PURE__*/_jsx(PickersSection, {
180
+ slots: slots,
181
+ slotProps: slotProps,
182
+ element: element,
183
+ classes: classes
184
+ }, elementIndex);
185
+ })
186
+ })
187
+ }));
188
+ });
189
+ process.env.NODE_ENV !== "production" ? PickersSectionList.propTypes = {
190
+ // ----------------------------- Warning --------------------------------
191
+ // | These PropTypes are generated from the TypeScript type definitions |
192
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
193
+ // ----------------------------------------------------------------------
194
+ /**
195
+ * Override or extend the styles applied to the component.
196
+ */
197
+ classes: PropTypes.object,
198
+ /**
199
+ * If true, the whole element is editable.
200
+ * Useful when all the sections are selected.
201
+ */
202
+ contentEditable: PropTypes.bool.isRequired,
203
+ /**
204
+ * The elements to render.
205
+ * Each element contains the prop to edit a section of the value.
206
+ */
207
+ elements: PropTypes.arrayOf(PropTypes.shape({
208
+ after: PropTypes.object.isRequired,
209
+ before: PropTypes.object.isRequired,
210
+ container: PropTypes.object.isRequired,
211
+ content: PropTypes.object.isRequired
212
+ })).isRequired,
213
+ sectionListRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
214
+ current: PropTypes.shape({
215
+ getRoot: PropTypes.func.isRequired,
216
+ getSectionContainer: PropTypes.func.isRequired,
217
+ getSectionContent: PropTypes.func.isRequired,
218
+ getSectionIndexFromDOMElement: PropTypes.func.isRequired
219
+ })
220
+ })]),
221
+ /**
222
+ * The props used for each component slot.
223
+ */
224
+ slotProps: PropTypes.object,
225
+ /**
226
+ * Overridable component slots.
227
+ */
228
+ slots: PropTypes.object
229
+ } : void 0;
230
+ export { PickersSectionList };