@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
package/Link/Link.js CHANGED
@@ -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,15 @@
1
+ import type { Theme } from '../styles';
2
+ export declare const colorTransformations: {
3
+ primary: string;
4
+ textPrimary: string;
5
+ secondary: string;
6
+ textSecondary: string;
7
+ error: string;
8
+ };
9
+ declare const getTextDecoration: <T extends Theme>({ theme, ownerState, }: {
10
+ theme: T;
11
+ ownerState: {
12
+ color: string;
13
+ };
14
+ }) => string;
15
+ export default getTextDecoration;
@@ -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;
@@ -133,6 +133,13 @@ export interface PopoverActions {
133
133
  updatePosition(): void;
134
134
  }
135
135
 
136
+ export function getOffsetTop(rect: DOMRect, vertical: number | 'center' | 'bottom' | 'top'): number;
137
+
138
+ export function getOffsetLeft(
139
+ rect: DOMRect,
140
+ horizontal: number | 'center' | 'right' | 'left',
141
+ ): number;
142
+
136
143
  /**
137
144
  *
138
145
  * Demos:
package/Popover/index.js CHANGED
@@ -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';
package/README.md CHANGED
@@ -7,11 +7,13 @@
7
7
 
8
8
  **MUI Core** contains foundational React UI component libraries for shipping new features faster.
9
9
 
10
- - _Material UI_ is a comprehensive library of components that features our implementation of Google's [Material Design](https://material.io/design/introduction/) system.
10
+ - [_Material UI_](https://mui.com/material-ui/getting-started/overview/) is a comprehensive library of components that features our implementation of Google's [Material Design](https://material.io/design/introduction/) system.
11
11
 
12
- - _MUI Base_ is our library of "unstyled" components and low-level hooks. With Base, you gain complete control over your app's CSS and accessibility features.
12
+ - [_Joy UI_](https://mui.com/joy-ui/getting-started/overview/) is a beautifully designed library of React UI components.
13
13
 
14
- - _MUI System_ is a collection of CSS utilities to help you rapidly lay out custom designs.
14
+ - [_MUI Base_](https://mui.com/base/getting-started/overview/) is our library of "unstyled" components and low-level hooks. With Base, you gain complete control over your app's CSS and accessibility features.
15
+
16
+ - [_MUI System_](https://mui.com/system/basics/) is a collection of CSS utilities to help you rapidly lay out custom designs.
15
17
 
16
18
  <div align="center">
17
19
 
@@ -134,15 +136,10 @@ Here is an example of a basic app using Material UI's `Button` component:
134
136
 
135
137
  ```jsx
136
138
  import * as React from 'react';
137
- import ReactDOM from 'react-dom';
138
139
  import Button from '@mui/material/Button';
139
140
 
140
141
  function App() {
141
- return (
142
- <Button variant="contained" color="primary">
143
- Hello World
144
- </Button>
145
- );
142
+ return <Button variant="contained">Hello World</Button>;
146
143
  }
147
144
  ```
148
145
 
@@ -3,6 +3,7 @@ import {
3
3
  ExtendSliderUnstyledTypeMap,
4
4
  ExtendSliderUnstyled,
5
5
  SliderUnstyledTypeMap,
6
+ SliderValueLabelProps,
6
7
  } from '@mui/base/SliderUnstyled';
7
8
  import { SxProps } from '@mui/system';
8
9
  import { OverridableStringUnion } from '@mui/types';
@@ -55,13 +56,14 @@ export type SliderTypeMap<
55
56
  defaultComponent: D;
56
57
  }>;
57
58
 
59
+ export { SliderValueLabelProps } from '@mui/base/SliderUnstyled';
60
+
58
61
  type SliderRootProps = NonNullable<SliderTypeMap['props']['componentsProps']>['root'];
59
62
  type SliderMarkProps = NonNullable<SliderTypeMap['props']['componentsProps']>['mark'];
60
63
  type SliderMarkLabelProps = NonNullable<SliderTypeMap['props']['componentsProps']>['markLabel'];
61
64
  type SliderRailProps = NonNullable<SliderTypeMap['props']['componentsProps']>['rail'];
62
65
  type SliderTrackProps = NonNullable<SliderTypeMap['props']['componentsProps']>['track'];
63
66
  type SliderThumbProps = NonNullable<SliderTypeMap['props']['componentsProps']>['thumb'];
64
- type SliderValueLabelProps = NonNullable<SliderTypeMap['props']['componentsProps']>['valueLabel'];
65
67
  type SliderInputProps = NonNullable<SliderTypeMap['props']['componentsProps']>['input'];
66
68
 
67
69
  export const SliderRoot: React.FC<SliderRootProps>;
package/Slider/Slider.js CHANGED
@@ -587,12 +587,14 @@ process.env.NODE_ENV !== "production" ? Slider.propTypes
587
587
  thumb: PropTypes.object,
588
588
  track: PropTypes.object,
589
589
  valueLabel: PropTypes.shape({
590
+ children: PropTypes.element,
590
591
  className: PropTypes.string,
591
592
  components: PropTypes.shape({
592
593
  Root: PropTypes.elementType
593
594
  }),
595
+ open: PropTypes.bool,
594
596
  style: PropTypes.object,
595
- value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),
597
+ value: PropTypes.number,
596
598
  valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])
597
599
  })
598
600
  }),
@@ -41,16 +41,11 @@ const SnackbarRoot = styled('div', {
41
41
  theme,
42
42
  ownerState
43
43
  }) => {
44
- const center = _extends({}, !ownerState.isRtl && {
44
+ const center = {
45
45
  left: '50%',
46
46
  right: 'auto',
47
47
  transform: 'translateX(-50%)'
48
- }, ownerState.isRtl && {
49
- right: '50%',
50
- left: 'auto',
51
- transform: 'translateX(50%)'
52
- });
53
-
48
+ };
54
49
  return _extends({
55
50
  zIndex: (theme.vars || theme).zIndex.snackbar,
56
51
  position: 'fixed',
@@ -72,19 +67,13 @@ const SnackbarRoot = styled('div', {
72
67
  top: 24
73
68
  } : {
74
69
  bottom: 24
75
- }, ownerState.anchorOrigin.horizontal === 'center' && center, ownerState.anchorOrigin.horizontal === 'left' && _extends({}, !ownerState.isRtl && {
70
+ }, ownerState.anchorOrigin.horizontal === 'center' && center, ownerState.anchorOrigin.horizontal === 'left' && {
76
71
  left: 24,
77
72
  right: 'auto'
78
- }, ownerState.isRtl && {
73
+ }, ownerState.anchorOrigin.horizontal === 'right' && {
79
74
  right: 24,
80
75
  left: 'auto'
81
- }), ownerState.anchorOrigin.horizontal === 'right' && _extends({}, !ownerState.isRtl && {
82
- right: 24,
83
- left: 'auto'
84
- }, ownerState.isRtl && {
85
- left: 24,
86
- right: 'auto'
87
- }))
76
+ })
88
77
  });
89
78
  });
90
79
  const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
@@ -131,14 +120,11 @@ const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
131
120
  TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),
132
121
  other = _objectWithoutPropertiesLoose(props, _excluded2);
133
122
 
134
- const isRtl = theme.direction === 'rtl';
135
-
136
123
  const ownerState = _extends({}, props, {
137
124
  anchorOrigin: {
138
125
  vertical,
139
126
  horizontal
140
- },
141
- isRtl
127
+ }
142
128
  });
143
129
 
144
130
  const classes = useUtilityClasses(ownerState);
package/Stack/Stack.js CHANGED
@@ -59,7 +59,7 @@ export const style = ({
59
59
  if (ownerState.spacing) {
60
60
  const transformer = createUnarySpacing(theme);
61
61
  const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {
62
- if (ownerState.spacing[breakpoint] != null || ownerState.direction[breakpoint] != null) {
62
+ if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {
63
63
  acc[breakpoint] = true;
64
64
  }
65
65
 
@@ -120,8 +120,9 @@ const StepIcon = /*#__PURE__*/React.forwardRef(function StepIcon(inProps, ref) {
120
120
  })), /*#__PURE__*/_jsx(StepIconText, {
121
121
  className: classes.text,
122
122
  x: "12",
123
- y: "16",
123
+ y: "12",
124
124
  textAnchor: "middle",
125
+ dominantBaseline: "central",
125
126
  ownerState: ownerState,
126
127
  children: icon
127
128
  })]
