From 4acd76bd9c73a5058d79c6ecf51cb37f0e8fae15 Mon Sep 17 00:00:00 2001 From: Amaresh S M <30730124+amareshsm@users.noreply.github.com> Date: Tue, 11 Feb 2025 21:08:09 +0530 Subject: [PATCH 1/2] fix: allow typing in search box while dropdown is open --- src/assets/js/search.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/assets/js/search.js b/src/assets/js/search.js index 6cc5b06a6..a58469c56 100644 --- a/src/assets/js/search.js +++ b/src/assets/js/search.js @@ -217,6 +217,23 @@ searchClearBtn.addEventListener("click", function (e) { searchClearBtn.setAttribute("hidden", ""); }); +if (resultsElement) { + resultsElement.addEventListener("keydown", e => { + if ( + e.key !== "ArrowUp" && + e.key !== "ArrowDown" && + e.key !== "Tab" && + e.key !== "Shift" + ) { + searchInput.focus(); + searchInput.setSelectionRange( + searchInput.value.length, + searchInput.value.length, + ); + } + }); +} + document.addEventListener("keydown", function (e) { const searchResults = Array.from( document.querySelectorAll(".search-results__item"), From 47506979519306d61619e2cf35dbc685c77e3c79 Mon Sep 17 00:00:00 2001 From: Amaresh S M <30730124+amareshsm@users.noreply.github.com> Date: Tue, 18 Feb 2025 23:40:23 +0530 Subject: [PATCH 2/2] restore caret position --- src/assets/js/search.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/assets/js/search.js b/src/assets/js/search.js index a58469c56..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,23 @@ 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 ( @@ -226,10 +237,6 @@ if (resultsElement) { e.key !== "Shift" ) { searchInput.focus(); - searchInput.setSelectionRange( - searchInput.value.length, - searchInput.value.length, - ); } }); }