@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
@@ -5,8 +5,9 @@ const getTextDecoration = ({
5
5
  ownerState
6
6
  }) => {
7
7
  const transformedColor = ownerState.color;
8
- const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;
9
- const channelColor = getPath(theme, `palette.${transformedColor}Channel`);
8
+ // check the `main` color first for a custom palette, then fallback to the color itself
9
+ const color = getPath(theme, `palette.${transformedColor}.main`, false) || getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;
10
+ const channelColor = getPath(theme, `palette.${transformedColor}.mainChannel`) || getPath(theme, `palette.${transformedColor}Channel`);
10
11
  if ('vars' in theme && channelColor) {
11
12
  return `rgba(${channelColor} / 0.4)`;
12
13
  }
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
  /**
3
5
  * @ignore - internal component.
@@ -4,6 +4,7 @@ import * as React from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import clsx from 'clsx';
6
6
  import deepmerge from '@mui/utils/deepmerge';
7
+ import composeClasses from '@mui/utils/composeClasses';
7
8
  import getReactElementRef from '@mui/utils/getReactElementRef';
8
9
  import SelectInput from "./SelectInput.js";
9
10
  import formControlState from "../FormControl/formControlState.js";
@@ -17,12 +18,20 @@ import { useDefaultProps } from "../DefaultPropsProvider/index.js";
17
18
  import useForkRef from "../utils/useForkRef.js";
18
19
  import { styled } from "../zero-styled/index.js";
19
20
  import rootShouldForwardProp from "../styles/rootShouldForwardProp.js";
21
+ import { getSelectUtilityClasses } from "./selectClasses.js";
20
22
  import { jsx as _jsx } from "react/jsx-runtime";
21
23
  const useUtilityClasses = ownerState => {
22
24
  const {
23
25
  classes
24
26
  } = ownerState;
25
- return classes;
27
+ const slots = {
28
+ root: ['root']
29
+ };
30
+ const composedClasses = composeClasses(slots, getSelectUtilityClasses, classes);
31
+ return {
32
+ ...classes,
33
+ ...composedClasses
34
+ };
26
35
  };
27
36
  const styledRootConfig = {
28
37
  name: 'MuiSelect',
@@ -443,7 +443,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
443
443
  ref: handleDisplayRef,
444
444
  tabIndex: tabIndex,
445
445
  role: "combobox",
446
- "aria-controls": listboxId,
446
+ "aria-controls": open ? listboxId : undefined,
447
447
  "aria-disabled": disabled ? 'true' : undefined,
448
448
  "aria-expanded": open ? 'true' : 'false',
449
449
  "aria-haspopup": "listbox",
@@ -188,6 +188,8 @@ export function useSlider(parameters) {
188
188
  const [open, setOpen] = React.useState(-1);
189
189
  const [dragging, setDragging] = React.useState(false);
190
190
  const moveCount = React.useRef(0);
191
+ // lastChangedValue is updated whenever onChange is triggered.
192
+ const lastChangedValue = React.useRef(null);
191
193
  const [valueDerived, setValueState] = useControlled({
192
194
  controlled: valueProp,
193
195
  default: defaultValue ?? min,
@@ -208,6 +210,7 @@ export function useSlider(parameters) {
208
210
  name
209
211
  }
210
212
  });
213
+ lastChangedValue.current = value;
211
214
  onChange(clonedEvent, value, thumbIndex);
212
215
  });
213
216
  const range = Array.isArray(valueDerived);
@@ -279,7 +282,7 @@ export function useSlider(parameters) {
279
282
  handleChange(event, newValue, index);
280
283
  }
281
284
  if (onChangeCommitted) {
282
- onChangeCommitted(event, newValue);
285
+ onChangeCommitted(event, lastChangedValue.current ?? newValue);
283
286
  }
284
287
  };
285
288
  const createHandleHiddenInputKeyDown = otherHandlers => event => {
@@ -484,7 +487,7 @@ export function useSlider(parameters) {
484
487
  setOpen(-1);
485
488
  }
486
489
  if (onChangeCommitted) {
487
- onChangeCommitted(nativeEvent, newValue);
490
+ onChangeCommitted(nativeEvent, lastChangedValue.current ?? newValue);
488
491
  }
489
492
  touchId.current = undefined;
490
493
 
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
  /**
3
5
  * Provides information about the current step in Stepper.
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
  /**
3
5
  * Provides information about the current step in Stepper.
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
 
3
5
  /**
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
  /**
3
5
  * @ignore - internal component.
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
  /**
3
5
  * @ignore - internal component.
package/modern/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
@@ -18,6 +18,7 @@ export { default as unsupportedProp } from "./unsupportedProp.js";
18
18
  export { default as useControlled } from "./useControlled.js";
19
19
  export { default as useEventCallback } from "./useEventCallback.js";
20
20
  export { default as useForkRef } from "./useForkRef.js";
21
+ export { default as mergeSlotProps } from "./mergeSlotProps.js";
21
22
  // TODO: remove this export once ClassNameGenerator is stable
22
23
  // eslint-disable-next-line @typescript-eslint/naming-convention
23
24
  export const unstable_ClassNameGenerator = {
@@ -0,0 +1,43 @@
1
+ import clsx from 'clsx';
2
+ export default function mergeSlotProps(externalSlotProps, defaultSlotProps) {
3
+ if (!externalSlotProps) {
4
+ return defaultSlotProps;
5
+ }
6
+ if (typeof externalSlotProps === 'function' || typeof defaultSlotProps === 'function') {
7
+ return ownerState => {
8
+ const defaultSlotPropsValue = typeof defaultSlotProps === 'function' ? defaultSlotProps(ownerState) : defaultSlotProps;
9
+ const externalSlotPropsValue = typeof externalSlotProps === 'function' ? externalSlotProps({
10
+ ...ownerState,
11
+ ...defaultSlotPropsValue
12
+ }) : externalSlotProps;
13
+ const className = clsx(ownerState?.className, defaultSlotPropsValue?.className, externalSlotPropsValue?.className);
14
+ return {
15
+ ...defaultSlotPropsValue,
16
+ ...externalSlotPropsValue,
17
+ ...(!!className && {
18
+ className
19
+ }),
20
+ ...(defaultSlotPropsValue?.style && externalSlotPropsValue?.style && {
21
+ style: {
22
+ ...defaultSlotPropsValue.style,
23
+ ...externalSlotPropsValue.style
24
+ }
25
+ })
26
+ };
27
+ };
28
+ }
29
+ const className = clsx(defaultSlotProps?.className, externalSlotProps?.className);
30
+ return {
31
+ ...defaultSlotProps,
32
+ ...externalSlotProps,
33
+ ...(!!className && {
34
+ className
35
+ }),
36
+ ...(defaultSlotProps?.style && externalSlotProps?.style && {
37
+ style: {
38
+ ...defaultSlotProps.style,
39
+ ...externalSlotProps.style
40
+ }
41
+ })
42
+ };
43
+ }
@@ -32,6 +32,7 @@ name, parameters) {
32
32
  ownerState,
33
33
  externalForwardedProps,
34
34
  internalForwardedProps,
35
+ shouldForwardComponentProp = false,
35
36
  ...useSlotPropsParams
36
37
  } = parameters;
37
38
  const {
@@ -67,9 +68,12 @@ name, parameters) {
67
68
  ...(name === 'root' && !rootComponent && !slots[name] && internalForwardedProps),
68
69
  ...(name !== 'root' && !slots[name] && internalForwardedProps),
69
70
  ...mergedProps,
70
- ...(LeafComponent && {
71
+ ...(LeafComponent && !shouldForwardComponentProp && {
71
72
  as: LeafComponent
72
73
  }),
74
+ ...(LeafComponent && shouldForwardComponentProp && {
75
+ component: LeafComponent
76
+ }),
73
77
  ref
74
78
  }, ownerState);
75
79
  return [elementType, props];
@@ -1,6 +1,6 @@
1
- export const version = "6.3.1";
1
+ export const version = "6.4.1";
2
2
  export const major = Number("6");
3
- export const minor = Number("3");
3
+ export const minor = Number("4");
4
4
  export const patch = Number("1");
5
5
  export const prerelease = undefined;
6
6
  export default version;
@@ -194,6 +194,39 @@ const Alert = /*#__PURE__*/React.forwardRef(function Alert(inProps, ref) {
194
194
  ...slotProps
195
195
  }
196
196
  };
197
+ const [RootSlot, rootSlotProps] = (0, _useSlot.default)('root', {
198
+ ref,
199
+ shouldForwardComponentProp: true,
200
+ className: (0, _clsx.default)(classes.root, className),
201
+ elementType: AlertRoot,
202
+ externalForwardedProps: {
203
+ ...externalForwardedProps,
204
+ ...other
205
+ },
206
+ ownerState,
207
+ additionalProps: {
208
+ role,
209
+ elevation: 0
210
+ }
211
+ });
212
+ const [IconSlot, iconSlotProps] = (0, _useSlot.default)('icon', {
213
+ className: classes.icon,
214
+ elementType: AlertIcon,
215
+ externalForwardedProps,
216
+ ownerState
217
+ });
218
+ const [MessageSlot, messageSlotProps] = (0, _useSlot.default)('message', {
219
+ className: classes.message,
220
+ elementType: AlertMessage,
221
+ externalForwardedProps,
222
+ ownerState
223
+ });
224
+ const [ActionSlot, actionSlotProps] = (0, _useSlot.default)('action', {
225
+ className: classes.action,
226
+ elementType: AlertAction,
227
+ externalForwardedProps,
228
+ ownerState
229
+ });
197
230
  const [CloseButtonSlot, closeButtonProps] = (0, _useSlot.default)('closeButton', {
198
231
  elementType: _IconButton.default,
199
232
  externalForwardedProps,
@@ -204,28 +237,19 @@ const Alert = /*#__PURE__*/React.forwardRef(function Alert(inProps, ref) {
204
237
  externalForwardedProps,
205
238
  ownerState
206
239
  });
207
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(AlertRoot, {
208
- role: role,
209
- elevation: 0,
210
- ownerState: ownerState,
211
- className: (0, _clsx.default)(classes.root, className),
212
- ref: ref,
213
- ...other,
214
- children: [icon !== false ? /*#__PURE__*/(0, _jsxRuntime.jsx)(AlertIcon, {
215
- ownerState: ownerState,
216
- className: classes.icon,
240
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(RootSlot, {
241
+ ...rootSlotProps,
242
+ children: [icon !== false ? /*#__PURE__*/(0, _jsxRuntime.jsx)(IconSlot, {
243
+ ...iconSlotProps,
217
244
  children: icon || iconMapping[severity] || defaultIconMapping[severity]
218
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(AlertMessage, {
219
- ownerState: ownerState,
220
- className: classes.message,
245
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(MessageSlot, {
246
+ ...messageSlotProps,
221
247
  children: children
222
- }), action != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(AlertAction, {
223
- ownerState: ownerState,
224
- className: classes.action,
248
+ }), action != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionSlot, {
249
+ ...actionSlotProps,
225
250
  children: action
226
- }) : null, action == null && onClose ? /*#__PURE__*/(0, _jsxRuntime.jsx)(AlertAction, {
227
- ownerState: ownerState,
228
- className: classes.action,
251
+ }) : null, action == null && onClose ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionSlot, {
252
+ ...actionSlotProps,
229
253
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CloseButtonSlot, {
230
254
  size: "small",
231
255
  "aria-label": closeText,
@@ -337,16 +361,24 @@ process.env.NODE_ENV !== "production" ? Alert.propTypes /* remove-proptypes */ =
337
361
  * @default {}
338
362
  */
339
363
  slotProps: _propTypes.default.shape({
364
+ action: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
340
365
  closeButton: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
341
- closeIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
366
+ closeIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
367
+ icon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
368
+ message: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
369
+ root: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
342
370
  }),
343
371
  /**
344
372
  * The components used for each slot inside.
345
373
  * @default {}
346
374
  */
347
375
  slots: _propTypes.default.shape({
376
+ action: _propTypes.default.elementType,
348
377
  closeButton: _propTypes.default.elementType,
349
- closeIcon: _propTypes.default.elementType
378
+ closeIcon: _propTypes.default.elementType,
379
+ icon: _propTypes.default.elementType,
380
+ message: _propTypes.default.elementType,
381
+ root: _propTypes.default.elementType
350
382
  }),
351
383
  /**
352
384
  * The system prop that allows defining system overrides as well as additional CSS styles.