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'));
});
});
});