| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /**
- * 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 (isRtl) {
- // If layout is RTL add .dropdown-menu-end class to .dropdown-menu
- Helpers._addClass('dropdown-menu-end', document.querySelectorAll('#layout-navbar .dropdown-menu'));
- // If layout is RTL add .dropdown-menu-end class to .dropdown-menu
- Helpers._addClass('dropdown-menu-end', document.querySelectorAll('.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();
- }
- });
- });
-
- // Mega dropdown
- const megaDropdown = document.querySelectorAll('.nav-link.mega-dropdown');
- if (megaDropdown) {
- megaDropdown.forEach(e => {
- new MegaDropdown(e);
- });
- }
-
- // Get style from local storage or use 'system' as default
- let storedStyle =
- localStorage.getItem('templateCustomizer-' + templateName + '--Theme') || //if no template style then use Customizer style
- (window.templateCustomizer?.settings?.defaultStyle ?? document.documentElement.getAttribute('data-bs-theme')); //!if there is no Customizer then use default style as light
-
- let styleSwitcher = document.querySelector('.dropdown-style-switcher');
- const styleSwitcherIcon = styleSwitcher.querySelector('i');
-
- new bootstrap.Tooltip(styleSwitcherIcon, {
- title: storedStyle.charAt(0).toUpperCase() + storedStyle.slice(1) + ' Mode',
- fallbackPlacements: ['bottom']
- });
-
- // Run switchImage function based on the stored style
- window.Helpers.switchImage(storedStyle);
-
- // Update light/dark image based on current style
- window.Helpers.setTheme(window.Helpers.getPreferredTheme());
-
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
- const storedTheme = window.Helpers.getStoredTheme();
- if (storedTheme !== 'light' && storedTheme !== 'dark') {
- window.Helpers.setTheme(window.Helpers.getPreferredTheme());
- }
- });
-
- function getScrollbarWidth() {
- const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
- document.body.style.setProperty('--bs-scrollbar-width', `${scrollbarWidth}px`);
- }
- getScrollbarWidth();
-
- //Style Switcher (Light/Dark/System Mode)
- window.addEventListener('DOMContentLoaded', () => {
- window.Helpers.showActiveTheme(window.Helpers.getPreferredTheme());
- getScrollbarWidth();
- document.querySelectorAll('[data-bs-theme-value]').forEach(toggle => {
- toggle.addEventListener('click', () => {
- const theme = toggle.getAttribute('data-bs-theme-value');
- window.Helpers.setStoredTheme(templateName, theme);
- window.Helpers.setTheme(theme);
- window.Helpers.showActiveTheme(theme, true);
- window.Helpers.syncCustomOptions(theme);
- let currTheme = theme;
- if (theme === 'system') {
- currTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
- }
- new bootstrap.Tooltip(styleSwitcherIcon, {
- title: theme.charAt(0).toUpperCase() + theme.slice(1) + ' Mode',
- fallbackPlacements: ['bottom']
- });
- window.Helpers.switchImage(currTheme);
- });
- });
- });
- })();
|