/** * Main - Front Pages */ 'use strict'; window.isRtl = window.Helpers.isRtl(); window.isDarkStyle = window.Helpers.isDarkStyle(); (function () { const menu = document.getElementById('navbarSupportedContent'), nav = document.querySelector('.layout-navbar'), navItemLink = document.querySelectorAll('.navbar-nav .nav-link'); // Initialised custom options if checked setTimeout(function () { window.Helpers.initCustomOptionCheck(); }, 1000); // Init BS Tooltip const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl); }); // If layout is RTL add .dropdown-menu-end class to .dropdown-menu if (isRtl) { Helpers._addClass('dropdown-menu-end', document.querySelectorAll('#layout-navbar .dropdown-menu')); } // Navbar window.addEventListener('scroll', e => { if (window.scrollY > 10) { nav.classList.add('navbar-active'); } else { nav.classList.remove('navbar-active'); } }); window.addEventListener('load', e => { if (window.scrollY > 10) { nav.classList.add('navbar-active'); } else { nav.classList.remove('navbar-active'); } }); // Function to close the mobile menu function closeMenu() { menu.classList.remove('show'); } document.addEventListener('click', function (event) { // Check if the clicked element is inside mobile menu if (!menu.contains(event.target)) { closeMenu(); } }); navItemLink.forEach(link => { link.addEventListener('click', event => { if (!link.classList.contains('dropdown-toggle')) { closeMenu(); } else { event.preventDefault(); } }); }); // If layout is RTL add .dropdown-menu-end class to .dropdown-menu if (isRtl) { Helpers._addClass('dropdown-menu-end', document.querySelectorAll('.dropdown-menu')); } // Mega dropdown const megaDropdown = document.querySelectorAll('.nav-link.mega-dropdown'); if (megaDropdown) { megaDropdown.forEach(e => { new MegaDropdown(e); }); } //Style Switcher (Light/Dark/System Mode) let styleSwitcher = document.querySelector('.dropdown-style-switcher'); const activeStyle = document.documentElement.getAttribute('data-style'); // Get style from local storage or use 'system' as default let storedStyle = localStorage.getItem('templateCustomizer-' + templateName + '--Style') || //if no template style then use Customizer style (window.templateCustomizer?.settings?.defaultStyle ?? 'light'); //!if there is no Customizer then use default style as light // Set style on click of style switcher item if template customizer is enabled if (window.templateCustomizer && styleSwitcher) { let styleSwitcherItems = [].slice.call(styleSwitcher.children[1].querySelectorAll('.dropdown-item')); styleSwitcherItems.forEach(function (item) { item.classList.remove('active'); item.addEventListener('click', function () { let currentStyle = this.getAttribute('data-theme'); if (currentStyle === 'light') { window.templateCustomizer.setStyle('light'); } else if (currentStyle === 'dark') { window.templateCustomizer.setStyle('dark'); } else { window.templateCustomizer.setStyle('system'); } }); setTimeout(() => { if (item.getAttribute('data-theme') === activeStyle) { // Add 'active' class to the item if it matches the activeStyle item.classList.add('active'); } }, 1000); }); // Update style switcher icon based on the stored style const styleSwitcherIcon = styleSwitcher.querySelector('i'); if (storedStyle === 'light') { styleSwitcherIcon.classList.add('bx-sun'); new bootstrap.Tooltip(styleSwitcherIcon, { title: 'Light Mode', fallbackPlacements: ['bottom'] }); } else if (storedStyle === 'dark') { styleSwitcherIcon.classList.add('bx-moon'); new bootstrap.Tooltip(styleSwitcherIcon, { title: 'Dark Mode', fallbackPlacements: ['bottom'] }); } else { styleSwitcherIcon.classList.add('bx-desktop'); new bootstrap.Tooltip(styleSwitcherIcon, { title: 'System Mode', fallbackPlacements: ['bottom'] }); } } // Run switchImage function based on the stored style switchImage(storedStyle); // Update light/dark image based on current style function switchImage(style) { if (style === 'system') { if (window.matchMedia('(prefers-color-scheme: dark)').matches) { style = 'dark'; } else { style = 'light'; } } const switchImagesList = [].slice.call(document.querySelectorAll('[data-app-' + style + '-img]')); switchImagesList.map(function (imageEl) { const setImage = imageEl.getAttribute('data-app-' + style + '-img'); imageEl.src = assetsPath + 'img/' + setImage; // Using window.assetsPath to get the exact relative path }); } })();