X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.rcfilters%2Fui%2Fmw.rcfilters.ui.FilterTagMultiselectWidget.js;h=4e33be0252977da1f2876d5d6f29bf779919bb78;hb=6f6e7d6dfd5b4c5cdb4f1e4f80be77dd8ad71b57;hp=757a000387fd947f81596e2fe851ef8cfa1c7364;hpb=72bd7a4decb46653dc7acbf22ac01bceee275a4e;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js index 757a000387..4e33be0252 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js @@ -148,23 +148,18 @@ this.viewsSelectWidget = new OO.ui.ButtonSelectWidget( { classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-views-select-widget' ], items: [ - new OO.ui.ButtonOptionWidget( { - framed: false, - data: '', - disabled: true, - classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-views-select-widget-label' ], - label: mw.msg( 'rcfilters-view-advanced-filters-label' ) - } ), new OO.ui.ButtonOptionWidget( { framed: false, data: 'namespaces', icon: 'article', + label: mw.msg( 'namespaces' ), title: mw.msg( 'rcfilters-view-namespaces-tooltip' ) } ), new OO.ui.ButtonOptionWidget( { framed: false, data: 'tags', icon: 'tag', + label: mw.msg( 'tags-title' ), title: mw.msg( 'rcfilters-view-tags-tooltip' ) } ) ] @@ -290,6 +285,8 @@ mw.rcfilters.ui.FilterTagMultiselectWidget.parent.prototype.onMenuToggle.call( this ); if ( isVisible ) { + this.focus(); + mw.hook( 'RcFilters.popup.open' ).fire(); if ( !this.getMenu().getSelectedItem() ) { @@ -299,6 +296,8 @@ setTimeout( function () { this.getMenu().scrollToTop(); }.bind( this ), 0 ); } } else { + this.blur(); + // Clear selection this.selectTag( null ); @@ -342,6 +341,17 @@ this.input.$input.blur(); }; + /** + * @inheritdoc + */ + mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onMouseDown = function ( e ) { + if ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) { + this.menu.toggle(); + + return false; + } + }; + /** * @inheritdoc */ @@ -407,7 +417,10 @@ this.matchingQuery ? this.matchingQuery.getLabel() : '' ); this.savedQueryTitle.toggle( !!this.matchingQuery ); - this.saveQueryButton.toggle( !this.matchingQuery ); + this.saveQueryButton.setDisabled( !!this.matchingQuery ); + this.saveQueryButton.setTitle( !this.matchingQuery ? + mw.msg( 'rcfilters-savedqueries-add-new-title' ) : + mw.msg( 'rcfilters-savedqueries-already-saved' ) ); if ( this.matchingQuery ) { this.emphasize(); @@ -416,25 +429,23 @@ /** * Respond to model itemUpdate event + * fixme: when a new state is applied to the model this function is called 60+ times in a row * * @param {mw.rcfilters.dm.FilterItem} item Filter item model */ mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onModelItemUpdate = function ( item ) { - if ( item.getGroupModel().isHidden() ) { - return; - } - - if ( - item.isSelected() || - ( - this.model.isHighlightEnabled() && - item.isHighlightSupported() && - item.getHighlightColor() - ) - ) { - this.addTag( item.getName(), item.getLabel() ); - } else { - this.removeTagByData( item.getName() ); + if ( !item.getGroupModel().isHidden() ) { + if ( + item.isSelected() || + ( + this.model.isHighlightEnabled() && + item.getHighlightColor() + ) + ) { + this.addTag( item.getName(), item.getLabel() ); + } else { + this.removeTagByData( item.getName() ); + } } this.setSavedQueryVisibility(); @@ -486,6 +497,8 @@ } }.bind( this ) ); } + + this.setSavedQueryVisibility(); }; /** @@ -617,6 +630,8 @@ if ( filterItem ) { return new mw.rcfilters.ui.FilterTagItemWidget( this.controller, + this.model, + this.model.getInvertModel(), filterItem, { $overlay: this.$overlay