mediawiki-extensions-WikiEd.../modules/insertlink/LinkTextField.js

59 lines
1.3 KiB
JavaScript
Raw Normal View History

/**
* @class
* @extends OO.ui.FieldLayout
* @constructor
*/
function LinkTextField() {
const input = new OO.ui.TextInputWidget( {
placeholder: mw.msg( 'wikieditor-toolbar-tool-link-int-text-tooltip' )
} );
input.connect( this, {
change: 'onInputChange'
} );
const config = {
align: 'top',
label: mw.msg( 'wikieditor-toolbar-tool-link-int-text' ),
classes: [ 'mw-wikiEditor-InsertLink-LinkTextField' ]
};
LinkTextField.super.call( this, input, config );
// Whether the user has changed the value
// (as opposed to the value being changed automatically
// because the link target field changed).
this.touched = false;
}
OO.inheritClass( LinkTextField, OO.ui.FieldLayout );
/**
* Set the input's value.
*
* @param {string} val The new value.
*/
LinkTextField.prototype.setValueIfUntouched = function ( val ) {
if ( !this.touched ) {
this.getField().setValue( val );
}
};
/**
* @param {boolean} touched
*/
LinkTextField.prototype.setTouched = function ( touched ) {
this.touched = touched;
};
/**
* If this input is active when it's being changed,
* set it as 'touched' so it won't change again if the title-lookup is changed.
*/
LinkTextField.prototype.onInputChange = function () {
if ( $.contains( this.$element[ 0 ], document.activeElement ) ) {
this.touched = true;
}
};
module.exports = LinkTextField;