From 6d27a98f18222ef9b4201f86347119203eb05639 Mon Sep 17 00:00:00 2001 From: Stephane Bisson Date: Wed, 22 Mar 2017 08:56:50 -0400 Subject: [PATCH] RC Filters: Hooks for highlight guided tour Also prevent the reset/trash button from opening the popup. Bug: T151006 Change-Id: I16009c5d96f2cafddb8d545eedbf9ca1e11d06c6 --- .../src/mediawiki.rcfilters/mw.rcfilters.Controller.js | 4 ++++ .../ui/mw.rcfilters.ui.CapsuleItemWidget.js | 5 ++--- .../mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js | 10 ++++++++++ .../ui/mw.rcfilters.ui.FilterWrapperWidget.js | 3 +++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index 14eabe2e04..e334d5d223 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -256,6 +256,10 @@ mw.rcfilters.Controller.prototype.toggleHighlight = function () { this.filtersModel.toggleHighlight(); this.updateURL(); + + if ( this.filtersModel.isHighlightEnabled() ) { + mw.hook( 'RcFilters.highlight.enable' ).fire(); + } }; /** diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js index 728bb381dd..20eff8bec8 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js @@ -50,14 +50,13 @@ // Events this.model.connect( this, { update: 'onModelUpdate' } ); - this.closeButton.$element.on( 'mousedown', this.onCloseButtonMouseDown.bind( this ) ); - // Initialization this.$overlay.append( this.popup.$element ); this.$element .prepend( this.$highlight ) .attr( 'aria-haspopup', 'true' ) .addClass( 'mw-rcfilters-ui-capsuleItemWidget' ) + .on( 'mousedown', this.onMouseDown.bind( this ) ) .on( 'mouseenter', this.onMouseEnter.bind( this ) ) .on( 'mouseleave', this.onMouseLeave.bind( this ) ); @@ -84,7 +83,7 @@ * * @param {jQuery.Event} e Event */ - mw.rcfilters.ui.CapsuleItemWidget.prototype.onCloseButtonMouseDown = function ( e ) { + mw.rcfilters.ui.CapsuleItemWidget.prototype.onMouseDown = function ( e ) { e.stopPropagation(); }; diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js index e481bdeb3c..f4f460dca9 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js @@ -49,6 +49,7 @@ // Events this.resetButton.connect( this, { click: 'onResetButtonClick' } ); + this.resetButton.$element.on( 'mousedown', this.onResetButtonMouseDown.bind( this ) ); this.model.connect( this, { itemUpdate: 'onModelItemUpdate', highlightChange: 'onModelHighlightChange' @@ -166,6 +167,15 @@ } }; + /** + * Respond to mouse down event on the reset button to prevent the popup from opening + * + * @param {jQuery.Event} e Event + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.onResetButtonMouseDown = function ( e ) { + e.stopPropagation(); + }; + /** * Reevaluate the restore state for the widget between setting to defaults and clearing all filters */ diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js index 1fba18cb38..761fc6500b 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js @@ -98,6 +98,7 @@ this.filterPopup.select( filterName ); this.capsule.select( item ); + this.capsule.popup.toggle( true ); this.scrollToTop( filterWidget.$element ); }; @@ -114,6 +115,8 @@ this.capsule.resetSelection(); } } else { + mw.hook( 'RcFilters.popup.open' ).fire( this.filterPopup.getSelectedFilter() ); + this.scrollToTop( this.capsule.$element, 10 ); if ( !this.filterPopup.getSelectedFilter() ) { // No selection, scroll the popup list to top -- 2.20.1