From f5d63b9e15d9f325ef4953b683cb67133b05e9ea Mon Sep 17 00:00:00 2001 From: Amaresh S M Date: Fri, 24 Jun 2022 11:38:54 -0700 Subject: [PATCH] docs: add listener only if element exists (#16045) * docs: add listener only if element exists * docs: check before accessing --- docs/src/assets/js/search.js | 57 +++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/docs/src/assets/js/search.js b/docs/src/assets/js/search.js index 14bf8f7c46e..e16458aa236 100644 --- a/docs/src/assets/js/search.js +++ b/docs/src/assets/js/search.js @@ -92,33 +92,36 @@ function displaySearchResults(results) { //----------------------------------------------------------------------------- // listen for input changes -searchInput.addEventListener('keyup', function (e) { - const query = searchInput.value; - - if(query.length) searchClearBtn.removeAttribute('hidden'); - else searchClearBtn.setAttribute('hidden', ''); - - if (query.length > 2) { - fetchSearchResults(query) - .then(displaySearchResults) - .catch(clearSearchResults); +if(searchInput) + searchInput.addEventListener('keyup', function (e) { + const query = searchInput.value; + + if(query.length) searchClearBtn.removeAttribute('hidden'); + else searchClearBtn.setAttribute('hidden', ''); + + if (query.length > 2) { + fetchSearchResults(query) + .then(displaySearchResults) + .catch(clearSearchResults); + + document.addEventListener('click', function(e) { + if(e.target !== resultsElement) clearSearchResults(); + }); + } else { + clearSearchResults(); + } + }); - document.addEventListener('click', function(e) { - if(e.target !== resultsElement) clearSearchResults(); - }); - } else { - clearSearchResults(); - } -}); +if(resultsElement) + resultsElement.addEventListener('keydown', function(e) { + if(e.key === "Escape") { + clearSearchResults(); + } + }, true); -resultsElement.addEventListener('keydown', function(e) { - if(e.key === "Escape") { +if(searchClearBtn) + searchClearBtn.addEventListener('click', function(e) { + searchInput.value = ''; + searchInput.focus(); clearSearchResults(); - } -}, true); - -searchClearBtn.addEventListener('click', function(e) { - searchInput.value = ''; - searchInput.focus(); - clearSearchResults(); -}); + });