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

Страница интерфейса MediaWiki
мНет описания правки
Метка: отменено
мНет описания правки
Метка: отменено
Строка 1: Строка 1:
// Создаем кнопку "Меню" для мобильных
// MediaWiki:Common.js
$(document).ready(function() {
mw.loader.using('jquery').then(function() {
   if (window.matchMedia("(max-width: 768px)").matches) {
   $(function() {
    var menuHtml = '<button class="mobile-menu-toggle">☰ Меню</button>';
    if (window.matchMedia("(max-width: 768px)").matches) {
    $('.citizen-header__start').append(menuHtml);
      // Создаем кнопку меню
      var $toggleButton = $('<button>')
        .addClass('citizen-mobile-menu-toggle')
        .html('☰ Меню')
        .css({
          'background': 'transparent',
          'border': 'none',
          'color': '#fff',
          'cursor': 'pointer',
          'padding': '10px'
        });


    // Открытие/закрытие меню
      // Вставляем кнопку в нужное место
    $('.mobile-menu-toggle').click(function() {
      var $headerTools = $('.citizen-header__tools');
       $('.citizen-header__end').toggle();
      if ($headerTools.length) {
    });
        $headerTools.prepend($toggleButton);
   }
      } else {
        $('.citizen-header__end').prepend($toggleButton);
      }
 
      // Находим целевое меню
       var $targetMenu = $('.citizen-header__menu');
 
      // Обработчик клика
      $toggleButton.on('click', function() {
        $targetMenu.toggleClass('is-visible');
      });
    }
   });
});
});


window.toggleTheme = function() {
window.toggleTheme = function() {

Версия от 16:33, 1 апреля 2025

// MediaWiki:Common.js
mw.loader.using('jquery').then(function() {
  $(function() {
    if (window.matchMedia("(max-width: 768px)").matches) {
      // Создаем кнопку меню
      var $toggleButton = $('<button>')
        .addClass('citizen-mobile-menu-toggle')
        .html('☰ Меню')
        .css({
          'background': 'transparent',
          'border': 'none',
          'color': '#fff',
          'cursor': 'pointer',
          'padding': '10px'
        });

      // Вставляем кнопку в нужное место 
      var $headerTools = $('.citizen-header__tools');
      if ($headerTools.length) {
        $headerTools.prepend($toggleButton);
      } else {
        $('.citizen-header__end').prepend($toggleButton);
      }

      // Находим целевое меню
      var $targetMenu = $('.citizen-header__menu');

      // Обработчик клика
      $toggleButton.on('click', function() {
        $targetMenu.toggleClass('is-visible');
      });
    }
  });
});


window.toggleTheme = function() {
    document.body.classList.toggle('dark-theme');
    localStorage.setItem('theme', document.body.classList.contains('dark-theme') ? 'dark' : 'light');
};

document.addEventListener('DOMContentLoaded', function() {
    var savedTheme = localStorage.getItem('theme');
    if (savedTheme === 'dark') document.body.classList.add('dark-theme');
});

mw.hook('citizen.load').add(function() {
    var button = document.createElement('button');
    button.textContent = '🌓 Тема';
    button.style.cssText = 'margin: 0 10px; padding: 8px 12px; cursor: pointer;';
    button.onclick = toggleTheme;

    var headerTools = document.querySelector('.citizen-header__tools');
    if (headerTools) {
        headerTools.insertBefore(button, headerTools.firstChild);
    }
});

// Отключаем регистрацию Service Worker
if ('serviceWorker' in navigator) {
    navigator.serviceWorker.getRegistrations().then(function(registrations) {
        for (var i = 0; i < registrations.length; i++) { // Исправлено: ES5-совместимый цикл
            registrations[i].unregister();
        }
    });
}