@mui/material 9.0.1 → 9.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/Accordion/Accordion.d.mts +2 -2
  2. package/Accordion/Accordion.d.ts +2 -2
  3. package/Accordion/Accordion.js +3 -2
  4. package/Accordion/Accordion.mjs +3 -2
  5. package/AccordionSummary/AccordionSummary.js +27 -29
  6. package/AccordionSummary/AccordionSummary.mjs +27 -29
  7. package/Autocomplete/Autocomplete.d.mts +5 -1
  8. package/Autocomplete/Autocomplete.d.ts +5 -1
  9. package/Autocomplete/Autocomplete.js +13 -7
  10. package/Autocomplete/Autocomplete.mjs +13 -7
  11. package/Backdrop/Backdrop.d.mts +2 -2
  12. package/Backdrop/Backdrop.d.ts +2 -2
  13. package/Badge/Badge.js +28 -24
  14. package/Badge/Badge.mjs +28 -24
  15. package/BottomNavigationAction/BottomNavigationAction.js +6 -2
  16. package/BottomNavigationAction/BottomNavigationAction.mjs +6 -2
  17. package/Button/Button.js +11 -15
  18. package/Button/Button.mjs +11 -15
  19. package/ButtonBase/Ripple.js +21 -11
  20. package/ButtonBase/Ripple.mjs +21 -11
  21. package/ButtonBase/TouchRipple.js +252 -108
  22. package/ButtonBase/TouchRipple.mjs +253 -109
  23. package/CHANGELOG.md +122 -0
  24. package/CardActionArea/CardActionArea.js +2 -1
  25. package/CardActionArea/CardActionArea.mjs +2 -1
  26. package/Chip/Chip.js +2 -1
  27. package/Chip/Chip.mjs +2 -1
  28. package/CircularProgress/CircularProgress.js +85 -55
  29. package/CircularProgress/CircularProgress.mjs +84 -55
  30. package/Collapse/Collapse.d.mts +15 -3
  31. package/Collapse/Collapse.d.ts +15 -3
  32. package/Collapse/Collapse.js +44 -31
  33. package/Collapse/Collapse.mjs +43 -30
  34. package/Dialog/Dialog.d.mts +2 -2
  35. package/Dialog/Dialog.d.ts +2 -2
  36. package/Dialog/Dialog.js +2 -0
  37. package/Dialog/Dialog.mjs +2 -0
  38. package/Drawer/Drawer.d.mts +2 -2
  39. package/Drawer/Drawer.d.ts +2 -2
  40. package/Fab/Fab.js +2 -1
  41. package/Fab/Fab.mjs +2 -1
  42. package/Fade/Fade.d.mts +15 -2
  43. package/Fade/Fade.d.ts +15 -2
  44. package/Fade/Fade.js +46 -19
  45. package/Fade/Fade.mjs +45 -18
  46. package/FilledInput/FilledInput.js +4 -3
  47. package/FilledInput/FilledInput.mjs +4 -3
  48. package/Grow/Grow.d.mts +15 -2
  49. package/Grow/Grow.d.ts +15 -2
  50. package/Grow/Grow.js +45 -28
  51. package/Grow/Grow.mjs +44 -27
  52. package/IconButton/IconButton.js +2 -1
  53. package/IconButton/IconButton.mjs +2 -1
  54. package/InitColorSchemeScript/InitColorSchemeScript.d.mts +5 -5
  55. package/InitColorSchemeScript/InitColorSchemeScript.d.ts +5 -5
  56. package/Input/Input.js +3 -2
  57. package/Input/Input.mjs +3 -2
  58. package/InputBase/InputBase.js +2 -1
  59. package/InputBase/InputBase.mjs +2 -1
  60. package/InputLabel/InputLabel.js +2 -1
  61. package/InputLabel/InputLabel.mjs +2 -1
  62. package/LICENSE +1 -1
  63. package/LinearProgress/LinearProgress.js +187 -120
  64. package/LinearProgress/LinearProgress.mjs +186 -120
  65. package/ListItem/ListItem.js +2 -1
  66. package/ListItem/ListItem.mjs +2 -1
  67. package/ListItemButton/ListItemButton.js +2 -1
  68. package/ListItemButton/ListItemButton.mjs +2 -1
  69. package/Menu/Menu.d.mts +1 -1
  70. package/Menu/Menu.d.ts +1 -1
  71. package/MobileStepper/MobileStepper.js +2 -1
  72. package/MobileStepper/MobileStepper.mjs +2 -1
  73. package/OutlinedInput/NotchedOutline.js +4 -3
  74. package/OutlinedInput/NotchedOutline.mjs +4 -3
  75. package/PaginationItem/PaginationItem.js +2 -1
  76. package/PaginationItem/PaginationItem.mjs +2 -1
  77. package/Paper/Paper.js +2 -1
  78. package/Paper/Paper.mjs +2 -1
  79. package/Popover/Popover.d.mts +1 -1
  80. package/Popover/Popover.d.ts +1 -1
  81. package/README.md +3 -2
  82. package/Radio/RadioButtonIcon.js +3 -2
  83. package/Radio/RadioButtonIcon.mjs +3 -2
  84. package/Rating/Rating.js +2 -1
  85. package/Rating/Rating.mjs +2 -1
  86. package/Select/SelectInput.js +115 -25
  87. package/Select/SelectInput.mjs +115 -25
  88. package/Select/utils/SelectFocusSourceContext.d.mts +2 -2
  89. package/Select/utils/SelectFocusSourceContext.d.ts +2 -2
  90. package/Select/utils/closedTypeahead.js +73 -0
  91. package/Select/utils/closedTypeahead.mjs +63 -0
  92. package/Skeleton/Skeleton.js +22 -2
  93. package/Skeleton/Skeleton.mjs +22 -2
  94. package/Slide/Slide.d.mts +15 -2
  95. package/Slide/Slide.d.ts +15 -2
  96. package/Slide/Slide.js +53 -25
  97. package/Slide/Slide.mjs +52 -24
  98. package/Slider/Slider.js +4 -3
  99. package/Slider/Slider.mjs +4 -3
  100. package/Slider/SliderValueLabel.d.mts +2 -2
  101. package/Slider/SliderValueLabel.d.ts +2 -2
  102. package/Slider/useSlider.js +1 -1
  103. package/Slider/useSlider.mjs +1 -1
  104. package/Snackbar/Snackbar.d.mts +2 -2
  105. package/Snackbar/Snackbar.d.ts +2 -2
  106. package/SpeedDial/SpeedDial.d.mts +1 -1
  107. package/SpeedDial/SpeedDial.d.ts +1 -1
  108. package/SpeedDial/SpeedDial.js +6 -2
  109. package/SpeedDial/SpeedDial.mjs +6 -2
  110. package/SpeedDialAction/SpeedDialAction.js +11 -2
  111. package/SpeedDialAction/SpeedDialAction.mjs +12 -3
  112. package/SpeedDialIcon/SpeedDialIcon.js +40 -37
  113. package/SpeedDialIcon/SpeedDialIcon.mjs +40 -37
  114. package/Step/Step.js +47 -15
  115. package/Step/Step.mjs +47 -15
  116. package/Step/StepContext.d.mts +1 -1
  117. package/Step/StepContext.d.ts +1 -1
  118. package/StepButton/StepButton.js +9 -3
  119. package/StepButton/StepButton.mjs +9 -3
  120. package/StepConnector/StepConnector.js +10 -0
  121. package/StepConnector/StepConnector.mjs +10 -0
  122. package/StepContent/StepContent.d.mts +2 -2
  123. package/StepContent/StepContent.d.ts +2 -2
  124. package/StepContent/StepContent.js +26 -2
  125. package/StepContent/StepContent.mjs +26 -2
  126. package/StepIcon/StepIcon.js +2 -1
  127. package/StepIcon/StepIcon.mjs +2 -1
  128. package/StepLabel/StepLabel.js +52 -7
  129. package/StepLabel/StepLabel.mjs +52 -7
  130. package/Stepper/Stepper.d.mts +2 -0
  131. package/Stepper/Stepper.d.ts +2 -0
  132. package/Stepper/Stepper.js +18 -0
  133. package/Stepper/Stepper.mjs +18 -0
  134. package/Stepper/StepperContext.d.mts +1 -1
  135. package/Stepper/StepperContext.d.ts +1 -1
  136. package/SvgIcon/SvgIcon.js +2 -1
  137. package/SvgIcon/SvgIcon.mjs +2 -1
  138. package/SwipeableDrawer/SwipeableDrawer.js +14 -3
  139. package/SwipeableDrawer/SwipeableDrawer.mjs +14 -3
  140. package/Switch/Switch.js +3 -2
  141. package/Switch/Switch.mjs +3 -2
  142. package/TableSortLabel/TableSortLabel.js +2 -1
  143. package/TableSortLabel/TableSortLabel.mjs +2 -1
  144. package/Tabs/Tabs.js +14 -3
  145. package/Tabs/Tabs.mjs +14 -3
  146. package/Tooltip/Tooltip.d.mts +2 -2
  147. package/Tooltip/Tooltip.d.ts +2 -2
  148. package/Tooltip/Tooltip.js +3 -0
  149. package/Tooltip/Tooltip.mjs +3 -0
  150. package/Unstable_TrapFocus/FocusTrap.js +42 -8
  151. package/Unstable_TrapFocus/FocusTrap.mjs +42 -8
  152. package/Zoom/Zoom.d.mts +15 -2
  153. package/Zoom/Zoom.d.ts +15 -2
  154. package/Zoom/Zoom.js +43 -16
  155. package/Zoom/Zoom.mjs +42 -15
  156. package/index.js +1 -1
  157. package/index.mjs +1 -1
  158. package/internal/Transition.d.mts +34 -0
  159. package/internal/Transition.d.ts +34 -0
  160. package/internal/Transition.js +450 -0
  161. package/internal/Transition.mjs +442 -0
  162. package/internal/react-transition-group.d.mts +8 -0
  163. package/internal/react-transition-group.d.ts +8 -0
  164. package/package.json +7 -7
  165. package/styles/ThemeProviderWithVars.d.mts +7 -7
  166. package/styles/ThemeProviderWithVars.d.ts +7 -7
  167. package/styles/createGetSelector.d.mts +2 -2
  168. package/styles/createGetSelector.d.ts +2 -2
  169. package/styles/createMotion.d.mts +8 -0
  170. package/styles/createMotion.d.ts +8 -0
  171. package/styles/createMotion.js +13 -0
  172. package/styles/createMotion.mjs +7 -0
  173. package/styles/createThemeFoundation.d.mts +2 -0
  174. package/styles/createThemeFoundation.d.ts +2 -0
  175. package/styles/createThemeNoVars.d.mts +3 -0
  176. package/styles/createThemeNoVars.d.ts +3 -0
  177. package/styles/createThemeNoVars.js +5 -0
  178. package/styles/createThemeNoVars.mjs +5 -0
  179. package/styles/createTransitions.d.mts +6 -2
  180. package/styles/createTransitions.d.ts +6 -2
  181. package/styles/createTransitions.js +12 -4
  182. package/styles/createTransitions.mjs +12 -4
  183. package/styles/enhanceHighContrast.d.mts +70 -0
  184. package/styles/enhanceHighContrast.d.ts +70 -0
  185. package/styles/enhanceHighContrast.js +502 -0
  186. package/styles/enhanceHighContrast.mjs +495 -0
  187. package/styles/identifier.d.mts +1 -1
  188. package/styles/identifier.d.ts +1 -1
  189. package/styles/index.d.mts +2 -0
  190. package/styles/index.d.ts +2 -0
  191. package/styles/index.js +8 -0
  192. package/styles/index.mjs +1 -0
  193. package/styles/reducedMotion.d.mts +7 -0
  194. package/styles/reducedMotion.d.ts +7 -0
  195. package/styles/reducedMotion.js +21 -0
  196. package/styles/reducedMotion.mjs +14 -0
  197. package/styles/shouldSkipGeneratingVar.js +1 -1
  198. package/styles/shouldSkipGeneratingVar.mjs +1 -1
  199. package/styles/stringifyTheme.js +1 -0
  200. package/styles/stringifyTheme.mjs +1 -0
  201. package/transitions/index.d.mts +1 -1
  202. package/transitions/index.d.ts +1 -1
  203. package/transitions/index.js +0 -11
  204. package/transitions/index.mjs +1 -1
  205. package/transitions/transition.d.mts +1 -12
  206. package/transitions/transition.d.ts +1 -12
  207. package/transitions/types.d.mts +73 -0
  208. package/transitions/types.d.ts +73 -0
  209. package/transitions/useReducedMotion.d.mts +14 -0
  210. package/transitions/useReducedMotion.d.ts +14 -0
  211. package/transitions/useReducedMotion.js +117 -0
  212. package/transitions/useReducedMotion.mjs +110 -0
  213. package/transitions/utils.d.mts +34 -2
  214. package/transitions/utils.d.ts +34 -2
  215. package/transitions/utils.js +33 -4
  216. package/transitions/utils.mjs +31 -4
  217. package/useAutocomplete/useAutocomplete.d.mts +8 -1
  218. package/useAutocomplete/useAutocomplete.d.ts +8 -1
  219. package/useAutocomplete/useAutocomplete.js +66 -4
  220. package/useAutocomplete/useAutocomplete.mjs +66 -4
  221. package/utils/memoTheme.d.mts +1 -1
  222. package/utils/memoTheme.d.ts +1 -1
  223. package/utils/useSlot.d.mts +1 -1
  224. package/utils/useSlot.d.ts +1 -1
  225. package/version/index.js +2 -2
  226. package/version/index.mjs +2 -2
  227. /package/transitions/{transition.js → types.js} +0 -0
  228. /package/transitions/{transition.mjs → types.mjs} +0 -0
