diff --git a/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es6 b/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es6 index 1cd0483877a297f66b9b92552e29a91722d719ad..1d5c3490f091829ab29993cfe7c2c950f77e5ee9 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es6 +++ b/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es6 @@ -92,7 +92,7 @@ const filterIconPadding = 27; const offset = gl.text - .getTextWidth(this.filteredSearchInput.value, this.font) + filterIconPadding; + .getTextWidth(this.getSearchInput(), this.font) + filterIconPadding; this.mapping[key].reference.setOffset(offset); } @@ -148,7 +148,7 @@ setDropdown() { const { lastToken, searchToken } = this.tokenizer - .processTokens(this.filteredSearchInput.value); + .processTokens(this.getSearchInput()); if (this.filteredSearchInput.value.split('').last() === ' ') { this.updateCurrentDropdownOffset(); @@ -169,6 +169,18 @@ } } + getSearchInput() { + const selectionStart = this.filteredSearchInput.selectionStart; + const inputValue = this.filteredSearchInput.value; + const rightPos = inputValue.slice(selectionStart).search(/\s/); + + if (rightPos < 0) { + return inputValue; + } + + return inputValue.slice(0, rightPos + selectionStart + 1).trim(); + } + resetDropdowns() { // Force current dropdown to hide this.mapping[this.currentDropdown].reference.hideDropdown(); diff --git a/app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 b/app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 index 4e8a7cfc940c87b12db7183f949a333b76b4349e..ca8a185a1029b33c64f8e0efcd7d54bd10b9c467 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 +++ b/app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 @@ -35,6 +35,7 @@ this.filteredSearchInput.addEventListener('input', this.toggleClearSearchButtonWrapper); this.filteredSearchInput.addEventListener('keydown', this.checkForEnterWrapper); this.filteredSearchInput.addEventListener('keyup', this.checkForBackspaceWrapper); + this.filteredSearchInput.addEventListener('click', this.setDropdownWrapper); this.clearSearchButton.addEventListener('click', this.clearSearchWrapper); }