|
|
| Zeile 1: |
Zeile 1: |
| /* ============================================================
| | console.log("Common.js geladen"); |
| Sidebar einklappbar – Vector‑2022 Hybrid (funktioniert sicher)
| |
| ============================================================ */
| |
| | |
| $(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.addClass('collapsed-content').hide();
| |
| heading.addClass('collapsed');
| |
| }
| |
| | |
| // Klick
| |
| heading.css('cursor', 'pointer').on('click', function (e) {
| |
| e.preventDefault();
| |
| e.stopPropagation();
| |
| | |
| content.slideToggle(200, function () {
| |
| const collapsed = content.is(':hidden');
| |
| heading.toggleClass('collapsed', collapsed);
| |
| localStorage.setItem(key, collapsed ? 'collapsed' : 'expanded');
| |
| });
| |
| });
| |
| });
| |
| });
| |
console.log("Common.js geladen");