MediaWiki:Gadget-LeftPaneSwitch.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * LeftPaneSwitch
 *
 * Ajoute un bouton permettant d'afficher/masquer le menu latéral de gauche.
 *
 * Auteur : Od1n
 * {{Projet:JavaScript/Script|LeftPaneSwitch}}
 */

// <nowiki>

/* jshint esversion: 6, laxbreak: true */
/* eslint-env browser */
/* globals mw, $ */

mw.loader.using('mediawiki.storage', function () {

    $(function ($) { // eslint-disable-line no-unused-vars
        'use strict';

        // actuellement, compatible uniquement avec la skin Vector
        // (et avant son remaniement de 2021, cf. https://www.mediawiki.org/wiki/Skin:Vector)
        if (mw.config.get('skin') !== 'vector') {
            return;
        }

        mw.loader.addStyleTag(`
            #left-pane-switch {padding:6px; background:#E4E4E4; position:absolute; left:10em; cursor:pointer; z-index:100}
            @media (min-width:982px) { #left-pane-switch {left:11em} }
            .left-pane-closed #mw-panel {display:none}
            .left-pane-closed #content {margin-left:0}
            .left-pane-closed #p-personal ul {padding-left:0}
            .left-pane-closed #left-navigation {margin-left:0}
            .left-pane-closed #left-pane-switch {left:0}
            .left-pane-closed #footer {margin-left:0}
        `);

        const paneSwitch = document.createElement('div');
        paneSwitch.id = 'left-pane-switch';
        paneSwitch.textContent = '‹‹';

        let paneClosed = false;

        function closePane() {
            document.body.classList.add('left-pane-closed');
            paneSwitch.textContent = '››';
            paneClosed = true;
        }

        function openPane() {
            document.body.classList.remove('left-pane-closed');
            paneSwitch.textContent = '‹‹';
            paneClosed = false;
        }

        paneSwitch.addEventListener('click', function () {
            if (!paneClosed) {
                closePane();
                mw.storage.set('LeftPane', '0');
            } else {
                openPane();
                mw.storage.set('LeftPane', '1');
            }
        });

        if (mw.storage.get('LeftPane') === '0') {
            closePane();
        }

        const mwHead = document.getElementById('mw-head');
        if (mwHead) {
            mwHead.append(paneSwitch);
        }
    });
});

// </nowiki>