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

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 (98) hide show
  1. package/AdapterLuxon/AdapterLuxon.d.ts +27 -27
  2. package/AdapterLuxon/AdapterLuxon.js +0 -1
  3. package/CHANGELOG.md +123 -0
  4. package/DateCalendar/useCalendarState.js +0 -1
  5. package/MonthCalendar/MonthCalendar.js +0 -1
  6. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +8 -2
  7. package/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +2 -2
  8. package/PickersCalendarHeader/PickersCalendarHeader.js +4 -4
  9. package/TimeClock/Clock.js +0 -1
  10. package/TimeClock/ClockPointer.js +0 -1
  11. package/YearCalendar/YearCalendar.js +0 -1
  12. package/index.js +1 -1
  13. package/internals/components/PickersTextField/Outline.d.ts +7 -1
  14. package/internals/components/PickersTextField/Outline.js +2 -4
  15. package/internals/components/PickersTextField/PickersInput.d.ts +1 -2
  16. package/internals/components/PickersTextField/PickersInput.js +117 -112
  17. package/internals/components/PickersTextField/PickersInput.types.d.ts +35 -20
  18. package/internals/components/PickersTextField/PickersTextField.js +57 -48
  19. package/internals/components/PickersTextField/PickersTextField.types.d.ts +19 -16
  20. package/internals/components/PickersTextField/pickersTextFieldClasses.d.ts +11 -7
  21. package/internals/components/PickersTextField/pickersTextFieldClasses.js +1 -1
  22. package/internals/constants/dimensions.d.ts +1 -1
  23. package/internals/constants/dimensions.js +1 -1
  24. package/internals/demo/DemoContainer.d.ts +4 -0
  25. package/internals/demo/DemoContainer.js +47 -19
  26. package/internals/hooks/useClockReferenceDate.js +0 -1
  27. package/internals/hooks/useField/useField.utils.js +0 -2
  28. package/internals/hooks/useViews.js +0 -1
  29. package/legacy/AdapterLuxon/AdapterLuxon.js +0 -1
  30. package/legacy/DateCalendar/useCalendarState.js +0 -1
  31. package/legacy/MonthCalendar/MonthCalendar.js +0 -1
  32. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +8 -2
  33. package/legacy/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +2 -2
  34. package/legacy/PickersCalendarHeader/PickersCalendarHeader.js +4 -4
  35. package/legacy/TimeClock/Clock.js +0 -1
  36. package/legacy/TimeClock/ClockPointer.js +0 -1
  37. package/legacy/YearCalendar/YearCalendar.js +0 -1
  38. package/legacy/index.js +1 -1
  39. package/legacy/internals/components/PickersTextField/Outline.js +1 -4
  40. package/legacy/internals/components/PickersTextField/PickersInput.js +119 -115
  41. package/legacy/internals/components/PickersTextField/PickersTextField.js +51 -51
  42. package/legacy/internals/components/PickersTextField/pickersTextFieldClasses.js +1 -1
  43. package/legacy/internals/constants/dimensions.js +1 -1
  44. package/legacy/internals/demo/DemoContainer.js +45 -19
  45. package/legacy/internals/hooks/useClockReferenceDate.js +0 -1
  46. package/legacy/internals/hooks/useField/useField.utils.js +0 -2
  47. package/legacy/internals/hooks/useViews.js +0 -1
  48. package/legacy/locales/plPL.js +0 -1
  49. package/legacy/locales/svSE.js +0 -1
  50. package/legacy/locales/urPK.js +0 -1
  51. package/locales/plPL.js +0 -1
  52. package/locales/svSE.js +0 -1
  53. package/locales/urPK.js +0 -1
  54. package/modern/AdapterLuxon/AdapterLuxon.js +0 -1
  55. package/modern/DateCalendar/useCalendarState.js +0 -1
  56. package/modern/MonthCalendar/MonthCalendar.js +0 -1
  57. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +8 -2
  58. package/modern/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +2 -2
  59. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +4 -4
  60. package/modern/TimeClock/Clock.js +0 -1
  61. package/modern/TimeClock/ClockPointer.js +0 -1
  62. package/modern/YearCalendar/YearCalendar.js +0 -1
  63. package/modern/index.js +1 -1
  64. package/modern/internals/components/PickersTextField/Outline.js +2 -4
  65. package/modern/internals/components/PickersTextField/PickersInput.js +116 -112
  66. package/modern/internals/components/PickersTextField/PickersTextField.js +57 -47
  67. package/modern/internals/components/PickersTextField/pickersTextFieldClasses.js +1 -1
  68. package/modern/internals/constants/dimensions.js +1 -1
  69. package/modern/internals/demo/DemoContainer.js +47 -19
  70. package/modern/internals/hooks/useClockReferenceDate.js +0 -1
  71. package/modern/internals/hooks/useField/useField.utils.js +0 -2
  72. package/modern/internals/hooks/useViews.js +0 -1
  73. package/modern/locales/plPL.js +0 -1
  74. package/modern/locales/svSE.js +0 -1
  75. package/modern/locales/urPK.js +0 -1
  76. package/node/AdapterLuxon/AdapterLuxon.js +0 -1
  77. package/node/DateCalendar/useCalendarState.js +0 -1
  78. package/node/MonthCalendar/MonthCalendar.js +0 -1
  79. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +8 -2
  80. package/node/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +2 -2
  81. package/node/PickersCalendarHeader/PickersCalendarHeader.js +4 -4
  82. package/node/TimeClock/Clock.js +0 -1
  83. package/node/TimeClock/ClockPointer.js +0 -1
  84. package/node/YearCalendar/YearCalendar.js +0 -1
  85. package/node/index.js +1 -1
  86. package/node/internals/components/PickersTextField/Outline.js +2 -4
  87. package/node/internals/components/PickersTextField/PickersInput.js +119 -115
  88. package/node/internals/components/PickersTextField/PickersTextField.js +58 -48
  89. package/node/internals/components/PickersTextField/pickersTextFieldClasses.js +1 -1
  90. package/node/internals/constants/dimensions.js +1 -1
  91. package/node/internals/demo/DemoContainer.js +47 -19
  92. package/node/internals/hooks/useClockReferenceDate.js +0 -1
  93. package/node/internals/hooks/useField/useField.utils.js +0 -2
  94. package/node/internals/hooks/useViews.js +0 -1
  95. package/node/locales/plPL.js +0 -1
  96. package/node/locales/svSE.js +0 -1
  97. package/node/locales/urPK.js +0 -1
  98. package/package.json +5 -5
