@mui/material 5.3.1 → 5.4.3

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 (201) hide show
  1. package/Autocomplete/Autocomplete.d.ts +5 -0
  2. package/Autocomplete/Autocomplete.js +11 -3
  3. package/AvatarGroup/AvatarGroup.d.ts +10 -0
  4. package/AvatarGroup/AvatarGroup.js +19 -7
  5. package/Badge/Badge.js +3 -2
  6. package/Breadcrumbs/BreadcrumbCollapsed.js +1 -3
  7. package/ButtonBase/ButtonBase.d.ts +5 -1
  8. package/ButtonBase/ButtonBase.js +15 -2
  9. package/ButtonBase/TouchRipple.js +1 -2
  10. package/CHANGELOG.md +295 -27
  11. package/Dialog/Dialog.d.ts +4 -1
  12. package/Dialog/Dialog.js +10 -6
  13. package/Drawer/Drawer.d.ts +4 -1
  14. package/Drawer/Drawer.js +11 -9
  15. package/Fab/Fab.d.ts +4 -1
  16. package/Fab/Fab.js +8 -20
  17. package/Fab/fabClasses.js +1 -1
  18. package/Fade/Fade.d.ts +2 -2
  19. package/Fade/Fade.js +8 -8
  20. package/FormControlLabel/FormControlLabel.js +11 -3
  21. package/FormControlLabel/formControlLabelClasses.d.ts +2 -0
  22. package/FormControlLabel/formControlLabelClasses.js +1 -1
  23. package/FormGroup/FormGroup.js +14 -3
  24. package/FormGroup/formGroupClasses.d.ts +2 -0
  25. package/FormGroup/formGroupClasses.js +1 -1
  26. package/FormHelperText/FormHelperText.js +7 -9
  27. package/Grid/Grid.js +2 -4
  28. package/ImageList/ImageList.js +3 -1
  29. package/InputAdornment/InputAdornment.js +6 -9
  30. package/Modal/Modal.js +1 -1
  31. package/OutlinedInput/NotchedOutline.js +14 -16
  32. package/OutlinedInput/OutlinedInput.js +1 -1
  33. package/README.md +6 -6
  34. package/Radio/RadioButtonIcon.js +2 -6
  35. package/Rating/Rating.js +1 -1
  36. package/Select/Select.js +19 -7
  37. package/Select/SelectInput.js +12 -10
  38. package/Slide/Slide.d.ts +4 -4
  39. package/Slide/Slide.js +14 -14
  40. package/Slider/Slider.js +3 -1
  41. package/Snackbar/Snackbar.d.ts +2 -2
  42. package/Snackbar/Snackbar.js +12 -9
  43. package/SpeedDial/SpeedDial.d.ts +2 -2
  44. package/SpeedDial/SpeedDial.js +9 -7
  45. package/Step/StepContext.d.ts +20 -0
  46. package/Step/StepContext.js +10 -2
  47. package/Step/index.d.ts +3 -0
  48. package/Step/index.js +3 -1
  49. package/SwipeableDrawer/SwipeArea.js +1 -3
  50. package/SwipeableDrawer/SwipeableDrawer.js +8 -6
  51. package/TextField/TextField.js +1 -1
  52. package/ToggleButton/ToggleButton.d.ts +15 -0
  53. package/ToggleButton/ToggleButton.js +8 -2
  54. package/Zoom/Zoom.d.ts +2 -2
  55. package/Zoom/Zoom.js +8 -8
  56. package/index.d.ts +11 -3
  57. package/index.js +8 -3
  58. package/internal/SwitchBase.js +2 -6
  59. package/legacy/Autocomplete/Autocomplete.js +12 -3
  60. package/legacy/AvatarGroup/AvatarGroup.js +20 -7
  61. package/legacy/Badge/Badge.js +4 -2
  62. package/legacy/Breadcrumbs/BreadcrumbCollapsed.js +1 -3
  63. package/legacy/ButtonBase/ButtonBase.js +15 -2
  64. package/legacy/ButtonBase/TouchRipple.js +1 -2
  65. package/legacy/Dialog/Dialog.js +10 -6
  66. package/legacy/Drawer/Drawer.js +11 -9
  67. package/legacy/Fab/Fab.js +8 -20
  68. package/legacy/Fab/fabClasses.js +1 -1
  69. package/legacy/Fade/Fade.js +8 -8
  70. package/legacy/FormControlLabel/FormControlLabel.js +11 -3
  71. package/legacy/FormControlLabel/formControlLabelClasses.js +1 -1
  72. package/legacy/FormGroup/FormGroup.js +14 -3
  73. package/legacy/FormGroup/formGroupClasses.js +1 -1
  74. package/legacy/FormHelperText/FormHelperText.js +7 -9
  75. package/legacy/Grid/Grid.js +2 -4
  76. package/legacy/ImageList/ImageList.js +3 -1
  77. package/legacy/InputAdornment/InputAdornment.js +6 -9
  78. package/legacy/Modal/Modal.js +1 -1
  79. package/legacy/OutlinedInput/NotchedOutline.js +14 -16
  80. package/legacy/OutlinedInput/OutlinedInput.js +1 -1
  81. package/legacy/Radio/RadioButtonIcon.js +2 -6
  82. package/legacy/Rating/Rating.js +1 -1
  83. package/legacy/Select/Select.js +23 -7
  84. package/legacy/Select/SelectInput.js +12 -10
  85. package/legacy/Slide/Slide.js +14 -14
  86. package/legacy/Slider/Slider.js +3 -1
  87. package/legacy/Snackbar/Snackbar.js +12 -9
  88. package/legacy/SpeedDial/SpeedDial.js +9 -7
  89. package/legacy/Step/StepContext.js +10 -2
  90. package/legacy/Step/index.js +3 -1
  91. package/legacy/SwipeableDrawer/SwipeArea.js +1 -3
  92. package/legacy/SwipeableDrawer/SwipeableDrawer.js +8 -6
  93. package/legacy/TextField/TextField.js +1 -1
  94. package/legacy/ToggleButton/ToggleButton.js +8 -2
  95. package/legacy/Zoom/Zoom.js +8 -8
  96. package/legacy/index.js +8 -3
  97. package/legacy/internal/SwitchBase.js +2 -6
  98. package/legacy/locale/index.js +86 -78
  99. package/legacy/styles/makeStyles.js +1 -1
  100. package/legacy/styles/withStyles.js +1 -1
  101. package/legacy/styles/withTheme.js +1 -1
  102. package/legacy/useMediaQuery/useMediaQuery.js +87 -32
  103. package/locale/index.js +12 -6
  104. package/modern/Autocomplete/Autocomplete.js +11 -3
  105. package/modern/AvatarGroup/AvatarGroup.js +17 -7
  106. package/modern/Badge/Badge.js +3 -2
  107. package/modern/Breadcrumbs/BreadcrumbCollapsed.js +1 -3
  108. package/modern/ButtonBase/ButtonBase.js +15 -2
  109. package/modern/ButtonBase/TouchRipple.js +1 -2
  110. package/modern/Dialog/Dialog.js +10 -6
  111. package/modern/Drawer/Drawer.js +11 -9
  112. package/modern/Fab/Fab.js +8 -20
  113. package/modern/Fab/fabClasses.js +1 -1
  114. package/modern/Fade/Fade.js +8 -8
  115. package/modern/FormControlLabel/FormControlLabel.js +11 -3
  116. package/modern/FormControlLabel/formControlLabelClasses.js +1 -1
  117. package/modern/FormGroup/FormGroup.js +14 -3
  118. package/modern/FormGroup/formGroupClasses.js +1 -1
  119. package/modern/FormHelperText/FormHelperText.js +7 -9
  120. package/modern/Grid/Grid.js +2 -4
  121. package/modern/ImageList/ImageList.js +3 -1
  122. package/modern/InputAdornment/InputAdornment.js +6 -9
  123. package/modern/Modal/Modal.js +1 -1
  124. package/modern/OutlinedInput/NotchedOutline.js +14 -16
  125. package/modern/OutlinedInput/OutlinedInput.js +1 -1
  126. package/modern/Radio/RadioButtonIcon.js +2 -6
  127. package/modern/Rating/Rating.js +1 -1
  128. package/modern/Select/Select.js +19 -7
  129. package/modern/Select/SelectInput.js +12 -10
  130. package/modern/Slide/Slide.js +14 -14
  131. package/modern/Slider/Slider.js +3 -1
  132. package/modern/Snackbar/Snackbar.js +12 -9
  133. package/modern/SpeedDial/SpeedDial.js +9 -7
  134. package/modern/Step/StepContext.js +10 -2
  135. package/modern/Step/index.js +3 -1
  136. package/modern/SwipeableDrawer/SwipeArea.js +1 -3
  137. package/modern/SwipeableDrawer/SwipeableDrawer.js +8 -6
  138. package/modern/TextField/TextField.js +1 -1
  139. package/modern/ToggleButton/ToggleButton.js +8 -2
  140. package/modern/Zoom/Zoom.js +8 -8
  141. package/modern/index.js +8 -3
  142. package/modern/internal/SwitchBase.js +2 -6
  143. package/modern/locale/index.js +12 -6
  144. package/modern/styles/makeStyles.js +1 -1
  145. package/modern/styles/withStyles.js +1 -1
  146. package/modern/styles/withTheme.js +1 -1
  147. package/modern/useMediaQuery/useMediaQuery.js +69 -27
  148. package/node/Autocomplete/Autocomplete.js +11 -3
  149. package/node/AvatarGroup/AvatarGroup.js +19 -7
  150. package/node/Badge/Badge.js +3 -2
  151. package/node/Breadcrumbs/BreadcrumbCollapsed.js +1 -3
  152. package/node/ButtonBase/ButtonBase.js +15 -2
  153. package/node/ButtonBase/TouchRipple.js +1 -2
  154. package/node/Dialog/Dialog.js +11 -7
  155. package/node/Drawer/Drawer.js +11 -10
  156. package/node/Fab/Fab.js +8 -20
  157. package/node/Fab/fabClasses.js +1 -1
  158. package/node/Fade/Fade.js +7 -9
  159. package/node/FormControlLabel/FormControlLabel.js +12 -3
  160. package/node/FormControlLabel/formControlLabelClasses.js +1 -1
  161. package/node/FormGroup/FormGroup.js +15 -3
  162. package/node/FormGroup/formGroupClasses.js +1 -1
  163. package/node/FormHelperText/FormHelperText.js +6 -9
  164. package/node/Grid/Grid.js +2 -4
  165. package/node/ImageList/ImageList.js +3 -1
  166. package/node/InputAdornment/InputAdornment.js +5 -9
  167. package/node/Modal/Modal.js +1 -1
  168. package/node/OutlinedInput/NotchedOutline.js +12 -16
  169. package/node/OutlinedInput/OutlinedInput.js +1 -1
  170. package/node/Radio/RadioButtonIcon.js +2 -6
  171. package/node/Rating/Rating.js +1 -1
  172. package/node/Select/Select.js +22 -9
  173. package/node/Select/SelectInput.js +11 -10
  174. package/node/Slide/Slide.js +14 -16
  175. package/node/Slider/Slider.js +3 -1
  176. package/node/Snackbar/Snackbar.js +12 -10
  177. package/node/SpeedDial/SpeedDial.js +9 -7
  178. package/node/Step/StepContext.js +11 -1
  179. package/node/Step/index.js +22 -1
  180. package/node/SwipeableDrawer/SwipeArea.js +1 -3
  181. package/node/SwipeableDrawer/SwipeableDrawer.js +8 -7
  182. package/node/TextField/TextField.js +1 -1
  183. package/node/ToggleButton/ToggleButton.js +8 -2
  184. package/node/Zoom/Zoom.js +7 -9
  185. package/node/index.js +62 -16
  186. package/node/internal/SwitchBase.js +2 -6
  187. package/node/locale/index.js +12 -6
  188. package/node/styles/makeStyles.js +1 -1
  189. package/node/styles/withStyles.js +1 -1
  190. package/node/styles/withTheme.js +1 -1
  191. package/node/useMediaQuery/useMediaQuery.js +69 -27
  192. package/package.json +8 -8
  193. package/styles/ThemeProvider.d.ts +1 -1
  194. package/styles/index.d.ts +3 -0
  195. package/styles/makeStyles.js +1 -1
  196. package/styles/withStyles.js +1 -1
  197. package/styles/withTheme.js +1 -1
  198. package/umd/material-ui.development.js +5022 -7146
  199. package/umd/material-ui.production.min.js +21 -21
  200. package/useMediaQuery/useMediaQuery.d.ts +4 -0
  201. package/useMediaQuery/useMediaQuery.js +69 -27
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["action", "centerRipple", "children", "className", "component", "disabled", "disableRipple", "disableTouchRipple", "focusRipple", "focusVisibleClassName", "LinkComponent", "onBlur", "onClick", "onContextMenu", "onDragLeave", "onFocus", "onFocusVisible", "onKeyDown", "onKeyUp", "onMouseDown", "onMouseLeave", "onMouseUp", "onTouchEnd", "onTouchMove", "onTouchStart", "tabIndex", "TouchRippleProps", "type"];
3
+ const _excluded = ["action", "centerRipple", "children", "className", "component", "disabled", "disableRipple", "disableTouchRipple", "focusRipple", "focusVisibleClassName", "LinkComponent", "onBlur", "onClick", "onContextMenu", "onDragLeave", "onFocus", "onFocusVisible", "onKeyDown", "onKeyUp", "onMouseDown", "onMouseLeave", "onMouseUp", "onTouchEnd", "onTouchMove", "onTouchStart", "tabIndex", "TouchRippleProps", "touchRippleRef", "type"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
@@ -118,12 +118,14 @@ const ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, re
118
118
  onTouchStart,
119
119
  tabIndex = 0,
120
120
  TouchRippleProps,
121
+ touchRippleRef,
121
122
  type
122
123
  } = props,
