jQuery(function ($) { "use strict"; // Superfish for Main Menu $('.main-menu > ul').superfish({ delay: 500, animation: { opacity: 'show', height: 'show' }, speed: 'fast' }); // Sticky Navbar function navbarFixed() { const $header = $('.main-header.is-sticky-on'); if ($header.length) { $(window).on('scroll', function () { const scroll = $(window).scrollTop(); if (scroll >= 295) { $header.addClass('header-fixed'); } else { $header.removeClass('header-fixed'); } }); } } navbarFixed(); // Navbar Menubar Focus Handler $('.navbar-menubar.responsive-menu .navbar-nav a').on('focus blur', function () { $(this).parents('ul, li').toggleClass('focus'); }); // Navbar Toggler for Responsive Menu $(".navbar-toggler").on("click", function (e) { const $this = $(this); const expanded = $this.attr('aria-expanded') === 'true'; const $menu = $(".navbar-menubar"); const focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'; const firstFocusable = $menu.find(focusableElements).first(); const lastFocusable = $menu.find(focusableElements).last(); $menu.toggleClass('active', !expanded); if (!expanded) { firstFocusable.focus(); e.preventDefault(); } // Keyboard Navigation document.addEventListener("keydown", function (ev) { if (ev.key === "Tab" || ev.keyCode === 9) { if (ev.shiftKey) { if (document.activeElement === firstFocusable[0]) { lastFocusable.focus(); ev.preventDefault(); } } else { if (document.activeElement === lastFocusable[0]) { firstFocusable.focus(); ev.preventDefault(); } } } else if (ev.key === "Escape" || ev.keyCode === 27) { $menu.removeClass('active'); $this.focus(); } }); }); // Dropdown Menu Icon const $dropdownToggle = $('.navbar-nav.main-nav .dropdown > a.nav-link'); $dropdownToggle.after(''); $dropdownToggle.removeAttr('data-bs-toggle data-bs-target aria-expanded data-bs-name aria-haspopup'); $(document).on('click', '.navbar-nav.main-nav .dropdown > button.dropdown-icon', function () { $(this).parent(".menu-item").toggleClass("show").find(".sub-menu").slideToggle(); }); // Reset Sub-menu on Resize $(window).on('resize', function () { if (window.matchMedia("(min-width: 992px)").matches) { $('.sub-menu.collapse').removeAttr('style'); } }); // Scroll to Top Button const $scrollTopBtn = $('#scrolltop'); $(window).scroll(function () { $(window).scrollTop() > 300 ? $scrollTopBtn.addClass('scroll') : $scrollTopBtn.removeClass('scroll'); }); $scrollTopBtn.on('click', function (e) { e.preventDefault(); $('html, body').animate({ scrollTop: 0 }, '300'); }); // Preloader $(window).on('load', function () { $(".loading").delay(2000).fadeOut("slow"); }); // Search focus handler function searchFocusHandler() { const searchFirstTab = $('.inner_searchbox input[type="search"]'); const searchLastTab = $('button.search-close'); $(".open-search").click(function(e) { e.preventDefault(); e.stopPropagation(); $('body').addClass("search-focus"); searchFirstTab.focus(); }); $("button.search-close").click(function(e) { e.preventDefault(); e.stopPropagation(); $('body').removeClass("search-focus"); $(".open-search").focus(); }); // Redirect last tab to first input searchLastTab.on('keydown', function(e) { if ($('body').hasClass('search-focus') && e.which === 9 && !e.shiftKey) { e.preventDefault(); searchFirstTab.focus(); } }); // Redirect first shift+tab to last input searchFirstTab.on('keydown', function(e) { if ($('body').hasClass('search-focus') && e.which === 9 && e.shiftKey) { e.preventDefault(); searchLastTab.focus(); } }); // Allow escape key to close menu $('.inner_searchbox').on('keyup', function(e) { if ($('body').hasClass('search-focus') && e.keyCode === 27) { $('body').removeClass('search-focus'); searchLastTab.focus(); } }); } searchFocusHandler(); // Sticky Header $(window).scroll(function () { const $stickyHeader = $('.sticky-header'); $(window).scrollTop() >= 100 ? $stickyHeader.addClass('fixed-header') : $stickyHeader.removeClass('fixed-header'); }); // Owl Carousel Initialization $('#slider .owl-carousel').owlCarousel({ loop: true, margin: 10, nav: false, dots: true, autoplay: true, autoplayTimeout: 5000, items: 1 }); });