import classNames from 'classnames'; import React from 'react'; import './CollapsibleElement.less'; export const CollapsibleElement: React.FC<{ maxHeight: number }> = ({ children, maxHeight }) => { const [isCollapsed, setIsCollapsed] = React.useState(true); const [isOverflowing, setIsOverflowing] = React.useState(false); const contentRef = React.useRef(null); const checkIsOverflowing = React.useCallback(() => { if (!contentRef.current) return; setIsOverflowing(contentRef.current.offsetHeight < contentRef.current.scrollHeight); }, []); React.useLayoutEffect(() => { setTimeout(() => { checkIsOverflowing(); }); }, [checkIsOverflowing]); React.useEffect(() => { window.addEventListener('resize', checkIsOverflowing); return () => window.removeEventListener('resize', checkIsOverflowing); }, []); return (
{children}
{(isOverflowing || !isCollapsed) && ( )}
); };