// Menu Functions function coffee_tea_openNav() { jQuery(".sidenav").addClass('show'); } function coffee_tea_closeNav() { jQuery(".sidenav").removeClass('show'); } /////////////////////// Focus handling /////////////////////// (function(window, document) { function coffee_tea_handleMobileMenuNavigation() { document.addEventListener('keydown', function(e) { if (window.innerWidth > 991) return; const nav = document.querySelector('.sidenav.show'); if (!nav) return; const focusableElements = Array.from(nav.querySelectorAll( 'a, button, [tabindex="0"], input, [tabindex]:not([tabindex="-1"])' )).filter(el => el.offsetParent !== null); if (focusableElements.length === 0) return; const firstElement = focusableElements[0]; const lastElement = focusableElements[focusableElements.length - 1]; const activeElement = document.activeElement; if (e.key === 'Tab') { if (!e.shiftKey && activeElement === lastElement) { e.preventDefault(); firstElement.focus(); } else if (e.shiftKey && activeElement === firstElement) { e.preventDefault(); lastElement.focus(); } else if (!nav.contains(activeElement)) { e.preventDefault(); firstElement.focus(); } return; } if (e.key === 'Tab' && e.shiftKey) { const activeElement = document.activeElement; if (activeElement.closest('.dropdown-menu')) { e.preventDefault(); //current submenu const currentSubmenu = activeElement.closest('.dropdown-menu'); const submenuItems = Array.from(currentSubmenu.querySelectorAll('a, button, [tabindex="0"]')) .filter(el => el.offsetParent !== null); const currentIndex = submenuItems.indexOf(activeElement); if (currentIndex > 0) { submenuItems[currentIndex - 1].focus(); } else { const parentDropdown = currentSubmenu.closest('.dropdown, .page_item_has_children'); if (parentDropdown) { // Find all focusable elements in parent const allFocusable = Array.from(parentDropdown.querySelectorAll('a, button, [tabindex="0"]')) .filter(el => el.offsetParent !== null); // Filter to only direct children of parentDropdown const parentItems = allFocusable.filter(el => el.parentElement === parentDropdown); if (parentItems.length > 0) { parentItems[0].focus(); } } } } } }); } document.addEventListener('DOMContentLoaded', function() { coffee_tea_handleMobileMenuNavigation(); document.addEventListener('focusin', function(e) { if (window.innerWidth > 991) return; const focusedItem = e.target; const submenu = focusedItem.closest('.dropdown-menu'); if (submenu) { submenu.style.display = 'block'; submenu.classList.add('show'); } }); }); })(window, document); /////////////////////// end /////////////////////// jQuery(function($) { "use strict"; // Scroll to top button let scrollTopButton = $('#scrolltop'); $(window).scroll(function() { if ($(window).scrollTop() > 300) { scrollTopButton.addClass('scroll'); } else { scrollTopButton.removeClass('scroll'); } }); scrollTopButton.on('click', function(e) { e.preventDefault(); $('html, body').animate({ scrollTop: 0 }, '300'); }); // Loading screen (preloader) window.addEventListener('load', function() { $(".loading").delay(2000).fadeOut("slow"); }); /////////////////////// Menu events binding /////////////////////// $(document).ready(function () { /*--- adding dropdown class to menu -----*/ $("ul.sub-menu,ul.children").parent().addClass("dropdown"); $("ul.sub-menu,ul.children").addClass("dropdown-menu"); $("ul#menuid li.dropdown a,ul.children li.dropdown a").addClass("dropdown-toggle"); $("ul.sub-menu li a,ul.children li a").removeClass("dropdown-toggle"); $('nav li.dropdown > a, .page_item_has_children a').append(''); $('a.dropdown-toggle').attr('data-toggle', 'dropdown'); /*-- Mobile menu --*/ if ($('#site-navigation').length) { $('#site-navigation .menu li.dropdown,li.page_item_has_children').append(function () { return ''; }); $('#site-navigation .menu li.dropdown .fas,li.page_item_has_children .fas').on('click', function () { $(this).parent('li').children('ul').slideToggle().toggleClass('show'); }); } /*-- tooltip --*/ $('[data-toggle="tooltip"]').tooltip(); /*-- Button Up --*/ var btnUp = $('
', { 'class': 'btntoTop' }); btnUp.appendTo('body'); $(document).on('click', '.btntoTop', function (e) { e.preventDefault(); $('html, body').animate({ scrollTop: 0 }, 700); }); $(window).on('scroll', function () { if ($(this).scrollTop() > 200) $('.btntoTop').addClass('active'); else $('.btntoTop').removeClass('active'); }); /*-- Reload page when width is between 320 and 768px and only from desktop */ var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ? true : false; $(window).on('resize', function () { var win = $(this); //this = window if (win.width() > 320 && win.width() < 991 && isMobile == false && !$("body").hasClass("elementor-editor-active")) { location.reload(); } }); }); /////////////////////// end /////////////////////// // Scroll to top button var btn = $('#scrolltop'); $(window).scroll(function() { if ($(window).scrollTop() > 300) { btn.addClass('scroll'); } else { btn.removeClass('scroll'); } }); btn.on('click', function(e) { e.preventDefault(); $('html, body').animate({scrollTop: 0}, '300'); }); // Loading screen fade out window.addEventListener('load', function() { $(".loading").delay(2000).fadeOut("slow"); }); // Sticky header $(window).scroll(function() { var sticky = $('.sticky-header'), scroll = $(window).scrollTop(); if (scroll >= 100) sticky.addClass('fixed-header'); else sticky.removeClass('fixed-header'); }); }); // slider jQuery(document).ready(function($){ var owl = $('#slider-section .owl-carousel'); owl.owlCarousel({ margin: 20, nav: false, autoplay: false, lazyLoad: false, autoplayTimeout: 3000, loop: true, dots: false, responsive: { 0: { items: 1 }, 600: { items: 1 }, 900: { items: 1 }, 1200: { items: 1 } }, autoplayHoverPause: true, mouseDrag: true, rtl: $('body').hasClass('rtl') // Check if body has "rtl" class }); }); // product jQuery(document).ready(function($){ $("#product-carousel").owlCarousel({ loop: true, margin: 20, nav: true, dots: false, autoplay: false, autoplayTimeout: 3000, autoplayHoverPause: true, smartSpeed: 800, responsive:{ 0:{ items:1 }, 600:{ items:3 }, 900:{ items:3 }, 1200:{ items:4 } } }); }); // product icon document.addEventListener('DOMContentLoaded', function() { var productImages = document.querySelectorAll('.product-images'); productImages.forEach(function(image) { var icon = image.querySelector('.icon'); if (!icon) { image.classList.add('no-icon'); } }); });