123
124
  other = _objectWithoutPropertiesLoose(props, _excluded);
124
125
 
125
126
  const buttonRef = React.useRef(null);
126
127
  const rippleRef = React.useRef(null);
128
+ const handleRippleRef = useForkRef(rippleRef, touchRippleRef);
127
129
  const {
128
130
  isFocusVisibleRef,
129
131
  onFocus: handleFocusVisible,
@@ -343,7 +345,7 @@ const ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, re
343
345
 
344
346
  /* TouchRipple is only needed client-side, x2 boost on the server. */
345
347
  _jsx(TouchRipple, _extends({
346
- ref: rippleRef,
348
+ ref: handleRippleRef,
347
349
  center: centerRipple
348
350
  }, TouchRippleProps)) : null]
349
351
  }));
@@ -526,6 +528,17 @@ process.env.NODE_ENV !== "production" ? ButtonBase.propTypes
526
528
  */
527
529
  TouchRippleProps: PropTypes.object,
528
530
 
531
+ /**
532
+ * A ref that points to the `TouchRipple` element.
533
+ */
534
+ touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
535
+ current: PropTypes.shape({
536
+ pulsate: PropTypes.func.isRequired,
537
+ start: PropTypes.func.isRequired,
538
+ stop: PropTypes.func.isRequired
539
+ })
540
+ })]),
541
+
529
542
  /**
530
543
  * @ignore
531
544
  */
@@ -48,8 +48,7 @@ const pulsateKeyframe = keyframes`
48
48
  `;
49
49
  export const TouchRippleRoot = styled('span', {
50
50
  name: 'MuiTouchRipple',
51
- slot: 'Root',
52
- skipSx: true
51
+ slot: 'Root'
53
52
  })({
54
53
  overflow: 'hidden',
55
54
  pointerEvents: 'none',
@@ -9,13 +9,13 @@ import { unstable_useId as useId } from '@mui/utils';
9
9
  import capitalize from '../utils/capitalize';
10
10
  import Modal from '../Modal';
11
11
  import Fade from '../Fade';
12
- import { duration } from '../styles/createTransitions';
13
12
  import Paper from '../Paper';
14
13
  import useThemeProps from '../styles/useThemeProps';
15
14
  import styled from '../styles/styled';
16
15
  import dialogClasses, { getDialogUtilityClass } from './dialogClasses';
17
16
  import DialogContext from './DialogContext';
18
17
  import Backdrop from '../Backdrop';
18
+ import useTheme from '../styles/useTheme';
19
19
  import { jsx as _jsx } from "react/jsx-runtime";
20
20
  const DialogBackdrop = styled(Backdrop, {
21
21
  name: 'MuiDialog',
@@ -146,10 +146,6 @@ const DialogPaper = styled(Paper, {
146
146
  maxWidth: '100%'
147
147
  }
148
148
  }));
149
- const defaultTransitionDuration = {
150
- enter: duration.enteringScreen,
151
- exit: duration.leavingScreen
152
- };
153
149
  /**
154
150
  * Dialogs are overlaid modal paper based components with a backdrop.
155
151
  */
@@ -159,6 +155,11 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
159
155
  props: inProps,
160
156
  name: 'MuiDialog'
161
157
  });
