(function () {
'use strict';
const closeAllMenus = () => {
document.querySelectorAll('.row-menu-dropdown.open').forEach(d => {
d.classList.remove('open');
d.removeAttribute('style');
});
document.querySelectorAll('.row-menu-trigger.active').forEach(t => t.classList.remove('active'));
};
const positionDropdown = (trigger, dropdown) => {
const rect = trigger.getBoundingClientRect();
const dropW = 160;
const dropH = 120;
dropdown.style.position = 'fixed';
dropdown.style.zIndex = '9999';
dropdown.style.right = 'auto';
let left = rect.right - dropW;
if (left < 8) left = 8;
if (left + dropW > window.innerWidth - 8) left = window.innerWidth - dropW - 8;
dropdown.style.left = left + 'px';
const spaceBelow = window.innerHeight - rect.bottom;
if (spaceBelow < dropH + 8) {
dropdown.style.top = 'auto';
dropdown.style.bottom = (window.innerHeight - rect.top + 4) + 'px';
} else {
dropdown.style.bottom = 'auto';
dropdown.style.top = (rect.bottom + 4) + 'px';
}
};
let lastOpenTime = 0;
document.addEventListener('click', function (e) {
const trigger = e.target.closest('.row-menu-trigger');
if (trigger) {
const dropdown = trigger.nextElementSibling;
const isOpen = dropdown.classList.contains('open');
closeAllMenus();
if (!isOpen) {
positionDropdown(trigger, dropdown);
dropdown.classList.add('open');
trigger.classList.add('active');
lastOpenTime = Date.now();
}
e.stopPropagation();
return;
}
if (!e.target.closest('.row-menu-dropdown')) closeAllMenus();
});
window.addEventListener('scroll', () => {
if (Date.now() - lastOpenTime > 300) closeAllMenus();
}, true);
window.addEventListener('resize', closeAllMenus);
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') closeAllMenus();
});
window.AdminKebab = { closeAllMenus };
})();