进行了一些小修复
This commit is contained in:
@@ -78,6 +78,74 @@
|
||||
});
|
||||
}
|
||||
|
||||
var postMetaDocumentEventsBound = false;
|
||||
|
||||
function setPostMetaMenuState(menuRoot, open) {
|
||||
var toggle = menuRoot.querySelector(".post-drop-meta__toggle");
|
||||
var menu = menuRoot.querySelector(".post-drop-meta__menu");
|
||||
if (!toggle || !menu) return;
|
||||
|
||||
menuRoot.classList.toggle("is-open", open);
|
||||
toggle.setAttribute("aria-expanded", open ? "true" : "false");
|
||||
menu.setAttribute("aria-hidden", open ? "false" : "true");
|
||||
}
|
||||
|
||||
function closePostMetaMenus(except, restoreFocus) {
|
||||
document.querySelectorAll(".post-drop-meta.is-open").forEach(function (menuRoot) {
|
||||
if (menuRoot === except) return;
|
||||
var toggle = menuRoot.querySelector(".post-drop-meta__toggle");
|
||||
setPostMetaMenuState(menuRoot, false);
|
||||
if (restoreFocus && toggle) toggle.focus();
|
||||
});
|
||||
}
|
||||
|
||||
function initPostMetaMenus(root) {
|
||||
var scope = root || document;
|
||||
var menuRoots = [];
|
||||
|
||||
if (scope.nodeType === 1 && scope.matches(".post-drop-meta")) {
|
||||
menuRoots.push(scope);
|
||||
}
|
||||
scope.querySelectorAll(".post-drop-meta").forEach(function (menuRoot) {
|
||||
menuRoots.push(menuRoot);
|
||||
});
|
||||
|
||||
menuRoots.forEach(function (menuRoot) {
|
||||
var toggle = menuRoot.querySelector(".post-drop-meta__toggle");
|
||||
var menu = menuRoot.querySelector(".post-drop-meta__menu");
|
||||
if (!toggle || !menu || toggle.dataset.postMetaMenuBound) return;
|
||||
|
||||
toggle.dataset.postMetaMenuBound = "1";
|
||||
setPostMetaMenuState(menuRoot, false);
|
||||
|
||||
toggle.addEventListener("click", function () {
|
||||
var open = !menuRoot.classList.contains("is-open");
|
||||
closePostMetaMenus(menuRoot, false);
|
||||
setPostMetaMenuState(menuRoot, open);
|
||||
});
|
||||
|
||||
menu.addEventListener("click", function (event) {
|
||||
if (event.target.closest(".post-drop-meta__item")) {
|
||||
setPostMetaMenuState(menuRoot, false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (menuRoots.length && !postMetaDocumentEventsBound) {
|
||||
postMetaDocumentEventsBound = true;
|
||||
document.addEventListener("click", function (event) {
|
||||
if (!event.target.closest(".post-drop-meta")) {
|
||||
closePostMetaMenus(null, false);
|
||||
}
|
||||
});
|
||||
document.addEventListener("keydown", function (event) {
|
||||
if (event.key === "Escape") {
|
||||
closePostMetaMenus(null, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getBaseStatCount(statName) {
|
||||
var statEl = document.querySelector('[data-stat-count="' + statName + '"][data-base-count]');
|
||||
return statEl ? (parseInt(statEl.dataset.baseCount, 10) || 0) : 0;
|
||||
@@ -261,6 +329,7 @@
|
||||
|
||||
window.AksrtFrontend.register("aksrt-search-clear", function () { initSearchClear(); });
|
||||
window.AksrtFrontend.register("aksrt-article-tools", function () { initArticleTools(); });
|
||||
window.AksrtFrontend.register("aksrt-post-meta-menus", function (root) { initPostMetaMenus(root); });
|
||||
window.AksrtFrontend.register("aksrt-password-toggles", function (root) { initPasswordToggles(root); });
|
||||
window.AksrtFrontend.register("aksrt-interaction-bar", function (root) { initInteractionBar(root); });
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user