shkola/wp-content/themes/dekart/assets/js/add.js

302 lines
10 KiB
JavaScript

try {
var btnOpenMenu = document.querySelector('.burger-btn');
var headerMenu = document.querySelector('.bottom-header-row');
if (btnOpenMenu && headerMenu) {
btnOpenMenu.addEventListener('click', function() {
document.querySelector('html').style = "overflow: hidden;";
headerMenu.classList.add('open');
btnOpenMenu.style="opacity: 0;";
});
}
} catch(e) {
if (window.console) console.warn('add.js: burger-menu error', e);
}
const boxes = Array.from(document.querySelectorAll(".box__accordion"));
boxes.forEach((box) => {
box.addEventListener("click", boxHandler);
});
function boxHandler(e) {
e.preventDefault();
let currentBox = e.target.closest(".box__accordion");
let currentContent = currentBox.querySelector(".box__accordion_content");;
currentBox.classList.toggle("active");
if (currentBox.classList.contains("active")) {
currentContent.style.maxHeight = currentContent.scrollHeight + 20 + "px";
} else {
currentContent.style.maxHeight = 0;
}
}
const modalRequestForm = document.querySelector('.modal-request-form');
document.addEventListener("click", function (event) {
const target = event.target;
if (target.classList.contains("certificates__item_img")) {
const screen = document.querySelector('.screen-certificates');
//screen.querySelector('.screen-certificates__img').innerHTML = event.target.outerHTML;
document.querySelector('html').style = "overflow: hidden;"
screen.classList.add('open');
return;
}
if (target.classList.contains("clickRemove") || event.target.classList.contains("btn-close-certificates-img")) {
document.querySelector('.screen-certificates').classList.remove('open');
document.querySelector('html').style = "";
return;
}
if (target.classList.contains("btn-close-header-menu")) {
headerMenu.classList.remove('open');
btnOpenMenu.style="";
document.querySelector('html').style = "";
return;
}
if (target.classList.contains("btn-write") || target.closest('.btn-write-camp')) {
var campBtn = target.closest('.btn-write-camp');
if (campBtn && campBtn.tagName === 'A') event.preventDefault();
if (!modalRequestForm) return;
modalRequestForm.classList.add('is-open');
document.querySelector('html').style = "overflow: hidden;";
return;
}
if (target.classList.contains("btn-close-request-form") || target.classList.contains("btn-close-request-form-img")) {
modalRequestForm.classList.remove('is-open');
document.querySelector('html').style = "";
return;
}
// Клик по фону (затемнению) — закрыть модалку
if (target === modalRequestForm) {
modalRequestForm.classList.remove('is-open');
document.querySelector('html').style = "";
return;
}
if(target.classList.contains("hover-effect")) {
target.classList.remove("hover-effect");
return;
}
if (target.classList.contains("menu-item-has-children")) {
target.parentNode.classList.add("hover-effect");
return;
}
});
/*(function ($) {
$(document).ready(function () {
$(".teachers-owl").owlCarousel({
//autoplay: true,
loop: false,
center: true,
margin: 30,
autoplayHoverPause: true,
autoplayTimeout: 4000,
items: 2,
dots: false,
nav: true,
navText: ['<i></i>', '<i></i>'],
//navText: ['<i class="fa fa-angle-left"></i>', '<i class="fa fa-angle-right"></i>'],
responsive: {
0: { items: 1,
center: true,
},
768: {
items: 2,
center: false,
},
992: {
items: 4,
center: false,
margin: 36,
},
}
});
});
})(jQuery);*/
try {
var swiperPopularSubjects = new Swiper(".swiper-popular-subjects", {
spaceBetween: 10,
slidesPerView: 1,
speed: 400,
preventInteractionOnTransition: true,
keyboard: true,
breakpoints: {
680: { slidesPerView: 2, speed: 400 },
860: { slidesPerView: 3, speed: 400 }
},
navigation: { nextEl: ".subject-next", prevEl: ".subject-prev" }
});
} catch(e) { /* skip — swiper not on this page */ }
try {
var swiperFoto = new Swiper(".swiper-foto", {
spaceBetween: 10,
slidesPerView: 1,
speed: 400,
preventInteractionOnTransition: true,
keyboard: true,
navigation: { nextEl: ".foto-next", prevEl: ".foto-prev" },
pagination: { el: ".swiper-pagination", clickable: true }
});
} catch(e) { /* skip — swiper not on this page */ }
try { var swiperNews = new Swiper(".swiper-news", { spaceBetween: 10, slidesPerView: 1, speed: 400, preventInteractionOnTransition: true, keyboard: true, breakpoints: { 680: { slidesPerView: 2, speed: 400 }, 860: { slidesPerView: 3, speed: 400 } }, navigation: { nextEl: ".news-next", prevEl: ".news-prev" } }); } catch(e) { /* skip */ }
try { var swiperCertificates = new Swiper(".certificates-owl", { spaceBetween: 10, slidesPerView: 1, speed: 400, loop: true, preventInteractionOnTransition: true, keyboard: true, navigation: { nextEl: ".certificates-owl-next", prevEl: ".certificates-owl-prev" } }); } catch(e) { /* skip */ }
try { var swiperReviews = new Swiper(".reviews-owl", { spaceBetween: 40, speed: 400, slidesPerView: 1, keyboard: true, breakpoints: { 860: { slidesPerView: 2, speed: 400 } }, navigation: { nextEl: ".reviews-owl-next", prevEl: ".reviews-owl-prev" } }); } catch(e) { /* skip */ }
try { var swiperTeachers = new Swiper(".teachers-owl", { spaceBetween: 30, speed: 400, slidesPerView: 1, keyboard: true, breakpoints: { 540: { slidesPerView: 2 }, 860: { slidesPerView: 4 }, 992: { slidesPerView: 4, spaceBetween: 36 } }, navigation: { nextEl: ".teachers-owl-next", prevEl: ".teachers-owl-prev" } }); } catch(e) { /* skip */ }
setTimeout(() => {
document.querySelectorAll('.b24-form-content .b24-form-btn').forEach(btn => {
btn.textContent = 'записаться';
});
}, 1000);
document.querySelectorAll('.header-menu').forEach(item => {
item.classList.add('hover-effect');
});
/* ── "Читать ещё" (expand/collapse long reviews) ── */
(function() {
'use strict';
document.querySelectorAll('.review-card__btn-more').forEach(function(btn) {
btn.addEventListener('click', function() {
var textBlock = this.closest('.lw-card').querySelector('.lw-card__text');
if (textBlock) {
textBlock.classList.toggle('review-card__text--expanded');
this.textContent = textBlock.classList.contains('review-card__text--expanded')
? 'Свернуть'
: 'Читать ещё';
}
});
});
})();
/* ── Reveal animation (IntersectionObserver) ── */
(function() {
'use strict';
var revealElements = document.querySelectorAll('.reveal');
if (revealElements.length && 'IntersectionObserver' in window) {
var observer = new IntersectionObserver(
function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
entry.target.classList.add('reveal--visible');
observer.unobserve(entry.target);
}
});
},
{ threshold: 0.1 }
);
revealElements.forEach(function(el) {
observer.observe(el);
});
} else {
// Fallback: show all immediately
revealElements.forEach(function(el) {
el.classList.add('reveal--visible');
});
}
})();
/* ── "Показать ещё" — batch load more ── */
(function() {
'use strict';
var loadMoreWrapper = document.getElementById('reviews-loadmore');
if (!loadMoreWrapper) return;
var btn = loadMoreWrapper.querySelector('.reviews-loadmore__btn');
if (!btn) return;
var nextBatch = 2;
btn.addEventListener('click', function() {
var cards = document.querySelectorAll('.lw-card[data-batch="' + nextBatch + '"]');
if (cards.length) {
cards.forEach(function(card) {
card.style.display = 'flex';
card.classList.add('reveal--visible'); // reveal + batch = видно
});
nextBatch++;
var remaining = document.querySelectorAll('.lw-card[data-batch="' + nextBatch + '"]');
if (!remaining.length) {
loadMoreWrapper.style.display = 'none';
}
}
});
})();
/* ── Scroll Progress Bar ── */
(function() {
var progressBar = document.createElement('div');
progressBar.className = 'pksh-scroll-progress';
document.body.prepend(progressBar);
function updateProgress() {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
var docHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;
var progress = (scrollTop / docHeight) * 100;
progressBar.style.width = progress + '%';
}
window.addEventListener('scroll', updateProgress, { passive: true });
window.addEventListener('resize', updateProgress, { passive: true });
updateProgress();
})();
/* ── Desktop Sticky CTA — show after hero ── */
(function() {
var sticky = document.querySelector('.sticky-cta-desktop');
var hero = document.querySelector('.banner');
if (!sticky || !hero) return;
var observer = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
// Show sticky CTA when hero is NOT visible (scrolled past)
sticky.classList.toggle('visible', !entry.isIntersecting);
});
}, { threshold: 0 });
observer.observe(hero);
})();
/* ── Mobile banner padding: compensate for fixed header ── */
(function() {
var banner = document.querySelector('.page-pksh .banner');
var header = document.querySelector('.header');
if (banner && header && window.innerWidth <= 860) {
var headerH = header.offsetHeight || 76;
banner.style.paddingTop = headerH + 'px';
banner.style.marginTop = '-' + headerH + 'px';
}
})();
/* ── FAQ Accordion (mystyle-accordion) ── */
document.querySelectorAll('.mystyle-accordion-trigger').forEach(trigger => {
trigger.addEventListener('click', function(e) {
const item = this.closest('.mystyle-accordion-item');
if (!item) return;
const isOpen = item.classList.contains('active');
// Закрываем все другие аккордеоны в том же контейнере
const parent = item.parentElement;
if (parent) {
parent.querySelectorAll('.mystyle-accordion-item.active').forEach(other => {
if (other !== item) {
other.classList.remove('active');
}
});
}
if (isOpen) {
item.classList.remove('active');
} else {
item.classList.add('active');
}
});
});