|
|
Line 20: |
Line 20: |
| } | | } |
| }); | | }); |
| }
| |
| });
| |
|
| |
| function expandSectionIfCollapsed(headerElement) {
| |
| const sectionHeading = headerElement.closest('.citizen-section-heading');
| |
| const content = sectionHeading?.nextElementSibling;
| |
|
| |
| if (content && content.hidden) {
| |
| content.hidden = false; // Expand the parent section
| |
| }
| |
| }
| |
|
| |
| function prepareAndScrollToTarget(id) {
| |
| const target = document.getElementById(id);
| |
| if (!target) return;
| |
|
| |
| expandSectionIfCollapsed(target);
| |
|
| |
| setTimeout(() => {
| |
| target.scrollIntoView({ behavior: 'smooth', block: 'start' });
| |
| }, 50);
| |
| }
| |
|
| |
| // === Handle TOC (Contents) clicks BEFORE hash changes ===
| |
| document.addEventListener('click', function(e) {
| |
| if (window.innerWidth < 768) return; // Desktop only
| |
|
| |
| const anchor = e.target.closest('a[href^="#"]');
| |
| if (!anchor) return;
| |
|
| |
| const href = anchor.getAttribute('href');
| |
| if (!href || !href.startsWith('#')) return;
| |
|
| |
| const id = href.substring(1);
| |
| if (!id) return;
| |
|
| |
| // Prevent default jump
| |
| e.preventDefault();
| |
|
| |
| // Expand and scroll manually
| |
| prepareAndScrollToTarget(id);
| |
|
| |
| // Update URL manually
| |
| history.pushState(null, '', href);
| |
| });
| |
|
| |
| // === Handle page load with #hash ===
| |
| mw.hook('wikipage.content').add(function() {
| |
| if (window.innerWidth >= 768) {
| |
| const hash = window.location.hash;
| |
| if (hash && hash.length > 1) {
| |
| prepareAndScrollToTarget(hash.substring(1));
| |
| }
| |
| } | | } |
| }); | | }); |
Revision as of 15:00, 25 April 2025
/* All JavaScript here will be loaded for users of the Citizen skin */
mw.hook('wikipage.content').add(function($content) {
if (window.innerWidth >= 768) { // Desktop only
const idsToCollapse = [
'Muling', 'Misc', 'Anti-ban', 'Anti-PK', 'Trip_Settings', 'Skills_Settings', 'Equipment'
];
idsToCollapse.forEach(function(rawId) {
var id = rawId.replace(/ /g, "_");
var heading = document.getElementById(id);
if (!heading) return;
var sectionHeading = heading.closest('.citizen-section-heading');
var content = sectionHeading?.nextElementSibling;
if (content && content.classList.contains('citizen-section')) {
content.hidden = 'until-found'; // ✅ collapse it using Citizen’s native system
}
});
}
});