RCFilters: Trim input text before evaluation
authorMoriel Schottlender <moriel@gmail.com>
Fri, 28 Jul 2017 07:28:40 +0000 (00:28 -0700)
committerMoriel Schottlender <moriel@gmail.com>
Fri, 28 Jul 2017 07:30:59 +0000 (00:30 -0700)
Make sure that trailing and leading spaces don't affect searching
and view switches.

Bug: T168225
Change-Id: I2379c7848887ef2cb2cafa9c3cfef8cbe5ed6a62

resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js

index 4ea1e03..57e618c 100644 (file)
                        items = this.getFiltersByView( view );
 
                // Normalize so we can search strings regardless of case and view
-               query = query.toLowerCase();
+               query = query.trim().toLowerCase();
                if ( view !== 'default' ) {
                        query = query.substr( 1 );
                }
index ac22258..c4d5877 100644 (file)
         * @param {string} value Value of the input
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onInputChange = function ( value ) {
-               var view = this.model.getViewByTrigger( value.substr( 0, 1 ) );
+               var view;
+
+               value = value.trim();
+
+               view = this.model.getViewByTrigger( value.substr( 0, 1 ) );
 
                this.controller.switchView( view );
        };
 
                        // Clear input if the only thing in the input is the prefix
                        if (
-                               this.input.getValue() === this.model.getViewTrigger( this.model.getCurrentView() )
+                               this.input.getValue().trim() === this.model.getViewTrigger( this.model.getCurrentView() )
                        ) {
                                // Clear the input
                                this.input.setValue( '' );
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.updateElementsForView = function () {
                var view = this.model.getCurrentView(),
-                       inputValue = this.input.getValue(),
+                       inputValue = this.input.getValue().trim(),
                        inputView = this.model.getViewByTrigger( inputValue.substr( 0, 1 ) );
 
                if ( inputView !== 'default' ) {
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onTagSelect = function ( tagItem ) {
                var widget = this,
                        menuOption = this.menu.getItemFromModel( tagItem.getModel() ),
-                       oldInputValue = this.input.getValue();
+                       oldInputValue = this.input.getValue().trim();
 
                this.menu.setUserSelecting( true );