158
+ const theme = useTheme();
159
+ const defaultTransitionDuration = {
160
+ enter: theme.transitions.duration.enteringScreen,
161
+ exit: theme.transitions.duration.leavingScreen
162
+ };
162
163
 
163
164
  const {
164
165
  'aria-describedby': ariaDescribedby,
@@ -399,7 +400,10 @@ process.env.NODE_ENV !== "production" ? Dialog.propTypes
399
400
  /**
400
401
  * The duration for the transition, in milliseconds.
401
402
  * You may specify a single timeout for all transitions, or individually with an object.
402
- * @default { enter: duration.enteringScreen, exit: duration.leavingScreen }
403
+ * @default {
404
+ * enter: theme.transitions.duration.enteringScreen,
405
+ * exit: theme.transitions.duration.leavingScreen,
406
+ * }
403
407
  */
404
408
  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
405
409
  appear: PropTypes.number,
@@ -11,7 +11,6 @@ import Modal from '../Modal';
11
11
  import Slide from '../Slide';
12
12
  import Paper from '../Paper';
13
13
  import capitalize from '../utils/capitalize';
14
- import { duration } from '../styles/createTransitions';
15
14
  import useTheme from '../styles/useTheme';
16
15
  import useThemeProps from '../styles/useThemeProps';
17
16
  import styled, { rootShouldForwardProp } from '../styles/styled';
@@ -124,10 +123,6 @@ export function isHorizontal(anchor) {
124
123
  export function getAnchor(theme, anchor) {
125
124
  return theme.direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;
126
125
  }
127
- const defaultTransitionDuration = {
128
- enter: duration.enteringScreen,
129
- exit: duration.leavingScreen
130
- };
131
126
  /**
132
127
  * The props of the [Modal](/api/modal/) component are available
133
128
  * when `variant="temporary"` is set.
@@ -138,6 +133,11 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
138
133
  props: inProps,
139
134
  name: 'MuiDrawer'
140
135
  });
136
+ const theme = useTheme();
137
+ const defaultTransitionDuration = {
138
+ enter: theme.transitions.duration.enteringScreen,
139
+ exit: theme.transitions.duration.leavingScreen
140
+ };
141
141
 
142
142
  const {
143
143
  anchor: anchorProp = 'left',
@@ -159,12 +159,11 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
159
159
  variant = 'temporary'
160
160
  } = props,
161
161
  ModalProps = _objectWithoutPropertiesLoose(props.ModalProps, _excluded),
162
- other = _objectWithoutPropertiesLoose(props, _excluded2);
163
-
164
- const theme = useTheme(); // Let's assume that the Drawer will always be rendered on user space.
162
+ other = _objectWithoutPropertiesLoose(props, _excluded2); // Let's assume that the Drawer will always be rendered on user space.
165
163
  // We use this state is order to skip the appear transition during the
166
164
  // initial mount of the component.
167
165
 
166
+
168
167
  const mounted = React.useRef(false);
169
168
  React.useEffect(() => {
170
169
  mounted.current = true;
@@ -318,7 +317,10 @@ process.env.NODE_ENV !== "production" ? Drawer.propTypes
318
317
  /**
319
318
  * The duration for the transition, in milliseconds.
320
319
  * You may specify a single timeout for all transitions, or individually with an object.
321
- * @default { enter: duration.enteringScreen, exit: duration.leavingScreen }
320
+ * @default {
321
+ * enter: theme.transitions.duration.enteringScreen,
322
+ * exit: theme.transitions.duration.leavingScreen,
323
+ * }
322
324
  */
323
325
  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
324
326
  appear: PropTypes.number,
package/modern/Fab/Fab.js CHANGED
@@ -20,7 +20,7 @@ const useUtilityClasses = ownerState => {
20
20
  size
21
21
  } = ownerState;
22
22
  const slots = {
23
- root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' && 'colorInherit', color === 'primary' && 'primary', color === 'secondary' && 'secondary']
23
+ root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]
24
24
  };
25
25
  return composeClasses(slots, getFabUtilityClass, classes);
26
26
  };
