Files
acrib.es/wp-content/themes/kadence/assets/js/navigation.min.js

1 line
22 KiB
JavaScript
Raw Normal View History

(function(){"use strict";window.kadence={initOutlineToggle:function(){document.body.addEventListener("keydown",function(){document.body.classList.remove("hide-focus-outline")}),document.body.addEventListener("mousedown",function(){document.body.classList.add("hide-focus-outline")})},getOffset:function(a){if(a instanceof HTMLElement){var b=a.getBoundingClientRect();return{top:b.top+window.pageYOffset,left:b.left+window.pageXOffset}}return{top:null,left:null}},findParents:function(a,b){function c(a){var e=a.parentNode;e instanceof HTMLElement&&(e.matches(b)&&d.push(e),c(e))}var d=[];return c(a),d},toggleAttribute:function(a,b,c,d){c===void 0&&(c=!0),d===void 0&&(d=!1),a.getAttribute(b)===c?a.setAttribute(b,d):a.setAttribute(b,c)},initNavToggleSubmenus:function(){var a=document.querySelectorAll(".nav--toggle-sub");if(a.length)for(let b=0;b<a.length;b++)window.kadence.initEachNavToggleSubmenu(a[b]),window.kadence.initEachNavToggleSubmenuInside(a[b])},initEachNavToggleSubmenu:function(a){var b=a.querySelectorAll(".menu ul");if(b.length)for(let f=0;f<b.length;f++){var c=b[f].parentNode;let g=c.querySelector(".dropdown-nav-toggle");if(g){var d=c.querySelector(".nav-drop-title-wrap").firstChild.textContent.trim(),e=document.createElement("BUTTON");e.setAttribute("aria-label",d?kadenceConfig.screenReader.expandOf+" "+d:kadenceConfig.screenReader.expand),e.setAttribute("aria-haspopup","menu"),e.setAttribute("aria-expanded","false"),e.setAttribute("aria-label",d?kadenceConfig.screenReader.expandOf+" "+d:kadenceConfig.screenReader.expand),e.classList.add("dropdown-nav-special-toggle"),c.insertBefore(e,c.childNodes[1]),e.addEventListener("click",function(a){a.preventDefault(),window.kadence.toggleSubMenu(a.target.closest("li"))}),a.classList.contains("click-to-open")||c.addEventListener("mouseleave",function(a){var b=a.relatedTarget;b&&c.contains(b)||window.kadence.toggleSubMenu(c,!1)}),c.querySelector("a").addEventListener("focus",function(a){var b=a.target.parentNode.parentNode.querySelectorAll("li.menu-item--toggled-on");for(let d=0;d<b.length;d++)c!==b[d]&&window.kadence.toggleSubMenu(b[d],!1)}),b[f].addEventListener("keydown",function(a){var c="ul.toggle-show > li > a, ul.toggle-show > li > .dropdown-nav-special-toggle";if(9===a.keyCode){var c="ul.toggle-show > li > a, ul.toggle-show > li > .dropdown-nav-special-toggle";b[f].parentNode.classList.contains("kadence-menu-mega-enabled")&&(c="a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex=\"0\"], [contenteditable]"),a.shiftKey?window.kadence.isfirstFocusableElement(b[f],document.activeElement,c)&&window.kadence.toggleSubMenu(b[f].parentNode,!1):window.kadence.islastFocusableElement(b[f],document.activeElement,c)&&window.kadence.toggleSubMenu(b[f].parentNode,!1)}27===a.keyCode&&(window.kadence.toggleSubMenu(b[f].parentNode,!1),b[f].parentNode.querySelector(".dropdown-nav-special-toggle").focus())}),b[f].parentNode.classList.add("menu-item--has-toggle")}}},initEachNavToggleSubmenuInside:function(a){var b=a.querySelectorAll(".menu-item-has-children");if(b.length)for(let a=0;a<b.length;a++)b[a].addEventListener("mouseenter",function(){if(b[a].querySelector("ul.sub-menu")){var c=b[a].querySelector("ul.sub-menu"),d=window.kadence.getOffset(c),e=d.left,f=c.offsetWidth,g=window.innerWidth;e+f<=g||c.classList.add("sub-menu-edge")}})},toggleSubMenu:function(a,b){if(!a||"LI"!==a.tagName||!a.querySelector("ul"))return;var c=a.querySelector(".dropdown-nav-special-toggle"),d=a.querySelector("ul"),e=a.querySelector(".nav-drop-title-wrap").firstChild.textContent.trim();let f=a.classList.contains("menu-item--toggled-on")||d&&d.classList.contains("opened");void 0!==b&&"boolean"==typeof b&&(f=!b);var g=(!f).toString();if(c&&c.setAttribute("aria-expanded",g),f){setTimeout(function(){a.classList.remove("menu-item--toggled-on"),d&&(d.classList.remove("toggle-show"),d.classList.remove("opened")),c&&c.setAttribute("aria-label",e?kadenceConfig.screenReader.expandOf+" "+e:kadenceConfig.screenReader.expand)