From d848f033fe71ca8e2520399ea6a5dc11473e68aa Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 23 May 2019 12:54:58 +0100 Subject: [PATCH] CopyTextLayout: Support multiline text Change-Id: I9049f5a1c0d88680fc4a174e390dd08e27c0eee2 --- .../mediawiki.widgets/mw.widgets.CopyTextLayout.css | 8 ++++++++ .../mediawiki.widgets/mw.widgets.CopyTextLayout.js | 13 ++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/resources/src/mediawiki.widgets/mw.widgets.CopyTextLayout.css b/resources/src/mediawiki.widgets/mw.widgets.CopyTextLayout.css index b336fa285f..f09128a0f0 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CopyTextLayout.css +++ b/resources/src/mediawiki.widgets/mw.widgets.CopyTextLayout.css @@ -9,3 +9,11 @@ /* TODO: This should be upstreamed to OOUI */ max-width: 50em; } + +.mw-widget-copyTextLayout-multiline-button { + display: block; + max-width: 50em; + margin-top: 0.5em; + /* Float to right of inline help */ + float: right; +} diff --git a/resources/src/mediawiki.widgets/mw.widgets.CopyTextLayout.js b/resources/src/mediawiki.widgets/mw.widgets.CopyTextLayout.js index 48c14b62b1..65e7eb782a 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CopyTextLayout.js +++ b/resources/src/mediawiki.widgets/mw.widgets.CopyTextLayout.js @@ -24,10 +24,12 @@ * defaults to 'mw-widgets-copytextlayout-copy-fail'. */ mw.widgets.CopyTextLayout = function MwWidgetsCopyTextLayout( config ) { + var TextClass; config = config || {}; // Properties - this.textInput = new OO.ui.TextInputWidget( $.extend( { + TextClass = config.multiline ? OO.ui.MultilineTextInputWidget : OO.ui.TextInputWidget; + this.textInput = new TextClass( $.extend( { value: config.copyText, readOnly: true }, config.textInput ) ); @@ -41,6 +43,15 @@ // Parent constructor mw.widgets.CopyTextLayout.super.call( this, this.textInput, this.button, config ); + // HACK: Remove classes which connect widgets when using + // a multiline text input. TODO: This should be handled in OOUI. + if ( config.multiline ) { + this.$input.removeClass( 'oo-ui-actionFieldLayout-input' ); + this.$button + .removeClass( 'oo-ui-actionFieldLayout-button' ) + .addClass( 'mw-widget-copyTextLayout-multiline-button' ); + } + // Events this.button.connect( this, { click: 'onButtonClick' } ); this.textInput.$input.on( 'click', this.onInputClick.bind( this ) ); -- 2.20.1