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

Нет описания правки
Нет описания правки
Строка 820: Строка 820:
container.dataset.checkboxInitialized = '1';
container.dataset.checkboxInitialized = '1';
});
});
}
// Привязка expand/collapse к чекбоксу по id
function registerCheckboxExpander(checkboxId, options) {
    options = options || {};
    // если нужно — использовать только expand (по умолчанию false = делаем и collapse)
    var onlyExpand = !!options.onlyExpand;
    var checkbox = document.getElementById(checkboxId);
    if (!checkbox) {
        // Если чекбокс ещё не на странице — попробуем навесить через делегирование (MutationObserver опционально)
        console.warn('registerCheckboxExpander: checkbox not found by id:', checkboxId);
        return;
    }
    function expandAll() {
        var collapsed = document.querySelectorAll('.mw-collapsed');
        for (var i = 0; i < collapsed.length; i++) {
            collapsed[i].classList.remove('mw-collapsed');
        }
        var togglesCollapsed = document.querySelectorAll('.mw-collapsible-toggle-collapsed');
        for (var j = 0; j < togglesCollapsed.length; j++) {
            togglesCollapsed[j].classList.remove('mw-collapsible-toggle-collapsed');
            togglesCollapsed[j].classList.add('mw-collapsible-toggle-expanded');
        }
        var contents = document.querySelectorAll('.mw-collapsible-content');
        for (var k = 0; k < contents.length; k++) {
            if (contents[k].style && contents[k].style.display) {
                contents[k].style.removeProperty('display');
            }
        }
    }
    function collapseAll() {
        var collapsibleContainers = document.querySelectorAll('.mw-collapsible');
        for (var i = 0; i < collapsibleContainers.length; i++) {
            var el = collapsibleContainers[i];
            if (!el.classList.contains('mw-collapsed')) el.classList.add('mw-collapsed');
        }
        var togglesExpanded = document.querySelectorAll('.mw-collapsible-toggle-expanded');
        for (var j = 0; j < togglesExpanded.length; j++) {
            togglesExpanded[j].classList.remove('mw-collapsible-toggle-expanded');
            togglesExpanded[j].classList.add('mw-collapsible-toggle-collapsed');
        }
        var contents = document.querySelectorAll('.mw-collapsible-content');
        for (var k = 0; k < contents.length; k++) {
            contents[k].style.setProperty('display', 'none', 'important');
        }
    }
    checkbox.addEventListener('change', function (e) {
        if (checkbox.checked) {
            try { expandAll(); } catch (err) { console.error(err); }
        } else {
            if (!onlyExpand) {
                try { collapseAll(); } catch (err) { console.error(err); }
            }
        }
    });
    if (checkbox.checked) {
        try { expandAll(); } catch (err) { console.error(err); }
    }
}
}
const currentPageTitle = document.title;
const currentPageTitle = document.title;
Строка 921: Строка 987:
initCheckboxCreator();
initCheckboxCreator();
}
}
registerCheckboxExpander('js-checkbox-mw-collapsible');
});
});
/*WikiEditor/Викификатор*/
/*WikiEditor/Викификатор*/