@mui/material 6.4.4 → 6.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/Accordion/Accordion.d.ts +14 -12
  2. package/Alert/Alert.d.ts +3 -15
  3. package/Backdrop/Backdrop.d.ts +14 -12
  4. package/Button/Button.js +3 -3
  5. package/CHANGELOG.md +63 -0
  6. package/CardHeader/CardHeader.d.ts +4 -20
  7. package/Checkbox/Checkbox.d.ts +45 -9
  8. package/Checkbox/Checkbox.js +51 -21
  9. package/Dialog/Dialog.d.ts +4 -4
  10. package/Drawer/Drawer.d.ts +92 -1
  11. package/Drawer/Drawer.js +108 -36
  12. package/IconButton/IconButton.js +3 -3
  13. package/InputBase/inputBaseClasses.d.ts +15 -6
  14. package/Menu/Menu.d.ts +88 -1
  15. package/Menu/Menu.js +58 -19
  16. package/Modal/Modal.js +9 -10
  17. package/Popover/Popover.d.ts +60 -6
  18. package/Popover/Popover.js +78 -51
  19. package/Radio/Radio.d.ts +45 -1
  20. package/Radio/Radio.js +59 -16
  21. package/Select/SelectInput.js +8 -8
  22. package/Snackbar/Snackbar.d.ts +79 -2
  23. package/Snackbar/Snackbar.js +110 -32
  24. package/SpeedDial/SpeedDial.d.ts +8 -6
  25. package/SpeedDialAction/SpeedDialAction.d.ts +82 -1
  26. package/SpeedDialAction/SpeedDialAction.js +108 -30
  27. package/StepContent/StepContent.d.ts +2 -2
  28. package/SwipeableDrawer/SwipeableDrawer.d.ts +28 -2
  29. package/SwipeableDrawer/SwipeableDrawer.js +60 -13
  30. package/Switch/Switch.js +2 -0
  31. package/Tabs/Tabs.d.ts +129 -29
  32. package/Tabs/Tabs.js +120 -52
  33. package/Tabs/tabsClasses.d.ts +4 -0
  34. package/Tabs/tabsClasses.js +1 -1
  35. package/Tooltip/Tooltip.d.ts +20 -12
  36. package/index.js +1 -1
  37. package/internal/SwitchBase.d.ts +35 -1
  38. package/internal/SwitchBase.js +84 -30
  39. package/modern/Button/Button.js +3 -3
  40. package/modern/Checkbox/Checkbox.js +51 -21
  41. package/modern/Drawer/Drawer.js +108 -36
  42. package/modern/IconButton/IconButton.js +3 -3
  43. package/modern/Menu/Menu.js +58 -19
  44. package/modern/Modal/Modal.js +9 -10
  45. package/modern/Popover/Popover.js +78 -51
  46. package/modern/Radio/Radio.js +59 -16
  47. package/modern/Select/SelectInput.js +8 -8
  48. package/modern/Snackbar/Snackbar.js +110 -32
  49. package/modern/SpeedDialAction/SpeedDialAction.js +108 -30
  50. package/modern/SwipeableDrawer/SwipeableDrawer.js +60 -13
  51. package/modern/Switch/Switch.js +2 -0
  52. package/modern/Tabs/Tabs.js +120 -52
  53. package/modern/Tabs/tabsClasses.js +1 -1
  54. package/modern/index.js +1 -1
  55. package/modern/internal/SwitchBase.js +84 -30
  56. package/modern/styles/createThemeNoVars.js +7 -2
  57. package/modern/useAutocomplete/useAutocomplete.js +0 -1
  58. package/modern/version/index.js +2 -2
  59. package/node/Button/Button.js +3 -3
  60. package/node/Checkbox/Checkbox.js +51 -21
  61. package/node/Drawer/Drawer.js +108 -36
  62. package/node/IconButton/IconButton.js +3 -3
  63. package/node/Menu/Menu.js +58 -19
  64. package/node/Modal/Modal.js +9 -10
  65. package/node/Popover/Popover.js +78 -51
  66. package/node/Radio/Radio.js +59 -16
  67. package/node/Select/SelectInput.js +8 -8
  68. package/node/Snackbar/Snackbar.js +110 -32
  69. package/node/SpeedDialAction/SpeedDialAction.js +108 -30
  70. package/node/SwipeableDrawer/SwipeableDrawer.js +60 -13
  71. package/node/Switch/Switch.js +2 -0
  72. package/node/Tabs/Tabs.js +120 -52
  73. package/node/Tabs/tabsClasses.js +1 -1
  74. package/node/index.js +1 -1
  75. package/node/internal/SwitchBase.js +84 -30
  76. package/node/styles/createThemeNoVars.js +7 -2
  77. package/node/useAutocomplete/useAutocomplete.js +0 -1
  78. package/node/version/index.js +2 -2
  79. package/package.json +5 -5
  80. package/styles/createThemeNoVars.js +7 -2
  81. package/useAutocomplete/useAutocomplete.js +0 -1
  82. package/version/index.js +2 -2
