HEX
Server: Apache/2.4.62 (Debian)
System: Linux plxsite 6.8.0-47-generic #47-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep 27 21:40:26 UTC 2024 x86_64
User: root (0)
PHP: 8.1.30
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/themes/polygant_2025/inc/js/script.js
document.addEventListener('DOMContentLoaded', () => {
    const headerBurger = document.querySelector('.header__burger'),
          headerMenu = document.querySelector('.header-menu'),
          header = document.querySelector('.header'),
          body = document.querySelector('body');

    headerBurger.addEventListener('click', () => {
        headerBurger.classList.toggle('active');
        headerMenu.classList.toggle('active');
        header.classList.toggle('active');
        // body.classList.toggle('lock');
    });

    let scrollPosition = window.scrollY;

    window.addEventListener('scroll', () => {

        scrollPosition = window.scrollY;

        if (scrollPosition > header.style.height + 20) {
            header.classList.add('sticky');
        } else {
            header.classList.remove('sticky');
        }

    });
	
	/* HEADER MAIN MENU SCRIPTS */

    /*
    const dropdownLinks = document.querySelectorAll(".header-menu__left > li");
    console.log(dropdownLinks);

    const openAccordion = (accordion) => {
        const submenu = accordion.querySelector(".header-menu__submenu");
        accordion.classList.add("active");
        submenu.style.maxHeight = submenu.scrollHeight + "px";
    };

    const closeAccordion = (accordion) => {
        const submenu = accordion.querySelector(".header-menu__submenu");
        accordion.classList.remove("active");
        submenu.style.maxHeight = null;
    };

    dropdownLinks.forEach((link) => {
        const linkTitle = link.querySelector("a");
        const submenu = link.querySelector(".header-menu__submenu");

        linkTitle.onclick = () => {
            if (submenu.style.maxHeight) {
                closeAccordion(link);
            } else {
                dropdownLinks.forEach((link) => closeAccordion(link));
                openAccordion(link);
            }
        };
    });
    */
	
	const dropdownLinks = document.querySelectorAll(".header-menu__left > li");
	console.log(dropdownLinks);

	const openAccordion = (accordion) => {
		const submenu = accordion.querySelector(".header-menu__submenu");
		if (!submenu) return; // Добавляем проверку на существование
		accordion.classList.add("active");
		submenu.style.maxHeight = submenu.scrollHeight + "px";
	};

	const closeAccordion = (accordion) => {
		const submenu = accordion.querySelector(".header-menu__submenu");
		if (!submenu) return; // Добавляем проверку на существование
		accordion.classList.remove("active");
		submenu.style.maxHeight = null;
	};

	dropdownLinks.forEach((link) => {
		const linkTitle = link.querySelector("a");
		const submenu = link.querySelector(".header-menu__submenu");

		if (!linkTitle || !submenu) return; // Проверяем существование элементов

		linkTitle.onclick = () => {
			if (submenu.style.maxHeight) {
				closeAccordion(link);
			} else {
				dropdownLinks.forEach((otherLink) => {
					// Закрываем только те аккордеоны, у которых есть подменю
					if (otherLink.querySelector('.header-menu__submenu')) {
						closeAccordion(otherLink);
					}
				});
				openAccordion(link);
			}
		};
	});
	
	/*------>> END HEADER MAIN MENU SCRIPTS */

    const casesSlider = new Swiper('.cases__slider', {
        loop: true,
        effect: 'fade',
        fadeEffect: {
          crossFade: true
        },
      
        pagination: {
          el: '.cases__pagination',
          type: 'custom',
          renderCustom: function (casesSlider, current, total) {
            return `<span>0${current}</span><div class="slider-controls__divider"></div> 0${total}`;
          }
        },
      
        navigation: {
          nextEl: '.cases__arrow_next',
          prevEl: '.cases__arrow_prev',
        },
    });

    const reviewsSlider = new Swiper('.reviews__slider', {
        slidesPerView: 1,
        spaceBetween: 20,
      
        pagination: {
          el: '.reviews__pagination',
          type: 'custom',
          renderCustom: function (casesSlider, current, total) {
            return `<span>0${current}</span><div class="slider-controls__divider"></div> 0${total}`;
          }
        },
      
        navigation: {
          nextEl: '.reviews__arrow_next',
          prevEl: '.reviews__arrow_prev',
        },

        breakpoints: {
          780: {
            slidesPerView: 2,
          }
        }
    });

    const infoPageSlider = new Swiper('.info-page__slider:not(.reviews-scr, .cases-scr)', {
      loop: true,
      slidesPerView: 1,
      spaceBetween: 20,
    
      pagination: {
        el: '.info-page__pagination:not(.reviews-scr, .cases-scr)',
        type: 'custom',
        renderCustom: function (casesSlider, current, total) {
          return `<span>0${current}</span><div class="slider-controls__divider"></div> 0${total}`;
        }
      },
    
      navigation: {
        nextEl: '.swiper-check .info-page__arrow_next',
        prevEl: '.swiper-check .info-page__arrow_prev',
      },
  });

    const infoPageSlider2 = new Swiper('.info-page__slider.reviews-scr', {
      loop: true,
      slidesPerView: 1,
      spaceBetween: 20,
    
      pagination: {
        el: '.info-page__pagination.reviews-scr',
        type: 'custom',
        renderCustom: function (casesSlider, current, total) {
          return `<span>0${current}</span><div class="slider-controls__divider"></div> 0${total}`;
        }
      },
    
      navigation: {
        nextEl: '.reviews.reviews1 .info-page__arrow_next',
        prevEl: '.reviews.reviews1 .info-page__arrow_prev',
      },
  });

  const infoPageSlider3 = new Swiper('.info-page__slider.cases-scr', {
      loop: true,
      slidesPerView: 1,
      spaceBetween: 20,
    
      pagination: {
        el: '.info-page__pagination.cases-scr',
        type: 'custom',
        renderCustom: function (casesSlider, current, total) {
          return `<span>0${current}</span><div class="slider-controls__divider"></div> 0${total}`;
        }
      },
    
      navigation: {
        nextEl: '.info-page__case.reviews .info-page__arrow_next',
        prevEl: '.info-page__case.reviews .info-page__arrow_prev',
      },
  });

    const resPresSlider = new Swiper('.res__press-slider', {
      loop: true,
      slidesPerView: 2,
      spaceBetween: 20,
    
      pagination: {
        el: '.res__press-pagination',
      },
      
      breakpoints: {
        1250: {
          slidesPerView: 5,
        },
        1050: {
          slidesPerView: 4,
        },
        780: {
          slidesPerView: 3,
        }
      }
    });

    const resTwitterSlider = new Swiper('.res__twitter-slider', {
      loop: true,
      slidesPerView: 2,
      spaceBetween: 20,
    
      pagination: {
        el: '.res__twitter-pagination',
      },
      breakpoints: {
        1250: {
          slidesPerView: 5,
        },
        1050: {
          slidesPerView: 4,
        },
        780: {
          slidesPerView: 3,
        }
      }
    });

    const resYtSlider = new Swiper('.res__yt-slider', {
      loop: true,
      slidesPerView: 2,
      spaceBetween: 20,
    
      pagination: {
        el: '.res__yt-pagination',
      },
      breakpoints: {
        1250: {
          slidesPerView: 5,
        },
        1050: {
          slidesPerView: 4,
        },
        780: {
          slidesPerView: 3,
        }
      }
    });

    const inputs = document.querySelectorAll('.contact-form__input');

    inputs.forEach(item => {
        item.addEventListener('change', () => {
            const inp = item.querySelector('input');
			 const inplab = item.querySelector('label');
            if (inp.value) {
                inp.classList.add('active');
				     inplab.classList.add('active');
            } else {
                inp.classList.remove('active');
				    inplab.classList.remove('active');
            }
        });
    });



    const popupTriggers = document.querySelectorAll('[data-popup]'),
          popup = document.querySelectorAll('.popup'),
          popupClose = document.querySelectorAll('.popup__close');

    popupTriggers.forEach(item => {
      item.addEventListener('click', (e) => {
        e.preventDefault();
        popup.forEach(pop => {
          if (pop.dataset.modal == item.dataset.popup) {
            pop.classList.add('active');
          }
        })
      });
    });

    popup.forEach(item => {
      item.addEventListener('click', (e) => {
        if (e.target && e.target.classList.contains('popup')) {
          item.classList.remove('active');
        }
      });
    });

    popupClose.forEach(close => {
      close.addEventListener('click', (e) => {
        popup.forEach(item => item.classList.remove('active'));
      });
    });

});