/*! * MediaWiki Widgets - TitlesMultiselectWidget class. * * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt * @license The MIT License (MIT); see LICENSE.txt */ ( function () { /** * @classdesc Titles multiselect widget. * * @class * @extends OO.ui.MenuTagMultiselectWidget * @mixes OO.ui.mixin.RequestManager * @mixes OO.ui.mixin.PendingElement * @mixes mw.widgets.TitleWidget * * @constructor * @description Create an mw.widgets.TitlesMultiselectWidget object. * @param {Object} [config] Configuration options */ mw.widgets.TitlesMultiselectWidget = function MwWidgetsTitlesMultiselectWidget( config ) { // Parent constructor mw.widgets.TitlesMultiselectWidget.super.call( this, $.extend( true, { allowEditTags: false }, config ) ); // Mixin constructors mw.widgets.TitleWidget.call( this, $.extend( true, { addQueryInput: true, highlightSearchQuery: false }, config ) ); OO.ui.mixin.RequestManager.call( this, config ); OO.ui.mixin.PendingElement.call( this, $.extend( true, {}, config, { $pending: this.$handle } ) ); // Validate from mw.widgets.TitleWidget this.input.setValidation( this.isQueryValid.bind( this ) ); // TODO limit max tag length to this.maxLength // Initialization this.$element .addClass( 'mw-widgets-titlesMultiselectWidget' ); this.menu.$element // For consistency, use the same classes as TitleWidget // expects for menu results .addClass( 'mw-widget-titleWidget-menu' ) .toggleClass( 'mw-widget-titleWidget-menu-withImages', this.showImages ) .toggleClass( 'mw-widget-titleWidget-menu-withDescriptions', this.showDescriptions ); if ( 'name' in config ) { // Use this instead of , because hidden inputs do not have separate // 'value' and 'defaultValue' properties. The script on Special:Preferences // (mw.special.preferences.confirmClose) checks this property to see if a field was changed. this.$hiddenInput = $( '