Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Citizen.js: Difference between revisions

MediaWiki interface page
No edit summary
No edit summary
Line 34: Line 34:
     citizenToc.props.onHeadingClick = function(id) {
     citizenToc.props.onHeadingClick = function(id) {
       const headingId = id.replace(/^toc-/, ''); // Remove toc- prefix
       const headingId = id.replace(/^toc-/, ''); // Remove toc- prefix
       const heading = document.getElementById(headingId);
       const heading = document.getElementById(headingId);
       if (!heading) {
       if (!heading) {
Line 43: Line 42:
       }
       }


       const sectionHeading = heading.closest('.citizen-section-heading');
       // First, try to expand via citizen-section-heading
       const content = sectionHeading?.nextElementSibling;
      let sectionHeading = heading.closest('.citizen-section-heading');
       let content = sectionHeading?.nextElementSibling;
 
      // If no citizen-section-heading found, fallback: find the closest citizen-section above
      if (!content) {
        content = heading.closest('.citizen-section');
      }


       if (content && content.hidden) {
       if (content && content.hidden) {
         content.hidden = false; // Expand parent section
         content.hidden = false; // Expand hidden section
       }
       }


       // Scroll to the heading AFTER expanding
       // Scroll after a slight delay
       setTimeout(() => {
       setTimeout(() => {
         heading.scrollIntoView({ behavior: 'smooth', block: 'start' });
         heading.scrollIntoView({ behavior: 'smooth', block: 'start' });