aboutsummaryrefslogtreecommitdiffstats
path: root/resources/lib/oojs-ui
diff options
context:
space:
mode:
authorVolker E <volker.e@wikimedia.org>2017-03-28 16:25:58 -0700
committerCatrope <roan@wikimedia.org>2017-03-29 19:44:37 +0000
commit5df9a27b27c67e196f5eff48d86615735ec9378c (patch)
tree2e5145c4c05f85624716de858bd7ef81d394d9bd /resources/lib/oojs-ui
parentc03f57bc119d404469dfd8046acad7626464d813 (diff)
downloadmediawikicore-5df9a27b27c67e196f5eff48d86615735ec9378c.tar.gz
mediawikicore-5df9a27b27c67e196f5eff48d86615735ec9378c.zip
Update OOjs UI to v0.20.1
Release notes: https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md;v0.20.1 Depends-On: I9b50eee459085eaa00819cbabe340ac442a332bd Change-Id: I9b50eee459085eaa00819cbabe340ac442a332db
Diffstat (limited to 'resources/lib/oojs-ui')
-rw-r--r--resources/lib/oojs-ui/i18n/bqi.json5
-rw-r--r--resources/lib/oojs-ui/oojs-ui-apex.js4
-rw-r--r--resources/lib/oojs-ui/oojs-ui-core-apex.css11
-rw-r--r--resources/lib/oojs-ui/oojs-ui-core-mediawiki.css13
-rw-r--r--resources/lib/oojs-ui/oojs-ui-core.js268
-rw-r--r--resources/lib/oojs-ui/oojs-ui-mediawiki.js4
-rw-r--r--resources/lib/oojs-ui/oojs-ui-toolbars-apex.css4
-rw-r--r--resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css10
-rw-r--r--resources/lib/oojs-ui/oojs-ui-toolbars.js4
-rw-r--r--resources/lib/oojs-ui/oojs-ui-widgets-apex.css18
-rw-r--r--resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css26
-rw-r--r--resources/lib/oojs-ui/oojs-ui-widgets.js86
-rw-r--r--resources/lib/oojs-ui/oojs-ui-windows-apex.css4
-rw-r--r--resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css4
-rw-r--r--resources/lib/oojs-ui/oojs-ui-windows.js6
-rw-r--r--resources/lib/oojs-ui/themes/apex/icons-alerts.json3
-rw-r--r--resources/lib/oojs-ui/themes/apex/icons-content.json6
-rw-r--r--resources/lib/oojs-ui/themes/apex/icons-interactions.json18
-rw-r--r--resources/lib/oojs-ui/themes/apex/icons-layout.json25
-rw-r--r--resources/lib/oojs-ui/themes/apex/icons-movement.json12
-rw-r--r--resources/lib/oojs-ui/themes/apex/icons.json66
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.pngbin0 -> 421 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.svg6
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.pngbin0 -> 329 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.svg6
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/check-invert.pngbin0 -> 217 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/check-invert.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/close-invert.pngbin0 -> 209 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/close-invert.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.pngbin0 -> 146 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.pngbin0 -> 503 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.svg10
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.pngbin0 -> 515 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.svg10
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.pngbin0 -> 334 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.svg6
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.pngbin0 -> 358 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.svg6
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.pngbin0 -> 332 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.svg6
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.pngbin0 -> 331 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.svg6
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search.pngbin350 -> 0 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/search.svg6
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.pngbin0 -> 175 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.svg6
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.pngbin0 -> 136 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.pngbin0 -> 140 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeSideMenu.pngbin0 -> 115 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeSideMenu.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.pngbin0 -> 123 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.pngbin0 -> 124 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.pngbin0 -> 137 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.pngbin0 -> 135 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.svg4
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.pngbin0 -> 146 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.svg14
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.pngbin0 -> 165 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.svg9
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.pngbin0 -> 165 bytes
-rw-r--r--resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.svg9
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json3
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/icons-content.json6
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json18
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/icons-layout.json1
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/icons-location.json11
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/icons-movement.json12
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/icons.json63
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.png (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.png)bin384 -> 384 bytes
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.svg (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.svg)0
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.png (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.png)bin481 -> 481 bytes
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.svg (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.svg)0
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.png (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr.png)bin370 -> 370 bytes
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.svg (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr.svg)0
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.png (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.png)bin395 -> 395 bytes
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.svg (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.svg)0
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.png (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.png)bin582 -> 582 bytes
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.svg (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.svg)0
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.png (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.png)bin380 -> 380 bytes
-rw-r--r--resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.svg (renamed from resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.svg)0
86 files changed, 580 insertions, 271 deletions
diff --git a/resources/lib/oojs-ui/i18n/bqi.json b/resources/lib/oojs-ui/i18n/bqi.json
index a84374a29a37..a0e53b36849b 100644
--- a/resources/lib/oojs-ui/i18n/bqi.json
+++ b/resources/lib/oojs-ui/i18n/bqi.json
@@ -4,14 +4,19 @@
"Mogoeilor"
]
},
+ "ooui-outline-control-move-down": "ڤا دڤۈن بوردن آیتم",
+ "ooui-outline-control-move-up": "ڤارو بردن آیتم",
+ "ooui-outline-control-remove": "ڤورداشتن آیتم",
"ooui-toolbar-more": "بیشتر",
"ooui-toolgroup-expand": "بیشتر",
"ooui-toolgroup-collapse": "کمتر",
"ooui-dialog-message-accept": "خۈڤإ",
"ooui-dialog-message-reject": "أنجومشيڤ کردن",
+ "ooui-dialog-process-error": "یأ چي ايچو إشتوا إ",
"ooui-dialog-process-retry": "ز نۉ تلاش کونين",
"ooui-dialog-process-continue": "ديندا گرهڌن",
"ooui-selectfile-button-select": "گولإڤورچين کردن جانیا",
+ "ooui-selectfile-not-supported": "گول ڤورچی کردن جانیا کونشتکاری نڤابیڌ",
"ooui-selectfile-placeholder": "هيژ جانيایي گولإ ڤورچين نڤابيڌإ",
"ooui-selectfile-dragdrop-placeholder": "جانيانأ ڤأنين ايچو"
}
diff --git a/resources/lib/oojs-ui/oojs-ui-apex.js b/resources/lib/oojs-ui/oojs-ui-apex.js
index a13441be25f4..f5f2a041cc2b 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.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:24Z
+ * Date: 2017-03-28T22:19:29Z
*/
( 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 382c13b48675..d6b5dcb8ff16 100644
--- a/resources/lib/oojs-ui/oojs-ui-core-apex.css
+++ b/resources/lib/oojs-ui/oojs-ui-core-apex.css
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:28Z
+ * Date: 2017-03-28T22:19:34Z
*/
.oo-ui-element-hidden {
display: none !important;
@@ -32,6 +32,10 @@
-ms-user-select: none;
user-select: none;
}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button::-moz-focus-inner {
+ border-color: transparent;
+ padding: 0;
+}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
display: none;
@@ -1130,9 +1134,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
.oo-ui-menuSelectWidget-invisible {
display: none;
}
-.oo-ui-menuOptionWidget {
- position: relative;
-}
.oo-ui-menuOptionWidget .oo-ui-iconElement-icon {
display: none;
}
diff --git a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
index c4fdf20e8b1e..392984216122 100644
--- a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
+++ b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:28Z
+ * Date: 2017-03-28T22:19:34Z
*/
.oo-ui-element-hidden {
display: none !important;
@@ -32,6 +32,10 @@
-ms-user-select: none;
user-select: none;
}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button::-moz-focus-inner {
+ border-color: transparent;
+ padding: 0;
+}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
display: none;
@@ -60,9 +64,6 @@
border-radius: 2px;
outline: 0;
}
-.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-indicatorElement-indicator {
margin-right: 0.25em;
margin-left: 0.46875em;
@@ -670,7 +671,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
.oo-ui-optionWidget {
position: relative;
display: block;
- border: 0;
}
.oo-ui-optionWidget.oo-ui-widget-enabled {
cursor: pointer;
@@ -1566,7 +1566,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
display: none;
}
.oo-ui-menuOptionWidget {
- position: relative;
padding: 0.5em 1em;
-webkit-transition: background-color 100ms, color 100ms;
-moz-transition: background-color 100ms, color 100ms;
diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js
index fe11d68f8d62..e6029ddd0894 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.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:24Z
+ * Date: 2017-03-28T22:19:29Z
*/
( function ( OO ) {
@@ -90,7 +90,7 @@ OO.ui.isFocusableElement = function ( $element ) {
// Check if the element is visible
if ( !(
// This is quicker than calling $element.is( ':visible' )
- $.expr.filters.visible( element ) &&
+ $.expr.pseudos.visible( element ) &&
// Check that all parents are visible
!$element.parents().addBack().filter( function () {
return $.css( this, 'visibility' ) === 'hidden';
@@ -883,7 +883,7 @@ OO.ui.Element.static.getDocument = function ( obj ) {
// Window
obj.document ||
// HTMLDocument
- ( obj.nodeType === 9 && obj ) ||
+ ( obj.nodeType === Node.DOCUMENT_NODE && obj ) ||
null;
};
@@ -912,7 +912,7 @@ OO.ui.Element.static.getDir = function ( obj ) {
if ( obj instanceof jQuery ) {
obj = obj[ 0 ];
}
- isDoc = obj.nodeType === 9;
+ isDoc = obj.nodeType === Node.DOCUMENT_NODE;
isWin = obj.document !== undefined;
if ( isDoc || isWin ) {
if ( isWin ) {
@@ -1140,17 +1140,18 @@ OO.ui.Element.static.getScrollLeft = ( function () {
}() );
/**
- * Get scrollable object parent
+ * Get the root scrollable element of given element's document.
*
- * documentElement can't be used to get or set the scrollTop
- * property on Blink. Changing and testing its value lets us
- * use 'body' or 'documentElement' based on what is working.
+ * On Blink-based browsers (Chrome etc.), `document.documentElement` can't be used to get or set
+ * the scrollTop property; instead we have to use `document.body`. Changing and testing the value
+ * lets us use 'body' or 'documentElement' based on what is working.
*
* https://code.google.com/p/chromium/issues/detail?id=303131
*
* @static
- * @param {HTMLElement} el Element to find scrollable parent for
- * @return {HTMLElement} Scrollable parent
+ * @param {HTMLElement} el Element to find root scrollable parent for
+ * @return {HTMLElement} Scrollable parent, `document.body` or `document.documentElement`
+ * depending on browser
*/
OO.ui.Element.static.getRootScrollableElement = function ( el ) {
var scrollTop, body;
@@ -1174,8 +1175,8 @@ OO.ui.Element.static.getRootScrollableElement = function ( el ) {
/**
* Get closest scrollable container.
*
- * Traverses up until either a scrollable element or the root is reached, in which case the window
- * will be returned.
+ * Traverses up until either a scrollable element or the root is reached, in which case the root
+ * scrollable element will be returned (see #getRootScrollableElement).
*
* @static
* @param {HTMLElement} el Element to find scrollable container for
@@ -1193,6 +1194,12 @@ OO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension )
props = [ 'overflow-' + dimension ];
}
+ // Special case for the document root (which doesn't really have any scrollable container, since
+ // it is the ultimate scrollable container, but this is probably saner than null or exception)
+ if ( $( el ).is( 'html, body' ) ) {
+ return this.getRootScrollableElement( el );
+ }
+
while ( $parent.length ) {
if ( $parent[ 0 ] === this.getRootScrollableElement( el ) ) {
return $parent[ 0 ];
@@ -1211,7 +1218,8 @@ OO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension )
}
$parent = $parent.parent();
}
- return this.getDocument( el ).body;
+ // The element is unattached... return something mostly sane
+ return this.getRootScrollableElement( el );
};
/**
@@ -2181,6 +2189,7 @@ OO.ui.mixin.ButtonElement.prototype.isActive = function () {
* [1]: https://www.mediawiki.org/wiki/OOjs_UI/Elements/Groups
*
* @abstract
+ * @mixins OO.EmitterList
* @class
*
* @constructor
@@ -2192,15 +2201,20 @@ OO.ui.mixin.GroupElement = function OoUiMixinGroupElement( config ) {
// Configuration initialization
config = config || {};
+ // Mixin constructors
+ OO.EmitterList.call( this, config );
+
// Properties
this.$group = null;
- this.items = [];
- this.aggregateItemEvents = {};
// Initialization
this.setGroupElement( config.$group || $( '<div>' ) );
};
+/* Setup */
+
+OO.mixinClass( OO.ui.mixin.GroupElement, OO.EmitterList );
+
/* Events */
/**
@@ -2230,28 +2244,6 @@ OO.ui.mixin.GroupElement.prototype.setGroupElement = function ( $group ) {
};
/**
- * Check if a group contains no items.
- *
- * @return {boolean} Group is empty
- */
-OO.ui.mixin.GroupElement.prototype.isEmpty = function () {
- return !this.items.length;
-};
-
-/**
- * Get all items in the group.
- *
- * The method returns an array of item references (e.g., [button1, button2, button3]) and is useful
- * when synchronizing groups of items, or whenever the references are required (e.g., when removing items
- * from a group).
- *
- * @return {OO.ui.Element[]} An array of items.
- */
-OO.ui.mixin.GroupElement.prototype.getItems = function () {
- return this.items.slice( 0 );
-};
-
-/**
* Get an item by its data.
*
* Only the first item with matching data will be returned. To return all matching items,
@@ -2298,62 +2290,6 @@ OO.ui.mixin.GroupElement.prototype.getItemsFromData = function ( data ) {
};
/**
- * Aggregate the events emitted by the group.
- *
- * When events are aggregated, the group will listen to all contained items for the event,
- * and then emit the event under a new name. The new event will contain an additional leading
- * parameter containing the item that emitted the original event. Other arguments emitted from
- * the original event are passed through.
- *
- * @param {Object.<string,string|null>} events An object keyed by the name of the event that should be
- * aggregated (e.g., ‘click’) and the value of the new name to use (e.g., ‘groupClick’).
- * A `null` value will remove aggregated events.
-
- * @throws {Error} An error is thrown if aggregation already exists.
- */
-OO.ui.mixin.GroupElement.prototype.aggregate = function ( events ) {
- var i, len, item, add, remove, itemEvent, groupEvent;
-
- for ( itemEvent in events ) {
- groupEvent = events[ itemEvent ];
-
- // Remove existing aggregated event
- if ( Object.prototype.hasOwnProperty.call( this.aggregateItemEvents, itemEvent ) ) {
- // Don't allow duplicate aggregations
- if ( groupEvent ) {
- throw new Error( 'Duplicate item event aggregation for ' + itemEvent );
- }
- // Remove event aggregation from existing items
- for ( i = 0, len = this.items.length; i < len; i++ ) {
- item = this.items[ i ];
- if ( item.connect && item.disconnect ) {
- remove = {};
- remove[ itemEvent ] = [ 'emit', this.aggregateItemEvents[ itemEvent ], item ];
- item.disconnect( this, remove );
- }
- }
- // Prevent future items from aggregating event
- delete this.aggregateItemEvents[ itemEvent ];
- }
-
- // Add new aggregate event
- if ( groupEvent ) {
- // Make future items aggregate event
- this.aggregateItemEvents[ itemEvent ] = groupEvent;
- // Add event aggregation to existing items
- for ( i = 0, len = this.items.length; i < len; i++ ) {
- item = this.items[ i ];
- if ( item.connect && item.disconnect ) {
- add = {};
- add[ itemEvent ] = [ 'emit', groupEvent, item ];
- item.connect( this, add );
- }
- }
- }
- }
-};
-
-/**
* Add items to the group.
*
* Items will be added to the end of the group array unless the optional `index` parameter specifies
@@ -2364,49 +2300,77 @@ OO.ui.mixin.GroupElement.prototype.aggregate = function ( events ) {
* @chainable
*/
OO.ui.mixin.GroupElement.prototype.addItems = function ( items, index ) {
- var i, len, item, itemEvent, events, currentIndex,
+ var i, len, item,
itemElements = [];
+ // Mixin method
+ OO.EmitterList.prototype.addItems.call( this, items, index );
+
for ( i = 0, len = items.length; i < len; i++ ) {
item = items[ i ];
- // Check if item exists then remove it first, effectively "moving" it
- currentIndex = this.items.indexOf( item );
- if ( currentIndex >= 0 ) {
- this.removeItems( [ item ] );
- // Adjust index to compensate for removal
- if ( currentIndex < index ) {
- index--;
- }
- }
// Add the item
- if ( item.connect && item.disconnect && !$.isEmptyObject( this.aggregateItemEvents ) ) {
- events = {};
- for ( itemEvent in this.aggregateItemEvents ) {
- events[ itemEvent ] = [ 'emit', this.aggregateItemEvents[ itemEvent ], item ];
- }
- item.connect( this, events );
- }
item.setElementGroup( this );
itemElements.push( item.$element.get( 0 ) );
}
- if ( index === undefined || index < 0 || index >= this.items.length ) {
- this.$group.append( itemElements );
- this.items.push.apply( this.items, items );
- } else if ( index === 0 ) {
- this.$group.prepend( itemElements );
- this.items.unshift.apply( this.items, items );
- } else {
- this.items[ index ].$element.before( itemElements );
- this.items.splice.apply( this.items, [ index, 0 ].concat( items ) );
- }
+ this.insertItemElements( items, index );
this.emit( 'change', this.getItems() );
return this;
};
/**
+ * @inheritdoc
+ */
+OO.ui.mixin.GroupElement.prototype.moveItem = function ( items, newIndex ) {
+ // Mixin method
+ newIndex = OO.EmitterList.prototype.moveItem.call( this, items, newIndex );
+
+ this.insertItemElements( items, newIndex );
+
+ return newIndex;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.mixin.GroupElement.prototype.insertItem = function ( item, index ) {
+ // Mixin method
+ index = OO.EmitterList.prototype.insertItem.call( this, item, index );
+
+ this.insertItemElements( item, index );
+
+ return index;
+};
+
+/**
+ * Insert element into the group
+ *
+ * @param {OO.ui.Element|OO.ui.Element[]} itemWidgets Items to insert
+ * @param {number} index Insertion index
+ */
+OO.ui.mixin.GroupElement.prototype.insertItemElements = function ( itemWidgets, index ) {
+ var i, len, item;
+
+ if ( !Array.isArray( itemWidgets ) ) {
+ itemWidgets = [ itemWidgets ];
+ }
+
+ for ( i = 0, len = itemWidgets.length; i < len; i++ ) {
+ item = itemWidgets[ i ];
+
+ if ( index === undefined || index < 0 || index >= this.items.length ) {
+ this.$group.append( item.$element.get( 0 ) );
+ } else if ( index === 0 ) {
+ this.$group.prepend( item.$element.get( 0 ) );
+ } else {
+ this.items[ index ].$element.before( item.$element.get( 0 ) );
+ }
+ }
+};
+
+/**
* Remove the specified items from a group.
*
* Removed items are detached (not removed) from the DOM so that they may be reused.
@@ -2416,26 +2380,21 @@ OO.ui.mixin.GroupElement.prototype.addItems = function ( items, index ) {
* @chainable
*/
OO.ui.mixin.GroupElement.prototype.removeItems = function ( items ) {
- var i, len, item, index, events, itemEvent;
+ var i, len, item, index;
- // Remove specific items
+ // Remove specific items elements
for ( i = 0, len = items.length; i < len; i++ ) {
item = items[ i ];
index = this.items.indexOf( item );
if ( index !== -1 ) {
- if ( item.connect && item.disconnect && !$.isEmptyObject( this.aggregateItemEvents ) ) {
- events = {};
- for ( itemEvent in this.aggregateItemEvents ) {
- events[ itemEvent ] = [ 'emit', this.aggregateItemEvents[ itemEvent ], item ];
- }
- item.disconnect( this, events );
- }
item.setElementGroup( null );
- this.items.splice( index, 1 );
item.$element.detach();
}
}
+ // Mixin method
+ OO.EmitterList.prototype.removeItems.call( this, items );
+
this.emit( 'change', this.getItems() );
return this;
};
@@ -2449,27 +2408,18 @@ OO.ui.mixin.GroupElement.prototype.removeItems = function ( items ) {
* @chainable
*/
OO.ui.mixin.GroupElement.prototype.clearItems = function () {
- var i, len, item, remove, itemEvent;
+ var i, len;
- // Remove all items
+ // Remove all item elements
for ( i = 0, len = this.items.length; i < len; i++ ) {
- item = this.items[ i ];
- if (
- item.connect && item.disconnect &&
- !$.isEmptyObject( this.aggregateItemEvents )
- ) {
- remove = {};
- if ( Object.prototype.hasOwnProperty.call( this.aggregateItemEvents, itemEvent ) ) {
- remove[ itemEvent ] = [ 'emit', this.aggregateItemEvents[ itemEvent ], item ];
- }
- item.disconnect( this, remove );
- }
- item.setElementGroup( null );
- item.$element.detach();
+ this.items[ i ].setElementGroup( null );
+ this.items[ i ].$element.detach();
}
+ // Mixin method
+ OO.EmitterList.prototype.clearItems.call( this );
+
this.emit( 'change', this.getItems() );
- this.items = [];
return this;
};
@@ -4303,6 +4253,20 @@ OO.ui.mixin.FloatableElement.prototype.position = function () {
return this;
}
+ if ( !(
+ // To continue, some things need to be true:
+ // The element must actually be in the DOM
+ this.isElementAttached() && (
+ // The closest scrollable is the current window
+ this.$floatableClosestScrollable[ 0 ] === this.getElementWindow() ||
+ // OR is an element in the element's DOM
+ $.contains( this.getElementDocument(), this.$floatableClosestScrollable[ 0 ] )
+ )
+ ) ) {
+ // Abort early if important parts of the widget are no longer attached to the DOM
+ return this;
+ }
+
if ( this.hideWhenOutOfView && !this.isElementInViewport( this.$floatableContainer, this.$floatableClosestScrollable ) ) {
this.$floatable.addClass( 'oo-ui-element-hidden' );
return this;
@@ -4883,6 +4847,14 @@ OO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.LabelElement );
OO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.ClippableElement );
OO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.FloatableElement );
+/* Events */
+
+/**
+ * @event ready
+ *
+ * The popup is ready: it is visible and has been positioned and clipped.
+ */
+
/* Methods */
/**
@@ -5016,6 +4988,7 @@ OO.ui.PopupWidget.prototype.hasAnchor = function () {
* 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.
*
+ * @fires ready
* @inheritdoc
*/
OO.ui.PopupWidget.prototype.toggle = function ( show ) {
@@ -5046,6 +5019,7 @@ OO.ui.PopupWidget.prototype.toggle = function ( show ) {
}
this.updateDimensions();
this.toggleClipping( true );
+ this.emit( 'ready' );
} else {
this.toggleClipping( false );
if ( this.autoClose ) {
diff --git a/resources/lib/oojs-ui/oojs-ui-mediawiki.js b/resources/lib/oojs-ui/oojs-ui-mediawiki.js
index b4a63926cf7d..4d8061f12fb5 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.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:24Z
+ * Date: 2017-03-28T22:19:29Z
*/
( 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 479e2a5ab797..ddd17f5fd1c9 100644
--- a/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
+++ b/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:28Z
+ * Date: 2017-03-28T22:19:34Z
*/
.oo-ui-popupTool .oo-ui-popupWidget-popup,
.oo-ui-popupTool .oo-ui-popupWidget-anchor {
diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
index df77684c3a3f..9248f7d81aa7 100644
--- a/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
+++ b/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:28Z
+ * Date: 2017-03-28T22:19:34Z
*/
.oo-ui-tool.oo-ui-widget-enabled {
-webkit-transition: background-color 100ms;
@@ -214,11 +214,11 @@
height: 2.5em;
}
.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
- width: 0.9375em;
- height: 1.625em;
- margin: 0.78125em 0.5em;
top: 0;
right: 0;
+ width: 0.9375em;
+ height: 100%;
+ margin: 0 0.5em;
opacity: 0.3;
}
.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars.js b/resources/lib/oojs-ui/oojs-ui-toolbars.js
index 7d0985453323..353a5b598cd2 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.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:24Z
+ * Date: 2017-03-28T22:19:29Z
*/
( 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 7f8389e1369d..75e2180442ac 100644
--- a/resources/lib/oojs-ui/oojs-ui-widgets-apex.css
+++ b/resources/lib/oojs-ui/oojs-ui-widgets-apex.css
@@ -1,35 +1,35 @@
/*!
- * OOjs UI v0.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:28Z
+ * Date: 2017-03-28T22:19:34Z
*/
-.oo-ui-draggableElement-handle,
-.oo-ui-draggableElement-handle.oo-ui-widget {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle,
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle.oo-ui-widget {
cursor: move;
cursor: url(images/grab.cur );
cursor: -webkit-grab;
cursor: -moz-grab;
cursor: grab;
}
-.oo-ui-draggableElement-handle:active {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle:active {
cursor: url(images/grabbing.cur );
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
cursor: grabbing;
}
-.oo-ui-draggableElement-handle.oo-ui-widget-disabled,
-.oo-ui-widget-disabled .oo-ui-draggableElement-handle {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle.oo-ui-widget-disabled,
+.oo-ui-widget-disabled .oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle {
cursor: default;
}
-.oo-ui-draggableElement-placeholder {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-placeholder {
opacity: 0.2;
}
-.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement {
+.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable ) {
display: inline-block;
}
.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable {
diff --git a/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
index c79dc853f00a..656a9bef4be3 100644
--- a/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
+++ b/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
@@ -1,38 +1,38 @@
/*!
- * OOjs UI v0.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:28Z
+ * Date: 2017-03-28T22:19:34Z
*/
-.oo-ui-draggableElement-handle,
-.oo-ui-draggableElement-handle.oo-ui-widget {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle,
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle.oo-ui-widget {
cursor: move;
cursor: url(images/grab.cur );
cursor: -webkit-grab;
cursor: -moz-grab;
cursor: grab;
}
-.oo-ui-draggableElement-handle:active {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle:active {
cursor: url(images/grabbing.cur );
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
cursor: grabbing;
}
-.oo-ui-draggableElement-handle.oo-ui-widget-disabled,
-.oo-ui-widget-disabled .oo-ui-draggableElement-handle {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle.oo-ui-widget-disabled,
+.oo-ui-widget-disabled .oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle {
cursor: default;
}
-.oo-ui-draggableElement-placeholder {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-placeholder {
opacity: 0.2;
}
-.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement {
+.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable ) {
display: inline-block;
}
-.oo-ui-draggableElement-handle:focus {
+.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle:focus {
border-radius: 2px;
box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #36c;
outline: 0;
@@ -210,7 +210,6 @@
}
.oo-ui-buttonOptionWidget {
display: inline-block;
- padding: 0;
}
.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button {
cursor: default;
@@ -221,11 +220,6 @@
display: inline-block;
vertical-align: middle;
}
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
- background-color: transparent;
-}
.oo-ui-toggleButtonWidget {
margin-right: 0.5em;
}
diff --git a/resources/lib/oojs-ui/oojs-ui-widgets.js b/resources/lib/oojs-ui/oojs-ui-widgets.js
index c2e62fd95010..6b5d3bdbdb0b 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.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:24Z
+ * Date: 2017-03-28T22:19:29Z
*/
( function ( OO ) {
@@ -24,6 +24,9 @@
* @constructor
* @param {Object} [config] Configuration options
* @cfg {jQuery} [$handle] The part of the element which can be used for dragging, defaults to the whole element
+ * @cfg {boolean} [draggable] The items are draggable. This can change with #toggleDraggable
+ * but the draggable state should be called from the DraggableGroupElement, which updates
+ * the whole group
*/
OO.ui.mixin.DraggableElement = function OoUiMixinDraggableElement( config ) {
config = config || {};
@@ -32,6 +35,7 @@ OO.ui.mixin.DraggableElement = function OoUiMixinDraggableElement( config ) {
this.index = null;
this.$handle = config.$handle || this.$element;
this.wasHandleUsed = null;
+ this.draggable = config.draggable === undefined ? true : !!config.draggable;
// Initialize and events
this.$element.addClass( 'oo-ui-draggableElement' )
@@ -82,12 +86,42 @@ OO.ui.mixin.DraggableElement.static.cancelButtonMouseDownEvents = false;
/* Methods */
/**
+ * Change the draggable state of this widget.
+ * This allows users to temporarily halt the dragging operations.
+ *
+ * @param {boolean} isDraggable Widget supports draggable operations
+ * @fires draggable
+ */
+OO.ui.mixin.DraggableElement.prototype.toggleDraggable = function ( isDraggable ) {
+ isDraggable = isDraggable !== undefined ? !!isDraggable : !this.draggable;
+
+ if ( this.draggable !== isDraggable ) {
+ this.draggable = isDraggable;
+
+ this.$element.toggleClass( 'oo-ui-draggableElement-undraggable', !this.draggable );
+ }
+};
+
+/**
+ * Check the draggable state of this widget
+ *
+ * @return {boolean} Widget supports draggable operations
+ */
+OO.ui.mixin.DraggableElement.prototype.isDraggable = function () {
+ return this.draggable;
+};
+
+/**
* Respond to mousedown event.
*
* @private
* @param {jQuery.Event} e Drag event
*/
OO.ui.mixin.DraggableElement.prototype.onDragMouseDown = function ( e ) {
+ if ( !this.isDraggable() ) {
+ return;
+ }
+
this.wasHandleUsed =
// Optimization: if the handle is the whole element this is always true
this.$handle[ 0 ] === this.$element[ 0 ] ||
@@ -107,7 +141,7 @@ OO.ui.mixin.DraggableElement.prototype.onDragStart = function ( e ) {
var element = this,
dataTransfer = e.originalEvent.dataTransfer;
- if ( !this.wasHandleUsed ) {
+ if ( !this.wasHandleUsed || !this.isDraggable() ) {
return false;
}
@@ -208,6 +242,7 @@ OO.ui.mixin.DraggableElement.prototype.getIndex = function () {
* should match the layout of the items. Items displayed in a single row
* or in several rows should use horizontal orientation. The vertical orientation should only be
* used when the items are displayed in a single column. Defaults to 'vertical'
+ * @cfg {boolean} [draggable] The items are draggable. This can change with #toggleDraggable
*/
OO.ui.mixin.DraggableGroupElement = function OoUiMixinDraggableGroupElement( config ) {
// Configuration initialization
@@ -222,6 +257,7 @@ OO.ui.mixin.DraggableGroupElement = function OoUiMixinDraggableGroupElement( con
this.itemKeys = {};
this.dir = null;
this.itemsOrder = null;
+ this.draggable = config.draggable === undefined ? true : !!config.draggable;
// Events
this.aggregate( {
@@ -260,22 +296,64 @@ OO.mixinClass( OO.ui.mixin.DraggableGroupElement, OO.ui.mixin.GroupElement );
*/
/**
- * And item has been dropped at a new position.
+ * An item has been dropped at a new position.
*
* @event reorder
* @param {OO.ui.mixin.DraggableElement} item Reordered item
* @param {number} [newIndex] New index for the item
*/
+/**
+ * Draggable state of this widget has changed.
+ *
+ * @event draggable
+ * @param {boolean} [draggable] Widget is draggable
+ */
+
/* Methods */
/**
+ * Change the draggable state of this widget.
+ * This allows users to temporarily halt the dragging operations.
+ *
+ * @param {boolean} isDraggable Widget supports draggable operations
+ * @fires draggable
+ */
+OO.ui.mixin.DraggableGroupElement.prototype.toggleDraggable = function ( isDraggable ) {
+ isDraggable = isDraggable !== undefined ? !!isDraggable : !this.draggable;
+
+ if ( this.draggable !== isDraggable ) {
+ this.draggable = isDraggable;
+
+ // Tell the items their draggable state changed
+ this.getItems().forEach( function ( item ) {
+ item.toggleDraggable( this.draggable );
+ }.bind( this ) );
+
+ // Emit event
+ this.emit( 'draggable', this.draggable );
+ }
+};
+
+/**
+ * Check the draggable state of this widget
+ *
+ * @return {boolean} Widget supports draggable operations
+ */
+OO.ui.mixin.DraggableGroupElement.prototype.isDraggable = function () {
+ return this.draggable;
+};
+
+/**
* Respond to item drag start event
*
* @private
* @param {OO.ui.mixin.DraggableElement} item Dragged item
*/
OO.ui.mixin.DraggableGroupElement.prototype.onItemDragStart = function ( item ) {
+ if ( !this.isDraggable() ) {
+ return;
+ }
// Make a shallow copy of this.items so we can re-order it during previews
// without affecting the original array.
this.itemsOrder = this.items.slice();
diff --git a/resources/lib/oojs-ui/oojs-ui-windows-apex.css b/resources/lib/oojs-ui/oojs-ui-windows-apex.css
index 17caa332fe65..e6d624dc09dc 100644
--- a/resources/lib/oojs-ui/oojs-ui-windows-apex.css
+++ b/resources/lib/oojs-ui/oojs-ui-windows-apex.css
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:28Z
+ * Date: 2017-03-28T22:19:34Z
*/
.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 0530610b0ef4..300539d80ef8 100644
--- a/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css
+++ b/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:28Z
+ * Date: 2017-03-28T22:19:34Z
*/
.oo-ui-window {
background: transparent;
diff --git a/resources/lib/oojs-ui/oojs-ui-windows.js b/resources/lib/oojs-ui/oojs-ui-windows.js
index ab78a4a24cd3..2274591aeea8 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.20.0
+ * OOjs UI v0.20.1
* 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-03-15T17:06:24Z
+ * Date: 2017-03-28T22:19:29Z
*/
( function ( OO ) {
@@ -1333,7 +1333,7 @@ OO.ui.WindowManager.prototype.openWindow = function ( win, data ) {
manager.toggleGlobalEvents( true );
manager.toggleAriaIsolation( true );
}
- manager.$returnFocusTo = data.$returnFocusTo || $( document.activeElement );
+ manager.$returnFocusTo = data.$returnFocusTo !== undefined ? data.$returnFocusTo : $( document.activeElement );
manager.currentWindow = win;
manager.opening = opening;
manager.preparingToOpen = null;
diff --git a/resources/lib/oojs-ui/themes/apex/icons-alerts.json b/resources/lib/oojs-ui/themes/apex/icons-alerts.json
index 892b8dbfe979..c3977eb5aceb 100644
--- a/resources/lib/oojs-ui/themes/apex/icons-alerts.json
+++ b/resources/lib/oojs-ui/themes/apex/icons-alerts.json
@@ -2,17 +2,20 @@
"prefix": "oo-ui-icon",
"intro": "@import '../../../../src/styles/common';",
"images": {
+ "alert": { "file": "images/icons/alert.svg" },
"bell": { "file": "images/icons/bell.svg" },
"bellOn": { "file": {
"ltr": "images/icons/bellOn-ltr.svg",
"rtl": "images/icons/bellOn-rtl.svg"
} },
+ "comment": { "file": "images/icons/comment.svg" },
"eye": { "file": "images/icons/eye.svg" },
"eyeClosed": { "file": "images/icons/eyeClosed.svg" },
"message": { "file": {
"ltr": "images/icons/message-ltr.svg",
"rtl": "images/icons/message-rtl.svg"
} },
+ "notice": { "file": "images/icons/notice.svg" },
"signature": { "file": {
"ltr": "images/icons/signature-ltr.svg",
"rtl": "images/icons/signature-rtl.svg"
diff --git a/resources/lib/oojs-ui/themes/apex/icons-content.json b/resources/lib/oojs-ui/themes/apex/icons-content.json
index 0cd901f62ba3..a9db33f78783 100644
--- a/resources/lib/oojs-ui/themes/apex/icons-content.json
+++ b/resources/lib/oojs-ui/themes/apex/icons-content.json
@@ -10,13 +10,17 @@
"ltr": "images/icons/articleRedirect-ltr.svg",
"rtl": "images/icons/articleRedirect-rtl.svg"
} },
+ "history": { "file": "images/icons/history.svg" },
+ "info": { "file": "images/icons/info.svg" },
"journal": { "file": {
"ltr": "images/icons/journal-ltr.svg",
"rtl": "images/icons/journal-rtl.svg"
} },
+ "tag": { "file": "images/icons/tag.svg" },
"upload": { "file": {
"ltr": "images/icons/upload-ltr.svg",
"rtl": "images/icons/upload-rtl.svg"
- } }
+ } },
+ "window": { "file": "images/icons/window.svg" }
}
}
diff --git a/resources/lib/oojs-ui/themes/apex/icons-interactions.json b/resources/lib/oojs-ui/themes/apex/icons-interactions.json
index 5b6ac3c80dcb..3fafe3cfe9f2 100644
--- a/resources/lib/oojs-ui/themes/apex/icons-interactions.json
+++ b/resources/lib/oojs-ui/themes/apex/icons-interactions.json
@@ -9,6 +9,7 @@
},
"images": {
"add": { "file": "images/icons/add.svg" },
+ "advanced": { "file": "images/icons/advanced.svg" },
"bookmark": { "file": {
"ltr": "images/icons/bookmark-ltr.svg",
"rtl": "images/icons/bookmark-rtl.svg"
@@ -17,8 +18,12 @@
"ltr": "images/icons/browser-ltr.svg",
"rtl": "images/icons/browser-rtl.svg"
} },
+ "cancel": { "file": "images/icons/cancel.svg" },
+ "check": { "file": "images/icons/check.svg" },
"clear": { "file": "images/icons/clear.svg" },
"clock": { "file": "images/icons/clock.svg" },
+ "close": { "file": "images/icons/close.svg" },
+ "ellipsis": { "file": "images/icons/ellipsis.svg" },
"feedback": { "file": {
"ltr": "images/icons/feedback-ltr.svg",
"rtl": "images/icons/feedback-rtl.svg"
@@ -28,6 +33,13 @@
"rtl": "images/icons/funnel-rtl.svg"
} },
"heart": { "file": "images/icons/heart.svg" },
+ "help": { "file": {
+ "ltr": "images/icons/help-ltr.svg",
+ "rtl": "images/icons/help-rtl.svg",
+ "lang": {
+ "he,yi": "images/icons/help-ltr.svg"
+ }
+ } },
"key": { "file": {
"ltr": "images/icons/key-ltr.svg",
"rtl": "images/icons/key-rtl.svg"
@@ -48,6 +60,12 @@
"ltr": "images/icons/printer-ltr.svg",
"rtl": "images/icons/printer-rtl.svg"
} },
+ "search": { "file": {
+ "ltr": "images/icons/search-ltr.svg",
+ "rtl": "images/icons/search-rtl.svg"
+ }
+ },
+ "settings": { "file": "images/icons/settings.svg" },
"subtract": { "file": "images/icons/subtract.svg" },
"sun": { "file": {
"ltr": "images/icons/sun-ltr.svg",
diff --git a/resources/lib/oojs-ui/themes/apex/icons-layout.json b/resources/lib/oojs-ui/themes/apex/icons-layout.json
new file mode 100644
index 000000000000..173b284d803b
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/icons-layout.json
@@ -0,0 +1,25 @@
+{
+ "prefix": "oo-ui-icon",
+ "intro": "@import '../../../../src/styles/common';",
+ "images": {
+ "menu": { "file": "images/icons/menu.svg" },
+ "stripeFlow": { "file": {
+ "ltr": "images/icons/stripeFlow-ltr.svg",
+ "rtl": "images/icons/stripeFlow-rtl.svg"
+ } },
+ "stripeSideMenu": { "file": "images/icons/stripeSideMenu.svg" },
+ "stripeSummary": { "file": {
+ "ltr": "images/icons/stripeSummary-ltr.svg",
+ "rtl": "images/icons/stripeSummary-rtl.svg"
+ } },
+ "stripeToC": { "file": {
+ "ltr": "images/icons/stripeToC-ltr.svg",
+ "rtl": "images/icons/stripeToC-rtl.svg"
+ } },
+ "viewCompact": { "file": "images/icons/viewCompact.svg" },
+ "viewDetails": { "file": {
+ "ltr": "images/icons/viewDetails-ltr.svg",
+ "rtl": "images/icons/viewDetails-rtl.svg"
+ } }
+ }
+}
diff --git a/resources/lib/oojs-ui/themes/apex/icons-movement.json b/resources/lib/oojs-ui/themes/apex/icons-movement.json
index 9aa1b8096008..7ab6eaa31f94 100644
--- a/resources/lib/oojs-ui/themes/apex/icons-movement.json
+++ b/resources/lib/oojs-ui/themes/apex/icons-movement.json
@@ -20,8 +20,20 @@
} },
"caretDown": { "file": "images/icons/caretDown.svg" },
"caretUp": { "file": "images/icons/caretUp.svg" },
+ "collapse": { "file": "images/icons/collapse.svg" },
"downTriangle": { "file": "images/icons/downTriangle.svg" },
+ "expand": { "file": "images/icons/expand.svg" },
"move": { "file": "images/icons/move.svg" },
+ "next": { "file": {
+ "ltr": "images/icons/move-ltr.svg",
+ "rtl": "images/icons/move-rtl.svg"
+ }
+ },
+ "previous": { "file": {
+ "ltr": "images/icons/move-rtl.svg",
+ "rtl": "images/icons/move-ltr.svg"
+ }
+ },
"upTriangle": { "file": "images/icons/upTriangle.svg" }
}
}
diff --git a/resources/lib/oojs-ui/themes/apex/icons.json b/resources/lib/oojs-ui/themes/apex/icons.json
index f4a2dc9269a1..c0ccb36abc1c 100644
--- a/resources/lib/oojs-ui/themes/apex/icons.json
+++ b/resources/lib/oojs-ui/themes/apex/icons.json
@@ -2,49 +2,63 @@
"prefix": "oo-ui-icon",
"intro": "@import '../../../../src/styles/common';",
"images": {
- "add": { "file": "images/icons/add.svg", "deprecated": "Moved since v0.19.5, use from the 'interactive' pack instead." },
- "advanced": { "file": "images/icons/advanced.svg" },
- "alert": { "file": "images/icons/alert.svg" },
- "cancel": { "file": "images/icons/cancel.svg" },
- "check": { "file": "images/icons/check.svg" },
- "circle": { "file": "images/icons/circle.svg" },
- "close": { "file": "images/icons/close.svg" },
- "code": { "file": "images/icons/code.svg" },
- "collapse": { "file": "images/icons/collapse.svg" },
- "comment": { "file": "images/icons/comment.svg" },
- "ellipsis": { "file": "images/icons/ellipsis.svg" },
- "expand": { "file": "images/icons/expand.svg" },
+ "add": { "file": "images/icons/add.svg", "deprecated": "Moved since v0.19.5, use from the 'interactions' pack instead." },
+ "advanced": { "file": "images/icons/advanced.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "alert": { "file": "images/icons/alert.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
+ "cancel": { "file": "images/icons/cancel.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "check": { "file": "images/icons/check.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "circle": { "file": "images/icons/circle.svg", "deprecated": "Deprecated since v0.20.1, do not use." },
+ "close": { "file": "images/icons/close.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "code": { "file": "images/icons/code.svg", "deprecated": "Moved since v0.16.2, use from the 'editing-advanced' pack instead." },
+ "collapse": { "file": "images/icons/collapse.svg", "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead." },
+ "comment": { "file": "images/icons/comment.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
+ "ellipsis": { "file": "images/icons/ellipsis.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "expand": { "file": "images/icons/expand.svg", "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead." },
"help": { "file": {
"ltr": "images/icons/help-ltr.svg",
"rtl": "images/icons/help-rtl.svg",
"lang": {
"he,yi": "images/icons/help-ltr.svg"
- }
+ },
+ "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead."
} },
- "history": { "file": "images/icons/history.svg" },
- "info": { "file": "images/icons/info.svg" },
- "menu": { "file": "images/icons/menu.svg" },
+ "history": { "file": "images/icons/history.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
+ "info": { "file": "images/icons/info.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
+ "menu": { "file": "images/icons/menu.svg", "deprecated": "Moved since v0.20.1, use from the 'layout' pack instead." },
"next": { "file": {
"ltr": "images/icons/move-ltr.svg",
"rtl": "images/icons/move-rtl.svg"
- } },
- "notice": { "file": "images/icons/notice.svg" },
+ },
+ "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead."
+ },
+ "notice": { "file": "images/icons/notice.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
"previous": { "file": {
"ltr": "images/icons/move-rtl.svg",
"rtl": "images/icons/move-ltr.svg"
- } },
+ },
+ "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead."
+ },
"redo": { "file": {
"ltr": "images/icons/arched-arrow-ltr.svg",
"rtl": "images/icons/arched-arrow-rtl.svg"
- } },
- "remove": { "file": "images/icons/trash.svg" },
- "search": { "file": "images/icons/search.svg" },
- "settings": { "file": "images/icons/settings.svg" },
- "tag": { "file": "images/icons/tag.svg" },
+ },
+ "deprecated": "Moved since v0.16.2, use from the 'editing-core' pack instead."
+ },
+ "remove": { "file": "images/icons/trash.svg", "deprecated": "Replaced since v0.14.0, use 'trash' from the 'moderation' pack instead." },
+ "search": { "file": {
+ "ltr": "images/icons/search-ltr.svg",
+ "rtl": "images/icons/search-rtl.svg"
+ },
+ "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead."
+ },
+ "settings": { "file": "images/icons/settings.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "tag": { "file": "images/icons/tag.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
"undo": { "file": {
"ltr": "images/icons/arched-arrow-rtl.svg",
"rtl": "images/icons/arched-arrow-ltr.svg"
- } },
- "window": { "file": "images/icons/window.svg" }
+ },
+ "deprecated": "Moved since v0.16.2, use from the 'editing-core' pack instead."
+ },
+ "window": { "file": "images/icons/window.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." }
}
}
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.png
new file mode 100644
index 000000000000..b009bff6b921
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.svg
new file mode 100644
index 000000000000..2e06beb8daf7
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.svg
@@ -0,0 +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="#FFFFFF">
+ <g id="settings">
+ <path id="gear" d="M20.87 13.476c.078-.482.13-.972.13-1.476s-.052-.994-.13-1.476l-2.464-.26a6.618 6.618 0 0 0-.648-1.57l1.558-1.923a8.97 8.97 0 0 0-2.086-2.08L15.3 6.246a6.543 6.543 0 0 0-1.57-.648l-.26-2.463C12.996 3.054 12.506 3 12 3s-.994.052-1.476.13l-.26 2.464c-.554.15-1.08.367-1.57.648L6.772 4.685A8.995 8.995 0 0 0 4.687 6.77L6.245 8.7c-.28.488-.5 1.015-.648 1.57l-2.463.26c-.08.48-.132.97-.132 1.475s.052.995.13 1.477l2.464.26c.15.554.367 1.08.648 1.57l-1.558 1.92a8.984 8.984 0 0 0 2.087 2.086l1.925-1.558c.488.28 1.015.5 1.57.648l.26 2.463c.48.078.97.13 1.475.13s.994-.052 1.476-.13l.26-2.464a6.67 6.67 0 0 0 1.57-.648l1.92 1.558a8.984 8.984 0 0 0 2.083-2.087l-1.555-1.93c.28-.487.5-1.014.647-1.57l2.463-.26zM12 15.998a3.998 3.998 0 1 1 0-7.996 3.998 3.998 0 0 1 0 7.996z"/>
+ </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.png
new file mode 100644
index 000000000000..b7529a242cc2
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.svg
new file mode 100644
index 000000000000..a7c1dcd09314
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.svg
@@ -0,0 +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="#FFFFFF">
+ <g id="cancel">
+ <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
+ </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.png
new file mode 100644
index 000000000000..a5f25e78e836
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.svg
new file mode 100644
index 000000000000..68e6c3d6a0ae
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/check-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="M7.105 13.473l1.422-1.423 1.9 1.902L15.237 7l1.66 1.148L10.634 17z" id="check"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.png
new file mode 100644
index 000000000000..05d6e22fd208
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.svg
new file mode 100644
index 000000000000..f100370394ac
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/close-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="M17.717 7.697l-1.414-1.414L12 10.586 7.697 6.283 6.283 7.697 10.586 12l-4.303 4.303 1.414 1.414L12 13.414l4.303 4.303 1.414-1.414L13.414 12z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.png
new file mode 100644
index 000000000000..7d57d117ca59
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.svg
new file mode 100644
index 000000000000..b169c7b57614
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-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 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.png
new file mode 100644
index 000000000000..35d8f226def0
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.svg
new file mode 100644
index 000000000000..68a64bd41beb
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.svg
@@ -0,0 +1,10 @@
+<?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">
+ <g id="help">
+ <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
+ <g id="question-mark">
+ <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
+ <path id="bottom" d="M11 16h2v2h-2z"/>
+ </g>
+ </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.png
new file mode 100644
index 000000000000..9cb8cb285d72
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.svg
new file mode 100644
index 000000000000..2c16f5f57a9a
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.svg
@@ -0,0 +1,10 @@
+<?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">
+ <g id="help">
+ <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
+ <g id="question-mark">
+ <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
+ <path id="bottom" d="M13 16h-2v2h2z"/>
+ </g>
+ </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.png
new file mode 100644
index 000000000000..4b2913bc6e3c
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.svg
new file mode 100644
index 000000000000..10490eab67fd
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.svg
@@ -0,0 +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="#FFFFFF">
+ <g id="search">
+ <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
+ </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.png
new file mode 100644
index 000000000000..e8e99f843d88
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.svg
new file mode 100644
index 000000000000..ebc654a2b1a1
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr.svg
@@ -0,0 +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="search">
+ <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
+ </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.png
new file mode 100644
index 000000000000..0409aa4909e3
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.svg
new file mode 100644
index 000000000000..81cab992aacf
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.svg
@@ -0,0 +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="#FFFFFF">
+ <g id="search">
+ <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
+ </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.png
new file mode 100644
index 000000000000..3ab96becd968
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.svg
new file mode 100644
index 000000000000..c51d4cb09f40
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl.svg
@@ -0,0 +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="search">
+ <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
+ </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search.png b/resources/lib/oojs-ui/themes/apex/images/icons/search.png
deleted file mode 100644
index 7b4753987e05..000000000000
--- a/resources/lib/oojs-ui/themes/apex/images/icons/search.png
+++ /dev/null
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search.svg b/resources/lib/oojs-ui/themes/apex/images/icons/search.svg
deleted file mode 100644
index 823ebf28d202..000000000000
--- a/resources/lib/oojs-ui/themes/apex/images/icons/search.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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="search">
- <path id="magnifying-glass" d="M18.87 18.375l-3.987-3.99-.286-.17a5.774 5.774 0 0 0 1.082-3.372C15.67 7.616 13.06 5 9.84 5A5.843 5.843 0 0 0 4 10.844a5.84 5.84 0 0 0 5.842 5.842c1.26 0 2.423-.403 3.377-1.08l.16.286 3.99 3.987c.32.31.91.24 1.33-.18.41-.42.49-1.01.17-1.33zM9.837 14.56a3.72 3.72 0 0 1-3.718-3.717c0-2.05 1.67-3.72 3.72-3.72s3.72 1.668 3.72 3.72a3.722 3.722 0 0 1-3.72 3.718z"/>
- </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.png
new file mode 100644
index 000000000000..34c6afe5a697
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.svg
new file mode 100644
index 000000000000..0cda50c6259c
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.svg
@@ -0,0 +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="#FFFFFF">
+ <g id="settings">
+ <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
+ </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.png
new file mode 100644
index 000000000000..5423b36ea963
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-ltr.svg
new file mode 100644
index 000000000000..2112bb2da350
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-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="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.png
new file mode 100644
index 000000000000..0ff3d7cf8e5b
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-rtl.svg
new file mode 100644
index 000000000000..39790a9a21a0
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeFlow-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="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeSideMenu.png b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSideMenu.png
new file mode 100644
index 000000000000..e031527d99c6
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSideMenu.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeSideMenu.svg b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSideMenu.svg
new file mode 100644
index 000000000000..e63a7d5cb856
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSideMenu.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="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.png
new file mode 100644
index 000000000000..ce15bd87bfb3
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-ltr.svg
new file mode 100644
index 000000000000..767d6cda4b7c
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-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="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.png
new file mode 100644
index 000000000000..82ca2bf5f092
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-rtl.svg
new file mode 100644
index 000000000000..4d16337e497d
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeSummary-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="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.png
new file mode 100644
index 000000000000..b482d3e61a74
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-ltr.svg
new file mode 100644
index 000000000000..d7c202e8dd1c
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-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="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.png
new file mode 100644
index 000000000000..516bc2c2b052
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-rtl.svg
new file mode 100644
index 000000000000..0859be6b416e
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/stripeToC-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="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.png b/resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.png
new file mode 100644
index 000000000000..13fe42072642
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.svg b/resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.svg
new file mode 100644
index 000000000000..d96a2e3fee3d
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/viewCompact.svg
@@ -0,0 +1,14 @@
+<?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="viewCompact">
+ <circle cx="6" cy="6" r="2"/>
+ <circle cx="12" cy="6" r="2"/>
+ <circle cx="18" cy="6" r="2"/>
+ <circle cx="6" cy="12" r="2"/>
+ <circle cx="12" cy="12" r="2"/>
+ <circle cx="18" cy="12" r="2"/>
+ <circle cx="6" cy="18" r="2"/>
+ <circle cx="12" cy="18" r="2"/>
+ <circle cx="18" cy="18" r="2"/>
+ </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.png
new file mode 100644
index 000000000000..4341f0e6a9fc
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.svg
new file mode 100644
index 000000000000..1a5092a3a962
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-ltr.svg
@@ -0,0 +1,9 @@
+<?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="viewDetails">
+ <circle cx="5.5" cy="8.5" r="2.5"/>
+ <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
+ <circle cx="5.5" cy="16.5" r="2.5"/>
+ <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
+ </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.png
new file mode 100644
index 000000000000..338294c07120
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.svg
new file mode 100644
index 000000000000..f43b05f129f3
--- /dev/null
+++ b/resources/lib/oojs-ui/themes/apex/images/icons/viewDetails-rtl.svg
@@ -0,0 +1,9 @@
+<?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="viewDetails">
+ <circle cx="18.5" cy="8.5" r="2.5"/>
+ <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+ <circle cx="18.5" cy="16.5" r="2.5"/>
+ <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+ </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json b/resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json
index e6fa863c12a9..c169b56fecbc 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json
+++ b/resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json
@@ -22,17 +22,20 @@
}
},
"images": {
+ "alert": { "file": "images/icons/alert.svg", "variants": [ "warning" ] },
"bell": { "file": "images/icons/bell.svg" },
"bellOn": { "file": {
"ltr": "images/icons/bellOn-ltr.svg",
"rtl": "images/icons/bellOn-rtl.svg"
} },
+ "comment": { "file": "images/icons/comment.svg" },
"eye": { "file": "images/icons/eye.svg" },
"eyeClosed": { "file": "images/icons/eyeClosed.svg" },
"message": { "file": {
"ltr": "images/icons/message-ltr.svg",
"rtl": "images/icons/message-rtl.svg"
} },
+ "notice": { "file": "images/icons/notice.svg" },
"signature": { "file": {
"ltr": "images/icons/signature-ltr.svg",
"rtl": "images/icons/signature-rtl.svg"
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-content.json b/resources/lib/oojs-ui/themes/mediawiki/icons-content.json
index 80bbcaf2b345..e952108ae2ca 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/icons-content.json
+++ b/resources/lib/oojs-ui/themes/mediawiki/icons-content.json
@@ -62,6 +62,8 @@
"ltr": "images/icons/folderPlaceholder-ltr.svg",
"rtl": "images/icons/folderPlaceholder-rtl.svg"
} },
+ "history": { "file": "images/icons/history.svg" },
+ "info": { "file": "images/icons/info.svg" },
"journal": { "file": {
"ltr": "images/icons/journal-ltr.svg",
"rtl": "images/icons/journal-rtl.svg"
@@ -70,9 +72,11 @@
"ltr": "images/icons/newspaper-ltr.svg",
"rtl": "images/icons/newspaper-rtl.svg"
} },
+ "tag": { "file": "images/icons/tag.svg", "variants": [ "destructive", "warning", "constructive" ] },
"upload": { "file": {
"ltr": "images/icons/upload-ltr.svg",
"rtl": "images/icons/upload-rtl.svg"
- } }
+ } },
+ "window": { "file": "images/icons/window.svg" }
}
}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json b/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json
index f693e3fba19f..668173fc8e63 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json
+++ b/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json
@@ -23,6 +23,7 @@
},
"images": {
"add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ] },
+ "advanced": { "file": "images/icons/advanced.svg" },
"bookmark": { "file": {
"ltr": "images/icons/bookmark-ltr.svg",
"rtl": "images/icons/bookmark-rtl.svg"
@@ -31,8 +32,12 @@
"ltr": "images/icons/browser-ltr.svg",
"rtl": "images/icons/browser-rtl.svg"
} },
+ "cancel": { "file": "images/icons/cancel.svg", "variants": [ "destructive" ] },
+ "check": { "file": "images/icons/check.svg", "variants": [ "constructive", "progressive", "destructive" ] },
"clear": { "file": "images/icons/clear.svg" },
"clock": { "file": "images/icons/clock.svg" },
+ "close": { "file": "images/icons/close.svg" },
+ "ellipsis": { "file": "images/icons/ellipsis.svg" },
"feedback": {
"file": {
"ltr": "images/icons/feedback-ltr.svg",
@@ -45,6 +50,13 @@
"rtl": "images/icons/funnel-rtl.svg"
} },
"heart": { "file": "images/icons/heart.svg" },
+ "help": { "file": {
+ "ltr": "images/icons/help-ltr.svg",
+ "rtl": "images/icons/help-rtl.svg",
+ "lang": {
+ "he,yi": "images/icons/help-ltr.svg"
+ }
+ } },
"key": { "file": {
"ltr": "images/icons/key-ltr.svg",
"rtl": "images/icons/key-rtl.svg"
@@ -65,6 +77,12 @@
"ltr": "images/icons/printer-ltr.svg",
"rtl": "images/icons/printer-rtl.svg"
} },
+ "search": { "file": {
+ "ltr": "images/icons/search-ltr.svg",
+ "rtl": "images/icons/search-rtl.svg"
+ }
+ },
+ "settings": { "file": "images/icons/settings.svg" },
"subtract": { "file": "images/icons/subtract.svg" },
"sun": { "file": {
"ltr": "images/icons/sun-ltr.svg",
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-layout.json b/resources/lib/oojs-ui/themes/mediawiki/icons-layout.json
index 6ff4a0e0d322..f720a25ee4dd 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/icons-layout.json
+++ b/resources/lib/oojs-ui/themes/mediawiki/icons-layout.json
@@ -22,6 +22,7 @@
}
},
"images": {
+ "menu": { "file": "images/icons/menu.svg" },
"stripeFlow": { "file": {
"ltr": "images/icons/stripeFlow-ltr.svg",
"rtl": "images/icons/stripeFlow-rtl.svg"
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-location.json b/resources/lib/oojs-ui/themes/mediawiki/icons-location.json
index 7098f2304b16..58feb234fd39 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/icons-location.json
+++ b/resources/lib/oojs-ui/themes/mediawiki/icons-location.json
@@ -31,9 +31,14 @@
"ltr": "images/icons/mapPinAdd-ltr.svg",
"rtl": "images/icons/mapPinAdd-rtl.svg"
} },
+ "mapTrail": { "file": {
+ "ltr": "images/icons/mapTrail-ltr.svg",
+ "rtl": "images/icons/mapTrail-rtl.svg"
+ } },
"wikitrail": { "file": {
- "ltr": "images/icons/wikitrail-ltr.svg",
- "rtl": "images/icons/wikitrail-rtl.svg"
- } }
+ "ltr": "images/icons/mapTrail-ltr.svg",
+ "rtl": "images/icons/mapTrail-rtl.svg"
+ }, "deprecated": "Renamed to 'mapTrail' since v0.20.1."
+ }
}
}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-movement.json b/resources/lib/oojs-ui/themes/mediawiki/icons-movement.json
index 059073f408d9..0dc88e3088a7 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/icons-movement.json
+++ b/resources/lib/oojs-ui/themes/mediawiki/icons-movement.json
@@ -40,8 +40,20 @@
} },
"caretDown": { "file": "images/icons/caretDown.svg" },
"caretUp": { "file": "images/icons/caretUp.svg" },
+ "collapse": { "file": "images/icons/collapse.svg" },
"downTriangle": { "file": "images/icons/downTriangle.svg" },
+ "expand": { "file": "images/icons/expand.svg" },
"move": { "file": "images/icons/move.svg" },
+ "next": { "file": {
+ "ltr": "images/icons/move-ltr.svg",
+ "rtl": "images/icons/move-rtl.svg"
+ }
+ },
+ "previous": { "file": {
+ "ltr": "images/icons/move-rtl.svg",
+ "rtl": "images/icons/move-ltr.svg"
+ }
+ },
"upTriangle": { "file": "images/icons/upTriangle.svg" }
}
}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons.json b/resources/lib/oojs-ui/themes/mediawiki/icons.json
index 60c05f3e9a68..958e7e30bb2b 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/icons.json
+++ b/resources/lib/oojs-ui/themes/mediawiki/icons.json
@@ -22,52 +22,63 @@
}
},
"images": {
- "add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ], "deprecated": "Moved since v0.19.5, use from the 'interactive' pack instead." },
- "advanced": { "file": "images/icons/advanced.svg" },
- "alert": { "file": "images/icons/alert.svg", "variants": [ "warning" ] },
- "cancel": { "file": "images/icons/cancel.svg", "variants": [ "destructive" ] },
- "check": { "file": "images/icons/check.svg", "variants": [ "constructive", "progressive", "destructive" ] },
- "circle": { "file": "images/icons/circle.svg", "variants": [ "constructive", "progressive" ] },
- "close": { "file": "images/icons/close.svg" },
- "code": { "file": "images/icons/code.svg" },
- "collapse": { "file": "images/icons/collapse.svg" },
- "comment": { "file": "images/icons/comment.svg" },
- "ellipsis": { "file": "images/icons/ellipsis.svg" },
- "expand": { "file": "images/icons/expand.svg" },
+ "add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ], "deprecated": "Moved since v0.19.5, use from the 'interactions' pack instead." },
+ "advanced": { "file": "images/icons/advanced.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "alert": { "file": "images/icons/alert.svg", "variants": [ "warning" ], "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
+ "cancel": { "file": "images/icons/cancel.svg", "variants": [ "destructive" ], "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "check": { "file": "images/icons/check.svg", "variants": [ "constructive", "progressive", "destructive" ], "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "circle": { "file": "images/icons/circle.svg", "variants": [ "constructive", "progressive" ], "deprecated": "Deprecated since v0.20.1, do not use." },
+ "close": { "file": "images/icons/close.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "code": { "file": "images/icons/code.svg", "deprecated": "Moved since v0.16.2, use from the 'editing-advanced' pack instead." },
+ "collapse": { "file": "images/icons/collapse.svg", "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead." },
+ "comment": { "file": "images/icons/comment.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
+ "ellipsis": { "file": "images/icons/ellipsis.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "expand": { "file": "images/icons/expand.svg", "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead." },
"help": { "file": {
"ltr": "images/icons/help-ltr.svg",
"rtl": "images/icons/help-rtl.svg",
"lang": {
"he,yi": "images/icons/help-ltr.svg"
- }
+ },
+ "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead."
} },
- "history": { "file": "images/icons/history.svg" },
- "info": { "file": "images/icons/info.svg" },
- "menu": { "file": "images/icons/menu.svg" },
+ "history": { "file": "images/icons/history.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
+ "info": { "file": "images/icons/info.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
+ "menu": { "file": "images/icons/menu.svg", "deprecated": "Moved since v0.20.1, use from the 'layout' pack instead." },
"next": { "file": {
"ltr": "images/icons/move-ltr.svg",
"rtl": "images/icons/move-rtl.svg"
- } },
- "notice": { "file": "images/icons/notice.svg" },
+ },
+ "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead."
+ },
+ "notice": { "file": "images/icons/notice.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
"previous": { "file": {
"ltr": "images/icons/move-rtl.svg",
"rtl": "images/icons/move-ltr.svg"
- } },
+ },
+ "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead."
+ },
"redo": { "file": {
"ltr": "images/icons/arched-arrow-ltr.svg",
"rtl": "images/icons/arched-arrow-rtl.svg"
- } },
- "remove": { "file": "images/icons/trash.svg", "variants": [ "destructive" ] },
+ },
+ "deprecated": "Moved since v0.16.2, use from the 'editing-core' pack instead."
+ },
+ "remove": { "file": "images/icons/trash.svg", "variants": [ "destructive" ], "deprecated": "Replaced since v0.14.0, use 'trash' from the 'moderation' pack instead." },
"search": { "file": {
"ltr": "images/icons/search-ltr.svg",
"rtl": "images/icons/search-rtl.svg"
- } },
- "settings": { "file": "images/icons/settings.svg" },
- "tag": { "file": "images/icons/tag.svg", "variants": [ "destructive", "warning", "constructive" ] },
+ },
+ "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead."
+ },
+ "settings": { "file": "images/icons/settings.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
+ "tag": { "file": "images/icons/tag.svg", "variants": [ "destructive", "warning", "constructive" ], "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
"undo": { "file": {
"ltr": "images/icons/arched-arrow-rtl.svg",
"rtl": "images/icons/arched-arrow-ltr.svg"
- } },
- "window": { "file": "images/icons/window.svg" }
+ },
+ "deprecated": "Moved since v0.16.2, use from the 'editing-core' pack instead."
+ },
+ "window": { "file": "images/icons/window.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." }
}
}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.png
index 075f84e087eb..075f84e087eb 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.png
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.svg
index 17d3645b0edd..17d3645b0edd 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.svg
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.svg
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.png
index 2b26e1557786..2b26e1557786 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.png
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.svg
index 2b49b9907340..2b49b9907340 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.svg
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.svg
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.png
index 331fd595f367..331fd595f367 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr.png
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.svg
index cb073b9d042c..cb073b9d042c 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr.svg
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.svg
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.png
index 75c8dcfcdd8b..75c8dcfcdd8b 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.png
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.svg
index fbb9cabdb8bc..fbb9cabdb8bc 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.svg
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.svg
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.png
index fc0b2d929d6a..fc0b2d929d6a 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.png
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.svg
index a2f62ff07d53..a2f62ff07d53 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.svg
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.svg
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.png
index 62f1fe91af2d..62f1fe91af2d 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.png
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.png
Binary files differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.svg
index e8b1a08c08a5..e8b1a08c08a5 100644
--- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.svg
+++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.svg