2025-02-10 18:05:02 -05:00
|
|
|
import {ReactNode, useEffect, useId} from 'react';
|
2024-04-07 01:45:31 -04:00
|
|
|
import {Collapse} from 'bootstrap';
|
|
|
|
|
2025-02-10 13:34:32 -05:00
|
|
|
export default function Collapsible({children, show}: { children: ReactNode; show: boolean }) {
|
|
|
|
const id = useId();
|
2024-04-07 01:45:31 -04:00
|
|
|
|
2025-02-10 13:34:32 -05:00
|
|
|
useEffect(() => {
|
2024-04-07 02:19:40 -04:00
|
|
|
const collapse = Collapse.getOrCreateInstance(`#${id}`, {toggle: show});
|
2024-04-07 01:45:31 -04:00
|
|
|
if (show)
|
2024-04-07 02:19:40 -04:00
|
|
|
collapse.show();
|
2024-04-07 01:45:31 -04:00
|
|
|
else
|
2024-04-07 02:19:40 -04:00
|
|
|
collapse.hide();
|
|
|
|
}, [id, show]);
|
2024-04-07 01:45:31 -04:00
|
|
|
|
2024-04-07 02:19:40 -04:00
|
|
|
return <div id={id} className="collapse">
|
2024-04-07 01:45:31 -04:00
|
|
|
{children}
|
|
|
|
</div>;
|
|
|
|
}
|