@@ -57,5 +57,4 @@ const plPLPickers = {
57
57
  // fieldSecondsPlaceholder: () => 'ss',
58
58
  // fieldMeridiemPlaceholder: () => 'aa',
59
59
  };
60
-
61
60
  export const plPL = getPickersLocalization(plPLPickers);
@@ -57,5 +57,4 @@ const svSEPickers = {
57
57
  // fieldSecondsPlaceholder: () => 'ss',
58
58
  // fieldMeridiemPlaceholder: () => 'aa',
59
59
  };
60
-
61
60
  export const svSE = getPickersLocalization(svSEPickers);
@@ -57,5 +57,4 @@ const urPKPickers = {
57
57
  // fieldSecondsPlaceholder: () => 'ss',
58
58
  // fieldMeridiemPlaceholder: () => 'aa',
59
59
  };
60
-
61
60
  export const urPK = getPickersLocalization(urPKPickers);
@@ -238,7 +238,6 @@ class AdapterLuxon {
238
238
  if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {
239
239
  return true; // Luxon defaults to en-US if Intl not found
240
240
  }
241
-
242
241
  return Boolean(new Intl.DateTimeFormat(this.locale, {
243
242
  hour: 'numeric'
244
243
  })?.resolvedOptions()?.hour12);
@@ -71,7 +71,6 @@ const useCalendarState = params => {
71
71
  });
72
72
  }, [] // eslint-disable-line react-hooks/exhaustive-deps
73
73
  );
74
-
75
74
  const [calendarState, dispatch] = React.useReducer(reducerFn, {
76
75
  isMonthSwitchingAnimating: false,
77
76
  focusedDay: referenceDate,
@@ -120,7 +120,6 @@ const MonthCalendar = exports.MonthCalendar = /*#__PURE__*/React.forwardRef(func
120
120
  granularity: _getDefaultReferenceDate.SECTION_TYPE_GRANULARITY.month
121
121
  }), [] // eslint-disable-line react-hooks/exhaustive-deps
122
122
  );
