summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2017-01-17 16:25:27 -0500
committerPhil Hughes <me@iamphill.com>2017-01-21 20:05:02 +0000
commit79659b30a76f20719c3d1ab1a3fc2f3d6e516a57 (patch)
tree4a5bb5d57f4d6d2a8a933961de111d38f0c41d3a
parent0ef587b6741d04d012561eab25362cb51685d682 (diff)
downloadgitlab-ce-79659b30a76f20719c3d1ab1a3fc2f3d6e516a57.tar.gz
Filtered search input click back at token
Allows the user to click back around the filtered search input to change the previously searched terms
-rw-r--r--app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es616
-rw-r--r--app/assets/javascripts/filtered_search/filtered_search_manager.js.es61
2 files changed, 15 insertions, 2 deletions
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 1cd0483877a..1d5c3490f09 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 4e8a7cfc940..ca8a185a102 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);
}