(function ($) { "use strict"; // Start of use strict /* - Aos animation - To Top - Navbar - Collapse hide show for mobile - Background image - Sidebar filters - Append row - Collapse text - Counter - FileUp - Testimonial - Theia sticky sidebar - Image parallax - Owl carousel - Range slider - Select 2 - Grid container - Popup youtube & gallery - Toggle password - Two step verification form - Tooltip */ /*------------------------------------------- Aos animation --------------------------------------------- */ AOS.init({ // once: true, // whether animation should happen only once - while scrolling down }); /*------------------------------------------- To Top --------------------------------------------- */ $('body').append('
'); $(window).scroll(function () { if ($(this).scrollTop() !== 0) { $('#toTop').fadeIn(); } else { $('#toTop').fadeOut(); } }); $('#toTop').on('click', function () { $("html, body").animate({ scrollTop: 0 }, 600); return false; }); /*------------------------------------------- Navbar --------------------------------------------- */ //navbar add remove calss var header = $(".navbar-transfarent"); $(window).scroll(function () { var scroll = $(window).scrollTop(); if (scroll >= 1) { header.removeClass('navbar-transfarent').addClass("navbar-bg"); } else { header.removeClass("navbar-bg").addClass('navbar-transfarent'); } }); // Navbar collapse hide $(".navbar-collapse .collapse-close").on("click", function () { $(".navbar-collapse").collapse("hide"); }); // navbar toggle icon $('#nav-icon').click(function () { $(this).toggleClass('open'); }); /*------------------------------------------- Collapse hide show for mobile --------------------------------------------- */ if ($('#CollapseText').length) { var collapseText = $('#CollapseText'); $(window).scroll(function () { var scroll = $(window).scrollTop(); if (scroll >= 1) { collapseText.collapse('hide'); } else { collapseText.collapse('show'); } }); } /*------------------------------------------- Background image --------------------------------------------- */ if ($('.js-bg-image').length) { $(".js-bg-image").css("backgroundImage", function () { var bg = "url(" + $(this).data("image-src") + ")"; return bg; }); } /*------------------------------------------- Sidebar filters --------------------------------------------- */ $('.all-filters').on('click', function () { $('.js-sidebar-filters-mobile').toggleClass('active'); $('.map-content').removeClass('opened'); }); $('.sidebarCollapse').on('click', function () { $('.js-sidebar-filters-mobile, .map-content').toggleClass('active'); }); $('#mapCollapse, .map-close-icon').on('click', function () { $('.map-content').toggleClass('opened'); }); $('.filter-close').on('click', function () { $('.js-sidebar-filters-mobile').removeClass('active'); }); /*------------------------------------------- Append row --------------------------------------------- */ var faqs_row = 0; function addItem() { var rowHtml = ''; rowHtml += ''; rowHtml += ''; rowHtml += ''; rowHtml += ''; rowHtml += ''; $('#faqs tbody').append(rowHtml); faqs_row++; } // Use event delegation for dynamically added elements $('#faqs').on('click', '.delete-btn', function () { $(this).closest('tr').remove(); }); // Use jQuery for the "Add New" button click $('.text-center').on('click', 'button', function () { addItem(); }); /*------------------------------------------- Collapse text --------------------------------------------- */ if ($('.collapseText').length) { var button = $(".collapseText"); var originalText = "Hide filters"; var newText = "Show filters"; var isToggled = false; button.on("click", function () { var span = button.find("span"); if (isToggled) { span.text(originalText); } else { span.text(newText); } isToggled = !isToggled; }); } /*------------------------------------------- Counter --------------------------------------------- */ if ($('.counter').length) { $('.counter').counterUp({ delay: 1, time: 500, }); } /*------------------------------------------- FileUp --------------------------------------------- */ if ($('.fileUp').length) { $('.fileUp').FancyFileUpload({ params: { action: 'fileuploader' }, maxfilesize: 1000000 }); } /*------------------------------------------- Testimonial --------------------------------------------- */ if ($('.testimonial-carouse').length) { $('.testimonial-carousel').owlCarousel({ loop: true, margin: 10, dots: false, items: 1, nav: true, navText: [ '', '' ], }) } /*------------------------------------------- Theia sticky sidebar --------------------------------------------- */ $(".content, .sidebar").theiaStickySidebar({ additionalMarginTop: 90 }); /*------------------------------------------------- Image parallax ------------------------------------------------ */ if ($('.js-image-parallax').length) { var image = document.getElementsByClassName('js-image-parallax'); new simpleParallax(image, { delay: .6, transition: 'cubic-bezier(0,0,0,1)' }); } /*------------------------------------------------- Owl carousel ------------------------------------------------ */ if ($('.place-carousel').length) { var placeCarousel = $(".place-carousel"); placeCarousel.owlCarousel({ loop: true, margin: 24, dots: false, nav: true, navText: [ '', '' ], responsive: { 0: { items: 1, }, 576: { items: 2, }, 992: { items: 3, }, 1200: { items: 4, } } }) } if ($('.testimonial-carousel').length) { var owl = $(".testimonial-carousel"); owl.owlCarousel({ loop: true, margin: 10, dots: false, items: 1, nav: true, navText: [ '', '' ], }) } if ($('.blog-carousel').length) { var owl = $(".blog-carousel"); owl.owlCarousel({ loop: true, margin: 24, navText: [ '', '' ], responsive: { 0: { items: 1, }, 576: { items: 2, }, 992: { items: 3, } } }) } if ($('.listings-carousel').length) { var owl = $(".listings-carousel"); owl.owlCarousel({ loop: true, margin: 24, navText: [ '', '' ], responsive: { 0: { items: 1, }, 576: { items: 2, }, 992: { items: 3, } } }) } if ($('.header-carousel').length) { var headerOwl = $(".header-carousel"); headerOwl.owlCarousel({ loop: true, margin: 10, items: 1, nav: false, dots: false, autoplay: true, animateOut: 'fadeOut' }) } if ($('.items-carousel').length) { var itemsCarousel = $(".items-carousel"); itemsCarousel.owlCarousel({ loop: true, margin: 24, dots: false, nav: true, navText: [ '', '' ], responsive: { 0: { items: 1, }, 468: { items: 1.5, }, 768: { items: 2.3, }, 992: { items: 2.5, }, 1200: { items: 3.3, } } }) } /*------------------------------------------------- Range slider ------------------------------------------------ */ if ($('.js-range-slider').length) { var rangeSlider = $(".js-range-slider"); rangeSlider.ionRangeSlider({ skin: "round", type: "double", min: 500, max: 5000, from: 500, to: 3000, prefix: "$" }); } /*------------------------------------------------- Select 2 ------------------------------------------------ */ if ($('.select2').length) { var selectOption = $(".select2"); selectOption.select2({ theme: "bootstrap-5", width: $(this).data('width') ? $(this).data('width') : $(this).hasClass('w-100') ? '100%' : 'style', placeholder: $(this).data('placeholder'), }); } /*------------------------------------------------- Grid container ------------------------------------------------ */ if ($('.blog-grid').length) { var masonry = new Macy({ container: '.blog-grid', trueOrder: false, waitForImages: false, useOwnImageLoader: false, debug: true, mobileFirst: true, columns: 1, margin: 24, breakAt: { 1200: 2, 992: 2, 768: 2, 576: 1 } }); } /*------------------------------------------- Popup youtube & gallery --------------------------------------------- */ if ($('.popup-youtube').length) { $(".popup-youtube").magnificPopup({ type: "iframe", mainClass: "mfp-fade", removalDelay: 160, preloader: false, fixedContentPos: true }); } if ($('.zoom-gallery').length) { $('.zoom-gallery').magnificPopup({ delegate: 'a', type: 'image', closeOnContentClick: false, closeBtnInside: false, mainClass: 'mfp-with-zoom mfp-img-mobile', image: { verticalFit: true, titleSrc: function (item) { return item.el.attr('title') + ' · image source'; } }, gallery: { enabled: true }, zoom: { enabled: true, duration: 300, // don't foget to change the duration also in CSS opener: function (element) { return element.find('img'); } } }); } if ($('.zoom-gallery-two').length) { $('.zoom-gallery-two').magnificPopup({ delegate: 'a', type: 'image', closeOnContentClick: false, closeBtnInside: false, mainClass: 'mfp-with-zoom mfp-img-mobile', image: { verticalFit: true, titleSrc: function (item) { return item.el.attr('title') + ' · image source'; } }, gallery: { enabled: true }, zoom: { enabled: true, duration: 300, // don't foget to change the duration also in CSS opener: function (element) { return element.find('img'); } } }); } /*------------------------------------------- Toggle password --------------------------------------------- */ if ($('.toggle-password').length) { $(".toggle-password").click(function () { $(this).toggleClass("fa-eye fa-eye-slash"); var input = $($(this).attr("data-bs-toggle")); if (input.attr("type") == "password") { input.attr("type", "text"); } else { input.attr("type", "password"); } }); } /*------------------------------------------- Two step verification form --------------------------------------------- */ if ($('.verification-form').length) { // Get all input elements const inputs = document.querySelectorAll('.verification-form'); // Add event listener to each input inputs.forEach((input, index) => { input.addEventListener('input', (e) => { // Allow only numbers e.target.value = e.target.value.replace(/[^0-9]/g, ''); // Move focus to the next input when a character is entered if (e.target.value.length === 1 && index < inputs.length - 1) { inputs[index + 1].focus(); } }); // Move focus to the previous input when backspace is pressed input.addEventListener('keydown', (e) => { if (e.key === 'Backspace' && index > 0) { inputs[index - 1].focus(); } }); }); } /*------------------------------------------- Tooltip --------------------------------------------- */ const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]') const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl)) })(jQuery); document.addEventListener('DOMContentLoaded', function () { const themeToggleBtn = document.getElementById('themeToggleBtn'); const htmlElement = document.documentElement; // Check if theme preference is stored in localStorage const storedTheme = localStorage.getItem('theme'); if (storedTheme) { htmlElement.setAttribute('data-bs-theme', storedTheme); updateIcon(storedTheme); // Update the icon based on the stored theme } themeToggleBtn.addEventListener('click', function () { // Check the current theme and toggle if (htmlElement.getAttribute('data-bs-theme') === 'dark') { htmlElement.setAttribute('data-bs-theme', 'light'); updateIcon('light'); // Update the icon when switching to the light theme localStorage.setItem('theme', 'light'); // Store the theme preference in localStorage localStorage.setItem('mapStyle', 'light'); // Store the theme preference in localStorage localStorage.setItem('imagePath', 'assets/images/lines.svg'); // Store the theme preference in localStorage } else { htmlElement.setAttribute('data-bs-theme', 'dark'); updateIcon('dark'); // Update the icon when switching to the dark theme localStorage.setItem('theme', 'dark'); // Store the theme preference in localStorage localStorage.setItem('mapStyle', 'dark'); // Store the theme preference in localStorage localStorage.setItem('imagePath', 'assets/images/lines-2.svg'); // Store the theme preference in localStorage } }); function updateIcon(theme) { const iconElement = themeToggleBtn.querySelector('i'); iconElement.className = theme === 'dark' ? 'fa-solid fa-sun' : 'fa-solid fa-moon'; } }); document.addEventListener("DOMContentLoaded", function () { // Get all elements with the class .js-bg-image-lines var bgImageElements = document.querySelectorAll('.js-bg-image-lines'); bgImageElements.forEach(function (bgImageElement) { // Check if the element with .js-bg-image-lines class exists if (bgImageElement) { var currentImagePath = localStorage.getItem('imagePath') || 'assets/images/lines.svg'; // Set the initial background image bgImageElement.style.backgroundImage = 'url(' + currentImagePath + ')'; document.getElementById('themeToggleBtn').addEventListener('click', function () { var newImagePath; // Toggle the image source path if (currentImagePath === 'assets/images/lines.svg') { newImagePath = 'assets/images/lines-2.svg'; // Change this to the new path } else { newImagePath = 'assets/images/lines.svg'; } // Update the data-image-src attribute bgImageElement.setAttribute('data-image-src', newImagePath); // Update the background image bgImageElement.style.backgroundImage = 'url(' + newImagePath + ')'; // Save the new image path to local storage localStorage.setItem('imagePath', newImagePath); // Update the currentImagePath variable currentImagePath = newImagePath; }); } }); });