mirror of
https://github.com/quantum5/totp.git
synced 2025-04-24 05:31:59 -04:00
Fix Collapsible
This commit is contained in:
parent
c0c6fd2464
commit
1d2d63bdc7
|
@ -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>;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue