All checks were successful
Deploy Docs to Synology / deploy (push) Successful in 3s
24 lines
709 B
JavaScript
24 lines
709 B
JavaScript
// components/Dropdown.js
|
|
import { h } from "sigpro";
|
|
|
|
let currentOpen = null;
|
|
|
|
if (typeof window !== 'undefined' && !window.__dropdownHandlerRegistered) {
|
|
window.addEventListener('click', (e) => {
|
|
if (currentOpen && !currentOpen.contains(e.target)) {
|
|
currentOpen.open = false;
|
|
currentOpen = null;
|
|
}
|
|
});
|
|
window.__dropdownHandlerRegistered = true;
|
|
}
|
|
|
|
export const Dropdown = (props) => h("details", {
|
|
...props,
|
|
class: `dropdown ${props.class ?? ''}`,
|
|
onclick: (e) => {
|
|
const details = e.currentTarget;
|
|
if (currentOpen && currentOpen !== details) currentOpen.open = false;
|
|
setTimeout(() => { currentOpen = details.open ? details : null; }, 0);
|
|
}
|
|
}, props.children); |