Skip to content

Commit f847371

Browse files
committed
chore: make page-swapper default mode out-in
This makes it unnecessary to use z-index.
1 parent a85b78b commit f847371

File tree

5 files changed

+14
-19
lines changed

5 files changed

+14
-19
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ WORKDIR /usr/app
4848
COPY --from=build /src/package.json ./package.json
4949
COPY --from=build /src/node_modules ./node_modules
5050
COPY --from=build /src/.next ./.next
51+
COPY --from=build /src/intl/index.js ./intl/index.js
5152
COPY --from=build /src/public ./public
5253
COPY --from=build /src/next.config.js ./next.config.js
5354

www/shared/react/page-swapper/PageSwapper.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ const PageSwapper = ({ children, pageTransitionClassName, ...rest }) => {
88
const { updateScroll } = useRouterScroll();
99

1010
return (
11-
<RawPageSwapper { ...rest } updateScroll={ updateScroll }>
11+
<RawPageSwapper mode="out-in" { ...rest } updateScroll={ updateScroll }>
1212
{ ({ node, ...rest }) => {
1313
if (typeof children === 'function') {
1414
node = children({ node, ...rest });
1515
}
1616

17-
return <PageTransition node={ node } className={ pageTransitionClassName } { ...rest } />;
17+
return <PageTransition className={ pageTransitionClassName } { ...rest }>{ node }</PageTransition>;
1818
} }
1919
</RawPageSwapper>
2020
);

www/shared/react/page-swapper/page-transition/PageTransition.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,10 @@ import classNames from 'classnames';
55

66
import styles from './PageTransition.module.css';
77

8-
/* istanbul ignore next */
9-
const getZIndex = (inProp) => !inProp ? 0 : 1;
10-
118
// This function might have to be adjusted if you have more than you transition property on animations.
129
const addEndListener = (node, done) => node.addEventListener('transitionend', done);
1310

14-
const PageTransition = ({ node, animation, style, in: inProp, onEntered, onExited, className }) => (
11+
const PageTransition = ({ children, animation, style, in: inProp, onEntered, onExited, className }) => (
1512
<CSSTransition
1613
in={ inProp }
1714
onEntered={ onEntered }
@@ -26,14 +23,14 @@ const PageTransition = ({ node, animation, style, in: inProp, onEntered, onExite
2623
} }
2724
addEndListener={ addEndListener }
2825
timeout={ 1000 }>
29-
<div className={ classNames(styles[animation], className) } style={ { ...style, zIndex: getZIndex(inProp) } }>
30-
{ node }
26+
<div className={ classNames(styles[animation], className) } style={ style }>
27+
{ children }
3128
</div>
3229
</CSSTransition>
3330
);
3431

3532
PageTransition.propTypes = {
36-
node: PropTypes.element.isRequired,
33+
children: PropTypes.element.isRequired,
3734
animation: PropTypes.oneOf(['none', 'fade']),
3835
style: PropTypes.object,
3936
in: PropTypes.bool,

www/shared/react/page-swapper/page-transition/PageTransition.module.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
&.enterDone {
88
opacity: 1;
99
transition: opacity 0.6s;
10-
transition-delay: 0.3s;
1110
}
1211

1312
&.exit {

www/shared/react/page-swapper/page-transition/PageTransition.test.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,29 @@ jest.useFakeTimers();
77
const MyComponent = () => <div>foo</div>;
88

99
it('should render correctly when in prop is false', () => {
10-
render(<PageTransition node={ <MyComponent /> } />);
10+
render(<PageTransition><MyComponent /></PageTransition>);
1111

1212
const element = screen.getByText('foo').parentNode;
1313

1414
expect(element).toHaveClass('fade');
1515
expect(element).not.toHaveClass('exitDone');
16-
expect(element).toHaveStyle({ zIndex: '0' });
1716
});
1817

1918
it('should render correctly when in prop is true', () => {
20-
render(<PageTransition node={ <MyComponent /> } in />);
19+
render(<PageTransition in><MyComponent /></PageTransition>);
2120

2221
const element = screen.getByText('foo').parentNode;
2322

2423
expect(element).toHaveClass('fade');
2524
expect(element).not.toHaveClass('enterDone');
26-
expect(element).toHaveStyle({ zIndex: '1' });
2725
});
2826

2927
it('should animate in, calling onEntered correctly', () => {
3028
const handleEntered = jest.fn();
3129

32-
const { rerender } = render(<PageTransition node={ <MyComponent /> } />);
30+
const { rerender } = render(<PageTransition><MyComponent /></PageTransition>);
3331

34-
rerender(<PageTransition node={ <MyComponent /> } in onEntered={ handleEntered } />);
32+
rerender(<PageTransition in onEntered={ handleEntered }><MyComponent /></PageTransition>);
3533

3634
const element = screen.getByText('foo').parentNode;
3735

@@ -51,9 +49,9 @@ it('should animate in, calling onEntered correctly', () => {
5149
it('should animate out, calling onEntered correctly', () => {
5250
const handleExited = jest.fn();
5351

54-
const { rerender } = render(<PageTransition node={ <MyComponent /> } in />);
52+
const { rerender } = render(<PageTransition in><MyComponent /></PageTransition>);
5553

56-
rerender(<PageTransition node={ <MyComponent /> } onExited={ handleExited } />);
54+
rerender(<PageTransition onExited={ handleExited }><MyComponent /></PageTransition>);
5755

5856
const element = screen.getByText('foo').parentNode;
5957

@@ -71,7 +69,7 @@ it('should animate out, calling onEntered correctly', () => {
7169
});
7270

7371
it('should respect passed className', () => {
74-
const { container } = render(<PageTransition node={ <MyComponent /> } className="foo" />);
72+
const { container } = render(<PageTransition className="foo"><MyComponent /></PageTransition>);
7573

7674
expect(container.querySelector('.foo')).toBeInTheDocument();
7775
});

0 commit comments

Comments
 (0)