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

Content deleted Content added
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
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-dropdown-nav-btn'
}, [ wix.el( 'span', { className: 'wix-dropdown-nav-arrow', textContent: '\u25BC' } ) ] );
 
var btnNext = wix.el( 'a', {
className: 'wix-dropdown-nav-btn'
}, [ wix.el( 'span', { className: 'wix-dropdown-nav-arrow wix-dropdown-nav-arrow--next', textContent: '\u25BC' } ) ] );
 
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 );
 
// 6. Make nav buttons square (width = height, measured after layout)
setTimeout( function () {
var h = toggle.offsetHeight;
if ( h ) {
btnBack.style.width = h + 'px';
btnNext.style.width = h + 'px';
}
}, 0 );
 
// 47. Toggle open/close
var isOpen = false;
 
Line 226 ⟶ 271:
} );
 
// 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' );