PageSourceSearch

https://www.telefonica.com/en/wp-content/themes/telefonica-theme/js/menu-accesibility.min.js?ver=1788364411

js telefonica.com collected 2026-09-24 06:43:54 UTC 9,916 bytes, 1 lines download raw bytes

1document.addEventListener("DOMContentLoaded",function(){function updateAriaLabelSubMenu(button,force){if("undefined"===typeof force)force=false;const siblingLink=button.previousElementSibling;let linkText="";if(siblingLink&&"A"===siblingLink.tagName)linkText=siblingLink.textContent.trim();let action="";if(!force){if(action="true"===button.getAttribute("aria-expanded")?"Cerrar submenú":"Abrir submenú","es"!==document.documentElement.lang)action="true"===button.getAttribute("aria-expanded")?"Close submenu":"Open submenu"}else if(action="true"===force?"Cerrar submenú":"Abrir submenú","es"!==document.documentElement.lang)action="true"===force?"Close submenu":"Open submenu";button.setAttribute("aria-label",action+" "+linkText)}function findToggleButton(listItem){if(!listItem)return null;const directChild=Array.from(listItem.children||[]).find(function(child){return child.matches&&(child.matches("button.sub-menu-view")||child.matches("button.sub-sub-menu-view"))});if(directChild)return directChild;else return listItem.querySelector("button.sub-menu-view, button.sub-sub-menu-view")}function setToggleState(button,expanded){if(!button)return;const state=expanded?"true":"false";button.setAttribute("data-expanded",state),button.setAttribute("aria-expanded",state),updateAriaLabelSubMenu(button,state);const listItem=button.closest("li");if(listItem)listItem.classList.toggle("li_open",expanded);if(button.classList.contains("sub-sub-menu-view")){const nestedSubMenu=button.nextElementSibling;if(nestedSubMenu&&nestedSubMenu.classList.contains("sub-menu"))nestedSubMenu.setAttribute("aria-hidden",expanded?"false":"true"),nestedSubMenu.classList.toggle("wrap_open",expanded),nestedSubMenu.setAttribute("data-expanded",state),nestedSubMenu.style.display=expanded?"block":""}else{const controlsId=button.getAttribute("aria-controls");if(controlsId){const targetSubMenu=document.getElementById(controlsId);if(targetSubMenu){targetSubMenu.setAttribute("aria-hidden",expanded?"false":"true"),targetSubMenu.setAttribute("data-expanded",state),targetSubMenu.classList.toggle("wrap_open",expanded),targetSubMenu.style.display=expanded?"block":"";const innerSubMenu=targetSubMenu.querySelector(".sub-menu");if(innerSubMenu)innerSubMenu.setAttribute("aria-hidden",expanded?"false":"true"),innerSubMenu.setAttribute("data-expanded",state),innerSubMenu.classList.toggle("wrap_open",expanded),innerSubMenu.style.display=expanded?"block":""}}}}function expandCurrentPath(){if(!primaryMenu)return;activePathButtons.clear();let currentMenuItem=primaryMenu.querySelector(".current-menu-item, .current_page_item");let activeItems=[];if(currentMenuItem)activeItems=[currentMenuItem];else{const activeSelectors=".current-menu-ancestor, .current_page_ancestor, .current-menu-parent, .current_page_parent";activeItems=Array.from(primaryMenu.querySelectorAll(activeSelectors))}if(!activeItems.length){const currentPath=window.location.pathname;const allLinks=primaryMenu.querySelectorAll("a[href]");const matchingLinks=Array.from(allLinks).filter(function(link){const linkPath=new URL(link.href).pathname;return 0===currentPath.indexOf(linkPath)&&"/"!==linkPath});if(matchingLinks.length>0)matchingLinks.sort(function(a,b){return new URL(b.href).pathname.length-new URL(a.href).pathname.length}),activeItems=[matchingLinks[0].closest("li")].filter(Boolean)}if(!activeItems.length)return;const processed=new Set;activeItems.forEach(function(item){let listItem=item.closest("li");while(listItem&&!processed.has(listItem)){processed.add(listItem);const toggle=findToggleButton(listItem);if(toggle)activePathButtons.add(toggle),setToggleState(toggle,true);listItem=listItem.parentElement?listItem.parentElement.closest("li"):null}})}function initMenu(){mainToggle.classList.add("menu-toggle--close"),mainToggle.setAttribute("aria-expanded","false"),updateTabIndexes(),initSubMenus()}function initSubMenus(){const subSubMenuToggle=document.querySelectorAll(".sub-sub-menu-view");const subMenuToggle=document.querySelectorAll(".sub-menu-view");subSubMenuToggle.forEach(function(button){button.addEventListener("click",function(e){e.stopImmediatePropagation(),toggleSubMenu(this,true)}),button.addEventListener("keydown",function(e){if("Enter"===e.key||" "===e.key)e.preventDefault(),e.stopPropagation(),toggleSubMenu(this,true)})}),subMenuToggle.forEach(function(button){button.addEventListener("click",function(e){e.stopImmediatePropagation(),toggleSubMenu(this,false)}),button.addEventListener("keydown",function(e){if("Enter"===e.key||" "===e.key)e.preventDefault(),e.stopPropagation(),button.setAttribute("data-expanded","fal
1se"),toggleSubMenu(this,false)})})}function updateTabIndexes(){if(!menuOpen)primaryMenu.querySelectorAll(":scope > li > a").forEach(function(item){item.setAttribute("tabindex","0")}),document.querySelectorAll(".sub-menu a, .sub-menu button").forEach(function(item){item.setAttribute("tabindex","-1")}),primaryMenu.querySelectorAll(":scope > li > button").forEach(function(button){button.setAttribute("tabindex","0")});else document.querySelectorAll("#primary-menu a, #primary-menu button").forEach(function(item){item.setAttribute("tabindex","0")});if(menuOpen){const tabbableElements=Array.from(document.querySelectorAll("#primary-menu > li > a, #primary-menu > li > button, #tf-main-toggle"));firstTabbableElement=tabbableElements[0],lastTabbableElement=tabbableElements[tabbableElements.length-1]}}function openMenu(){if(menuOpen=true,page.classList.add("menu--open"),body.classList.add("hide--scroll"),mainToggle.classList.remove("menu-toggle--close"),mainToggle.setAttribute("aria-expanded","true"),expandCurrentPath(),updateTabIndexes(),firstTabbableElement)firstTabbableElement.focus();if(null!==containerMenuMicrosite)containerMenuMicrosite.style.display="block";updateMenuHeight()}function closeMenu(){if(menuOpen=false,containerMenu.style.minHeight="auto",page.classList.remove("menu--open"),page.classList.remove("menu--openLang"),body.classList.remove("hide--scroll"),mainToggle.classList.add("menu-toggle--close"),mainToggle.setAttribute("aria-expanded","false"),document.querySelectorAll(".sub-menu-view, .sub-sub-menu-view").forEach(function(button){if(!activePathButtons.has(button))setToggleState(button,false)}),updateTabIndexes(),null!==containerMenuMicrosite)containerMenuMicrosite.style.display="none";mainToggle.focus()}function toggleSubMenu(button,isThirdLevel){if(!button)return;const currentState=button.getAttribute("data-expanded");const isExpanded="true"===currentState;const controlsId=button.getAttribute("aria-controls");const subMenu=controlsId?document.getElementById(controlsId):button.nextElementSibling;if(isExpanded)setToggleState(button,false);else{const selector=isThirdLevel?".sub-sub-menu-view":".sub-menu-view";if(document.querySelectorAll(selector).forEach(function(btn){if(btn!==button&&("true"===btn.getAttribute("data-expanded")||"initial"===btn.getAttribute("data-expanded")))setToggleState(btn,false)}),setToggleState(button,true),"initial"===currentState){const parentLi=button.closest("li");if(parentLi&&(parentLi.classList.contains("current-menu-item")||parentLi.classList.contains("current-menu-ancestor")))return void setToggleState(button,false)}}if(updateMenuHeight(),!isExpanded&&subMenu){const firstFocusable=subMenu.querySelector("a, button");if(firstFocusable)firstFocusable.focus()}}function updateMenuHeight(){if(actualItemMenu=document.querySelector("#primary-menu > .current-menu-item"),actualItemSubMenu=document.querySelector("#primary-menu > .current-menu-ancestor"),actualItemMenu){const subMenu=actualItemMenu.querySelector(".sub-menu");if(subMenu)heightSubMenu=subMenu.offsetHeight+150}else if(actualItemSubMenu){const subMenu=actualItemSubMenu.querySelector(".sub-menu");if(subMenu)heightSubMenu=subMenu.offsetHeight+150}if(heightSubMenu>0)containerMenu.style.minHeight=heightSubMenu+"px"}function handleKeyboardNavigation(event){if(menuOpen){if("Tab"===event.key)if(event.shiftKey&&document.activeElement===firstTabbableElement)event.preventDefault(),lastTabbableElement.focus();else if(!event.shiftKey&&document.activeElement===lastTabbableElement)event.preventDefault(),firstTabbableElement.focus();else if(!event.shiftKey&&document.activeElement===mainToggle)event.preventDefault(),firstTabbableElement.focus();if("Escape"===event.key){const liElement=document.activeElement.closest("li");const activeSubMenuButton=liElement?liElement.querySelector(".sub-menu-view, .sub-sub-menu-view"):void 0;if(activeSubMenuButton&&"true"===activeSubMenuButton.getAttribute("aria-expanded"))toggleSubMenu(activeSubMenuButton,activeSubMenuButton.classList.contains("sub-sub-menu-view")),event.stopPropagation();else closeMenu()}if("Escape"===event.key||"Enter"===event.key&&lastTabbableElement===document.activeElement&&document.activeElement===document.querySelector(":focus"))closeMenu()}}
1const mainToggle=document.getElementById("tf-main-toggle");const primaryMenu=document.getElementById("primary-menu");const page=document.getElementById("page");const containerMenu=document.querySelector(".menu-primary-container");const body=document.body;const containerMenuMicrosite=document.querySelector(".menu-primary-container.microsite");const contenedorMenu=document.getElementById("site-navigation");let menuOpen=false;let firstTabbableElement=null;let lastTabbableElement=null;let actualItemMenu=null;let actualItemSubMenu=null;let heightSubMenu=0;let activePathButtons=new Set;mainToggle.addEventListener("click",function(){if(menuOpen)closeMenu();else openMenu()}),mainToggle.addEventListener("keydown",function(event){if("Enter"===event.key||" "===event.key)if(event.preventDefault(),menuOpen)closeMenu();else openMenu()}),document.addEventListener("keydown",handleKeyboardNavigation),document.addEventListener("click",function(event){if(menuOpen&&!contenedorMenu.contains(event.target)&&event.target!==mainToggle)closeMenu()}),initMenu()});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.