stories/transitions/Scale.js (36 lines of code) (raw):

import { css } from 'astroturf'; import React, { useRef } from 'react'; import CSSTransition from '../../src/CSSTransition'; export const SCALE_TIMEOUT = 1000; const styles = css` .enter, .appear { transform: scale(0); } .enter.enter-active, .appear.appear-active { transform: scale(1); transition: transform ${SCALE_TIMEOUT}ms; } .exit { transform: scale(1); } .exit.exit-active { transform: scale(0); transition: transform ${SCALE_TIMEOUT}ms; } `; const defaultProps = { in: false, timeout: SCALE_TIMEOUT, }; function Scale(props) { const nodeRef = useRef(); return ( <CSSTransition {...props} classNames={styles} nodeRef={nodeRef}> <div ref={nodeRef}>{props.children}</div> </CSSTransition> ); } Scale.defaultProps = defaultProps; export default Scale;