diff --git a/app/assets/javascripts/filtered_search/dropdown_utils.js.es6 b/app/assets/javascripts/filtered_search/dropdown_utils.js.es6 index dcab32fd38b..0027f79aecb 100644 --- a/app/assets/javascripts/filtered_search/dropdown_utils.js.es6 +++ b/app/assets/javascripts/filtered_search/dropdown_utils.js.es6 @@ -89,9 +89,15 @@ static getInputSelectionPosition(input) { const inputValue = input.value; const selectionStart = input.selectionStart; - const left = inputValue.slice(0, selectionStart + 1).search(/\S+$/); + let left = inputValue.slice(0, selectionStart + 1).search(/\S+$/); const right = inputValue.slice(selectionStart).search(/\s/); + if (selectionStart === 0) { + left = 0; + } else if (selectionStart === inputValue.length && left < 0) { + left = inputValue.length; + } + return { left, right, 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 031e4f9b127..9edb6ade4f2 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,16 +62,13 @@ // Get the string to replace const selectionStart = input.selectionStart; - let { left, right } = gl.DropdownUtils.getInputSelectionPosition(input); + const { left } = gl.DropdownUtils.getInputSelectionPosition(input); + let { right } = gl.DropdownUtils.getInputSelectionPosition(input); if (right < 0) { right = inputValue.length; } - if (left < 0) { - left += 1; - } - input.value = `${inputValue.substr(0, left)}${word}${inputValue.substr(right + selectionStart)}`; gl.FilteredSearchDropdownManager.updateInputCaretPosition(selectionStart, input); }