@mui/x-date-pickers 7.0.0-alpha.3 → 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 (261) hide show
  1. package/AdapterLuxon/AdapterLuxon.d.ts +27 -27
  2. package/AdapterLuxon/AdapterLuxon.js +0 -1
  3. package/CHANGELOG.md +245 -0
  4. package/DateCalendar/DateCalendar.types.d.ts +6 -6
  5. package/DateCalendar/DayCalendar.d.ts +4 -4
  6. package/DateCalendar/index.d.ts +1 -1
  7. package/DateCalendar/useCalendarState.js +0 -1
  8. package/DateField/DateField.js +17 -50
  9. package/DateField/DateField.types.d.ts +5 -9
  10. package/DateField/useDateField.d.ts +2 -2
  11. package/DateField/useDateField.js +1 -5
  12. package/DatePicker/DatePicker.js +5 -1
  13. package/DatePicker/DatePicker.types.d.ts +6 -6
  14. package/DatePicker/index.d.ts +1 -1
  15. package/DatePicker/shared.d.ts +6 -6
  16. package/DateTimeField/DateTimeField.js +17 -50
  17. package/DateTimeField/DateTimeField.types.d.ts +5 -9
  18. package/DateTimeField/useDateTimeField.d.ts +2 -2
  19. package/DateTimeField/useDateTimeField.js +1 -5
  20. package/DateTimePicker/DateTimePicker.js +5 -1
  21. package/DateTimePicker/DateTimePicker.types.d.ts +6 -6
  22. package/DateTimePicker/index.d.ts +1 -1
  23. package/DateTimePicker/shared.d.ts +6 -6
  24. package/DesktopDatePicker/DesktopDatePicker.js +7 -2
  25. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +6 -6
  26. package/DesktopDatePicker/index.d.ts +1 -1
  27. package/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  28. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +8 -8
  29. package/DesktopDateTimePicker/index.d.ts +1 -1
  30. package/DesktopTimePicker/DesktopTimePicker.js +5 -1
  31. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +8 -8
  32. package/DesktopTimePicker/index.d.ts +1 -1
  33. package/DigitalClock/DigitalClock.types.d.ts +4 -4
  34. package/DigitalClock/index.d.ts +1 -1
  35. package/MobileDatePicker/MobileDatePicker.js +7 -2
  36. package/MobileDatePicker/MobileDatePicker.types.d.ts +6 -6
  37. package/MobileDatePicker/index.d.ts +1 -1
  38. package/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  39. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +6 -6
  40. package/MobileDateTimePicker/index.d.ts +1 -1
  41. package/MobileTimePicker/MobileTimePicker.js +5 -1
  42. package/MobileTimePicker/MobileTimePicker.types.d.ts +6 -6
  43. package/MobileTimePicker/index.d.ts +1 -1
  44. package/MonthCalendar/MonthCalendar.js +0 -1
  45. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +4 -4
  46. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +3 -3
  47. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +8 -2
  48. package/MultiSectionDigitalClock/index.d.ts +1 -1
  49. package/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +2 -2
  50. package/PickersCalendarHeader/PickersCalendarHeader.js +4 -4
  51. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +8 -8
  52. package/PickersCalendarHeader/index.d.ts +1 -1
  53. package/PickersLayout/PickersLayout.types.d.ts +6 -6
  54. package/PickersLayout/index.d.ts +1 -1
  55. package/StaticDatePicker/StaticDatePicker.js +1 -1
  56. package/StaticDatePicker/StaticDatePicker.types.d.ts +7 -7
  57. package/StaticDatePicker/index.d.ts +1 -1
  58. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +7 -7
  59. package/StaticDateTimePicker/index.d.ts +1 -1
  60. package/StaticTimePicker/StaticTimePicker.types.d.ts +7 -7
  61. package/StaticTimePicker/index.d.ts +1 -1
  62. package/TimeClock/Clock.js +0 -1
  63. package/TimeClock/ClockPointer.js +0 -1
  64. package/TimeClock/TimeClock.types.d.ts +5 -5
  65. package/TimeClock/index.d.ts +1 -1
  66. package/TimeField/TimeField.js +17 -50
  67. package/TimeField/TimeField.types.d.ts +5 -9
  68. package/TimeField/useTimeField.d.ts +2 -2
  69. package/TimeField/useTimeField.js +1 -5
  70. package/TimePicker/TimePicker.js +5 -1
  71. package/TimePicker/TimePicker.types.d.ts +6 -6
  72. package/TimePicker/index.d.ts +1 -1
  73. package/TimePicker/shared.d.ts +5 -5
  74. package/YearCalendar/YearCalendar.js +0 -1
  75. package/hooks/index.d.ts +1 -0
  76. package/hooks/useClearableField.d.ts +32 -20
  77. package/hooks/useClearableField.js +32 -33
  78. package/index.js +1 -1
  79. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +9 -9
  80. package/internals/components/PickersArrowSwitcher/index.d.ts +3 -1
  81. package/internals/components/PickersArrowSwitcher/index.js +2 -1
  82. package/internals/components/PickersModalDialog.d.ts +4 -4
  83. package/internals/components/PickersPopper.d.ts +4 -4
  84. package/internals/components/PickersTextField/Outline.d.ts +7 -1
  85. package/internals/components/PickersTextField/Outline.js +2 -4
  86. package/internals/components/PickersTextField/PickersInput.d.ts +1 -2
  87. package/internals/components/PickersTextField/PickersInput.js +117 -112
  88. package/internals/components/PickersTextField/PickersInput.types.d.ts +35 -20
  89. package/internals/components/PickersTextField/PickersTextField.js +57 -48
  90. package/internals/components/PickersTextField/PickersTextField.types.d.ts +19 -16
  91. package/internals/components/PickersTextField/pickersTextFieldClasses.d.ts +11 -7
  92. package/internals/components/PickersTextField/pickersTextFieldClasses.js +1 -1
  93. package/internals/constants/dimensions.d.ts +1 -1
  94. package/internals/constants/dimensions.js +1 -1
  95. package/internals/demo/DemoContainer.d.ts +4 -0
  96. package/internals/demo/DemoContainer.js +47 -19
  97. package/internals/hooks/useClockReferenceDate.js +0 -1
  98. package/internals/hooks/useDesktopPicker/index.d.ts +1 -1
  99. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  100. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +8 -8
  101. package/internals/hooks/useField/index.d.ts +1 -1
  102. package/internals/hooks/useField/useField.js +3 -3
  103. package/internals/hooks/useField/useField.types.d.ts +4 -24
  104. package/internals/hooks/useField/useField.utils.js +24 -6
  105. package/internals/hooks/useField/useFieldState.js +7 -3
  106. package/internals/hooks/useMobilePicker/index.d.ts +1 -1
  107. package/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  108. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -7
  109. package/internals/hooks/useStaticPicker/index.d.ts +1 -1
  110. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +5 -5
  111. package/internals/hooks/useViews.js +0 -1
  112. package/internals/index.d.ts +7 -6
  113. package/internals/index.js +1 -0
  114. package/internals/models/props/basePickerProps.d.ts +4 -0
  115. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +3 -0
  116. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +26 -0
  117. package/legacy/AdapterLuxon/AdapterLuxon.js +0 -1
  118. package/legacy/DateCalendar/useCalendarState.js +0 -1
  119. package/legacy/DateField/DateField.js +19 -47
  120. package/legacy/DateField/useDateField.js +1 -4
  121. package/legacy/DatePicker/DatePicker.js +5 -1
  122. package/legacy/DateTimeField/DateTimeField.js +19 -47
  123. package/legacy/DateTimeField/useDateTimeField.js +1 -4
  124. package/legacy/DateTimePicker/DateTimePicker.js +5 -1
  125. package/legacy/DesktopDatePicker/DesktopDatePicker.js +7 -2
  126. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  127. package/legacy/DesktopTimePicker/DesktopTimePicker.js +5 -1
  128. package/legacy/MobileDatePicker/MobileDatePicker.js +7 -2
  129. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  130. package/legacy/MobileTimePicker/MobileTimePicker.js +5 -1
  131. package/legacy/MonthCalendar/MonthCalendar.js +0 -1
  132. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +8 -2
  133. package/legacy/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +2 -2
  134. package/legacy/PickersCalendarHeader/PickersCalendarHeader.js +4 -4
  135. package/legacy/StaticDatePicker/StaticDatePicker.js +1 -1
  136. package/legacy/TimeClock/Clock.js +0 -1
  137. package/legacy/TimeClock/ClockPointer.js +0 -1
  138. package/legacy/TimeField/TimeField.js +19 -47
  139. package/legacy/TimeField/useTimeField.js +1 -4
  140. package/legacy/TimePicker/TimePicker.js +5 -1
  141. package/legacy/YearCalendar/YearCalendar.js +0 -1
  142. package/legacy/hooks/useClearableField.js +30 -32
  143. package/legacy/index.js +1 -1
  144. package/legacy/internals/components/PickersArrowSwitcher/index.js +2 -1
  145. package/legacy/internals/components/PickersTextField/Outline.js +1 -4
  146. package/legacy/internals/components/PickersTextField/PickersInput.js +119 -115
  147. package/legacy/internals/components/PickersTextField/PickersTextField.js +51 -51
  148. package/legacy/internals/components/PickersTextField/pickersTextFieldClasses.js +1 -1
  149. package/legacy/internals/constants/dimensions.js +1 -1
  150. package/legacy/internals/demo/DemoContainer.js +45 -19
  151. package/legacy/internals/hooks/useClockReferenceDate.js +0 -1
  152. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  153. package/legacy/internals/hooks/useField/useField.js +4 -4
  154. package/legacy/internals/hooks/useField/useField.utils.js +26 -6
  155. package/legacy/internals/hooks/useField/useFieldState.js +7 -3
  156. package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  157. package/legacy/internals/hooks/useViews.js +0 -1
  158. package/legacy/internals/index.js +1 -0
  159. package/legacy/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +24 -0
  160. package/legacy/locales/plPL.js +0 -1
  161. package/legacy/locales/svSE.js +0 -1
  162. package/legacy/locales/urPK.js +0 -1
  163. package/locales/plPL.js +0 -1
  164. package/locales/svSE.js +0 -1
  165. package/locales/urPK.js +0 -1
  166. package/models/fields.d.ts +2 -1
  167. package/modern/AdapterLuxon/AdapterLuxon.js +0 -1
  168. package/modern/DateCalendar/useCalendarState.js +0 -1
  169. package/modern/DateField/DateField.js +17 -50
  170. package/modern/DateField/useDateField.js +1 -5
  171. package/modern/DatePicker/DatePicker.js +5 -1
  172. package/modern/DateTimeField/DateTimeField.js +17 -50
  173. package/modern/DateTimeField/useDateTimeField.js +1 -5
  174. package/modern/DateTimePicker/DateTimePicker.js +5 -1
  175. package/modern/DesktopDatePicker/DesktopDatePicker.js +7 -2
  176. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  177. package/modern/DesktopTimePicker/DesktopTimePicker.js +5 -1
  178. package/modern/MobileDatePicker/MobileDatePicker.js +7 -2
  179. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  180. package/modern/MobileTimePicker/MobileTimePicker.js +5 -1
  181. package/modern/MonthCalendar/MonthCalendar.js +0 -1
  182. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +8 -2
  183. package/modern/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +2 -2
  184. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +4 -4
  185. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  186. package/modern/TimeClock/Clock.js +0 -1
  187. package/modern/TimeClock/ClockPointer.js +0 -1
  188. package/modern/TimeField/TimeField.js +17 -50
  189. package/modern/TimeField/useTimeField.js +1 -5
  190. package/modern/TimePicker/TimePicker.js +5 -1
  191. package/modern/YearCalendar/YearCalendar.js +0 -1
  192. package/modern/hooks/useClearableField.js +32 -33
  193. package/modern/index.js +1 -1
  194. package/modern/internals/components/PickersArrowSwitcher/index.js +2 -1
  195. package/modern/internals/components/PickersTextField/Outline.js +2 -4
  196. package/modern/internals/components/PickersTextField/PickersInput.js +116 -112
  197. package/modern/internals/components/PickersTextField/PickersTextField.js +57 -47
  198. package/modern/internals/components/PickersTextField/pickersTextFieldClasses.js +1 -1
  199. package/modern/internals/constants/dimensions.js +1 -1
  200. package/modern/internals/demo/DemoContainer.js +47 -19
  201. package/modern/internals/hooks/useClockReferenceDate.js +0 -1
  202. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  203. package/modern/internals/hooks/useField/useField.js +3 -3
  204. package/modern/internals/hooks/useField/useField.utils.js +24 -6
  205. package/modern/internals/hooks/useField/useFieldState.js +7 -3
  206. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  207. package/modern/internals/hooks/useViews.js +0 -1
  208. package/modern/internals/index.js +1 -0
  209. package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +26 -0
  210. package/modern/locales/plPL.js +0 -1
  211. package/modern/locales/svSE.js +0 -1
  212. package/modern/locales/urPK.js +0 -1
  213. package/node/AdapterLuxon/AdapterLuxon.js +0 -1
  214. package/node/DateCalendar/useCalendarState.js +0 -1
  215. package/node/DateField/DateField.js +18 -51
  216. package/node/DateField/useDateField.js +1 -5
  217. package/node/DatePicker/DatePicker.js +5 -1
  218. package/node/DateTimeField/DateTimeField.js +18 -51
  219. package/node/DateTimeField/useDateTimeField.js +1 -5
  220. package/node/DateTimePicker/DateTimePicker.js +5 -1
  221. package/node/DesktopDatePicker/DesktopDatePicker.js +10 -5
  222. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  223. package/node/DesktopTimePicker/DesktopTimePicker.js +5 -1
  224. package/node/MobileDatePicker/MobileDatePicker.js +10 -5
  225. package/node/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  226. package/node/MobileTimePicker/MobileTimePicker.js +5 -1
  227. package/node/MonthCalendar/MonthCalendar.js +0 -1
  228. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +8 -2
  229. package/node/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +2 -2
  230. package/node/PickersCalendarHeader/PickersCalendarHeader.js +4 -4
  231. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  232. package/node/TimeClock/Clock.js +0 -1
  233. package/node/TimeClock/ClockPointer.js +0 -1
  234. package/node/TimeField/TimeField.js +18 -51
  235. package/node/TimeField/useTimeField.js +1 -5
  236. package/node/TimePicker/TimePicker.js +5 -1
  237. package/node/YearCalendar/YearCalendar.js +0 -1
  238. package/node/hooks/useClearableField.js +33 -34
  239. package/node/index.js +1 -1
  240. package/node/internals/components/PickersArrowSwitcher/index.js +14 -1
  241. package/node/internals/components/PickersTextField/Outline.js +2 -4
  242. package/node/internals/components/PickersTextField/PickersInput.js +119 -115
  243. package/node/internals/components/PickersTextField/PickersTextField.js +58 -48
  244. package/node/internals/components/PickersTextField/pickersTextFieldClasses.js +1 -1
  245. package/node/internals/constants/dimensions.js +1 -1
  246. package/node/internals/demo/DemoContainer.js +47 -19
  247. package/node/internals/hooks/useClockReferenceDate.js +0 -1
  248. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  249. package/node/internals/hooks/useField/useField.js +3 -3
  250. package/node/internals/hooks/useField/useField.utils.js +24 -6
  251. package/node/internals/hooks/useField/useFieldState.js +7 -3
  252. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  253. package/node/internals/hooks/useViews.js +0 -1
  254. package/node/internals/index.js +7 -0
  255. package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +34 -0
  256. package/node/locales/plPL.js +0 -1
  257. package/node/locales/svSE.js +0 -1
  258. package/node/locales/urPK.js +0 -1
  259. package/package.json +6 -6
  260. package/themeAugmentation/overrides.d.ts +5 -7
  261. package/themeAugmentation/props.d.ts +6 -8
