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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/CHANGELOG.md +122 -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/StaticDatePicker/StaticDatePicker.js +1 -1
  49. package/StaticDatePicker/StaticDatePicker.types.d.ts +7 -7
  50. package/StaticDatePicker/index.d.ts +1 -1
  51. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +7 -7
  52. package/StaticDateTimePicker/index.d.ts +1 -1
  53. package/StaticTimePicker/StaticTimePicker.types.d.ts +7 -7
  54. package/StaticTimePicker/index.d.ts +1 -1
  55. package/TimeClock/TimeClock.types.d.ts +5 -5
  56. package/TimeClock/index.d.ts +1 -1
  57. package/TimeField/TimeField.js +17 -50
  58. package/TimeField/TimeField.types.d.ts +5 -9
  59. package/TimeField/useTimeField.d.ts +2 -2
  60. package/TimeField/useTimeField.js +1 -5
  61. package/TimePicker/TimePicker.js +5 -1
  62. package/TimePicker/TimePicker.types.d.ts +6 -6
  63. package/TimePicker/index.d.ts +1 -1
  64. package/TimePicker/shared.d.ts +5 -5
  65. package/hooks/index.d.ts +1 -0
  66. package/hooks/useClearableField.d.ts +32 -20
  67. package/hooks/useClearableField.js +32 -33
  68. package/index.js +1 -1
  69. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +9 -9
  70. package/internals/components/PickersArrowSwitcher/index.d.ts +3 -1
  71. package/internals/components/PickersArrowSwitcher/index.js +2 -1
  72. package/internals/components/PickersModalDialog.d.ts +4 -4
  73. package/internals/components/PickersPopper.d.ts +4 -4
  74. package/internals/hooks/useDesktopPicker/index.d.ts +1 -1
  75. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  76. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +8 -8
  77. package/internals/hooks/useField/index.d.ts +1 -1
  78. package/internals/hooks/useField/useField.js +3 -3
  79. package/internals/hooks/useField/useField.types.d.ts +4 -24
  80. package/internals/hooks/useField/useField.utils.js +24 -4
  81. package/internals/hooks/useField/useFieldState.js +7 -3
  82. package/internals/hooks/useMobilePicker/index.d.ts +1 -1
  83. package/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  84. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -7
  85. package/internals/hooks/useStaticPicker/index.d.ts +1 -1
  86. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +5 -5
  87. package/internals/index.d.ts +7 -6
  88. package/internals/index.js +1 -0
  89. package/internals/models/props/basePickerProps.d.ts +4 -0
  90. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +3 -0
  91. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +26 -0
  92. package/legacy/DateField/DateField.js +19 -47
  93. package/legacy/DateField/useDateField.js +1 -4
  94. package/legacy/DatePicker/DatePicker.js +5 -1
  95. package/legacy/DateTimeField/DateTimeField.js +19 -47
  96. package/legacy/DateTimeField/useDateTimeField.js +1 -4
  97. package/legacy/DateTimePicker/DateTimePicker.js +5 -1
  98. package/legacy/DesktopDatePicker/DesktopDatePicker.js +7 -2
  99. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  100. package/legacy/DesktopTimePicker/DesktopTimePicker.js +5 -1
  101. package/legacy/MobileDatePicker/MobileDatePicker.js +7 -2
  102. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  103. package/legacy/MobileTimePicker/MobileTimePicker.js +5 -1
  104. package/legacy/StaticDatePicker/StaticDatePicker.js +1 -1
  105. package/legacy/TimeField/TimeField.js +19 -47
  106. package/legacy/TimeField/useTimeField.js +1 -4
  107. package/legacy/TimePicker/TimePicker.js +5 -1
  108. package/legacy/hooks/useClearableField.js +30 -32
  109. package/legacy/index.js +1 -1
  110. package/legacy/internals/components/PickersArrowSwitcher/index.js +2 -1
  111. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  112. package/legacy/internals/hooks/useField/useField.js +4 -4
  113. package/legacy/internals/hooks/useField/useField.utils.js +26 -4
  114. package/legacy/internals/hooks/useField/useFieldState.js +7 -3
  115. package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  116. package/legacy/internals/index.js +1 -0
  117. package/legacy/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +24 -0
  118. package/models/fields.d.ts +2 -1
  119. package/modern/DateField/DateField.js +17 -50
  120. package/modern/DateField/useDateField.js +1 -5
  121. package/modern/DatePicker/DatePicker.js +5 -1
  122. package/modern/DateTimeField/DateTimeField.js +17 -50
  123. package/modern/DateTimeField/useDateTimeField.js +1 -5
  124. package/modern/DateTimePicker/DateTimePicker.js +5 -1
  125. package/modern/DesktopDatePicker/DesktopDatePicker.js +7 -2
  126. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  127. package/modern/DesktopTimePicker/DesktopTimePicker.js +5 -1
  128. package/modern/MobileDatePicker/MobileDatePicker.js +7 -2
  129. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  130. package/modern/MobileTimePicker/MobileTimePicker.js +5 -1
  131. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  132. package/modern/TimeField/TimeField.js +17 -50
  133. package/modern/TimeField/useTimeField.js +1 -5
  134. package/modern/TimePicker/TimePicker.js +5 -1
  135. package/modern/hooks/useClearableField.js +32 -33
  136. package/modern/index.js +1 -1
  137. package/modern/internals/components/PickersArrowSwitcher/index.js +2 -1
  138. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  139. package/modern/internals/hooks/useField/useField.js +3 -3
  140. package/modern/internals/hooks/useField/useField.utils.js +24 -4
  141. package/modern/internals/hooks/useField/useFieldState.js +7 -3
  142. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  143. package/modern/internals/index.js +1 -0
  144. package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +26 -0
  145. package/node/DateField/DateField.js +18 -51
  146. package/node/DateField/useDateField.js +1 -5
  147. package/node/DatePicker/DatePicker.js +5 -1
  148. package/node/DateTimeField/DateTimeField.js +18 -51
  149. package/node/DateTimeField/useDateTimeField.js +1 -5
  150. package/node/DateTimePicker/DateTimePicker.js +5 -1
  151. package/node/DesktopDatePicker/DesktopDatePicker.js +10 -5
  152. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  153. package/node/DesktopTimePicker/DesktopTimePicker.js +5 -1
  154. package/node/MobileDatePicker/MobileDatePicker.js +10 -5
  155. package/node/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  156. package/node/MobileTimePicker/MobileTimePicker.js +5 -1
  157. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  158. package/node/TimeField/TimeField.js +18 -51
  159. package/node/TimeField/useTimeField.js +1 -5
  160. package/node/TimePicker/TimePicker.js +5 -1
  161. package/node/hooks/useClearableField.js +33 -34
  162. package/node/index.js +1 -1
  163. package/node/internals/components/PickersArrowSwitcher/index.js +14 -1
  164. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  165. package/node/internals/hooks/useField/useField.js +3 -3
  166. package/node/internals/hooks/useField/useField.utils.js +24 -4
  167. package/node/internals/hooks/useField/useFieldState.js +7 -3
  168. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  169. package/node/internals/index.js +7 -0
  170. package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +34 -0
  171. package/package.json +2 -2
  172. package/themeAugmentation/overrides.d.ts +5 -7
  173. package/themeAugmentation/props.d.ts +6 -8
