MediaWiki:Gadget-wix-nav.js: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
Line 154:
}
 
// 2. Detect current page and its index
var currentPage = mw.config.get( 'wgPageName' ).replace( / /g, '_' );
var currentLabel = 'Navigate to\u2026';
var currentIdx = -1;
 
pages.forEach( function ( entry, i ) {
var normalizedPage = entry[ 1 ].replace( / /g, '_' );
if ( normalizedPage === currentPage ) {
currentLabel = entry[ 0 ];
currentIdx = i;
}
} );
Line 168 ⟶ 170:
wix.empty( container );
 
var wrapperdropdown = wix.el( 'div', {
className: 'wix-dropdown',
'role': 'navigation',
Line 213 ⟶ 215:
} );
 
wrapperdropdown.appendChild( toggle );
wrapperdropdown.appendChild( panel );
 
container.appendChild( wrapper );
// 4. Back / Next buttons
var isFirst = currentIdx <= 0;
var isLast = currentIdx >= pages.length - 1;
 
var btnBack = wix.el( 'a', {
className: 'wix-btn wix-btn--outline wix-dropdown-nav-btn',
textContent: '\u2190 Back'
} );
 
var btnNext = wix.el( 'a', {
className: 'wix-btn wix-dropdown-nav-btn',
textContent: 'Next \u2192'
} );
 
if ( isFirst || currentIdx === -1 ) {
btnBack.classList.add( 'wix-dropdown-nav-btn--disabled' );
btnBack.removeAttribute( 'href' );
} else {
btnBack.setAttribute( 'href', mw.util.getUrl( pages[ currentIdx - 1 ][ 1 ] ) );
}
 
if ( isLast || currentIdx === -1 ) {
btnNext.classList.add( 'wix-dropdown-nav-btn--disabled' );
btnNext.removeAttribute( 'href' );
} else {
btnNext.setAttribute( 'href', mw.util.getUrl( pages[ currentIdx + 1 ][ 1 ] ) );
}
 
// 5. Assemble: Back | Dropdown | Next
var row = wix.el( 'div', { className: 'wix-dropdown-row' }, [
btnBack,
dropdown,
btnNext
] );
 
container.appendChild( wrapperrow );
 
// 46. Toggle open/close
var isOpen = false;
 
Line 226 ⟶ 264:
} );
 
// 57. Close on click outside
document.addEventListener( 'click', function ( e ) {
if ( isOpen && !wrapperdropdown.contains( e.target ) ) {
isOpen = false;
toggle.classList.remove( 'wix-dropdown-toggle--open' );