@@ -10,7 +10,6 @@ exports.default = void 0;
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
13
- var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
14
13
  var _useSnackbar = _interopRequireDefault(require("./useSnackbar"));
15
14
  var _ClickAwayListener = _interopRequireDefault(require("../ClickAwayListener"));
16
15
  var _zeroStyled = require("../zero-styled");
@@ -20,6 +19,7 @@ var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
20
19
  var _Grow = _interopRequireDefault(require("../Grow"));
21
20
  var _SnackbarContent = _interopRequireDefault(require("../SnackbarContent"));
22
21
  var _snackbarClasses = require("./snackbarClasses");
22
+ var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
23
23
  var _jsxRuntime = require("react/jsx-runtime");
24
24
  const useUtilityClasses = ownerState => {
25
25
  const {
@@ -127,8 +127,8 @@ const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
127
127
  autoHideDuration = null,
128
128
  children,
129
129
  className,
130
- ClickAwayListenerProps,
131
- ContentProps,
130
+ ClickAwayListenerProps: ClickAwayListenerPropsProp,
131
+ ContentProps: ContentPropsProp,
132
132
  disableWindowBlurListener = false,
133
133
  message,
134
134
  onBlur,
@@ -138,12 +138,14 @@ const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
138
138
  onMouseLeave,
139
139
  open,
140
140
  resumeHideDuration,
141
- TransitionComponent = _Grow.default,
141
+ slots = {},
142
+ slotProps = {},
143
+ TransitionComponent: TransitionComponentProp,
142
144
  transitionDuration = defaultTransitionDuration,
143
145
  TransitionProps: {
144
146
  onEnter,
145
147
  onExited,
146
- ...TransitionProps
148
+ ...TransitionPropsProp
147
149
  } = {},
148
150
  ...other
149
151
  } = props;
@@ -155,7 +157,7 @@ const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
155
157
  },
156
158
  autoHideDuration,
157
159
  disableWindowBlurListener,
158
- TransitionComponent,
160
+ TransitionComponent: TransitionComponentProp,
159
161
  transitionDuration
160
162
  };
161
163
  const classes = useUtilityClasses(ownerState);
@@ -166,16 +168,6 @@ const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
166
168
  ...ownerState
167
169
  });
168
170
  const [exited, setExited] = React.useState(true);
169
- const rootProps = (0, _useSlotProps.default)({
170
- elementType: SnackbarRoot,
171
- getSlotProps: getRootProps,
172
- externalForwardedProps: other,
173
- ownerState,
174
- additionalProps: {
175
- ref
176
- },
177
- className: [classes.root, className]
178
- });
179
171
  const handleExited = node => {
180
172
  setExited(true);
181
173
  if (onExited) {
@@ -188,28 +180,84 @@ const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
188
180
  onEnter(node, isAppearing);
189
181
  }
190
182
  };
