diff --git a/src/assets/js/search.js b/src/assets/js/search.js index 6cc5b06a6..8212c2dc0 100644 --- a/src/assets/js/search.js +++ b/src/assets/js/search.js @@ -27,6 +27,7 @@ const searchClearBtn = document.querySelector("#search__clear-btn"); const poweredByLink = document.querySelector(".search_powered-by-wrapper"); let activeIndex = -1; let searchQuery; +let caretPosition = 0; if (poweredByLink) { poweredByLink.addEventListener("focus", function () { @@ -210,13 +211,36 @@ searchInput.addEventListener("keyup", function () { searchQuery = query; }); -searchClearBtn.addEventListener("click", function (e) { +searchClearBtn.addEventListener("click", function () { searchInput.value = ""; searchInput.focus(); clearSearchResults(true); searchClearBtn.setAttribute("hidden", ""); }); +searchInput.addEventListener("blur", function () { + caretPosition = searchInput.selectionStart; +}); + +searchInput.addEventListener("focus", function () { + if (searchInput.selectionStart !== caretPosition) { + searchInput.setSelectionRange(caretPosition, caretPosition); + } +}); + +if (resultsElement) { + resultsElement.addEventListener("keydown", e => { + if ( + e.key !== "ArrowUp" && + e.key !== "ArrowDown" && + e.key !== "Tab" && + e.key !== "Shift" + ) { + searchInput.focus(); + } + }); +} + document.addEventListener("keydown", function (e) { const searchResults = Array.from( document.querySelectorAll(".search-results__item"),