MediaWiki:Gadget-switcher.js
Appearance
![]() | This page is loaded as a part of the switcher gadget, which is enabled by default. |
'use strict';
$( function () {
$.each( document.querySelectorAll( '.switcher-container' ), function ( i ) {
var activeElement, $showAllRadio;
var switchers = [], container = this, radioName = 'switcher-' + i;
$.each( this.children, function () {
var switcher = this, $showRadio;
var $labelContainer = $( switcher ).find( '.switcher-label' );
var $labelText = $labelContainer.contents();
if ( !$labelText.length ) {
return;
}
switchers.push( switcher );
$showRadio = $( '<input type="radio">' ).attr( 'name', radioName ).click( function () {
$( activeElement ).hide();
$( switcher ).show();
activeElement = switcher;
} );
if ( !activeElement ) {
activeElement = switcher;
$showRadio.prop( 'checked', true );
} else if ( $labelContainer.attr( 'data-switcher-default' ) !== undefined ) {
$showRadio.click();
} else {
$( switcher ).hide();
}
$( '<label style="display:block"></label>' ).append( $showRadio, $labelText ).appendTo( container );
$labelContainer.remove();
} );
if ( switchers.length > 1 ) {
$showAllRadio = $( '<input type="radio">' ).attr( 'name', radioName ).click( function () {
$( switchers ).show();
activeElement = switchers;
} );
$( '<label style="display:block">Show all</label>' ).prepend( $showAllRadio ).appendTo( container );
}
if ( switchers.length === 1 ) {
$showRadio.remove();
}
} );
} );