1/* global jQuery bumblebee_nav_2021_data Bumblebee_Nav_Drawer */ 2 3var Bumblebee_Nav_Drawer_2021 = { 4 toggleNavDrawer: function() { 5 var $drawer = jQuery( '#nav-drawer' ); 6 $drawer.toggleClass( 'show' ); 7 8 if ( $drawer.hasClass( 'show' ) ) { 9 Bumblebee_Nav_Drawer.open( '#nav-drawer .menu-wrapper' ); 10 } else { 11 Bumblebee_Nav_Drawer.close(); 12 } 13 }, 14 initialize: function() { 15 if ( jQuery( '.header-nav-2021' ).length ) { 16 return; 17 } 18 19 var dropDownMenu = jQuery( '.menu-hamburger-menu-container' ); 20 dropDownMenu.addClass( 'header-nav-2021' ); 21 22 Bumblebee_Nav_Drawer_2021.addAccountSubmenu(); 23 24 jQuery( '#menu-item-my-account > a' ).on( 'click', Bumblebee_Nav_Drawer_2021.toggleVerticalSubMenu ); 25 26 Bumblebee_Nav_Drawer_2021.showLoginMenuItemsAtTop(); 27 }, 28 addAccountSubmenu: function() { 29 var accountMenu = bumblebee_nav_2021_data.nav_drawer_menu.logged_in_submenu; 30 if ( ! accountMenu ) { 31 return; 32 } 33 var dropDownMenu = jQuery( '.menu-hamburger-menu-container' ); 34 35 jQuery( accountMenu ) 36 .prependTo( dropDownMenu.find( 'ul' ).eq( 0 ) ); 37 jQuery( '#menu-item-my-account a[data-name="Log out"]' ) 38 .closest( 'li' ) 39 .addClass( 'log-out-link' ); 40 }, 41 toggleVerticalSubMenu: function( event ) { 42 var linkSelected = jQuery( event.currentTarget ); 43 var parentMenu = linkSelected.closest( 'ul.hamburger-menu-items' ); 44 var menuItem = linkSelected.closest( 'li' ); 45 var subMenu = linkSelected.next( 'div' ).find( 'ul' ); 46 var isActive = menuItem.hasClass( 'active' ); 47 48 parentMenu.addClass( 'active' ); 49 50 if ( ! isActive ) { 51 menuItem.addClass( 'active' ); 52 subMenu.addClass( 'active' ); 53 } else { 54 Bumblebee_Nav_Drawer_2021.closeVerticalSubMenu( menuItem, subMenu ); 55 } 56 57 // Close submenu if the nav drawer gets closed. 58 jQuery( '.hamburger-close' ).on( 'click', function() { 59 Bumblebee_Nav_Drawer_2021.closeVerticalSubMenu( menuItem, subMenu ); 60 } ); 61 62 // Clear active state if user switches to a different submenu. 63 jQuery( 'ul.hamburger-menu-items > li' ).not( menuItem ).on( 'click', function () { 64 linkSelected.next( 'ul' ) 65 .removeClass( 'active' ) 66 .hide(); 67 } ); 68 }, 69 closeVerticalSubMenu: function( menuItem, subMenu ) { 70 menuItem.removeClass( 'active' ); 71 subMenu 72 .removeClass( 'active' ) 73 .hide(); 74 }, 75 showLoginMenuItemsAtTop: function() { 76 var mainMenu = jQuery( '.header-nav-2021 ul' ); 77 mainMenu.find( 'li.login-class' ) 78 .detach() 79 .prependTo( mainMenu ); 80 }, 81 scrollTopForMenuChangeOnMobile: function() { 82 jQuery( '.header-nav-2021 ul li.menu-item-has-children' ).on( 'click', function() { 83 if( jQuery( window ).width() > 480 ) { 84 return; 85 } 86 jQuery( '.header-nav-2021' ).scrollTop( 0 ); 87 } ); 88 }, 89 scrollStickyHeaderObserver: function() { 90 if ( ! ( 'IntersectionObserver' in window ) ) { 91 return; 92 } 93 94 var observer = new IntersectionObserver( function( entries ) { 95 // Do not apply sticky header on homepage. 96 const home = document.querySelector( 'body.home' ); 97 if ( home ) { 98 return; 99 } 100 101 const isDesktop = window.innerWidth >= 1024; 102 const fixedHeader = document.querySelector( '#header-wrapper .nav-wrapper' ); 103 const recircStrip = document.querySelector( '.tmbi-recirc-strip-sticky-desktop' ); 104 const promoStrap = document.querySelector( '.tmbi-promo-strap-sticky' ); 105 106 if ( entries[0].intersectionRatio === 0 ) { 107 if ( isDesktop ) { 108 if ( ! fixedHeader ) { 109 return; 110 } 111 fixedHeader.classList.add( 'fixed-header' ); 112 document.documentElement.style.setProperty( '--fixed-header-height', fixedHeader.offsetHeight + 'px' ); 113 114 if ( recircStrip ) { 115 recircStrip.style.top = fixedHeader.offsetHeight + 'px'; 116 document.documentElement.style.setProperty( '--recirc-strip-height', recircStrip.offsetHeight + 'px' ); 117 } 118 119 if ( promoStrap ) { 120 promoStrap.style.top = fixedHeader.offsetHeight + 'px'; 121 document.documentElement.style.setProperty( '--recirc-strip-height', promoStrap.offsetHeight + 'px' ); 122 } 123 } else { 124 // Mobile: set --recirc-strip-height. 125 const mobileRecircStripPromo = document.querySelector( '.tmbi-recirc-strip-sticky-mobile' ) || promoStrap; 126 if ( mobileRecircStripPromo ) { 127 document.documentElement.style.setProperty( '--recirc-strip-height', mobileRecircStripPromo.offsetHeight + 'px' ); 128 } 129 } 130 } else if ( entries[0].intersectionRatio === 1 ) { 131 if ( isDesktop && fixedHeader ) { 132 fixedHeader.classList.remove( 'fixed-header' ); 133 } 134 } 135 }, { threshold: [0, 0.5, 1] } ); 136 137 observer.observe( document.querySelector( '.secondary-nav' ) ); 138 } 139}; 140 141 142jQuery( function( $ ) { 143 $( document ).off( 'click', '.hamburger-wrapper, .hamburger-close', Bumblebee_Nav_Drawer.toggleNavDrawer ); 144 $( document ).on( 'click', '.hamburger-wrapper, .hamburger-close', Bumblebee_Nav_Drawer_2021.toggleNavDrawer ); 145 146 Bumblebee_Nav_Drawer_2021.initialize(); 147 Bumblebee_Nav_Drawer.close(); 148 149 Bumblebee_Nav_Drawer_2021.scrollTopForMenuChangeOnMobile(); 150 151 Bumblebee_Nav_Drawer_2021.scrollStickyHeaderObserver(); 152} );
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.