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 @@
+
+
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 $( '