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; }