123
-
124
123
  const ownerState = props;
125
124
  const classes = useUtilityClasses(ownerState);
126
125
  const todayMonth = React.useMemo(() => utils.getMonth(now), [utils, now]);
@@ -45,7 +45,12 @@ const MultiSectionDigitalClockSectionRoot = (0, _styles.styled)(_MenuList.defaul
45
45
  '@media (prefers-reduced-motion: no-preference)': {
46
46
  scrollBehavior: ownerState.alreadyRendered ? 'smooth' : 'auto'
47
47
  },
48
- '&:hover': {
48
+ '@media (pointer: fine)': {
49
+ '&:hover': {
50
+ overflowY: 'auto'
51
+ }
52
+ },
53
+ '@media (pointer: none), (pointer: coarse)': {
49
54
  overflowY: 'auto'
50
55
  },
51
56
  '&:not(:first-of-type)': {
@@ -161,7 +166,8 @@ const MultiSectionDigitalClockSection = exports.MultiSectionDigitalClockSection
161
166
  "aria-disabled": readOnly,
162
167
  "aria-label": option.ariaLabel,
163
168
  "aria-selected": isSelected,
164
- tabIndex: tabIndex
169
+ tabIndex: tabIndex,
170
+ className: classes.item
165
171
  }, slotProps?.digitalClockSectionItem, {
166
172
  children: option.label
167
173
  }), option.label);
@@ -9,6 +9,6 @@ exports.multiSectionDigitalClockSectionClasses = void 0;
9
9
  var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
10
10
  var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
11
11
  function getMultiSectionDigitalClockSectionUtilityClass(slot) {
12
- return (0, _generateUtilityClass.default)('MuiMultiSectionDigitalClock', slot);
12
+ return (0, _generateUtilityClass.default)('MuiMultiSectionDigitalClockSection', slot);
13
13
  }
14
- const multiSectionDigitalClockSectionClasses = exports.multiSectionDigitalClockSectionClasses = (0, _generateUtilityClasses.default)('MuiMultiSectionDigitalClock', ['root', 'item']);
14
+ const multiSectionDigitalClockSectionClasses = exports.multiSectionDigitalClockSectionClasses = (0, _generateUtilityClasses.default)('MuiMultiSectionDigitalClockSection', ['root', 'item']);
@@ -46,13 +46,13 @@ const PickersCalendarHeaderRoot = (0, _styles.styled)('div', {
46
46
  })({
47
47
  display: 'flex',
48
48
  alignItems: 'center',
49
- marginTop: 16,
50
- marginBottom: 8,
49
+ marginTop: 12,
50
+ marginBottom: 4,
51
51
  paddingLeft: 24,
52
52
  paddingRight: 12,
53
53
  // prevent jumping in safari
54
- maxHeight: 30,
55
- minHeight: 30
54
+ maxHeight: 40,
55
+ minHeight: 40
56
56
  });
