totp/src/Collapsible.tsx

19 lines
463 B
TypeScript
Raw Normal View History

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>;
}