@@ -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
  })]),
@@ -115,7 +115,6 @@ export const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(
115
115
  granularity: SECTION_TYPE_GRANULARITY.year
116
116
  }), [] // eslint-disable-line react-hooks/exhaustive-deps
117
117
  );
118
-
119
118
  const ownerState = props;
120
119
  const classes = useUtilityClasses(ownerState);
121
120
  const todayYear = React.useMemo(() => utils.getYear(now), [utils, now]);
@@ -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.3
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';
@@ -1,6 +1,6 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["children", "classes", "className", "label", "notched"];
3
+ const _excluded = ["children", "className", "label"];
4
4
  import * as React from 'react';
5
5
  import { styled } from '@mui/material/styles';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -69,13 +69,11 @@ const OutlineLegend = styled('legend')(({
69
69
  export default function Outline(props) {
70
70
  const {
71
71
  className,
72
- label,
73
- notched
72
+ label
74
73
  } = props,
75
74
  other = _objectWithoutPropertiesLoose(props, _excluded);
76
75
  const withLabel = label != null && label !== '';
77
76
  const ownerState = _extends({}, props, {
78
- notched,
79
77
  withLabel
80
78
  });
81
79
  return /*#__PURE__*/_jsx(OutlineRoot, _extends({
@@ -1,18 +1,20 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["elements", "defaultValue", "label", "onFocus", "onWrapperClick", "onBlur", "valueStr", "onValueStrChange", "id", "InputProps", "inputProps", "autoFocus", "ownerState", "endAdornment", "startAdornment"];
3
+ const _excluded = ["elements", "areAllSectionsEmpty", "defaultValue", "label", "value", "onChange", "id", "autoFocus", "endAdornment", "startAdornment", "contentEditable", "tabIndex", "fullWidth", "inputProps", "inputRef", "sectionsContainerRef"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import Box from '@mui/material/Box';
7
7
  import { useFormControl } from '@mui/material/FormControl';
8
8
  import { styled } from '@mui/material/styles';
9
9
  import useForkRef from '@mui/utils/useForkRef';
10
- import { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize, visuallyHidden } from '@mui/utils';
10
+ import composeClasses from '@mui/utils/composeClasses';
11
+ import capitalize from '@mui/utils/capitalize';
12
+ import visuallyHidden from '@mui/utils/visuallyHidden';
11
13
  import { pickersInputClasses, getPickersInputUtilityClass } from './pickersTextFieldClasses';
12
14
  import Outline from './Outline';
13
15
  import { jsx as _jsx } from "react/jsx-runtime";
14
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
- const SectionsWrapper = styled(Box, {
17
+ const PickersInputRoot = styled(Box, {
16
18
  name: 'MuiPickersInput',
17
19
  slot: 'Root',
18
20
  overridesResolver: (props, styles) => styles.root
@@ -29,6 +31,7 @@ const SectionsWrapper = styled(Box, {
29
31
  alignItems: 'center',
30
32
  width: ownerState.fullWidth ? '100%' : '25ch',
31
33
  position: 'relative',
34
+ outline: 'none',
32
35
  borderRadius: (theme.vars || theme).shape.borderRadius,
33
36
  [`&:hover .${pickersInputClasses.notchedOutline}`]: {
34
37
  borderColor: (theme.vars || theme).palette.text.primary
@@ -59,22 +62,30 @@ const SectionsWrapper = styled(Box, {
59
62
  padding: '8.5px 14px'
60
63
  });
61
64
  });
62
- const SectionsContainer = styled('div', {
65
+ const PickersInputSectionsContainer = styled('div', {
63
66
  name: 'MuiPickersInput',
64
- slot: 'Input',
65
- overridesResolver: (props, styles) => styles.input
67
+ slot: 'SectionsContainer',
68
+ overridesResolver: (props, styles) => styles.sectionsContainer
66
69
  })(({
67
70
  theme,
68
71
  ownerState
69
- }) => ({
72
+ }) => _extends({
70
73
  fontFamily: theme.typography.fontFamily,
71
74
  fontSize: 'inherit',
72
75
  lineHeight: '1.4375em',
73
76
  // 23px
74
77
  flexGrow: 1,
75
- visibility: ownerState.adornedStart || ownerState.focused ? 'visible' : 'hidden'
76
- }));
77
- const SectionContainer = styled('span', {
78
+ outline: 'none'
79
+ }, !(ownerState.adornedStart || ownerState.focused || ownerState.filled) && _extends({
80
+ color: 'currentColor'
81
+ }, ownerState.label == null && (theme.vars ? {
82
+ opacity: theme.vars.opacity.inputPlaceholder
83
+ } : {
84
+ opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
85
+ }), ownerState.label != null && {
86
+ opacity: 0
87
+ })));
88
+ const PickersInputSection = styled('span', {
78
89
  name: 'MuiPickersInput',
79
90
  slot: 'Section',
80
91
  overridesResolver: (props, styles) => styles.section
@@ -87,9 +98,9 @@ const SectionContainer = styled('span', {
87
98
  // 23px
88
99
  flexGrow: 1
89
100
  }));
90
- const SectionInput = styled('span', {
101
+ const PickersInputContent = styled('span', {
91
102
  name: 'MuiPickersInput',
92
- slot: 'Content',
103
+ slot: 'SectionContent',
93
104
  overridesResolver: (props, styles) => styles.content
94
105
  })(({
95
106
  theme
@@ -100,16 +111,16 @@ const SectionInput = styled('span', {
100
111
  letterSpacing: 'inherit',
101
112
  width: 'fit-content'
102
113
  }));
103
- const SectionSeparator = styled('span', {
114
+ const PickersInputSeparator = styled('span', {
104
115
  name: 'MuiPickersInput',
105
116
  slot: 'Separator',
106
117
  overridesResolver: (props, styles) => styles.separator
107
118
  })(() => ({
108
119
  whiteSpace: 'pre'
109
120
  }));
110
- const FakeHiddenInput = styled('input', {
121
+ const PickersInputInput = styled('input', {
111
122
  name: 'MuiPickersInput',
112
- slot: 'HiddenInput',
123
+ slot: 'Input',
113
124
  overridesResolver: (props, styles) => styles.hiddenInput
114
125
  })(_extends({}, visuallyHidden));
115
126
  const NotchedOutlineRoot = styled(Outline, {
@@ -124,36 +135,6 @@ const NotchedOutlineRoot = styled(Outline, {
124
135
  borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor
125
136
  };
126
137
  });
127
- function InputContent({
128
- elements,
129
- contentEditable,
130
- ownerState
131
- }) {
132
- if (contentEditable) {
133
- return elements.map(({
134
- content,
135
- before,
136
- after
137
- }) => `${before.children}${content.children}${after.children}`).join('');
138
- }
139
- return /*#__PURE__*/_jsx(React.Fragment, {
140
- children: elements.map(({
141
- container,
142
- content,
143
- before,
144
- after
145
- }, elementIndex) => /*#__PURE__*/_jsxs(SectionContainer, _extends({}, container, {
146
- children: [/*#__PURE__*/_jsx(SectionSeparator, _extends({}, before, {
147
- className: clsx(pickersInputClasses.before, before?.className)
148
- })), /*#__PURE__*/_jsx(SectionInput, _extends({}, content, {
149
- className: clsx(pickersInputClasses.content, content?.className),
150
- ownerState
151
- })), /*#__PURE__*/_jsx(SectionSeparator, _extends({}, after, {
152
- className: clsx(pickersInputClasses.after, after?.className)
153
- }))]
154
- }), elementIndex))
155
- });
156
- }
157
138
  const useUtilityClasses = ownerState => {
158
139
  const {
159
140
  focused,
@@ -161,104 +142,127 @@ const useUtilityClasses = ownerState => {
161
142
  error,
162
143
  classes,
163
144
  fullWidth,
145
+ readOnly,
164
146
  color,
165
147
  size,
166
148
  endAdornment,
167
149
  startAdornment
168
150
  } = ownerState;
169
151
  const slots = {
170
- root: ['root', focused && !disabled && 'focused', disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', `color${capitalize(color)}`, size === 'small' && 'inputSizeSmall', Boolean(startAdornment) && 'adornedStart', Boolean(endAdornment) && 'adornedEnd'],
152
+ root: ['root', focused && !disabled && 'focused', disabled && 'disabled', readOnly && 'readOnly', error && 'error', fullWidth && 'fullWidth', `color${capitalize(color)}`, size === 'small' && 'inputSizeSmall', Boolean(startAdornment) && 'adornedStart', Boolean(endAdornment) && 'adornedEnd'],
171
153
  notchedOutline: ['notchedOutline'],
172
- before: ['before'],
173
- after: ['after'],
174
- content: ['content'],
175
- input: ['input']
154
+ input: ['input'],
155
+ sectionsContainer: ['sectionsContainer'],
156
+ sectionContent: ['sectionContent'],
157
+ sectionBefore: ['sectionBefore'],
158
+ sectionAfter: ['sectionAfter']
176
159
  };
177
160
  return composeClasses(slots, getPickersInputUtilityClass, classes);
178
161
  };
179
-
180
- // TODO: move to utils
181
- // Separates the state props from the form control
182
- function formControlState({
183
- props,
184
- states,
185
- muiFormControl
186
- }) {
187
- return states.reduce((acc, state) => {
188
- acc[state] = props[state];
189
- if (muiFormControl) {
190
- if (typeof props[state] === 'undefined') {
191
- acc[state] = muiFormControl[state];
192
- }
193
- }
194
- return acc;
195
- }, {});
196
- }
197
- const PickersInput = /*#__PURE__*/React.forwardRef(function PickersInput(props, ref) {
162
+ export const PickersInput = /*#__PURE__*/React.forwardRef(function PickersInput(props, ref) {
198
163
  const {
199
164
  elements,
165
+ areAllSectionsEmpty,
200
166
  label,
201
- onWrapperClick,
202
- valueStr,
203
- onValueStrChange,
167
+ value,
168
+ onChange,
204
169
  id,
205
- ownerState: ownerStateProp,
206
170
  endAdornment,
207
- startAdornment
171
+ startAdornment,
172
+ contentEditable,
173
+ tabIndex,
174
+ inputProps,
175
+ inputRef,
176
+ sectionsContainerRef
208
177
  } = props,
209
178
  other = _objectWithoutPropertiesLoose(props, _excluded);
210
- const inputRef = React.useRef(null);
211
- const handleInputRef = useForkRef(ref, inputRef);
179
+ const rootRef = React.useRef(null);
180
+ const handleRootRef = useForkRef(ref, rootRef);
181
+ const handleInputRef = useForkRef(inputProps?.ref, inputRef);
212
182
  const muiFormControl = useFormControl();
213
- const fcs = formControlState({
214
- props,
215
- muiFormControl,
216
- states: ['color', 'disabled', 'error', 'focused', 'size', 'required', 'fullWidth', 'adornedStart']
217
- });
183
+ if (!muiFormControl) {
184
+ throw new Error('MUI: PickersInput should always be used inside a PickersTextField component');
185
+ }
186
+ const handleInputFocus = event => {
187
+ // Fix a bug with IE11 where the focus/blur events are triggered
188
+ // while the component is disabled.
189
+ if (muiFormControl.disabled) {
190
+ event.stopPropagation();
191
+ return;
192
+ }
193
+ muiFormControl.onFocus?.(event);
194
+ };
218
195
  React.useEffect(() => {
219
196
  if (muiFormControl) {
220
197
  muiFormControl.setAdornedStart(Boolean(startAdornment));
221
198
  }
222
199
  }, [muiFormControl, startAdornment]);
223
- const ownerState = _extends({}, props, ownerStateProp, {
224
- color: fcs.color || 'primary',
225
- disabled: fcs.disabled,
226
- error: fcs.error,
227
- focused: fcs.focused,
228
- fullWidth: fcs.fullWidth,
229
- size: fcs.size
230
- });
200
+ React.useEffect(() => {
201
+ if (!muiFormControl) {
202
+ return;
203
+ }
204
+ if (areAllSectionsEmpty) {
205
+ muiFormControl.onEmpty();
206
+ } else {
207
+ muiFormControl.onFilled();
208
+ }
209
+ }, [muiFormControl, areAllSectionsEmpty]);
210
+ const ownerState = _extends({}, props, muiFormControl);
231
211
  const classes = useUtilityClasses(ownerState);
232
- return /*#__PURE__*/_jsxs(SectionsWrapper, _extends({
233
- ref: handleInputRef
234
- }, other, {
212
+ return /*#__PURE__*/_jsxs(PickersInputRoot, _extends({}, other, {
235
213
  className: classes.root,
236
- onClick: onWrapperClick,
237
214
  ownerState: ownerState,
238
- "aria-invalid": fcs.error,
239
- children: [startAdornment, /*#__PURE__*/_jsxs(SectionsContainer, {
215
+ "aria-invalid": muiFormControl.error,
216
+ ref: handleRootRef,
217
+ children: [startAdornment, /*#__PURE__*/_jsx(PickersInputSectionsContainer, {
240
218
  ownerState: ownerState,
241
- className: classes.input,
242
- children: [/*#__PURE__*/_jsx(InputContent, {
243
- elements: elements,
244
- contentEditable: other.contentEditable,
245
- ownerState: ownerState
246
- }), /*#__PURE__*/_jsx(FakeHiddenInput, {
247
- value: valueStr,
248
- onChange: onValueStrChange,
249
- id: id,
250
- "aria-hidden": "true",
251
- tabIndex: -1
252
- })]
219
+ className: classes.sectionsContainer,
220
+ contentEditable: contentEditable,
221
+ suppressContentEditableWarning: true,
222
+ onFocus: handleInputFocus,
223
+ onBlur: muiFormControl.onBlur,
224
+ tabIndex: tabIndex,
225
+ ref: sectionsContainerRef,
226
+ children: contentEditable ? elements.map(({
227
+ content,
228
+ before,
229
+ after
230
+ }) => `${before.children}${content.children}${after.children}`).join('') : /*#__PURE__*/_jsx(React.Fragment, {
231
+ children: elements.map(({
232
+ container,
233
+ content,
234
+ before,
235
+ after
236
+ }, elementIndex) => /*#__PURE__*/_jsxs(PickersInputSection, _extends({}, container, {
237
+ children: [/*#__PURE__*/_jsx(PickersInputSeparator, _extends({}, before, {
238
+ className: clsx(pickersInputClasses.sectionBefore, before?.className)
239
+ })), /*#__PURE__*/_jsx(PickersInputContent, _extends({}, content, {
240
+ suppressContentEditableWarning: true,
241
+ className: clsx(pickersInputClasses.sectionContent, content?.className),
242
+ ownerState
243
+ })), /*#__PURE__*/_jsx(PickersInputSeparator, _extends({}, after, {
244
+ className: clsx(pickersInputClasses.sectionAfter, after?.className)
245
+ }))]
246
+ }), elementIndex))
247
+ })
253
248
  }), endAdornment, /*#__PURE__*/_jsx(NotchedOutlineRoot, {
254
- shrink: fcs.adornedStart || fcs.focused,
255
- notched: fcs.adornedStart || fcs.focused,
249
+ shrink: muiFormControl.adornedStart || muiFormControl.focused || muiFormControl.filled,
250
+ notched: muiFormControl.adornedStart || muiFormControl.focused || muiFormControl.filled,
256
251
  className: classes.notchedOutline,
257
- label: label != null && label !== '' && fcs.required ? /*#__PURE__*/_jsxs(React.Fragment, {
252
+ label: label != null && label !== '' && muiFormControl.required ? /*#__PURE__*/_jsxs(React.Fragment, {
258
253
  children: [label, "\u2009", '*']
259
254
  }) : label,
260
255
  ownerState: ownerState
261
- })]
256
+ }), /*#__PURE__*/_jsx(PickersInputInput, _extends({
257
+ className: classes.input,
258
+ value: value,
259
+ onChange: onChange,
260
+ id: id,
261
+ "aria-hidden": "true",
262
+ tabIndex: -1
263
+ }, inputProps, {
264
+ ref: handleInputRef
265
+ }))]
262
266
  }));
263
267
  });
264
- export default PickersInput;
268
+ PickersInput.muiName = 'Input';