57
57
  const PickersCalendarHeaderLabelContainer = (0, _styles.styled)('div', {
58
58
  name: 'MuiPickersCalendarHeader',
@@ -284,7 +284,6 @@ function Clock(inProps) {
284
284
  // do nothing
285
285
  }
286
286
  };
287
-
288
287
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(ClockRoot, {
289
288
  className: (0, _clsx.default)(className, classes.root),
290
289
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(ClockClock, {
@@ -94,7 +94,6 @@ function ClockPointer(inProps) {
94
94
  if (type === 'hours' && viewValue > 12) {
95
95
  angle -= 360; // round up angle to max 360 degrees
96
96
  }
97
-
98
97
  return {
99
98
  height: Math.round((isInner ? 0.26 : 0.4) * _shared.CLOCK_WIDTH),
100
99
  transform: `rotateZ(${angle}deg)`
@@ -124,7 +124,6 @@ const YearCalendar = exports.YearCalendar = /*#__PURE__*/React.forwardRef(functi
124
124
  granularity: _getDefaultReferenceDate.SECTION_TYPE_GRANULARITY.year
125
125
  }), [] // eslint-disable-line react-hooks/exhaustive-deps
126
126
  );
127
-
128
127
  const ownerState = props;
129
128
  const classes = useUtilityClasses(ownerState);
130
129
  const todayYear = React.useMemo(() => utils.getYear(now), [utils, now]);
package/node/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.4
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -10,7 +10,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _styles = require("@mui/material/styles");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
- const _excluded = ["children", "classes", "className", "label", "notched"];
13
+ const _excluded = ["children", "className", "label"];
14
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
15
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
16
  const OutlineRoot = (0, _styles.styled)('fieldset')({
@@ -78,13 +78,11 @@ const OutlineLegend = (0, _styles.styled)('legend')(({
78
78
  function Outline(props) {
79
79
  const {
80
80
  className,
81
- label,
82
- notched
81
+ label
83
82
  } = props,
84
83
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
85
84
  const withLabel = label != null && label !== '';
86
85
  const ownerState = (0, _extends2.default)({}, props, {
87
- notched,
88
86
  withLabel
89
87
  });
90
88
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(OutlineRoot, (0, _extends2.default)({
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.PickersInput = void 0;
8
8
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
@@ -13,14 +13,16 @@ var _Box = _interopRequireDefault(require("@mui/material/Box"));
13
13
  var _FormControl = require("@mui/material/FormControl");
14
14
  var _styles = require("@mui/material/styles");
15
15
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
16
- var _utils = require("@mui/utils");
16
+ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
17
+ var _capitalize = _interopRequireDefault(require("@mui/utils/capitalize"));
18
+ var _visuallyHidden = _interopRequireDefault(require("@mui/utils/visuallyHidden"));
17
19
  var _pickersTextFieldClasses = require("./pickersTextFieldClasses");
18
20
  var _Outline = _interopRequireDefault(require("./Outline"));
19
21
  var _jsxRuntime = require("react/jsx-runtime");
20
- const _excluded = ["elements", "defaultValue", "label", "onFocus", "onWrapperClick", "onBlur", "valueStr", "onValueStrChange", "id", "InputProps", "inputProps", "autoFocus", "ownerState", "endAdornment", "startAdornment"];
22
+ const _excluded = ["elements", "areAllSectionsEmpty", "defaultValue", "label", "value", "onChange", "id", "autoFocus", "endAdornment", "startAdornment", "contentEditable", "tabIndex", "fullWidth", "inputProps", "inputRef", "sectionsContainerRef"];
21
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
- const SectionsWrapper = (0, _styles.styled)(_Box.default, {
25
+ const PickersInputRoot = (0, _styles.styled)(_Box.default, {
24
26
  name: 'MuiPickersInput',
25
27
  slot: 'Root',
26
28
  overridesResolver: (props, styles) => styles.root
@@ -37,6 +39,7 @@ const SectionsWrapper = (0, _styles.styled)(_Box.default, {
37
39
  alignItems: 'center',
38
40
  width: ownerState.fullWidth ? '100%' : '25ch',
39
41
  position: 'relative',
42
+ outline: 'none',
40
43
  borderRadius: (theme.vars || theme).shape.borderRadius,
41
44
  [`&:hover .${_pickersTextFieldClasses.pickersInputClasses.notchedOutline}`]: {
42
45
  borderColor: (theme.vars || theme).palette.text.primary
@@ -67,22 +70,30 @@ const SectionsWrapper = (0, _styles.styled)(_Box.default, {
67
70
  padding: '8.5px 14px'
68
71
  });
69
72
  });
70
- const SectionsContainer = (0, _styles.styled)('div', {
73
+ const PickersInputSectionsContainer = (0, _styles.styled)('div', {
71
74
  name: 'MuiPickersInput',
72
- slot: 'Input',
73
- overridesResolver: (props, styles) => styles.input
75
+ slot: 'SectionsContainer',
76
+ overridesResolver: (props, styles) => styles.sectionsContainer
74
77
  })(({
75
78
  theme,
76
79
  ownerState
77
- }) => ({
80
+ }) => (0, _extends2.default)({
78
81
  fontFamily: theme.typography.fontFamily,
79
82
  fontSize: 'inherit',
80
83
  lineHeight: '1.4375em',
81
84
  // 23px
82
85
  flexGrow: 1,
83
- visibility: ownerState.adornedStart || ownerState.focused ? 'visible' : 'hidden'
84
- }));
85
- const SectionContainer = (0, _styles.styled)('span', {
86
+ outline: 'none'
87
+ }, !(ownerState.adornedStart || ownerState.focused || ownerState.filled) && (0, _extends2.default)({
88
+ color: 'currentColor'
89
+ }, ownerState.label == null && (theme.vars ? {
90
+ opacity: theme.vars.opacity.inputPlaceholder
91
+ } : {
92
+ opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
93
+ }), ownerState.label != null && {
94
+ opacity: 0
95
+ })));
96
+ const PickersInputSection = (0, _styles.styled)('span', {
86
97
  name: 'MuiPickersInput',
87
98
  slot: 'Section',
88
99
  overridesResolver: (props, styles) => styles.section
@@ -95,9 +106,9 @@ const SectionContainer = (0, _styles.styled)('span', {
95
106
  // 23px
96
107
  flexGrow: 1
97
108
  }));
98
- const SectionInput = (0, _styles.styled)('span', {
109
+ const PickersInputContent = (0, _styles.styled)('span', {
99
110
  name: 'MuiPickersInput',
100
- slot: 'Content',
111
+ slot: 'SectionContent',
101
112
  overridesResolver: (props, styles) => styles.content
102
113
  })(({
103
114
  theme
@@ -108,18 +119,18 @@ const SectionInput = (0, _styles.styled)('span', {
108
119
  letterSpacing: 'inherit',
109
120
  width: 'fit-content'
110
121
  }));
111
- const SectionSeparator = (0, _styles.styled)('span', {
122
+ const PickersInputSeparator = (0, _styles.styled)('span', {
112
123
  name: 'MuiPickersInput',
113
124
  slot: 'Separator',
114
125
  overridesResolver: (props, styles) => styles.separator
115
126
  })(() => ({
116
127
  whiteSpace: 'pre'
117
128
  }));
118
- const FakeHiddenInput = (0, _styles.styled)('input', {
129
+ const PickersInputInput = (0, _styles.styled)('input', {
119
130
  name: 'MuiPickersInput',
120
- slot: 'HiddenInput',
131
+ slot: 'Input',
121
132
  overridesResolver: (props, styles) => styles.hiddenInput
122
- })((0, _extends2.default)({}, _utils.visuallyHidden));
133
+ })((0, _extends2.default)({}, _visuallyHidden.default));
123
134
  const NotchedOutlineRoot = (0, _styles.styled)(_Outline.default, {
124
135
  name: 'MuiPickersInput',
125
136
  slot: 'NotchedOutline',
@@ -132,36 +143,6 @@ const NotchedOutlineRoot = (0, _styles.styled)(_Outline.default, {
132
143
  borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor
133
144
  };
134
145
  });
135
- function InputContent({
136
- elements,
137
- contentEditable,
138
- ownerState
139
- }) {
140
- if (contentEditable) {
141
- return elements.map(({
142
- content,
143
- before,
144
- after
145
- }) => `${before.children}${content.children}${after.children}`).join('');
146
- }
147
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, {
148
- children: elements.map(({
149
- container,
150
- content,
151
- before,
152
- after
153
- }, elementIndex) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(SectionContainer, (0, _extends2.default)({}, container, {
154
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SectionSeparator, (0, _extends2.default)({}, before, {
155
- className: (0, _clsx.default)(_pickersTextFieldClasses.pickersInputClasses.before, before?.className)
156
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(SectionInput, (0, _extends2.default)({}, content, {
157
- className: (0, _clsx.default)(_pickersTextFieldClasses.pickersInputClasses.content, content?.className),
158
- ownerState
159
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(SectionSeparator, (0, _extends2.default)({}, after, {
160
- className: (0, _clsx.default)(_pickersTextFieldClasses.pickersInputClasses.after, after?.className)
161
- }))]
162
- }), elementIndex))
163
- });
164
- }
165
146
  const useUtilityClasses = ownerState => {
166
147
  const {
167
148
  focused,
@@ -169,104 +150,127 @@ const useUtilityClasses = ownerState => {
169
150
  error,
170
151
  classes,
171
152
  fullWidth,
153
+ readOnly,
172
154
  color,
173
155
  size,
174
156
  endAdornment,
175
157
  startAdornment
176
158
  } = ownerState;
177
159
  const slots = {
178
- root: ['root', focused && !disabled && 'focused', disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', `color${(0, _utils.unstable_capitalize)(color)}`, size === 'small' && 'inputSizeSmall', Boolean(startAdornment) && 'adornedStart', Boolean(endAdornment) && 'adornedEnd'],
160
+ root: ['root', focused && !disabled && 'focused', disabled && 'disabled', readOnly && 'readOnly', error && 'error', fullWidth && 'fullWidth', `color${(0, _capitalize.default)(color)}`, size === 'small' && 'inputSizeSmall', Boolean(startAdornment) && 'adornedStart', Boolean(endAdornment) && 'adornedEnd'],
179
161
  notchedOutline: ['notchedOutline'],
180
- before: ['before'],
181
- after: ['after'],
182
- content: ['content'],
183
- input: ['input']
162
+ input: ['input'],
163
+ sectionsContainer: ['sectionsContainer'],
164
+ sectionContent: ['sectionContent'],
165
+ sectionBefore: ['sectionBefore'],
166
+ sectionAfter: ['sectionAfter']
184
167
  };
185
- return (0, _utils.unstable_composeClasses)(slots, _pickersTextFieldClasses.getPickersInputUtilityClass, classes);
168
+ return (0, _composeClasses.default)(slots, _pickersTextFieldClasses.getPickersInputUtilityClass, classes);
186
169
  };
187
-
188
- // TODO: move to utils
189
- // Separates the state props from the form control
190
- function formControlState({
191
- props,
192
- states,
193
- muiFormControl
194
- }) {
195
- return states.reduce((acc, state) => {
196
- acc[state] = props[state];
197
- if (muiFormControl) {
198
- if (typeof props[state] === 'undefined') {
199
- acc[state] = muiFormControl[state];
200
- }
201
- }
202
- return acc;
203
- }, {});
204
- }
205
- const PickersInput = /*#__PURE__*/React.forwardRef(function PickersInput(props, ref) {
170
+ const PickersInput = exports.PickersInput = /*#__PURE__*/React.forwardRef(function PickersInput(props, ref) {
206
171
  const {
207
172
  elements,
173
+ areAllSectionsEmpty,
208
174
  label,
209
- onWrapperClick,
210
- valueStr,
211
- onValueStrChange,
175
+ value,
176
+ onChange,
212
177
  id,
213
- ownerState: ownerStateProp,
214
178
  endAdornment,
215
- startAdornment
179
+ startAdornment,
180
+ contentEditable,
181
+ tabIndex,
182
+ inputProps,
183
+ inputRef,
184
+ sectionsContainerRef
216
185
  } = props,
217
186
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
218
- const inputRef = React.useRef(null);
219
- const handleInputRef = (0, _useForkRef.default)(ref, inputRef);
187
+ const rootRef = React.useRef(null);
188
+ const handleRootRef = (0, _useForkRef.default)(ref, rootRef);
189
+ const handleInputRef = (0, _useForkRef.default)(inputProps?.ref, inputRef);
220
190
  const muiFormControl = (0, _FormControl.useFormControl)();
221
- const fcs = formControlState({
222
- props,
223
- muiFormControl,
224
- states: ['color', 'disabled', 'error', 'focused', 'size', 'required', 'fullWidth', 'adornedStart']
225
- });
191
+ if (!muiFormControl) {
192
+ throw new Error('MUI: PickersInput should always be used inside a PickersTextField component');
193
+ }
194
+ const handleInputFocus = event => {
195
+ // Fix a bug with IE11 where the focus/blur events are triggered
196
+ // while the component is disabled.
197
+ if (muiFormControl.disabled) {
198
+ event.stopPropagation();
199
+ return;
200
+ }
201
+ muiFormControl.onFocus?.(event);
202
+ };
226
203
  React.useEffect(() => {
227
204
  if (muiFormControl) {
228
205
  muiFormControl.setAdornedStart(Boolean(startAdornment));
229
206
  }
230
207
  }, [muiFormControl, startAdornment]);
231
- const ownerState = (0, _extends2.default)({}, props, ownerStateProp, {
232
- color: fcs.color || 'primary',
233
- disabled: fcs.disabled,
234
- error: fcs.error,
235
- focused: fcs.focused,
236
- fullWidth: fcs.fullWidth,
237
- size: fcs.size
238
- });
208
+ React.useEffect(() => {
209
+ if (!muiFormControl) {
210
+ return;
211
+ }
212
+ if (areAllSectionsEmpty) {
213
+ muiFormControl.onEmpty();
214
+ } else {
215
+ muiFormControl.onFilled();
216
+ }
217
+ }, [muiFormControl, areAllSectionsEmpty]);
218
+ const ownerState = (0, _extends2.default)({}, props, muiFormControl);
239
219
  const classes = useUtilityClasses(ownerState);
240
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(SectionsWrapper, (0, _extends2.default)({
241
- ref: handleInputRef
242
- }, other, {
220
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(PickersInputRoot, (0, _extends2.default)({}, other, {
243
221
  className: classes.root,
244
- onClick: onWrapperClick,
245
222
  ownerState: ownerState,
246
- "aria-invalid": fcs.error,
247
- children: [startAdornment, /*#__PURE__*/(0, _jsxRuntime.jsxs)(SectionsContainer, {
223
+ "aria-invalid": muiFormControl.error,
224
+ ref: handleRootRef,
225
+ children: [startAdornment, /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersInputSectionsContainer, {
248
226
  ownerState: ownerState,
249
- className: classes.input,
250
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(InputContent, {
251
- elements: elements,
252
- contentEditable: other.contentEditable,
253
- ownerState: ownerState
254
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(FakeHiddenInput, {
255
- value: valueStr,
256
- onChange: onValueStrChange,
257
- id: id,
258
- "aria-hidden": "true",
259
- tabIndex: -1
260
- })]
227
+ className: classes.sectionsContainer,
228
+ contentEditable: contentEditable,
229
+ suppressContentEditableWarning: true,
230
+ onFocus: handleInputFocus,
231
+ onBlur: muiFormControl.onBlur,
232
+ tabIndex: tabIndex,
233
+ ref: sectionsContainerRef,
234
+ children: contentEditable ? elements.map(({
235
+ content,
236
+ before,
237
+ after
238
+ }) => `${before.children}${content.children}${after.children}`).join('') : /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, {
239
+ children: elements.map(({
240
+ container,
241
+ content,
242
+ before,
243
+ after
244
+ }, elementIndex) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(PickersInputSection, (0, _extends2.default)({}, container, {
245
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(PickersInputSeparator, (0, _extends2.default)({}, before, {
246
+ className: (0, _clsx.default)(_pickersTextFieldClasses.pickersInputClasses.sectionBefore, before?.className)
247
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersInputContent, (0, _extends2.default)({}, content, {
248
+ suppressContentEditableWarning: true,
249
+ className: (0, _clsx.default)(_pickersTextFieldClasses.pickersInputClasses.sectionContent, content?.className),
250
+ ownerState
251
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersInputSeparator, (0, _extends2.default)({}, after, {
252
+ className: (0, _clsx.default)(_pickersTextFieldClasses.pickersInputClasses.sectionAfter, after?.className)
253
+ }))]
254
+ }), elementIndex))
255
+ })
261
256
  }), endAdornment, /*#__PURE__*/(0, _jsxRuntime.jsx)(NotchedOutlineRoot, {
262
- shrink: fcs.adornedStart || fcs.focused,
263
- notched: fcs.adornedStart || fcs.focused,
257
+ shrink: muiFormControl.adornedStart || muiFormControl.focused || muiFormControl.filled,
258
+ notched: muiFormControl.adornedStart || muiFormControl.focused || muiFormControl.filled,
264
259
  className: classes.notchedOutline,
265
- label: label != null && label !== '' && fcs.required ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
260
+ label: label != null && label !== '' && muiFormControl.required ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
266
261
  children: [label, "\u2009", '*']
267
262
  }) : label,
268
263
  ownerState: ownerState
269
- })]
264
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersInputInput, (0, _extends2.default)({
265
+ className: classes.input,
266
+ value: value,
267
+ onChange: onChange,
268
+ id: id,
269
+ "aria-hidden": "true",
270
+ tabIndex: -1
271
+ }, inputProps, {
272
+ ref: handleInputRef
273
+ }))]
270
274
  }));
271
275
  });
272
- var _default = exports.default = PickersInput;
276
+ PickersInput.muiName = 'Input';