diff --git a/extension.json b/extension.json index fe0665f6..bbff1729 100644 --- a/extension.json +++ b/extension.json @@ -209,9 +209,6 @@ "ext.uls.mediawiki", "ext.uls.webfonts", "mediawiki.api", - "mediawiki.ui.radio", - "mediawiki.ui.checkbox", - "mediawiki.ui.button", "mediawiki.user" ] }, @@ -278,8 +275,7 @@ "dependencies": [ "ext.uls.messages", "ext.uls.preferences", - "jquery.uls.grid", - "mediawiki.ui.button" + "jquery.uls.grid" ] }, "ext.uls.mediawiki": { @@ -347,7 +343,7 @@ "dependencies": [ "mediawiki.api", "mediawiki.jqueryMsg", - "mediawiki.ui.button", + "@wikimedia/codex", "mediawiki.Uri" ], "messages": [ diff --git a/includes/Hooks.php b/includes/Hooks.php index f51fc3af..bbb3119e 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -133,6 +133,24 @@ class Hooks implements return false; } + /** + * Adds Codex styles in a way that is compatible with MLEB. + * + * @param OutputPage $out + */ + private function loadCodexStyles( OutputPage $out ) { + if ( version_compare( MW_VERSION, '1.41', '<' ) ) { + // codex-search-styles was added in 1.41 so in older versions for MLEB support + // we load the full module. + $out->addModuleStyles( '@wikimedia/codex' ); + } else { + // Only needed for skins that do not load Codex. + if ( !in_array( $out->getSkin()->getSkinName(), [ 'minerva', 'vector-2022' ] ) ) { + $out->addModuleStyles( 'codex-search-styles' ); + } + } + } + /** * @param OutputPage $out * @param Skin $skin @@ -161,6 +179,8 @@ class Hooks implements strpos( $out->getHTML(), 'mw-interlanguage-selector' ) === false ) { $out->addModules( 'ext.uls.compactlinks' ); + // Add styles for the default button in the page. + $this->loadCodexStyles( $out ); } if ( is_string( $this->config->get( 'ULSGeoService' ) ) ) { @@ -170,6 +190,7 @@ class Hooks implements if ( $this->isEnabled() ) { // Enable UI language selection for the user. $out->addModules( 'ext.uls.interface' ); + $this->loadCodexStyles( $out ); $title = $out->getTitle(); $isMissingPage = !$title || !$title->exists(); diff --git a/resources/css/ext.uls.displaysettings.less b/resources/css/ext.uls.displaysettings.less index 7cd82297..69073084 100644 --- a/resources/css/ext.uls.displaysettings.less +++ b/resources/css/ext.uls.displaysettings.less @@ -2,16 +2,21 @@ @import '../../lib/codex-design-tokens/theme-wikimedia-ui-legacy.less'; @import 'mediawiki.mixins'; -.uls-display-settings-tab-switcher { - text-align: center; -} - .uls-button-group { display: inline-block; position: relative; - padding: 0; + // The 1px are needed to handle overflow in .cdx-button-group in 1.39 + padding: 1px 0 0 1px; left: -20px; - z-index: 1; +} + +.uls-display-settings-tab-switcher { + text-align: center; + + /** cdx-button-group adds a z-index of 0; increase specificity to override that */ + .uls-button-group { + z-index: 1; + } } .uls-sub-panel { diff --git a/resources/css/ext.uls.inputsettings.less b/resources/css/ext.uls.inputsettings.less index fe6c4db2..16d5d344 100644 --- a/resources/css/ext.uls.inputsettings.less +++ b/resources/css/ext.uls.inputsettings.less @@ -96,8 +96,8 @@ } } -.uls-input-settings-inputmethods-list .mw-ui-radio { - display: block; +.uls-input-settings .cdx-radio { + position: relative; } .uls-ime-notification-bubble .link { diff --git a/resources/css/ext.uls.interface.less b/resources/css/ext.uls.interface.less index 48e7cd7d..791f786f 100644 --- a/resources/css/ext.uls.interface.less +++ b/resources/css/ext.uls.interface.less @@ -36,8 +36,9 @@ &.uls-language-settings-button { background: transparent url( ../images/cog.svg ) no-repeat center; margin-left: auto; - min-width: unset; border: 0; + min-height: 20px; + min-width: 20px; } } } diff --git a/resources/css/ext.uls.languagesettings.less b/resources/css/ext.uls.languagesettings.less index 83330bd1..df1bab06 100644 --- a/resources/css/ext.uls.languagesettings.less +++ b/resources/css/ext.uls.languagesettings.less @@ -130,14 +130,20 @@ margin-left: 15px; } +// This can be removed when 1.39 support is dropped. +.uls-input-settings-inputmethods-list .cdx-radio__label, +.checkbox.cdx-checkbox__label { + padding-left: ~'calc(1.25em + 8px)'; +} + .uls-ui-languages p, .checkbox { color: @color-subtle; font-size: 10pt; } -/* mediawiki.ui does not have a pressed state style. */ -#languagesettings-panels .mw-ui-pressed { +/* @todo: Amend to use Codex when 1.39 support is no longer needed. */ +#languagesettings-panels .uls-cdx-button-pressed { background-color: @background-color-progressive--active; color: @color-inverted; border-color: @border-color-progressive--active; diff --git a/resources/js/ext.uls.actions.menu.js b/resources/js/ext.uls.actions.menu.js index 960badff..da1852a6 100644 --- a/resources/js/ext.uls.actions.menu.js +++ b/resources/js/ext.uls.actions.menu.js @@ -15,7 +15,7 @@ ActionsMenu.template = '