@@ -32,7 +32,7 @@ const FabRoot = styled(ButtonBase, {
32
32
  const {
33
33
  ownerState
34
34
  } = props;
35
- return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.color === 'primary' && styles.primary, ownerState.color === 'secondary' && styles.secondary];
35
+ return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, styles[capitalize(ownerState.size)], styles[ownerState.color]];
36
36
  }
37
37
  })(({
38
38
  theme,
@@ -99,24 +99,14 @@ const FabRoot = styled(ButtonBase, {
99
99
  }), ({
100
100
  theme,
101
101
  ownerState
102
- }) => _extends({}, ownerState.color === 'primary' && {
103
- color: theme.palette.primary.contrastText,
104
- backgroundColor: theme.palette.primary.main,
102
+ }) => _extends({}, ownerState.color !== 'inherit' && ownerState.color !== 'default' && theme.palette[ownerState.color] != null && {
103
+ color: theme.palette[ownerState.color].contrastText,
104
+ backgroundColor: theme.palette[ownerState.color].main,
105
105
  '&:hover': {
106
- backgroundColor: theme.palette.primary.dark,
106
+ backgroundColor: theme.palette[ownerState.color].dark,
107
107
  // Reset on touch devices, it doesn't add specificity
108
108
  '@media (hover: none)': {
109
- backgroundColor: theme.palette.primary.main
110
- }
111
- }
112
- }, ownerState.color === 'secondary' && {
113
- color: theme.palette.secondary.contrastText,
114
- backgroundColor: theme.palette.secondary.main,
115
- '&:hover': {
116
- backgroundColor: theme.palette.secondary.dark,
117
- // Reset on touch devices, it doesn't add specificity
118
- '@media (hover: none)': {
119
- backgroundColor: theme.palette.secondary.main
109
+ backgroundColor: theme.palette[ownerState.color].main
120
110
  }
121
111
  }
122
112
  }));
@@ -188,9 +178,7 @@ process.env.NODE_ENV !== "production" ? Fab.propTypes
188
178
  * The color of the component. It supports those theme colors that make sense for this component.
189
179
  * @default 'default'
190
180
  */
191
- color: PropTypes
192
- /* @typescript-to-proptypes-ignore */
193
- .oneOfType([PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary']), PropTypes.string]),
181
+ color: PropTypes.oneOf(['default', 'error', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']),
194
182
 
195
183
  /**
196
184
  * The component used for the root node.
@@ -2,5 +2,5 @@ import { generateUtilityClass, generateUtilityClasses } from '@mui/base';
2
2
  export function getFabUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiFab', slot);
4
4
  }
5
- const fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge']);
5
+ const fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);
6
6
  export default fabClasses;
@@ -5,7 +5,6 @@ import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { Transition } from 'react-transition-group';
7
7
  import { elementAcceptingRef } from '@mui/utils';
8
- import { duration } from '../styles/createTransitions';
9
8
  import useTheme from '../styles/useTheme';
10
9
  import { reflow, getTransitionProps } from '../transitions/utils';
11
10
  import useForkRef from '../utils/useForkRef';
@@ -18,16 +17,18 @@ const styles = {
18
17
  opacity: 1
19
18
  }
20
19
  };
21
- const defaultTimeout = {
22
- enter: duration.enteringScreen,
23
- exit: duration.leavingScreen
24
- };
25
20
  /**
26
21
  * The Fade transition is used by the [Modal](/components/modal/) component.
27
22
  * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.
28
23
  */
29
24
 
30
25
  const Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {
26
+ const theme = useTheme();
27
+ const defaultTimeout = {
28
+ enter: theme.transitions.duration.enteringScreen,
29
+ exit: theme.transitions.duration.leavingScreen
30
+ };
31
+
31
32
  const {
32
33
  addEndListener,
33
34
  appear = true,
@@ -47,7 +48,6 @@ const Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {
47
48
  } = props,
48
49
  other = _objectWithoutPropertiesLoose(props, _excluded);
49
50
 
50
- const theme = useTheme();
51
51
  const enableStrictModeCompat = true;
52
52
  const nodeRef = React.useRef(null);
53
53
  const foreignRef = useForkRef(children.ref, ref);
@@ -213,8 +213,8 @@ process.env.NODE_ENV !== "production" ? Fade.propTypes
213
213
  * The duration for the transition, in milliseconds.
214
214
  * You may specify a single timeout for all transitions, or individually with an object.
215
215
  * @default {
216
- * enter: duration.enteringScreen,
217
- * exit: duration.leavingScreen,
216
+ * enter: theme.transitions.duration.enteringScreen,
217
+ * exit: theme.transitions.duration.leavingScreen,
218
218
  * }
219
219
  */
220
220
  timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
@@ -12,6 +12,7 @@ import capitalize from '../utils/capitalize';
12
12
  import styled from '../styles/styled';
13
13
  import useThemeProps from '../styles/useThemeProps';
14
14
  import formControlLabelClasses, { getFormControlLabelUtilityClasses } from './formControlLabelClasses';
15
+ import formControlState from '../FormControl/formControlState';
15
16
  import { jsx as _jsx } from "react/jsx-runtime";
16
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
18
 
@@ -19,10 +20,11 @@ const useUtilityClasses = ownerState => {
19
20
  const {
20
21
  classes,
21
22
  disabled,
22
- labelPlacement
23
+ labelPlacement,
24
+ error
23
25
  } = ownerState;
24
26
  const slots = {
25
- root: ['root', disabled && 'disabled', `labelPlacement${capitalize(labelPlacement)}`],
27
+ root: ['root', disabled && 'disabled', `labelPlacement${capitalize(labelPlacement)}`, error && 'error'],
26
28
  label: ['label', disabled && 'disabled']
27
29
  };
28
30
  return composeClasses(slots, getFormControlLabelUtilityClasses, classes);
@@ -114,11 +116,17 @@ const FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel
114
116
  controlProps[key] = props[key];
115
117
  }
116
118
  });
119
+ const fcs = formControlState({
120
+ props,
121
+ muiFormControl,
122
+ states: ['error']
123
+ });
117
124
 
118
125
  const ownerState = _extends({}, props, {
119
126
  disabled,
120
127
  label,
121
- labelPlacement
128
+ labelPlacement,
129
+ error: fcs.error
122
130
  });
123
131
 
124
132
  const classes = useUtilityClasses(ownerState);
@@ -2,5 +2,5 @@ import { generateUtilityClasses, generateUtilityClass } from '@mui/base';
2
2
  export function getFormControlLabelUtilityClasses(slot) {
3
3
  return generateUtilityClass('MuiFormControlLabel', slot);
4
4
  }
5
- const formControlLabelClasses = generateUtilityClasses('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label']);
5
+ const formControlLabelClasses = generateUtilityClasses('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label', 'error']);
6
6
  export default formControlLabelClasses;
@@ -8,15 +8,18 @@ import { unstable_composeClasses as composeClasses } from '@mui/base';
8
8
  import styled from '../styles/styled';
9
9
  import useThemeProps from '../styles/useThemeProps';
10
10
  import { getFormGroupUtilityClass } from './formGroupClasses';
11
+ import useFormControl from '../FormControl/useFormControl';
12
+ import formControlState from '../FormControl/formControlState';
11
13
  import { jsx as _jsx } from "react/jsx-runtime";
12
14
 
13
15
  const useUtilityClasses = ownerState => {
14
16
  const {
15
17
  classes,
16
- row
18
+ row,
19
+ error
17
20
  } = ownerState;
18
21
  const slots = {
19
- root: ['root', row && 'row']
22
+ root: ['root', row && 'row', error && 'error']
20
23
  };
21
24
  return composeClasses(slots, getFormGroupUtilityClass, classes);
22
25
  };
@@ -57,8 +60,16 @@ const FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(inProps, ref)
57
60
  } = props,
58
61
  other = _objectWithoutPropertiesLoose(props, _excluded);
59
62
 
63
+ const muiFormControl = useFormControl();
64
+ const fcs = formControlState({
65
+ props,
66
+ muiFormControl,
67
+ states: ['error']
68
+ });
69
+
60
70
  const ownerState = _extends({}, props, {
61
- row
71
+ row,
72
+ error: fcs.error
62
73
  });
63
74
 
64
75
  const classes = useUtilityClasses(ownerState);
@@ -2,5 +2,5 @@ import { generateUtilityClass, generateUtilityClasses } from '@mui/base';
2
2
  export function getFormGroupUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiFormGroup', slot);
4
4
  }
5
- const formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row']);
5
+ const formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row', 'error']);
6
6
  export default formGroupClasses;
@@ -1,5 +1,8 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+
4
+ var _span;
5
+
3
6
  const _excluded = ["children", "className", "component", "disabled", "error", "filled", "focused", "margin", "required", "variant"];
4
7
  import * as React from 'react';
5
8
  import PropTypes from 'prop-types';
@@ -101,16 +104,11 @@ const FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inP
101
104
  className: clsx(classes.root, className),
102
105
  ref: ref
103
106
  }, other, {
104
- children: children === ' ' ?
105
- /*#__PURE__*/
106
- // notranslate needed while Google Translate will not fix zero-width space issue
107
- // eslint-disable-next-line react/no-danger
108
- _jsx("span", {
107
+ children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue
108
+ _span || (_span = /*#__PURE__*/_jsx("span", {
109
109
  className: "notranslate",
110
- dangerouslySetInnerHTML: {
111
- __html: '​'
112
- }
113
- }) : children
110
+ children: "\u200B"
111
+ })) : children
114
112
  }));