package/Tab/Tab.d.ts CHANGED
@@ -30,7 +30,6 @@ export type TabTypeMap<P = {}, D extends React.ElementType = 'div'> = ExtendButt
30
30
  * The icon to display.
31
31
  */
32
32
  icon?: string | React.ReactElement;
33
-
34
33
  /**
35
34
  * The position of the icon relative to the label.
36
35
  * @default 'top'
package/Tabs/Tabs.js CHANGED
@@ -417,10 +417,26 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
417
417
  scroll(scrollValue);
418
418
  };
419
419
 
420
+ const getFirstVisibleTab = tabs => {
421
+ const containerSize = tabsRef.current[clientSize];
422
+ const containerStartBound = Math.round(tabsRef.current[scrollStart]);
423
+ const containerEndBound = Math.round(containerStartBound + containerSize);
424
+ const offset = vertical ? 'offsetTop' : 'offsetLeft';
425
+ return tabs.find(tab => {
426
+ const centerPoint = tab[offset] + tab[clientSize] / 2;
427
+ return centerPoint >= containerStartBound && centerPoint <= containerEndBound;
428
+ });
429
+ };
430
+
420
431
  const getScrollSize = () => {
421
432
  const containerSize = tabsRef.current[clientSize];
422
433
  let totalSize = 0;
423
434
  const children = Array.from(tabListRef.current.children);
435
+ const firstVisibleTab = getFirstVisibleTab(children);
436
+
437
+ if (firstVisibleTab && firstVisibleTab[clientSize] > containerSize) {
438
+ return firstVisibleTab[clientSize];
439
+ }
424
440
 
425
441
  for (let i = 0; i < children.length; i += 1) {
426
442
  const tab = children[i];
package/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
- var 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
+ var 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;
@@ -21,6 +21,7 @@ import { unstable_composeClasses as composeClasses } from '@mui/base';
21
21
  import requirePropFactory from '../utils/requirePropFactory';
22
22
  import styled from '../styles/styled';
23
23
  import useThemeProps from '../styles/useThemeProps';
24
+ import useTheme from '../styles/useTheme';
24
25
  import GridContext from './GridContext';
25
26
  import gridClasses, { getGridUtilityClass } from './gridClasses';
26
27
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -193,26 +194,29 @@ export function generateColumnGap(_ref5) {
193
194
 
194
195
  return styles;
195
196
  }
196
- export function resolveSpacingClasses(spacing, container) {
197
+ export function resolveSpacingStyles(spacing, breakpoints) {
197
198
  var styles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
198
199
 
199
- // in case of grid item or undefined/null or `spacing` <= 0
200
- if (!container || !spacing || spacing <= 0) {
200
+ // undefined/null or `spacing` <= 0
201
+ if (!spacing || spacing <= 0) {
201
202
  return [];
202
203
  } // in case of string/number `spacing`
203
204
 
204
205
 
205
206
  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {
206
- return [styles["spacing-xs-".concat(String(spacing))] || "spacing-xs-".concat(String(spacing))];
207
+ return [styles["spacing-xs-".concat(String(spacing))]];
207
208
  } // in case of object `spacing`
208
209
 
209
210
 
210
- var xs = spacing.xs,
211
- sm = spacing.sm,
212
- md = spacing.md,
213
- lg = spacing.lg,
214
- xl = spacing.xl;
215
- return [Number(xs) > 0 && (styles["spacing-xs-".concat(String(xs))] || "spacing-xs-".concat(String(xs))), Number(sm) > 0 && (styles["spacing-sm-".concat(String(sm))] || "spacing-sm-".concat(String(sm))), Number(md) > 0 && (styles["spacing-md-".concat(String(md))] || "spacing-md-".concat(String(md))), Number(lg) > 0 && (styles["spacing-lg-".concat(String(lg))] || "spacing-lg-".concat(String(lg))), Number(xl) > 0 && (styles["spacing-xl-".concat(String(xl))] || "spacing-xl-".concat(String(xl)))];
211
+ var spacingStyles = [];
212
+ breakpoints.forEach(function (breakpoint) {
213
+ var value = spacing[breakpoint];
214
+
215
+ if (Number(value) > 0) {
216
+ spacingStyles.push(styles["spacing-".concat(breakpoint, "-").concat(String(value))]);
217
+ }
218
+ });
219
+ return spacingStyles;
216
220
  } // Default CSS values
217
221
  // flex: '0 1 auto',
218
222
  // flexDirection: 'row',
@@ -224,19 +228,29 @@ var GridRoot = styled('div', {
224
228
  name: 'MuiGrid',
225
229
  slot: 'Root',
226
230
  overridesResolver: function overridesResolver(props, styles) {
227
- var _props$ownerState = props.ownerState,
228
- container = _props$ownerState.container,
229
- direction = _props$ownerState.direction,
230
- item = _props$ownerState.item,
231
- lg = _props$ownerState.lg,
232
- md = _props$ownerState.md,
233
- sm = _props$ownerState.sm,
234
- spacing = _props$ownerState.spacing,
235
- wrap = _props$ownerState.wrap,
236
- xl = _props$ownerState.xl,
237
- xs = _props$ownerState.xs,
238
- zeroMinWidth = _props$ownerState.zeroMinWidth;
239
- return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth].concat(_toConsumableArray(resolveSpacingClasses(spacing, container, styles)), [direction !== 'row' && styles["direction-xs-".concat(String(direction))], wrap !== 'wrap' && styles["wrap-xs-".concat(String(wrap))], xs !== false && styles["grid-xs-".concat(String(xs))], sm !== false && styles["grid-sm-".concat(String(sm))], md !== false && styles["grid-md-".concat(String(md))], lg !== false && styles["grid-lg-".concat(String(lg))], xl !== false && styles["grid-xl-".concat(String(xl))]]);
231
+ var ownerState = props.ownerState;
232
+ var container = ownerState.container,
233
+ direction = ownerState.direction,
234
+ item = ownerState.item,
235
+ spacing = ownerState.spacing,
236
+ wrap = ownerState.wrap,
237
+ zeroMinWidth = ownerState.zeroMinWidth,
238
+ breakpoints = ownerState.breakpoints;
239
+ var spacingStyles = []; // in case of grid item
240
+
241
+ if (container) {
242
+ spacingStyles = resolveSpacingStyles(spacing, breakpoints, styles);
243
+ }
244
+
245
+ var breakpointsStyles = [];
246
+ breakpoints.forEach(function (breakpoint) {
247
+ var value = ownerState[breakpoint];
248
+
249
+ if (value) {
250
+ breakpointsStyles.push(styles["grid-".concat(breakpoint, "-").concat(String(value))]);
251
+ }
252
+ });
253
+ return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth].concat(_toConsumableArray(spacingStyles), [direction !== 'row' && styles["direction-xs-".concat(String(direction))], wrap !== 'wrap' && styles["wrap-xs-".concat(String(wrap))]], breakpointsStyles);
240
254
  }
241
255
  })(function (_ref7) {
242
256
  var ownerState = _ref7.ownerState;
@@ -255,22 +269,55 @@ var GridRoot = styled('div', {
255
269
  flexWrap: ownerState.wrap
256
270
  });
257
271
  }, generateDirection, generateRowGap, generateColumnGap, generateGrid);
272
+ export function resolveSpacingClasses(spacing, breakpoints) {
273
+ // undefined/null or `spacing` <= 0
274
+ if (!spacing || spacing <= 0) {
275
+ return [];
276
+ } // in case of string/number `spacing`
277
+
278
+
279
+ if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {
280
+ return ["spacing-xs-".concat(String(spacing))];
281
+ } // in case of object `spacing`
282
+
283
+
284
+ var classes = [];
285
+ breakpoints.forEach(function (breakpoint) {
286
+ var value = spacing[breakpoint];
287
+
288
+ if (Number(value) > 0) {
289
+ var className = "spacing-".concat(breakpoint, "-").concat(String(value));
290
+ classes.push(className);
291
+ }
292
+ });
293
+ return classes;
294
+ }
258
295
 
259
296
  var useUtilityClasses = function useUtilityClasses(ownerState) {
260
297
  var classes = ownerState.classes,
261
298
  container = ownerState.container,
262
299
  direction = ownerState.direction,
263
300
  item = ownerState.item,
264
- lg = ownerState.lg,
265
- md = ownerState.md,
266
- sm = ownerState.sm,
267
301
  spacing = ownerState.spacing,
268
302
  wrap = ownerState.wrap,
269
- xl = ownerState.xl,
270
- xs = ownerState.xs,
271
- zeroMinWidth = ownerState.zeroMinWidth;
303
+ zeroMinWidth = ownerState.zeroMinWidth,
304
+ breakpoints = ownerState.breakpoints;
305
+ var spacingClasses = []; // in case of grid item
306
+
307
+ if (container) {
308
+ spacingClasses = resolveSpacingClasses(spacing, breakpoints);
309
+ }
310
+
311
+ var breakpointsClasses = [];
312
+ breakpoints.forEach(function (breakpoint) {
313
+ var value = ownerState[breakpoint];
314
+
315
+ if (value) {
316
+ breakpointsClasses.push("grid-".concat(breakpoint, "-").concat(String(value)));
317
+ }
318
+ });
272
319
  var slots = {
273
- root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth'].concat(_toConsumableArray(resolveSpacingClasses(spacing, container)), [direction !== 'row' && "direction-xs-".concat(String(direction)), wrap !== 'wrap' && "wrap-xs-".concat(String(wrap)), xs !== false && "grid-xs-".concat(String(xs)), sm !== false && "grid-sm-".concat(String(sm)), md !== false && "grid-md-".concat(String(md)), lg !== false && "grid-lg-".concat(String(lg)), xl !== false && "grid-xl-".concat(String(xl))])
320
+ root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth'].concat(_toConsumableArray(spacingClasses), [direction !== 'row' && "direction-xs-".concat(String(direction)), wrap !== 'wrap' && "wrap-xs-".concat(String(wrap))], breakpointsClasses)
274
321
  };
275
322
  return composeClasses(slots, getGridUtilityClass, classes);
276
323
  };
@@ -280,6 +327,10 @@ var Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
280
327
  props: inProps,
281
328
  name: 'MuiGrid'
282
329
  });
330
+
331
+ var _useTheme = useTheme(),
332
+ breakpoints = _useTheme.breakpoints;
333
+
283
334
  var props = extendSxProp(themeProps);
284
335
 
285
336
  var className = props.className,
@@ -293,45 +344,43 @@ var Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
293
344
  direction = _props$direction === void 0 ? 'row' : _props$direction,
294
345
  _props$item = props.item,
295
346
  item = _props$item === void 0 ? false : _props$item,
296
- _props$lg = props.lg,
297
- lg = _props$lg === void 0 ? false : _props$lg,
298
- _props$md = props.md,
299
- md = _props$md === void 0 ? false : _props$md,
300
347
  rowSpacingProp = props.rowSpacing,
301
- _props$sm = props.sm,
302
- sm = _props$sm === void 0 ? false : _props$sm,
303
348
  _props$spacing = props.spacing,
304
349
  spacing = _props$spacing === void 0 ? 0 : _props$spacing,
305
350
  _props$wrap = props.wrap,
306
351
  wrap = _props$wrap === void 0 ? 'wrap' : _props$wrap,
307
- _props$xl = props.xl,
308
- xl = _props$xl === void 0 ? false : _props$xl,
309
- _props$xs = props.xs,
310
- xs = _props$xs === void 0 ? false : _props$xs,
311
352
  _props$zeroMinWidth = props.zeroMinWidth,
312
353
  zeroMinWidth = _props$zeroMinWidth === void 0 ? false : _props$zeroMinWidth,
313
- other = _objectWithoutProperties(props, ["className", "columns", "columnSpacing", "component", "container", "direction", "item", "lg", "md", "rowSpacing", "sm", "spacing", "wrap", "xl", "xs", "zeroMinWidth"]);
354
+ other = _objectWithoutProperties(props, ["className", "columns", "columnSpacing", "component", "container", "direction", "item", "rowSpacing", "spacing", "wrap", "zeroMinWidth"]);
314
355
 
315
356
  var rowSpacing = rowSpacingProp || spacing;
316
357
  var columnSpacing = columnSpacingProp || spacing;
317
358
  var columnsContext = React.useContext(GridContext); // columns set with default breakpoint unit of 12
318
359
 
319
360
  var columns = container ? columnsProp || 12 : columnsContext;
361
+ var breakpointsValues = {};
362
+
363
+ var otherFiltered = _extends({}, other);
364
+
365
+ breakpoints.keys.forEach(function (breakpoint) {
366
+ if (other[breakpoint] != null) {
367
+ breakpointsValues[breakpoint] = other[breakpoint];
368
+ delete otherFiltered[breakpoint];
369
+ }
370
+ });
320
371
 
321
372
  var ownerState = _extends({}, props, {
322
373
  columns: columns,
323
374
  container: container,
324
375
  direction: direction,
325
376
  item: item,
326
- lg: lg,
327
- md: md,
328
- sm: sm,
329
377
  rowSpacing: rowSpacing,
330
378
  columnSpacing: columnSpacing,
331
379
  wrap: wrap,
332
- xl: xl,
333
- xs: xs,
334
- zeroMinWidth: zeroMinWidth
380
+ zeroMinWidth: zeroMinWidth,
381
+ spacing: spacing
382
+ }, breakpointsValues, {
383
+ breakpoints: breakpoints.keys
335
384
  });
336
385
 
337
386
  var classes = useUtilityClasses(ownerState);
@@ -342,7 +391,7 @@ var Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
342
391
  className: clsx(classes.root, className),
343
392
  as: component,
344
393
  ref: ref
345
- }, other))
394
+ }, otherFiltered))
346
395
  });
347
396
  });
348
397
  process.env.NODE_ENV !== "production" ? Grid.propTypes
@@ -26,10 +26,9 @@ var styles = {
26
26
  /*
27
27
  TODO v6: remove
28
28
  Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.
29
- Remove this workaround once the WebKit bug fix is released.
30
29
  */
31
30
 
32
- var isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\/)15(.|_)[4-9]/i.test(navigator.userAgent);
31
+ var isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\/)15(.|_)4/i.test(navigator.userAgent);
33
32
  /**
34
33
  * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and
35
34
  * [Popover](/material-ui/react-popover/) components.
@@ -4,7 +4,6 @@ import * as React from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import { getDisplayName } from '@mui/utils';
6
6
  import { getThemeProps } from '@mui/system';
7
- import hoistNonReactStatics from 'hoist-non-react-statics';
8
7
  import useTheme from '../styles/useTheme';
9
8
  import useEnhancedEffect from '../utils/useEnhancedEffect';
10
9
  import useMediaQuery from '../useMediaQuery';
@@ -119,7 +118,6 @@ var withWidth = function withWidth() {
119
118
  WithWidth.displayName = "WithWidth(".concat(getDisplayName(Component), ")");
120
119
  }
121
120
 
122
- hoistNonReactStatics(WithWidth, Component);
123
121
  return WithWidth;
124
122
  };
125
123
  };