ؐ /* Add an expand/collapse all button to the top of the Vector 2022 table of contents See also https://phabricator.wikimedia.org/T302426

To install add this line: importScript('User:The wub/tocExpandAllSandbox.js');

to https://en.wikipedia.org/wiki/Special:MyPage/vector-2022.js

  • /

$( document ).ready(function () {

   if ( 
       mw.config.get('skin') === 'vector-2022' &&
       document.querySelector('.vector-toc-level-1 ul li') // any subsections?
   ) {
       const expandButton = document.createElement('button');
       expandButton.innerText = 'expand all';
       expandButton.classList.add('vector-pinnable-header-toggle-button', 'vector-toc-expand-all');
       expandButton.addEventListener( 'click', e => {
           document.querySelectorAll('.vector-toc-contents .vector-toc-level-1').forEach( 
               node => node.classList.add('vector-toc-list-item-expanded')
           );
           document.querySelectorAll('.vector-toc-contents [aria-expanded="false"]').forEach(
               node => node.setAttribute('aria-expanded', 'true')
           );
           expandButton.style.display = 'none';
           collapseButton.style.display = 'inline-block';
           collapseButton.focus({ preventScroll: true });
       });
       
       const collapseButton = document.createElement('button');
       collapseButton.innerText = 'collapse all';
       collapseButton.classList.add('vector-pinnable-header-toggle-button', 'vector-toc-collapse-all');
       collapseButton.addEventListener( 'click', e => {
           document.querySelectorAll('.vector-toc-contents .vector-toc-level-1').forEach(
               node => node.classList.remove('vector-toc-list-item-expanded')
           );
           document.querySelectorAll('.vector-toc-contents [aria-expanded="true"]').forEach(
               node => node.setAttribute('aria-expanded', 'false')
           );
           collapseButton.style.display = 'none';
           expandButton.style.display = 'inline-block';
           expandButton.focus({ preventScroll: true });
       });
       // Any already expanded sections?
       if ( document.querySelector('.vector-toc-list-item-expanded ul li') ) {
           expandButton.style.display = 'none';
           collapseButton.style.display = 'inline-block';
       } else {
           expandButton.style.display = 'inline-block';
           collapseButton.style.display = 'none';
       }
       const tocHeader = document.querySelector('.vector-toc-pinnable-header');
       tocHeader.appendChild( expandButton );
       tocHeader.appendChild( collapseButton );
   }

});

Just forgiving the Chaos

edit

September 2024

edit
 
You have been blocked indefinitely from editing for block evasion.
If you think there are good reasons for being unblocked, please review Wikipedia's guide to appealing blocks, then add the following text to the bottom of your talk page: {{unblock|reason=Your reason here ~~~~}}.  Extraordinary Writ (talk) 22:23, 12 September 2024 (UTC)Reply