MediaWiki:Vector.js

De Tenarius RO Wiki
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.

  • Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
  • Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
  • Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
/* Todo código JavaScript escrito aquí se cargará para todos los usuarios de la apariencia Vector */
/* ==========================================================
TENARIUS RO - BOTON MENU MOVIL SIDEBAR
Pegar en MediaWiki:Vector.js
========================================================== */
(function () {
    function ready(fn) {
        if (document.readyState !== 'loading') {
            fn();
        } else {
            document.addEventListener('DOMContentLoaded', fn);
        }
    }

    ready(function () {
        if (document.getElementById('tenarius-mobile-sidebar-button')) {
            return;
        }

        var panel = document.getElementById('mw-panel');
        if (!panel) {
            return;
        }

        var button = document.createElement('button');
        button.id = 'tenarius-mobile-sidebar-button';
        button.type = 'button';
        button.innerHTML = 'Menu';
        button.setAttribute('aria-label', 'Abrir o cerrar menu de navegacion');
        button.setAttribute('aria-expanded', 'false');

        var overlay = document.createElement('div');
        overlay.id = 'tenarius-mobile-sidebar-overlay';

        function closeMenu() {
            document.body.classList.remove('tenarius-sidebar-open');
            button.setAttribute('aria-expanded', 'false');
            button.innerHTML = 'Menu';
        }

        function openMenu() {
            document.body.classList.add('tenarius-sidebar-open');
            button.setAttribute('aria-expanded', 'true');
            button.innerHTML = 'Cerrar';
        }

        function toggleMenu() {
            if (document.body.classList.contains('tenarius-sidebar-open')) {
                closeMenu();
            } else {
                openMenu();
            }
        }

        button.addEventListener('click', toggleMenu);
        overlay.addEventListener('click', closeMenu);

        document.addEventListener('keydown', function (event) {
            if (event.key === 'Escape') {
                closeMenu();
            }
        });

        panel.addEventListener('click', function (event) {
            var target = event.target;
            if (target && target.tagName && target.tagName.toLowerCase() === 'a') {
                closeMenu();
            }
        });

        document.body.appendChild(overlay);
        document.body.appendChild(button);
    });
})();