@mui/material 9.0.0 → 9.0.1

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 (130) hide show
  1. package/Autocomplete/Autocomplete.js +65 -11
  2. package/Autocomplete/Autocomplete.mjs +65 -11
  3. package/Avatar/Avatar.js +4 -0
  4. package/Avatar/Avatar.mjs +4 -0
  5. package/Badge/Badge.js +3 -0
  6. package/Badge/Badge.mjs +3 -0
  7. package/Button/Button.js +19 -2
  8. package/Button/Button.mjs +19 -2
  9. package/ButtonBase/ButtonBase.d.mts +7 -0
  10. package/ButtonBase/ButtonBase.d.ts +7 -0
  11. package/ButtonBase/ButtonBase.js +5 -2
  12. package/ButtonBase/ButtonBase.mjs +5 -2
  13. package/CHANGELOG.md +132 -1245
  14. package/Checkbox/Checkbox.js +2 -1
  15. package/Checkbox/Checkbox.mjs +2 -1
  16. package/CircularProgress/CircularProgress.d.mts +12 -2
  17. package/CircularProgress/CircularProgress.d.ts +12 -2
  18. package/CircularProgress/CircularProgress.js +33 -6
  19. package/CircularProgress/CircularProgress.mjs +33 -6
  20. package/ClickAwayListener/ClickAwayListener.js +3 -6
  21. package/ClickAwayListener/ClickAwayListener.mjs +3 -6
  22. package/Dialog/Dialog.js +11 -6
  23. package/Dialog/Dialog.mjs +11 -6
  24. package/Drawer/Drawer.js +18 -4
  25. package/Drawer/Drawer.mjs +18 -4
  26. package/Fab/Fab.js +7 -1
  27. package/Fab/Fab.mjs +7 -1
  28. package/FilledInput/FilledInput.d.mts +4 -0
  29. package/FilledInput/FilledInput.d.ts +4 -0
  30. package/FilledInput/FilledInput.js +18 -20
  31. package/FilledInput/FilledInput.mjs +18 -20
  32. package/FormControl/useFormControl.d.mts +12 -2
  33. package/FormControl/useFormControl.d.ts +12 -2
  34. package/FormControl/useFormControl.js +13 -0
  35. package/FormControl/useFormControl.mjs +12 -0
  36. package/FormControlLabel/FormControlLabel.js +5 -8
  37. package/FormControlLabel/FormControlLabel.mjs +5 -8
  38. package/FormGroup/FormGroup.js +2 -5
  39. package/FormGroup/FormGroup.mjs +2 -5
  40. package/FormHelperText/FormHelperText.js +2 -5
  41. package/FormHelperText/FormHelperText.mjs +2 -5
  42. package/FormLabel/FormLabel.js +2 -5
  43. package/FormLabel/FormLabel.mjs +2 -5
  44. package/IconButton/IconButton.js +1 -8
  45. package/IconButton/IconButton.mjs +1 -8
  46. package/Input/Input.d.mts +4 -0
  47. package/Input/Input.d.ts +4 -0
  48. package/Input/Input.js +6 -0
  49. package/Input/Input.mjs +6 -0
  50. package/InputBase/InputBase.d.mts +2 -1
  51. package/InputBase/InputBase.d.ts +2 -1
  52. package/InputBase/InputBase.js +50 -15
  53. package/InputBase/InputBase.mjs +50 -15
  54. package/InputLabel/InputLabel.js +5 -8
  55. package/InputLabel/InputLabel.mjs +5 -8
  56. package/LinearProgress/LinearProgress.d.mts +12 -2
  57. package/LinearProgress/LinearProgress.d.ts +12 -2
  58. package/LinearProgress/LinearProgress.js +42 -10
  59. package/LinearProgress/LinearProgress.mjs +42 -10
  60. package/List/List.js +2 -1
  61. package/List/List.mjs +2 -1
  62. package/ListItemButton/ListItemButton.js +7 -1
  63. package/ListItemButton/ListItemButton.mjs +7 -1
  64. package/MenuItem/MenuItem.js +7 -1
  65. package/MenuItem/MenuItem.mjs +7 -1
  66. package/MenuList/MenuList.js +2 -1
  67. package/MenuList/MenuList.mjs +2 -1
  68. package/NativeSelect/NativeSelect.js +2 -5
  69. package/NativeSelect/NativeSelect.mjs +2 -5
  70. package/OutlinedInput/OutlinedInput.js +13 -23
  71. package/OutlinedInput/OutlinedInput.mjs +13 -23
  72. package/PigmentContainer/PigmentContainer.js +0 -1
  73. package/PigmentContainer/PigmentContainer.mjs +0 -1
  74. package/Popper/BasePopper.js +23 -1
  75. package/Popper/BasePopper.mjs +23 -1
  76. package/Select/Select.js +2 -5
  77. package/Select/Select.mjs +2 -5
  78. package/Select/SelectInput.js +164 -2
  79. package/Select/SelectInput.mjs +164 -2
  80. package/Slide/Slide.js +48 -26
  81. package/Slide/Slide.mjs +49 -27
  82. package/Slider/Slider.js +10 -1
  83. package/Slider/Slider.mjs +10 -1
  84. package/Slider/useSlider.js +3 -2
  85. package/Slider/useSlider.mjs +3 -2
  86. package/SwipeableDrawer/SwipeableDrawer.js +7 -3
  87. package/SwipeableDrawer/SwipeableDrawer.mjs +7 -3
  88. package/Switch/Switch.js +7 -6
  89. package/Switch/Switch.mjs +7 -6
  90. package/Tabs/ScrollbarSize.js +2 -1
  91. package/Tabs/ScrollbarSize.mjs +2 -1
  92. package/Tabs/Tabs.js +2 -1
  93. package/Tabs/Tabs.mjs +2 -1
  94. package/Tooltip/Tooltip.js +26 -108
  95. package/Tooltip/Tooltip.mjs +26 -108
  96. package/Unstable_TrapFocus/FocusTrap.js +18 -14
  97. package/Unstable_TrapFocus/FocusTrap.mjs +18 -14
  98. package/index.js +1 -1
  99. package/index.mjs +1 -1
  100. package/package.json +49 -49
  101. package/styles/responsiveFontSizes.js +19 -8
  102. package/styles/responsiveFontSizes.mjs +19 -8
  103. package/styles/useThemeProps.d.mts +3 -3
  104. package/styles/useThemeProps.d.ts +3 -3
  105. package/transitions/utils.d.mts +17 -0
  106. package/transitions/utils.d.ts +17 -0
  107. package/transitions/utils.js +64 -0
  108. package/transitions/utils.mjs +63 -0
  109. package/useAutocomplete/useAutocomplete.d.mts +4 -5
  110. package/useAutocomplete/useAutocomplete.d.ts +4 -5
  111. package/useAutocomplete/useAutocomplete.js +166 -53
  112. package/useAutocomplete/useAutocomplete.mjs +166 -53
  113. package/utils/contains.d.mts +2 -0
  114. package/utils/contains.d.ts +2 -0
  115. package/utils/contains.js +9 -0
  116. package/utils/contains.mjs +2 -0
  117. package/utils/focusable.d.mts +7 -0
  118. package/utils/focusable.d.ts +7 -0
  119. package/utils/focusable.js +20 -0
  120. package/utils/focusable.mjs +13 -0
  121. package/utils/getEventTarget.d.mts +2 -0
  122. package/utils/getEventTarget.d.ts +2 -0
  123. package/utils/getEventTarget.js +9 -0
  124. package/utils/getEventTarget.mjs +2 -0
  125. package/utils/mergeSlotProps.js +2 -8
  126. package/utils/mergeSlotProps.mjs +1 -8
  127. package/version/index.js +2 -2
  128. package/version/index.mjs +2 -2
  129. package/FormControl/formControlState.js +0 -21
  130. package/FormControl/formControlState.mjs +0 -15
