MediaWiki:Gadget-CollapsibleNav.js
Jump to navigation
Jump 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.
/**
* Collapsible navigation for Vector
* @maintainer Nardog
*/
// CC0
'use strict';
function onToggle( e ) {
var collapsedIds = mw.storage.getObject( 'vector-nav-collapsed' ) || [],
index = collapsedIds.indexOf( this.id );
if ( e.type === 'afterExpand' ) {
// Remove ID from array
if ( index !== -1 ) {
collapsedIds.splice( index, 1 );
}
if ( collapsedIds.length ) {
mw.storage.setObject( 'vector-nav-collapsed', collapsedIds );
} else {
// Remove the data altogether if empty
mw.storage.remove( 'vector-nav-collapsed' );
}
} else {
if ( index === -1 ) {
collapsedIds.push( this.id );
mw.storage.setObject( 'vector-nav-collapsed', collapsedIds );
}
}
}
$( function () {
var collapsedIds = mw.storage.getObject( 'vector-nav-collapsed' ) || [];
$( '#mw-panel .vector-menu' )
.addClass( 'collapsible-nav mw-collapsible' )
.addClass( function () {
if ( collapsedIds.indexOf( this.id ) !== -1 ) {
return 'mw-collapsed';
}
} )
.children( '.vector-menu-heading' )
.addClass( 'mw-collapsible-toggle' )
.end()
.children( '.vector-menu-content' )
.addClass( 'mw-collapsible-content' )
.end()
.makeCollapsible()
.on( 'afterCollapse.mw-collapsible afterExpand.mw-collapsible', onToggle );
} );