diff --git a/extension.json b/extension.json index c1fc12af..610c3c1d 100644 --- a/extension.json +++ b/extension.json @@ -264,8 +264,7 @@ "ext-uls-undo-language-tooltip-text", "ext-uls-undo-language-tooltip-text-local", "ext-uls-actions-menu-language-settings-item-label", - "ext-uls-actions-menu-header", - "ext-uls-actions-menu-language-settings-item-label", + "ext-uls-add-languages-button-label", "ext-uls-empty-state-header", "ext-uls-empty-state-desc", "ext-uls-empty-state-header-actions-available", diff --git a/i18n/en.json b/i18n/en.json index 0087d9a2..6dc6e03f 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -73,10 +73,10 @@ "ext-uls-setlang-accept": "Accept change", "ext-uls-setlang-loading": "Applying...", "ext-uls-setlang-cancel": "Don't change", - "ext-uls-actions-menu-header": "More options", "ext-uls-actions-menu-language-settings-item-label": "Open language settings", "ext-uls-empty-state-header": "No languages yet", "ext-uls-empty-state-desc": "No languages are available for now", "ext-uls-empty-state-header-actions-available": "No languages yet. Add a new one?", - "ext-uls-empty-state-desc-actions-available": " Make the content available in more languages." + "ext-uls-empty-state-desc-actions-available": " Make the content available in more languages.", + "ext-uls-add-languages-button-label": "Add languages" } diff --git a/i18n/qqq.json b/i18n/qqq.json index 2bed56fe..42e8694c 100644 --- a/i18n/qqq.json +++ b/i18n/qqq.json @@ -77,10 +77,10 @@ "ext-uls-setlang-accept": "Button label for accepting the suggested language in language preference dialog.", "ext-uls-setlang-loading": "Button label displayed while the API call is in progress after the user clicks on the accept button. See {{msg-mw|ext-uls-setlang-accept}}.", "ext-uls-setlang-cancel": "Button label for cancel on the language preference dialog.", - "ext-uls-actions-menu-header": "Title of the dialog that contains the quick actions menu, that opens when user clicks on the settings icon inside content language selector", "ext-uls-actions-menu-language-settings-item-label": "Label of the button that opens the language settings inside the quick actions menu of the content language selector.", "ext-uls-empty-state-header": "Header text shown in languages selector when there are no languages to select", "ext-uls-empty-state-desc": "Description text shown in languages selector when there are no languages to select", "ext-uls-empty-state-header-actions-available": "Header text shown in languages selector when there are no languages to select, but selector provides ways to create new.", - "ext-uls-empty-state-desc-actions-available": "Description text shown in languages selector when there are no languages to select, but selector provides ways to create new." + "ext-uls-empty-state-desc-actions-available": "Description text shown in languages selector when there are no languages to select, but selector provides ways to create new.", + "ext-uls-add-languages-button-label": "Label of the button" } diff --git a/resources/css/ext.uls.actions.menu.less b/resources/css/ext.uls.actions.menu.less index 816212ae..bf5319e8 100644 --- a/resources/css/ext.uls.actions.menu.less +++ b/resources/css/ext.uls.actions.menu.less @@ -16,10 +16,14 @@ } .uls-language-action-items { - .uls-language-action { + .uls-language-action.oo-ui-widget { margin: 0; padding: 12px 8px; display: block; + + .oo-ui-buttonElement-button { + padding-left: 36px; + } } } } diff --git a/resources/css/ext.uls.interface.less b/resources/css/ext.uls.interface.less index 81dd2a6f..2b647249 100644 --- a/resources/css/ext.uls.interface.less +++ b/resources/css/ext.uls.interface.less @@ -1,55 +1,74 @@ /* stylelint-disable selector-max-id */ @import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables.less'; #uls-settings-block { - background-color: #f8f9fa; - border-top: 1px solid #c8ccd1; - padding-left: 10px; - line-height: 1.2em; - border-radius: 0 0 2px 2px; + &.uls-settings-block--vector-2022 { + display: flex; + justify-content: space-between; + padding: 8px 12px; - > button { - background: left top transparent no-repeat; - // Support: Safari 3.1-6.1 & Android browser 3-4.3 - // Don't support `background-size` values in `background` shorthand - background-size: 20px auto; - color: #54595d; - display: inline-block; - // Normalize the button - margin: 8px 15px; - border: 0; - padding: 0 0 0 26px; - font-size: medium; - cursor: pointer; - - &:hover { - color: #202122; + // override grid styles, as we use flexbox here + &.row { + &:before, + &:after { + content: none; + } } - &.display-settings-block { - background-image: url( ../images/display.svg ); + &.uls-settings-block--with-add-languages { + background-color: @colorGray15; + border-top: 1px solid @colorGray12; } - &.input-settings-block { - background-image: url( ../images/input.svg ); + > button { + &.uls-add-languages-button { + background: transparent url( ../images/add.svg ) no-repeat left center; + margin-right: 32px; + padding-left: 32px; + } + + &.uls-language-settings-button { + background: transparent url( ../images/cog.svg ) no-repeat center; + margin-left: auto; + min-width: unset; + border: 0; + } } } -} -.mw-ui-button.uls-language-actions-button { - position: absolute; - bottom: 0; - // set a value that doesn't cause overlap with scrollbar - right: 16px; - background: center transparent no-repeat; - min-width: unset; + &:not( .uls-settings-block--vector-2022 ) { + background-color: @colorGray15; + border-top: 1px solid @colorGray12; + padding-left: 10px; + line-height: 1.2em; + border-radius: 0 0 2px 2px; - &--single { - background-image: url( ../images/cog.svg ); - } + > button { + background: left top transparent no-repeat; + // Support: Safari 3.1-6.1 & Android browser 3-4.3 + // Don't support `background-size` values in `background` shorthand + background-size: 20px auto; + color: @colorGray5; + display: inline-block; + margin: 8px 15px; + border: 0; + padding: 0 0 0 26px; + font-size: medium; + cursor: pointer; - &--multiple { - background-image: url( ../images/ellipsis.svg ); + &:hover { + color: @colorGray2; + } + + &.display-settings-block { + background-image: url( ../images/display.svg ); + } + + &.input-settings-block { + background-image: url( ../images/input.svg ); + } + } } } @@ -62,7 +81,7 @@ .uls-empty-state__header, .uls-empty-state__desc { - color: #54595d; + color: @colorGray5; } .uls-language-action-items { diff --git a/resources/images/add.svg b/resources/images/add.svg new file mode 100644 index 00000000..cfec3fc4 --- /dev/null +++ b/resources/images/add.svg @@ -0,0 +1,5 @@ + + + add + + diff --git a/resources/js/ext.uls.actions.menu.js b/resources/js/ext.uls.actions.menu.js index 347c8778..960badff 100644 --- a/resources/js/ext.uls.actions.menu.js +++ b/resources/js/ext.uls.actions.menu.js @@ -77,7 +77,7 @@ i18n: function () { this.$template.find( '.uls-language-actions-title strong' ) - .text( $.i18n( 'ext-uls-actions-menu-header' ) ); + .text( $.i18n( 'ext-uls-add-languages-button-label' ) ); }, hide: function () { diff --git a/resources/js/ext.uls.interface.js b/resources/js/ext.uls.interface.js index ded3a40e..c01de2c2 100644 --- a/resources/js/ext.uls.interface.js +++ b/resources/js/ext.uls.interface.js @@ -66,47 +66,6 @@ return $( '#p-lang-btn' ).length > 0 || mw.config.get( 'wgULSDisplaySettingsInInterlanguage' ); } - /** - * @return {jQuery} - */ - function createActionsMenuTrigger() { - var classes = [ 'mw-ui-button', 'mw-ui-quiet', 'uls-language-actions-button' ]; - return $( '