mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-11-03 21:17:33 +08:00
29 lines
1004 B
JavaScript
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>
|
|
);
|
|
}
|