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

Нет описания правки
Нет описания правки
 
(не показано 18 промежуточных версий этого же участника)
Строка 1: Строка 1:
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
document.addEventListener("DOMContentLoaded", function() {
 
     var dropdowns = document.querySelectorAll(".dropdown .dropbtn");
mw.loader.using('mediawiki.util').then(function() {
      
     var isMobile = mw.config.get('skin') === 'minerva';
     dropdowns.forEach(function(dropbtn) {
 
        dropbtn.addEventListener("click", function(event) {
    if (isMobile) {
            event.preventDefault();
        // Мобильная версия
            this.parentNode.classList.toggle("active");
        $('.mobile-hide').hide();
         });
     } else {
        // Десктопная версия
        $('.desktop-hide').hide();
     }
});
 
mw.hook('wikipage.content').add(function($content) {
    $content.find('.dropbtn').on('click', function(event) {
        event.preventDefault();
        var dropdown = $(this).closest('.dropdown');
        var content = dropdown.find('.dropdown-content');
 
        // Закрываем все открытые списки
        $('.dropdown').not(dropdown).removeClass('active').find('.dropdown-content').css('max-height', '0px');
 
        // Открываем/закрываем текущий список
        if (dropdown.hasClass('active')) {
            dropdown.removeClass('active');
            content.css('max-height', '0px');
         } else {
            dropdown.addClass('active');
            content.css('max-height', content[0].scrollHeight + 'px'); // Автоматическая высота
        }
     });
     });
});
// Автоскролл после открытия спойлера в меню Citizen
$(document).on('click', '.dropdown .dropbtn', function () {
    var $dropdown = $(this).closest('.dropdown');
    var $content = $dropdown.find('.dropdown-content');
    // Даем CSS-анимации завершиться, если она есть
    setTimeout(function () {
        // Если блок теперь виден — скроллим к нему
        if ($content.is(':visible')) {
            var top = $dropdown.offset().top - 80; // отступ сверху (регулируется)
            $('html, body').animate({ scrollTop: top }, 300);
        }
    }, 200);
});
});