X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.rcfilters%2Fui%2Fmw.rcfilters.ui.MenuSelectWidget.js;h=22c176f2825ee1849d73eb6e1bec6f2ca604afc3;hb=8743d28bf21cde3324cab4c0bbbdb23a1430e4e9;hp=07d4506bcbb02d511d828f23b7ad79962ff47f1f;hpb=06d611a3997a63fc54f7141ed9fa3105c9d0a8e4;p=lhc%2Fweb%2Fwiklou.git
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
index 07d4506bcb..22c176f282 100644
--- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
@@ -32,6 +32,7 @@
this.views = {};
this.userSelecting = false;
+ this.menuInitialized = false;
this.inputValue = '';
this.$overlay = config.$overlay || this.$element;
this.$body = $( '
' ).addClass( 'mw-rcfilters-ui-menuSelectWidget-body' );
@@ -129,13 +130,26 @@
};
/**
- * Respond to model initialize event. Populate the menu from the model
+ * @inheritdoc
*/
- mw.rcfilters.ui.MenuSelectWidget.prototype.onModelInitialize = function () {
+ mw.rcfilters.ui.MenuSelectWidget.prototype.toggle = function ( show ) {
+ this.lazyMenuCreation();
+ mw.rcfilters.ui.MenuSelectWidget.parent.prototype.toggle.call( this, show );
+ };
+
+ /**
+ * lazy creation of the menu
+ */
+ mw.rcfilters.ui.MenuSelectWidget.prototype.lazyMenuCreation = function () {
var widget = this,
viewGroupCount = {},
groups = this.model.getFilterGroups();
+ if ( this.menuInitialized ) {
+ return;
+ }
+
+ this.menuInitialized = true;
// Reset
this.clearItems();
@@ -172,6 +186,8 @@
currentItems.push(
new mw.rcfilters.ui.FilterMenuOptionWidget(
widget.controller,
+ widget.model,
+ widget.model.getInvertModel(),
filterItem,
{
$overlay: widget.$overlay
@@ -190,6 +206,13 @@
this.switchView( this.model.getCurrentView() );
};
+ /**
+ * Respond to model initialize event. Populate the menu from the model
+ */
+ mw.rcfilters.ui.MenuSelectWidget.prototype.onModelInitialize = function () {
+ this.menuInitialized = false;
+ };
+
/**
* Switch view
*
@@ -285,6 +308,7 @@
* @return {mw.rcfilters.ui.ItemMenuOptionWidget} Option widget
*/
mw.rcfilters.ui.MenuSelectWidget.prototype.getItemFromModel = function ( model ) {
+ this.lazyMenuCreation();
return this.views[ model.getGroupModel().getView() ].filter( function ( item ) {
return item.getName() === model.getName();
} )[ 0 ];
@@ -321,12 +345,12 @@
case OO.ui.Keys.UP:
case OO.ui.Keys.LEFT:
// Get the next item
- nextItem = this.getRelativeSelectableItem( currentItem, -1 );
+ nextItem = this.findRelativeSelectableItem( currentItem, -1 );
break;
case OO.ui.Keys.DOWN:
case OO.ui.Keys.RIGHT:
// Get the next item
- nextItem = this.getRelativeSelectableItem( currentItem, 1 );
+ nextItem = this.findRelativeSelectableItem( currentItem, 1 );
break;
}