PageSourceSearch

https://vitavohealth.com/hubfs/hub_generated/module_assets/1/18010…/1743400180423/module_mega-menu.min.js

js vitavohealth.com collected 2026-10-08 23:37:34 UTC 9,201 bytes, 1 lines download raw bytes

1var module_180101962564=void function(){let uniqueId=0;function Accordion(selectorOrElement,userOptions){const _this=this;let eventsAttached=!1;const core={init(){this.options=Object.assign({duration:500,ariaEnabled:!0,collapse:!0,showMultiple:!1,onlyChildNodes:!0,elementClass:"menu-drop",triggerClass:"drop-trigger",panelClass:"menu-drop-panel",activeClass:"is-active",beforeOpen:()=>{},onOpen:()=>{},beforeClose:()=>{},onClose:()=>{}},userOptions),this.container="string"==typeof selectorOrElement?document.querySelector(selectorOrElement):selectorOrElement,this.createDefinitions(),_this.attachEvents()},createDefinitions(){const{elementClass:elementClass}=this.options,allElements=this.container.querySelectorAll(`:scope > .${elementClass}`);this.elements=Array.from(allElements).filter((el=>el.classList&&el.classList.contains(elementClass))),this.firstElement=this.elements[0],this.lastElement=this.elements[this.elements.length-1],this.elements.filter((element=>!element.classList.contains("js-enabled"))).forEach((element=>{element.classList.add("js-enabled"),this.generateIDs(element),this.setARIA(element),this.setTransition(element),this.elements.indexOf(element),uniqueId++}))},setTransition(element,clear=!1){const{duration:duration,panelClass:panelClass}=this.options,panel=element.querySelector(`:scope > .${panelClass}`),transition=isWebkit("transitionDuration");panel.style[transition]=clear?null:`${duration}ms`},generateIDs(element){const{triggerClass:triggerClass,panelClass:panelClass}=this.options,trigger=element.querySelector(`:scope > .${triggerClass}`),panel=element.querySelector(`:scope > .${panelClass}`);element.setAttribute("id",`ac-${uniqueId}`),trigger.setAttribute("id",`ac-trigger-${uniqueId}`),panel.setAttribute("id",`ac-panel-${uniqueId}`)},removeIDs(element){const{triggerClass:triggerClass,panelClass:panelClass}=this.options,trigger=element.querySelector(`:scope > .${triggerClass}`),panel=element.querySelector(`:scope > .${panelClass}`);element.removeAttribute("id"),trigger.removeAttribute("id"),panel.removeAttribute("id")},setARIA(element){const{ariaEnabled:ariaEnabled,triggerClass:triggerClass,panelClass:panelClass}=this.options;if(!ariaEnabled)return;const trigger=element.querySelector(`:scope > .${triggerClass}`),panel=element.querySelector(`:scope > .${panelClass}`);trigger.setAttribute("role","button"),trigger.setAttribute("aria-controls",`ac-panel-${uniqueId}`),trigger.setAttribute("aria-disabled",!1),trigger.setAttribute("aria-expanded",!1),panel.setAttribute("role","region"),panel.setAttribute("aria-labelledby",`ac-trigger-${uniqueId}`)},updateARIA(element,{ariaExpanded:ariaExpanded,ariaDisabled:ariaDisabled}){const{ariaEnabled:ariaEnabled,triggerClass:triggerClass}=this.options;if(!ariaEnabled)return;const trigger=element.querySelector(`:scope > .${triggerClass}`);trigger.setAttribute("aria-expanded",ariaExpanded),trigger.setAttribute("aria-disabled",ariaDisabled)},removeARIA(element){const{ariaEnabled:ariaEnabled,triggerClass:triggerClass,panelClass:panelClass}=this.options;if(!ariaEnabled)return;const trigger=element.querySelector(`:scope > .${triggerClass}`),panel=element.querySelector(`:scope > .${panelClass}`);trigger.removeAttribute("role"),trigger.removeAttribute("aria-controls"),trigger.removeAttribute("aria-disabled"),trigger.removeAttribute("aria-expanded"),panel.removeAttribute("role"),panel.removeAttribute("aria-labelledby")},focus(e,element){e.preventDefault();const{triggerClass:triggerClass}=this.options;element.querySelector(`:scope > .${triggerClass}`).focus()},focusFirstElement(e){this.focus(e,this.firstElement),this.currFocusedIdx=0},focusLastElement(e){this.focus(e,this.lastElement),this.currFocusedIdx=this.elements.length-1},focusNextElement(e){const nextElIdx=this.currFocusedIdx+1;if(nextElIdx>this.elements.length-1)return this.focusFirstElement(e);this.focus(e,this.elements[nextElIdx]),this.currFocusedIdx=nextElIdx},focusPrevElement(e){const prevElIdx=this.currFocusedIdx-1;if(prevElIdx<0)return this.focusLastElement(e);this.focus(e,this.elements[prevElIdx]),this.currFocusedIdx=prevElIdx},showElement(element,calcHeight=!0){const{panelClass:panelClass,activeClass:activeClass,collapse:collapse,beforeOpen:beforeOpen}=this.options,panel=element.querySelector(`:scope > .${panelClass}`),trigger=element.querySelector(":scope > .drop-trigger"),height=panel.scrollHeight;element.classList.add(activeClass),calcHeight&&beforeOpen(element),requestAnimationFrame((()=>{requestAnimationFrame((()=>{panel.style.height=calcHeight?`${height}px`:"auto";const header=document.getElementById("header");console.log("true"===trigger.getAttribute("aria-expanded")),header&&header.classList.contains("header--fixed")&&"true"===trigger.getAttribute("aria-expanded")&&panel.classList.contains("mega-drop")&&(panel.style.height="calc(100vh - 4rem)",panel.style.overflowY="scroll",document.body.classList.add("js-noscroll"))}))})),this.updateARIA(element,{ariaExpanded:!0,ariaDisabled:!collapse})},closeElement(element,calcHeight=!0){const{panelClass:panelClass,activeClass:activeClass,beforeClose:beforeClose}=this.options,panel=element.querySelector(`:scope > .${panelClass}`),height=panel.scrollHeight;element.classList.remove(activeClass),calcHeight?(beforeClose(element),requestAnimationFrame((()=>{panel.style.height=`${height}px`,requestAnimationFrame((()=>{panel.style.height=0,panel.style.overflowY="",document.body.classList.remove("js-noscroll")}))})),this.updateARIA(element,{ariaExpanded:!1,ariaDisabled:!1})):(panel.style.height=0,panel.style.overflowY="",document.body.classList.remove("js-noscroll"))},toggleElement(element){const{activeClass:activeClass,collapse:collapse}=this.options,isActive=element.classList.contains(activeClass);
1if(!isActive||collapse)return isActive?this.closeElement(element):this.showElement(element)},closeElements(){const{activeClass:activeClass,showMultiple:showMultiple}=this.options;showMultiple||this.elements.forEach(((element,idx)=>{element.classList.contains(activeClass)&&idx!==this.currFocusedIdx&&this.closeElement(element)}))},handleClick(e){const target=e.currentTarget;this.elements.forEach(((element,idx)=>{element.contains(target)&&"A"!==e.target.nodeName&&(this.currFocusedIdx=idx,this.closeElements(),this.focus(e,element),this.toggleElement(element))}))},handleKeydown(e){const KEYS_ARROW_UP=38,KEYS_ARROW_DOWN=40,KEYS_HOME=36,KEYS_END=35;switch(e.keyCode){case KEYS_ARROW_UP:return this.focusPrevElement(e);case KEYS_ARROW_DOWN:return this.focusNextElement(e);case KEYS_HOME:return this.focusFirstElement(e);case KEYS_END:return this.focusLastElement(e);default:return null}},handleTransitionEnd(e){if("height"!==e.propertyName)return;const{onOpen:onOpen,onClose:onClose}=this.options,panel=e.currentTarget,height=parseInt(panel.style.height),element=this.elements.find((element=>element.contains(panel)));height>0?(panel.style.height="auto",onOpen(element)):onClose(element)}};this.attachEvents=()=>{if(eventsAttached)return;const{triggerClass:triggerClass,panelClass:panelClass}=core.options;core.handleClick=core.handleClick.bind(core),core.handleKeydown=core.handleKeydown.bind(core),core.handleTransitionEnd=core.handleTransitionEnd.bind(core),core.elements.forEach((element=>{const trigger=element.querySelector(`:scope > .${triggerClass}`),panel=element.querySelector(`:scope > .${panelClass}`);trigger.addEventListener("click",core.handleClick),trigger.addEventListener("keydown",core.handleKeydown),panel.addEventListener("webkitTransitionEnd",core.handleTransitionEnd),panel.addEventListener("transitionend",core.handleTransitionEnd)})),eventsAttached=!0},this.detachEvents=()=>{if(!eventsAttached)return;const{triggerClass:triggerClass,panelClass:panelClass}=core.options;core.elements.forEach((element=>{const trigger=element.querySelector(`:scope > .${triggerClass}`),panel=element.querySelector(`:scope > .${panelClass}`);trigger.removeEventListener("click",core.handleClick),trigger.removeEventListener("keydown",core.handleKeydown),panel.removeEventListener("webkitTransitionEnd",core.handleTransitionEnd),panel.removeEventListener("transitionend",core.handleTransitionEnd)})),eventsAttached=!1},this.toggle=elIdx=>{const el=core.elements[elIdx];el&&core.toggleElement(el)},this.open=elIdx=>{const el=core.elements[elIdx];el&&core.showElement(el)},this.openAll=()=>{core.elements.forEach((element=>core.showElement(element,!1)))},this.close=elIdx=>{const el=core.elements[elIdx];el&&core.closeElement(el)},this.closeAll=()=>{core.elements.forEach((element=>core.closeElement(element,!1)))},this.destroy=()=>{this.detachEvents(),this.openAll(),core.elements.forEach((element=>{core.removeIDs(element),core.removeARIA(element),core.setTransition(element,!0)})),eventsAttached=!0},this.update=()=>{core.createDefinitions(),this.detachEvents(),this.attachEvents()};const isWebkit=property=>"string"==typeof document.documentElement.style[property]?property:property=`webkit${property=capitalizeFirstLetter(property)}`,capitalizeFirstLetter=string=>string.charAt(0).toUpperCase()+string.slice(1);core.init()}new Accordion(".main-nav-list"),Array.from(document.querySelectorAll(".sub-menu-drop")).forEach((el=>new Accordion(el)))}();

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.