183
+ const externalForwardedProps = {
184
+ slots: {
185
+ transition: TransitionComponentProp,
186
+ ...slots
187
+ },
188
+ slotProps: {
189
+ content: ContentPropsProp,
190
+ clickAwayListener: ClickAwayListenerPropsProp,
191
+ transition: TransitionPropsProp,
192
+ ...slotProps
193
+ }
194
+ };
195
+ const [Root, rootProps] = (0, _useSlot.default)('root', {
196
+ ref,
197
+ className: [classes.root, className],
198
+ elementType: SnackbarRoot,
199
+ getSlotProps: getRootProps,
200
+ externalForwardedProps: {
201
+ ...externalForwardedProps,
202
+ ...other
203
+ },
204
+ ownerState
205
+ });
206
+ const [ClickAwaySlot, clickAwayListenerProps] = (0, _useSlot.default)('clickAwayListener', {
207
+ elementType: _ClickAwayListener.default,
208
+ externalForwardedProps,
209
+ getSlotProps: handlers => ({
210
+ onClickAway: (...params) => {
211
+ handlers.onClickAway?.(...params);
212
+ onClickAway(...params);
213
+ }
214
+ }),
215
+ ownerState
216
+ });
217
+ const [ContentSlot, contentSlotProps] = (0, _useSlot.default)('content', {
218
+ elementType: _SnackbarContent.default,
219
+ shouldForwardComponentProp: true,
220
+ externalForwardedProps,
221
+ additionalProps: {
222
+ message,
223
+ action
224
+ },
225
+ ownerState
226
+ });
227
+ const [TransitionSlot, transitionProps] = (0, _useSlot.default)('transition', {
228
+ elementType: _Grow.default,
229
+ externalForwardedProps,
230
+ getSlotProps: handlers => ({
231
+ onEnter: (...params) => {
232
+ handlers.onEnter?.(...params);
233
+ handleEnter(...params);
234
+ },
235
+ onExited: (...params) => {
236
+ handlers.onExited?.(...params);
237
+ handleExited(...params);
238
+ }
239
+ }),
240
+ additionalProps: {
241
+ appear: true,
242
+ in: open,
243
+ timeout: transitionDuration,
244
+ direction: vertical === 'top' ? 'down' : 'up'
245
+ },
246
+ ownerState
247
+ });
191
248
 
192
249
  // So we only render active snackbars.
193
250
  if (!open && exited) {
194
251
  return null;
195
252
  }
