VolkerE has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/340443 )
Change subject: Update OOjs UI to v0.19.4 ...................................................................... Update OOjs UI to v0.19.4 Release notes: https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md;v0.19.4 Change-Id: Ifa1c6cb355a0c4f5073c93e37939cfc2f6653c81 --- M composer.json M resources/lib/oojs-ui/i18n/bqi.json M resources/lib/oojs-ui/i18n/br.json M resources/lib/oojs-ui/i18n/mg.json M resources/lib/oojs-ui/i18n/nn.json M resources/lib/oojs-ui/i18n/pnb.json M resources/lib/oojs-ui/i18n/yi.json M resources/lib/oojs-ui/oojs-ui-apex.js M resources/lib/oojs-ui/oojs-ui-core-apex.css M resources/lib/oojs-ui/oojs-ui-core-mediawiki.css M resources/lib/oojs-ui/oojs-ui-core.js M resources/lib/oojs-ui/oojs-ui-mediawiki.js M resources/lib/oojs-ui/oojs-ui-toolbars-apex.css M resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css M resources/lib/oojs-ui/oojs-ui-toolbars.js M resources/lib/oojs-ui/oojs-ui-widgets-apex.css M resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css M resources/lib/oojs-ui/oojs-ui-widgets.js M resources/lib/oojs-ui/oojs-ui-windows-apex.css M resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css M resources/lib/oojs-ui/oojs-ui-windows.js M resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json M resources/lib/oojs-ui/themes/apex/icons-interactions.json M resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg A resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png A resources/lib/oojs-ui/themes/apex/images/icons/diacritic.svg A resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png A resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg A resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png A resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.svg A resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png A resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg A resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png A resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.svg M resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json M resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json M resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg M resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg M resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png A resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg 57 files changed, 764 insertions(+), 274 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/43/340443/1 diff --git a/composer.json b/composer.json index 3520dc3..bc0ce17 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "ext-xml": "*", "liuggio/statsd-php-client": "1.0.18", "mediawiki/at-ease": "1.1.0", - "oojs/oojs-ui": "0.19.2", + "oojs/oojs-ui": "0.19.4", "oyejorge/less.php": "1.7.0.10", "php": ">=5.5.9", "psr/log": "1.0.2", diff --git a/resources/lib/oojs-ui/i18n/bqi.json b/resources/lib/oojs-ui/i18n/bqi.json index 8b85a20..a84374a 100644 --- a/resources/lib/oojs-ui/i18n/bqi.json +++ b/resources/lib/oojs-ui/i18n/bqi.json @@ -12,5 +12,6 @@ "ooui-dialog-process-retry": "ز نۉ تلاش کونين", "ooui-dialog-process-continue": "ديندا گرهڌن", "ooui-selectfile-button-select": "گولإڤورچين کردن جانیا", - "ooui-selectfile-placeholder": "هيژ جانيایي گولإ ڤورچين نڤابيڌإ" + "ooui-selectfile-placeholder": "هيژ جانيایي گولإ ڤورچين نڤابيڌإ", + "ooui-selectfile-dragdrop-placeholder": "جانيانأ ڤأنين ايچو" } diff --git a/resources/lib/oojs-ui/i18n/br.json b/resources/lib/oojs-ui/i18n/br.json index 83af863..cbfcab0 100644 --- a/resources/lib/oojs-ui/i18n/br.json +++ b/resources/lib/oojs-ui/i18n/br.json @@ -18,5 +18,9 @@ "ooui-dialog-process-error": "Un dra bennak a-dreuz a zo bet", "ooui-dialog-process-dismiss": "Disteurel", "ooui-dialog-process-retry": "Klask en-dro", - "ooui-dialog-process-continue": "Kenderc'hel" + "ooui-dialog-process-continue": "Kenderc'hel", + "ooui-selectfile-button-select": "Diuzañ ur restr", + "ooui-selectfile-not-supported": "N'eo ket skoret an diuzañ restroù", + "ooui-selectfile-placeholder": "N'eus bet diuzet restr ebet", + "ooui-selectfile-dragdrop-placeholder": "Lezel ar restr amañ" } diff --git a/resources/lib/oojs-ui/i18n/mg.json b/resources/lib/oojs-ui/i18n/mg.json index af97d17..722b3e2 100644 --- a/resources/lib/oojs-ui/i18n/mg.json +++ b/resources/lib/oojs-ui/i18n/mg.json @@ -3,5 +3,21 @@ "authors": [ "Jagwar" ] - } + }, + "ooui-outline-control-move-down": "Hampidina ilay zavatra", + "ooui-outline-control-move-up": "Hampiakatra ilay zavatra", + "ooui-outline-control-remove": "Hanala iay zavatra", + "ooui-toolbar-more": "Be kokoa", + "ooui-toolgroup-expand": "Be kokoa", + "ooui-toolgroup-collapse": "Kely kokoa", + "ooui-dialog-message-accept": "OK", + "ooui-dialog-message-reject": "Avela", + "ooui-dialog-process-error": "Nisy hadisoana nitranga", + "ooui-dialog-process-dismiss": "Esorina", + "ooui-dialog-process-retry": "Andramana indray", + "ooui-dialog-process-continue": "Tohizana", + "ooui-selectfile-button-select": "Misafidia rakitra iray", + "ooui-selectfile-not-supported": "Tsy zaka ny fisafidiana rakitra", + "ooui-selectfile-placeholder": "Tsy misy rakitra voafidy", + "ooui-selectfile-dragdrop-placeholder": "Hametraka rakitra eto" } diff --git a/resources/lib/oojs-ui/i18n/nn.json b/resources/lib/oojs-ui/i18n/nn.json index c8fba3d..e3f3e11 100644 --- a/resources/lib/oojs-ui/i18n/nn.json +++ b/resources/lib/oojs-ui/i18n/nn.json @@ -7,7 +7,13 @@ }, "ooui-outline-control-move-down": "Flytt element ned", "ooui-outline-control-move-up": "Flytt element opp", - "ooui-toolbar-more": "Fleire", + "ooui-toolbar-more": "Meir", + "ooui-toolgroup-expand": "Meir", + "ooui-toolgroup-collapse": "Færre", + "ooui-dialog-message-reject": "Bryt av", + "ooui-dialog-process-error": "Noko gjekk gale", + "ooui-dialog-process-dismiss": "Lat att", + "ooui-dialog-process-continue": "Hald fram", "ooui-selectfile-button-select": "Vel ei fil", "ooui-selectfile-placeholder": "Inga fil er vald" } diff --git a/resources/lib/oojs-ui/i18n/pnb.json b/resources/lib/oojs-ui/i18n/pnb.json index 8bd4be8..386871c 100644 --- a/resources/lib/oojs-ui/i18n/pnb.json +++ b/resources/lib/oojs-ui/i18n/pnb.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Saanvel" + "Saanvel", + "Abbas dhothar" ] }, "ooui-outline-control-move-down": "شیہ تھلے کرو", @@ -9,6 +10,7 @@ "ooui-outline-control-remove": "شیہ مٹاؤ", "ooui-toolbar-more": "ہور", "ooui-toolgroup-expand": "ہور", + "ooui-toolgroup-collapse": "گھٹ", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "مکاؤ", "ooui-dialog-process-error": "کوئی رپھڑ پے گیا اے۔", diff --git a/resources/lib/oojs-ui/i18n/yi.json b/resources/lib/oojs-ui/i18n/yi.json index f206a72..84048e7 100644 --- a/resources/lib/oojs-ui/i18n/yi.json +++ b/resources/lib/oojs-ui/i18n/yi.json @@ -18,6 +18,7 @@ "ooui-dialog-process-dismiss": "צומאַכן", "ooui-dialog-process-retry": "פרובירט נאכאמאל", "ooui-dialog-process-continue": "פֿארזעצן", + "ooui-selectfile-button-select": "קלויבט א טעקע", "ooui-selectfile-not-supported": "טעקע אויסווייל נישט געשטיצט", "ooui-selectfile-placeholder": "קיין טעקע נישט אויסגעוויילט" } diff --git a/resources/lib/oojs-ui/oojs-ui-apex.js b/resources/lib/oojs-ui/oojs-ui-apex.js index 2307413..541462f 100644 --- a/resources/lib/oojs-ui/oojs-ui-apex.js +++ b/resources/lib/oojs-ui/oojs-ui-apex.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:20Z + * Date: 2017-02-28T23:19:40Z */ ( function ( OO ) { diff --git a/resources/lib/oojs-ui/oojs-ui-core-apex.css b/resources/lib/oojs-ui/oojs-ui-core-apex.css index 524c16b..0818782 100644 --- a/resources/lib/oojs-ui/oojs-ui-core-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-core-apex.css @@ -1,13 +1,15 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:25Z + * Date: 2017-02-28T23:19:44Z */ +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ .oo-ui-element-hidden { display: none !important; /* stylelint-disable-line declaration-no-important */ @@ -41,8 +43,8 @@ cursor: default; } .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { +.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { display: inline-block; vertical-align: middle; } @@ -67,7 +69,7 @@ } .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus { - outline: none; + outline: 0; } .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon, .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon { @@ -124,7 +126,7 @@ .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus { border-color: #aaa; - outline: none; + outline: 0; } .oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { @@ -146,6 +148,8 @@ .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { margin-left: -0.5em; margin-right: -0.5em; + display: inline-block; + vertical-align: middle; } .oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { margin-right: 0.3em; @@ -472,7 +476,7 @@ position: relative; } .oo-ui-panelLayout-scrollable { - overflow-y: auto; + overflow: auto; -webkit-transform: translateZ(0); transform: translateZ(0); } @@ -650,7 +654,6 @@ } .oo-ui-popupWidget { position: absolute; - left: 0; } .oo-ui-popupWidget-popup { position: relative; @@ -665,7 +668,6 @@ display: block; position: absolute; /* `top` property is to be set in theme's selector due to specific `@size-anchor` values */ - left: 0; background-repeat: no-repeat; } .oo-ui-popupWidget-head { @@ -807,7 +809,7 @@ .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover, .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { border-color: rgba(0, 0, 0, 0.2); - outline: none; + outline: 0; } .oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { color: #ccc; @@ -929,14 +931,41 @@ -webkit-transition: border-color 250ms ease, box-shadow 250ms ease; -moz-transition: border-color 250ms ease, box-shadow 250ms ease; transition: border-color 250ms ease, box-shadow 250ms ease; + /* stylelint-disable indentation */ + /* stylelint-enable indentation */ } .oo-ui-textInputWidget input.oo-ui-pendingElement-pending, .oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending { background-color: transparent; } +.oo-ui-textInputWidget input::-webkit-input-placeholder, +.oo-ui-textInputWidget textarea::-webkit-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget input:-ms-input-placeholder, +.oo-ui-textInputWidget textarea:-ms-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget input::-moz-placeholder, +.oo-ui-textInputWidget textarea::-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget input:-moz-placeholder, +.oo-ui-textInputWidget textarea:-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget input::placeholder, +.oo-ui-textInputWidget textarea::placeholder { + color: #72777d; + opacity: 1; +} .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus, .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { - outline: none; + outline: 0; border-color: #a7dcff; box-shadow: 0 0 0.3em #a7dcff, 0 0 0 #fff; } @@ -1058,9 +1087,11 @@ -moz-box-sizing: border-box; box-sizing: border-box; } -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator, -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon, +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { position: absolute; + top: 0; + height: 100%; } .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { cursor: pointer; @@ -1076,20 +1107,18 @@ .oo-ui-dropdownWidget-handle:hover { border-color: rgba(0, 0, 0, 0.2); } -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - top: 0; - right: 0; - margin: 0.775em; -} .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - top: 0; left: 0.25em; - margin: 0.3em; + margin: 0 0.3em; } .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { line-height: 2.5em; margin: 0 0.5em; } +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { + right: 0; + margin: 0 0.775em; +} .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { color: #ccc; text-shadow: 0 1px 1px #fff; diff --git a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css index f3b3fce..f468d17 100644 --- a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css +++ b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css @@ -1,13 +1,15 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:25Z + * Date: 2017-02-28T23:19:44Z */ +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ .oo-ui-element-hidden { display: none !important; /* stylelint-disable-line declaration-no-important */ @@ -41,8 +43,8 @@ cursor: default; } .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { +.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { display: inline-block; vertical-align: middle; } @@ -63,9 +65,6 @@ } .oo-ui-buttonElement > .oo-ui-buttonElement-button:focus::-moz-focus-inner { border-color: transparent; -} -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - margin-left: 0; } .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { margin-right: 0.25em; @@ -180,19 +179,27 @@ padding-left: 2.4em; } .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - padding: 0.546875em 1em; - min-height: 2.5em; - min-width: 3.125em; - border-radius: 2px; position: relative; + min-height: 2.5em; + border-radius: 2px; + padding: 0.546875em 1em; +} +.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button { + min-width: 3.125em; +} +.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button { + min-width: 0; } .oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { line-height: 1.25; } .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + display: block; position: absolute; - top: 0.2em; + top: 0; + height: 100%; left: 0.5625em; } .oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { @@ -613,7 +620,7 @@ position: relative; } .oo-ui-panelLayout-scrollable { - overflow-y: auto; + overflow: auto; -webkit-transform: translateZ(0); transform: translateZ(0); } @@ -654,7 +661,7 @@ margin-right: 0; } .oo-ui-horizontalLayout > .oo-ui-layout { - margin-bottom: 0; + margin-top: 0; } .oo-ui-optionWidget { position: relative; @@ -806,7 +813,6 @@ } .oo-ui-popupWidget { position: absolute; - left: 0; } .oo-ui-popupWidget-popup { position: relative; @@ -821,7 +827,6 @@ display: block; position: absolute; /* `top` property is to be set in theme's selector due to specific `@size-anchor` values */ - left: 0; background-repeat: no-repeat; } .oo-ui-popupWidget-head { @@ -1044,17 +1049,23 @@ -moz-box-sizing: border-box; box-sizing: border-box; } +.oo-ui-dropdownInputWidget-php { + border-right: 1px solid #a2a9b1; + border-radius: 2px; + overflow-x: hidden; +} .oo-ui-dropdownInputWidget select { - background-color: #fff; - height: 2.275em; - font-size: inherit; - font-family: inherit; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border: 1px solid #a2a9b1; border-radius: 2px; - padding-left: 1em; + padding: 0.5em 1em; + font-size: inherit; + font-family: inherit; vertical-align: middle; } .oo-ui-dropdownInputWidget option { @@ -1063,14 +1074,42 @@ height: 1.5em; padding: 0.5em 1em; } -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover, +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select { + background-color: #f8f9fa; + background-position: -9999em 0; + background-repeat: no-repeat; + color: #222; + -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; + -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; + transition: background-color 100ms, border-color 100ms, box-shadow 100ms; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover { + background-color: #fff; + color: #444; + border-color: #a2a9b1; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:active { + color: #000; + border-color: #72777d; +} .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { + border-color: #36c; outline: 0; + box-shadow: inset 0 0 0 1px #36c; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select::-ms-expand { + display: none; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:not( [no-ie] ) { + background-position: right 1.75em center; + width: calc( 100% + 1em ); + height: 2.5em; + padding: 0 0 0 1em; } .oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { + background-color: #eaecf0; color: #72777d; border-color: #c8ccd1; - background-color: #eaecf0; } .oo-ui-radioInputWidget { position: relative; @@ -1304,6 +1343,8 @@ -webkit-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + /* stylelint-disable indentation */ + /* stylelint-enable indentation */ } .oo-ui-textInputWidget.oo-ui-widget-enabled input:hover, .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:hover { @@ -1328,28 +1369,36 @@ border-color: #c8ccd1; box-shadow: inset 0 0 0 1px #c8ccd1; } +.oo-ui-textInputWidget.oo-ui-widget-enabled input::-webkit-input-placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-webkit-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input:-ms-input-placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-ms-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input::-moz-placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input:-moz-placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget.oo-ui-widget-enabled input::placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::placeholder { + color: #72777d; + opacity: 1; +} @media screen and (min-width: 0) { .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { outline: 1px solid #36c; outline-offset: -2px; } -} -.oo-ui-textInputWidget.oo-ui-widget-enabled :-moz-placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled ::-moz-placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled :-ms-input-placeholder { - color: #72777d; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled ::-webkit-input-placeholder { - color: #72777d; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled :placeholder-shown { - color: #72777d; } .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input, .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea { @@ -1385,7 +1434,6 @@ } .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon { left: 0; - height: 100%; max-height: 2.375em; margin-left: 0.5em; background-position: right center; @@ -1401,8 +1449,9 @@ } .oo-ui-textInputWidget > .oo-ui-labelElement-label { color: #72777d; - padding: 0.4em; - line-height: 1.5; + margin-top: 1px; + padding: 0.625em 0.546875em 0.546875em; + line-height: 1.172em; } .oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label { margin-right: 2.0875em; @@ -1490,9 +1539,11 @@ -moz-box-sizing: border-box; box-sizing: border-box; } -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator, -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon, +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { position: absolute; + top: 0; + height: 100%; } .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { cursor: pointer; @@ -1508,14 +1559,12 @@ border-radius: 2px; } .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - top: 0; right: 0; - margin: 0.775em; + margin: 0 0.775em; } .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - top: 0; left: 0.25em; - margin: 0.3em; + margin: 0 0.3em; } .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { margin: 0 1em; @@ -1614,8 +1663,7 @@ .oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorElement-indicator { pointer-events: none; } -.oo-ui-comboBoxInputWidget input, -.oo-ui-comboBoxInputWidget textarea { +.oo-ui-comboBoxInputWidget input { height: 2.5em; border-top-right-radius: 0; border-bottom-right-radius: 0; @@ -1635,8 +1683,7 @@ border-top-left-radius: 0; border-bottom-left-radius: 0; } -.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty input, -.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty textarea { +.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty input { border-right-width: 1px; } .oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js index e327e5f..9eb8716 100644 --- a/resources/lib/oojs-ui/oojs-ui-core.js +++ b/resources/lib/oojs-ui/oojs-ui-core.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:20Z + * Date: 2017-02-28T23:19:40Z */ ( function ( OO ) { @@ -1073,6 +1073,73 @@ }; /** + * Get the number of pixels that an element's content is scrolled to the left. + * + * Adapted from <https://github.com/othree/jquery.rtl-scroll-type>. + * Original code copyright 2012 Wei-Ko Kao, licensed under the MIT License. + * + * This function smooths out browser inconsistencies (nicely described in the README at + * <https://github.com/othree/jquery.rtl-scroll-type>) and produces a result consistent + * with Firefox's 'scrollLeft', which seems the sanest. + * + * @static + * @method + * @param {HTMLElement|Window} el Element to measure + * @return {number} Scroll position from the left. + * If the element's direction is LTR, this is a positive number between `0` (initial scroll position) + * and `el.scrollWidth - el.clientWidth` (furthest possible scroll position). + * If the element's direction is RTL, this is a negative number between `0` (initial scroll position) + * and `-el.scrollWidth + el.clientWidth` (furthest possible scroll position). + */ +OO.ui.Element.static.getScrollLeft = ( function () { + var rtlScrollType = null; + + function test() { + var $definer = $( '<div dir="rtl" style="font-size: 14px; width: 1px; height: 1px; position: absolute; top: -1000px; overflow: scroll">A</div>' ), + definer = $definer[ 0 ]; + + $definer.appendTo( 'body' ); + if ( definer.scrollLeft > 0 ) { + // Safari, Chrome + rtlScrollType = 'default'; + } else { + definer.scrollLeft = 1; + if ( definer.scrollLeft === 0 ) { + // Firefox, old Opera + rtlScrollType = 'negative'; + } else { + // Internet Explorer, Edge + rtlScrollType = 'reverse'; + } + } + $definer.remove(); + } + + return function getScrollLeft( el ) { + var isRoot = el.window === el || + el === el.ownerDocument.body || + el === el.ownerDocument.documentElement, + scrollLeft = isRoot ? $( window ).scrollLeft() : el.scrollLeft, + // All browsers use the correct scroll type ('negative') on the root, so don't + // do any fixups when looking at the root element + direction = isRoot ? 'ltr' : $( el ).css( 'direction' ); + + if ( direction === 'rtl' ) { + if ( rtlScrollType === null ) { + test(); + } + if ( rtlScrollType === 'reverse' ) { + scrollLeft = -scrollLeft; + } else if ( rtlScrollType === 'default' ) { + scrollLeft = scrollLeft - el.scrollWidth + el.clientWidth; + } + } + + return scrollLeft; + }; +}() ); + +/** * Get scrollable object parent * * documentElement can't be used to get or set the scrollTop @@ -1117,7 +1184,8 @@ */ OO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension ) { var i, val, - // props = [ 'overflow' ] doesn't work due to https://bugzilla.mozilla.org/show_bug.cgi?id=889091 + // Browsers do not correctly return the computed value of 'overflow' when 'overflow-x' and + // 'overflow-y' have different values, so we need to check the separate properties. props = [ 'overflow-x', 'overflow-y' ], $parent = $( el ).parent(); @@ -1132,6 +1200,11 @@ i = props.length; while ( i-- ) { val = $parent.css( props[ i ] ); + // We assume that elements with 'overflow' (in any direction) set to 'hidden' will never be + // scrolled in that direction, but they can actually be scrolled programatically. The user can + // unintentionally perform a scroll in such case even if the application doesn't scroll + // programatically, e.g. when jumping to an anchor, or when using built-in find functionality. + // This could cause funny issues... if ( val === 'auto' || val === 'scroll' ) { return $parent[ 0 ]; } @@ -3818,6 +3891,11 @@ if ( this.input instanceof OO.ui.InputWidget ) { if ( this.input.getInputId() ) { this.$element.attr( 'for', this.input.getInputId() ); + } else { + this.$label.on( 'click', function () { + this.fieldWidget.focus(); + return false; + }.bind( this ) ); } } this.$element.addClass( 'oo-ui-labelWidget' ); @@ -3971,8 +4049,8 @@ }; /** - * Element that will stick under a specified container, even when it is inserted elsewhere in the - * document (for example, in a OO.ui.Window's $overlay). + * Element that will stick adjacent to a specified container, even when it is inserted elsewhere + * in the document (for example, in an OO.ui.Window's $overlay). * * The elements's position is automatically calculated and maintained when window is resized or the * page is scrolled. If you reposition the container manually, you have to call #position to make @@ -3988,7 +4066,19 @@ * @constructor * @param {Object} [config] Configuration options * @cfg {jQuery} [$floatable] Node to position, assigned to #$floatable, omit to use #$element - * @cfg {jQuery} [$floatableContainer] Node to position below + * @cfg {jQuery} [$floatableContainer] Node to position adjacent to + * @cfg {string} [verticalPosition='below'] Where to position $floatable vertically: + * 'below': Directly below $floatableContainer, aligning f's top edge with fC's bottom edge + * 'above': Directly above $floatableContainer, aligning f's bottom edge with fC's top edge + * 'top': Align the top edge with $floatableContainer's top edge + * 'bottom': Align the bottom edge with $floatableContainer's bottom edge + * 'center': Vertically align the center with $floatableContainer's center + * @cfg {string} [horizontalPosition='start'] Where to position $floatable horizontally: + * 'before': Directly before $floatableContainer, aligning f's end edge with fC's start edge + * 'after': Directly after $floatableContainer, algining f's start edge with fC's end edge + * 'start': Align the start (left in LTR, right in RTL) edge with $floatableContainer's start edge + * 'end': Align the end (right in LTR, left in RTL) edge with $floatableContainer's end edge + * 'center': Horizontally align the center with $floatableContainer's center */ OO.ui.mixin.FloatableElement = function OoUiMixinFloatableElement( config ) { // Configuration initialization @@ -4005,6 +4095,8 @@ // Initialization this.setFloatableContainer( config.$floatableContainer ); this.setFloatableElement( config.$floatable || this.$element ); + this.setVerticalPosition( config.verticalPosition || 'below' ); + this.setHorizontalPosition( config.horizontalPosition || 'start' ); }; /* Methods */ @@ -4029,12 +4121,42 @@ /** * Set floatable container. * - * The element will be always positioned under the specified container. + * The element will be positioned relative to the specified container. * * @param {jQuery|null} $floatableContainer Container to keep visible, or null to unset */ OO.ui.mixin.FloatableElement.prototype.setFloatableContainer = function ( $floatableContainer ) { this.$floatableContainer = $floatableContainer; + if ( this.$floatable ) { + this.position(); + } +}; + +/** + * Change how the element is positioned vertically. + * + * @param {string} position 'below', 'above', 'top', 'bottom' or 'center' + */ +OO.ui.mixin.FloatableElement.prototype.setVerticalPosition = function ( position ) { + if ( [ 'below', 'above', 'top', 'bottom', 'center' ].indexOf( position ) === -1 ) { + throw new Error( 'Invalid value for vertical position: ' + position ); + } + this.verticalPosition = position; + if ( this.$floatable ) { + this.position(); + } +}; + +/** + * Change how the element is positioned horizontally. + * + * @param {string} position 'before', 'after', 'start', 'end' or 'center' + */ +OO.ui.mixin.FloatableElement.prototype.setHorizontalPosition = function ( position ) { + if ( [ 'before', 'after', 'start', 'end', 'center' ].indexOf( position ) === -1 ) { + throw new Error( 'Invalid value for horizontal position: ' + position ); + } + this.horizontalPosition = position; if ( this.$floatable ) { this.position(); } @@ -4057,11 +4179,20 @@ positioning = positioning === undefined ? !this.positioning : !!positioning; + if ( positioning && !this.warnedUnattached && !this.isElementAttached() ) { + OO.ui.warnDeprecation( 'FloatableElement#togglePositioning: Before calling this method, the element must be attached to the DOM.' ); + this.warnedUnattached = true; + } + if ( this.positioning !== positioning ) { this.positioning = positioning; + this.needsCustomPosition = + this.verticalPostion !== 'below' || + this.horizontalPosition !== 'start' || + !OO.ui.contains( this.$floatableContainer[ 0 ], this.$floatable[ 0 ] ); + closestScrollableOfContainer = OO.ui.Element.static.getClosestScrollableContainer( this.$floatableContainer[ 0 ] ); - this.needsCustomPosition = !OO.ui.contains( this.$floatableContainer[ 0 ], this.$floatable[ 0 ] ); // If the scrollable is the root, we have to listen to scroll events // on the window because of browser inconsistencies. if ( $( closestScrollableOfContainer ).is( 'html, body' ) ) { @@ -4104,10 +4235,9 @@ * @return {boolean} */ OO.ui.mixin.FloatableElement.prototype.isElementInViewport = function ( $element, $container ) { - var elemRect, contRect, - leftEdgeInBounds = false, - bottomEdgeInBounds = false, - rightEdgeInBounds = false; + var elemRect, contRect, topEdgeInBounds, bottomEdgeInBounds, leftEdgeInBounds, rightEdgeInBounds, + startEdgeInBounds, endEdgeInBounds, + direction = $element.css( 'direction' ); elemRect = $element[ 0 ].getBoundingClientRect(); if ( $container[ 0 ] === window ) { @@ -4121,20 +4251,35 @@ contRect = $container[ 0 ].getBoundingClientRect(); } - // For completeness, if we still cared about topEdgeInBounds, that'd be: - // elemRect.top >= contRect.top && elemRect.top <= contRect.bottom - if ( elemRect.left >= contRect.left && elemRect.left <= contRect.right ) { - leftEdgeInBounds = true; - } - if ( elemRect.bottom >= contRect.top && elemRect.bottom <= contRect.bottom ) { - bottomEdgeInBounds = true; - } - if ( elemRect.right >= contRect.left && elemRect.right <= contRect.right ) { - rightEdgeInBounds = true; + topEdgeInBounds = elemRect.top >= contRect.top && elemRect.top <= contRect.bottom; + bottomEdgeInBounds = elemRect.bottom >= contRect.top && elemRect.bottom <= contRect.bottom; + leftEdgeInBounds = elemRect.left >= contRect.left && elemRect.left <= contRect.right; + rightEdgeInBounds = elemRect.right >= contRect.left && elemRect.right <= contRect.right; + if ( direction === 'rtl' ) { + startEdgeInBounds = rightEdgeInBounds; + endEdgeInBounds = leftEdgeInBounds; + } else { + startEdgeInBounds = leftEdgeInBounds; + endEdgeInBounds = rightEdgeInBounds; } - // We only care that any part of the bottom edge is visible - return bottomEdgeInBounds && ( leftEdgeInBounds || rightEdgeInBounds ); + if ( this.verticalPosition === 'below' && !bottomEdgeInBounds ) { + return false; + } + if ( this.verticalPosition === 'above' && !topEdgeInBounds ) { + return false; + } + if ( this.horizontalPosition === 'before' && !startEdgeInBounds ) { + return false; + } + if ( this.horizontalPosition === 'after' && !endEdgeInBounds ) { + return false; + } + + // The other positioning values are all about being inside the container, + // so in those cases all we care about is that any part of the container is visible. + return elemRect.top <= contRect.bottom && elemRect.bottom >= contRect.top && + elemRect.left <= contRect.right && elemRect.right >= contRect.left; }; /** @@ -4145,7 +4290,9 @@ * @chainable */ OO.ui.mixin.FloatableElement.prototype.position = function () { - var pos; + var containerPos, direction, $offsetParent, isBody, scrollableX, scrollableY, + horizScrollbarHeight, vertScrollbarWidth, scrollTop, scrollLeft, + newPos = { top: '', left: '', bottom: '', right: '' }; if ( !this.positioning ) { return this; @@ -4162,16 +4309,106 @@ return; } - pos = OO.ui.Element.static.getRelativePosition( this.$floatableContainer, this.$floatable.offsetParent() ); - // Position under container - pos.top += this.$floatableContainer.height(); - // In LTR, we position from the left, and pos.left is already set - // In RTL, we position from the right instead. - if ( this.$floatableContainer.css( 'direction' ) === 'rtl' ) { - pos.right = this.$floatable.offsetParent().width() - pos.left - this.$floatableContainer.outerWidth(); - delete pos.left; + direction = this.$floatableContainer.css( 'direction' ); + $offsetParent = this.$floatable.offsetParent(); + if ( $offsetParent.is( 'html' ) ) { + // The innerHeight/Width and clientHeight/Width calculations don't work well on the + // <html> element, but they do work on the <body> + $offsetParent = $( $offsetParent[ 0 ].ownerDocument.body ); } - this.$floatable.css( pos ); + isBody = $offsetParent.is( 'body' ); + scrollableX = $offsetParent.css( 'overflow-x' ) === 'scroll' || $offsetParent.css( 'overflow-x' ) === 'auto'; + scrollableY = $offsetParent.css( 'overflow-y' ) === 'scroll' || $offsetParent.css( 'overflow-y' ) === 'auto'; + + vertScrollbarWidth = $offsetParent.innerWidth() - $offsetParent.prop( 'clientWidth' ); + horizScrollbarHeight = $offsetParent.innerHeight() - $offsetParent.prop( 'clientHeight' ); + // We don't need to compute and add scrollTop and scrollLeft if the scrollable container is the body, + // or if it isn't scrollable + scrollTop = scrollableY && !isBody ? $offsetParent.scrollTop() : 0; + scrollLeft = scrollableX && !isBody ? OO.ui.Element.static.getScrollLeft( $offsetParent[ 0 ] ) : 0; + + // Avoid passing the <body> to getRelativePosition(), because it won't return what we expect + // if the <body> has a margin + containerPos = isBody ? + this.$floatableContainer.offset() : + OO.ui.Element.static.getRelativePosition( this.$floatableContainer, $offsetParent ); + containerPos.bottom = containerPos.top + this.$floatableContainer.outerHeight(); + containerPos.right = containerPos.left + this.$floatableContainer.outerWidth(); + containerPos.start = direction === 'rtl' ? containerPos.right : containerPos.left; + containerPos.end = direction === 'rtl' ? containerPos.left : containerPos.right; + + if ( this.verticalPosition === 'below' ) { + newPos.top = containerPos.bottom; + } else if ( this.verticalPosition === 'above' ) { + newPos.bottom = $offsetParent.outerHeight() - containerPos.top; + } else if ( this.verticalPosition === 'top' ) { + newPos.top = containerPos.top; + } else if ( this.verticalPosition === 'bottom' ) { + newPos.bottom = $offsetParent.outerHeight() - containerPos.bottom; + } else if ( this.verticalPosition === 'center' ) { + newPos.top = containerPos.top + + ( this.$floatableContainer.height() - this.$floatable.height() ) / 2; + } + + if ( this.horizontalPosition === 'before' ) { + newPos.end = containerPos.start; + } else if ( this.horizontalPosition === 'after' ) { + newPos.start = containerPos.end; + } else if ( this.horizontalPosition === 'start' ) { + newPos.start = containerPos.start; + } else if ( this.horizontalPosition === 'end' ) { + newPos.end = containerPos.end; + } else if ( this.horizontalPosition === 'center' ) { + newPos.left = containerPos.left + + ( this.$floatableContainer.width() - this.$floatable.width() ) / 2; + } + + if ( newPos.start !== undefined ) { + if ( direction === 'rtl' ) { + newPos.right = ( isBody ? $( $offsetParent[ 0 ].ownerDocument.documentElement ) : $offsetParent ).outerWidth() - newPos.start; + } else { + newPos.left = newPos.start; + } + delete newPos.start; + } + if ( newPos.end !== undefined ) { + if ( direction === 'rtl' ) { + newPos.left = newPos.end; + } else { + newPos.right = ( isBody ? $( $offsetParent[ 0 ].ownerDocument.documentElement ) : $offsetParent ).outerWidth() - newPos.end; + } + delete newPos.end; + } + + // Account for scroll position + if ( newPos.top !== '' ) { + newPos.top += scrollTop; + } + if ( newPos.bottom !== '' ) { + newPos.bottom -= scrollTop; + } + if ( newPos.left !== '' ) { + newPos.left += scrollLeft; + } + if ( newPos.right !== '' ) { + newPos.right -= scrollLeft; + } + + // Account for scrollbar gutter + if ( newPos.bottom !== '' ) { + newPos.bottom -= horizScrollbarHeight; + } + if ( direction === 'rtl' ) { + if ( newPos.left !== '' ) { + newPos.left -= vertScrollbarWidth; + } + } else { + if ( newPos.right !== '' ) { + newPos.right -= vertScrollbarWidth; + } + } + + this.$floatable.css( newPos ); // We updated the position, so re-evaluate the clipping state. // (ClippableElement does not listen to 'scroll' events on $floatableContainer's parent, and so @@ -4280,6 +4517,11 @@ */ OO.ui.mixin.ClippableElement.prototype.toggleClipping = function ( clipping ) { clipping = clipping === undefined ? !this.clipping : !!clipping; + + if ( clipping && !this.warnedUnattached && !this.isElementAttached() ) { + OO.ui.warnDeprecation( 'ClippableElement#toggleClipping: Before calling this method, the element must be attached to the DOM.' ); + this.warnedUnattached = true; + } if ( this.clipping !== clipping ) { this.clipping = clipping; @@ -4475,6 +4717,8 @@ * PopupWidget is a container for content. The popup is overlaid and positioned absolutely. * By default, each popup has an anchor that points toward its origin. * Please see the [OOjs UI documentation on Mediawiki] [1] for more information and examples. + * + * Unlike most widgets, PopupWidget is initially hidden and must be shown by calling #toggle. * * @example * // A popup widget. @@ -4717,6 +4961,14 @@ }; /** + * Toggle visibility of the popup. The popup is initially hidden and must be shown by calling + * `.toggle( true )` after its #$element is attached to the DOM. + * + * Do not show the popup while it is not attached to the DOM. The calculations required to display + * it in the right place and with the right dimensions only work correctly while it is attached. + * Side-effects may include broken interface and exceptions being thrown. This wasn't always + * strictly enforced, so currently it only generates a warning in the browser console. + * * @inheritdoc */ OO.ui.PopupWidget.prototype.toggle = function ( show ) { @@ -4724,6 +4976,11 @@ show = show === undefined ? !this.isVisible() : !!show; change = show !== this.isVisible(); + + if ( show && !this.warnedUnattached && !this.isElementAttached() ) { + OO.ui.warnDeprecation( 'PopupWidget#toggle: Before calling this method, the popup must be attached to the DOM.' ); + this.warnedUnattached = true; + } // Parent method OO.ui.PopupWidget.parent.prototype.toggle.call( this, show ); @@ -6362,6 +6619,8 @@ * - Down-arrow key: highlight the next menu option * - Esc key: hide the menu * + * Unlike most widgets, MenuSelectWidget is initially hidden and must be shown by calling #toggle. + * * Please see the [OOjs UI documentation on MediaWiki][1] for more information. * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options * @@ -6381,6 +6640,7 @@ * that toggles the menu's visibility on click, the menu will be hidden then re-shown when the user clicks * that button, unless the button (or its parent widget) is passed in here. * @cfg {boolean} [autoHide=true] Hide the menu when the mouse is pressed outside the menu. + * @cfg {boolean} [hideOnChoose=true] Hide the menu when the user chooses an option. * @cfg {boolean} [filterFromInput=false] Filter the displayed options from the input */ OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) { @@ -6395,6 +6655,7 @@ // Properties this.autoHide = config.autoHide === undefined || !!config.autoHide; + this.hideOnChoose = config.hideOnChoose === undefined || !!config.hideOnChoose; this.filterFromInput = !!config.filterFromInput; this.$input = config.$input ? config.$input : config.input ? config.input.$input : null; this.$widget = config.widget ? config.widget.$element : null; @@ -6548,7 +6809,7 @@ /** * Choose an item. * - * When a user chooses an item, the menu is closed. + * When a user chooses an item, the menu is closed, unless the hideOnChoose config option is set to false. * * Note that ‘choose’ should never be modified programmatically. A user can choose an option with the keyboard * or mouse and it becomes selected. To select an item programmatically, use the #selectItem method. @@ -6558,7 +6819,9 @@ */ OO.ui.MenuSelectWidget.prototype.chooseItem = function ( item ) { OO.ui.MenuSelectWidget.parent.prototype.chooseItem.call( this, item ); - this.toggle( false ); + if ( this.hideOnChoose ) { + this.toggle( false ); + } return this; }; @@ -6602,6 +6865,14 @@ }; /** + * Toggle visibility of the menu. The menu is initially hidden and must be shown by calling + * `.toggle( true )` after its #$element is attached to the DOM. + * + * Do not show the menu while it is not attached to the DOM. The calculations required to display + * it in the right place and with the right dimensions only work correctly while it is attached. + * Side-effects may include broken interface and exceptions being thrown. This wasn't always + * strictly enforced, so currently it only generates a warning in the browser console. + * * @inheritdoc */ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) { @@ -6609,6 +6880,11 @@ visible = ( visible === undefined ? !this.visible : !!visible ) && !!this.items.length; change = visible !== this.isVisible(); + + if ( visible && !this.warnedUnattached && !this.isElementAttached() ) { + OO.ui.warnDeprecation( 'MenuSelectWidget#toggle: Before calling this method, the menu must be attached to the DOM.' ); + this.warnedUnattached = true; + } // Parent method OO.ui.MenuSelectWidget.parent.prototype.toggle.call( this, visible ); @@ -10077,6 +10353,7 @@ * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a "help" icon will appear * in the upper-right corner of the rendered field; clicking it will display the text in a popup. * For important messages, you are advised to use `notices`, as they are always shown. + * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given. * * @throws {Error} An error is thrown if no widget is specified */ @@ -10115,6 +10392,7 @@ this.align = null; if ( config.help ) { this.popupButtonWidget = new OO.ui.PopupButtonWidget( { + $overlay: config.$overlay, popup: { padded: true }, @@ -10139,6 +10417,11 @@ if ( fieldWidget.constructor.static.supportsSimpleLabel ) { if ( this.fieldWidget.getInputId() ) { this.$label.attr( 'for', this.fieldWidget.getInputId() ); + } else { + this.$label.on( 'click', function () { + this.fieldWidget.focus(); + return false; + }.bind( this ) ); } } this.$element @@ -10419,6 +10702,7 @@ * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a "help" icon will appear * in the upper-right corner of the rendered field; clicking it will display the text in a popup. * For important messages, you are advised to use `notices`, as they are always shown. + * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given. */ OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) { // Configuration initialization @@ -10436,6 +10720,7 @@ this.$header = $( '<div>' ); if ( config.help ) { this.popupButtonWidget = new OO.ui.PopupButtonWidget( { + $overlay: config.$overlay, popup: { padded: true }, diff --git a/resources/lib/oojs-ui/oojs-ui-mediawiki.js b/resources/lib/oojs-ui/oojs-ui-mediawiki.js index 3989caa..b39010c 100644 --- a/resources/lib/oojs-ui/oojs-ui-mediawiki.js +++ b/resources/lib/oojs-ui/oojs-ui-mediawiki.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:20Z + * Date: 2017-02-28T23:19:40Z */ ( function ( OO ) { diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css b/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css index b154288..4d7f9d7 100644 --- a/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css @@ -1,13 +1,15 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:25Z + * Date: 2017-02-28T23:19:44Z */ +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ .oo-ui-popupTool .oo-ui-popupWidget-popup, .oo-ui-popupTool .oo-ui-popupWidget-anchor { z-index: 4; diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css index 5d313ab..59de29b 100644 --- a/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css +++ b/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css @@ -1,13 +1,15 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:25Z + * Date: 2017-02-28T23:19:44Z */ +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ .oo-ui-tool.oo-ui-widget-enabled { -webkit-transition: background-color 100ms; -moz-transition: background-color 100ms; @@ -36,9 +38,6 @@ .oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon { height: 2.5em; width: 1.875em; -} -.oo-ui-toolGroupTool > .oo-ui-popupToolGroup.oo-ui-labelElement > .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - line-height: 2.1; } .oo-ui-toolGroup { display: inline-block; @@ -261,10 +260,6 @@ height: 2.5em; width: 1.875em; min-width: 1.875em; -} -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title, -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel { - line-height: 2; } .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title { padding-left: 0.5em; diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars.js b/resources/lib/oojs-ui/oojs-ui-toolbars.js index e89a734..777debf 100644 --- a/resources/lib/oojs-ui/oojs-ui-toolbars.js +++ b/resources/lib/oojs-ui/oojs-ui-toolbars.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:20Z + * Date: 2017-02-28T23:19:40Z */ ( function ( OO ) { diff --git a/resources/lib/oojs-ui/oojs-ui-widgets-apex.css b/resources/lib/oojs-ui/oojs-ui-widgets-apex.css index b8445e9..a1064bb 100644 --- a/resources/lib/oojs-ui/oojs-ui-widgets-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-widgets-apex.css @@ -1,13 +1,15 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:25Z + * Date: 2017-02-28T23:19:44Z */ +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ .oo-ui-draggableElement-handle, .oo-ui-draggableElement-handle.oo-ui-widget { cursor: move; @@ -33,7 +35,7 @@ display: inline-block; } .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable { - overflow-y: hidden; + overflow: hidden; } .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout { width: 100%; @@ -41,19 +43,13 @@ -moz-box-sizing: border-box; box-sizing: border-box; } -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-scrollable { - overflow-y: auto; -} -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-padded { - padding: 2em; -} .oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget { position: absolute; top: 0; left: 0; right: 0; bottom: 3em; - overflow-y: auto; + overflow: auto; } .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget { position: absolute; @@ -353,6 +349,8 @@ .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator, .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { position: absolute; + top: 0; + height: 100%; } .oo-ui-widget-disabled .oo-ui-selectFileWidget-info { cursor: default; @@ -483,15 +481,11 @@ border-width: 1px 0 1px 1px; } .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { - top: 0; left: 0; - height: 2.3em; margin-left: 0.3em; } .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator { - top: 0; right: 0; - height: 2.3em; margin-right: 0.775em; } .oo-ui-selectFileWidget-label { @@ -621,15 +615,6 @@ background-color: #a7dcff; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); } -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-important { - font-weight: bold; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon { - opacity: 0.5; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label { - color: #777; -} .oo-ui-outlineControlsWidget { height: 3em; background-color: #fff; @@ -720,6 +705,12 @@ display: block; position: relative; } +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon, +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { + position: absolute; + top: 0; + height: 100%; +} .oo-ui-capsuleMultiselectWidget-content { position: relative; } @@ -752,10 +743,6 @@ .oo-ui-capsuleMultiselectWidget-handle:last-child { margin-right: 0; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator, -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon { - position: absolute; -} .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input { border: 0; line-height: 1.675em; @@ -767,25 +754,45 @@ background-color: transparent; color: #000; vertical-align: middle; + /* stylelint-disable indentation */ + /* stylelint-enable indentation */ +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-webkit-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-ms-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::placeholder { + color: #72777d; + opacity: 1; } .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:focus { - outline: none; -} -.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle { - padding-right: 2.4875em; -} -.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { - right: 0; - top: 0; - margin: 0.775em; + outline: 0; } .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle { padding-left: 2.475em; } .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon { left: 0; - top: 0; - margin: 0.3em; + margin: 0 0.3em; +} +.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle { + padding-right: 2.4875em; +} +.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { + right: 0; + margin: 0 0.775em; } .oo-ui-capsuleMultiselectWidget:hover .oo-ui-capsuleMultiselectWidget-handle { border-color: rgba(0, 0, 0, 0.2); @@ -836,7 +843,7 @@ cursor: text; } .oo-ui-capsuleItemWidget:focus { - outline: none; + outline: 0; border-color: #087ecc; } .oo-ui-capsuleItemWidget.oo-ui-widget-disabled { diff --git a/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css index aab3b62..495cbfe 100644 --- a/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css +++ b/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css @@ -1,13 +1,15 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:25Z + * Date: 2017-02-28T23:19:44Z */ +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ .oo-ui-draggableElement-handle, .oo-ui-draggableElement-handle.oo-ui-widget { cursor: move; @@ -32,8 +34,13 @@ .oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement { display: inline-block; } +.oo-ui-draggableElement-handle:focus { + border-radius: 2px; + box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #36c; + outline: 0; +} .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable { - overflow-y: hidden; + overflow: hidden; } .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout { width: 100%; @@ -41,19 +48,13 @@ -moz-box-sizing: border-box; box-sizing: border-box; } -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-scrollable { - overflow-y: auto; -} -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-padded { - padding: 2em; -} .oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget { position: absolute; top: 0; left: 0; right: 0; bottom: 3em; - overflow-y: auto; + overflow: auto; } .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget { position: absolute; @@ -419,6 +420,8 @@ .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator, .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { position: absolute; + top: 0; + height: 100%; } .oo-ui-widget-disabled .oo-ui-selectFileWidget-info { cursor: default; @@ -550,14 +553,10 @@ } .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { left: 0; - top: 0; - height: 2.3em; margin-left: 0.5em; } .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator { - top: 0; right: 0; - height: 2.3em; margin-right: 0.775em; } .oo-ui-selectFileWidget-label { @@ -603,15 +602,12 @@ .oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-label { right: 2em; } -.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget { - background-color: #eaf3ff; -} .oo-ui-selectFileWidget-dropTarget { background-color: #fff; border: 1px solid #a2a9b1; + border-radius: 2px; vertical-align: middle; overflow: hidden; - border-radius: 2px; } .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button { border-radius: 2px; @@ -622,8 +618,18 @@ white-space: normal; } .oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget { - background-color: #eee; + background-color: #fff; border-style: dashed; + -webkit-transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + -moz-transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1); +} +.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget:hover { + border-color: #72777d; +} +.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget { + background-color: #eaf3ff; + color: #36c; } .oo-ui-selectFileWidget.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget, .oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget, @@ -700,15 +706,6 @@ } .oo-ui-outlineOptionWidget-level-2 .oo-ui-iconElement-icon { left: 4em; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-important { - font-weight: bold; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon { - opacity: 0.5; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label { - color: #777; } .oo-ui-outlineControlsWidget { height: 3em; @@ -799,6 +796,12 @@ display: block; position: relative; } +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon, +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { + position: absolute; + top: 0; + height: 100%; +} .oo-ui-capsuleMultiselectWidget-content { position: relative; } @@ -829,27 +832,6 @@ .oo-ui-capsuleMultiselectWidget-handle:last-child { margin-right: 0; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator, -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon { - position: absolute; -} -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content :-moz-placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content ::-moz-placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content :-ms-input-placeholder { - color: #72777d; -} -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content ::-webkit-input-placeholder { - color: #72777d; -} -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content :placeholder-shown { - color: #72777d; -} .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input { border: 0; line-height: 1.675; @@ -860,25 +842,45 @@ background-color: transparent; color: #000; vertical-align: middle; + /* stylelint-disable indentation */ + /* stylelint-enable indentation */ +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-webkit-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-ms-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::placeholder { + color: #72777d; + opacity: 1; } .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:focus { outline: 0; -} -.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle { - padding-right: 2.4875em; -} -.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { - right: 0; - top: 0; - margin: 0.775em; } .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle { padding-left: 2.475em; } .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon { left: 0; - top: 0; - margin: 0.3em; + margin: 0 0.3em; +} +.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle { + padding-right: 2.4875em; +} +.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { + right: 0; + margin: 0 0.775em; } .oo-ui-capsuleMultiselectWidget-popup { margin-top: -1px; @@ -918,20 +920,18 @@ display: inline-block; cursor: default; white-space: nowrap; - width: auto; - max-width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; - vertical-align: middle; + width: auto; + max-width: 100%; height: 1.7em; - line-height: 1.7; - background-color: #eee; - color: #222; margin: 0.1em; border: 1px solid #a2a9b1; border-radius: 2px; padding: 0 0.4em; + line-height: 1.7; + vertical-align: middle; } .oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label { display: inline-block; @@ -939,22 +939,23 @@ overflow: hidden; cursor: text; } -.oo-ui-capsuleItemWidget:focus { - outline: 0; +.oo-ui-capsuleItemWidget.oo-ui-widget-enabled { + background-color: #f8f9fa; + color: #222; + padding-right: 1.5375em; + -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; + -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; + transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; +} +.oo-ui-capsuleItemWidget.oo-ui-widget-enabled:hover { + background-color: #fff; + color: #444; + border-color: #a2a9b1; +} +.oo-ui-capsuleItemWidget.oo-ui-widget-enabled:focus { border-color: #36c; box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-capsuleItemWidget.oo-ui-widget-disabled { - background-color: #eaecf0; - color: #72777d; - border-color: #c8ccd1; - text-shadow: 0 1px 1px #fff; -} -.oo-ui-capsuleItemWidget > .oo-ui-buttonElement { - display: none; -} -.oo-ui-capsuleItemWidget.oo-ui-widget-enabled { - padding-right: 1.5375em; + outline: 0; } .oo-ui-capsuleItemWidget.oo-ui-widget-enabled > .oo-ui-buttonElement { display: block; @@ -975,6 +976,15 @@ bottom: 0; height: auto; } +.oo-ui-capsuleItemWidget.oo-ui-widget-disabled { + background-color: #eaecf0; + color: #72777d; + border-color: #c8ccd1; + text-shadow: 0 1px 1px #fff; +} +.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-buttonElement { + display: none; +} .oo-ui-searchWidget-query { position: absolute; top: 0; diff --git a/resources/lib/oojs-ui/oojs-ui-widgets.js b/resources/lib/oojs-ui/oojs-ui-widgets.js index d5a796b..b89262d 100644 --- a/resources/lib/oojs-ui/oojs-ui-widgets.js +++ b/resources/lib/oojs-ui/oojs-ui-widgets.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:20Z + * Date: 2017-02-28T23:19:40Z */ ( function ( OO ) { diff --git a/resources/lib/oojs-ui/oojs-ui-windows-apex.css b/resources/lib/oojs-ui/oojs-ui-windows-apex.css index 310d616..b546dd1 100644 --- a/resources/lib/oojs-ui/oojs-ui-windows-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-windows-apex.css @@ -1,13 +1,15 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:25Z + * Date: 2017-02-28T23:19:44Z */ +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ .oo-ui-actionWidget.oo-ui-pendingElement-pending { background-image: /* @embed */ url(themes/apex/images/textures/pending.gif); } diff --git a/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css index 4b99fa6..701c058 100644 --- a/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css +++ b/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css @@ -1,13 +1,15 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:25Z + * Date: 2017-02-28T23:19:44Z */ +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ .oo-ui-window { background: transparent; } @@ -265,22 +267,22 @@ .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless:active { background-color: rgba(0, 0, 0, 0.1); } -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover, -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover { +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:hover, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:hover, +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover { background-color: rgba(8, 126, 204, 0.05); } -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active, -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active { +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:active, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:active, +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active { background-color: rgba(8, 126, 204, 0.1); } -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label { +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label, +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label { font-weight: bold; } .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:hover, diff --git a/resources/lib/oojs-ui/oojs-ui-windows.js b/resources/lib/oojs-ui/oojs-ui-windows.js index c842c62..ad3c226 100644 --- a/resources/lib/oojs-ui/oojs-ui-windows.js +++ b/resources/lib/oojs-ui/oojs-ui-windows.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.19.2 + * OOjs UI v0.19.4 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-02-14T22:47:20Z + * Date: 2017-02-28T23:19:40Z */ ( function ( OO ) { diff --git a/resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json b/resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json index ec755a1..ea2e2ec 100644 --- a/resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json +++ b/resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json @@ -56,6 +56,7 @@ "rtl": "images/icons/articleRedirect-rtl.svg" } }, "searchCaseSensitive": { "file": "images/icons/case-sensitive.svg" }, + "searchDiacritics": { "file": "images/icons/diacritic.svg" }, "searchRegularExpression": { "file": "images/icons/regular-expression.svg" }, "specialCharacter": { "file": "images/icons/specialCharacter.svg" }, "table": { "file": "images/icons/table.svg" }, diff --git a/resources/lib/oojs-ui/themes/apex/icons-interactions.json b/resources/lib/oojs-ui/themes/apex/icons-interactions.json index 449cb77..d68e70c 100644 --- a/resources/lib/oojs-ui/themes/apex/icons-interactions.json +++ b/resources/lib/oojs-ui/themes/apex/icons-interactions.json @@ -20,6 +20,10 @@ } }, "clear": { "file": "images/icons/clear.svg" }, "clock": { "file": "images/icons/clock.svg" }, + "feedback": { "file": { + "ltr": "images/icons/feedback-ltr.svg", + "rtl": "images/icons/feedback-rtl.svg" + } }, "funnel": { "file": { "ltr": "images/icons/funnel-ltr.svg", "rtl": "images/icons/funnel-rtl.svg" diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg b/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg index 46cd9b0..749e38f 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <g id="regular-expression"> + <g id="case-sensitive"> <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/> <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/> </g> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png new file mode 100644 index 0000000..2359b19 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.svg b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.svg new file mode 100644 index 0000000..4565101 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <g id="diacritic"> + <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/> + <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/> + </g> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png new file mode 100644 index 0000000..f49ebeb --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg new file mode 100644 index 0000000..d32e478 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png new file mode 100644 index 0000000..ac5787b --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.svg new file mode 100644 index 0000000..0fdeed9 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png new file mode 100644 index 0000000..efba220 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg new file mode 100644 index 0000000..14be7ff --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png new file mode 100644 index 0000000..fdbe5e1 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.svg new file mode 100644 index 0000000..022d86d --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json index 21efb82..7cbbced 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json +++ b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json @@ -76,6 +76,7 @@ "rtl": "images/icons/articleRedirect-rtl.svg" } }, "searchCaseSensitive": { "file": "images/icons/case-sensitive.svg" }, + "searchDiacritics": { "file": "images/icons/diacritic.svg" }, "searchRegularExpression": { "file": "images/icons/regular-expression.svg" }, "specialCharacter": { "file": "images/icons/specialCharacter.svg" }, "table": { "file": "images/icons/table.svg" }, diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json b/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json index e040ffb..3436446 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json +++ b/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json @@ -34,6 +34,13 @@ } }, "clear": { "file": "images/icons/clear.svg" }, "clock": { "file": "images/icons/clock.svg" }, + "feedback": { + "file": { + "ltr": "images/icons/feedback-ltr.svg", + "rtl": "images/icons/feedback-rtl.svg" + }, + "variants": [ "progressive" ] + }, "funnel": { "file": { "ltr": "images/icons/funnel-ltr.svg", "rtl": "images/icons/funnel-rtl.svg" diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg index dbd98d2..e5590a3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> - <g id="regular-expression"> + <g id="case-sensitive"> <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/> <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/> </g> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg index c5f35b0..ff6e102 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> - <g id="regular-expression"> + <g id="case-sensitive"> <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/> <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/> </g> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg index 46cd9b0..749e38f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <g id="regular-expression"> + <g id="case-sensitive"> <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/> <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/> </g> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png new file mode 100644 index 0000000..7bb19e3 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg new file mode 100644 index 0000000..b19dd0d --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <g id="diacritic"> + <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/> + <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/> + </g> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png new file mode 100644 index 0000000..eb76fd0 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg new file mode 100644 index 0000000..fed1164 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <g id="diacritic"> + <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/> + <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/> + </g> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png new file mode 100644 index 0000000..2359b19 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg new file mode 100644 index 0000000..4565101 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <g id="diacritic"> + <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/> + <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/> + </g> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png new file mode 100644 index 0000000..f49ebeb --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg new file mode 100644 index 0000000..8ed4be9 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png new file mode 100644 index 0000000..28405a8 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg new file mode 100644 index 0000000..49425d0 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png new file mode 100644 index 0000000..ac5787b --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg new file mode 100644 index 0000000..0fdeed9 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png new file mode 100644 index 0000000..efba220 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg new file mode 100644 index 0000000..f4e7932 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png new file mode 100644 index 0000000..27bcc2d --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg new file mode 100644 index 0000000..413ea34 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png new file mode 100644 index 0000000..fdbe5e1 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png Binary files differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg new file mode 100644 index 0000000..022d86d --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</svg> -- To view, visit https://gerrit.wikimedia.org/r/340443 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifa1c6cb355a0c4f5073c93e37939cfc2f6653c81 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: VolkerE <volke...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits