Replace hybrid site-nav/drawer shell with zibll navbar-top layouts 1/2/3, body.mobile-navbar-show drawer, wired NavWalker + aksrt_menu_options meta, nav_folding/chevron, VIP switches, and SPA/PHP schema parity. No dual-class compat paths.
58 lines
2.1 KiB
JavaScript
58 lines
2.1 KiB
JavaScript
/**
|
|
* AKSRT Dropdown Menus — post-meta only.
|
|
* Header user box uses CSS hover (.navbar-top .sub-menu) per zibll contract.
|
|
*/
|
|
(function () {
|
|
"use strict";
|
|
|
|
function initPostDropMeta() {
|
|
document.querySelectorAll('.post-drop-meta').forEach(function (wrap) {
|
|
if (!wrap || wrap.dataset.aksrtDropMetaBound === '1') return;
|
|
var trigger = wrap.querySelector('.post-drop-meta__toggle');
|
|
var menu = wrap.querySelector('.post-drop-meta__menu');
|
|
if (!trigger || !menu) return;
|
|
wrap.dataset.aksrtDropMetaBound = '1';
|
|
|
|
function close() {
|
|
wrap.classList.remove('is-open');
|
|
trigger.setAttribute('aria-expanded', 'false');
|
|
menu.setAttribute('aria-hidden', 'true');
|
|
}
|
|
|
|
trigger.addEventListener('click', function (e) {
|
|
e.stopPropagation();
|
|
var open = !wrap.classList.contains('is-open');
|
|
document.querySelectorAll('.post-drop-meta.is-open').forEach(function (other) {
|
|
if (other !== wrap) {
|
|
other.classList.remove('is-open');
|
|
var t = other.querySelector('.post-drop-meta__toggle');
|
|
var m = other.querySelector('.post-drop-meta__menu');
|
|
if (t) t.setAttribute('aria-expanded', 'false');
|
|
if (m) m.setAttribute('aria-hidden', 'true');
|
|
}
|
|
});
|
|
wrap.classList.toggle('is-open', open);
|
|
trigger.setAttribute('aria-expanded', open ? 'true' : 'false');
|
|
menu.setAttribute('aria-hidden', open ? 'false' : 'true');
|
|
});
|
|
|
|
document.addEventListener('click', function (e) {
|
|
if (!wrap.contains(e.target)) close();
|
|
});
|
|
document.addEventListener('keydown', function (e) {
|
|
if (e.key === 'Escape') close();
|
|
});
|
|
});
|
|
}
|
|
|
|
if (window.AksrtFrontend && typeof window.AksrtFrontend.register === 'function') {
|
|
window.AksrtFrontend.register('aksrt-post-drop-meta', function () {
|
|
initPostDropMeta();
|
|
});
|
|
} else if (document.readyState === 'loading') {
|
|
document.addEventListener('DOMContentLoaded', initPostDropMeta);
|
|
} else {
|
|
initPostDropMeta();
|
|
}
|
|
})();
|