Files
sigpro-ui/components/Dropdown.js
natxocc 16afea2768
All checks were successful
Deploy Docs to Synology / deploy (push) Successful in 4s
Rebuild all components
2026-04-21 18:00:17 +02:00

24 lines
713 B
JavaScript

// components/Dropdown.js
import { Tag } 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) => Tag("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);