@mui/material 6.3.1 → 6.4.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 (117) hide show
  1. package/Alert/Alert.d.ts +69 -0
  2. package/Alert/Alert.js +53 -21
  3. package/Autocomplete/Autocomplete.d.ts +1 -1
  4. package/Button/Button.d.ts +18 -0
  5. package/Button/Button.js +233 -15
  6. package/Button/buttonClasses.d.ts +14 -0
  7. package/Button/buttonClasses.js +1 -1
  8. package/ButtonBase/ButtonBase.d.ts +2 -0
  9. package/ButtonGroup/ButtonGroupButtonContext.js +2 -0
  10. package/ButtonGroup/ButtonGroupContext.js +2 -0
  11. package/CHANGELOG.md +91 -0
  12. package/CardHeader/CardHeader.d.ts +114 -1
  13. package/CardHeader/CardHeader.js +99 -32
  14. package/CircularProgress/CircularProgress.js +2 -2
  15. package/Dialog/Dialog.d.ts +85 -1
  16. package/Dialog/Dialog.js +91 -20
  17. package/Dialog/DialogContext.js +2 -0
  18. package/Drawer/Drawer.js +1 -1
  19. package/Drawer/drawerClasses.d.ts +32 -8
  20. package/Drawer/drawerClasses.js +1 -1
  21. package/FormControl/FormControl.js +9 -7
  22. package/FormControl/FormControlContext.js +2 -0
  23. package/Hidden/withWidth.js +2 -0
  24. package/IconButton/IconButton.d.ts +13 -0
  25. package/IconButton/IconButton.js +80 -7
  26. package/IconButton/iconButtonClasses.d.ts +6 -0
  27. package/IconButton/iconButtonClasses.js +1 -1
  28. package/LinearProgress/LinearProgress.js +4 -4
  29. package/LinearProgress/linearProgressClasses.d.ts +31 -9
  30. package/LinearProgress/linearProgressClasses.js +1 -1
  31. package/Link/getTextDecoration.js +3 -2
  32. package/RadioGroup/RadioGroupContext.js +2 -0
  33. package/Select/Select.js +10 -1
  34. package/Select/SelectInput.js +1 -1
  35. package/Slider/useSlider.js +5 -2
  36. package/Step/StepContext.js +2 -0
  37. package/StepLabel/StepLabel.d.ts +1 -1
  38. package/Stepper/StepperContext.js +2 -0
  39. package/Table/Tablelvl2Context.js +2 -0
  40. package/ToggleButtonGroup/ToggleButtonGroupButtonContext.js +2 -0
  41. package/ToggleButtonGroup/ToggleButtonGroupContext.js +2 -0
  42. package/Tooltip/Tooltip.d.ts +1 -1
  43. package/index.js +1 -1
  44. package/modern/Alert/Alert.js +53 -21
  45. package/modern/Button/Button.js +233 -15
  46. package/modern/Button/buttonClasses.js +1 -1
  47. package/modern/ButtonGroup/ButtonGroupButtonContext.js +2 -0
  48. package/modern/ButtonGroup/ButtonGroupContext.js +2 -0
  49. package/modern/CardHeader/CardHeader.js +99 -32
  50. package/modern/CircularProgress/CircularProgress.js +2 -2
  51. package/modern/Dialog/Dialog.js +91 -20
  52. package/modern/Dialog/DialogContext.js +2 -0
  53. package/modern/Drawer/Drawer.js +1 -1
  54. package/modern/Drawer/drawerClasses.js +1 -1
  55. package/modern/FormControl/FormControl.js +9 -7
  56. package/modern/FormControl/FormControlContext.js +2 -0
  57. package/modern/Hidden/withWidth.js +2 -0
  58. package/modern/IconButton/IconButton.js +80 -7
  59. package/modern/IconButton/iconButtonClasses.js +1 -1
  60. package/modern/LinearProgress/LinearProgress.js +4 -4
  61. package/modern/LinearProgress/linearProgressClasses.js +1 -1
  62. package/modern/Link/getTextDecoration.js +3 -2
  63. package/modern/RadioGroup/RadioGroupContext.js +2 -0
  64. package/modern/Select/Select.js +10 -1
  65. package/modern/Select/SelectInput.js +1 -1
  66. package/modern/Slider/useSlider.js +5 -2
  67. package/modern/Step/StepContext.js +2 -0
  68. package/modern/Stepper/StepperContext.js +2 -0
  69. package/modern/Table/Tablelvl2Context.js +2 -0
  70. package/modern/ToggleButtonGroup/ToggleButtonGroupButtonContext.js +2 -0
  71. package/modern/ToggleButtonGroup/ToggleButtonGroupContext.js +2 -0
  72. package/modern/index.js +1 -1
  73. package/modern/utils/index.js +1 -0
  74. package/modern/utils/mergeSlotProps.js +43 -0
  75. package/modern/utils/useSlot.js +5 -1
  76. package/modern/version/index.js +2 -2
  77. package/node/Alert/Alert.js +53 -21
  78. package/node/Button/Button.js +233 -15
  79. package/node/Button/buttonClasses.js +1 -1
  80. package/node/ButtonGroup/ButtonGroupButtonContext.js +1 -0
  81. package/node/ButtonGroup/ButtonGroupContext.js +1 -0
  82. package/node/CardHeader/CardHeader.js +99 -32
  83. package/node/CircularProgress/CircularProgress.js +2 -2
  84. package/node/Dialog/Dialog.js +91 -20
  85. package/node/Dialog/DialogContext.js +1 -0
  86. package/node/Drawer/Drawer.js +1 -1
  87. package/node/Drawer/drawerClasses.js +1 -1
  88. package/node/FormControl/FormControl.js +9 -7
  89. package/node/FormControl/FormControlContext.js +1 -0
  90. package/node/Hidden/withWidth.js +1 -0
  91. package/node/IconButton/IconButton.js +79 -6
  92. package/node/IconButton/iconButtonClasses.js +1 -1
  93. package/node/LinearProgress/LinearProgress.js +4 -4
  94. package/node/LinearProgress/linearProgressClasses.js +1 -1
  95. package/node/Link/getTextDecoration.js +3 -2
  96. package/node/RadioGroup/RadioGroupContext.js +1 -0
  97. package/node/Select/Select.js +10 -1
  98. package/node/Select/SelectInput.js +1 -1
  99. package/node/Slider/useSlider.js +5 -2
  100. package/node/Step/StepContext.js +1 -0
  101. package/node/Stepper/StepperContext.js +1 -0
  102. package/node/Table/Tablelvl2Context.js +1 -0
  103. package/node/ToggleButtonGroup/ToggleButtonGroupButtonContext.js +1 -0
  104. package/node/ToggleButtonGroup/ToggleButtonGroupContext.js +1 -0
  105. package/node/index.js +1 -1
  106. package/node/utils/index.js +7 -0
  107. package/node/utils/mergeSlotProps.js +50 -0
  108. package/node/utils/useSlot.js +5 -1
  109. package/node/version/index.js +2 -2
  110. package/package.json +5 -5
  111. package/utils/index.d.ts +1 -0
  112. package/utils/index.js +1 -0
  113. package/utils/mergeSlotProps.d.ts +2 -0
  114. package/utils/mergeSlotProps.js +43 -0
  115. package/utils/useSlot.d.ts +8 -0
  116. package/utils/useSlot.js +5 -1
  117. package/version/index.js +2 -2
