X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.rcfilters%2Fui%2Fmw.rcfilters.ui.MenuSelectWidget.js;h=2aabe685a76129d0db371565f62be64d5e75bdee;hp=07d4506bcbb02d511d828f23b7ad79962ff47f1f;hb=3df3b575c6617df64ec98533cc7141bd2314e274;hpb=2c03d167fae59668053d895f0400641d4eeb2916
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..2aabe685a7 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();
@@ -190,6 +204,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 +306,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 +343,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;
}