mirror of
https://github.com/sussy-code/smov.git
synced 2025-01-08 17:27:40 +01:00
29 lines
866 B
JavaScript
29 lines
866 B
JavaScript
|
import React from 'react'
|
||
|
import './Card.css'
|
||
|
|
||
|
// fullWidth: boolean
|
||
|
// show: boolean
|
||
|
// doTransition: boolean
|
||
|
export function Card(props) {
|
||
|
|
||
|
const [showing, setShowing] = React.useState(false);
|
||
|
const measureRef = React.useRef(null)
|
||
|
const [height, setHeight] = React.useState(0);
|
||
|
|
||
|
React.useEffect(() => {
|
||
|
if (!measureRef?.current) return;
|
||
|
setShowing(props.show);
|
||
|
setHeight(measureRef.current.clientHeight)
|
||
|
}, [props.show, measureRef])
|
||
|
|
||
|
return (
|
||
|
<div className="card-wrapper" style={{
|
||
|
height: props.doTransition ? (showing ? height : 0) : "initial",
|
||
|
}}>
|
||
|
<div className={`card ${ props.fullWidth ? 'full' : '' } ${ showing ? 'show' : '' } ${ props.doTransition ? 'doTransition' : '' }`} ref={measureRef}>
|
||
|
{props.children}
|
||
|
</div>
|
||
|
</div>
|
||
|
)
|
||
|
}
|