Fix Collapsible

This commit is contained in:
Quantum 2024-04-07 02:19:40 -04:00
parent c0c6fd2464
commit 1d2d63bdc7

View file

@ -1,28 +1,18 @@
import React from 'react'; import React from 'react';
import {Collapse} from 'bootstrap'; import {Collapse} from 'bootstrap';
import classNames from 'classnames';
export interface CollapsibleHandle {
show: () => void;
hide: () => void;
toggle: () => void;
}
export default function Collapsible({children, show}: { children: React.ReactNode; show: boolean }) { export default function Collapsible({children, show}: { children: React.ReactNode; show: boolean }) {
const collapse = React.useRef<Collapse>(); const id = React.useId();
const onLoad = React.useCallback((element: HTMLDivElement) => {
collapse.current = new Collapse(element, {toggle: show});
}, []);
React.useEffect(() => { React.useEffect(() => {
const collapse = Collapse.getOrCreateInstance(`#${id}`, {toggle: show});
if (show) if (show)
collapse.current?.show(); collapse.show();
else else
collapse.current?.hide(); collapse.hide();
}, [show]); }, [id, show]);
return <div ref={onLoad} className={classNames('collapse', {show})}> return <div id={id} className="collapse">
{children} {children}
</div>; </div>;
} }