2020-06-30 22:39:09 +00:00
|
|
|
var collapsibleTabs = require( '../skins.vector.legacy.js/collapsibleTabs.js' ),
|
|
|
|
vector = require( '../skins.vector.legacy.js/vector.js' ),
|
2020-08-04 12:02:50 +00:00
|
|
|
initSearchLoader = require( './searchLoader.js' ).initSearchLoader,
|
2020-06-30 22:39:09 +00:00
|
|
|
sidebar = require( './sidebar.js' );
|
2020-04-10 15:24:13 +00:00
|
|
|
|
2020-05-28 20:19:06 +00:00
|
|
|
/**
|
|
|
|
* Wait for first paint before calling this function. That's its whole purpose.
|
|
|
|
*
|
|
|
|
* Some CSS animations and transitions are "disabled" by default as a workaround to this old Chrome
|
|
|
|
* bug, https://bugs.chromium.org/p/chromium/issues/detail?id=332189, which otherwise causes them to
|
|
|
|
* render in their terminal state on page load. By adding the `vector-animations-ready` class to the
|
|
|
|
* `html` root element **after** first paint, the animation selectors suddenly match causing the
|
|
|
|
* animations to become "enabled" when they will work properly. A similar pattern is used in Minerva
|
|
|
|
* (see T234570#5779890, T246419).
|
|
|
|
*
|
|
|
|
* Example usage in Less:
|
|
|
|
*
|
|
|
|
* ```less
|
|
|
|
* .foo {
|
|
|
|
* color: #f00;
|
|
|
|
* .transform( translateX( -100% ) );
|
|
|
|
* }
|
|
|
|
*
|
|
|
|
* // This transition will be disabled initially for JavaScript users. It will never be enabled for
|
|
|
|
* // no-JS users.
|
|
|
|
* .vector-animations-ready .foo {
|
|
|
|
* .transition( transform 100ms ease-out; );
|
|
|
|
* }
|
|
|
|
* ```
|
|
|
|
*
|
|
|
|
* @param {Document} document
|
|
|
|
* @return {void}
|
|
|
|
*/
|
|
|
|
function enableCssAnimations( document ) {
|
|
|
|
document.documentElement.classList.add( 'vector-animations-ready' );
|
|
|
|
}
|
|
|
|
|
2020-03-30 20:07:35 +00:00
|
|
|
/**
|
|
|
|
* @param {Window} window
|
|
|
|
* @return {void}
|
|
|
|
*/
|
|
|
|
function main( window ) {
|
2021-02-04 02:23:19 +00:00
|
|
|
var
|
|
|
|
ulsModuleStatus = mw.loader.getState( 'ext.uls.interface' ),
|
|
|
|
pLangBtnLabel;
|
|
|
|
|
2020-05-28 20:19:06 +00:00
|
|
|
enableCssAnimations( window.document );
|
2020-04-10 15:24:13 +00:00
|
|
|
collapsibleTabs.init();
|
2020-06-30 22:39:09 +00:00
|
|
|
sidebar.init( window );
|
2020-04-10 15:24:13 +00:00
|
|
|
$( vector.init );
|
2020-08-04 12:02:50 +00:00
|
|
|
initSearchLoader( document );
|
2021-02-04 02:23:19 +00:00
|
|
|
if ( ulsModuleStatus && ulsModuleStatus !== 'registered' ) {
|
|
|
|
mw.loader.using( 'ext.uls.interface' ).then( function () {
|
|
|
|
var pLangBtn = document.getElementById( 'p-lang-btn' );
|
|
|
|
if ( !pLangBtn ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
pLangBtn.classList.add( 'vector-menu--hide-dropdown' );
|
|
|
|
} );
|
|
|
|
} else {
|
|
|
|
pLangBtnLabel = document.getElementById( 'p-lang-btn-label' );
|
|
|
|
if ( !pLangBtnLabel ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Remove .mw-interlanguage-selector to show the dropdown arrow since evidently
|
|
|
|
// ULS is not used.
|
|
|
|
pLangBtnLabel.classList.remove( 'mw-interlanguage-selector' );
|
|
|
|
}
|
2020-04-10 15:24:13 +00:00
|
|
|
}
|
|
|
|
|
2020-03-30 20:07:35 +00:00
|
|
|
main( window );
|