/* Template: Growix - Business Consulting HTML Template Author: peacefulqode.co.in Version: 1.0 Design and Developed by: Peacefulqode NOTE: This is main javasctipt file of template. */ /*================================================ [ Table of contents ] ================================================== ==> Page Loader ==> Accordion ==> Sticky Header ==> Owl Carousel ==> Progressbar ==> Back To Top ==> Isotope ==> counter ==> wow ==> magnificpopup ==> click-active ==> card ==> Loadmore ==> slick slider ==> hover-active ==> Splitting ================================================== [ End table content ] ================================================*/ (function (jQuery) { "use strict" jQuery(window).on('load', function (e) { /*================================================== [ page Loader ] ==================================================*/ var Scrollbar = window.Scrollbar; jQuery("#pq-loading").fadeOut(); jQuery("#pq-loading").delay(0).fadeOut("slow"); /*================================================== [ Accordion ] ==================================================*/ jQuery('.pq-accordion .pq-accordion-box .pq-accordion-details').hide(); jQuery('.pq-accordion .pq-accordion-box:first').addClass('pq-active').children().slideDown('slow'); jQuery('.pq-accordion .pq-accordion-box').on("click", function () { if (jQuery(this).children('div.pq-accordion-details').is(':hidden')) { jQuery('.pq-accordion .pq-accordion-box').removeClass('pq-active').children('div.pq-accordion-details').slideUp('slow'); jQuery(this).toggleClass('pq-active').children('div.pq-accordion-details').slideDown('slow'); } }); /*================================================== [ Sticky Header ] ==================================================*/ if (jQuery('header').hasClass('pq-header-default')) { jQuery(window).scroll(function () { var scrollTop = jQuery(window).scrollTop(); if (scrollTop > 300) { jQuery('.pq-bottom-header').addClass('pq-header-sticky animated fadeInDown animate__faster'); } else { jQuery('.pq-bottom-header').removeClass('pq-header-sticky animated fadeInDown animate__faster'); } }); } if (jQuery('header').hasClass('pq-has-sticky')) { jQuery(window).scroll(function () { var scrollTop = jQuery(window).scrollTop(); if (scrollTop > 300) { jQuery('.pq-bottom-header').addClass('pq-header-sticky animated fadeInDown animate__faster'); } else { jQuery('.pq-bottom-header').removeClass('pq-header-sticky animated fadeInDown animate__faster'); } }); } /*================================================== [ owl carousel ] ==================================================*/ jQuery('.owl-carousel').each(function () { var app_slider = jQuery(this); var rtl = false; var prev = 'ion-ios-arrow-back'; var next = 'ion-ios-arrow-forward'; var prev_text = 'Prev'; var next_text = 'Next'; if (jQuery('body').hasClass('pq-is-rtl')) { rtl = true; prev = 'ion-ios-arrow-forward'; next = 'ion-ios-arrow-back'; } if (app_slider.data('prev_text') && app_slider.data('prev_text') != '') { prev_text = app_slider.data('prev_text'); } if (app_slider.data('next_text') && app_slider.data('next_text') != '') { next_text = app_slider.data('next_text'); } app_slider.owlCarousel({ rtl: rtl, items: app_slider.data("desk_num"), loop: app_slider.data("loop"), margin: app_slider.data("margin"), nav: app_slider.data("nav"), dots: app_slider.data("dots"), loop: app_slider.data("loop"), autoplay: app_slider.data("autoplay"), autoplayHoverPause: true, autoplayTimeout: app_slider.data("autoplay-timeout"), navText: ["", ""], responsiveClass: true, responsive: { // breakpoint from 0 up 0: { items: app_slider.data("mob_sm"), nav: false, dots: false }, // breakpoint from 480 up 480: { items: app_slider.data("mob_num"), nav: false, dots: false }, // breakpoint from 786 up 786: { items: app_slider.data("tab_num") }, // breakpoint from 1023 up 1023: { items: app_slider.data("lap_num") }, 1199: { items: app_slider.data("desk_num") } } }); }); /*================================================== [ progress bar ] ==================================================*/ jQuery(document).ready(function () { // Animate progress bars jQuery(".pq-progressbar-content .show-progress").each(function () { let $this = jQuery(this); let targetWidth = $this.data("width") + "%"; $this.css("width", "0"); // Reset width $this.animate({ width: targetWidth }, 2000); // Animate to target width }); }); /*================================================== [ click-active ] ==================================================*/ jQuery('.pq-click-active .pq-click-item:first-child').addClass("pq-active"); jQuery('.pq-click-item').on({ 'click': function () { jQuery('.pq-click-item').removeClass('pq-active'); jQuery(this).addClass('pq-active'); }, }); /*================================================== [ counter ] ==================================================*/ jQuery(window).on('scroll', function () { jQuery('.pq-counter-info').each(function () { var $this = jQuery(this); var elementTop = $this.offset().top; var windowBottom = jQuery(window).scrollTop() + jQuery(window).height(); // Check if the counter element is in the viewport if (windowBottom > elementTop) { if (!$this.hasClass('counted')) { $this.addClass('counted'); // Animate the counter $this.find('.pq-count').each(function () { var $count = jQuery(this), countTo = $count.attr('data-count'); var Toduration = parseInt($count.attr('data-pq-duration'), 10); // ✅ radix added function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } jQuery({ countNum: 0 }).animate( { countNum: countTo }, { duration: Toduration, easing: 'swing', step: function () { $count.text(numberWithCommas(Math.floor(this.countNum))); }, complete: function () { $count.text(numberWithCommas(this.countNum)); } } ); }); } } }); }); /*================================================== [ hover-active ] ==================================================*/ jQuery('.pq-hover-active').each(function () { var $container = jQuery(this); // Activate the second child initially $container.find('.pq-hover-item:nth-child(2)').addClass("pq-active"); // Handle hover events for items within this container $container.find('.pq-hover-item').on({ mouseenter: function () { $container.find('.pq-hover-item').removeClass('pq-active'); jQuery(this).addClass('pq-active'); }, }); }); /*================================================== [ back to top ] ==================================================*/ jQuery('#back-to-top').fadeOut(); jQuery(window).on("scroll", function () { if (jQuery(this).scrollTop() > 250) { jQuery('#back-to-top').fadeIn(1400); } else { jQuery('#back-to-top').fadeOut(400); } }); jQuery('#top').on('click', function () { jQuery('top').tooltip('hide'); jQuery('body,html').animate({ scrollTop: 0 }, 100); return false; }); /*================================================== [ Isotope ] ==================================================*/ jQuery(".pq-masonry").isotope({ itemSelector: ".pq-masonry-item", masonry: { columnWidth: ".grid-sizer", // gutter: 0 }, }); jQuery(".pq-grid").isotope({ itemSelector: ".pq-grid-item", }); jQuery(".pq-filter-button-group").on( "click", ".pq-filter-btn", function () { var filterValue = jQuery(this).attr("data-filter"); // console.log(filterValue); jQuery(".pq-masonry").isotope({ filter: filterValue, }); jQuery(".pq-grid").isotope({ filter: filterValue, }); jQuery(".pq-filter-button-group .pq-filter-btn").removeClass("active"); jQuery(this).addClass("active"); updateFilterCounts(); } ); var initial_items = 5; var next_items = 3; if (jQuery(".pq-masonry").length > 0) { var initial_items = jQuery(".pq-masonry").data("initial_items"); var next_items = jQuery(".pq-masonry").data("next_items"); } if (jQuery(".pq-grid").length > 0) { var initial_items = jQuery(".pq-grid").data("initial_items"); var next_items = jQuery(".pq-grid").data("next_items"); } function showNextItems(pagination) { var itemsMax = jQuery(".visible_item").length; var itemsCount = 0; jQuery(".visible_item").each(function () { if (itemsCount < pagination) { jQuery(this).removeClass("visible_item"); itemsCount++; } }); if (itemsCount >= itemsMax) { jQuery("#ShowMore").hide(); } if (jQuery(".pq-masonry").length > 0) { jQuery(".pq-masonry").isotope("layout"); } if (jQuery(".pq-grid").length > 0) { jQuery(".pq-grid").isotope("layout"); } } // function that hides items when page is loaded function hideItems(pagination) { var itemsMax = jQuery(".pq-filter-items").length; // console.log(itemsMax); var itemsCount = 0; jQuery(".pq-filter-items").each(function () { if (itemsCount >= pagination) { jQuery(this).addClass("visible_item"); } itemsCount++; }); if (itemsCount < itemsMax || initial_items >= itemsMax) { jQuery("#ShowMore").hide(); } if (jQuery(".pq-masonry").length > 0) { jQuery(".pq-masonry").isotope("layout"); } if (jQuery(".pq-grid").length > 0) { jQuery(".pq-grid").isotope("layout"); } } jQuery("#ShowMore").on("click", function (e) { e.preventDefault(); showNextItems(next_items); }); hideItems(initial_items); function updateFilterCounts() { // get filtered item elements if (jQuery(".pq-masonry").length > 0) { var itemElems = jQuery(".pq-masonry").isotope( "getFilteredItemElements" ); } if (jQuery(".pq-grid").length > 0) { var itemElems = jQuery(".pq-grid").isotope("getFilteredItemElements"); } var count_items = jQuery(itemElems).length; // console.log(count_items); if (count_items > initial_items) { jQuery("#ShowMore").show(); } else { jQuery("#ShowMore").hide(); } if (jQuery(".pq-filter-items").hasClass("visible_item")) { jQuery(".pq-filter-items").removeClass("visible_item"); } var index = 0; jQuery(itemElems).each(function () { if (index >= initial_items) { jQuery(this).addClass("visible_item"); } index++; }); if (jQuery(".pq-masonry").length > 0) { jQuery(".pq-masonry").isotope("layout"); } if (jQuery(".pq-grid").length > 0) { jQuery(".pq-grid").isotope("layout"); } } /*================================================== [ wow ] ==================================================*/ // Animations au scroll désactivées // new WOW().init(); /*================================================== [ magnificpopup ] ==================================================*/ jQuery(".popup-youtube, .popup-vimeo, .popup-gmaps").magnificPopup({ disableOn: 700, type: "iframe", mainClass: "mfp-fade", arrows: true, removalDelay: 160, preloader: false, fixedContentPos: false, }); // Initialize image galleries with event delegation jQuery(".gallery").each(function () { jQuery(this).magnificPopup({ delegate: "a", type: "image", gallery: { enabled: true, }, }); }); /*================================================== [ card ] ===================================================*/ jQuery(".pq-cards").each(function () { const { ScrollObserver, valueAtPercentage } = aat const cardsContainer = document.querySelector('.pq-cards') const cards = document.querySelectorAll('.pq-card') cardsContainer.style.setProperty('--cards-count', cards.length - 3) cardsContainer.style.setProperty( '--card-height', `${cards[0].clientHeight}px` ) Array.from(cards).forEach((card, index) => { const offsetTop = 20 + index * 20 card.style.paddingTop = `${offsetTop}px` if (index === cards.length - 1) { return } const toScale = 1 - (cards.length - 1 - index) * 0.05 const nextCard = cards[index + 1] const cardInner = card.querySelector('.pq-card-inner') ScrollObserver.Element(nextCard, { offsetTop, offsetBottom: window.innerHeight - card.clientHeight }).onScroll(({ percentageY }) => { cardInner.style.scale = valueAtPercentage({ from: 1, to: toScale, percentage: percentageY }) cardInner.style.filter = `brightness(${valueAtPercentage({ from: 1, to: 0.6, percentage: percentageY })})` }) }) }); /*================================================== [ Loadmore ] ==================================================*/ var initialItemsToShow = jQuery('.pq-portfolio-zigzag').data('initial-items'); // Number of items to show initially var itemsToShowOnClick = jQuery('.pq-portfolio-zigzag').data('next-items');; // Number of items to show on each click var $items = jQuery('.pq-portfolio-zigzag .pq-portfolio-block-1'); var itemsTotal = $items.length; // Initially show only the first 5 items $items.hide().slice(0, initialItemsToShow).show(); jQuery('#showMore').on('click', function (e) { e.preventDefault(); var visibleItems = $items.filter(':visible').length; // Show the next set of 3 items $items.slice(visibleItems, visibleItems + itemsToShowOnClick).fadeIn(); // Hide the "Load More" button if all items are shown if (visibleItems + itemsToShowOnClick >= itemsTotal) { jQuery('#showMore').hide(); } }); /*================================================== [ slick slider ] ==================================================*/ if (jQuery('.slick-slider-main').length) { var $slider = jQuery('.slick-slider-main').slick({ slidesToShow: 1, infinite: true, arrows: false, autoplay: false, dots: false, lazyLoad: 'ondemand', autoplaySpeed: 3000, loop: true, asNavFor: '.slick-slider-thumb' }); var $slider2 = jQuery('.slick-slider-thumb').slick({ slidesToShow: 4, infinite: false, lazyLoad: 'ondemand', asNavFor: '.slick-slider-main', autoplay: false, dots: false, Default: '50px', arrows: false, centerMode: false, loop: false, focusOnSelect: true, transformsEnabled: false }); }; //slick Image Adjust setTimeout(function () { jQuery('.pq-img-main').each(function () { var $parent = $(this); var $thumbsColumn = $parent.find('.pq-slick-slider-thumb-inner'); var $adjustSizeElements = $parent.find('.pq-adjust-size'); if ($thumbsColumn.length && $adjustSizeElements.length) { var thumbsColumnHeight = $thumbsColumn.outerHeight(); $adjustSizeElements.css('height', thumbsColumnHeight + 'px'); } }); }, 500); }); //slick Image Adjust jQuery(document).ready(function () { setTimeout(function () { var parents = jQuery('.pq-img-main'); parents.each(function () { var parent = jQuery(this); var thumbsColumn = parent.find('.pq-slick-slider-thumb-inner'); var adjustSizeElements = parent.find('.pq-adjust-size'); if (thumbsColumn.length > 0 && adjustSizeElements.length > 0) { var thumbsColumnHeight = thumbsColumn.outerHeight(); adjustSizeElements.css('height', thumbsColumnHeight + 'px'); } // console.log(thumbsColumnHeight); }); }, 500); /*================================================== [ Splitting ] ==================================================*/ // Animations de texte désactivées // Splitting(); // ScrollOut({ // targets: '[data-splitting]' // }); }); })(jQuery);