1jQuery(document).ready(oxygen_init_megamenu); 2function oxygen_init_megamenu($) { 3 4 var touchEvent = 'ontouchstart' in window ? 'click' : 'click'; 5 6 var url = window.location; 7 var pathname = window.location.pathname; 8 9 let extrasMegaMenu = function(container) { 10 11 $(container).find(".oxy-mega-dropdown_link").filter(function() { 12 return (this.href == url || this.href + '/' == url || this.href == pathname || this.href + '/' == pathname ); 13 }).addClass('oxy-mega-dropdown_link-current'); 14 15 $(container).find('.oxy-mega-dropdown_flyout').has('.current-menu-item').siblings('.oxy-mega-dropdown_link').addClass('oxy-mega-dropdown_link-current-ancestor'); 16 17 $(container).find(".oxy-mega-menu").each(function(i, oxyMegaMenu){ 18 19 var $oxyMegaMenu = $( oxyMegaMenu ), 20 inner = $oxyMegaMenu.children('.oxy-mega-menu_inner'), 21 oxyMegaMenuID = $( oxyMegaMenu ).attr('id'), 22 clicktrigger = inner.data('trigger'), 23 oDelay = inner.data('odelay'), 24 cDelay = inner.data('cdelay'), 25 flyMenu = inner.find('.oxy-mega-dropdown_flyout-click-area').parent('.oxy-mega-dropdown_link'), 26 slideDuration = inner.data('duration'), 27 mouseoverReveal = inner.data('mouseover'), 28 preventScroll = inner.data('prevent-scroll'), 29 hashlinkClose = inner.data('hash-close'), 30 slide_trigger_selector = clicktrigger, 31 slideClickArea = $oxyMegaMenu.find('.oxy-mega-dropdown_icon'), 32 auto_aria = inner.data('auto-aria'); 33 34 inner.find('.oxy-mega-dropdown_link').css("cursor","pointer"); 35 36 37 function ariaExpandToggle($state) { 38 if ( true === auto_aria ) { 39 $(container).find(slide_trigger_selector).each(function(i,trigger) { 40 if ( $(trigger).hasClass('oxy-burger-trigger') && $(trigger).children('.hamburger').length ) { 41 $(trigger).children('.hamburger').attr('aria-expanded', $state); 42 } else { 43 $(trigger).attr('aria-expanded', $state); 44 $(trigger).attr('role','button'); 45 } 46 }); 47 } 48 } 49 50 if ( true === auto_aria ) { 51 52 $(container).find(slide_trigger_selector).each(function(i,trigger) { 53 54 if ( $(trigger).hasClass('oxy-burger-trigger') && $(trigger).children('.hamburger').length ) { 55 $(trigger).children('.hamburger').attr('aria-controls', oxyMegaMenuID); 56 } else { 57 $(trigger).attr('aria-controls', oxyMegaMenuID); 58 } 59 }); 60 61 ariaExpandToggle('false'); 62 } 63 64 $(container).find(slide_trigger_selector).on( touchEvent, function(e) { 65 66 e.stopPropagation(); 67 e.preventDefault(); 68 $oxyMegaMenu.slideToggle(slideDuration); 69 70 if ( true === auto_aria ) { 71 72 if ( 'true' === $(container).find(slide_trigger_selector).attr('aria-expanded') || 'true' === $(container).find(slide_trigger_selector).children('.hamburger').attr('aria-expanded') ) { 73 ariaExpandToggle('false'); 74 } else { 75 ariaExpandToggle('true'); 76 } 77 78 } 79 80 $oxyMegaMenu.children('.oxy-mega-menu_inner').toggleClass('oxy-mega-menu_mobile'); 81 82 if (true === preventScroll) { 83 $('body,html').toggleClass( 'oxy-nav-menu-prevent-overflow' ); 84 } 85 } ); 86 87 88 var megaStatus = false; 89 var mobileStatus = false; 90 var megaInitialised = false; 91 92 // --> Trigger accessible menu just 1x... 93 var triggerMegaMenu = function() { 94 95 if (!megaStatus) { 96 97 megaStatus = true; // so only fires 1x 98 99 if (!megaInitialised) { 100 101 $(oxyMegaMenu).accessibleMegaMenu({ 102 uuidPrefix: oxyMegaMenuID, 103 menuClass: "oxy-mega-menu_inner", 104 topNavItemClass: "oxy-mega-dropdown", 105 panelClass: "oxy-mega-dropdown_inner", 106 panelGroupClass: "mega-column", 107 hoverClass: "oxy-mega-dropdown_inner-hover", 108 focusClass: "oxy-mega-dropdown_inner-focus", 109 openClass: "oxy-mega-dropdown_inner-open", 110 toggleButtonClass: "oxy-burger-trigger", 111 openDelay: oDelay, 112 closeDelay: cDelay, 113 openOnMouseover: mouseoverReveal 114 }); 115
116 megaInitialised = true; 117 118 } else { 119 $(oxyMegaMenu).data('plugin_accessibleMegaMenu').init(); 120 } 121 122 $('.oxy-mega-dropdown_just-link').off( "click" ); 123 124 if (true === inner.data('hovertabs')) { 125 126 $oxyMegaMenu.find('.oxy-tab').attr('tabindex','0'); 127 128 $oxyMegaMenu.find('.oxy-tab').on('mouseenter focus', function() { 129 $(this).click(); 130 }); 131 132 } 133 134 } 135 136 } 137 138 // Only fire the megamenu function is menu is visible (meaning we're not on mobile) 139 var checkMegaDisplay = function() { 140 141 // Desktop 142 if ( 'hidden' === $( oxyMegaMenu ).css("backface-visibility") ) { 143 $(oxyMegaMenu).removeAttr("style"); 144 $(oxyMegaMenu).find('.oxy-mega-dropdown_inner').removeAttr("style"); 145 triggerMegaMenu(); 146 $( oxyMegaMenu ).off( touchEvent ); 147 mobileStatus = false; 148 $('body,html').removeClass( 'oxy-nav-menu-prevent-overflow' ); 149 $(oxyMegaMenu).find('.oxy-mega-menu_inner').removeClass('oxy-mega-menu_mobile'); 150 } 151 // Mobile 152 else { 153 154 // if MegaMenu already init, let's remove it 155 if (megaStatus) { 156 $( oxyMegaMenu).find('.oxy-mega-dropdown_link').removeClass('oxy-mega-dropdown_inner-open'); 157 $( oxyMegaMenu ).data('plugin_accessibleMegaMenu').destroy(); 158 $oxyMegaMenu.find('.oxy-tab').off('mouseenter focus'); 159 megaStatus = false; 160 } 161 162 if (!mobileStatus) { 163 164 mobileStatus = true; // so only fires 1x 165 166 if ($(container).find(slide_trigger_selector).hasClass('oxy-burger-trigger')) { 167 $(container).find(slide_trigger_selector).children('.hamburger').removeClass('is-active'); 168 } 169 170 $( oxyMegaMenu).find('.oxy-mega-dropdown_link[data-expanded=enable]').addClass('oxy-mega-dropdown_inner-open'); 171 172 $( oxyMegaMenu ).off( touchEvent ); 173 $( oxyMegaMenu ).on( touchEvent, '.oxy-mega-menu_mobile li > a', function(e) { 174 175 176 if ($(e.target).closest('.oxy-mega-dropdown_flyout-click-area').length > 0) { 177 178 e.preventDefault(); 179 e.stopPropagation(); 180 oxy_subMenu_toggle(this, slideDuration); 181 } 182 183 else if ($(e.target).attr("href") === "#" && $(e.target).parent().hasClass('menu-item-has-children')) { 184 185 var subflyoutButton = $(e.target).find('.oxy-mega-dropdown_flyout-click-area'); 186 e.preventDefault(); 187 e.stopPropagation(); 188 oxy_subMenu_toggle(subflyoutButton, slideDuration); 189 190 } else if ($(e.target).closest('.oxy-mega-dropdown_link:not(.oxy-mega-dropdown_just-link) .oxy-mega-dropdown_icon').length > 0) { 191 192 e.stopPropagation(); 193 e.preventDefault(); 194 oxy_megaMenu_toggle(this, slideDuration); 195 196 } else if ($(e.target).closest('.oxy-mega-dropdown_link').is('a[href^="#"]') && $(e.target).closest('.oxy-mega-dropdown_link').parent().hasClass('oxy-mega-dropdown') && !$(e.target).closest('.oxy-mega-dropdown_link').hasClass('oxy-mega-dropdown_just-link') ) { 197 198 e.stopPropagation(); 199 e.preventDefault(); 200 oxy_megaMenu_toggle(this, slideDuration); 201 202 } else if ($(e.target).closest('.oxy-mega-dropdown_link').data('disable-link') === 'enable') { 203 204 e.stopPropagation(); 205 e.preventDefault(); 206 oxy_megaMenu_toggle(this, slideDuration); 207 208 } else if ( $(e.target).closest('.oxy-mega-dropdown_link').hasClass('oxy-mega-dropdown_just-link') && $(e.target).closest('.oxy-mega-dropdown_link').is('a[href^="#"]') ) { 209 210 e.stopPropagation(); 211 setTimeout(function() { 212 $(container).find(slide_trigger_selector).trigger('click') 213 }, 0); 214 215 } 216 217 }); 218 219 } 220 221 222 } 223 224 } 225 226 227 checkMegaDisplay(); 228 $(window).on("load resize orientationchange",function(e){ 229 checkMegaDisplay(); 230 }); 231 232 if (true === hashlinkClose) { 233 234 inner.on('click', '.oxy-mega-dropdown_inner a[href*="#"]:not(.menu-item-has-children > a), a.oxy-mega-dropdown_just-link[href*="#"]', function() { 235 236 if ('hidden' === $oxyMegaMenu.css("backface-visibility")) { // If desktop 237 238 $oxyMegaMenu.find('.oxy-mega-dropdown_inner-open').removeClass('oxy-mega-dropdown_inner-open'); 239 240 } else { 241 242 if ( $(this).closest('.oxy-mega-dropdown_inner').siblings('.oxy-mega-dropdown_inner-open').length ) { 243 $(this).closest('.oxy-mega-dropdown_inner').siblings('.oxy-mega-dropdown_inner-open').trigger('click'); 244 } 245 246 $(container).find(slide_trigger_selector).trigger('click'); 247 248 } 249 250 }); 251 252 253 } 254 255 256 }); // each 257 258 259 260 function oxy_subMenu_toggle(trigger, durationData) { 261 $(trigger).closest('.menu-item-has-children').children('.sub-menu').slideToggle( durationData ); 262 $(trigger).closest('.menu-item-has-children').siblings('.menu-item-has-children').children('.sub-menu').slideUp( durationData ); 263 $(trigger).children('.oxy-mega-dropdown_flyout-click-area').attr('aria-expanded', function (i, attr) { 264 return attr == 'true' ? 'false' : 'true' 265 }); 266 267 $(trigger).children('.oxy-mega-dropdown_flyout-click-area').attr('aria-pressed', function (i, attr) { 268 return attr == 'true' ? 'false' : 'true' 269 }); 270 } 271 272 function oxy_megaMenu_toggle(trigger, durationData) { 273 274 var othermenus = $(trigger).parent('.oxy-mega-dropdown').siblings('.oxy-mega-dropdown'); 275 othermenus.find( '.oxy-mega-dropdown_inner' ).slide
275Up( durationData ); 276 othermenus.find( '.oxy-mega-dropdown_link' ).removeClass( 'oxy-mega-dropdown_inner-open' ); 277 278 $(trigger).next('.oxy-mega-dropdown_inner').slideToggle( durationData ); 279 $(trigger).toggleClass( 'oxy-mega-dropdown_inner-open' ); 280 281 $(trigger).attr('aria-expanded', function (i, attr) { 282 return attr == 'true' ? 'false' : 'true' 283 }); 284 285 $(trigger).attr('aria-pressed', function (i, attr) { 286 return attr == 'true' ? 'false' : 'true' 287 }); 288 289 $(trigger).next('oxy-slide-menu_open'); 290 291 292 // Resize carousel as opened if found 293 if ($(trigger).next('.oxy-mega-dropdown_inner').has('.flickity-enabled')) { 294 setTimeout(function() { 295 var carousel = $(trigger).next('.oxy-mega-dropdown_inner').find('.flickity-enabled'); 296 if (carousel.length) { 297 var flkty = Flickity.data( carousel[0] ); 298 flkty.resize(); 299 } 300 }, 100); 301 302 } 303 304 305 } 306 307 308 $('.oxy-mega-dropdown_just-link').parent('.oxy-mega-dropdown').addClass('oxy-mega-dropdown_no-dropdown') 309 310 311 var options = { 312 attributes: true, 313 attributeFilter: ['class'], 314 subtree: true 315 }, 316 observer = new MutationObserver(mCallback); 317 318 function mCallback (mutations) { 319 for (var mutation of mutations) { 320 321 if (mutation.type === 'attributes') { 322 323 if (($(mutation.target).closest('.oxy-mega-menu_inner').has( ".oxy-mega-dropdown_inner-open" ).length) && !($(mutation.target).closest('.oxy-mega-menu_inner').has( ".oxy-mega-dropdown_inner-open.oxy-mega-dropdown_just-link" ).length) ) { 324 $(mutation.target).closest('.oxy-mega-menu_inner').addClass('oxy-mega-menu_active'); 325 } else { 326 $(mutation.target).closest('.oxy-mega-menu_inner').removeClass('oxy-mega-menu_active'); 327 } 328 329 } 330 } 331 } 332 333 var MegaMenus = $(container).find('.oxy-mega-menu_inner[data-type=container]'); 334 MegaMenus.each(function(i, MegaMenu) { 335 observer.observe(MegaMenu, options); 336 }); 337 338 339 $(container).find(".oxy-mega-dropdown_flyout").each(function(i, oxyDropdown){ 340 341 var icon = $(oxyDropdown).data('icon'); 342 343 $(oxyDropdown).find('.menu-item-has-children > a').append('<button tabindex="-1" aria-expanded=\"false\" aria-pressed=\"false\" class=\"oxy-mega-dropdown_flyout-click-area\"><svg class=\"oxy-mega-dropdown_flyout-icon\"><use xlink:href=\"#'+ icon + '\"></use></svg><span class=\"screen-reader-text\">Submenu</span></button>'); 344 345 }); 346 347 } 348 349 extrasMegaMenu('body'); 350 351 // Expose function 352 window.doExtrasMegaMenu = extrasMegaMenu; 353 354}
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.