package/Chip/Chip.mjs CHANGED
@@ -16,6 +16,7 @@ import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
16
16
  import rootShouldForwardProp from "../styles/rootShouldForwardProp.mjs";
17
17
  import chipClasses, { getChipUtilityClass } from "./chipClasses.mjs";
18
18
  import useSlot from "../utils/useSlot.mjs";
19
+ import { getTransitionStyles } from "../transitions/utils.mjs";
19
20
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
21
  const useUtilityClasses = ownerState => {
21
22
  const {
@@ -76,7 +77,7 @@ const ChipRoot = styled('div', {
76
77
  backgroundColor: (theme.vars || theme).palette.action.selected,
77
78
  borderRadius: 32 / 2,
78
79
  whiteSpace: 'nowrap',
79
- transition: theme.transitions.create(['background-color', 'box-shadow']),
80
+ ...getTransitionStyles(theme, ['background-color', 'box-shadow']),
80
81
  // reset cursor explicitly in case ButtonBase is used
81
82
  cursor: 'unset',
82
83
  // We disable the focus ring for mouse, touch and keyboard users.
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
9
  exports.default = void 0;
10
+ exports.resetWarningFlags = resetWarningFlags;
10
11
  var React = _interopRequireWildcard(require("react"));
11
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
13
  var _clsx = _interopRequireDefault(require("clsx"));
@@ -17,9 +18,16 @@ var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
17
18
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
18
19
  var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
19
20
  var _createSimplePaletteValueFilter = _interopRequireDefault(require("../utils/createSimplePaletteValueFilter"));
21
+ var _utils = require("../transitions/utils");
20
22
  var _circularProgressClasses = require("./circularProgressClasses");
21
23
  var _jsxRuntime = require("react/jsx-runtime");
22
24
  const SIZE = 44;
25
+ let warnedMinMaxWithoutVariant = false;
26
+ let warnedInvalidMinMaxValue = false;
27
+ function resetWarningFlags() {
28
+ warnedMinMaxWithoutVariant = false;
29
+ warnedInvalidMinMaxValue = false;
30
+ }
23
31
  const circularRotateKeyframe = (0, _zeroStyled.keyframes)`
24
32
  0% {
25
33
  transform: rotate(0deg);
@@ -81,31 +89,41 @@ const CircularProgressRoot = (0, _zeroStyled.styled)('span', {
81
89
  }
82
90
  })((0, _memoTheme.default)(({
83
91
  theme
84
- }) => ({
85
- display: 'inline-block',
86
- variants: [{
87
- props: {
88
- variant: 'determinate'
89
- },
90
- style: {
91
- transition: theme.transitions.create('transform')
92
- }
93
- }, {
94
- props: {
95
- variant: 'indeterminate'
96
- },
97
- style: rotateAnimation || {
98
- animation: `${circularRotateKeyframe} 1.4s linear infinite`
99
- }
100
- }, ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({
101
- props: {
102
- color
103
- },
104
- style: {
105
- color: (theme.vars || theme).palette[color].main
106
- }
107
- }))]
108
- })));
92
+ }) => {
93
+ const reducedMotionAnimationStyles = (0, _utils.getReducedMotionStyles)(theme, {
94
+ animation: 'none'
95
+ });
96
+ return {
97
+ display: 'inline-block',
98
+ variants: [{
99
+ props: {
100
+ variant: 'determinate'
101
+ },
102
+ style: {
103
+ ...(0, _utils.getTransitionStyles)(theme, 'transform')
104
+ }
105
+ }, {
106
+ props: {
107
+ variant: 'indeterminate'
108
+ },
109
+ style: rotateAnimation || {
110
+ animation: `${circularRotateKeyframe} 1.4s linear infinite`
111
+ }
112
+ }, ...(reducedMotionAnimationStyles ? [{
113
+ props: {
114
+ variant: 'indeterminate'
115
+ },
116
+ style: reducedMotionAnimationStyles
117
+ }] : []), ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({
118
+ props: {
119
+ color
120
+ },
121
+ style: {
122
+ color: (theme.vars || theme).palette[color].main
123
+ }
124
+ }))]
125
+ };
126
+ }));
109
127
  const CircularProgressSVG = (0, _zeroStyled.styled)('svg', {
110
128
  name: 'MuiCircularProgress',
111
129
  slot: 'Svg'
@@ -123,34 +141,44 @@ const CircularProgressCircle = (0, _zeroStyled.styled)('circle', {
123
141
  }
124
142
  })((0, _memoTheme.default)(({
125
143
  theme
126
- }) => ({
127
- stroke: 'currentColor',
128
- variants: [{
129
- props: {
130
- variant: 'determinate'
131
- },
132
- style: {
133
- transition: theme.transitions.create('stroke-dashoffset')
134
- }
135
- }, {
136
- props: {
137
- variant: 'indeterminate'
138
- },
139
- style: {
140
- // Some default value that looks fine waiting for the animation to kicks in.
141
- strokeDasharray: '80px, 200px',
142
- strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.
143
- }
144
- }, {
145
- props: ({
146
- ownerState
147
- }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
148
- style: dashAnimation || {
149
- // At runtime for Pigment CSS, `dashAnimation` will be null and the generated keyframe will be used.
150
- animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
151
- }
152
- }]
153
- })));
144
+ }) => {
145
+ const reducedMotionAnimationStyles = (0, _utils.getReducedMotionStyles)(theme, {
146
+ animation: 'none'
147
+ });
148
+ return {
149
+ stroke: 'currentColor',
150
+ variants: [{
151
+ props: {
152
+ variant: 'determinate'
153
+ },
154
+ style: {
155
+ ...(0, _utils.getTransitionStyles)(theme, 'stroke-dashoffset')
156
+ }
157
+ }, {
158
+ props: {
159
+ variant: 'indeterminate'
160
+ },
161
+ style: {
162
+ // Some default value that looks fine while waiting for the animation to kick in.
163
+ strokeDasharray: '80px, 200px',
164
+ strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.
165
+ }
166
+ }, {
167
+ props: ({
168
+ ownerState
169
+ }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
170
+ style: dashAnimation || {
171
+ // At runtime for Pigment CSS, `dashAnimation` will be null and the generated keyframe will be used.
172
+ animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
173
+ }
174
+ }, ...(reducedMotionAnimationStyles ? [{
175
+ props: ({
176
+ ownerState
177
+ }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
178
+ style: reducedMotionAnimationStyles
179
+ }] : [])]
180
+ };
181
+ }));
154
182
  const CircularProgressTrack = (0, _zeroStyled.styled)('circle', {
155
183
  name: 'MuiCircularProgress',
156
184
  slot: 'Track'
@@ -188,8 +216,9 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
188
216
  ...other
189
217
  } = props;
190
218
  if (process.env.NODE_ENV !== 'production') {
191
- if (variant === 'indeterminate' && (minProp !== undefined || maxProp !== undefined)) {
219
+ if (!warnedMinMaxWithoutVariant && variant === 'indeterminate' && (minProp !== undefined || maxProp !== undefined)) {
192
220
  console.warn(`MUI: You have provided the \`min\` or \`max\` props with an 'indeterminate' variant. These props will have no effect.`);
221
+ warnedMinMaxWithoutVariant = true;
193
222
  }
194
223
  }
195
224
  const min = minProp ?? 0;
@@ -211,8 +240,9 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
211
240
  if (variant === 'determinate') {
212
241
  const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);
213
242
  if (process.env.NODE_ENV !== 'production') {
214
- if (value < min || value > max || min >= max) {
243
+ if (!warnedInvalidMinMaxValue && (value < min || value > max || min >= max)) {
215
244
  console.error(`MUI: The min, max, and value props in CircularProgress should be numbers where min < max and min <= value <= max. Received min=${min}, max=${max}, value=${value}.`);
245
+ warnedInvalidMinMaxValue = true;
216
246
  }
217
247
  }
218
248
  const range = max - min;
@@ -10,9 +10,16 @@ import memoTheme from "../utils/memoTheme.mjs";
10
10
  import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
11
11
  import capitalize from "../utils/capitalize.mjs";
12
12
  import createSimplePaletteValueFilter from "../utils/createSimplePaletteValueFilter.mjs";
13
+ import { getReducedMotionStyles, getTransitionStyles } from "../transitions/utils.mjs";
13
14
  import { getCircularProgressUtilityClass } from "./circularProgressClasses.mjs";
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
16
  const SIZE = 44;
17
+ let warnedMinMaxWithoutVariant = false;
18
+ let warnedInvalidMinMaxValue = false;
19
+ export function resetWarningFlags() {
20
+ warnedMinMaxWithoutVariant = false;
21
+ warnedInvalidMinMaxValue = false;
22
+ }
16
23
  const circularRotateKeyframe = keyframes`
17
24
  0% {
18
25
  transform: rotate(0deg);
@@ -74,31 +81,41 @@ const CircularProgressRoot = styled('span', {
74
81
  }
75
82
  })(memoTheme(({
76
83
  theme
77
- }) => ({
78
- display: 'inline-block',
79
- variants: [{
80
- props: {
81
- variant: 'determinate'
82
- },
83
- style: {
84
- transition: theme.transitions.create('transform')
85
- }
86
- }, {
87
- props: {
88
- variant: 'indeterminate'
89
- },
90
- style: rotateAnimation || {
91
- animation: `${circularRotateKeyframe} 1.4s linear infinite`
92
- }
93
- }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({
94
- props: {
95
- color
96
- },
97
- style: {
98
- color: (theme.vars || theme).palette[color].main
99
- }
100
- }))]
101
- })));
84
+ }) => {
85
+ const reducedMotionAnimationStyles = getReducedMotionStyles(theme, {
86
+ animation: 'none'
87
+ });
88
+ return {
89
+ display: 'inline-block',
90
+ variants: [{
91
+ props: {
92
+ variant: 'determinate'
93
+ },
94
+ style: {
95
+ ...getTransitionStyles(theme, 'transform')
96
+ }
97
+ }, {
98
+ props: {
99
+ variant: 'indeterminate'
100
+ },
101
+ style: rotateAnimation || {
102
+ animation: `${circularRotateKeyframe} 1.4s linear infinite`
103
+ }
104
+ }, ...(reducedMotionAnimationStyles ? [{
105
+ props: {
106
+ variant: 'indeterminate'
107
+ },
108
+ style: reducedMotionAnimationStyles
109
+ }] : []), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({
110
+ props: {
111
+ color
112
+ },
113
+ style: {
114
+ color: (theme.vars || theme).palette[color].main
115
+ }
116
+ }))]
117
+ };
118
+ }));
102
119
  const CircularProgressSVG = styled('svg', {
103
120
  name: 'MuiCircularProgress',
104
121
  slot: 'Svg'
@@ -116,34 +133,44 @@ const CircularProgressCircle = styled('circle', {
116
133
  }
117
134
  })(memoTheme(({
118
135
  theme
119
- }) => ({
120
- stroke: 'currentColor',
121
- variants: [{
122
- props: {
123
- variant: 'determinate'
124
- },
125
- style: {
126
- transition: theme.transitions.create('stroke-dashoffset')
127
- }
128
- }, {
129
- props: {
130
- variant: 'indeterminate'
131
- },
132
- style: {
133
- // Some default value that looks fine waiting for the animation to kicks in.
134
- strokeDasharray: '80px, 200px',
135
- strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.
136
- }
137
- }, {
138
- props: ({
139
- ownerState
140
- }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
141
- style: dashAnimation || {
142
- // At runtime for Pigment CSS, `dashAnimation` will be null and the generated keyframe will be used.
143
- animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
144
- }
145
- }]
146
- })));
136
+ }) => {
137
+ const reducedMotionAnimationStyles = getReducedMotionStyles(theme, {
138
+ animation: 'none'
139
+ });
140
+ return {
141
+ stroke: 'currentColor',
142
+ variants: [{
143
+ props: {
144
+ variant: 'determinate'
145
+ },
146
+ style: {
147
+ ...getTransitionStyles(theme, 'stroke-dashoffset')
148
+ }
149
+ }, {
150
+ props: {
151
+ variant: 'indeterminate'
152
+ },
153
+ style: {
154
+ // Some default value that looks fine while waiting for the animation to kick in.
155
+ strokeDasharray: '80px, 200px',
156
+ strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.
157
+ }
158
+ }, {
159
+ props: ({
160
+ ownerState
161
+ }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
162
+ style: dashAnimation || {
163
+ // At runtime for Pigment CSS, `dashAnimation` will be null and the generated keyframe will be used.
164
+ animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
165
+ }
166
+ }, ...(reducedMotionAnimationStyles ? [{
167
+ props: ({
168
+ ownerState
169
+ }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
170
+ style: reducedMotionAnimationStyles
171
+ }] : [])]
172
+ };
173
+ }));
147
174
  const CircularProgressTrack = styled('circle', {
148
175
  name: 'MuiCircularProgress',
149
176
  slot: 'Track'
@@ -181,8 +208,9 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
181
208
  ...other
182
209
  } = props;
183
210
  if (process.env.NODE_ENV !== 'production') {
184
- if (variant === 'indeterminate' && (minProp !== undefined || maxProp !== undefined)) {
211
+ if (!warnedMinMaxWithoutVariant && variant === 'indeterminate' && (minProp !== undefined || maxProp !== undefined)) {
185
212
  console.warn(`MUI: You have provided the \`min\` or \`max\` props with an 'indeterminate' variant. These props will have no effect.`);
213
+ warnedMinMaxWithoutVariant = true;
186
214
  }
