Skip to content

Commit 16f548d

Browse files
committed
chore: add stories for mountOnEnter and unmountOnExit
1 parent 4881b6d commit 16f548d

File tree

8 files changed

+122
-5
lines changed

8 files changed

+122
-5
lines changed

stories/CSSTransition.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import React, { useState } from 'react';
2+
import { storiesOf } from '@storybook/react';
3+
4+
import StoryFixture from './StoryFixture';
5+
import Fade from './transitions/CSSFade';
6+
7+
function ToggleFixture({ defaultIn, description, children }) {
8+
const [show, setShow] = useState(defaultIn || false);
9+
console.log(show);
10+
11+
return (
12+
<StoryFixture description={description}>
13+
<div style={{ marginBottom: 10 }}>
14+
<button
15+
onClick={() => {
16+
setShow(!show);
17+
}}
18+
>
19+
Toggle
20+
</button>
21+
</div>
22+
{React.cloneElement(children, { in: show })}
23+
</StoryFixture>
24+
);
25+
}
26+
27+
storiesOf('CSSTransition', module)
28+
.add('Fade', () => (
29+
<ToggleFixture>
30+
<Fade>asaghasg asgasg</Fade>
31+
</ToggleFixture>
32+
))
33+
.add('Fade with appear', () => (
34+
<ToggleFixture defaultIn>
35+
<Fade appear>asaghasg asgasg</Fade>
36+
</ToggleFixture>
37+
))
38+
.add('Fade with mountOnEnter', () => {
39+
return (
40+
<ToggleFixture>
41+
<Fade mountOnEnter>Fade with mountOnEnter</Fade>
42+
</ToggleFixture>
43+
);
44+
})
45+
.add('Fade with unmountOnExit', () => {
46+
return (
47+
<ToggleFixture>
48+
<Fade unmountOnExit>Fade with unmountOnExit</Fade>
49+
</ToggleFixture>
50+
);
51+
})

stories/NestedTransition.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useState } from 'react';
22

33
import StoryFixture from './StoryFixture';
4-
import Fade from './transitions/Fade';
4+
import Fade from './transitions/CSSFadeForTransitionGroup';
55
import Scale from './transitions/Scale';
66

77
function FadeAndScale(props) {

stories/Transition.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,19 @@ storiesOf('Transition', module)
5959
<ToggleFixture>
6060
<FadeInnerRef innerRef={nodeRef}>Fade using innerRef</FadeInnerRef>
6161
</ToggleFixture>
62+
)
63+
})
64+
.add('Fade with mountOnEnter', () => {
65+
return (
66+
<ToggleFixture>
67+
<Fade mountOnEnter>Fade with mountOnEnter</Fade>
68+
</ToggleFixture>
69+
);
70+
})
71+
.add('Fade with unmountOnExit', () => {
72+
return (
73+
<ToggleFixture>
74+
<Fade unmountOnExit>Fade with unmountOnExit</Fade>
75+
</ToggleFixture>
6276
);
63-
});
77+
})

stories/TransitionGroup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import TransitionGroup from '../src/TransitionGroup';
66
import CSSTransitionGroupFixture from './CSSTransitionGroupFixture';
77
import NestedTransition from './NestedTransition';
88
import StoryFixture from './StoryFixture';
9-
import Fade, { FADE_TIMEOUT } from './transitions/Fade';
9+
import Fade, { FADE_TIMEOUT } from './transitions/CSSFadeForTransitionGroup';
1010

1111
storiesOf('Css Transition Group', module)
1212
.add('Animates on all', () => (

stories/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
import './Transition';
2+
import './CSSTransition';
23
import './TransitionGroup';
34
import './ReplaceTransition';

stories/transitions/Bootstrap.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import Transition, {
1212
const styles = css`
1313
.fade {
1414
opacity: 0;
15-
transition: opacity 0.15s linear;
15+
transition: opacity 0.5s linear;
1616
}
1717
.fade.in {
1818
opacity: 1;
@@ -47,7 +47,7 @@ export function Fade(props) {
4747
{...props}
4848
nodeRef={nodeRef}
4949
className={styles.fade}
50-
timeout={150}
50+
timeout={500}
5151
>
5252
{(status) => (
5353
<div

stories/transitions/CSSFade.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { css } from 'astroturf';
2+
import React, { useRef } from 'react';
3+
4+
import CSSTransition from '../../src/CSSTransition';
5+
6+
export const FADE_TIMEOUT = 1000;
7+
8+
const styles = css`
9+
.default {
10+
opacity: 0;
11+
}
12+
.enter-done {
13+
opacity: 1;
14+
}
15+
16+
.enter,
17+
.appear {
18+
opacity: 0.01;
19+
}
20+
21+
.enter.enter-active,
22+
.appear.appear-active {
23+
opacity: 1;
24+
transition: opacity ${FADE_TIMEOUT}ms ease-in;
25+
}
26+
27+
.exit {
28+
opacity: 1;
29+
}
30+
.exit.exit-active {
31+
opacity: 0.01;
32+
transition: opacity ${0.8 * FADE_TIMEOUT}ms ease-in;
33+
}
34+
`;
35+
36+
const defaultProps = {
37+
in: false,
38+
timeout: FADE_TIMEOUT,
39+
};
40+
function Fade(props) {
41+
const nodeRef = useRef();
42+
return (
43+
<CSSTransition {...props} classNames={styles} nodeRef={nodeRef}>
44+
<div ref={nodeRef} className={styles.default}>{props.children}</div>
45+
</CSSTransition>
46+
);
47+
}
48+
49+
Fade.defaultProps = defaultProps;
50+
51+
export default Fade;

0 commit comments

Comments
 (0)