@mui/material 5.8.3 → 5.8.4

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 (64) hide show
  1. package/Autocomplete/autocompleteClasses.d.ts +1 -1
  2. package/Button/buttonClasses.d.ts +24 -0
  3. package/Button/buttonClasses.js +1 -1
  4. package/CHANGELOG.md +90 -10
  5. package/Grid/Grid.d.ts +73 -52
  6. package/Grid/Grid.js +94 -40
  7. package/Grow/Grow.js +1 -2
  8. package/Hidden/withWidth.js +0 -2
  9. package/Link/Link.js +10 -17
  10. package/Link/getTextDecoration.d.ts +15 -0
  11. package/Link/getTextDecoration.js +29 -0
  12. package/Popover/Popover.d.ts +7 -0
  13. package/Popover/index.js +1 -0
  14. package/README.md +6 -9
  15. package/Slider/Slider.d.ts +3 -1
  16. package/Slider/Slider.js +3 -1
  17. package/Snackbar/Snackbar.js +6 -20
  18. package/Stack/Stack.js +1 -1
  19. package/StepIcon/StepIcon.js +2 -1
  20. package/Tab/Tab.d.ts +0 -1
  21. package/Tabs/Tabs.js +16 -0
  22. package/index.js +1 -1
  23. package/legacy/Button/buttonClasses.js +1 -1
  24. package/legacy/Grid/Grid.js +97 -48
  25. package/legacy/Grow/Grow.js +1 -2
  26. package/legacy/Hidden/withWidth.js +0 -2
  27. package/legacy/Link/Link.js +10 -17
  28. package/legacy/Link/getTextDecoration.js +28 -0
  29. package/legacy/Popover/index.js +1 -0
  30. package/legacy/Slider/Slider.js +3 -1
  31. package/legacy/Snackbar/Snackbar.js +6 -21
  32. package/legacy/Stack/Stack.js +2 -1
  33. package/legacy/StepIcon/StepIcon.js +2 -1
  34. package/legacy/Tabs/Tabs.js +16 -0
  35. package/legacy/index.js +1 -1
  36. package/modern/Button/buttonClasses.js +1 -1
  37. package/modern/Grid/Grid.js +94 -40
  38. package/modern/Grow/Grow.js +1 -2
  39. package/modern/Hidden/withWidth.js +0 -2
  40. package/modern/Link/Link.js +10 -17
  41. package/modern/Link/getTextDecoration.js +29 -0
  42. package/modern/Popover/index.js +1 -0
  43. package/modern/Slider/Slider.js +3 -1
  44. package/modern/Snackbar/Snackbar.js +6 -20
  45. package/modern/Stack/Stack.js +1 -1
  46. package/modern/StepIcon/StepIcon.js +2 -1
  47. package/modern/Tabs/Tabs.js +16 -0
  48. package/modern/index.js +1 -1
  49. package/node/Button/buttonClasses.js +1 -1
  50. package/node/Grid/Grid.js +95 -40
  51. package/node/Grow/Grow.js +1 -2
  52. package/node/Hidden/withWidth.js +0 -3
  53. package/node/Link/Link.js +12 -20
  54. package/node/Link/getTextDecoration.js +39 -0
  55. package/node/Popover/index.js +13 -3
  56. package/node/Slider/Slider.js +3 -1
  57. package/node/Snackbar/Snackbar.js +6 -18
  58. package/node/Stack/Stack.js +1 -1
  59. package/node/StepIcon/StepIcon.js +2 -1
  60. package/node/Tabs/Tabs.js +16 -0
  61. package/node/index.js +1 -1
  62. package/package.json +5 -6
  63. package/umd/material-ui.development.js +190 -173
  64. package/umd/material-ui.production.min.js +21 -21
@@ -7,7 +7,6 @@ import PropTypes from 'prop-types';
7
7
  import clsx from 'clsx';
8
8
  import { elementTypeAcceptingRef } from '@mui/utils';
9
9
  import { unstable_composeClasses as composeClasses } from '@mui/base';
10
- import { alpha, getPath } from '@mui/system';
11
10
  import capitalize from '../utils/capitalize';
12
11
  import styled from '../styles/styled';
13
12
  import useThemeProps from '../styles/useThemeProps';
@@ -15,18 +14,8 @@ import useIsFocusVisible from '../utils/useIsFocusVisible';
15
14
  import useForkRef from '../utils/useForkRef';