@@ -1,8 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["slots", "slotProps", "InputProps", "inputProps"],
4
- _excluded2 = ["inputRef"],
5
- _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
3
+ const _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
- const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, ref) {
24
+ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, inRef) {
26
25
  const themeProps = useThemeProps({
27
26
  props: inProps,
28
27
  name: 'MuiDateTimeField'
@@ -36,58 +35,26 @@ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inPro
36
35
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
37
36
  const ownerState = themeProps;
38
37
  const TextField = slots?.textField ?? MuiTextField;
39
- const _useSlotProps = useSlotProps({
40
- elementType: TextField,
41
- externalSlotProps: slotProps?.textField,
42
- externalForwardedProps: other,
43
- ownerState
44
- }),
45
- {
46
- inputRef: externalInputRef
47
- } = _useSlotProps,
48
- textFieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
38
+ const textFieldProps = useSlotProps({
39
+ elementType: TextField,
40
+ externalSlotProps: slotProps?.textField,
41
+ externalForwardedProps: other,
42
+ ownerState,
43
+ additionalProps: {
44
+ ref: inRef
45
+ }
46
+ });
49
47
 
50
48
  // TODO: Remove when mui/material-ui#35088 will be merged
51
49
  textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
52
50
  textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
53
- const _useDateTimeField = useDateTimeField({
54
- props: textFieldProps,
55
- inputRef: externalInputRef
56
- }),
57
- {
58
- ref: inputRef,
59
- onPaste,
60
- onKeyDown,
61
- inputMode,
62
- readOnly,
63
- clearable,
64
- onClear
65
- } = _useDateTimeField,
66
- fieldProps = _objectWithoutPropertiesLoose(_useDateTimeField, _excluded3);
67
- const {
68
- InputProps: ProcessedInputProps,
69
- fieldProps: processedFieldProps
70
- } = useClearableField({
71
- onClear,
72
- clearable,
73
- fieldProps,
74
- InputProps: fieldProps.InputProps,
51
+ const fieldResponse = useDateTimeField(textFieldProps);
52
+ const convertedFieldResponse = convertFieldResponseIntoMuiTextFieldProps(fieldResponse);
53
+ const processedFieldProps = useClearableField(_extends({}, convertedFieldResponse, {
75
54
  slots,
76
55
  slotProps
77
- });
78
- return /*#__PURE__*/_jsx(TextField, _extends({
79
- ref: ref
80
- }, processedFieldProps, {
81
- InputProps: _extends({}, ProcessedInputProps, {
82
- readOnly
83
- }),
84
- inputProps: _extends({}, fieldProps.inputProps, {
85
- inputMode,
86
- onPaste,
87
- onKeyDown,
88
- ref: inputRef
89
- })
90
56
  }));
57
+ return /*#__PURE__*/_jsx(TextField, _extends({}, processedFieldProps));
91
58
  });
92
59
  process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
93
60
  // ----------------------------- Warning --------------------------------
@@ -298,7 +265,7 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
298
265
  * 4. If `null` is provided, no section will be selected
299
266
  * If not provided, the selected sections will be handled internally.
300
267
  */
301
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
268
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
302
269
  endIndex: PropTypes.number.isRequired,
303
270
  startIndex: PropTypes.number.isRequired
304
271
  })]),