115
113
  });
116
114
  process.env.NODE_ENV !== "production" ? FormHelperText.propTypes
@@ -260,10 +260,8 @@ const GridRoot = styled('div', {
260
260
 
261
261
  }, ownerState.zeroMinWidth && {
262
262
  minWidth: 0
263
- }, ownerState.wrap === 'nowrap' && {
264
- flexWrap: 'nowrap'
265
- }, ownerState.wrap === 'reverse' && {
266
- flexWrap: 'wrap-reverse'
263
+ }, ownerState.wrap !== 'wrap' && {
264
+ flexWrap: ownerState.wrap
267
265
  }), generateDirection, generateRowGap, generateColumnGap, generateGrid);
268
266
 
269
267
  const useUtilityClasses = ownerState => {
@@ -169,6 +169,8 @@ process.env.NODE_ENV !== "production" ? ImageList.propTypes
169
169
  * The variant to use.
170
170
  * @default 'standard'
171
171
  */
172
- variant: PropTypes.oneOf(['masonry', 'quilted', 'standard', 'woven'])
172
+ variant: PropTypes
173
+ /* @typescript-to-proptypes-ignore */
174
+ .oneOfType([PropTypes.oneOf(['masonry', 'quilted', 'standard', 'woven']), PropTypes.string])
173
175
  } : void 0;
