"use strict"; var DEOTHEMES = DEOTHEMES || {}; (function () { // Detect Browser Width (function () { if (Modernizr.mq("(min-width: 0px)")) { // Browsers that support media queries minWidth = function minWidth(width) { return Modernizr.mq("(min-width: " + width + "px)"); }; } else { // Fallback for browsers that does not support media queries minWidth = function minWidth(width) { return window.width() >= width; }; } })(); DEOTHEMES.initialize = { init: function init() { DEOTHEMES.initialize.scrollToTop(); DEOTHEMES.initialize.menuAccessibility(); DEOTHEMES.initialize.mobileAccessibility(); DEOTHEMES.initialize.mobileNavigation(); DEOTHEMES.initialize.masonry(); DEOTHEMES.initialize.menuSearch(); DEOTHEMES.initialize.responsiveTables(); DEOTHEMES.initialize.skipLinkFocus(); DEOTHEMES.initialize.detectMobile(); DEOTHEMES.initialize.detectIE(); }, preloader: function preloader() { var loaderMask = document.querySelector(".loader-mask"); var loader = document.querySelector(".loader"); if (loader) { loader.style.opacity = "0"; setTimeout(function () { loaderMask.style.opacity = "0"; }, 350); loaderMask.style.opacity = "0"; loaderMask.addEventListener("transitionend", function () { loaderMask.remove(); loaderMask.classList.add("preloader--loaded"); }); } }, triggerResize: function triggerResize() { resizeEvent.initUIEvent("resize", true, false, window, 0); window.dispatchEvent(resizeEvent); }, scrollToTopScroll: function scrollToTopScroll() { var scroll = window.scrollY; if (!backToTop) { return; } if (scroll >= 50) { backToTop.classList.add("show"); } else { backToTop.classList.remove("show"); } }, scrollToTop: function scrollToTop() { if (!backToTop) { return; } backToTop.addEventListener("click", function (e) { e.preventDefault(); if (document.scrollingElement.scrollTop === 0) return; var totalScrollDistance = document.scrollingElement.scrollTop; var scrollY = totalScrollDistance, oldTimestamp = null; function step(newTimestamp) { if (oldTimestamp !== null) { scrollY -= totalScrollDistance * (newTimestamp - oldTimestamp) / 350; if (scrollY <= 0) return document.scrollingElement.scrollTop = 0; document.scrollingElement.scrollTop = scrollY; } oldTimestamp = newTimestamp; window.requestAnimationFrame(step); } window.requestAnimationFrame(step); }); }, menuAccessibility: function menuAccessibility() { // Get all the link elements within the primary menu. var i, links = document.querySelectorAll(".eversor-nav-menu__item, .nav__menu a"), menu = document.querySelectorAll(".eversor-nav-menu__list, .nav__menu"); if (0 === menu.length) { return false; } // Each time a menu link is focused or blurred, toggle focus. for (i = 0; i < links.length; i++) { links[i].addEventListener("focus", toggleFocus, true); links[i].addEventListener("blur", toggleFocus, true); } function hasClass(element, className) { return (" " + element.className + " ").indexOf(" " + className + " ") > -1; } // Sets or removes the .focus class on an element. function toggleFocus() { var self = this; menu = hasClass(self, "eversor-nav-menu__item") ? "eversor-nav-menu__list" : "nav__menu"; // Move up through the ancestors of the current link until we hit menu list class. while (-1 === self.className.indexOf(menu)) { // On li elements toggle the class .focus. if ("li" === self.tagName.toLowerCase()) { if (-1 !== self.className.indexOf("focus")) { self.className = self.className.replace(" focus", ""); } else { self.className += " focus"; } } self = self.parentElement; } } }, mobileAccessibility: function mobileAccessibility() { document.addEventListener("keydown", function (e) { var tabKey, shiftKey, selectors, elements, mobileMenu, activeEl, lastEl, firstEl; if (body.classList.contains("showing-modal")) { var trapFocus = function trapFocus(firstEl, lastEl) { tabKey = e.key === "Tab" || e.keyCode === 9; shiftKey = e.shiftKey; if (!shiftKey && tabKey && lastEl === activeEl) { e.preventDefault(); firstEl.focus(); } if (shiftKey && tabKey && firstEl === activeEl) { e.preventDefault(); lastEl.focus(); } }; selectors = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'; activeEl = document.activeElement; // Search if (body.classList.contains("showing-search-modal")) { var search = document.querySelectorAll(".blockst-menu-search"); for (var i = 0; i < search.length; i++) { firstEl = search[i].querySelector(".search-input"); lastEl = search[i].querySelector(".search-button"); trapFocus(firstEl, lastEl); } } // Nav if (body.classList.contains("showing-nav-modal")) { mobileMenu = document.querySelector(".nav__wrap"); firstEl = document.querySelector("#nav__icon-toggle"); elements = mobileMenu.querySelectorAll(selectors); elements = Array.prototype.slice.call(elements); elements = elements.filter(function (element) { return null !== element.offsetParent; }); lastEl = elements[elements.length - 1]; trapFocus(firstEl, lastEl); } } }); }, stickyNavbar: function stickyNavbar() { var navSticky = document.querySelector(".nav--sticky"); if (!navSticky) { return; } var placeholder = navSticky.previousElementSibling; placeholder.style.height = navSticky.offsetHeight + "px"; if (window.scrollY > 190) { navSticky.classList.add("sticky"); navSticky.previousElementSibling.classList.remove("d-none"); } else { navSticky.classList.remove("sticky"); navSticky.previousElementSibling.classList.add("d-none"); } if (window.scrollY > 200) { navSticky.classList.add("offset"); } else { navSticky.classList.remove("offset"); } if (window.scrollY > 500) { navSticky.classList.add("scrolling"); } else { navSticky.classList.remove("scrolling"); } }, stickyNavbarRemove: function stickyNavbarRemove() { var navSticky = document.querySelector(".nav--sticky"); if (!navSticky) { return; } var navDropDownMenu = document.querySelector(".nav__dropdown-menu"); if (!minWidth(tabletBreakpoint)) { navSticky.classList.remove("sticky", "offset", "scrolling"); } if (minWidth(tabletBreakpoint) && navDropDownMenu) { navDropDownMenu.style.display = ""; } }, mobileNavigation: function mobileNavigation() { // Mobile toggle (function () { var navIconToggle = document.querySelectorAll(".nav__icon-toggle"); for (var i = 0; i < navIconToggle.length; i++) { navIconToggle[i].addEventListener("click", function () { var _this = this; this.setAttribute("disabled", ""); body.classList.toggle("showing-modal"); body.classList.toggle("showing-nav-modal"); this.classList.toggle("nav__icon-toggle--is-opened"); setTimeout(function () { _this.removeAttribute("disabled"); }, 350); }); } })(); // Dropdowns var navDropdown = document.querySelector(".nav__dropdown"); var navDropdownMenu = document.querySelector(".nav__dropdown-menu"); var navDropdownTrigger = document.querySelectorAll(".nav__dropdown-trigger"); if (navDropdownTrigger) { for (var i = 0; i < navDropdownTrigger.length; i++) { navDropdownTrigger[i].addEventListener("click", function () { this.classList.toggle("nav__dropdown-trigger--is-open"); DOMAnimations.slideToggle(this.nextElementSibling); var attr = this.getAttribute("aria-expanded"); if (attr == "true") { this.setAttribute("aria-expanded", "false"); } else { this.setAttribute("aria-expanded", "true"); } }); } } if (html.classList.contains("mobile")) { body.addEventListener("click", function () { navDropdownMenu.classList.add("hide-dropdown"); }); navDropdown.addEventListener("click", "> a", function (e) { e.preventDefault(); }); navDropdown.addEventListener("click", function (e) { e.stopPropagation(); navDropdownMenu.classList.remove("hide-dropdown"); }); } }, masonry: function masonry() { var grid = document.getElementById("masonry-grid"); if (!grid) { return; } var masonry = new Masonry(grid, { columnWidth: ".masonry-item", itemSelector: ".masonry-item", percentPosition: true }); imagesLoaded(grid).on("progress", function () { masonry.layout(); }); }, menuSearch: function menuSearch() { var search = document.querySelectorAll(".blockst-menu-search:not(.eversor-menu-search)"); if (!search.length > 0) { return; } var _loop = function _loop() { var trigger = search[i].querySelector(".blockst-menu-search__trigger"), modal = search[i].querySelector(".blockst-menu-search-modal"), inner = search[i].querySelector(".blockst-menu-search-modal__inner"), input = search[i].querySelector(".search-input"); trigger.addEventListener("click", function (e) { e.preventDefault(); bodyScrollLock.disableBodyScroll(modal); body.classList.toggle("showing-modal"); body.classList.toggle("showing-search-modal"); modal.classList.add("blockst-menu-search-modal--is-open"); modal.removeAttribute("aria-hidden"); modal.setAttribute("aria-modal", true); modal.setAttribute("role", "dialog"); setTimeout(function () { input.focus(); }, 200); }); inner.addEventListener("click", function (e) { e.stopPropagation(); }); modal.addEventListener("click", function (e) { closeModal(this); }); /* * Close on click or on esc. */ document.addEventListener("keyup", function (e) { if (27 === e.keyCode) { closeModal(modal); } }); }; for (var i = 0; i < search.length; i++) { _loop(); } function closeModal(modal) { bodyScrollLock.enableBodyScroll(modal); body.classList.remove("showing-modal"); body.classList.remove("showing-search-modal"); modal.classList.remove("blockst-menu-search-modal--is-open"); modal.setAttribute("aria-hidden", true); modal.removeAttribute("aria-modal"); modal.removeAttribute("role"); } }, responsiveTables: function responsiveTables() { var tables = document.querySelectorAll(".wp-block-table"); if (!tables.length > 0) { return; } for (var i = 0; i < tables.length; i++) { var table = tables[i].innerHTML; var tableResponsive = '