Files
filestash/client/components/animation.js
2021-12-21 01:32:37 +11:00

29 lines
1004 B
JavaScript

import React, { useState, useEffect } from "react";
/*
* Back when I started this project, there used to be a library for animation made by facebook
* named: react-addons-css-transition-group
* Facebook got away from it and things haven't stayed backward compatible at the point where I got
* to realise it would be easier to write this simpler wrapper than migrate things over
*/
export function CSSTransition({
transitionName = "animate", children = null, transitionAppearTimeout = 300,
}) {
const [className, setClassName] = useState(`${transitionName} ${transitionName}-appear`);
useEffect(() => {
setClassName(`${transitionName} ${transitionName}-appear ${transitionName}-appear-active`);
const timeout = setTimeout(() => {
setClassName(`${transitionName}`);
}, transitionAppearTimeout);
return () => clearTimeout(timeout);
}, []);
return (
<div className={className}>
{ children }
</div>
);
}