@@ -21,17 +21,13 @@ const useDefaultizedDateTimeField = props => {
21
21
  maxTime: props.maxDateTime ?? props.maxTime
22
22
  });
23
23
  };
24
- export const useDateTimeField = ({
25
- props: inProps,
26
- inputRef
27
- }) => {
24
+ export const useDateTimeField = inProps => {
28
25
  const props = useDefaultizedDateTimeField(inProps);
29
26
  const {
30
27
  forwardedProps,
31
28
  internalProps
32
29
  } = splitFieldInternalAndForwardedProps(props, 'date-time');
33
30
  return useField({
34
- inputRef,
35
31
  forwardedProps,
36
32
  internalProps,
37
33
  valueManager: singleItemValueManager,
@@ -198,6 +198,10 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
198
198
  * @default 3
199
199
  */
200
200
  monthsPerRow: PropTypes.oneOf([3, 4]),
201
+ /**
202
+ * Name attribute used by the `input` element in the Field.
203
+ */
204
+ name: PropTypes.string,
201
205
  /**
202
206
  * Callback fired when the value is accepted.
203
207
  * @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.
@@ -296,7 +300,7 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
296
300
  * 4. If `null` is provided, no section will be selected
297
301
  * If not provided, the selected sections will be handled internally.
298
302
  */
299
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
303
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
300
304
  endIndex: PropTypes.number.isRequired,
301
305
  startIndex: PropTypes.number.isRequired
302
306
  })]),
@@ -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';
@@ -174,6 +175,10 @@ DesktopDatePicker.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 @@ DesktopDatePicker.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
  })]),
