From: Moriel Schottlender Date: Mon, 17 Apr 2017 21:19:31 +0000 (-0700) Subject: RCFilters UI: Prevent label from stealing focus on click X-Git-Tag: 1.31.0-rc.0~3486^2 X-Git-Url: https://git.heureux-cyclage.org/?a=commitdiff_plain;ds=sidebyside;h=c872b6438b052cfe03df834779b9a13581ccf7eb;p=lhc%2Fweb%2Fwiklou.git RCFilters UI: Prevent label from stealing focus on click The filter options' labels are set as "label for" the checkbox which means that by default they "give" the focus away to the checkbox when clicked. However, we don't want that behavior so that we can continue arrow movement through the filter option items rather than the DOM elements. Also, the checkbox prevents defaults on click as well as it is. Change-Id: I9758b0dacd8cd647ec5e3e623edc66e1d7f7420a --- diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js index b46c069823..bda537f1f1 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js @@ -59,10 +59,15 @@ label: $label, align: 'inline' } ); - // Event this.model.connect( this, { update: 'onModelUpdate' } ); this.model.getGroupModel().connect( this, { update: 'onGroupModelUpdate' } ); + // HACK: Prevent defaults on 'click' for the label so it + // doesn't steal the focus away from the input. This means + // we can continue arrow-movement after we click the label + // and is consistent with the checkbox *itself* also preventing + // defaults on 'click' as well. + layout.$label.on( 'click', false ); this.$element .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget' ) 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 246192970c..c09de18e20 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js @@ -206,6 +206,8 @@ */ mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onMenuChoose = function ( item ) { this.controller.toggleFilterSelect( item.model.getName() ); + + this.focus(); }; /**