From 1d01f70e3210c092f74ce68886c7f40e3f480d1c Mon Sep 17 00:00:00 2001 From: jdlrobson Date: Mon, 1 Mar 2021 13:32:25 -0800 Subject: [PATCH] Refactor: Separate Language button code into its own JS file Having this outside the init function makes the code more easy to understand. Change-Id: I6bdcb385738ceb986e21075b006db40567386e7b --- resources/skins.vector.js/languageButton.js | 35 +++++++++++++++++++++ resources/skins.vector.js/skin.js | 25 ++------------- skin.json | 1 + 3 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 resources/skins.vector.js/languageButton.js diff --git a/resources/skins.vector.js/languageButton.js b/resources/skins.vector.js/languageButton.js new file mode 100644 index 0000000..9f6def8 --- /dev/null +++ b/resources/skins.vector.js/languageButton.js @@ -0,0 +1,35 @@ +/** + * Checks whether ULS is enabled and if so disables the default + * drop down behavior of the button. + */ +function disableLanguageDropdown() { + var ulsModuleStatus = mw.loader.getState( 'ext.uls.interface' ), + pLangBtnLabel; + + 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' ); + } +} + +/** + * Initialize the language button. + */ +module.exports = function () { + disableLanguageDropdown(); +}; diff --git a/resources/skins.vector.js/skin.js b/resources/skins.vector.js/skin.js index 2e18999..d62c4e9 100644 --- a/resources/skins.vector.js/skin.js +++ b/resources/skins.vector.js/skin.js @@ -1,5 +1,6 @@ var collapsibleTabs = require( '../skins.vector.legacy.js/collapsibleTabs.js' ), vector = require( '../skins.vector.legacy.js/vector.js' ), + languageButton = require( './languageButton.js' ), initSearchLoader = require( './searchLoader.js' ).initSearchLoader, sidebar = require( './sidebar.js' ); @@ -40,34 +41,12 @@ function enableCssAnimations( document ) { * @return {void} */ function main( window ) { - var - ulsModuleStatus = mw.loader.getState( 'ext.uls.interface' ), - pLangBtnLabel; - enableCssAnimations( window.document ); collapsibleTabs.init(); sidebar.init( window ); $( vector.init ); initSearchLoader( document ); - 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' ); - } + languageButton(); } main( window ); diff --git a/skin.json b/skin.json index dcff855..0fa6c1d 100644 --- a/skin.json +++ b/skin.json @@ -148,6 +148,7 @@ "resources/skins.vector.js/sidebar.js", "resources/skins.vector.legacy.js/collapsibleTabs.js", "resources/skins.vector.legacy.js/vector.js", + "resources/skins.vector.js/languageButton.js", "resources/skins.vector.js/searchLoader.js" ], "dependencies": [