@@ -158,7 +158,8 @@ const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {
158
158
  slots,
159
159
  slotProps: {
160
160
  input: (0, _utils.mergeSlotProps)(typeof externalInputProps === 'function' ? externalInputProps(ownerState) : externalInputProps, {
161
- 'data-indeterminate': indeterminate
161
+ 'data-indeterminate': indeterminate,
162
+ 'aria-checked': indeterminate ? 'mixed' : undefined
162
163
  })
163
164
  }
164
165
  }
@@ -151,7 +151,8 @@ const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {
151
151
  slots,
152
152
  slotProps: {
153
153
  input: mergeSlotProps(typeof externalInputProps === 'function' ? externalInputProps(ownerState) : externalInputProps, {
154
- 'data-indeterminate': indeterminate
154
+ 'data-indeterminate': indeterminate,
155
+ 'aria-checked': indeterminate ? 'mixed' : undefined
155
156
  })
156
157
  }
157
158
  }
@@ -30,6 +30,16 @@ export interface CircularProgressProps extends StandardProps<React.HTMLAttribute
30
30
  * @default false
31
31
  */
32
32
  enableTrackSlot?: boolean | undefined;
33
+ /**
34
+ * The maximum value for the progress indicator for the determinate variant.
35
+ * @default 100
36
+ */
37
+ max?: number | undefined;
38
+ /**
39
+ * The minimum value for the progress indicator for the determinate variant.
40
+ * @default 0
41
+ */
42
+ min?: number | undefined;
33
43
  /**
34
44
  * The size of the component.
35
45
  * If using a number, the pixel unit is assumed.
@@ -48,8 +58,8 @@ export interface CircularProgressProps extends StandardProps<React.HTMLAttribute
48
58
  thickness?: number | undefined;
49
59
  /**
50
60
  * The value of the progress indicator for the determinate variant.
51
- * Value between 0 and 100.
52
- * @default 0
61
+ * Value between `min` and `max`.
62
+ * @default props.min ?? 0
53
63
  */
