MediaWiki:Common.js: различия между версиями

Нет описания правки
Нет описания правки
Строка 34: Строка 34:


// Автоскролл при открытии выпадающих блоков
// Автоскролл при открытии выпадающих блоков
$(document).ready(function () {
document.addEventListener("DOMContentLoaded", function () {
     // Находим все выпадающие блоки
     const dropdowns = document.querySelectorAll(".dropdown");
    $('.dropdown .dropbtn').on('click', function () {
        let parent = $(this).closest('.dropdown');


        // Переключаем class .active
    dropdowns.forEach(dropdown => {
         parent.toggleClass('active');
         const btn = dropdown.querySelector(".dropbtn");


         // Если блок открылся — скроллим
         btn.addEventListener("click", function () {
        if (parent.hasClass('active')) {
 
            setTimeout(() => {
            // закрываем другие спойлеры
                $('html, body').animate({
            dropdowns.forEach(d => {
                    scrollTop: parent.offset().top - 120 // подстройка под Citizen-header
                if (d !== dropdown) d.classList.remove("active");
                }, 400);
            });
            }, 300); // ждём окончания анимации max-height
 
         }
            // переключаем текущий
            dropdown.classList.toggle("active");
 
            // если открыт — скроллим к нему
            if (dropdown.classList.contains("active")) {
                setTimeout(() => {
                    dropdown.scrollIntoView({
                        behavior: "smooth",
                        block: "start"
                    });
                }, 150); // ждем пока CSS-анимация начнёт увеличивать высоту
            }
         });
     });
     });
});
});