196
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickAwayListener.default, {
197
- onClickAway: onClickAway,
198
- ...ClickAwayListenerProps,
199
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(SnackbarRoot, {
253
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ClickAwaySlot, {
254
+ ...clickAwayListenerProps,
255
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
200
256
  ...rootProps,
201
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TransitionComponent, {
202
- appear: true,
203
- in: open,
204
- timeout: transitionDuration,
205
- direction: vertical === 'top' ? 'down' : 'up',
206
- onEnter: handleEnter,
207
- onExited: handleExited,
208
- ...TransitionProps,
209
- children: children || /*#__PURE__*/(0, _jsxRuntime.jsx)(_SnackbarContent.default, {
210
- message: message,
211
- action: action,
212
- ...ContentProps
257
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TransitionSlot, {
258
+ ...transitionProps,
259
+ children: children || /*#__PURE__*/(0, _jsxRuntime.jsx)(ContentSlot, {
260
+ ...contentSlotProps
213
261
  })
214
262
  })
215
263
  })
@@ -256,10 +304,12 @@ process.env.NODE_ENV !== "production" ? Snackbar.propTypes /* remove-proptypes *
256
304
  className: _propTypes.default.string,
257
305
  /**
258
306
  * Props applied to the `ClickAwayListener` element.
307
+ * @deprecated Use `slotProps.clickAwayListener` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
259
308
  */
260
309
  ClickAwayListenerProps: _propTypes.default.object,
261
310
  /**
262
311
  * Props applied to the [`SnackbarContent`](https://mui.com/material-ui/api/snackbar-content/) element.
312
+ * @deprecated Use `slotProps.content` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
263
313
  */
264
314
  ContentProps: _propTypes.default.object,
265
315
  /**
@@ -316,6 +366,32 @@ process.env.NODE_ENV !== "production" ? Snackbar.propTypes /* remove-proptypes *
316
366
  * we default to `autoHideDuration / 2` ms.
317
367
  */
318
368
  resumeHideDuration: _propTypes.default.number,
369
+ /**
370
+ * The props used for each slot inside.
371
+ * @default {}
372
+ */
373
+ slotProps: _propTypes.default.shape({
374
+ clickAwayListener: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.shape({
375
+ children: _propTypes.default.element.isRequired,
376
+ disableReactTree: _propTypes.default.bool,
377
+ mouseEvent: _propTypes.default.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),
378
+ onClickAway: _propTypes.default.func,
379
+ touchEvent: _propTypes.default.oneOf(['onTouchEnd', 'onTouchStart', false])
380
+ })]),
381
+ content: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
382
+ root: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
383
+ transition: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
384
+ }),
385
+ /**
386
+ * The components used for each slot inside.
387
+ * @default {}
388
+ */
389
+ slots: _propTypes.default.shape({
390
+ clickAwayListener: _propTypes.default.elementType,
391
+ content: _propTypes.default.elementType,
392
+ root: _propTypes.default.elementType,
393
+ transition: _propTypes.default.elementType
394
+ }),
319
395
  /**
320
396
  * The system prop that allows defining system overrides as well as additional CSS styles.
321
397
  */
@@ -323,6 +399,7 @@ process.env.NODE_ENV !== "production" ? Snackbar.propTypes /* remove-proptypes *
323
399
  /**
324
400
  * The component used for the transition.
325
401
  * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
402
+ * @deprecated Use `slots.transition` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
326
403
  * @default Grow
327
404
  */
328
405
  TransitionComponent: _propTypes.default.elementType,
@@ -342,6 +419,7 @@ process.env.NODE_ENV !== "production" ? Snackbar.propTypes /* remove-proptypes *
342
419
  /**
343
420
  * Props applied to the transition element.
344
421
  * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
422
+ * @deprecated Use `slotProps.transition` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
345
423
  * @default {}
346
424
  */
347
425
  TransitionProps: _propTypes.default.object
@@ -20,6 +20,8 @@ var _Fab = _interopRequireDefault(require("../Fab"));
20
20
  var _Tooltip = _interopRequireDefault(require("../Tooltip"));
21
21
  var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
22
22
  var _speedDialActionClasses = _interopRequireWildcard(require("./speedDialActionClasses"));
23
+ var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
24
+ var _utils = require("../utils");
23
25
  var _jsxRuntime = require("react/jsx-runtime");
24
26
  const useUtilityClasses = ownerState => {
25
27
  const {
@@ -154,6 +156,8 @@ const SpeedDialAction = /*#__PURE__*/React.forwardRef(function SpeedDialAction(i
154
156
  tooltipOpen: tooltipOpenProp = false,
155
157
  tooltipPlacement = 'left',
156
158
  tooltipTitle,
159
+ slots = {},
160
+ slotProps = {},
157
161
  ...other
158
162
  } = props;
159
163
  const ownerState = {
@@ -161,7 +165,20 @@ const SpeedDialAction = /*#__PURE__*/React.forwardRef(function SpeedDialAction(i
161
165
  tooltipPlacement
162
166
  };
163
167
  const classes = useUtilityClasses(ownerState);
164
- const [tooltipOpen, setTooltipOpen] = React.useState(tooltipOpenProp);
168
+ const externalForwardedProps = {
169
+ slots,
170
+ slotProps: {
171
+ fab: FabProps,
172
+ ...slotProps,
173
+ tooltip: (0, _utils.mergeSlotProps)(typeof slotProps.tooltip === 'function' ? slotProps.tooltip(ownerState) : slotProps.tooltip, {
174
+ title: tooltipTitle,
175
+ open: tooltipOpenProp,
176
+ placement: tooltipPlacement,
177
+ classes: TooltipClasses
178
+ })
179
+ }
180
+ };
181
+ const [tooltipOpen, setTooltipOpen] = React.useState(externalForwardedProps.slotProps.tooltip?.open);
165
182
  const handleTooltipClose = () => {
166
183
  setTooltipOpen(false);
167
184
  };
@@ -171,32 +188,71 @@ const SpeedDialAction = /*#__PURE__*/React.forwardRef(function SpeedDialAction(i
171
188
  const transitionStyle = {
172
189
  transitionDelay: `${delay}ms`
173
190
  };
174
- const fab = /*#__PURE__*/(0, _jsxRuntime.jsx)(SpeedDialActionFab, {
175
- size: "small",
191
+ const [FabSlot, fabSlotProps] = (0, _useSlot.default)('fab', {
192
+ elementType: SpeedDialActionFab,
193
+ externalForwardedProps,
194
+ ownerState,
195
+ shouldForwardComponentProp: true,
176
196
  className: (0, _clsx.default)(classes.fab, className),
177
- tabIndex: -1,
178
- role: "menuitem",
179
- ownerState: ownerState,
180
- ...FabProps,
181
- style: {
182
- ...transitionStyle,
183
- ...FabProps.style
197
+ additionalProps: {
198
+ style: transitionStyle,
199
+ tabIndex: -1,
200
+ role: 'menuitem',
201
+ size: 'small'
202
+ }
203
+ });
204
+ const [TooltipSlot, tooltipSlotProps] = (0, _useSlot.default)('tooltip', {
205
+ elementType: _Tooltip.default,
206
+ externalForwardedProps,
207
+ shouldForwardComponentProp: true,
208
+ ref,
209
+ additionalProps: {
210
+ id
184
211
  },
212
+ ownerState,
213
+ getSlotProps: handlers => ({
214
+ ...handlers,
215
+ onClose: event => {
216
+ handlers.onClose?.(event);
217
+ handleTooltipClose();
218
+ },
219
+ onOpen: event => {
220
+ handlers.onOpen?.(event);
221
+ handleTooltipOpen();
222
+ }
223
+ })
224
+ });
225
+ const [StaticTooltipSlot, staticTooltipSlotProps] = (0, _useSlot.default)('staticTooltip', {
226
+ elementType: SpeedDialActionStaticTooltip,
227
+ externalForwardedProps,
228
+ ownerState,
229
+ ref,
230
+ className: classes.staticTooltip,
231
+ additionalProps: {
232
+ id
233
+ }
234
+ });
235
+ const [StaticTooltipLabelSlot, staticTooltipLabelSlotProps] = (0, _useSlot.default)('staticTooltipLabel', {
236
+ elementType: SpeedDialActionStaticTooltipLabel,
237
+ externalForwardedProps,
238
+ ownerState,
239
+ className: classes.staticTooltipLabel,
240
+ additionalProps: {
241
+ style: transitionStyle,
242
+ id: `${id}-label`
243
+ }
244
+ });
245
+ const fab = /*#__PURE__*/(0, _jsxRuntime.jsx)(FabSlot, {
246
+ ...fabSlotProps,
185
247
  children: icon
186
248
  });
187
- if (tooltipOpenProp) {
188
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(SpeedDialActionStaticTooltip, {
189
- id: id,
190
- ref: ref,
191
- className: classes.staticTooltip,
192
- ownerState: ownerState,
249
+ if (tooltipSlotProps.open) {
250
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(StaticTooltipSlot, {
251
+ ...staticTooltipSlotProps,
193
252
  ...other,
194
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SpeedDialActionStaticTooltipLabel, {
195
- style: transitionStyle,
196
- id: `${id}-label`,
197
- className: classes.staticTooltipLabel,
198
- ownerState: ownerState,
199
- children: tooltipTitle
253
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StaticTooltipLabelSlot, {
254
+ ...staticTooltipLabelSlotProps,
255
+ children: tooltipSlotProps.title
200
256
  }), /*#__PURE__*/React.cloneElement(fab, {
201
257
  'aria-labelledby': `${id}-label`
202
258
  })]
@@ -205,15 +261,12 @@ const SpeedDialAction = /*#__PURE__*/React.forwardRef(function SpeedDialAction(i
205
261
  if (!open && tooltipOpen) {
206
262
  setTooltipOpen(false);
207
263
  }
208
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
209
- id: id,
210
- ref: ref,
211
- title: tooltipTitle,
212
- placement: tooltipPlacement,
213
- onClose: handleTooltipClose,
214
- onOpen: handleTooltipOpen,
264
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(TooltipSlot, {
265
+ ...tooltipSlotProps,
266
+ title: tooltipSlotProps.title,
215
267
  open: open && tooltipOpen,
216
- classes: TooltipClasses,
268
+ placement: tooltipSlotProps.placement,
269
+ classes: tooltipSlotProps.classes,
217
270
  ...other,
218
271
  children: fab
219
272
  });
@@ -239,6 +292,7 @@ process.env.NODE_ENV !== "production" ? SpeedDialAction.propTypes /* remove-prop
239
292
  /**
240
293
  * Props applied to the [`Fab`](https://mui.com/material-ui/api/fab/) component.
241
294
  * @default {}
295
+ * @deprecated Use `slotProps.fab` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
242
296
  */
243
297
  FabProps: _propTypes.default.object,
244
298
  /**
@@ -254,26 +308,50 @@ process.env.NODE_ENV !== "production" ? SpeedDialAction.propTypes /* remove-prop
254
308
  * If `true`, the component is shown.
255
309
  */
256
310
  open: _propTypes.default.bool,
311
+ /**
312
+ * The props used for each slot inside.
313
+ * @default {}
314
+ */
315
+ slotProps: _propTypes.default.shape({
316
+ fab: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
317
+ staticTooltip: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
318
+ staticTooltipLabel: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
319
+ tooltip: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
320
+ }),
321
+ /**
322
+ * The components used for each slot inside.
323
+ * @default {}
324
+ */
325
+ slots: _propTypes.default.shape({
326
+ fab: _propTypes.default.elementType,
327
+ staticTooltip: _propTypes.default.elementType,
328
+ staticTooltipLabel: _propTypes.default.elementType,
329
+ tooltip: _propTypes.default.elementType
330
+ }),
257
331
  /**
258
332
  * The system prop that allows defining system overrides as well as additional CSS styles.
259
333
  */
260
334
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
261
335
  /**
262
336
  * `classes` prop applied to the [`Tooltip`](https://mui.com/material-ui/api/tooltip/) element.
337
+ * @deprecated Use `slotProps.tooltip.classes` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
263
338
  */
264
339
  TooltipClasses: _propTypes.default.object,
265
340
  /**
266
341
  * Make the tooltip always visible when the SpeedDial is open.
267
342
  * @default false
343
+ * @deprecated Use `slotProps.tooltip.open` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
268
344
  */
269
345
  tooltipOpen: _propTypes.default.bool,
270
346
  /**
271
347
  * Placement of the tooltip.
272
348
  * @default 'left'
349
+ * @deprecated Use `slotProps.tooltip.placement` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
273
350
  */
274
351
  tooltipPlacement: _propTypes.default.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),
275
352
  /**
276
353
  * Label to display in the tooltip.
354
+ * @deprecated Use `slotProps.tooltip.title` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
277
355
  */
278
356
  tooltipTitle: _propTypes.default.node
279
357
  } : void 0;
@@ -22,6 +22,8 @@ var _useEnhancedEffect = _interopRequireDefault(require("../utils/useEnhancedEff
22
22
  var _zeroStyled = require("../zero-styled");
23
23
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
24
24
  var _utils = require("../transitions/utils");
25
+ var _utils2 = require("../utils");
26
+ var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
25
27
  var _SwipeArea = _interopRequireDefault(require("./SwipeArea"));
26
28
  var _jsxRuntime = require("react/jsx-runtime");
27
29
  // This value is closed to what browsers are using internally to
@@ -152,6 +154,8 @@ const SwipeableDrawer = /*#__PURE__*/React.forwardRef(function SwipeableDrawer(i
152
154
  transitionDuration = transitionDurationDefault,
153
155
  variant = 'temporary',
154
156
  // Mobile first.
157
+ slots = {},
158
+ slotProps = {},
155
159
  ...other
156
160
  } = props;
157
161
  const [maybeSwiping, setMaybeSwiping] = React.useState(false);
@@ -457,6 +461,22 @@ const SwipeableDrawer = /*#__PURE__*/React.forwardRef(function SwipeableDrawer(i
457
461
  setMaybeSwiping(false);
458
462
  }
459
463
  }, [open]);
464
+ const [SwipeAreaSlot, swipeAreaSlotProps] = (0, _useSlot.default)('swipeArea', {
465
+ ref: swipeAreaRef,
466
+ elementType: _SwipeArea.default,
467
+ ownerState: props,
468
+ externalForwardedProps: {
469
+ slots,
470
+ slotProps: {
471
+ swipeArea: SwipeAreaProps,
472
+ ...slotProps
473
+ }
474
+ },
475
+ additionalProps: {
476
+ width: swipeAreaWidth,
477
+ anchor
478
+ }
479
+ });
460
480
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
461
481
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Drawer.default, {
462
482
  open: variant === 'temporary' && maybeSwiping ? true : open,
@@ -474,25 +494,27 @@ const SwipeableDrawer = /*#__PURE__*/React.forwardRef(function SwipeableDrawer(i
474
494
  ...ModalPropsProp
475
495
  },
476
496
  hideBackdrop: hideBackdrop,
477
- PaperProps: {
478
- ...PaperProps,
479
- style: {
480
- pointerEvents: variant === 'temporary' && !open && !allowSwipeInChildren ? 'none' : '',
481
- ...PaperProps.style
482
- },
483
- ref: handleRef
484
- },
485
497
  anchor: anchor,
486
498
  transitionDuration: calculatedDurationRef.current || transitionDuration,
487
499
  onClose: onClose,
488
500
  ref: ref,
501
+ slots: slots,
502
+ slotProps: {
503
+ ...slotProps,
504
+ backdrop: (0, _utils2.mergeSlotProps)(slotProps.backdrop ?? BackdropProps, {
505
+ ref: backdropRef
506
+ }),
507
+ paper: (0, _utils2.mergeSlotProps)(slotProps.paper ?? PaperProps, {
508
+ style: {
509
+ pointerEvents: variant === 'temporary' && !open && !allowSwipeInChildren ? 'none' : ''
510
+ },
511
+ ref: handleRef
512
+ })
513
+ },
489
514
  ...other
490
515
  }), !disableSwipeToOpen && variant === 'temporary' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_NoSsr.default, {
491
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SwipeArea.default, {
492
- anchor: anchor,
493
- ref: swipeAreaRef,
494
- width: swipeAreaWidth,
495
- ...SwipeAreaProps
516
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(SwipeAreaSlot, {
517
+ ...swipeAreaSlotProps
496
518
  })
497
519
  })]
498
520
  });
@@ -590,8 +612,33 @@ process.env.NODE_ENV !== "production" ? SwipeableDrawer.propTypes /* remove-prop
590
612
  component: _elementTypeAcceptingRef.default,
591
613
  style: _propTypes.default.object
592
614
  }),
615
+ /**
616
+ * The props used for each slot inside.
617
+ * @default {}
618
+ */
619
+ slotProps: _propTypes.default.shape({
620
+ backdrop: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
621
+ docked: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
622
+ paper: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
623
+ root: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
624
+ swipeArea: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
625
+ transition: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
626
+ }),
627
+ /**
628
+ * The components used for each slot inside.
629
+ * @default {}
630
+ */
631
+ slots: _propTypes.default.shape({
632
+ backdrop: _propTypes.default.elementType,
633
+ docked: _propTypes.default.elementType,
634
+ paper: _propTypes.default.elementType,
635
+ root: _propTypes.default.elementType,
636
+ swipeArea: _propTypes.default.elementType,
637
+ transition: _propTypes.default.elementType
638
+ }),
593
639
  /**
594
640
  * The element is used to intercept the touch events on the edge.
641
+ * @deprecated use the `slotProps.swipeArea` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
595
642
  */
596
643
  SwipeAreaProps: _propTypes.default.object,
597
644
  /**
@@ -312,10 +312,12 @@ process.env.NODE_ENV !== "production" ? Switch.propTypes /* remove-proptypes */
312
312
  id: _propTypes.default.string,
313
313
  /**
314
314
  * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
315
+ * @deprecated Use `slotProps.input` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
315
316
  */
316
317
  inputProps: _propTypes.default.object,
317
318
  /**
318
319
  * Pass a ref to the `input` element.
320
+ * @deprecated Use `slotProps.input.ref` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
319
321
  */
320
322
  inputRef: _refType.default,
321
323
  /**