From 04c7575a3696c9b068f872c4e14649e651d2b21d Mon Sep 17 00:00:00 2001
From: weru <fromweru@gmail.com>
Date: Mon, 07 Dec 2020 12:03:30 +0000
Subject: [PATCH] update search helper

---
 assets/js/search.js |   52 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/assets/js/search.js b/assets/js/search.js
index 3a95ddc..66e9531 100644
--- a/assets/js/search.js
+++ b/assets/js/search.js
@@ -39,7 +39,12 @@
       resultsTitle.innerText = searchResultsLabel;
     }
     resultsFragment.appendChild(resultsTitle);
-    results.slice(0,4).forEach(function(result){
+    if(!searchPageElement) {
+      results = results.slice(0,8);
+    } else {
+      results = results.slice(0,12);
+    }
+    results.forEach(function(result){
       let item = createEl('a');
       item.href = `${result.link}?query=${query}`;
       item.className = 'search_result';
@@ -61,14 +66,13 @@
       resultsFragment.appendChild(item);
     });
   } else {
-    showResults.innerHTML = (query.length > 1) ? `<span class="search_result">${noMatchesFound}</span>` : `<label for="find" class="search_result">${typeToSearch}</label>`;
+    showResults.innerHTML = (query.length) ? `<span class="search_result">${noMatchesFound}</span>` : `<label for="find" class="search_result">${typeToSearch}</label>`;
   }
   showResults.appendChild(resultsFragment);
 }
 
 function search(searchTerm, passive = false) {
-  const minimumSearchTermLength = 2;
-  if(searchTerm.length >= minimumSearchTermLength) {
+  if(searchTerm.length) {
     let rawResults = index.search(searchTerm);
     rawResults = rawResults.map(function(result){
       const score = result.score;
@@ -96,7 +100,7 @@
     if(!searchPageElement) {
       searchField.addEventListener('search', function(){
         const searchTerm = searchField.value.trim().toLowerCase();
-        if(searchTerm.length > 1)  {
+        if(searchTerm.length)  {
           window.location.href = `${parentURL}/search/?query=${searchTerm}`;
         }
       });
@@ -131,6 +135,32 @@
   }
 }
 
+function hasSearchResults() {
+  const searchResults = elem('.results');
+  const body = searchResults.innerHTML.length;
+  return [searchResults, body]
+}
+
+function clearSearchResults() {
+  let searchResults = hasSearchResults();
+  let actionable = searchResults[1];
+  if(actionable) {
+    searchResults = searchResults[0];
+    searchResults.innerHTML = "";
+    // clear search field
+    const searchField = elem('.search_field');
+    searchField.value = "";
+  }
+}
+
+function onEscape(fn){
+  window.addEventListener('keydown', function(event){
+    if(event.code === "Escape") {
+      fn();
+    }
+  });
+}
+
 let main = elem('main');
 if(!main) {
   main = elem('.main');
@@ -141,4 +171,14 @@
   passiveSearch();
 
   wrapText(findQuery(), main);
-});
\ No newline at end of file
+
+  onEscape(clearSearchResults);
+});
+
+window.addEventListener('click', function(event){
+  const target = event.target;
+  const isSearch = target.closest('.search') || target.matches('.search');
+  if(!isSearch && !searchPageElement) {
+    clearSearchResults();
+  }
+});

--
Gitblit v1.10.0