@@ -22,6 +22,7 @@ var _Backdrop = _interopRequireDefault(require("../Backdrop"));
22
22
  var _zeroStyled = require("../zero-styled");
23
23
  var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
24
24
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
25
+ var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
25
26
  var _jsxRuntime = require("react/jsx-runtime");
26
27
  const DialogBackdrop = (0, _zeroStyled.styled)(_Backdrop.default, {
27
28
  name: 'MuiDialog',
@@ -225,6 +226,8 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
225
226
  PaperComponent = _Paper.default,
226
227
  PaperProps = {},
227
228
  scroll = 'paper',
229
+ slots = {},
230
+ slotProps = {},
228
231
  TransitionComponent = _Fade.default,
229
232
  transitionDuration = defaultTransitionDuration,
230
233
  TransitionProps,
@@ -268,46 +271,89 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
268
271
  titleId: ariaLabelledby
269
272
  };
270
273
  }, [ariaLabelledby]);
271
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(DialogRoot, {
274
+ const backwardCompatibleSlots = {
275
+ transition: TransitionComponent,
276
+ ...slots
277
+ };
278
+ const backwardCompatibleSlotProps = {
279
+ transition: TransitionProps,
280
+ paper: PaperProps,
281
+ backdrop: BackdropProps,
282
+ ...slotProps
283
+ };
284
+ const externalForwardedProps = {
285
+ slots: backwardCompatibleSlots,
286
+ slotProps: backwardCompatibleSlotProps
287
+ };
288
+ const [RootSlot, rootSlotProps] = (0, _useSlot.default)('root', {
289
+ elementType: DialogRoot,
290
+ shouldForwardComponentProp: true,
291
+ externalForwardedProps,
292
+ ownerState,
272
293
  className: (0, _clsx.default)(classes.root, className),
294
+ ref
295
+ });
296
+ const [BackdropSlot, backdropSlotProps] = (0, _useSlot.default)('backdrop', {
297
+ elementType: DialogBackdrop,
298
+ shouldForwardComponentProp: true,
299
+ externalForwardedProps,
300
+ ownerState
301
+ });
302
+ const [PaperSlot, paperSlotProps] = (0, _useSlot.default)('paper', {
303
+ elementType: DialogPaper,
304
+ shouldForwardComponentProp: true,
305
+ externalForwardedProps,
306
+ ownerState,
307
+ className: (0, _clsx.default)(classes.paper, PaperProps.className)
308
+ });
309
+ const [ContainerSlot, containerSlotProps] = (0, _useSlot.default)('container', {
310
+ elementType: DialogContainer,
311
+ externalForwardedProps,
312
+ ownerState,
313
+ className: (0, _clsx.default)(classes.container)
314
+ });
315
+ const [TransitionSlot, transitionSlotProps] = (0, _useSlot.default)('transition', {
316
+ elementType: _Fade.default,
317
+ externalForwardedProps,
318
+ ownerState,
319
+ additionalProps: {
320
+ appear: true,
321
+ in: open,
322
+ timeout: transitionDuration,
323
+ role: 'presentation'
324
+ }
325
+ });
326
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(RootSlot, {
273
327
  closeAfterTransition: true,
274
- components: {
275
- Backdrop: DialogBackdrop
328
+ slots: {
329
+ backdrop: BackdropSlot
276
330
  },
277
- componentsProps: {
331
+ slotProps: {
278
332
  backdrop: {
279
333
  transitionDuration,
280
334
  as: BackdropComponent,
281
- ...BackdropProps
335
+ ...backdropSlotProps
282
336
  }
283
337
  },
284
338
  disableEscapeKeyDown: disableEscapeKeyDown,
285
339
  onClose: onClose,
286
340
  open: open,
287
- ref: ref,
288
341
  onClick: handleBackdropClick,
289
- ownerState: ownerState,
342
+ ...rootSlotProps,
290
343
  ...other,
291
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TransitionComponent, {
292
- appear: true,
293
- in: open,
294
- timeout: transitionDuration,
295
- role: "presentation",
296
- ...TransitionProps,
297
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DialogContainer, {
298
- className: (0, _clsx.default)(classes.container),
344
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TransitionSlot, {
345
+ ...transitionSlotProps,
346
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContainerSlot, {
299
347
  onMouseDown: handleMouseDown,
300
- ownerState: ownerState,
301
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DialogPaper, {
348
+ ...containerSlotProps,
349
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PaperSlot, {
302
350
  as: PaperComponent,
303
351
  elevation: 24,
304
352
  role: "dialog",
305
353
  "aria-describedby": ariaDescribedby,
306
354
  "aria-labelledby": ariaLabelledby,
307
355
  "aria-modal": ariaModal,
308
- ...PaperProps,
309
- className: (0, _clsx.default)(classes.paper, PaperProps.className),
310
- ownerState: ownerState,
356
+ ...paperSlotProps,
311
357
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContext.default.Provider, {
312
358
  value: dialogContextValue,
313
359
  children: children
@@ -419,6 +465,7 @@ process.env.NODE_ENV !== "production" ? Dialog.propTypes /* remove-proptypes */
419
465
  /**
420
466
  * Props applied to the [`Paper`](https://mui.com/material-ui/api/paper/) element.
421
467
  * @default {}
468
+ * @deprecated Use `slotProps.paper` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
422
469
  */
423
470
  PaperProps: _propTypes.default.object,
424
471
  /**
@@ -426,6 +473,28 @@ process.env.NODE_ENV !== "production" ? Dialog.propTypes /* remove-proptypes */
426
473
  * @default 'paper'
427
474
  */
428
475
  scroll: _propTypes.default.oneOf(['body', 'paper']),
476
+ /**
477
+ * The props used for each slot inside.
478
+ * @default {}
479
+ */
480
+ slotProps: _propTypes.default.shape({
481
+ backdrop: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
482
+ container: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
483
+ paper: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
484
+ root: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
485
+ transition: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
486
+ }),
487
+ /**
488
+ * The components used for each slot inside.
489
+ * @default {}
490
+ */
491
+ slots: _propTypes.default.shape({
492
+ backdrop: _propTypes.default.elementType,
493
+ container: _propTypes.default.elementType,
494
+ paper: _propTypes.default.elementType,
495
+ root: _propTypes.default.elementType,
496
+ transition: _propTypes.default.elementType
497
+ }),
429
498
  /**
430
499
  * The system prop that allows defining system overrides as well as additional CSS styles.
431
500
  */
@@ -434,6 +503,7 @@ process.env.NODE_ENV !== "production" ? Dialog.propTypes /* remove-proptypes */
434
503
  * The component used for the transition.
435
504
  * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
436
505
  * @default Fade
506
+ * @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.
437
507
  */
438
508
  TransitionComponent: _propTypes.default.elementType,
439
509
  /**
@@ -452,6 +522,7 @@ process.env.NODE_ENV !== "production" ? Dialog.propTypes /* remove-proptypes */
452
522
  /**
453
523
  * Props applied to the transition element.
454
524
  * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
525
+ * @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.
455
526
  */
456
527
  TransitionProps: _propTypes.default.object
457
528
  } : void 0;
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -38,7 +38,7 @@ const useUtilityClasses = ownerState => {
38
38
  variant
39
39
  } = ownerState;
40
40
  const slots = {
41
- root: ['root'],
41
+ root: ['root', `anchor${(0, _capitalize.default)(anchor)}`],
42
42
  docked: [(variant === 'permanent' || variant === 'persistent') && 'docked'],
43
43
  modal: ['modal'],
44
44
  paper: ['paper', `paperAnchor${(0, _capitalize.default)(anchor)}`, variant !== 'temporary' && `paperAnchorDocked${(0, _capitalize.default)(anchor)}`]
@@ -11,5 +11,5 @@ var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateU
11
11
  function getDrawerUtilityClass(slot) {
12
12
  return (0, _generateUtilityClass.default)('MuiDrawer', slot);
13
13
  }
14
- const drawerClasses = (0, _generateUtilityClasses.default)('MuiDrawer', ['root', 'docked', 'paper', 'paperAnchorLeft', 'paperAnchorRight', 'paperAnchorTop', 'paperAnchorBottom', 'paperAnchorDockedLeft', 'paperAnchorDockedRight', 'paperAnchorDockedTop', 'paperAnchorDockedBottom', 'modal']);
14
+ const drawerClasses = (0, _generateUtilityClasses.default)('MuiDrawer', ['root', 'docked', 'paper', 'anchorLeft', 'anchorRight', 'anchorTop', 'anchorBottom', 'paperAnchorLeft', 'paperAnchorRight', 'paperAnchorTop', 'paperAnchorBottom', 'paperAnchorDockedLeft', 'paperAnchorDockedRight', 'paperAnchorDockedTop', 'paperAnchorDockedBottom', 'modal']);
15
15
  var _default = exports.default = drawerClasses;
@@ -186,6 +186,12 @@ const FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps,
186
186
  };
187
187
  };
188
188
  }
189
+ const onFilled = React.useCallback(() => {
190
+ setFilled(true);
191
+ }, []);
192
+ const onEmpty = React.useCallback(() => {
193
+ setFilled(false);
194
+ }, []);
189
195
  const childContext = React.useMemo(() => {
190
196
  return {
191
197
  adornedStart,
@@ -201,20 +207,16 @@ const FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps,
201
207
  onBlur: () => {
202
208
  setFocused(false);
203
209
  },
204
- onEmpty: () => {
205
- setFilled(false);
206
- },
207
- onFilled: () => {
208
- setFilled(true);
209
- },
210
210
  onFocus: () => {
211
211
  setFocused(true);
212
212
  },
213
+ onEmpty,
214
+ onFilled,
213
215
  registerEffect,
214
216
  required,
215
217
  variant
216
218
  };
217
- }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);
219
+ }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, onEmpty, onFilled, required, size, variant]);
218
220
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlContext.default.Provider, {
219
221
  value: childContext,
220
222
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(FormControlRoot, {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
@@ -12,12 +12,14 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _chainPropTypes = _interopRequireDefault(require("@mui/utils/chainPropTypes"));
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
+ var _utils = require("@mui/material/utils");
15
16
  var _colorManipulator = require("@mui/system/colorManipulator");
16
17
  var _zeroStyled = require("../zero-styled");
17
18
  var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
18
19
  var _createSimplePaletteValueFilter = _interopRequireDefault(require("../utils/createSimplePaletteValueFilter"));
19
20
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
20
21
  var _ButtonBase = _interopRequireDefault(require("../ButtonBase"));
22
+ var _CircularProgress = _interopRequireDefault(require("../CircularProgress"));
21
23
  var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
22
24
  var _iconButtonClasses = _interopRequireWildcard(require("./iconButtonClasses"));
23
25
  var _jsxRuntime = require("react/jsx-runtime");
@@ -27,10 +29,13 @@ const useUtilityClasses = ownerState => {
27
29
  disabled,
28
30
  color,
29
31
  edge,
30
- size
32
+ size,
33
+ loading
31
34
  } = ownerState;
32
35
  const slots = {
33
- root: ['root', disabled && 'disabled', color !== 'default' && `color${(0, _capitalize.default)(color)}`, edge && `edge${(0, _capitalize.default)(edge)}`, `size${(0, _capitalize.default)(size)}`]
36
+ root: ['root', loading && 'loading', disabled && 'disabled', color !== 'default' && `color${(0, _capitalize.default)(color)}`, edge && `edge${(0, _capitalize.default)(edge)}`, `size${(0, _capitalize.default)(size)}`],
37
+ loadingIndicator: ['loadingIndicator'],
38
+ loadingWrapper: ['loadingWrapper']
34
39
  };
35
40
  return (0, _composeClasses.default)(slots, _iconButtonClasses.getIconButtonUtilityClass, classes);
36
41
  };
@@ -41,7 +46,7 @@ const IconButtonRoot = (0, _zeroStyled.styled)(_ButtonBase.default, {
41
46
  const {
42
47
  ownerState
43
48
  } = props;
44
- return [styles.root, ownerState.color !== 'default' && styles[`color${(0, _capitalize.default)(ownerState.color)}`], ownerState.edge && styles[`edge${(0, _capitalize.default)(ownerState.edge)}`], styles[`size${(0, _capitalize.default)(ownerState.size)}`]];
49
+ return [styles.root, ownerState.loading && styles.loading, ownerState.color !== 'default' && styles[`color${(0, _capitalize.default)(ownerState.color)}`], ownerState.edge && styles[`edge${(0, _capitalize.default)(ownerState.edge)}`], styles[`size${(0, _capitalize.default)(ownerState.size)}`]];
45
50
  }
46
51
  })((0, _memoTheme.default)(({
47
52
  theme
@@ -144,8 +149,34 @@ const IconButtonRoot = (0, _zeroStyled.styled)(_ButtonBase.default, {
144
149
  [`&.${_iconButtonClasses.default.disabled}`]: {
145
150
  backgroundColor: 'transparent',
146
151
  color: (theme.vars || theme).palette.action.disabled
152
+ },
153
+ [`&.${_iconButtonClasses.default.loading}`]: {
154
+ color: 'transparent'
147
155
  }
148
156
  })));
157
+ const IconButtonLoadingIndicator = (0, _zeroStyled.styled)('span', {
158
+ name: 'MuiIconButton',
159
+ slot: 'LoadingIndicator',
160
+ overridesResolver: (props, styles) => styles.loadingIndicator
161
+ })(({
162
+ theme
163
+ }) => ({
164
+ display: 'none',
165
+ position: 'absolute',
166
+ visibility: 'visible',
167
+ top: '50%',
168
+ left: '50%',
169
+ transform: 'translate(-50%, -50%)',
170
+ color: (theme.vars || theme).palette.action.disabled,
171
+ variants: [{
172
+ props: {
173
+ loading: true
174
+ },
175
+ style: {
176
+ display: 'flex'
177
+ }
178
+ }]
179
+ }));
149
180
 
150
181
  /**
151
182
  * Refer to the [Icons](/material-ui/icons/) section of the documentation
@@ -164,26 +195,51 @@ const IconButton = /*#__PURE__*/React.forwardRef(function IconButton(inProps, re
164
195
  disabled = false,
165
196
  disableFocusRipple = false,
166
197
  size = 'medium',
198
+ id: idProp,
199
+ loading = null,
200
+ loadingIndicator: loadingIndicatorProp,
167
201
  ...other
168
202
  } = props;
203
+ const id = (0, _utils.unstable_useId)(idProp);
204
+ const loadingIndicator = loadingIndicatorProp ?? /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {
205
+ "aria-labelledby": id,
206
+ color: "inherit",
207
+ size: 16
208
+ });
169
209
  const ownerState = {
170
210
  ...props,
171
211
  edge,
172
212
  color,
173
213
  disabled,
174
214
  disableFocusRipple,
215
+ loading,
216
+ loadingIndicator,
175
217
  size
176
218
  };
177
219
  const classes = useUtilityClasses(ownerState);
178
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(IconButtonRoot, {
220
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(IconButtonRoot, {
221
+ id: id,
179
222
  className: (0, _clsx.default)(classes.root, className),
180
223
  centerRipple: true,
181
224
  focusRipple: !disableFocusRipple,
182
- disabled: disabled,
225
+ disabled: disabled || loading,
183
226
  ref: ref,
184
227
  ...other,
185
228
  ownerState: ownerState,
186
- children: children
229
+ children: [typeof loading === 'boolean' &&
230
+ /*#__PURE__*/
231
+ // use plain HTML span to minimize the runtime overhead
232
+ (0, _jsxRuntime.jsx)("span", {
233
+ className: classes.loadingWrapper,
234
+ style: {
235
+ display: 'contents'
236
+ },
237
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(IconButtonLoadingIndicator, {
238
+ className: classes.loadingIndicator,
239
+ ownerState: ownerState,
240
+ children: loading && loadingIndicator
241
+ })
242
+ }), children]
187
243
  });
188
244
  });
189
245
  process.env.NODE_ENV !== "production" ? IconButton.propTypes /* remove-proptypes */ = {
@@ -242,6 +298,23 @@ process.env.NODE_ENV !== "production" ? IconButton.propTypes /* remove-proptypes
242
298
  * @default false
243
299
  */
244
300
  edge: _propTypes.default.oneOf(['end', 'start', false]),
301
+ /**
302
+ * @ignore
303
+ */
304
+ id: _propTypes.default.string,
305
+ /**
306
+ * If `true`, the loading indicator is visible and the button is disabled.
307
+ * If `true | false`, the loading wrapper is always rendered before the children to prevent [Google Translation Crash](https://github.com/mui/material-ui/issues/27853).
308
+ * @default null
309
+ */
310
+ loading: _propTypes.default.bool,
311
+ /**
312
+ * Element placed before the children if the button is in loading state.
313
+ * The node should contain an element with `role="progressbar"` with an accessible name.
314
+ * By default, it renders a `CircularProgress` that is labeled by the button itself.
315
+ * @default <CircularProgress color="inherit" size={16} />
316
+ */
317
+ loadingIndicator: _propTypes.default.node,
245
318
  /**
246
319
  * The size of the component.
247
320
  * `small` is equivalent to the dense button styling.
@@ -11,5 +11,5 @@ var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateU
11
11
  function getIconButtonUtilityClass(slot) {
12
12
  return (0, _generateUtilityClass.default)('MuiIconButton', slot);
13
13
  }
14
- const iconButtonClasses = (0, _generateUtilityClasses.default)('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);
14
+ const iconButtonClasses = (0, _generateUtilityClasses.default)('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'loading', 'loadingIndicator', 'loadingWrapper']);
15
15
  var _default = exports.default = iconButtonClasses;
@@ -91,8 +91,8 @@ const useUtilityClasses = ownerState => {
91
91
  const slots = {
92
92
  root: ['root', `color${(0, _capitalize.default)(color)}`, variant],
93
93
  dashed: ['dashed', `dashedColor${(0, _capitalize.default)(color)}`],
94
- bar1: ['bar', `barColor${(0, _capitalize.default)(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],
95
- bar2: ['bar', variant !== 'buffer' && `barColor${(0, _capitalize.default)(color)}`, variant === 'buffer' && `color${(0, _capitalize.default)(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']
94
+ bar1: ['bar', 'bar1', `barColor${(0, _capitalize.default)(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],
95
+ bar2: ['bar', 'bar2', variant !== 'buffer' && `barColor${(0, _capitalize.default)(color)}`, variant === 'buffer' && `color${(0, _capitalize.default)(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']
96
96
  };
97
97
  return (0, _composeClasses.default)(slots, _linearProgressClasses.getLinearProgressUtilityClass, classes);
98
98
  };
@@ -210,7 +210,7 @@ const LinearProgressBar1 = (0, _zeroStyled.styled)('span', {
210
210
  const {
211
211
  ownerState
212
212
  } = props;
213
- return [styles.bar, styles[`barColor${(0, _capitalize.default)(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];
213
+ return [styles.bar, styles.bar1, styles[`barColor${(0, _capitalize.default)(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];
214
214
  }
215
215
  })((0, _memoTheme.default)(({
216
216
  theme
@@ -274,7 +274,7 @@ const LinearProgressBar2 = (0, _zeroStyled.styled)('span', {
274
274
  const {
275
275
  ownerState
276
276
  } = props;
277
- return [styles.bar, styles[`barColor${(0, _capitalize.default)(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];
277
+ return [styles.bar, styles.bar2, styles[`barColor${(0, _capitalize.default)(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];
278
278
  }
279
279
  })((0, _memoTheme.default)(({
280
280
  theme
@@ -11,5 +11,5 @@ var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateU
11
11
  function getLinearProgressUtilityClass(slot) {
12
12
  return (0, _generateUtilityClass.default)('MuiLinearProgress', slot);
13
13
  }
14
- const linearProgressClasses = (0, _generateUtilityClasses.default)('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);
14
+ const linearProgressClasses = (0, _generateUtilityClasses.default)('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'bar1', 'bar2', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);
15
15
  var _default = exports.default = linearProgressClasses;
@@ -11,8 +11,9 @@ const getTextDecoration = ({
11
11
  ownerState
12
12
  }) => {
13
13
  const transformedColor = ownerState.color;
14
- const color = (0, _style.getPath)(theme, `palette.${transformedColor}`, false) || ownerState.color;
15
- const channelColor = (0, _style.getPath)(theme, `palette.${transformedColor}Channel`);
14
+ // check the `main` color first for a custom palette, then fallback to the color itself
15
+ const color = (0, _style.getPath)(theme, `palette.${transformedColor}.main`, false) || (0, _style.getPath)(theme, `palette.${transformedColor}`, false) || ownerState.color;
16
+ const channelColor = (0, _style.getPath)(theme, `palette.${transformedColor}.mainChannel`) || (0, _style.getPath)(theme, `palette.${transformedColor}Channel`);
16
17
  if ('vars' in theme && channelColor) {
17
18
  return `rgba(${channelColor} / 0.4)`;
18
19
  }
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -11,6 +11,7 @@ var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _deepmerge = _interopRequireDefault(require("@mui/utils/deepmerge"));
14
+ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
15
  var _getReactElementRef = _interopRequireDefault(require("@mui/utils/getReactElementRef"));
15
16
  var _SelectInput = _interopRequireDefault(require("./SelectInput"));
16
17
  var _formControlState = _interopRequireDefault(require("../FormControl/formControlState"));
@@ -24,12 +25,20 @@ var _DefaultPropsProvider = require("../DefaultPropsProvider");
24
25
  var _useForkRef = _interopRequireDefault(require("../utils/useForkRef"));
25
26
  var _zeroStyled = require("../zero-styled");
26
27
  var _rootShouldForwardProp = _interopRequireDefault(require("../styles/rootShouldForwardProp"));
28
+ var _selectClasses = require("./selectClasses");
27
29
  var _jsxRuntime = require("react/jsx-runtime");
28
30
  const useUtilityClasses = ownerState => {
29
31
  const {
30
32
  classes
31
33
  } = ownerState;
32
- return classes;
34
+ const slots = {
35
+ root: ['root']
36
+ };
37
+ const composedClasses = (0, _composeClasses.default)(slots, _selectClasses.getSelectUtilityClasses, classes);
38
+ return {
39
+ ...classes,
40
+ ...composedClasses
41
+ };
33
42
  };
34
43
  const styledRootConfig = {
35
44
  name: 'MuiSelect',
@@ -450,7 +450,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
450
450
  ref: handleDisplayRef,
451
451
  tabIndex: tabIndex,
452
452
  role: "combobox",
453
- "aria-controls": listboxId,
453
+ "aria-controls": open ? listboxId : undefined,
454
454
  "aria-disabled": disabled ? 'true' : undefined,
455
455
  "aria-expanded": open ? 'true' : 'false',
456
456
  "aria-haspopup": "listbox",
@@ -198,6 +198,8 @@ function useSlider(parameters) {
198
198
  const [open, setOpen] = React.useState(-1);
199
199
  const [dragging, setDragging] = React.useState(false);
200
200
  const moveCount = React.useRef(0);
201
+ // lastChangedValue is updated whenever onChange is triggered.
202
+ const lastChangedValue = React.useRef(null);
201
203
  const [valueDerived, setValueState] = (0, _utils.unstable_useControlled)({
202
204
  controlled: valueProp,
203
205
  default: defaultValue ?? min,
@@ -218,6 +220,7 @@ function useSlider(parameters) {
218
220
  name
219
221
  }
220
222
  });
223
+ lastChangedValue.current = value;
221
224
  onChange(clonedEvent, value, thumbIndex);
222
225
  });
223
226
  const range = Array.isArray(valueDerived);
@@ -289,7 +292,7 @@ function useSlider(parameters) {
289
292
  handleChange(event, newValue, index);
290
293
  }
291
294
  if (onChangeCommitted) {
292
- onChangeCommitted(event, newValue);
295
+ onChangeCommitted(event, lastChangedValue.current ?? newValue);
293
296
  }
294
297
  };
295
298
  const createHandleHiddenInputKeyDown = otherHandlers => event => {
@@ -494,7 +497,7 @@ function useSlider(parameters) {
494
497
  setOpen(-1);
495
498
  }
496
499
  if (onChangeCommitted) {
497
- onChangeCommitted(nativeEvent, newValue);
500
+ onChangeCommitted(nativeEvent, lastChangedValue.current ?? newValue);
498
501
  }
499
502
  touchId.current = undefined;
500
503
 
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/material v6.3.1
2
+ * @mui/material v6.4.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -41,6 +41,12 @@ Object.defineProperty(exports, "isMuiElement", {
41
41
  return _isMuiElement.default;
42
42
  }
43
43
  });
44
+ Object.defineProperty(exports, "mergeSlotProps", {
45
+ enumerable: true,
46
+ get: function () {
47
+ return _mergeSlotProps.default;
48
+ }
49
+ });
44
50
  Object.defineProperty(exports, "ownerDocument", {
45
51
  enumerable: true,
46
52
  get: function () {
@@ -126,6 +132,7 @@ var _unsupportedProp = _interopRequireDefault(require("./unsupportedProp"));
126
132
  var _useControlled = _interopRequireDefault(require("./useControlled"));
127
133
  var _useEventCallback = _interopRequireDefault(require("./useEventCallback"));
128
134
  var _useForkRef = _interopRequireDefault(require("./useForkRef"));
135
+ var _mergeSlotProps = _interopRequireDefault(require("./mergeSlotProps"));
129
136
  // TODO: remove this export once ClassNameGenerator is stable
130
137
  // eslint-disable-next-line @typescript-eslint/naming-convention
131
138
  const unstable_ClassNameGenerator = exports.unstable_ClassNameGenerator = {