mirror of https://github.com/onweru/compose.git

weru
07.03.2020 04c7575a3696c9b068f872c4e14649e651d2b21d
update search helper
1 files modified
52 ■■■■ changed files
assets/js/search.js 52 ●●●● patch | view | raw | blame | history
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);
});
  onEscape(clearSearchResults);
});
window.addEventListener('click', function(event){
  const target = event.target;
  const isSearch = target.closest('.search') || target.matches('.search');
  if(!isSearch && !searchPageElement) {
    clearSearchResults();
  }
});