More actions
No edit summary Tag: Reverted |
No edit summary Tag: Reverted |
||
| Line 23: | Line 23: | ||
}); | }); | ||
// Auto-expand collapsed section if URL has | // === Auto-expand section if URL has a hash (on load and live click) === | ||
function expandTargetedSectionById(id) { | |||
const header = document.getElementById(id); | |||
if (!header) return; | |||
const sectionHeading = header.closest('.citizen-section-heading'); | |||
const content = sectionHeading?.nextElementSibling; | |||
if (content && content.hidden) { | |||
content.hidden = false; // Expand collapsed section | |||
} | |||
// Scroll into view (after a slight delay to ensure layout updated) | |||
setTimeout(() => { | |||
header.scrollIntoView({ behavior: 'smooth', block: 'start' }); | |||
}, 50); | |||
} | |||
// On page load: if URL has a hash like #Misc | |||
mw.hook('wikipage.content').add(function() { | mw.hook('wikipage.content').add(function() { | ||
if (window.innerWidth >= 768) { | if (window.innerWidth >= 768) { | ||
const hash = window.location.hash; | const hash = window.location.hash; | ||
if ( | if (hash && hash.length > 1) { | ||
expandTargetedSectionById(hash.substring(1)); | |||
} | |||
} | |||
}); | |||
// On TOC link clicks | |||
document.addEventListener('click', function(e) { | |||
if (window.innerWidth < 768) return; // only apply on desktop | |||
const anchor = e.target.closest('a[href^="#"]'); | |||
if (!anchor || !anchor.getAttribute('href')) return; | |||
const targetId = anchor.getAttribute('href').substring(1); | |||
if (!targetId) return; | |||
// Delay slightly to ensure URL updates and default behavior applies | |||
setTimeout(() => { | |||
expandTargetedSectionById(targetId); | |||
}, 0); | |||
}); | }); | ||