187
215
  }
188
216
  const min = minProp ?? 0;
@@ -204,8 +232,9 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
204
232
  if (variant === 'determinate') {
205
233
  const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);
206
234
  if (process.env.NODE_ENV !== 'production') {
207
- if (value < min || value > max || min >= max) {
235
+ if (!warnedInvalidMinMaxValue && (value < min || value > max || min >= max)) {
208
236
  console.error(`MUI: The min, max, and value props in CircularProgress should be numbers where min < max and min <= value <= max. Received min=${min}, max=${max}, value=${value}.`);
237
+ warnedInvalidMinMaxValue = true;
209
238
  }
210
239
  }
211
240
  const range = max - min;
@@ -1,9 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { SxProps } from '@mui/system';
3
- import { TransitionStatus } from 'react-transition-group';
4
3
  import { Theme } from "../styles/index.mjs";
5
4
  import { InternalStandardProps as StandardProps } from "../internal/index.mjs";
6
- import { TransitionProps } from "../transitions/transition.mjs";
5
+ import { TransitionProps, TransitionStatus } from "../transitions/types.mjs";
7
6
  import { CollapseClasses } from "./collapseClasses.mjs";
8
7
  import { CreateSlotsAndSlotProps, SlotProps } from "../utils/types.mjs";
9
8
  export interface CollapseSlots {
@@ -32,6 +31,15 @@ export type CollapseSlotsAndSlotProps = CreateSlotsAndSlotProps<CollapseSlots, {
32
31
  wrapperInner: SlotProps<'div', CollapseWrapperInnerSlotPropsOverrides, CollapseOwnerState>;
33
32
  }>;
34
33
  export interface CollapseProps extends StandardProps<TransitionProps, 'timeout'>, CollapseSlotsAndSlotProps {
34
+ /**
35
+ * Add a custom transition end trigger.
36
+ * Use it when you need custom logic to decide when the transition has ended.
37
+ * Note: Timeouts are still used as a fallback if provided.
38
+ *
39
+ * @param {HTMLElement} node The transitioning DOM node.
40
+ * @param {Function} done Call this when the transition has finished.
41
+ */
42
+ addEndListener?: TransitionProps['addEndListener'] | undefined;
35
43
  /**
36
44
  * The content node to be collapsed.
37
45
  */
@@ -51,6 +59,11 @@ export interface CollapseProps extends StandardProps<TransitionProps, 'timeout'>
51
59
  * Either a string to use a HTML element or a component.
52
60
  */
53
61
  component?: React.ElementType<TransitionProps> | undefined;
62
+ /**
63
+ * If `true`, the transition ignores `theme.motion.reducedMotion` and keeps its normal timing.
64
+ * @default false
65
+ */
66
+ disablePrefersReducedMotion?: boolean | undefined;
54
67
  /**
55
68
  * The transition timing function.
56
69
  * You may specify a single easing or a object containing enter and exit values.
@@ -85,7 +98,6 @@ export interface CollapseOwnerState extends CollapseProps {
85
98
  /**
86
99
  * The Collapse transition is used by the
87
100
  * [Vertical Stepper](https://mui.com/material-ui/react-stepper/#vertical-stepper) StepContent component.
88
- * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.
89
101
  *
90
102
  * Demos:
91
103
  *
@@ -1,9 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { SxProps } from '@mui/system';
3
- import { TransitionStatus } from 'react-transition-group';
4
3
  import { Theme } from "../styles/index.js";
5
4
  import { InternalStandardProps as StandardProps } from "../internal/index.js";
6
- import { TransitionProps } from "../transitions/transition.js";
5
+ import { TransitionProps, TransitionStatus } from "../transitions/types.js";
7
6
  import { CollapseClasses } from "./collapseClasses.js";
8
7
  import { CreateSlotsAndSlotProps, SlotProps } from "../utils/types.js";
9
8
  export interface CollapseSlots {
@@ -32,6 +31,15 @@ export type CollapseSlotsAndSlotProps = CreateSlotsAndSlotProps<CollapseSlots, {
32
31
  wrapperInner: SlotProps<'div', CollapseWrapperInnerSlotPropsOverrides, CollapseOwnerState>;
33
32
  }>;
34
33
  export interface CollapseProps extends StandardProps<TransitionProps, 'timeout'>, CollapseSlotsAndSlotProps {
34
+ /**
35
+ * Add a custom transition end trigger.
36
+ * Use it when you need custom logic to decide when the transition has ended.
37
+ * Note: Timeouts are still used as a fallback if provided.
38
+ *
39
+ * @param {HTMLElement} node The transitioning DOM node.
40
+ * @param {Function} done Call this when the transition has finished.
41
+ */
42
+ addEndListener?: TransitionProps['addEndListener'] | undefined;
35
43
  /**
36
44
  * The content node to be collapsed.
37
45
  */
@@ -51,6 +59,11 @@ export interface CollapseProps extends StandardProps<TransitionProps, 'timeout'>
51
59
  * Either a string to use a HTML element or a component.
52
60
  */
53
61
  component?: React.ElementType<TransitionProps> | undefined;
62
+ /**
63
+ * If `true`, the transition ignores `theme.motion.reducedMotion` and keeps its normal timing.
64
+ * @default false
65
+ */
66
+ disablePrefersReducedMotion?: boolean | undefined;
54
67
  /**
55
68
  * The transition timing function.
56
69
  * You may specify a single easing or a object containing enter and exit values.
@@ -85,7 +98,6 @@ export interface CollapseOwnerState extends CollapseProps {
85
98
  /**
86
99
  * The Collapse transition is used by the
87
100
  * [Vertical Stepper](https://mui.com/material-ui/react-stepper/#vertical-stepper) StepContent component.
88
- * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.
89
101
  *
90
102
  * Demos:
91
103
  *