11import * as React from 'react' ;
22import clsx from 'clsx' ;
3- import { MuiStyles , StyleRules , WithStyles , withStyles } from '@material-ui/core/styles' ;
3+ import { experimentalStyled as styled } from '@material-ui/core/styles' ;
4+ import { generateUtilityClasses } from '@material-ui/unstyled' ;
45import { CSSTransition , TransitionGroup } from 'react-transition-group' ;
56import { CSSTransitionProps } from 'react-transition-group/CSSTransition' ;
7+ import { TransitionGroupProps } from 'react-transition-group/TransitionGroup' ;
68
79export type SlideDirection = 'right' | 'left' ;
810export interface SlideTransitionProps extends Omit < CSSTransitionProps , 'timeout' > {
@@ -13,81 +15,81 @@ export interface SlideTransitionProps extends Omit<CSSTransitionProps, 'timeout'
1315 transKey : React . Key ;
1416}
1517
16- export type PickersSlideTransitionClassKey =
17- | 'root'
18- | 'slideEnter-left'
19- | 'slideEnter-right'
20- | 'slideEnterActive'
21- | 'slideEnterActive'
22- | 'slideExit'
23- | 'slideExitActiveLeft-left'
24- | 'slideExitActiveLeft-right' ;
18+ const classes = generateUtilityClasses ( 'PrivatePickersSlideTransition' , [
19+ 'root' ,
20+ 'slideEnter-left' ,
21+ 'slideEnter-right' ,
22+ 'slideEnterActive' ,
23+ 'slideEnterActive' ,
24+ 'slideExit' ,
25+ 'slideExitActiveLeft-left' ,
26+ 'slideExitActiveLeft-right' ,
27+ ] ) ;
2528
2629export const slideAnimationDuration = 350 ;
27- export const styles : MuiStyles < PickersSlideTransitionClassKey > = (
28- theme ,
29- ) : StyleRules < PickersSlideTransitionClassKey > => {
30+
31+ const PickersSlideTransitionRoot = styled (
32+ TransitionGroup ,
33+ { } ,
34+ { skipSx : true } ,
35+ ) < TransitionGroupProps > ( ( { theme } ) => {
3036 const slideTransition = theme . transitions . create ( 'transform' , {
3137 duration : slideAnimationDuration ,
3238 easing : 'cubic-bezier(0.35, 0.8, 0.4, 1)' ,
3339 } ) ;
34-
3540 return {
36- root : {
37- display : 'block' ,
38- position : 'relative' ,
39- overflowX : 'hidden' ,
40- '& > *' : {
41- position : 'absolute' ,
42- top : 0 ,
43- right : 0 ,
44- left : 0 ,
45- } ,
41+ display : 'block' ,
42+ position : 'relative' ,
43+ overflowX : 'hidden' ,
44+ '& > *' : {
45+ position : 'absolute' ,
46+ top : 0 ,
47+ right : 0 ,
48+ left : 0 ,
4649 } ,
47- 'slideEnter-left' : {
50+ [ `& . ${ classes [ 'slideEnter-left' ] } ` ] : {
4851 willChange : 'transform' ,
4952 transform : 'translate(100%)' ,
5053 zIndex : 1 ,
5154 } ,
52- 'slideEnter-right' : {
55+ [ `& . ${ classes [ 'slideEnter-right' ] } ` ] : {
5356 willChange : 'transform' ,
5457 transform : 'translate(-100%)' ,
5558 zIndex : 1 ,
5659 } ,
57- slideEnterActive : {
60+ [ `& . ${ classes . slideEnterActive } ` ] : {
5861 transform : 'translate(0%)' ,
5962 transition : slideTransition ,
6063 } ,
61- slideExit : {
64+ [ `& . ${ classes . slideExit } ` ] : {
6265 transform : 'translate(0%)' ,
6366 } ,
64- 'slideExitActiveLeft-left' : {
67+ [ `& . ${ classes [ 'slideExitActiveLeft-left' ] } ` ] : {
6568 willChange : 'transform' ,
6669 transform : 'translate(-100%)' ,
6770 transition : slideTransition ,
6871 zIndex : 0 ,
6972 } ,
70- 'slideExitActiveLeft-right' : {
73+ [ `& . ${ classes [ 'slideExitActiveLeft-right' ] } ` ] : {
7174 willChange : 'transform' ,
7275 transform : 'translate(100%)' ,
7376 transition : slideTransition ,
7477 zIndex : 0 ,
7578 } ,
7679 } ;
77- } ;
80+ } ) ;
7881
7982/**
8083 * @ignore - do not document.
8184 */
82- const SlideTransition : React . FC < SlideTransitionProps & WithStyles < typeof styles > > = ( {
85+ const PickersSlideTransition = ( {
8386 children,
84- classes,
8587 className,
8688 reduceAnimations,
8789 slideDirection,
8890 transKey,
8991 ...other
90- } ) => {
92+ } : SlideTransitionProps ) => {
9193 if ( reduceAnimations ) {
9294 return < div className = { clsx ( classes . root , className ) } > { children } </ div > ;
9395 }
@@ -105,7 +107,7 @@ const SlideTransition: React.FC<SlideTransitionProps & WithStyles<typeof styles>
105107 } ;
106108
107109 return (
108- < TransitionGroup
110+ < PickersSlideTransitionRoot
109111 className = { clsx ( classes . root , className ) }
110112 childFactory = { ( element ) =>
111113 React . cloneElement ( element , {
@@ -123,8 +125,8 @@ const SlideTransition: React.FC<SlideTransitionProps & WithStyles<typeof styles>
123125 >
124126 { children }
125127 </ CSSTransition >
126- </ TransitionGroup >
128+ </ PickersSlideTransitionRoot >
127129 ) ;
128130} ;
129131
130- export default withStyles ( styles , { name : 'PrivatePickersSlideTransition' } ) ( SlideTransition ) ;
132+ export default PickersSlideTransition ;
0 commit comments