@@ -251,6 +251,10 @@ DesktopDateTimePicker.propTypes = {
251
251
  * @default 3
252
252
  */
253
253
  monthsPerRow: PropTypes.oneOf([3, 4]),
254
+ /**
255
+ * Name attribute used by the `input` element in the Field.
256
+ */
257
+ name: PropTypes.string,
254
258
  /**
255
259
  * Callback fired when the value is accepted.
256
260
  * @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.
@@ -349,7 +353,7 @@ DesktopDateTimePicker.propTypes = {
349
353
  * 4. If `null` is provided, no section will be selected
350
354
  * If not provided, the selected sections will be handled internally.
351
355
  */
352
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
356
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
353
357
  endIndex: PropTypes.number.isRequired,
354
358
  startIndex: PropTypes.number.isRequired
355
359
  })]),
@@ -185,6 +185,10 @@ DesktopTimePicker.propTypes = {
185
185
  * @default 1
186
186
  */
187
187
  minutesStep: PropTypes.number,
188
+ /**
189
+ * Name attribute used by the `input` element in the Field.
190
+ */
191
+ name: PropTypes.string,
188
192
  /**
189
193
  * Callback fired when the value is accepted.
190
194
  * @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.
@@ -265,7 +269,7 @@ DesktopTimePicker.propTypes = {
265
269
  * 4. If `null` is provided, no section will be selected
266
270
  * If not provided, the selected sections will be handled internally.
267
271
  */
268
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
272
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
269
273
  endIndex: PropTypes.number.isRequired,
270
274
  startIndex: PropTypes.number.isRequired
271
275
  })]),
@@ -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';
@@ -171,6 +172,10 @@ MobileDatePicker.propTypes = {
171
172
  * @default 3
172
173
  */
173
174
  monthsPerRow: PropTypes.oneOf([3, 4]),
175
+ /**
176
+ * Name attribute used by the `input` element in the Field.
177
+ */
178
+ name: PropTypes.string,
174
179
  /**
175
180
  * Callback fired when the value is accepted.
176
181
  * @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 +274,7 @@ MobileDatePicker.propTypes = {
269
274
  * 4. If `null` is provided, no section will be selected
270
275
  * If not provided, the selected sections will be handled internally.
271
276
  */
272
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
277
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
273
278
  endIndex: PropTypes.number.isRequired,
274
279
  startIndex: PropTypes.number.isRequired
275
280
  })]),
@@ -220,6 +220,10 @@ MobileDateTimePicker.propTypes = {
220
220
  * @default 3
221
221
  */
222
222
  monthsPerRow: PropTypes.oneOf([3, 4]),
223
+ /**
224
+ * Name attribute used by the `input` element in the Field.
225
+ */
226
+ name: PropTypes.string,
223
227
  /**
224
228
  * Callback fired when the value is accepted.
225
229
  * @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.
@@ -318,7 +322,7 @@ MobileDateTimePicker.propTypes = {
318
322
  * 4. If `null` is provided, no section will be selected
319
323
  * If not provided, the selected sections will be handled internally.
320
324
  */
321
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
325
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
322
326
  endIndex: PropTypes.number.isRequired,
323
327
  startIndex: PropTypes.number.isRequired
324
328
  })]),
@@ -164,6 +164,10 @@ MobileTimePicker.propTypes = {
164
164
  * @default 1
165
165
  */
166
166
  minutesStep: PropTypes.number,
167
+ /**
168
+ * Name attribute used by the `input` element in the Field.
169
+ */
170
+ name: PropTypes.string,
167
171
  /**
168
172
  * Callback fired when the value is accepted.
169
173
  * @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.
@@ -244,7 +248,7 @@ MobileTimePicker.propTypes = {
244
248
  * 4. If `null` is provided, no section will be selected
245
249
  * If not provided, the selected sections will be handled internally.
246
250
  */
247
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
251
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
248
252
  endIndex: PropTypes.number.isRequired,
249
253
  startIndex: PropTypes.number.isRequired
250
254
  })]),
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
4
4
  import { useDatePickerDefaultizedProps } from '../DatePicker/shared';
