From: Moriel Schottlender Date: Fri, 21 Jul 2017 00:02:55 +0000 (-0700) Subject: RCFilters: Make sure single_option always has 1 item selected X-Git-Tag: 1.31.0-rc.0~2647^2 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22articles%22%2C%22id_article=%24id_article%22%29%20.%20%22?a=commitdiff_plain;h=44179c1afc79eb4a0bf9d26726eabc6284cd5203;p=lhc%2Fweb%2Fwiklou.git RCFilters: Make sure single_option always has 1 item selected Bug: T171081 Change-Id: I82b6cf9660dfd5ee006197504557be366e148244 --- diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js index 9a85291bc6..f4836aabf2 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js @@ -186,7 +186,8 @@ */ mw.rcfilters.dm.FilterGroup.prototype.onFilterItemUpdate = function ( item ) { // Update state - var active = this.areAnySelected(); + var changed = false, + active = this.areAnySelected(); if ( item.isSelected() && @@ -197,7 +198,26 @@ this.currSelected.toggleSelected( false ); } + // For 'single_option' groups, check if we just unselected all + // items. This should never be the result. If we did unselect + // all (like resetting all filters to false) then this group + // must choose its default item or the first item in the group if ( + this.getType() === 'single_option' && + !this.getItems().some( function ( filterItem ) { + return filterItem.isSelected(); + } ) + ) { + // Single option means there must be a single option + // selected, so we have to either select the default + // or select the first option + this.currSelected = this.getItemByParamName( this.defaultParams[ this.getName() ] ); + this.currSelected.toggleSelected( true ); + changed = true; + } + + if ( + changed || this.active !== active || this.currSelected !== item ) {