174
176
  export default ImageList;
@@ -1,5 +1,8 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+
4
+ var _span;
5
+
3
6
  const _excluded = ["children", "className", "component", "disablePointerEvents", "disableTypography", "position", "variant"];
4
7
  import * as React from 'react';
5
8
  import PropTypes from 'prop-types';
@@ -121,17 +124,11 @@ const InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inP
121
124
  children: children
122
125
  }) : /*#__PURE__*/_jsxs(React.Fragment, {
123
126
  children: [position === 'start' ?
124
- /*#__PURE__*/
125
-
126
127
  /* notranslate needed while Google Translate will not fix zero-width space issue */
127
-
128
- /* eslint-disable-next-line react/no-danger */
129
- _jsx("span", {
128
+ _span || (_span = /*#__PURE__*/_jsx("span", {
130
129
  className: "notranslate",
131
- dangerouslySetInnerHTML: {
132
- __html: '​'
133
- }
134
- }) : null, children]
130
+ children: "\u200B"
131
+ })) : null, children]
135
132
  })
136
133
  }))
137
134
  });
@@ -226,7 +226,7 @@ process.env.NODE_ENV !== "production" ? Modal.propTypes
226
226
 
227
227
  /**
228
228
  * If `true`, the modal will not restore focus to previously focused element once
229
- * modal is hidden.
229
+ * modal is hidden or unmounted.
230
230
  * @default false
231
231
  */
