-
Bjarke Madsen authoredBjarke Madsen authored
CollapsibleBox.tsx 1.20 KiB
import React, { useState } from 'react';
import { Col, Row } from 'react-bootstrap';
import { AiOutlineClose, AiOutlinePlus } from 'react-icons/ai';
interface CollapsibleBoxProps {
title: string;
children: React.ReactNode;
startCollapsed?: boolean;
}
const CollapsibleBox: React.FC<CollapsibleBoxProps> = ({ title, children, startCollapsed }) => {
const [isCollapsed, setIsCollapsed] = useState(!!startCollapsed);
return (
<div className='collapsible-box p-0'>
<Row>
<Col>
<h1 className="bold-caps-16pt dark-teal pt-3 ps-3">{title}</h1>
</Col>
<Col className='flex-grow-0 flex-shrink-0'>
<div className="toggle-btn p-2" onClick={() => setIsCollapsed(!isCollapsed)}>
{isCollapsed ?
<AiOutlinePlus style={{ color: 'white', paddingBottom: "3px", marginTop: "3px", marginLeft: "3px", scale: "1.3"}} /> :
<AiOutlineClose style={{ color: 'white', paddingBottom: "3px", marginTop: "3px", marginLeft: "3px", scale: "1.3"}} />}
</div>
</Col>
</Row>
{!isCollapsed && <div className='collapsible-content'>
{children}
</div>}
</div>
);
};
export default CollapsibleBox;