MediaWiki:Common.js

From Freegle Wiki
Revision as of 09:29, 6 October 2025 by WikiSysop (talk | contribs) (Update Common.js for MediaWiki 1.43 compatibility - replace deprecated hasClass/addHandler functions with modern mw-collapsible)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */

/** Collapsible tables *********************************************************
 *
 *  Description: Modern collapsible tables using MediaWiki's built-in functionality
 *  Updated for MediaWiki 1.43+ compatibility
 *
 *  Note: MediaWiki 1.43 provides native collapsible table support via the
 *  "mw-collapsible" class. The old custom implementation has been removed
 *  as it relied on deprecated functions (hasClass, addHandler, killEvt).
 *
 *  To use collapsible tables, simply add the "mw-collapsible" class to your table:
 *  {| class="wikitable mw-collapsible"
 *
 *  For tables that start collapsed, add "mw-collapsed":
 *  {| class="wikitable mw-collapsible mw-collapsed"
 */

// Initialize collapsible elements on page load
// MediaWiki's jquery.makeCollapsible module handles this automatically
// for elements with the mw-collapsible class
mw.hook( 'wikipage.content' ).add( function( $content ) {
    // Backwards compatibility: convert old "collapsible" class to "mw-collapsible"
    $content.find( 'table.collapsible' ).each( function() {
        var $table = $( this );

        // Add the modern class
        $table.addClass( 'mw-collapsible' );

        // If it had the old "collapsed" class, use the modern equivalent
        if ( $table.hasClass( 'collapsed' ) ) {
            $table.addClass( 'mw-collapsed' );
        }

        // Handle autocollapse
        if ( $table.hasClass( 'autocollapse' ) ) {
            // Count how many collapsible tables exist
            var collapsibleCount = $content.find( 'table.mw-collapsible' ).length;
            if ( collapsibleCount >= 2 ) {
                $table.addClass( 'mw-collapsed' );
            }
        }
    } );
} );