54
64
  value?: number | undefined;
55
65
  /**
@@ -30,6 +30,16 @@ export interface CircularProgressProps extends StandardProps<React.HTMLAttribute
30
30
  * @default false
31
31
  */
32
32
  enableTrackSlot?: boolean | undefined;
33
+ /**
34
+ * The maximum value for the progress indicator for the determinate variant.
35
+ * @default 100
36
+ */
37
+ max?: number | undefined;
38
+ /**
39
+ * The minimum value for the progress indicator for the determinate variant.
40
+ * @default 0
41
+ */
42
+ min?: number | undefined;
33
43
  /**
34
44
  * The size of the component.
35
45
  * If using a number, the pixel unit is assumed.
@@ -48,8 +58,8 @@ export interface CircularProgressProps extends StandardProps<React.HTMLAttribute
48
58
  thickness?: number | undefined;
49
59
  /**
50
60
  * The value of the progress indicator for the determinate variant.
51
- * Value between 0 and 100.
52
- * @default 0
61
+ * Value between `min` and `max`.
62
+ * @default props.min ?? 0
53
63
  */
54
64
  value?: number | undefined;
55
65
  /**
@@ -146,7 +146,7 @@ const CircularProgressCircle = (0, _zeroStyled.styled)('circle', {
146
146
  ownerState
147
147
  }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
148
148
  style: dashAnimation || {
149
- // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.
149
+ // At runtime for Pigment CSS, `dashAnimation` will be null and the generated keyframe will be used.
150
150
  animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
151
151
  }
152
152
  }]
@@ -178,13 +178,22 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
178
178
  color = 'primary',
179
179
  disableShrink = false,
180
180
  enableTrackSlot = false,
181
+ min: minProp,
182
+ max: maxProp,
181
183
  size = 40,
182
184
  style,
183
185
  thickness = 3.6,
184
- value = 0,
186
+ value = props.min ?? 0,
185
187
  variant = 'indeterminate',
186
188
  ...other
187
189
  } = props;
190
+ if (process.env.NODE_ENV !== 'production') {
191
+ if (variant === 'indeterminate' && (minProp !== undefined || maxProp !== undefined)) {
192
+ console.warn(`MUI: You have provided the \`min\` or \`max\` props with an 'indeterminate' variant. These props will have no effect.`);
193
+ }
194
+ }
195
+ const min = minProp ?? 0;
196
+ const max = maxProp ?? 100;
188
197
  const ownerState = {
189
198
  ...props,
190
199
  color,
@@ -201,10 +210,18 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
201
210
  const rootProps = {};
202
211
  if (variant === 'determinate') {
203
212
  const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);
213
+ if (process.env.NODE_ENV !== 'production') {
214
+ if (value < min || value > max || min >= max) {
215
+ console.error(`MUI: The min, max, and value props in CircularProgress should be numbers where min < max and min <= value <= max. Received min=${min}, max=${max}, value=${value}.`);
216
+ }
217
+ }
218
+ const range = max - min;
204
219
  circleStyle.strokeDasharray = circumference.toFixed(3);
205
- rootProps['aria-valuenow'] = Math.round(value);
206
- circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;
220
+ circleStyle.strokeDashoffset = range > 0 ? `${((max - value) / range * circumference).toFixed(3)}px` : `${circumference.toFixed(3)}px`; // empty-state fallback when range is invalid
207
221
  rootStyle.transform = 'rotate(-90deg)';
222
+ rootProps['aria-valuenow'] = value;
223
+ rootProps['aria-valuemin'] = min;
224
+ rootProps['aria-valuemax'] = max;
208
225
  }
209
226
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(CircularProgressRoot, {
210
227
  className: (0, _clsx.default)(classes.root, className),
@@ -282,6 +299,16 @@ process.env.NODE_ENV !== "production" ? CircularProgress.propTypes /* remove-pro
282
299
  * @default false
283
300
  */
