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 45: Line 45:
}
}


// Helper: Smooth scroll to heading with smart upward offset
// Helper: Smooth scroll to heading after expansion with smart delay
function smoothScrollToHeading(heading) {
function smoothScrollToHeading(heading) {
   if (!heading) return;
   if (!heading) return;


   heading.scrollIntoView({ behavior: 'smooth', block: 'start' });
   setTimeout(() => {
    heading.scrollIntoView({ behavior: 'smooth', block: 'start' });


  setTimeout(() => {
    setTimeout(() => {
    const offset = 60; // How much we want to adjust upward
      const offset = 60; // How much we want to adjust upward
    const maxScrollableUp = window.scrollY; // How much room we have to scroll upward
      const maxScrollableUp = window.scrollY; // How much room we have to scroll upward


    if (maxScrollableUp > offset) {
      if (maxScrollableUp > offset) {
      window.scrollBy(0, -offset); // Only scroll up if possible
        window.scrollBy(0, -offset); // Only scroll up if possible
    } else {
      } else {
      window.scrollTo({ top: 0, behavior: 'smooth' }); // Scroll to top if near the top
        window.scrollTo({ top: 0, behavior: 'smooth' }); // Scroll to top if near top
    }
      }
  }, 300); // Wait for smooth scroll to finish
    }, 300); // Wait for smooth scroll to finish before offset
  }, 300); // Wait for DOM reflow after expansion
}
}