Refactor calendar widget changes

This commit is contained in:
2026-04-23 10:56:05 +02:00
parent 910be60ed5
commit 4751a99e8e
9 changed files with 51 additions and 122 deletions
+30
View File
@@ -17,3 +17,33 @@
}
});
})();
// Wire a dropdown: clicking the trigger toggles its sibling .dropdown-menu;
// clicking outside or pressing Escape closes all wired menus. Safe to call
// multiple times on the same trigger (no-op on re-registration).
function wireDropdown(trigger) {
if (!trigger || trigger.dataset.wired) return;
var menu = trigger.parentElement && trigger.parentElement.querySelector('.dropdown-menu');
if (!menu) return;
trigger.dataset.wired = '1';
trigger.addEventListener('click', function (e) {
e.stopPropagation();
document.querySelectorAll('.dropdown-menu.is-open').forEach(function (m) {
if (m !== menu) m.classList.remove('is-open');
});
menu.classList.toggle('is-open');
});
menu.addEventListener('click', function () { menu.classList.remove('is-open'); });
}
document.addEventListener('click', function (e) {
document.querySelectorAll('.dropdown-menu.is-open').forEach(function (menu) {
if (!menu.parentElement.contains(e.target)) menu.classList.remove('is-open');
});
});
document.addEventListener('keydown', function (e) {
if (e.key !== 'Escape') return;
document.querySelectorAll('.dropdown-menu.is-open').forEach(function (menu) {
menu.classList.remove('is-open');
});
});