@gravityforms/gulp-tasks
Version:
Configurable Gulp tasks for use in Gravity Forms projects.
11 lines (10 loc) • 3.13 kB
JavaScript
var searchData,searchId="LiBfqbJVcV",searchHash="#"+searchId,searchContainerID="#PkfLWpAbet",searchWrapperID="#iCxFxjkHbP",searchCloseButtonID="#VjLlGakifb",searchInputID="#vpcKVYIppa",searchResultCID="#fWwVHRuDuN";function hideSearch(){var e=document.querySelector(searchContainerID);window.location.hash===searchHash&&history.go(-1),window.onhashchange=null,e&&(e.style.display="none")}function listenKey(e){"Escape"===e.key&&(hideSearch(),window.removeEventListener("keyup",listenKey))}function showSearch(){var e=document.querySelector(searchContainerID),n=document.querySelector(searchInputID);window.onhashchange=hideSearch,window.location.hash!==searchHash&&history.pushState(null,null,searchHash),e&&(e.style.display="flex",window.addEventListener("keyup",listenKey)),n&&n.focus()}function fetchAllData(n={}){var e=baseURL+"data/search.json";fetch(e).then(function(e){return e.json()}).then(function(e){searchData=e.list,"function"==typeof n.onSuccess&&n.onSuccess(e.list)}).catch(function(e){console.error(e),"function"==typeof n.onError&&n.onError()})}function buildSearchResult(e){var n="";for(const r of e){var t=r.item;n+=`
<a href="${r.item.link.replace('<a href="',"").replace(/">.*/,"")}" class="search-result-item">
<div class="search-result-item-title">
${t.title}
</div>
<div class="search-result-item-p">
${t.description||"No description available."}
</div>
</a>
`}return n}function getSearchResult(e,n,t){var n={shouldSort:!0,threshold:.4,location:0,distance:100,maxPatternLength:32,minMatchCharLength:1,keys:n},r=Fuse.createIndex(n.keys,e),e=new Fuse(e,n,r).search(t);return e=20<e.length?e.slice(0,20):e}function debounce(t,r,a){var c;return function(){var e=this,n=arguments;clearTimeout(c),c=setTimeout(function(){c=null,a||t.apply(e,n)},r),a&&!c&&t.apply(e,n)}}function search(e){var n=e.target.value,t=document.querySelector(searchResultCID),r=["title","description"];if(t)if(n){if(!searchData)return t.innerHTML="Loading...",void fetchAllData({onSuccess:function(e){console.log("Onsucess"),a(getSearchResult(e,r,n))},onError:function(){t.innerHTML="Failed to load result."}});a(getSearchResult(searchData,r,n))}else t.innerHTML="Type anything to view search result";else console.error("Search result container not found");function a(e){0===e.length?t.innerHTML="No result found! Try some different combination.":(e=buildSearchResult(e),t.innerHTML=e)}}function onDomContentLoaded(){var e=document.querySelector(searchInputID),n=document.querySelectorAll(".search-button"),t=document.querySelector(searchContainerID),r=document.querySelector(searchWrapperID),a=document.querySelector(searchCloseButtonID),c=debounce(search,300);a&&a.addEventListener("click",hideSearch),n&&n.forEach(function(e){e.addEventListener("click",showSearch)}),t&&t.addEventListener("click",hideSearch),r&&r.addEventListener("click",function(e){e.stopPropagation()}),e&&e.addEventListener("keyup",c)}window.addEventListener("DOMContentLoaded",onDomContentLoaded),window.addEventListener("hashchange",function(){window.location.hash===searchHash&&showSearch()});