11import { unstable_composeClasses as composeClasses } from '@mui/base' ;
2- import { useSlotProps } from '@mui/base/utils' ;
32import { css , keyframes } from '@mui/system' ;
43import { OverridableComponent } from '@mui/types' ;
54import { unstable_capitalize as capitalize } from '@mui/utils' ;
@@ -8,6 +7,7 @@ import PropTypes from 'prop-types';
87import * as React from 'react' ;
98import styled from '../styles/styled' ;
109import useThemeProps from '../styles/useThemeProps' ;
10+ import useSlot from '../utils/useSlot' ;
1111import { getCircularProgressUtilityClass } from './circularProgressClasses' ;
1212import {
1313 CircularProgressOwnerState ,
@@ -189,8 +189,6 @@ const CircularProgress = React.forwardRef(function CircularProgress(inProps, ref
189189 } ) ;
190190
191191 const {
192- componentsProps = { } ,
193- component = 'span' ,
194192 children,
195193 className,
196194 color = 'primary' ,
@@ -215,59 +213,57 @@ const CircularProgress = React.forwardRef(function CircularProgress(inProps, ref
215213
216214 const classes = useUtilityClasses ( ownerState ) ;
217215
218- const rootProps = useSlotProps ( {
216+ const [ SlotRoot , rootProps ] = useSlot ( 'root' , {
217+ ref,
218+ className : clsx ( classes . root , className ) ,
219219 elementType : CircularProgressRoot ,
220- externalSlotProps : componentsProps . root ,
221220 externalForwardedProps : other ,
222221 ownerState,
223222 additionalProps : {
224- ref,
225- as : component ,
226223 role : 'progressbar' ,
227224 style : {
228225 // Setting this CSS varaible via inline-style
229226 // prevents the generation of new CSS every time
230227 // `value` prop updates
231228 '--CircularProgress-percent' : value ,
232229 } ,
230+ ...( value &&
231+ determinate && {
232+ 'aria-valuenow' :
233+ typeof value === 'number' ? Math . round ( value ) : Math . round ( Number ( value || 0 ) ) ,
234+ } ) ,
233235 } ,
234- className : clsx ( classes . root , className ) ,
235- ...( value &&
236- determinate && {
237- 'aria-valuenow' :
238- typeof value === 'number' ? Math . round ( value ) : Math . round ( Number ( value || 0 ) ) ,
239- } ) ,
240236 } ) ;
241237
242- const svgProps = useSlotProps ( {
238+ const [ SlotSvg , svgProps ] = useSlot ( 'svg' , {
239+ className : classes . svg ,
243240 elementType : CircularProgressSvg ,
244- externalSlotProps : componentsProps . svg ,
241+ externalForwardedProps : other ,
245242 ownerState,
246- className : classes . svg ,
247243 } ) ;
248244
249- const trackProps = useSlotProps ( {
245+ const [ SlotTrack , trackProps ] = useSlot ( 'track' , {
246+ className : classes . track ,
250247 elementType : CircularProgressTrack ,
251- externalSlotProps : componentsProps . track ,
248+ externalForwardedProps : other ,
252249 ownerState,
253- className : classes . track ,
254250 } ) ;
255251
256- const progressProps = useSlotProps ( {
252+ const [ SlotProgress , progressProps ] = useSlot ( 'progress' , {
253+ className : classes . progress ,
257254 elementType : CircularProgressProgress ,
258- externalSlotProps : componentsProps . progress ,
255+ externalForwardedProps : other ,
259256 ownerState,
260- className : classes . progress ,
261257 } ) ;
262258
263259 return (
264- < CircularProgressRoot { ...rootProps } >
265- < CircularProgressSvg { ...svgProps } >
266- < CircularProgressTrack { ...trackProps } />
267- < CircularProgressProgress { ...progressProps } />
268- </ CircularProgressSvg >
260+ < SlotRoot { ...rootProps } >
261+ < SlotSvg { ...svgProps } >
262+ < SlotTrack { ...trackProps } />
263+ < SlotProgress { ...progressProps } />
264+ </ SlotSvg >
269265 { children }
270- </ CircularProgressRoot >
266+ </ SlotRoot >
271267 ) ;
272268} ) as OverridableComponent < CircularProgressTypeMap > ;
273269
0 commit comments