PageSourceSearch

https://www.damon.nl/templates/default/scripts/search-autocomplete.min.js

js damon.nl collected 2026-10-02 11:24:30 UTC 4,911 bytes, 1 lines download raw bytes

1function showLoading(searchDropdown){clearDropdown(searchDropdown);const item=document.createElement("div");item.classList.add("dropdown-item","searchDropdown__item","searchDropdown__item--muted");const loading=document.createElement("span");loading.classList.add("searchDropdown__loading");const spinner=document.createElement("span");spinner.classList.add("spinner-border","spinner-border-sm"),spinner.setAttribute("role","status"),spinner.setAttribute("aria-hidden","true");const text=document.createElement("span");text.textContent="Zoeken...",loading.appendChild(spinner),loading.appendChild(text),item.appendChild(loading),searchDropdown.appendChild(item),showDropdown(searchDropdown)}function showError(searchDropdown,message){clearDropdown(searchDropdown);const errorItem=document.createElement("div");errorItem.classList.add("dropdown-item","searchDropdown__item","searchDropdown__item--danger"),errorItem.textContent=message,searchDropdown.appendChild(errorItem),showDropdown(searchDropdown)}function showDropdown(searchDropdown){searchDropdown.style.display="block",searchDropdown.classList.add("show")}function hideDropdown(searchDropdown){searchDropdown.style.display="none",searchDropdown.classList.remove("show")}function clearDropdown(searchDropdown){for(;searchDropdown.firstChild;)searchDropdown.removeChild(searchDropdown.firstChild)}document.addEventListener("DOMContentLoaded",function(){const searchForms=document.querySelectorAll(".searchForm");searchForms.length&&searchForms.forEach(function(searchForm){function performSearch(query){const requestId=++currentRequestId;showLoading(searchDropdown),ajax.get("/app/components/com_zoeken/helpers/ajax.php",{q:query},function(responseText){if(requestId!==currentRequestId)return;let results=[];try{results=JSON.parse(responseText)}catch(e){return void showError(searchDropdown,"Er ging iets mis bij het laden van de resultaten.")}renderResults(results)})}function renderResults(results){if(clearDropdown(searchDropdown),!Array.isArray(results)||0===results.length){const noResultsItem=createMessageItem("Geen resultaten gevonden","searchDropdown__item--muted");return searchDropdown.appendChild(noResultsItem),void showDropdown(searchDropdown)}results.forEach(function(item){const resultItem=createResultItem(item);searchDropdown.appendChild(resultItem)}),showDropdown(searchDropdown)}function createResultItem(item){const button=document.createElement("button");if(button.type="button",button.classList.add("dropdown-item","searchDropdown__item"),item.image){const image=document.createElement("img");image.classList.add("searchDropdown__image"),image.src=item.image,image.alt=item.title||"",image.loading="lazy",button.appendChild(image)}const content=document.createElement("span");content.classList.add("searchDropdown__content");const title=document.createElement("span");if(title.classList.add("searchDropdown__title"),title.textContent=item.title||"",content.appendChild(title),item.subtitle){const subtitle=document.createElement("span");subtitle.classList.add("searchDropdown__subtitle"),subtitle.textContent=item.subtitle,content.appendChild(subtitle)}return button.appendChild(content),button.addEventListener("click",function(){selectResult(item)}),button}function createMessageItem(message,extraClassName){const item=document.createElement("div");return item.classList.add("dropdown-item","searchDropdown__item"),extraClassName&&item.classList.add(extraClassName),item.textContent=message,item}function selectResult(item){searchInput.value=item.title||"",hideDropdown(searchDropdown),item.url&&(window.location.href=item.url)}const searchInput=searchForm.querySelector('input[name="search"]'),searchDropdown=searchForm.querySelector(".searchDropdown");if(!searchInput||!searchDropdown)return;let searchTimer=null,currentRequestId=0;searchInput.addEventListener("input",function(){const query=searchInput.value.trim();if(clearTimeout(searchTimer),query.length<3)return clearDropdown(searchDropdown),void hideDropdown(searchDropdown);searchTimer=setTimeout(function(){performSearch(query)},250)}),searchInput.addEventListener("focus",function(){const query=searchInput.value.trim();query.length>=3&&searchDropdown.childNodes.length>0?showDropdown(searchDropdown):query.length>=3&&performSearch(query)}),searchInput.addEventListener("click",function(){const query=searchInput.value.trim();query.length>=3&&searchDropdown.childNodes.length>0?showDropdown(searchDropdown):query.length>=3&&performSearch(query)}),document.addEventListener("click",function(event){searchForm.contains(event.target)||hideDropdown(searchDropdown)}),searchInput.addEventListener("blur",function(){setTimeout(function(){searchDropdown.matches(":hover")||hideDropdown(searchDropdown)},150)}),searchDropdown.addEventListener("click",function(event){event.stopPropagation()}),searchForm.addEventListener("submit",function(){hideDropdown(searchDropdown)})})});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.