5
5
  import { renderDateViewCalendar } from '../dateViewRenderers';
6
6
  import { useStaticPicker } from '../internals/hooks/useStaticPicker';
7
- import { validateDate } from '../internals';
7
+ import { validateDate } from '../internals/utils/validation/validateDate';
8
8
  import { singleItemValueManager } from '../internals/utils/valueManagers';
9
9
  /**
10
10
  * Demos:
@@ -1,8 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["slots", "slotProps", "InputProps", "inputProps"],
4
- _excluded2 = ["inputRef"],
5
- _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
3
+ const _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 { useTimeField } from './useTimeField';
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
  * - [TimeField API](https://mui.com/x/api/date-pickers/time-field/)
24
23
  */
25
- const TimeField = /*#__PURE__*/React.forwardRef(function TimeField(inProps, ref) {
24
+ const TimeField = /*#__PURE__*/React.forwardRef(function TimeField(inProps, inRef) {
26
25
  const themeProps = useThemeProps({
27
26
  props: inProps,
28
27
  name: 'MuiTimeField'
@@ -36,58 +35,26 @@ const TimeField = /*#__PURE__*/React.forwardRef(function TimeField(inProps, ref)
36
35
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
37
36
  const ownerState = themeProps;
38
37
  const TextField = slots?.textField ?? MuiTextField;
39
- const _useSlotProps = useSlotProps({
40
- elementType: TextField,
41
- externalSlotProps: slotProps?.textField,
42
- externalForwardedProps: other,
43
- ownerState
44
- }),
45
- {
46
- inputRef: externalInputRef
47
- } = _useSlotProps,
48
- textFieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
38
+ const textFieldProps = useSlotProps({
39
+ elementType: TextField,
40
+ externalSlotProps: slotProps?.textField,
41
+ externalForwardedProps: other,
42
+ ownerState,
43
+ additionalProps: {
44
+ ref: inRef
45
+ }
46
+ });
49
47
 
50
48
  // TODO: Remove when mui/material-ui#35088 will be merged
51
49
  textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
52
50
  textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
53
- const _useTimeField = useTimeField({
54
- props: textFieldProps,
55
- inputRef: externalInputRef
56
- }),
57
- {
58
- ref: inputRef,
59
- onPaste,
60
- onKeyDown,
61
- inputMode,
62
- readOnly,
63
- clearable,
64
- onClear
65
- } = _useTimeField,
66
- fieldProps = _objectWithoutPropertiesLoose(_useTimeField, _excluded3);
67
- const {
68
- InputProps: ProcessedInputProps,
69
- fieldProps: processedFieldProps
70
- } = useClearableField({
71
- onClear,
72
- clearable,
73
- fieldProps,
74
- InputProps: fieldProps.InputProps,
51
+ const fieldResponse = useTimeField(textFieldProps);
52
+ const convertedFieldResponse = convertFieldResponseIntoMuiTextFieldProps(fieldResponse);
53
+ const processedFieldProps = useClearableField(_extends({}, convertedFieldResponse, {
75
54
  slots,
76
55
  slotProps
77
- });
78
- return /*#__PURE__*/_jsx(TextField, _extends({
79
- ref: ref
80
- }, processedFieldProps, {
81
- InputProps: _extends({}, ProcessedInputProps, {
82
- readOnly
83
- }),
84
- inputProps: _extends({}, fieldProps.inputProps, {
85
- inputMode,
86
- onPaste,
87
- onKeyDown,
88
- ref: inputRef
89
- })
90
56
  }));
57
+ return /*#__PURE__*/_jsx(TextField, _extends({}, processedFieldProps));
91
58
  });
92
59
  process.env.NODE_ENV !== "production" ? TimeField.propTypes = {
93
60
  // ----------------------------- Warning --------------------------------
@@ -282,7 +249,7 @@ process.env.NODE_ENV !== "production" ? TimeField.propTypes = {
282
249
  * 4. If `null` is provided, no section will be selected
283
250
  * If not provided, the selected sections will be handled internally.
284
251
  */
285
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
252
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
286
253
  endIndex: PropTypes.number.isRequired,
287
254
  startIndex: PropTypes.number.isRequired
288
255
  })]),
@@ -14,17 +14,13 @@ const useDefaultizedTimeField = props => {
14
14
  format: props.format ?? defaultFormat
15
15
  });
16
16
  };
17
- export const useTimeField = ({
18
- props: inProps,
19
- inputRef
20
- }) => {
17
+ export const useTimeField = inProps => {
21
18
  const props = useDefaultizedTimeField(inProps);
22
19
  const {
23
20
  forwardedProps,
24
21
  internalProps
25
22
  } = splitFieldInternalAndForwardedProps(props, 'time');
26
23
  return useField({
27
- inputRef,
28
24
  forwardedProps,
29
25
  internalProps,
30
26
  valueManager: singleItemValueManager,
@@ -149,6 +149,10 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes = {
149
149
  * @default 1
150
150
  */
151
151
  minutesStep: PropTypes.number,
152
+ /**
153
+ * Name attribute used by the `input` element in the Field.
154
+ */
155
+ name: PropTypes.string,
152
156
  /**
153
157
  * Callback fired when the value is accepted.
154
158
  * @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.
@@ -229,7 +233,7 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes = {
229
233
  * 4. If `null` is provided, no section will be selected
230
234
  * If not provided, the selected sections will be handled internally.
231
235
  */
232
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
236
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
233
237
  endIndex: PropTypes.number.isRequired,
234
238
  startIndex: PropTypes.number.isRequired
235
239
  })]),
@@ -1,23 +1,26 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["ownerState"];
3
+ const _excluded = ["clearable", "onClear", "InputProps", "sx", "slots", "slotProps"],
4
+ _excluded2 = ["ownerState"];
4
5
  import * as React from 'react';
5
6
  import { useSlotProps } from '@mui/base/utils';
6
7
  import MuiIconButton from '@mui/material/IconButton';
7
8
  import InputAdornment from '@mui/material/InputAdornment';
8
9
  import { ClearIcon } from '../icons';
9
- import { useLocaleText } from '../internals';
10
+ import { useLocaleText } from '../internals/hooks/useUtils';
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
12
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
- export const useClearableField = ({
13
- clearable,
14
- fieldProps: forwardedFieldProps,
15
- InputProps: ForwardedInputProps,
16
- onClear,
17
- slots,
18
- slotProps
19
- }) => {
13
+ export const useClearableField = props => {
20
14
  const localeText = useLocaleText();
15
+ const {
16
+ clearable,
17
+ onClear,
18
+ InputProps,
19
+ sx,
20
+ slots,
21
+ slotProps
22
+ } = props,
23
+ other = _objectWithoutPropertiesLoose(props, _excluded);
21
24
  const IconButton = slots?.clearButton ?? MuiIconButton;
22
25
  // The spread is here to avoid this bug mui/material-ui#34056
23
26
  const _useSlotProps = useSlotProps({
@@ -29,30 +32,30 @@ export const useClearableField = ({
29
32
  title: localeText.fieldClearLabel
30
33
  }
31
34
  }),
32
- iconButtonProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded);
35
+ iconButtonProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
33
36
  const EndClearIcon = slots?.clearIcon ?? ClearIcon;
34
37
  const endClearIconProps = useSlotProps({
35
38
  elementType: EndClearIcon,
36
39
  externalSlotProps: slotProps?.clearIcon,
37
40
  ownerState: {}
38
41
  });
39
- const InputProps = _extends({}, ForwardedInputProps, {
40
- endAdornment: clearable ? /*#__PURE__*/_jsxs(React.Fragment, {
41
- children: [/*#__PURE__*/_jsx(InputAdornment, {
42
- position: "end",
43
- sx: {
44
- marginRight: ForwardedInputProps?.endAdornment ? -1 : -1.5
45
- },
46
- children: /*#__PURE__*/_jsx(IconButton, _extends({}, iconButtonProps, {
47
- onClick: onClear,
48
- children: /*#__PURE__*/_jsx(EndClearIcon, _extends({
49
- fontSize: "small"
50
- }, endClearIconProps))
51
- }))
52
- }), ForwardedInputProps?.endAdornment]
53
- }) : ForwardedInputProps?.endAdornment
54
- });
55
- const fieldProps = _extends({}, forwardedFieldProps, {
42
+ return _extends({}, other, {
43
+ InputProps: _extends({}, InputProps, {
44
+ endAdornment: clearable ? /*#__PURE__*/_jsxs(React.Fragment, {
45
+ children: [/*#__PURE__*/_jsx(InputAdornment, {
46
+ position: "end",
47
+ sx: {
48
+ marginRight: InputProps?.endAdornment ? -1 : -1.5
49
+ },
50
+ children: /*#__PURE__*/_jsx(IconButton, _extends({}, iconButtonProps, {
51
+ onClick: onClear,
52
+ children: /*#__PURE__*/_jsx(EndClearIcon, _extends({
53
+ fontSize: "small"
54
+ }, endClearIconProps))
55
+ }))
56
+ }), InputProps?.endAdornment]
57
+ }) : InputProps?.endAdornment
58
+ }),
56
59
  sx: [{
57
60
  '& .clearButton': {
58
61
  opacity: 1
@@ -67,10 +70,6 @@ export const useClearableField = ({
67
70
  }
68
71
  }
69
72
  }
70
- }, ...(Array.isArray(forwardedFieldProps.sx) ? forwardedFieldProps.sx : [forwardedFieldProps.sx])]
73
+ }, ...(Array.isArray(sx) ? sx : [sx])]
71
74
  });
72
- return {
73
- InputProps,
74
- fieldProps
75
- };
76
75
  };
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v7.0.0-alpha.4
2
+ * @mui/x-date-pickers v7.0.0-alpha.5
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -1 +1,2 @@
1
- export { PickersArrowSwitcher } from './PickersArrowSwitcher';
1
+ export { PickersArrowSwitcher } from './PickersArrowSwitcher';
2
+ export { pickersArrowSwitcherClasses, getPickersArrowSwitcherUtilityClass } from './pickersArrowSwitcherClasses';
@@ -36,6 +36,7 @@ export const useDesktopPicker = _ref => {
36
36
  format,
37
37
  formatDensity,
38
38
  timezone,
39
+ name,
39
40
  label,
40
41
  inputRef,
41
42
  readOnly,
@@ -103,6 +104,7 @@ export const useDesktopPicker = _ref => {
103
104
  formatDensity,
104
105
  timezone,
105
106
  label,
107
+ name,
106
108
  autoFocus: autoFocus && !props.open,
107
109
  focused: open ? true : undefined
108
110
  }),
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["onClick", "onKeyDown", "onFocus", "onBlur", "onMouseUp", "onPaste", "error", "clearable", "onClear", "disabled"];
3
+ const _excluded = ["inputRef", "onClick", "onKeyDown", "onFocus", "onBlur", "onMouseUp", "onPaste", "error", "clearable", "onClear", "disabled"];
4
4
  import * as React from 'react';
5
5
  import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
6
6
  import useEventCallback from '@mui/utils/useEventCallback';
@@ -28,7 +28,6 @@ export const useField = params => {
28
28
  timezone
29
29
  } = useFieldState(params);
30
30
  const {
31
- inputRef: inputRefProp,
32
31
  internalProps,
33
32
  internalProps: {
34
33
  readOnly = false,
@@ -36,6 +35,7 @@ export const useField = params => {
36
35
  minutesStep
37
36
  },
38
37
  forwardedProps: {
38
+ inputRef: inputRefProp,
39
39
  onClick,
40
40
  onKeyDown,
41
41
  onFocus,
@@ -427,7 +427,7 @@ export const useField = params => {
427
427
  onMouseUp: handleInputMouseUp,
428
428
  onClear: handleClearValue,
429
429
  error: inputError,
430
- ref: handleRef,
430
+ inputRef: handleRef,
431
431
  clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled)
432
432
  });
433
433
  };