:en:MediaWiki:Gadget-switcher.js

'use strict';

$( function () {

$.each( document.querySelectorAll( '.switcher-container' ), function ( i, container ) {

if ( i == 0 ) { mw.loader.using(['mediawiki.util'], function(){mw.util.addCSS('.switcher-container label input{margin-right:0.5em}')}) }

var selected, $radio;

var switchers = []

var radioName = 'switcher-' + i;

var first = true;

$.each( container.children, function ( j, switcher ) {

var label = switcher.querySelector( '.switcher-label' );

if ( !label || !label.childNodes.length ) {

return;

}

switchers.push( switcher );

$radio = $( '' ).prop({ type: 'radio', name: radioName }).on( 'click', function () {

$( selected ).hide();

$( switcher ).show();

selected = switcher;

} );

if ( !selected ) {

// Mark the first one as selected

selected = switcher;

$radio.prop( 'checked', true );

} else if ( label.getAttribute( 'data-switcher-default' ) !== null ) {

// Custom default

$radio.click();

} else {

// Hide non-default

$( switcher ).hide();

}

$( '' ).append( $radio, label.childNodes ).appendTo( container );

first = false;

$( label ).remove();

} );

if ( switchers.length > 1 ) {

$( '' ).prepend(

$( '' ).prop({ type: 'radio', name: radioName }).on( 'click', function () {

$( switchers ).show();

selected = switchers;

} )

).appendTo( container );

}

if ( switchers.length === 1 ) {

$radio.remove();

}

} );

} );