diff --git a/modules/ui/mw.echo.ui.ConfirmationPopupWidget.js b/modules/ui/mw.echo.ui.ConfirmationPopupWidget.js index 840366caf..239f10456 100644 --- a/modules/ui/mw.echo.ui.ConfirmationPopupWidget.js +++ b/modules/ui/mw.echo.ui.ConfirmationPopupWidget.js @@ -2,12 +2,10 @@ /** * Confirmation overlay widget, especially for mobile display. * The behavior of this widget is to appear with a given confirmation - * message and then disapear after a given interval. + * message and then disappear after a given interval. * * @class * @extends OO.ui.Widget - * @mixins OO.ui.mixin.LabelElement - * @mixins OO.ui.mixin.IconElement * * @constructor * @param {Object} [config] Configuration object @@ -20,10 +18,8 @@ // Parent constructor mw.echo.ui.ConfirmationPopupWidget.parent.call( this, config ); - // Mixin constructor - OO.ui.mixin.LabelElement.call( this, config ); - OO.ui.mixin.IconElement.call( this, $.extend( { icon: 'doubleCheck' }, config ) ); - + this.labelWidget = new OO.ui.LabelWidget( config ); + this.iconWidget = new OO.ui.IconWidget( $.extend( { icon: 'doubleCheck' }, config ) ); this.interval = config.interval || 2000; this.$element @@ -31,7 +27,7 @@ .append( $( '
' ) .addClass( 'mw-echo-ui-confirmationPopupWidget-popup' ) - .append( this.$icon, this.$label ) + .append( this.iconWidget.$element, this.labelWidget.$element ) ) // We're using explicit hide here because the widget uses // animated fadeOut @@ -41,8 +37,6 @@ /* Initialization */ OO.inheritClass( mw.echo.ui.ConfirmationPopupWidget, OO.ui.Widget ); - OO.mixinClass( mw.echo.ui.ConfirmationPopupWidget, OO.ui.mixin.LabelElement ); - OO.mixinClass( mw.echo.ui.ConfirmationPopupWidget, OO.ui.mixin.IconElement ); /** * Show the widget and then animate its fade out. @@ -51,7 +45,7 @@ // OOUI removes the oo-ui-image-invert class when it is initialized // without explicit flag classes, so we have to re-add this when we // display the icon for the icon to be inverted - this.$icon.addClass( 'oo-ui-image-invert' ); + this.iconWidget.$element.addClass( 'oo-ui-image-invert' ); this.$element.show(); setTimeout( this.hide.bind( this ), this.interval ); }; @@ -64,4 +58,14 @@ mw.echo.ui.ConfirmationPopupWidget.prototype.hide = function () { this.$element.fadeOut(); }; + + /** + * Delegate to labelWidget.setLabel() + * + * @param {jQuery|string|OO.ui.HtmlSnippet|Function|null} label Label nodes; text; a function that returns nodes or + * text; or null for no label + */ + mw.echo.ui.ConfirmationPopupWidget.prototype.setLabel = function ( label ) { + this.labelWidget.setLabel( label ); + }; }( mediaWiki, jQuery ) );