Skip to content

Commit

Permalink
[CalendarPicker] Use transition components from core instead of a cus…
Browse files Browse the repository at this point in the history
…tom implementation (#27043)
  • Loading branch information
eps1lon authored Jul 5, 2021
1 parent 699b5e9 commit bd64a49
Show file tree
Hide file tree
Showing 8 changed files with 21 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ describe('<CalendarPicker />', () => {
clock.restore();
});

// StrictModeViolation: Uses StrictMode incompatible API of `react-transition-group`
const render = createPickerRender({ strict: false });
const render = createPickerRender();

describeConformanceV5(<CalendarPicker date={adapterToUse.date()} onChange={() => {}} />, () => ({
classes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ function PickersCalendar<TDate>(props: PickersCalendarProps<TDate>) {
.filter(Boolean)
.map((selectedDateItem) => selectedDateItem && utils.startOfDay(selectedDateItem));

const slideNodeRef = React.useRef(null);

return (
<React.Fragment>
<PickersCalendarDayHeader>
Expand All @@ -155,8 +157,13 @@ function PickersCalendar<TDate>(props: PickersCalendarProps<TDate>) {
slideDirection={slideDirection}
className={className}
{...TransitionProps}
nodeRef={slideNodeRef}
>
<PickersCalendarWeekContainer data-mui-test="pickers-calendar" role="grid">
<PickersCalendarWeekContainer
data-mui-test="pickers-calendar"
ref={slideNodeRef}
role="grid"
>
{utils.getWeekArray(currentMonth).map((week) => (
<PickersCalendarWeek role="row" key={`week-${week[0]}`}>
{week.map((day) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as React from 'react';
import clsx from 'clsx';
import Fade from '@material-ui/core/Fade';
import { styled } from '@material-ui/core/styles';
import { generateUtilityClasses } from '@material-ui/unstyled';
import { CSSTransition, TransitionGroup } from 'react-transition-group';
import { TransitionGroupProps } from 'react-transition-group/TransitionGroup';
import { TransitionGroup } from 'react-transition-group';

interface FadeTransitionProps {
children: React.ReactElement;
Expand All @@ -12,40 +12,15 @@ interface FadeTransitionProps {
transKey: React.Key;
}

const classes = generateUtilityClasses('PrivatePickersFadeTransitionGroup', [
'root',
'fadeEnter',
'fadeEnterActive',
'fadeExit',
'fadeExitActive',
]);
const classes = generateUtilityClasses('PrivatePickersFadeTransitionGroup', ['root']);

const animationDuration = 500;

const PickersFadeTransitionGroupRoot = styled(TransitionGroup, {
skipSx: true,
})<TransitionGroupProps>(({ theme }) => ({
})(() => ({
display: 'block',
position: 'relative',
[`& .${classes.fadeEnter}`]: {
willChange: 'transform',
opacity: 0,
},
[`& .${classes.fadeEnterActive}`]: {
opacity: 1,
transition: theme.transitions.create('opacity', {
duration: animationDuration,
}),
},
[`& .${classes.fadeExit}`]: {
opacity: 1,
},
[`& .${classes.fadeExitActive}`]: {
opacity: 0,
transition: theme.transitions.create('opacity', {
duration: animationDuration / 2,
}),
},
}));

/**
Expand All @@ -61,31 +36,16 @@ const PickersFadeTransitionGroup = ({
return children;
}

const transitionClasses = {
exit: classes.fadeExit,
enterActive: classes.fadeEnterActive,
enter: classes.fadeEnter,
exitActive: classes.fadeExitActive,
};

return (
<PickersFadeTransitionGroupRoot
className={clsx(classes.root, className)}
childFactory={(element) =>
React.cloneElement(element, {
classNames: transitionClasses,
})
}
>
<CSSTransition
<PickersFadeTransitionGroupRoot className={clsx(classes.root, className)}>
<Fade
mountOnEnter
unmountOnExit
key={transKey}
timeout={{ appear: animationDuration, enter: animationDuration / 2, exit: 0 }}
classNames={transitionClasses}
>
{children}
</CSSTransition>
</Fade>
</PickersFadeTransitionGroupRoot>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@ describe('<DesktopDatePicker />', () => {
afterEach(() => {
clock.restore();
});
// StrictModeViolation: Uses CalendarPicker
const render = createPickerRender({ strict: false });
const render = createPickerRender();

it('prop: components.OpenPickerIcon', () => {
function HomeIcon(props: SvgIconProps) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ describe('<DesktopDateRangePicker />', () => {
afterEach(() => {
clock.restore();
});
// StrictModeViolation: Uses CalendarPicker
const render = createPickerRender({ strict: false });
const render = createPickerRender();

describeConformance(
<DesktopDateRangePicker
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ describe('<MobileDatePicker />', () => {
afterEach(() => {
clock.restore();
});
// StrictModeViolation: Uses CalendarPicker
const render = createPickerRender({ strict: false });
const render = createPickerRender();

it('Accepts date on `OK` button click', () => {
const onChangeMock = spy();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ describe('<MobileDateTimePicker />', () => {
clock.restore();
});

// StrictModeViolation: Uses CalendarPicker
const render = createPickerRender({ strict: false });
const render = createPickerRender();

it('opens dialog on textField click for Mobile mode', () => {
render(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ describe('<StaticDatePicker />', () => {
afterEach(() => {
clock.restore();
});
// StrictModeViolation: Uses CalendarPicker
const render = createPickerRender({ strict: false });
const render = createPickerRender();

it('render proper month', () => {
render(
Expand Down

0 comments on commit bd64a49

Please sign in to comment.