summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorClement Ho <ClemMakesApps@gmail.com>2016-12-17 19:55:44 -0600
committerClement Ho <ClemMakesApps@gmail.com>2017-01-09 16:01:34 -0600
commitf72c1bf1c930b4dcb533202204d132f42246d99f (patch)
treedace0e643da0794dd2c7982b3429e2bc12413170 /app
parente197f27f19ab7995d280f67754ea16c2629701b2 (diff)
downloadgitlab-ce-f72c1bf1c930b4dcb533202204d132f42246d99f.tar.gz
Fix specs
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/filtered_search/dropdown_utils.js.es613
-rw-r--r--app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es615
2 files changed, 20 insertions, 8 deletions
diff --git a/app/assets/javascripts/filtered_search/dropdown_utils.js.es6 b/app/assets/javascripts/filtered_search/dropdown_utils.js.es6
index d246000ff52..0c0d24d4de8 100644
--- a/app/assets/javascripts/filtered_search/dropdown_utils.js.es6
+++ b/app/assets/javascripts/filtered_search/dropdown_utils.js.es6
@@ -42,12 +42,17 @@
static filterHint(item, query) {
const updatedItem = item;
- const { lastToken } = gl.FilteredSearchTokenizer.processTokens(query);
+ let { lastToken } = gl.FilteredSearchTokenizer.processTokens(query);
+ lastToken = lastToken || '';
- if (!lastToken) {
+ if (!lastToken || query.split('').last() === ' ') {
updatedItem.droplab_hidden = false;
- } else {
- updatedItem.droplab_hidden = updatedItem.hint.indexOf(lastToken.toLowerCase()) === -1;
+ } else if (lastToken) {
+ const split = lastToken.split(':');
+ const tokenName = split[0].split(' ').last();
+
+ const match = updatedItem.hint.indexOf(tokenName.toLowerCase()) === -1;
+ updatedItem.droplab_hidden = tokenName ? match : false;
}
return updatedItem;
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 b67176267fb..e9f1fbf63ed 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
@@ -62,6 +62,7 @@
const value = input.value;
const hasExistingValue = value.length !== 0;
const { lastToken, searchToken } = gl.FilteredSearchTokenizer.processTokens(value);
+ const lastSearchToken = searchToken.split(' ').last();
// Find out what part of the token value the user has typed
// and remove it from input before appending the selected token value
@@ -74,8 +75,8 @@
// Add 2 length to account for the length of the front and back quotes
const lengthToRemove = hasQuotes ? lastTokenString.length + 2 : lastTokenString.length;
input.value = value.slice(0, -1 * (lengthToRemove));
- } else if (searchToken !== '' && word.indexOf(searchToken) !== -1) {
- input.value = value.slice(0, -1 * searchToken.length);
+ } else if (searchToken !== '' && word.indexOf(lastSearchToken) !== -1) {
+ input.value = value.slice(0, -1 * lastSearchToken.length);
}
input.value += hasExistingValue && addSpace ? ` ${word}` : word;
@@ -150,11 +151,17 @@
const { lastToken, searchToken } = this.tokenizer
.processTokens(this.filteredSearchInput.value);
- if (lastToken === searchToken) {
+ if (this.filteredSearchInput.value.split('').last() === ' ') {
+ this.updateCurrentDropdownOffset();
+ }
+
+ if (lastToken === searchToken && lastToken !== null) {
// Token is not fully initialized yet because it has no value
// Eg. token = 'label:'
+
const split = lastToken.split(':');
- this.loadDropdown(split.length > 1 ? split[0] : '');
+ const dropdownName = split[0].split(' ').last();
+ this.loadDropdown(split.length > 1 ? dropdownName : '');
} else if (lastToken) {
// Token has been initialized into an object because it has a value
this.loadDropdown(lastToken.key);