"ext-xml": "*",
"liuggio/statsd-php-client": "1.0.18",
"mediawiki/at-ease": "1.1.0",
- "oojs/oojs-ui": "0.17.5",
+ "oojs/oojs-ui": "0.17.6",
"oyejorge/less.php": "1.7.0.10",
"php": ">=5.5.9",
"psr/log": "1.0.0",
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:08Z
+ * Date: 2016-07-12T20:26:03Z
*/
( function ( OO ) {
OO.inheritClass( OO.ui.ApexTheme, OO.ui.Theme );
+/* Methods */
+
+/**
+ * @inheritdoc
+ */
+OO.ui.ApexTheme.prototype.getDialogTransitionDuration = function () {
+ return 250;
+};
+
/* Instantiation */
OO.ui.theme = new OO.ui.ApexTheme();
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:11Z
+ * Date: 2016-07-12T20:26:07Z
*/
.oo-ui-element-hidden {
display: none !important;
.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
cursor: default;
}
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
+ z-index: 2;
+}
.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
}
.oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content {
padding: 0.5em 0.75em;
- line-height: 1.5em;
+ line-height: 1.5;
}
.oo-ui-fieldLayout:last-child {
margin-bottom: 0;
}
.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content {
padding: 0.5em 0.75em;
- line-height: 1.5em;
+ line-height: 1.5;
}
.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout,
.oo-ui-fieldsetLayout + .oo-ui-formLayout {
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:11Z
+ * Date: 2016-07-12T20:26:07Z
*/
.oo-ui-element-hidden {
display: none !important;
.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
cursor: default;
}
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
+ z-index: 2;
+}
.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
text-decoration: none;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button:focus {
+ border-radius: 2px;
outline: 0;
}
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
}
.oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- line-height: 1.2em;
+ line-height: 1.2;
}
.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
position: absolute;
}
.oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content {
padding: 0.5em 0.75em;
- line-height: 1.5em;
+ line-height: 1.5;
}
.oo-ui-fieldLayout:last-child {
margin-bottom: 0;
.oo-ui-fieldLayout-messages .oo-ui-labelWidget {
display: table-cell;
padding: 0;
- line-height: 1.875em;
+ line-height: 1.875;
vertical-align: middle;
}
.oo-ui-actionFieldLayout {
}
.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content {
padding: 0.5em 0.75em;
- line-height: 1.5em;
+ line-height: 1.5;
}
.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout,
.oo-ui-fieldsetLayout + .oo-ui-formLayout {
}
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
padding-left: 2em;
- line-height: 1.8em;
+ line-height: 1.8;
}
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
left: 0;
background-color: #eeeeee;
}
.oo-ui-optionWidget .oo-ui-labelElement-label {
- line-height: 1.5em;
+ line-height: 1.5;
}
.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected,
.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed,
.oo-ui-iconWidget {
display: inline-block;
vertical-align: middle;
- line-height: 2.5em;
+ line-height: 2.5;
}
.oo-ui-iconWidget.oo-ui-widget-disabled {
opacity: 0.2;
.oo-ui-indicatorWidget {
display: inline-block;
vertical-align: middle;
- line-height: 2.5em;
+ line-height: 2.5;
margin: 0.46875em;
}
.oo-ui-indicatorWidget.oo-ui-widget-disabled {
border-radius: 0;
margin-left: -1px;
}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button:focus {
- z-index: 2;
-}
.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
padding: 0.25em 0;
}
.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
- line-height: 1.5em;
+ line-height: 1.5;
}
.oo-ui-dropdownInputWidget {
position: relative;
padding: 0.25em 0;
}
.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
- line-height: 1.5em;
+ line-height: 1.5;
}
.oo-ui-textInputWidget {
position: relative;
border-radius: 2px;
}
.oo-ui-textInputWidget textarea {
- line-height: 1.275em;
+ line-height: 1.275;
}
.oo-ui-textInputWidget .oo-ui-pendingElement-pending {
background-color: transparent;
border-color: #cccccc;
box-shadow: inset 0 0 0 0.1em #cccccc;
}
+.oo-ui-textInputWidget.oo-ui-widget-enabled :-moz-placeholder {
+ color: #595959;
+ opacity: 1;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled ::-moz-placeholder {
+ color: #595959;
+ opacity: 1;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled :-ms-input-placeholder {
+ color: #595959;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled ::-webkit-input-placeholder {
+ color: #595959;
+}
.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input,
.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea {
border-color: #ff0000;
}
.oo-ui-textInputWidget > .oo-ui-labelElement-label {
padding: 0.4em;
- line-height: 1.5em;
+ line-height: 1.5;
color: #888888;
}
.oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label {
overflow: hidden;
}
.oo-ui-multioptionWidget .oo-ui-labelElement-label {
- line-height: 1.5em;
+ line-height: 1.5;
}
.oo-ui-multioptionWidget.oo-ui-widget-disabled {
color: #cccccc;
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:08Z
+ * Date: 2016-07-12T20:26:03Z
*/
( function ( OO ) {
.addClass( classes.on.join( ' ' ) );
};
+/**
+ * Get the transition duration in milliseconds for dialogs opening/closing
+ *
+ * The dialog should be fully rendered this many milliseconds after the
+ * ready process has executed.
+ *
+ * @return {number} Transition duration in milliseconds
+ */
+OO.ui.Theme.prototype.getDialogTransitionDuration = function () {
+ return 0;
+};
+
/**
* The TabIndexedElement class is an attribute mixin used to add additional functionality to an
* element created by another class. The mixin provides a ‘tabIndex’ property, which specifies the
* @class
* @extends OO.ui.Widget
* @mixins OO.ui.mixin.LabelElement
+ * @mixins OO.ui.mixin.TitledElement
*
* @constructor
* @param {Object} [config] Configuration options
* ButtonInputWidget is used to submit HTML forms and is intended to be used within
* a OO.ui.FormLayout. If you do not need the button to work with HTML forms, you probably
* want to use OO.ui.ButtonWidget instead. Button input widgets can be rendered as either an
- * HTML `<button/>` (the default) or an HTML `<input/>` tags. See the
+ * HTML `<button>` (the default) or an HTML `<input>` tags. See the
* [OOjs UI documentation on MediaWiki] [1] for more information.
*
* @example
* @constructor
* @param {Object} [config] Configuration options
* @cfg {string} [type='button'] The value of the HTML `'type'` attribute: 'button', 'submit' or 'reset'.
- * @cfg {boolean} [useInputTag=false] Use an `<input/>` tag instead of a `<button/>` tag, the default.
- * Widgets configured to be an `<input/>` do not support {@link #icon icons} and {@link #indicator indicators},
+ * @cfg {boolean} [useInputTag=false] Use an `<input>` tag instead of a `<button>` tag, the default.
+ * Widgets configured to be an `<input>` do not support {@link #icon icons} and {@link #indicator indicators},
* non-plaintext {@link #label labels}, or {@link #value values}. In general, useInputTag should only
* be set to `true` when there’s need to support IE 6 in a form with multiple buttons.
*/
/**
* Set label value.
*
- * If #useInputTag is `true`, the label is set as the `value` of the `<input/>` tag.
+ * If #useInputTag is `true`, the label is set as the `value` of the `<input>` tag.
*
* @param {jQuery|string|Function|null} label Label nodes, text, a function that returns nodes or
* text, or `null` for no label
/**
* Set the value of the input.
*
- * This method is disabled for button inputs configured as {@link #useInputTag <input/> tags}, as
+ * This method is disabled for button inputs configured as {@link #useInputTag <input> tags}, as
* they do not support {@link #value values}.
*
* @param {string} value New value
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:08Z
+ * Date: 2016-07-12T20:26:03Z
*/
( function ( OO ) {
return classes;
};
+/**
+ * @inheritdoc
+ */
+OO.ui.MediaWikiTheme.prototype.getDialogTransitionDuration = function () {
+ return 250;
+};
+
/* Instantiation */
OO.ui.theme = new OO.ui.MediaWikiTheme();
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:11Z
+ * Date: 2016-07-12T20:26:07Z
*/
.oo-ui-popupTool .oo-ui-popupWidget-popup,
.oo-ui-popupTool .oo-ui-popupWidget-anchor {
clear: both;
}
.oo-ui-toolbar-bar {
- line-height: 1em;
+ line-height: 1;
position: relative;
}
.oo-ui-toolbar-actions {
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:11Z
+ * Date: 2016-07-12T20:26:07Z
*/
.oo-ui-popupTool .oo-ui-popupWidget-popup,
.oo-ui-popupTool .oo-ui-popupWidget-anchor {
width: 1.875em;
}
.oo-ui-toolGroupTool > .oo-ui-popupToolGroup.oo-ui-labelElement > .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
- line-height: 2.1em;
+ line-height: 2.1;
}
.oo-ui-toolGroup {
display: inline-block;
width: 1.875em;
}
.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
- line-height: 2.1em;
+ line-height: 2.1;
padding: 0 0.4em;
}
.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover {
min-width: 3.75em;
}
.oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
- line-height: 2.6em;
+ line-height: 2.6;
margin: 0 1em;
}
.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
left: 0;
}
.oo-ui-popupToolGroup-header {
- line-height: 2.6em;
+ line-height: 2.6;
margin: 0 0.6em;
font-weight: bold;
}
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
- line-height: 2em;
+ line-height: 2;
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
color: #888888;
clear: both;
}
.oo-ui-toolbar-bar {
- line-height: 1em;
+ line-height: 1;
position: relative;
}
.oo-ui-toolbar-actions {
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:08Z
+ * Date: 2016-07-12T20:26:03Z
*/
( function ( OO ) {
var i, len, item, name, tool,
names = [];
- if ( collection === '*' ) {
- for ( name in this.registry ) {
- tool = this.registry[ name ];
- if (
- // Only add tools by group name when auto-add is enabled
- tool.static.autoAddToCatchall &&
- // Exclude already used tools
- ( !used || !used[ name ] )
- ) {
- names.push( name );
- if ( used ) {
- used[ name ] = true;
+ collection = !Array.isArray( collection ) ? [ collection ] : collection;
+
+ for ( i = 0, len = collection.length; i < len; i++ ) {
+ item = collection[ i ];
+ if ( item === '*' ) {
+ for ( name in this.registry ) {
+ tool = this.registry[ name ];
+ if (
+ // Only add tools by group name when auto-add is enabled
+ tool.static.autoAddToCatchall &&
+ // Exclude already used tools
+ ( !used || !used[ name ] )
+ ) {
+ names.push( name );
+ if ( used ) {
+ used[ name ] = true;
+ }
}
}
- }
- } else if ( Array.isArray( collection ) ) {
- for ( i = 0, len = collection.length; i < len; i++ ) {
- item = collection[ i ];
+ } else {
// Allow plain strings as shorthand for named tools
if ( typeof item === 'string' ) {
item = { name: item };
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:11Z
+ * Date: 2016-07-12T20:26:07Z
*/
.oo-ui-draggableElement-handle,
.oo-ui-draggableElement-handle.oo-ui-widget {
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:11Z
+ * Date: 2016-07-12T20:26:07Z
*/
.oo-ui-draggableElement-handle,
.oo-ui-draggableElement-handle.oo-ui-widget {
-moz-box-sizing: border-box;
box-sizing: border-box;
display: block;
- line-height: 2.3em;
+ line-height: 2.3;
margin: 0;
overflow: hidden;
white-space: nowrap;
}
.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input {
border: 0;
- line-height: 1.675em;
+ line-height: 1.675;
margin: 0 0 0 0.2em;
padding: 0;
font-size: inherit;
box-sizing: border-box;
vertical-align: middle;
height: 1.7em;
- line-height: 1.7em;
+ line-height: 1.7;
background-color: #eeeeee;
color: #555555;
margin: 0.1em;
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:08Z
+ * Date: 2016-07-12T20:26:03Z
*/
( function ( OO ) {
for ( i = 0, len = items.length; i < len; i++ ) {
if ( !selectedItem || selectedItem !== items[ i ] ) {
items[ i ].$element.addClass( 'oo-ui-element-hidden' );
+ items[ i ].$element.attr( 'aria-hidden', 'true' );
}
}
if ( selectedItem ) {
selectedItem.$element.removeClass( 'oo-ui-element-hidden' );
+ selectedItem.$element.removeAttr( 'aria-hidden' );
}
}
};
this.$element
.toggleClass( 'oo-ui-menuLayout-showMenu', this.showMenu )
.toggleClass( 'oo-ui-menuLayout-hideMenu', !this.showMenu );
+ this.$menu.attr( 'aria-hidden', this.showMenu ? 'false' : 'true' );
}
return this;
/**
* Construct a OO.ui.CapsuleItemWidget (or a subclass thereof) from given label and data.
+ * May return `null` if the given label and data are not valid.
*
* @protected
* @param {Mixed} data Custom data of any type.
* @param {string} label The label text.
- * @return {OO.ui.CapsuleItemWidget}
+ * @return {OO.ui.CapsuleItemWidget|null}
*/
OO.ui.CapsuleMultiselectWidget.prototype.createItemWidget = function ( data, label ) {
+ if ( label === '' ) {
+ return null;
+ }
return new OO.ui.CapsuleItemWidget( { data: data, label: label } );
};
if ( !item ) {
item = widget.createItemWidget( data, label );
}
- widget.addItems( [ item ], i );
+ if ( item ) {
+ widget.addItems( [ item ], i );
+ }
} );
if ( items.length ) {
if ( !widget.getItemFromData( data ) ) {
item = menu.getItemFromData( data );
if ( item ) {
- items.push( widget.createItemWidget( data, item.label ) );
+ item = widget.createItemWidget( data, item.label );
} else if ( widget.allowArbitrary ) {
- items.push( widget.createItemWidget( data, String( data ) ) );
+ item = widget.createItemWidget( data, String( data ) );
+ }
+ if ( item ) {
+ items.push( item );
}
}
} );
* @return {boolean} Whether the item was added or not
*/
OO.ui.CapsuleMultiselectWidget.prototype.addItemFromLabel = function ( label ) {
- var item = this.menu.getItemFromLabel( label, true );
+ var item, items;
+ item = this.menu.getItemFromLabel( label, true );
if ( item ) {
this.addItemsFromData( [ item.data ] );
return true;
- } else if ( this.allowArbitrary && this.$input.val().trim() !== '' ) {
+ } else if ( this.allowArbitrary ) {
+ items = this.getItems();
this.addItemsFromData( [ label ] );
- return true;
+ return !OO.compare( this.getItems(), items );
}
return false;
};
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:11Z
+ * Date: 2016-07-12T20:26:07Z
*/
.oo-ui-actionWidget.oo-ui-pendingElement-pending {
background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:11Z
+ * Date: 2016-07-12T20:26:07Z
*/
.oo-ui-window {
background: transparent;
}
.oo-ui-messageDialog-title {
font-size: 1.5em;
- line-height: 1em;
+ line-height: 1;
color: #000000;
}
.oo-ui-messageDialog-message {
font-size: 0.9em;
- line-height: 1.25em;
+ line-height: 1.25;
color: #555555;
}
.oo-ui-messageDialog-message-verbose {
font-size: 1.1em;
- line-height: 1.5em;
+ line-height: 1.5;
text-align: left;
}
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
margin-right: 0;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
- text-align: center;
line-height: 3.4;
+ text-align: center;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
background-color: rgba(0, 0, 0, 0.05);
/*!
- * OOjs UI v0.17.5
+ * OOjs UI v0.17.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-06-29T13:27:08Z
+ * Date: 2016-07-12T20:26:03Z
*/
( function ( OO ) {
* @param {jQuery.Event} event Focus event
*/
OO.ui.Window.prototype.onFocusTrapFocused = function ( event ) {
- if ( this.$focusTrapBefore.is( event.target ) ) {
- OO.ui.findFocusable( this.$content, true ).focus();
+ var backwards = this.$focusTrapBefore.is( event.target ),
+ element = OO.ui.findFocusable( this.$content, backwards );
+ if ( element ) {
+ // There's a focusable element inside the content, at the front or
+ // back depending on which focus trap we hit; select it.
+ element.focus();
} else {
- // this.$content is the part of the focus cycle, and is the first focusable element
+ // There's nothing focusable inside the content. As a fallback,
+ // this.$content is focusable, and focusing it will keep our focus
+ // properly trapped. It's not a *meaningful* focus, since it's just
+ // the content-div for the Window, but it's better than letting focus
+ // escape into the page.
this.$content.focus();
}
};
return OO.ui.Dialog.parent.prototype.getSetupProcess.call( this, data )
.next( function () {
var config = this.constructor.static,
- actions = data.actions !== undefined ? data.actions : config.actions;
+ actions = data.actions !== undefined ? data.actions : config.actions,
+ title = data.title !== undefined ? data.title : config.title;
- this.title.setLabel(
- data.title !== undefined ? data.title : this.constructor.static.title
- );
+ this.title.setLabel( title ).setTitle( title );
this.actions.add( this.getActionWidgets( actions ) );
this.$element.on( 'keydown', this.onDialogKeyDownHandler );
<?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="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-</svg>
+ <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
+</svg>
\ No newline at end of file
<?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="M18 2L2.03 17.97l.97 1 4-4V19h1v-5.03l2.688-2.69c.81-.02 1.645.053 2.312.22V13c1.2 1.5 4.3 1.2 5 0V6c-.493.493-1.635.725-2.72.688L19 2.968zM7 4v7.03l6.438-6.436C11.778 3.61 8.71 3.934 8 5V4z"/>
-</svg>
+ <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
+</svg>
\ No newline at end of file
<?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 2l-1 .97 3.72 3.717C8.634 6.727 7.492 6.494 7 6v7c.7 1.2 3.8 1.5 5 0v-1.5c.667-.167 1.5-.24 2.313-.22L17 13.97V19h1v-4.03l4 4 .97-1zm7.22 2c-.952-.03-1.932.163-2.658.594L18 11.03V4h-1v1c-.4-.6-1.556-.963-2.78-1z"/>
-</svg>
+ <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
+</svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style>
- <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-</svg>
+ <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
+</svg>
\ No newline at end of file
<?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="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-</svg>
+ <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
+</svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style>
- <path d="M18 2L2.03 17.97l.97 1 4-4V19h1v-5.03l2.688-2.69c.81-.02 1.645.053 2.312.22V13c1.2 1.5 4.3 1.2 5 0V6c-.493.493-1.635.725-2.72.688L19 2.968zM7 4v7.03l6.438-6.436C11.778 3.61 8.71 3.934 8 5V4z"/>
-</svg>
+ <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
+</svg>
\ No newline at end of file
<?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="M18 2L2.03 17.97l.97 1 4-4V19h1v-5.03l2.688-2.69c.81-.02 1.645.053 2.312.22V13c1.2 1.5 4.3 1.2 5 0V6c-.493.493-1.635.725-2.72.688L19 2.968zM7 4v7.03l6.438-6.436C11.778 3.61 8.71 3.934 8 5V4z"/>
-</svg>
+ <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
+</svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style>
- <path d="M7 2l-1 .97 3.72 3.717C8.634 6.727 7.492 6.494 7 6v7c.7 1.2 3.8 1.5 5 0v-1.5c.667-.167 1.5-.24 2.313-.22L17 13.97V19h1v-4.03l4 4 .97-1zm7.22 2c-.952-.03-1.932.163-2.658.594L18 11.03V4h-1v1c-.4-.6-1.556-.963-2.78-1z"/>
-</svg>
+ <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
+</svg>
\ No newline at end of file
<?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 2l-1 .97 3.72 3.717C8.634 6.727 7.492 6.494 7 6v7c.7 1.2 3.8 1.5 5 0v-1.5c.667-.167 1.5-.24 2.313-.22L17 13.97V19h1v-4.03l4 4 .97-1zm7.22 2c-.952-.03-1.932.163-2.658.594L18 11.03V4h-1v1c-.4-.6-1.556-.963-2.78-1z"/>
-</svg>
+ <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
+</svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style>
- <path d="M12 6c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7m0-1c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-3 5h6v6H9z"/>
+ <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/>
</svg>
<?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="M12 6c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7m0-1c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-3 5h6v6H9z"/>
+ <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/>
</svg>