16
15
  import Typography from '../Typography';
17
16
  import linkClasses, { getLinkUtilityClass } from './linkClasses';
17
+ import getTextDecoration, { colorTransformations } from './getTextDecoration';
18
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
- var colorTransformations = {
20
- primary: 'primary.main',
21
- textPrimary: 'text.primary',
22
- secondary: 'secondary.main',
23
- textSecondary: 'text.secondary',
24
- error: 'error.main'
25
- };
26
-
27
- var transformDeprecatedColors = function transformDeprecatedColors(color) {
28
- return colorTransformations[color] || color;
29
- };
30
19
 
31
20
  var useUtilityClasses = function useUtilityClasses(ownerState) {
32
21
  var classes = ownerState.classes,
@@ -49,7 +38,6 @@ var LinkRoot = styled(Typography, {
49
38
  })(function (_ref) {
50
39
  var theme = _ref.theme,
51
40
  ownerState = _ref.ownerState;
52
- var color = getPath(theme, "palette.".concat(transformDeprecatedColors(ownerState.color))) || ownerState.color;
53
41
  return _extends({}, ownerState.underline === 'none' && {
54
42
  textDecoration: 'none'
55
43
  }, ownerState.underline === 'hover' && {
@@ -57,13 +45,18 @@ var LinkRoot = styled(Typography, {
57
45
  '&:hover': {
58
46
  textDecoration: 'underline'
59
47
  }
60
- }, ownerState.underline === 'always' && {
61
- textDecoration: 'underline',
62
- textDecorationColor: color !== 'inherit' ? alpha(color, 0.4) : undefined,
48
+ }, ownerState.underline === 'always' && _extends({
49
+ textDecoration: 'underline'
50
+ }, ownerState.color !== 'inherit' && {
51
+ textDecorationColor: getTextDecoration({
52
+ theme: theme,
53
+ ownerState: ownerState
54
+ })
55
+ }, {
63
56
  '&:hover': {
64
57
  textDecorationColor: 'inherit'
65
58
  }
66
- }, ownerState.component === 'button' && _defineProperty({
59
+ }), ownerState.component === 'button' && _defineProperty({
67
60
  position: 'relative',
68
61
  WebkitTapHighlightColor: 'transparent',
69
62
  backgroundColor: 'transparent',
@@ -0,0 +1,28 @@
1
+ import { alpha, getPath } from '@mui/system';
2
+ export var colorTransformations = {
3
+ primary: 'primary.main',
4
+ textPrimary: 'text.primary',
5
+ secondary: 'secondary.main',
6
+ textSecondary: 'text.secondary',
7
+ error: 'error.main'
8
+ };
9
+
10
+ var transformDeprecatedColors = function transformDeprecatedColors(color) {
11
+ return colorTransformations[color] || color;
12
+ };
13
+
14
+ var getTextDecoration = function getTextDecoration(_ref) {
15
+ var theme = _ref.theme,
16
+ ownerState = _ref.ownerState;
17
+ var transformedColor = transformDeprecatedColors(ownerState.color);
18
+ var color = getPath(theme, "palette.".concat(transformedColor), false) || ownerState.color;
19
+ var channelColor = getPath(theme, "palette.".concat(transformedColor, "Channel"));
20
+
21
+ if ('vars' in theme && channelColor) {
22
+ return "rgba(".concat(channelColor, " / 0.4)");
23
+ }
24
+
25
+ return alpha(color, 0.4);
26
+ };
27
+
28
+ export default getTextDecoration;
@@ -1,3 +1,4 @@
1
1
  export { default } from './Popover';
2
+ export * from './Popover';
2
3
  export { default as popoverClasses } from './popoverClasses';
3
4
  export * from './popoverClasses';
@@ -598,12 +598,14 @@ process.env.NODE_ENV !== "production" ? Slider.propTypes
598
598
  thumb: PropTypes.object,
599
599
  track: PropTypes.object,
600
600
  valueLabel: PropTypes.shape({
601
+ children: PropTypes.element,
601
602
  className: PropTypes.string,
602
603
  components: PropTypes.shape({
603
604
  Root: PropTypes.elementType
604
605
  }),
606
+ open: PropTypes.bool,
605
607
  style: PropTypes.object,
606
- value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),
608
+ value: PropTypes.number,
607
609
  valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])
608
610
  })
609
611
  }),
@@ -35,17 +35,11 @@ var SnackbarRoot = styled('div', {
35
35
  })(function (_ref) {
36
36
  var theme = _ref.theme,
37
37
  ownerState = _ref.ownerState;
38
-
39
- var center = _extends({}, !ownerState.isRtl && {
38
+ var center = {
40
39
  left: '50%',
41
40
  right: 'auto',
42
41
  transform: 'translateX(-50%)'
43
- }, ownerState.isRtl && {
44
- right: '50%',
45
- left: 'auto',
46
- transform: 'translateX(50%)'
47
- });
48
-
42
+ };
49
43
  return _extends({
50
44
  zIndex: (theme.vars || theme).zIndex.snackbar,
51
45
  position: 'fixed',
@@ -66,19 +60,13 @@ var SnackbarRoot = styled('div', {
66
60
  top: 24
67
61
  } : {
68
62
  bottom: 24
69
- }, ownerState.anchorOrigin.horizontal === 'center' && center, ownerState.anchorOrigin.horizontal === 'left' && _extends({}, !ownerState.isRtl && {
63
+ }, ownerState.anchorOrigin.horizontal === 'center' && center, ownerState.anchorOrigin.horizontal === 'left' && {
70
64
  left: 24,
71
65
  right: 'auto'
72
- }, ownerState.isRtl && {
73
- right: 24,
74
- left: 'auto'
75
- }), ownerState.anchorOrigin.horizontal === 'right' && _extends({}, !ownerState.isRtl && {
66
+ }, ownerState.anchorOrigin.horizontal === 'right' && {
76
67
  right: 24,
77
68
  left: 'auto'
78
- }, ownerState.isRtl && {
79
- left: 24,
80
- right: 'auto'
81
- }))));
69
+ })));
82
70
  });
83
71
  var Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
84
72
  var props = useThemeProps({
@@ -126,14 +114,11 @@ var Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
126
114
  TransitionProps = _objectWithoutProperties(_props$TransitionProp, ["onEnter", "onExited"]),
127
115
  other = _objectWithoutProperties(props, ["action", "anchorOrigin", "autoHideDuration", "children", "className", "ClickAwayListenerProps", "ContentProps", "disableWindowBlurListener", "message", "onBlur", "onClose", "onFocus", "onMouseEnter", "onMouseLeave", "open", "resumeHideDuration", "TransitionComponent", "transitionDuration", "TransitionProps"]);
128
116
 
129
- var isRtl = theme.direction === 'rtl';
130
-
131
117
  var ownerState = _extends({}, props, {
132
118
  anchorOrigin: {
133
119
  vertical: vertical,
134
120
  horizontal: horizontal
135
- },
136
- isRtl: isRtl
121
+ }
137
122
  });
138
123
 
139
124
  var classes = useUtilityClasses(ownerState);
@@ -1,5 +1,6 @@
1
1
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
3
4
  import _extends from "@babel/runtime/helpers/esm/extends";
4
5
  import * as React from 'react';
5
6
  import PropTypes from 'prop-types';
@@ -61,7 +62,7 @@ export var style = function style(_ref) {
61
62
  if (ownerState.spacing) {
62
63
  var transformer = createUnarySpacing(theme);
63
64
  var base = Object.keys(theme.breakpoints.values).reduce(function (acc, breakpoint) {
64
- if (ownerState.spacing[breakpoint] != null || ownerState.direction[breakpoint] != null) {
65
+ if (_typeof(ownerState.spacing) === 'object' && ownerState.spacing[breakpoint] != null || _typeof(ownerState.direction) === 'object' && ownerState.direction[breakpoint] != null) {
65
66
  acc[breakpoint] = true;
66
67
  }
67
68
 
@@ -124,8 +124,9 @@ var StepIcon = /*#__PURE__*/React.forwardRef(function StepIcon(inProps, ref) {
124
124
  })), /*#__PURE__*/_jsx(StepIconText, {
125
125
  className: classes.text,
126
126
  x: "12",
127
- y: "16",
127
+ y: "12",
128
128
  textAnchor: "middle",
129
+ dominantBaseline: "central",
129
130
  ownerState: ownerState,
130
131
  children: icon
131
132
  })]
@@ -429,10 +429,26 @@ var Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
429
429
  scroll(scrollValue);
430
430
  };
431
431
 
432
+ var getFirstVisibleTab = function getFirstVisibleTab(tabs) {
433
+ var containerSize = tabsRef.current[clientSize];
434
+ var containerStartBound = Math.round(tabsRef.current[scrollStart]);
435
+ var containerEndBound = Math.round(containerStartBound + containerSize);
436
+ var offset = vertical ? 'offsetTop' : 'offsetLeft';
437
+ return tabs.find(function (tab) {
438
+ var centerPoint = tab[offset] + tab[clientSize] / 2;
439
+ return centerPoint >= containerStartBound && centerPoint <= containerEndBound;
440
+ });
441
+ };
442
+
432
443
  var getScrollSize = function getScrollSize() {
433
444
  var containerSize = tabsRef.current[clientSize];
434
445
  var totalSize = 0;
435
446
  var children = Array.from(tabListRef.current.children);
447
+ var firstVisibleTab = getFirstVisibleTab(children);
448
+
449
+ if (firstVisibleTab && firstVisibleTab[clientSize] > containerSize) {
450
+ return firstVisibleTab[clientSize];
451
+ }
436
452
 
437
453
  for (var i = 0; i < children.length; i += 1) {
438
454
  var tab = children[i];
package/legacy/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.8.3
1
+ /** @license MUI v5.8.4
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -2,5 +2,5 @@ import { generateUtilityClass, generateUtilityClasses } from '@mui/base';
2
2
  export function getButtonUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiButton', slot);
4
4
  }
5
- const buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
5
+ const buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
6
6
  export default buttonClasses;
@@ -1,6 +1,6 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["className", "columns", "columnSpacing", "component", "container", "direction", "item", "lg", "md", "rowSpacing", "sm", "spacing", "wrap", "xl", "xs", "zeroMinWidth"];
3
+ const _excluded = ["className", "columns", "columnSpacing", "component", "container", "direction", "item", "rowSpacing", "spacing", "wrap", "zeroMinWidth"];
4
4
  // A grid component using the following libs as inspiration.
5
5
  //
6
6
  // For the implementation:
@@ -19,6 +19,7 @@ import { unstable_composeClasses as composeClasses } from '@mui/base';
19
19
  import requirePropFactory from '../utils/requirePropFactory';
20
20
  import styled from '../styles/styled';
21
21
  import useThemeProps from '../styles/useThemeProps';
22
+ import useTheme from '../styles/useTheme';
22
23
  import GridContext from './GridContext';
23
24
  import gridClasses, { getGridUtilityClass } from './gridClasses';
24
25
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -201,26 +202,27 @@ export function generateColumnGap({
201
202
 
202
203
  return styles;
203
204
  }
204
- export function resolveSpacingClasses(spacing, container, styles = {}) {
205
- // in case of grid item or undefined/null or `spacing` <= 0
206
- if (!container || !spacing || spacing <= 0) {
205
+ export function resolveSpacingStyles(spacing, breakpoints, styles = {}) {
206
+ // undefined/null or `spacing` <= 0
207
+ if (!spacing || spacing <= 0) {
207
208
  return [];
208
209
  } // in case of string/number `spacing`
209
210
 
210
211
 
211
212
  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {
212
- return [styles[`spacing-xs-${String(spacing)}`] || `spacing-xs-${String(spacing)}`];
213
+ return [styles[`spacing-xs-${String(spacing)}`]];
213
214
  } // in case of object `spacing`
214
215
 
215
216
 
216
- const {
217
- xs,
218
- sm,
219
- md,
220
- lg,
221
- xl
222
- } = spacing;
223
- return [Number(xs) > 0 && (styles[`spacing-xs-${String(xs)}`] || `spacing-xs-${String(xs)}`), Number(sm) > 0 && (styles[`spacing-sm-${String(sm)}`] || `spacing-sm-${String(sm)}`), Number(md) > 0 && (styles[`spacing-md-${String(md)}`] || `spacing-md-${String(md)}`), Number(lg) > 0 && (styles[`spacing-lg-${String(lg)}`] || `spacing-lg-${String(lg)}`), Number(xl) > 0 && (styles[`spacing-xl-${String(xl)}`] || `spacing-xl-${String(xl)}`)];
217
+ const spacingStyles = [];
218
+ breakpoints.forEach(breakpoint => {
219
+ const value = spacing[breakpoint];
220
+
221
+ if (Number(value) > 0) {
222
+ spacingStyles.push(styles[`spacing-${breakpoint}-${String(value)}`]);
223
+ }
224
+ });
225
+ return spacingStyles;
224
226
  } // Default CSS values
225
227
  // flex: '0 1 auto',
226
228
  // flexDirection: 'row',
@@ -232,20 +234,33 @@ const GridRoot = styled('div', {
232
234
  name: 'MuiGrid',
233
235
  slot: 'Root',
234
236
  overridesResolver: (props, styles) => {
237
+ const {
238
+ ownerState
239
+ } = props;
235
240
  const {
236
241
  container,
237
242
  direction,
238
243
  item,
239
- lg,
240
- md,
241
- sm,
242
244
  spacing,
243
245
  wrap,
244
- xl,
245
- xs,
246
- zeroMinWidth
247
- } = props.ownerState;
248
- return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth, ...resolveSpacingClasses(spacing, container, styles), direction !== 'row' && styles[`direction-xs-${String(direction)}`], wrap !== 'wrap' && styles[`wrap-xs-${String(wrap)}`], xs !== false && styles[`grid-xs-${String(xs)}`], sm !== false && styles[`grid-sm-${String(sm)}`], md !== false && styles[`grid-md-${String(md)}`], lg !== false && styles[`grid-lg-${String(lg)}`], xl !== false && styles[`grid-xl-${String(xl)}`]];
246
+ zeroMinWidth,
247
+ breakpoints
248
+ } = ownerState;
249
+ let spacingStyles = []; // in case of grid item
250
+
251
+ if (container) {
252
+ spacingStyles = resolveSpacingStyles(spacing, breakpoints, styles);
253
+ }
254
+
255
+ const breakpointsStyles = [];
256
+ breakpoints.forEach(breakpoint => {
257
+ const value = ownerState[breakpoint];
258
+
259
+ if (value) {
260
+ breakpointsStyles.push(styles[`grid-${breakpoint}-${String(value)}`]);
261
+ }
262
+ });
263
+ return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth, ...spacingStyles, direction !== 'row' && styles[`direction-xs-${String(direction)}`], wrap !== 'wrap' && styles[`wrap-xs-${String(wrap)}`], ...breakpointsStyles];
249
264
  }
250
265
  })(({
251
266
  ownerState
@@ -263,6 +278,29 @@ const GridRoot = styled('div', {
263
278
  }, ownerState.wrap !== 'wrap' && {
264
279
  flexWrap: ownerState.wrap
265
280
  }), generateDirection, generateRowGap, generateColumnGap, generateGrid);
281
+ export function resolveSpacingClasses(spacing, breakpoints) {
282
+ // undefined/null or `spacing` <= 0
283
+ if (!spacing || spacing <= 0) {
284
+ return [];
285
+ } // in case of string/number `spacing`
286
+
287
+
288
+ if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {
289
+ return [`spacing-xs-${String(spacing)}`];
290
+ } // in case of object `spacing`
291
+
292
+
293
+ const classes = [];
294
+ breakpoints.forEach(breakpoint => {
295
+ const value = spacing[breakpoint];
296
+
297
+ if (Number(value) > 0) {
298
+ const className = `spacing-${breakpoint}-${String(value)}`;
299
+ classes.push(className);
300
+ }
301
+ });
302
+ return classes;
303
+ }
266
304
 
267
305
  const useUtilityClasses = ownerState => {
268
306
  const {
@@ -270,17 +308,27 @@ const useUtilityClasses = ownerState => {
270
308
  container,
271
309
  direction,
272
310
  item,
273
- lg,
274
- md,
275
- sm,
276
311
  spacing,
277
312
  wrap,
278
- xl,
279
- xs,
280
- zeroMinWidth
313
+ zeroMinWidth,
314
+ breakpoints
281
315
  } = ownerState;
316
+ let spacingClasses = []; // in case of grid item
317
+
318
+ if (container) {
319
+ spacingClasses = resolveSpacingClasses(spacing, breakpoints);
320
+ }
321
+
322
+ const breakpointsClasses = [];
323
+ breakpoints.forEach(breakpoint => {
324
+ const value = ownerState[breakpoint];
325
+
326
+ if (value) {
327
+ breakpointsClasses.push(`grid-${breakpoint}-${String(value)}`);
328
+ }
329
+ });
282
330
  const slots = {
283
- root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth', ...resolveSpacingClasses(spacing, container), direction !== 'row' && `direction-xs-${String(direction)}`, wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, xs !== false && `grid-xs-${String(xs)}`, sm !== false && `grid-sm-${String(sm)}`, md !== false && `grid-md-${String(md)}`, lg !== false && `grid-lg-${String(lg)}`, xl !== false && `grid-xl-${String(xl)}`]
331
+ root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth', ...spacingClasses, direction !== 'row' && `direction-xs-${String(direction)}`, wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, ...breakpointsClasses]
284
332
  };
285
333
  return composeClasses(slots, getGridUtilityClass, classes);
286
334
  };
@@ -290,6 +338,9 @@ const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
290
338
  props: inProps,
291
339
  name: 'MuiGrid'
292
340
  });
341
+ const {
342
+ breakpoints
343
+ } = useTheme();
293
344
  const props = extendSxProp(themeProps);
294
345
 
295
346
  const {
@@ -300,14 +351,9 @@ const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
300
351
  container = false,
301
352
  direction = 'row',
302
353
  item = false,
303
- lg = false,
304
- md = false,
305
354
  rowSpacing: rowSpacingProp,
306
- sm = false,
307
355
  spacing = 0,
308
356
  wrap = 'wrap',
309
- xl = false,
310
- xs = false,
311
357
  zeroMinWidth = false
312
358
  } = props,
313
359
  other = _objectWithoutPropertiesLoose(props, _excluded);
@@ -317,21 +363,29 @@ const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
317
363
  const columnsContext = React.useContext(GridContext); // columns set with default breakpoint unit of 12
318
364
 
319
365
  const columns = container ? columnsProp || 12 : columnsContext;
366
+ const breakpointsValues = {};
367
+
368
+ const otherFiltered = _extends({}, other);
369
+
370
+ breakpoints.keys.forEach(breakpoint => {
371
+ if (other[breakpoint] != null) {
372
+ breakpointsValues[breakpoint] = other[breakpoint];
373
+ delete otherFiltered[breakpoint];
374
+ }
375
+ });
320
376
 
321
377
  const ownerState = _extends({}, props, {
322
378
  columns,
323
379
  container,
324
380
  direction,
325
381
  item,
326
- lg,
327
- md,
328
- sm,
329
382
  rowSpacing,
330
383
  columnSpacing,
331
384
  wrap,
332
- xl,
333
- xs,
334
- zeroMinWidth
385
+ zeroMinWidth,
386
+ spacing
387
+ }, breakpointsValues, {
388
+ breakpoints: breakpoints.keys
335
389
  });
336
390
 
337
391
  const classes = useUtilityClasses(ownerState);
@@ -342,7 +396,7 @@ const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
342
396
  className: clsx(classes.root, className),
343
397
  as: component,
344
398
  ref: ref
345
- }, other))
399
+ }, otherFiltered))
346
400
  });
347
401
  });
348
402
  process.env.NODE_ENV !== "production" ? Grid.propTypes
@@ -27,10 +27,9 @@ const styles = {
27
27
  /*
28
28
  TODO v6: remove
29
29
  Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.
30
- Remove this workaround once the WebKit bug fix is released.
31
30
  */
32
31
 
33
- const isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\/)15(.|_)[4-9]/i.test(navigator.userAgent);
32
+ const isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\/)15(.|_)4/i.test(navigator.userAgent);
34
33
  /**
35
34
  * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and
36
35
  * [Popover](/material-ui/react-popover/) components.
@@ -5,7 +5,6 @@ import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { getDisplayName } from '@mui/utils';
7
7
  import { getThemeProps } from '@mui/system';
8
- import hoistNonReactStatics from 'hoist-non-react-statics';
9
8
  import useTheme from '../styles/useTheme';
10
9
  import useEnhancedEffect from '../utils/useEnhancedEffect';
11
10
  import useMediaQuery from '../useMediaQuery';
@@ -113,7 +112,6 @@ const withWidth = (options = {}) => Component => {
113
112
  WithWidth.displayName = `WithWidth(${getDisplayName(Component)})`;
114
113
  }
115
114
 
116
- hoistNonReactStatics(WithWidth, Component);
117
115
  return WithWidth;
118
116
  };
119
117
 
@@ -6,7 +6,6 @@ import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
7
  import { elementTypeAcceptingRef } from '@mui/utils';
8
8
  import { unstable_composeClasses as composeClasses } from '@mui/base';
9
- import { alpha, getPath } from '@mui/system';
10
9
  import capitalize from '../utils/capitalize';
11
10
  import styled from '../styles/styled';
12
11
  import useThemeProps from '../styles/useThemeProps';
@@ -14,18 +13,8 @@ import useIsFocusVisible from '../utils/useIsFocusVisible';
14
13
  import useForkRef from '../utils/useForkRef';
15
14
  import Typography from '../Typography';
16
15
  import linkClasses, { getLinkUtilityClass } from './linkClasses';
16
+ import getTextDecoration, { colorTransformations } from './getTextDecoration';
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
- const colorTransformations = {
19
- primary: 'primary.main',
20
- textPrimary: 'text.primary',
21
- secondary: 'secondary.main',
22
- textSecondary: 'text.secondary',
23
- error: 'error.main'
24
- };
25
-
26
- const transformDeprecatedColors = color => {
27
- return colorTransformations[color] || color;
28
- };
29
18
 
30
19
  const useUtilityClasses = ownerState => {
31
20
  const {
@@ -53,7 +42,6 @@ const LinkRoot = styled(Typography, {
53
42
  theme,
54
43
  ownerState
55
44
  }) => {
56
- const color = getPath(theme, `palette.${transformDeprecatedColors(ownerState.color)}`) || ownerState.color;
57
45
  return _extends({}, ownerState.underline === 'none' && {
58
46
  textDecoration: 'none'
59
47
  }, ownerState.underline === 'hover' && {
@@ -61,13 +49,18 @@ const LinkRoot = styled(Typography, {
61
49
  '&:hover': {
62
50
  textDecoration: 'underline'
63
51
  }
64
- }, ownerState.underline === 'always' && {
65
- textDecoration: 'underline',
66
- textDecorationColor: color !== 'inherit' ? alpha(color, 0.4) : undefined,
52
+ }, ownerState.underline === 'always' && _extends({
53
+ textDecoration: 'underline'
54
+ }, ownerState.color !== 'inherit' && {
55
+ textDecorationColor: getTextDecoration({
56
+ theme,
57
+ ownerState
58
+ })
59
+ }, {
67
60
  '&:hover': {
68
61
  textDecorationColor: 'inherit'
69
62
  }
70
- }, ownerState.component === 'button' && {
63
+ }), ownerState.component === 'button' && {
71
64
  position: 'relative',
72
65
  WebkitTapHighlightColor: 'transparent',
73
66
  backgroundColor: 'transparent',
@@ -0,0 +1,29 @@
1
+ import { alpha, getPath } from '@mui/system';
2
+ export const colorTransformations = {
3
+ primary: 'primary.main',
4
+ textPrimary: 'text.primary',
5
+ secondary: 'secondary.main',
6
+ textSecondary: 'text.secondary',
7
+ error: 'error.main'
8
+ };
9
+
10
+ const transformDeprecatedColors = color => {
11
+ return colorTransformations[color] || color;
12
+ };
13
+
14
+ const getTextDecoration = ({
15
+ theme,
16
+ ownerState
17
+ }) => {
18
+ const transformedColor = transformDeprecatedColors(ownerState.color);
19
+ const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;
20
+ const channelColor = getPath(theme, `palette.${transformedColor}Channel`);
21
+
22
+ if ('vars' in theme && channelColor) {
23
+ return `rgba(${channelColor} / 0.4)`;
24
+ }
25
+
26
+ return alpha(color, 0.4);
27
+ };
28
+
29
+ export default getTextDecoration;
@@ -1,3 +1,4 @@
1
1
  export { default } from './Popover';
2
+ export * from './Popover';
2
3
  export { default as popoverClasses } from './popoverClasses';
3
4
  export * from './popoverClasses';
@@ -585,12 +585,14 @@ process.env.NODE_ENV !== "production" ? Slider.propTypes
585
585
  thumb: PropTypes.object,
586
586
  track: PropTypes.object,
587
587
  valueLabel: PropTypes.shape({
588
+ children: PropTypes.element,
588
589
  className: PropTypes.string,
589
590
  components: PropTypes.shape({
590
591
  Root: PropTypes.elementType
591
592
  }),
593
+ open: PropTypes.bool,
592
594
  style: PropTypes.object,
593
- value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),
595
+ value: PropTypes.number,
594
596
  valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])
595
597
  })
596
598
  }),