Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus TerranianStar
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 9: Zeile 9:
         const portlet = $(this);
         const portlet = $(this);
         const heading = portlet.find('.vector-menu-heading');
         const heading = portlet.find('.vector-menu-heading');
         const content = portlet.find('.vector-menu-content'); // ← WICHTIG: dein echter Inhalt
         const content = portlet.find('.vector-menu-content');


         if (!heading.length || !content.length) return;
         if (!heading.length || !content.length) return;


         // Klickbar machen
         // Falls keine ID vorhanden → generieren
         heading.css('cursor', 'pointer');
         let pid = portlet.attr('id');
        if (!pid) {
            pid = 'portlet-auto-' + Math.random().toString(36).substr(2, 9);
            portlet.attr('id', pid);
        }


        // Zustand aus localStorage laden
         const key = 'sidebar-state-' + pid;
         const key = 'sidebar-state-' + portlet.attr('id');
 
        // Zustand laden
         const saved = localStorage.getItem(key);
         const saved = localStorage.getItem(key);
         if (saved === 'collapsed') {
         if (saved === 'collapsed') {
             content.hide();
             content.hide();
Zeile 25: Zeile 29:
         }
         }


         // Klick-Handler
         // Klick
         heading.on('click', function (e) {
         heading.css('cursor', 'pointer').on('click', function (e) {
             e.preventDefault();
             e.preventDefault();
             e.stopPropagation();
             e.stopPropagation();

Version vom 26. Mai 2026, 14:05 Uhr

/* ============================================================
   Sidebar einklappbar – kompatibel mit Vector‑2022 Hybrid
   ============================================================ */

$(document).ready(function () {

    $('.mw-portlet').each(function () {

        const portlet = $(this);
        const heading = portlet.find('.vector-menu-heading');
        const content = portlet.find('.vector-menu-content');

        if (!heading.length || !content.length) return;

        // Falls keine ID vorhanden → generieren
        let pid = portlet.attr('id');
        if (!pid) {
            pid = 'portlet-auto-' + Math.random().toString(36).substr(2, 9);
            portlet.attr('id', pid);
        }

        const key = 'sidebar-state-' + pid;

        // Zustand laden
        const saved = localStorage.getItem(key);
        if (saved === 'collapsed') {
            content.hide();
            heading.addClass('collapsed');
        }

        // Klick
        heading.css('cursor', 'pointer').on('click', function (e) {
            e.preventDefault();
            e.stopPropagation();

            content.slideToggle(200);

            const collapsed = content.is(':hidden');
            heading.toggleClass('collapsed', collapsed);

            localStorage.setItem(key, collapsed ? 'collapsed' : 'expanded');
        });
    });
});