1/******/ (() => { // webpackBootstrap 2/******/ "use strict"; 3var __webpack_exports__ = {}; 4/*!**************************************************!*\ 5 !*** ./assets/dev/js/frontend/hello-frontend.js ***! 6 \**************************************************/ 7 8 9class elementorHelloThemeHandler { 10 constructor() { 11 this.initSettings(); 12 this.initElements(); 13 this.bindEvents(); 14 } 15 initSettings() { 16 this.settings = { 17 selectors: { 18 header: 'header.site-header', 19 footer: 'footer.site-footer', 20 menuToggle: '.site-header .site-navigation-toggle', 21 menuToggleHolder: '.site-header .site-navigation-toggle-holder', 22 dropdownMenu: '.site-header .site-navigation-dropdown' 23 } 24 }; 25 } 26 initElements() { 27 this.elements = { 28 $window: jQuery(window), 29 $document: jQuery(document), 30 $header: jQuery(this.settings.selectors.header), 31 $footer: jQuery(this.settings.selectors.footer), 32 $menuToggle: jQuery(this.settings.selectors.menuToggle), 33 $menuToggleHolder: jQuery(this.settings.selectors.menuToggleHolder), 34 $dropdownMenu: jQuery(this.settings.selectors.dropdownMenu) 35 }; 36 } 37 bindEvents() { 38 this.elements.$menuToggle.on('click', () => this.handleMenuToggle()).on('keyup', event => { 39 const ENTER_KEY = 13, 40 SPACE_KEY = 32; 41 if (ENTER_KEY === event.keyCode || SPACE_KEY === event.keyCode) { 42 event.currentTarget.click(); 43 } 44 }); 45 this.elements.$dropdownMenu.on('click', '.menu-item-has-children > a', this.handleMenuChildren); 46 } 47 closeMenuItems() { 48 this.elements.$menuToggleHolder.removeClass('elementor-active'); 49 this.elements.$window.off('resize', () => this.closeMenuItems()); 50 } 51 handleMenuToggle() { 52 const isDropdownVisible = !this.elements.$menuToggleHolder.hasClass('elementor-active'); 53 this.elements.$menuToggle.attr('aria-expanded', isDropdownVisible); 54 this.elements.$dropdownMenu.attr('aria-hidden', !isDropdownVisible); 55 this.elements.$menuToggleHolder.toggleClass('elementor-active', isDropdownVisible); 56 57 // Always close all sub active items. 58 this.elements.$dropdownMenu.find('.elementor-active').removeClass('elementor-active'); 59 if (isDropdownVisible) { 60 this.elements.$window.on('resize', () => this.closeMenuItems()); 61 } else { 62 this.elements.$window.off('resize', () => this.closeMenuItems()); 63 } 64 } 65 handleMenuChildren(event) { 66 const $anchor = jQuery(event.currentTarget), 67 $parentLi = $anchor.parent('li'), 68 isSubmenuVisible = $parentLi.hasClass('elementor-active'); 69 if (!isSubmenuVisible) { 70 $parentLi.addClass('elementor-active'); 71 } else { 72 $parentLi.removeClass('elementor-active'); 73 } 74 } 75} 76jQuery(() => { 77 new elementorHelloThemeHandler(); 78}); 79/******/ })() 80; 81//# sourceMappingURL=hello-frontend.js.map
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.