284
301
  enableTrackSlot: _propTypes.default.bool,
302
+ /**
303
+ * The maximum value for the progress indicator for the determinate variant.
304
+ * @default 100
305
+ */
306
+ max: _propTypes.default.number,
307
+ /**
308
+ * The minimum value for the progress indicator for the determinate variant.
309
+ * @default 0
310
+ */
311
+ min: _propTypes.default.number,
285
312
  /**
286
313
  * The size of the component.
287
314
  * If using a number, the pixel unit is assumed.
@@ -304,8 +331,8 @@ process.env.NODE_ENV !== "production" ? CircularProgress.propTypes /* remove-pro
304
331
  thickness: _propTypes.default.number,
305
332
  /**
306
333
  * The value of the progress indicator for the determinate variant.
307
- * Value between 0 and 100.
308
- * @default 0
334
+ * Value between `min` and `max`.
335
+ * @default props.min ?? 0
309
336
  */
310
337
  value: _propTypes.default.number,
311
338
  /**
@@ -139,7 +139,7 @@ const CircularProgressCircle = styled('circle', {
139
139
  ownerState
140
140
  }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
141
141
  style: dashAnimation || {
142
- // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.
142
+ // At runtime for Pigment CSS, `dashAnimation` will be null and the generated keyframe will be used.
143
143
  animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
144
144
  }
145
145
  }]
@@ -171,13 +171,22 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
171
171
  color = 'primary',
172
172
  disableShrink = false,
173
173
  enableTrackSlot = false,
174
+ min: minProp,
175
+ max: maxProp,
174
176
  size = 40,
175
177
  style,
176
178
  thickness = 3.6,
177
- value = 0,
179
+ value = props.min ?? 0,
178
180
  variant = 'indeterminate',
179
181
  ...other
180
182
  } = props;
183
+ if (process.env.NODE_ENV !== 'production') {
184
+ if (variant === 'indeterminate' && (minProp !== undefined || maxProp !== undefined)) {
185
+ console.warn(`MUI: You have provided the \`min\` or \`max\` props with an 'indeterminate' variant. These props will have no effect.`);
186
+ }
187
+ }
188
+ const min = minProp ?? 0;
189
+ const max = maxProp ?? 100;
181
190
  const ownerState = {
182
191
  ...props,
183
192
  color,
@@ -194,10 +203,18 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
194
203
  const rootProps = {};
195
204
  if (variant === 'determinate') {
196
205
  const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);
206
+ if (process.env.NODE_ENV !== 'production') {
207
+ if (value < min || value > max || min >= max) {
208
+ console.error(`MUI: The min, max, and value props in CircularProgress should be numbers where min < max and min <= value <= max. Received min=${min}, max=${max}, value=${value}.`);
209
+ }
210
+ }
211
+ const range = max - min;
197
212
  circleStyle.strokeDasharray = circumference.toFixed(3);
198
- rootProps['aria-valuenow'] = Math.round(value);
199
- circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;
213
+ circleStyle.strokeDashoffset = range > 0 ? `${((max - value) / range * circumference).toFixed(3)}px` : `${circumference.toFixed(3)}px`; // empty-state fallback when range is invalid
200
214
  rootStyle.transform = 'rotate(-90deg)';
215
+ rootProps['aria-valuenow'] = value;
216
+ rootProps['aria-valuemin'] = min;
217
+ rootProps['aria-valuemax'] = max;
201
218
  }
202
219
  return /*#__PURE__*/_jsx(CircularProgressRoot, {
203
220
  className: clsx(classes.root, className),
@@ -275,6 +292,16 @@ process.env.NODE_ENV !== "production" ? CircularProgress.propTypes /* remove-pro
275
292
  * @default false
276
293
  */
277
294
  enableTrackSlot: PropTypes.bool,
295
+ /**
296
+ * The maximum value for the progress indicator for the determinate variant.
297
+ * @default 100
298
+ */
299
+ max: PropTypes.number,
300
+ /**
301
+ * The minimum value for the progress indicator for the determinate variant.
302
+ * @default 0
303
+ */
304
+ min: PropTypes.number,
278
305
  /**
279
306
  * The size of the component.
280
307
  * If using a number, the pixel unit is assumed.
@@ -297,8 +324,8 @@ process.env.NODE_ENV !== "production" ? CircularProgress.propTypes /* remove-pro
297
324
  thickness: PropTypes.number,
298
325
  /**
299
326
  * The value of the progress indicator for the determinate variant.
300
- * Value between 0 and 100.
301
- * @default 0
327
+ * Value between `min` and `max`.
328
+ * @default props.min ?? 0
302
329
  */
303
330
  value: PropTypes.number,
304
331
  /**
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", {
9
9
  exports.ClickAwayListener = ClickAwayListener;
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _contains = _interopRequireDefault(require("@mui/utils/contains"));
12
13
  var _ownerDocument = _interopRequireDefault(require("@mui/utils/ownerDocument"));
13
14
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
14
15
  var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
@@ -72,7 +73,7 @@ function ClickAwayListener(props) {
72
73
  syntheticEventRef.current = false;
73
74
  const doc = (0, _ownerDocument.default)(nodeRef.current);
74
75
 
75
- // 1. IE11 support, which trigger the handleClickAway even after the unbind
76
+ // 1. IE 11 support, which trigger the handleClickAway even after the unbind
76
77
  // 2. The child might render null.
77
78
  // 3. Behave like a blur listener.
78
79
  if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {
@@ -90,11 +91,7 @@ function ClickAwayListener(props) {
90
91
  if (event.composedPath) {
91
92
  insideDOM = event.composedPath().includes(nodeRef.current);
92
93
  } else {
93
- insideDOM = !doc.documentElement.contains(
94
- // @ts-expect-error returns `false` as intended when not dispatched from a Node
95
- event.target) || nodeRef.current.contains(
96
- // @ts-expect-error returns `false` as intended when not dispatched from a Node
97
- event.target);
94
+ insideDOM = !(0, _contains.default)(doc.documentElement, event.target) || (0, _contains.default)(nodeRef.current, event.target);
98
95
  }
99
96
  if (!insideDOM && (disableReactTree || !insideReactTree)) {
100
97
  onClickAway(event);
@@ -2,6 +2,7 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import PropTypes from 'prop-types';
5
+ import contains from '@mui/utils/contains';
5
6
  import ownerDocument from '@mui/utils/ownerDocument';
6
7
  import useForkRef from '@mui/utils/useForkRef';
7
8
  import useEventCallback from '@mui/utils/useEventCallback';
@@ -66,7 +67,7 @@ function ClickAwayListener(props) {
66
67
  syntheticEventRef.current = false;
67
68
  const doc = ownerDocument(nodeRef.current);
68
69
 
69
- // 1. IE11 support, which trigger the handleClickAway even after the unbind
70
+ // 1. IE 11 support, which trigger the handleClickAway even after the unbind
70
71
  // 2. The child might render null.
71
72
  // 3. Behave like a blur listener.
72
73
  if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {
@@ -84,11 +85,7 @@ function ClickAwayListener(props) {
84
85
  if (event.composedPath) {
85
86
  insideDOM = event.composedPath().includes(nodeRef.current);
86
87
  } else {
87
- insideDOM = !doc.documentElement.contains(
88
- // @ts-expect-error returns `false` as intended when not dispatched from a Node
89
- event.target) || nodeRef.current.contains(
90
- // @ts-expect-error returns `false` as intended when not dispatched from a Node
91
- event.target);
88
+ insideDOM = !contains(doc.documentElement, event.target) || contains(nodeRef.current, event.target);
92
89
  }
93
90
  if (!insideDOM && (disableReactTree || !insideReactTree)) {
94
91
  onClickAway(event);
package/Dialog/Dialog.js CHANGED
@@ -23,6 +23,7 @@ var _zeroStyled = require("../zero-styled");
23
23
  var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
24
24
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
25
25
  var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
26
+ var _focusable = require("../utils/focusable");
26
27
  var _jsxRuntime = require("react/jsx-runtime");
27
28
  const DialogBackdrop = (0, _zeroStyled.styled)(_Backdrop.default, {
28
29
  name: 'MuiDialog',
@@ -298,7 +299,16 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
298
299
  shouldForwardComponentProp: true,
299
300
  externalForwardedProps,
300
301
  ownerState,
301
- className: classes.paper
302
+ className: classes.paper,
303
+ additionalProps: {
304
+ elevation: 24,
305
+ role,
306
+ 'aria-describedby': ariaDescribedby,
307
+ 'aria-labelledby': ariaLabelledby,
308
+ 'aria-modal': ariaModal,
309
+ tabIndex: -1,
310
+ [_focusable.FOCUSABLE_ATTRIBUTE]: ''
311
+ }
302
312
  });
303
313
  const [ContainerSlot, containerSlotProps] = (0, _useSlot.default)('container', {
304
314
  elementType: DialogContainer,
@@ -340,11 +350,6 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
340
350
  ...containerSlotProps,
341
351
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PaperSlot, {
342
352
  as: PaperComponent,
343
- elevation: 24,
344
- role: role,
345
- "aria-describedby": ariaDescribedby,
346
- "aria-labelledby": ariaLabelledby,
347
- "aria-modal": ariaModal,
348
353
  ...paperSlotProps,
349
354
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContext.default.Provider, {
350
355
  value: dialogContextValue,
package/Dialog/Dialog.mjs CHANGED
@@ -16,6 +16,7 @@ import { styled, useTheme } from "../zero-styled/index.mjs";
16
16
  import memoTheme from "../utils/memoTheme.mjs";
17
17
  import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
18
18
  import useSlot from "../utils/useSlot.mjs";
19
+ import { FOCUSABLE_ATTRIBUTE } from "../utils/focusable.mjs";
19
20
  import { jsx as _jsx } from "react/jsx-runtime";
20
21
  const DialogBackdrop = styled(Backdrop, {
21
22
  name: 'MuiDialog',
@@ -291,7 +292,16 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
291
292
  shouldForwardComponentProp: true,
292
293
  externalForwardedProps,
293
294
  ownerState,
294
- className: classes.paper
295
+ className: classes.paper,
296
+ additionalProps: {
297
+ elevation: 24,
298
+ role,
299
+ 'aria-describedby': ariaDescribedby,
300
+ 'aria-labelledby': ariaLabelledby,
301
+ 'aria-modal': ariaModal,
302
+ tabIndex: -1,
303
+ [FOCUSABLE_ATTRIBUTE]: ''
304
+ }
295
305
  });
296
306
  const [ContainerSlot, containerSlotProps] = useSlot('container', {
297
307
  elementType: DialogContainer,
@@ -333,11 +343,6 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
333
343
  ...containerSlotProps,
334
344
  children: /*#__PURE__*/_jsx(PaperSlot, {
335
345
  as: PaperComponent,
336
- elevation: 24,
337
- role: role,
338
- "aria-describedby": ariaDescribedby,
339
- "aria-labelledby": ariaLabelledby,
340
- "aria-modal": ariaModal,
341
346
  ...paperSlotProps,
342
347
  children: /*#__PURE__*/_jsx(DialogContext.Provider, {
343
348
  value: dialogContextValue,
package/Drawer/Drawer.js CHANGED
@@ -23,8 +23,10 @@ var _rootShouldForwardProp = _interopRequireDefault(require("../styles/rootShoul
23
23
  var _zeroStyled = require("../zero-styled");
24
24
  var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
25
25
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
26
+ var _useForkRef = _interopRequireDefault(require("../utils/useForkRef"));
26
27
  var _drawerClasses = require("./drawerClasses");
27
28
  var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
29
+ var _focusable = require("../utils/focusable");
28
30
  var _utils = require("../utils");
29
31
  var _jsxRuntime = require("react/jsx-runtime");
30
32
  const overridesResolver = (props, styles) => {
@@ -203,9 +205,15 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
203
205
  // We use this state is order to skip the appear transition during the
204
206
  // initial mount of the component.
205
207
  const mounted = React.useRef(false);
208
+ const rootRef = React.useRef(null);
209
+ const handleRef = (0, _useForkRef.default)(ref, rootRef);
206
210
  React.useEffect(() => {
207
211
  mounted.current = true;
208
212
  }, []);
213
+
214
+ // Resolve the container lazily so Slide reads the mounted modal root
215
+ // after refs are assigned, rather than the initial null ref during render.
216
+ const resolveSlideContainer = React.useCallback(() => rootRef.current, []);
209
217
  const anchorInvariant = getAnchor({
210
218
  direction: isRtl ? 'rtl' : 'ltr'
211
219
  }, anchorProp);
@@ -229,7 +237,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
229
237
  }
230
238
  };
231
239
  const [RootSlot, rootSlotProps] = (0, _useSlot.default)('root', {
232
- ref,
240
+ ref: handleRef,
233
241
  elementType: DrawerRoot,
234
242
  className: (0, _clsx.default)(classes.root, classes.modal, className),
235
243
  shouldForwardComponentProp: true,
@@ -240,6 +248,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
240
248
  ...ModalProps
241
249
  },
242
250
  additionalProps: {
251
+ closeAfterTransition: true,
243
252
  open,
244
253
  onClose,
245
254
  hideBackdrop,
@@ -262,13 +271,15 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
262
271
  square: true,
263
272
  ...(variant === 'temporary' && {
264
273
  role: 'dialog',
265
- 'aria-modal': 'true'
274
+ 'aria-modal': 'true',
275
+ [_focusable.FOCUSABLE_ATTRIBUTE]: '',
276
+ tabIndex: -1
266
277
  })
267
278
  }
268
279
  });
269
280
  const [DockedSlot, dockedSlotProps] = (0, _useSlot.default)('docked', {
270
281
  elementType: DrawerDockedRoot,
271
- ref,
282
+ ref: handleRef,
272
283
  className: (0, _clsx.default)(classes.root, classes.docked, className),
273
284
  ownerState,
274
285
  externalForwardedProps,
@@ -282,7 +293,10 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
282
293
  in: open,
283
294
  direction: oppositeDirection[anchorInvariant],
284
295
  timeout: transitionDuration,
285
- appear: mounted.current
296
+ appear: mounted.current,
297
+ ...(variant === 'temporary' && (slots.transition == null || slots.transition === _Slide.default) && {
298
+ container: resolveSlideContainer
299
+ })
286
300
  }
287
301
  });
288
302
  const drawer = /*#__PURE__*/(0, _jsxRuntime.jsx)(PaperSlot, {
package/Drawer/Drawer.mjs CHANGED
@@ -14,8 +14,10 @@ import rootShouldForwardProp from "../styles/rootShouldForwardProp.mjs";
14
14
  import { styled, useTheme } from "../zero-styled/index.mjs";
15
15
  import memoTheme from "../utils/memoTheme.mjs";
16
16
  import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
17
+ import useForkRef from "../utils/useForkRef.mjs";
17
18
  import { getDrawerUtilityClass } from "./drawerClasses.mjs";
18
19
  import useSlot from "../utils/useSlot.mjs";
20
+ import { FOCUSABLE_ATTRIBUTE } from "../utils/focusable.mjs";
19
21
  import { mergeSlotProps } from "../utils/index.mjs";
20
22
  import { jsx as _jsx } from "react/jsx-runtime";
21
23
  const overridesResolver = (props, styles) => {
@@ -194,9 +196,15 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
194
196
  // We use this state is order to skip the appear transition during the
195
197
  // initial mount of the component.
196
198
  const mounted = React.useRef(false);
199
+ const rootRef = React.useRef(null);
200
+ const handleRef = useForkRef(ref, rootRef);
197
201
  React.useEffect(() => {
198
202
  mounted.current = true;
199
203
  }, []);
204
+
205
+ // Resolve the container lazily so Slide reads the mounted modal root
206
+ // after refs are assigned, rather than the initial null ref during render.
207
+ const resolveSlideContainer = React.useCallback(() => rootRef.current, []);
200
208
  const anchorInvariant = getAnchor({
201
209
  direction: isRtl ? 'rtl' : 'ltr'
202
210
  }, anchorProp);
@@ -220,7 +228,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
220
228
  }
221
229
  };
222
230
  const [RootSlot, rootSlotProps] = useSlot('root', {
223
- ref,
231
+ ref: handleRef,
224
232
  elementType: DrawerRoot,
225
233
  className: clsx(classes.root, classes.modal, className),
226
234
  shouldForwardComponentProp: true,
@@ -231,6 +239,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
231
239
  ...ModalProps
232
240
  },
233
241
  additionalProps: {
242
+ closeAfterTransition: true,
234
243
  open,
235
244
  onClose,
236
245
  hideBackdrop,
@@ -253,13 +262,15 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
253
262
  square: true,
254
263
  ...(variant === 'temporary' && {
255
264
  role: 'dialog',
256
- 'aria-modal': 'true'
265
+ 'aria-modal': 'true',
266
+ [FOCUSABLE_ATTRIBUTE]: '',
267
+ tabIndex: -1
257
268
  })
258
269
  }
259
270
  });
260
271
  const [DockedSlot, dockedSlotProps] = useSlot('docked', {
261
272
  elementType: DrawerDockedRoot,
262
- ref,
273
+ ref: handleRef,
263
274
  className: clsx(classes.root, classes.docked, className),
264
275
  ownerState,
265
276
  externalForwardedProps,
@@ -273,7 +284,10 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
273
284
  in: open,
274
285
  direction: oppositeDirection[anchorInvariant],
275
286
  timeout: transitionDuration,
276
- appear: mounted.current
287
+ appear: mounted.current,
288
+ ...(variant === 'temporary' && (slots.transition == null || slots.transition === Slide) && {
289
+ container: resolveSlideContainer
290
+ })
277
291
  }
278
292
  });
279
293
  const drawer = /*#__PURE__*/_jsx(PaperSlot, {
package/Fab/Fab.js CHANGED
@@ -194,6 +194,12 @@ const Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {
194
194
  variant
195
195
  };
196
196
  const classes = useUtilityClasses(ownerState);
197
+
198
+ // Don't forward the 'root' class to the ButtonBase, as it will get duplicated with the one passed to the className prop.
199
+ const {
200
+ root,
201
+ ...forwardedClasses
202
+ } = classes;
197
203
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(FabRoot, {
198
204
  className: (0, _clsx.default)(classes.root, className),
199
205
  component: component,
@@ -204,7 +210,7 @@ const Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {
204
210
  ownerState: ownerState,
205
211
  ref: ref,
206
212
  ...other,
207
- classes: classes,
213
+ classes: forwardedClasses,
208
214
  children: children
209
215
  });
210
216
  });
package/Fab/Fab.mjs CHANGED
@@ -187,6 +187,12 @@ const Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {
187
187
  variant
188
188
  };
189
189
  const classes = useUtilityClasses(ownerState);
190
+
191
+ // Don't forward the 'root' class to the ButtonBase, as it will get duplicated with the one passed to the className prop.
192
+ const {
193
+ root,
194
+ ...forwardedClasses
195
+ } = classes;
190
196
  return /*#__PURE__*/_jsx(FabRoot, {
191
197
  className: clsx(classes.root, className),
192
198
  component: component,
@@ -197,7 +203,7 @@ const Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {
197
203
  ownerState: ownerState,
198
204
  ref: ref,
199
205
  ...other,
200
- classes: classes,
206
+ classes: forwardedClasses,
201
207
  children: children
202
208
  });
203
209
  });
@@ -20,6 +20,10 @@ export interface FilledInputProps extends StandardProps<InputBaseProps> {
20
20
  * @default false
21
21
  */
22
22
  disableUnderline?: boolean | undefined;
23
+ /**
24
+ * @internal
25
+ */
26
+ notched?: boolean | undefined;
23
27
  /**
24
28
  * The system prop that allows defining system overrides as well as additional CSS styles.
25
29
  */
@@ -20,6 +20,10 @@ export interface FilledInputProps extends StandardProps<InputBaseProps> {
20
20
  * @default false
21
21
  */
22
22
  disableUnderline?: boolean | undefined;
23
+ /**
24
+ * @internal
25
+ */
26
+ notched?: boolean | undefined;
23
27
  /**
24
28
  * The system prop that allows defining system overrides as well as additional CSS styles.
25
29
  */
@@ -201,28 +201,20 @@ const FilledInputInput = (0, _zeroStyled.styled)(_InputBase2.InputBaseInput, {
201
201
  paddingRight: 12,
202
202
  paddingBottom: 8,
203
203
  paddingLeft: 12,
204
- ...(!theme.vars && {
205
- '&:-webkit-autofill': {
204
+ '&:-webkit-autofill': {
205
+ ...(!theme.vars && {
206
206
  WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',
207
207
  WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',
208
- caretColor: theme.palette.mode === 'light' ? null : '#fff',
209
- borderTopLeftRadius: 'inherit',
210
- borderTopRightRadius: 'inherit'
211
- }
212
- }),
213
- ...(theme.vars && {
214
- '&:-webkit-autofill': {
215
- borderTopLeftRadius: 'inherit',
216
- borderTopRightRadius: 'inherit'
217
- },
218
- [theme.getColorSchemeSelector('dark')]: {
219
- '&:-webkit-autofill': {
220
- WebkitBoxShadow: '0 0 0 100px #266798 inset',
221
- WebkitTextFillColor: '#fff',
222
- caretColor: '#fff'
223
- }
224
- }
225
- }),
208
+ caretColor: theme.palette.mode === 'light' ? null : '#fff'
209
+ }),
210
+ borderTopLeftRadius: 'inherit',
211
+ borderTopRightRadius: 'inherit',
212
+ ...(theme.vars && theme.applyStyles('dark', {
213
+ WebkitBoxShadow: '0 0 0 100px #266798 inset',
214
+ WebkitTextFillColor: '#fff',
215
+ caretColor: '#fff'
216
+ }))
217
+ },
226
218
  variants: [{
227
219
  props: {
228
220
  size: 'small'
@@ -285,6 +277,8 @@ const FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps,
285
277
  // declare here to prevent spreading to DOM
286
278
  inputComponent = 'input',
287
279
  multiline = false,
280
+ notched,
281
+ // declare here to prevent spreading to DOM
288
282
  slotProps,
289
283
  slots = {},
290
284
  type = 'text',
@@ -428,6 +422,10 @@ process.env.NODE_ENV !== "production" ? FilledInput.propTypes /* remove-proptype
428
422
  * Name attribute of the `input` element.
429
423
  */
430
424
  name: _propTypes.default.string,
425
+ /**
426
+ * @internal
427
+ */
428
+ notched: _propTypes.default.bool,
431
429
  /**
432
430
  * Callback fired when the value is changed.
433
431
  *