From: Moriel Schottlender Date: Thu, 28 Feb 2019 19:21:02 +0000 (-0800) Subject: NamespaceMultiselectWidget: Allow filtering by namespace ID or label X-Git-Tag: 1.34.0-rc.0~2576^2 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22lang_raccourcis%22%2C%22module=%24nom_module%22%29%20.%20%22?a=commitdiff_plain;h=6ba615683cb9106f8658082061b2c9f255daf7fa;p=lhc%2Fweb%2Fwiklou.git NamespaceMultiselectWidget: Allow filtering by namespace ID or label If the user types in a namespace ID, the menu should display the corresponding namespace value, and allow its addition. Depends on I9bc411e844d16034d8 being available in the OOUI release. Bug: T216078 Depends-On: I9bc411e844d16034d86e0f8ed28fa20356a78bdf Change-Id: Ifa113241b391a32ce64c0c2b1a6d55d1ef64de97 --- diff --git a/resources/Resources.php b/resources/Resources.php index 65e6855ef8..167d591448 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -2800,6 +2800,7 @@ return [ 'mediawiki.widgets.NamespacesMultiselectWidget' => [ 'scripts' => [ 'resources/src/mediawiki.widgets/mw.widgets.NamespacesMultiselectWidget.js', + 'resources/src/mediawiki.widgets/mw.widgets.NamespacesMenuOptionWidget.js', ], 'dependencies' => [ 'oojs-ui-widgets', diff --git a/resources/src/mediawiki.widgets/mw.widgets.NamespacesMenuOptionWidget.js b/resources/src/mediawiki.widgets/mw.widgets.NamespacesMenuOptionWidget.js new file mode 100644 index 0000000000..24f52afbac --- /dev/null +++ b/resources/src/mediawiki.widgets/mw.widgets.NamespacesMenuOptionWidget.js @@ -0,0 +1,37 @@ +/*! + * MediaWiki Widgets - NamespacesMenuOptionWidget class. + * + * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt + * @license The MIT License (MIT); see LICENSE.txt + */ +( function () { + + /** + * Creates an mw.widgets.NamespacesMenuOptionWidget object + * + * This MenuOptionWidget widget returns an item match text that includes + * both the label and the data, so the menu can filter on either. + * + * @class + * @extends OO.ui.MenuOptionWidget + * + * @constructor + * @param {Object} [config] Configuration options + */ + mw.widgets.NamespacesMenuOptionWidget = function MwWidgetsNamespacesMenuOptionWidget( config ) { + // Parent + mw.widgets.NamespacesMenuOptionWidget.parent.call( this, config ); + }; + + /* Setup */ + + OO.inheritClass( mw.widgets.NamespacesMenuOptionWidget, OO.ui.MenuOptionWidget ); + + /** + * @inheritdoc + */ + mw.widgets.NamespacesMenuOptionWidget.prototype.getMatchText = function () { + return this.getData() + ' ' + this.getLabel(); + }; + +}() ); diff --git a/resources/src/mediawiki.widgets/mw.widgets.NamespacesMultiselectWidget.js b/resources/src/mediawiki.widgets/mw.widgets.NamespacesMultiselectWidget.js index e5adc292ed..d4e9b1c9f2 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.NamespacesMultiselectWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.NamespacesMultiselectWidget.js @@ -38,7 +38,10 @@ { clearInputOnChoose: true, inputPosition: 'inline', - allowEditTags: false + allowEditTags: false, + menu: { + filterMode: 'substring' + } }, config, { @@ -84,4 +87,17 @@ OO.inheritClass( mw.widgets.NamespacesMultiselectWidget, OO.ui.MenuTagMultiselectWidget ); OO.mixinClass( mw.widgets.NamespacesMultiselectWidget, OO.ui.mixin.PendingElement ); + /* Methods */ + + /** + * @inheritdoc + */ + mw.widgets.NamespacesMultiselectWidget.prototype.createMenuOptionWidget = function ( data, label, icon ) { + return new mw.widgets.NamespacesMenuOptionWidget( { + data: data, + label: label || data, + icon: icon + } ); + }; + }() );