@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
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = mergeSlotProps;
8
+ var _clsx = _interopRequireDefault(require("clsx"));
9
+ function mergeSlotProps(externalSlotProps, defaultSlotProps) {
10
+ if (!externalSlotProps) {
11
+ return defaultSlotProps;
12
+ }
13
+ if (typeof externalSlotProps === 'function' || typeof defaultSlotProps === 'function') {
14
+ return ownerState => {
15
+ const defaultSlotPropsValue = typeof defaultSlotProps === 'function' ? defaultSlotProps(ownerState) : defaultSlotProps;
16
+ const externalSlotPropsValue = typeof externalSlotProps === 'function' ? externalSlotProps({
17
+ ...ownerState,
18
+ ...defaultSlotPropsValue
19
+ }) : externalSlotProps;
20
+ const className = (0, _clsx.default)(ownerState?.className, defaultSlotPropsValue?.className, externalSlotPropsValue?.className);
21
+ return {
22
+ ...defaultSlotPropsValue,
23
+ ...externalSlotPropsValue,
24
+ ...(!!className && {
25
+ className
26
+ }),
27
+ ...(defaultSlotPropsValue?.style && externalSlotPropsValue?.style && {
28
+ style: {
29
+ ...defaultSlotPropsValue.style,
30
+ ...externalSlotPropsValue.style
31
+ }
32
+ })
33
+ };
34
+ };
35
+ }
36
+ const className = (0, _clsx.default)(defaultSlotProps?.className, externalSlotProps?.className);
37
+ return {
38
+ ...defaultSlotProps,
39
+ ...externalSlotProps,
40
+ ...(!!className && {
41
+ className
42
+ }),
43
+ ...(defaultSlotProps?.style && externalSlotProps?.style && {
44
+ style: {
45
+ ...defaultSlotProps.style,
46
+ ...externalSlotProps.style
47
+ }
48
+ })
49
+ };
50
+ }
@@ -38,6 +38,7 @@ name, parameters) {
38
38
  ownerState,
39
39
  externalForwardedProps,
40
40
  internalForwardedProps,
41
+ shouldForwardComponentProp = false,
41
42
  ...useSlotPropsParams
42
43
  } = parameters;
43
44
  const {
@@ -73,9 +74,12 @@ name, parameters) {
73
74
  ...(name === 'root' && !rootComponent && !slots[name] && internalForwardedProps),
74
75
  ...(name !== 'root' && !slots[name] && internalForwardedProps),
75
76
  ...mergedProps,
76
- ...(LeafComponent && {
77
+ ...(LeafComponent && !shouldForwardComponentProp && {
77
78
  as: LeafComponent
78
79
  }),
80
+ ...(LeafComponent && shouldForwardComponentProp && {
81
+ component: LeafComponent
82
+ }),
79
83
  ref
80
84
  }, ownerState);
81
85
  return [elementType, props];
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = exports.prerelease = exports.patch = exports.minor = exports.major = exports.default = void 0;
7
- const version = exports.version = "6.3.1";
7
+ const version = exports.version = "6.4.1";
8
8
  const major = exports.major = Number("6");
9
- const minor = exports.minor = Number("3");
9
+ const minor = exports.minor = Number("4");
10
10
  const patch = exports.patch = Number("1");
11
11
  const prerelease = exports.prerelease = undefined;
12
12
  var _default = exports.default = version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/material",
3
- "version": "6.3.1",
3
+ "version": "6.4.1",
4
4
  "private": false,
5
5
  "author": "MUI Team",
6
6
  "description": "Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.",
@@ -35,10 +35,10 @@
35
35
  "prop-types": "^15.8.1",
36
36
  "react-is": "^19.0.0",
37
37
  "react-transition-group": "^4.4.5",
38
- "@mui/core-downloads-tracker": "^6.3.1",
38
+ "@mui/system": "^6.4.1",
39
39
  "@mui/types": "^7.2.21",
40
- "@mui/system": "^6.3.1",
41
- "@mui/utils": "^6.3.1"
40
+ "@mui/utils": "^6.4.1",
41
+ "@mui/core-downloads-tracker": "^6.4.1"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@emotion/react": "^11.5.0",
@@ -46,7 +46,7 @@
46
46
  "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
47
47
  "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
48
48
  "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
49
- "@mui/material-pigment-css": "^6.3.1"
49
+ "@mui/material-pigment-css": "^6.4.1"
50
50
  },
51
51
  "peerDependenciesMeta": {
52
52
  "@types/react": {
package/utils/index.d.ts CHANGED
@@ -16,4 +16,5 @@ export { default as unsupportedProp } from './unsupportedProp';
16
16
  export { default as useControlled } from './useControlled';
17
17
  export { default as useEventCallback } from './useEventCallback';
18
18
  export { default as useForkRef } from './useForkRef';
19
+ export { default as mergeSlotProps } from './mergeSlotProps';
19
20
  export * from './types';
package/utils/index.js CHANGED
@@ -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,2 @@
1
+ import { SlotComponentProps } from '@mui/utils';
2
+ export default function mergeSlotProps<T extends SlotComponentProps<React.ElementType, {}, {}>, K = T, U = T extends Function ? T : K extends Function ? K : T extends undefined ? K : T>(externalSlotProps: T | undefined, defaultSlotProps: K): U;
@@ -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
+ }
@@ -70,6 +70,14 @@ name: T, parameters: (T extends 'root' ? {
70
70
  * e.g. Autocomplete's listbox uses Popper + StyledComponent
71
71
  */
72
72
  internalForwardedProps?: any;
73
+ /**
74
+ * Set to true if the `elementType` is a styled component of another Material UI component.
75
+ *
76
+ * For example, the AlertRoot is a styled component of the Paper component.
77
+ * This flag is used to forward the `component` and `slotProps.root.component` to the Paper component.
78
+ * Otherwise, the `component` prop will be converted to `as` prop which replaces the Paper component (the paper styles are gone).
79
+ */
80
+ shouldForwardComponentProp?: boolean;
73
81
  }): [ElementType, {
74
82
  className: string;
75
83
  ownerState: OwnerState & SlotOwnerState;
package/utils/useSlot.js CHANGED
@@ -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];
package/version/index.js CHANGED
@@ -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;