232
232
  disableRestoreFocus: PropTypes.bool,
@@ -1,5 +1,8 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+
4
+ var _span;
5
+
3
6
  const _excluded = ["children", "classes", "className", "label", "notched"];
4
7
  import * as React from 'react';
5
8
  import PropTypes from 'prop-types';
@@ -21,14 +24,12 @@ const NotchedOutlineRoot = styled('fieldset')({
21
24
  overflow: 'hidden',
22
25
  minWidth: '0%'
23
26
  });
24
- const NotchedOutlineLegend = styled('legend', {
25
- skipSx: true
26
- })(({
27
+ const NotchedOutlineLegend = styled('legend')(({
27
28
  ownerState,
28
29
  theme
29
30
  }) => _extends({
30
31
  float: 'unset'
31
- }, ownerState.label === undefined && {
32
+ }, !ownerState.withLabel && {
32
33
  padding: 0,
33
34
  lineHeight: '11px',
34
35
  // sync with `height` in `legend` styles
@@ -36,7 +37,7 @@ const NotchedOutlineLegend = styled('legend', {
36
37
  duration: 150,
37
38
  easing: theme.transitions.easing.easeOut
38
39
  })
39
- }, ownerState.label !== undefined && _extends({
40
+ }, ownerState.withLabel && _extends({
40
41
  display: 'block',
41
42
  // Fix conflict with normalize.css and sanitize.css
42
43
  width: 'auto',
@@ -77,9 +78,11 @@ export default function NotchedOutline(props) {
77
78
  } = props,
78
79
  other = _objectWithoutPropertiesLoose(props, _excluded);
79
80
 
81
+ const withLabel = label != null && label !== '';
82
+
80
83
  const ownerState = _extends({}, props, {
81
84
  notched,
82
- label
85
+ withLabel
83
86
  });
84
87
 
85
88
  return /*#__PURE__*/_jsx(NotchedOutlineRoot, _extends({
@@ -89,18 +92,13 @@ export default function NotchedOutline(props) {
89
92
  }, other, {
90
93
  children: /*#__PURE__*/_jsx(NotchedOutlineLegend, {
91
94
  ownerState: ownerState,
92
- children: label ? /*#__PURE__*/_jsx("span", {
95
+ children: withLabel ? /*#__PURE__*/_jsx("span", {
93
96
  children: label
94
- }) :
95
- /*#__PURE__*/
96
- // notranslate needed while Google Translate will not fix zero-width space issue
97
- // eslint-disable-next-line react/no-danger
98
- _jsx("span", {
97
+ }) : // notranslate needed while Google Translate will not fix zero-width space issue
98
+ _span || (_span = /*#__PURE__*/_jsx("span", {
99
99
  className: "notranslate",
100
- dangerouslySetInnerHTML: {
101
- __html: '​'
102
- }
103
- })
100
+ children: "\u200B"
101
+ }))
104
102
  })
105
103
  }));
106
104
  }
@@ -136,7 +136,7 @@ const OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inPro
136
136
  }, components),
137
137
  renderSuffix: state => /*#__PURE__*/_jsx(NotchedOutlineRoot, {
138
138
  className: classes.notchedOutline,
139
- label: label && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {
139
+ label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {
140
140
  children: [label, "\xA0", '*']
141
141
  })) : label,
142
142
  notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)
@@ -10,15 +10,11 @@ const RadioButtonIconRoot = styled('span')({
10
10
  position: 'relative',
11
11
  display: 'flex'
12
12
  });
13
- const RadioButtonIconBackground = styled(RadioButtonUncheckedIcon, {
14
- skipSx: true
15
- })({
13
+ const RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({
16
14
  // Scale applied to prevent dot misalignment in Safari
17
15
  transform: 'scale(1)'
18
16
  });
19
- const RadioButtonIconDot = styled(RadioButtonCheckedIcon, {
20
- skipSx: true
21
- })(({
17
+ const RadioButtonIconDot = styled(RadioButtonCheckedIcon)(({
22
18
  theme,
23
19
  ownerState
24
20
  }) => _extends({
@@ -405,7 +405,7 @@ const Rating = /*#__PURE__*/React.forwardRef(function Rating(inProps, ref) {
405
405
 
406
406
  const handleChange = event => {
407
407
  let newValue = event.target.value === '' ? null : parseFloat(event.target.value); // Give mouse priority over keyboard
408
- // Fix https://github.com/mui-org/material-ui/issues/22827
408
+ // Fix https://github.com/mui/material-ui/issues/22827
409
409
 
410
410
  if (hover !== -1) {
411
411
  newValue = hover;