{"version":3,"file":"scripts/4734.js","mappings":"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","sources":["webpack://wwwroot/./src/scripts/searchBox.js"],"sourcesContent":["// Get elements\r\nconst deleteTextBtn = document.getElementById(\"delete-text-button\");\r\nconst searchInput = document.getElementById(\"search-box-input\");\r\nconst expandSearchBtn = document.getElementById(\"expand-search-box\");\r\nconst searchBoxDropdown = document.getElementById(\"search-box-dropdown\");\r\nconst submitSearchBtnUtil = document.querySelector('.adm-button-searchbox');\r\nconst mainDarkBackground = searchBoxDropdown?.nextElementSibling;\r\nconst typeaheadContainerUtil = document.querySelector('.adm-div-search-util-typeahead-container');\r\nconst typeaheadScrollerUtil = typeaheadContainerUtil?.firstElementChild;\r\nconst searchBoxHeaderNav = document.querySelector(\"header\");\r\n\r\nfunction encodeHTML(string) {\r\n return string\r\n .replace(/&/g, '&')\r\n .replace(/'/g, '&apos')\r\n .replace(/\"/g, '"')\r\n .replace(/>/g, '>')\r\n .replace(/ {\r\n event.preventDefault();\r\n const searchBoxStyles = getComputedStyle(searchBoxDropdown);\r\n if (searchBoxStyles?.visibility === \"hidden\") {\r\n searchBoxDropdown.style.visibility = \"visible\";\r\n searchBoxDropdown.style.opacity = \"1\";\r\n searchBoxDropdown?.setAttribute('aria-expanded', 'true')\r\n searchBoxDropdown?.setAttribute('aria-hidden', 'false')\r\n mainDarkBackground?.classList.add('adm-div-dark-background-util-active');\r\n expandSearchBtn?.classList.add(\"adm-utilitybar-icon-link-selected\");\r\n searchBoxHeaderNav?.classList.add(\"scroll-listener\");\r\n setTimeout(() => {\r\n searchInput.focus();\r\n }, 100);\r\n } else {\r\n searchBoxDropdown.style.visibility = \"hidden\";\r\n searchBoxDropdown.style.opacity = \"0\";\r\n searchBoxDropdown?.setAttribute('aria-expanded', 'false')\r\n searchBoxDropdown?.setAttribute('aria-hidden', 'true')\r\n expandSearchBtn?.classList.remove(\"adm-utilitybar-icon-link-selected\");\r\n mainDarkBackground?.classList.remove('adm-div-dark-background-util-active');\r\n mainDarkBackground.classList.remove(\"adm-div-dark-background-util-mini\");\r\n typeaheadContainerUtil.classList.remove(\"adm-div-search-util-typeahead-container-active\");\r\n expandSearchBtn.blur();\r\n searchBoxHeaderNav?.classList.remove(\"scroll-listener\");\r\n }\r\n});\r\n\r\n// Display delete button on user input\r\nsearchInput?.addEventListener(\"input\", () => {\r\n if (searchInput.value === \"\" || searchInput.value.trim().length === 0) {\r\n deleteTextBtn.style.display = \"none\";\r\n } else {\r\n deleteTextBtn.style.display = \"block\";\r\n }\r\n});\r\n\r\n// Delete user input\r\ndeleteTextBtn?.addEventListener(\"click\", () => {\r\n searchInput.value = \"\";\r\n deleteTextBtn.style.display = \"none\";\r\n searchInput?.focus();\r\n\r\n // Close typeahead\r\n mainDarkBackground.classList.remove(\"adm-div-dark-background-util-mini\");\r\n mainDarkBackground?.classList.add('adm-div-dark-background-util-active');\r\n typeaheadContainerUtil.classList.remove(\"adm-div-search-util-typeahead-container-active\");\r\n});\r\n\r\n// Redirect user on search\r\nsubmitSearchBtnUtil?.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n let searchInputValue = searchInput?.value;\r\n let searchPageUrl = searchInput?.getAttribute(\"data-searchurl\");\r\n let encoded = encodeURIComponent(searchInputValue);\r\n\r\n window.location.href = searchPageUrl + \"?q=\" + encoded;\r\n})\r\n\r\n// Fire event on clicking outside Search Box\r\nwindow.addEventListener('click', (e) => {\r\n if (\r\n searchBoxHeaderNav?.classList.contains(\"scroll-listener\") &&\r\n !searchBoxHeaderNav?.classList.contains(\"mobile-header\") &&\r\n (!expandSearchBtn?.parentElement.contains(e.target) ||\r\n mainDarkBackground?.contains(e.target))\r\n ) {\r\n searchBoxHeaderNav?.classList.remove(\"scroll-listener\");\r\n }\r\n})\r\n\r\n\r\n// ----------- TYPEAHEAD -------------\r\nlet typeaheadTimeoutUtil;\r\nlet typeaheadOldResults = [];\r\n\r\n// Listen to any user input\r\nlet canTypeaheadShow = false;\r\nsearchInput?.addEventListener(\"input\", () => {\r\n const trigger = searchInput.getAttribute(\"data-type-ahead-trigger\");\r\n\r\n // Set a timeout after user stop input\r\n clearTimeout(typeaheadTimeoutUtil);\r\n canTypeaheadShow = true;\r\n typeaheadTimeoutUtil = setTimeout(async () => {\r\n\r\n // Get relevant data\r\n let searchInputValue = encodeURIComponent(encodeHTML(searchInput?.value));\r\n\r\n let reqPath = window.location.origin + \"/FloatingSearchBlock/TypeaheadSearch?query=\" + searchInputValue;\r\n\r\n if (searchInputValue.length >= +trigger) {\r\n\r\n try {\r\n let response = await fetch(reqPath, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json;charset=utf-8'\r\n }\r\n });\r\n\r\n let searchResults = await response.json();\r\n\r\n if (searchResults.results[0] && canTypeaheadShow) {\r\n displaySearchResults(searchResults);\r\n\r\n } else if (canTypeaheadShow) {\r\n\r\n // Remove old results\r\n for (let oldResult of typeaheadOldResults) {\r\n oldResult.remove();\r\n }\r\n\r\n // Close typeahead\r\n mainDarkBackground.classList.remove(\"adm-div-dark-background-util-mini\");\r\n mainDarkBackground?.classList.add('adm-div-dark-background-util-active');\r\n typeaheadContainerUtil.classList.remove(\"adm-div-search-util-typeahead-container-active\");\r\n }\r\n canTypeaheadShow = false;\r\n\r\n } catch (err) {\r\n // Error handling\r\n console.log('Something went wrong');\r\n }\r\n\r\n } else if (searchInputValue.length === 0) {\r\n\r\n // Close typeahead\r\n mainDarkBackground.classList.remove(\"adm-div-dark-background-util-mini\");\r\n mainDarkBackground?.classList.add('adm-div-dark-background-util-active');\r\n typeaheadContainerUtil.classList.remove(\"adm-div-search-util-typeahead-container-active\");\r\n }\r\n\r\n }, 1000);\r\n});\r\n\r\nfunction displaySearchResults(searchResults) {\r\n // Display typeahead container\r\n typeaheadContainerUtil.classList.add(\"adm-div-search-util-typeahead-container-active\");\r\n mainDarkBackground.classList.remove(\"adm-div-dark-background-util-active\");\r\n mainDarkBackground.classList.add(\"adm-div-dark-background-util-mini\");\r\n\r\n // Remove old results\r\n for (let oldResult of typeaheadOldResults) {\r\n oldResult.remove();\r\n }\r\n\r\n // Iterate through the results\r\n for (let result of searchResults.results) {\r\n const title = result.title || result.Title;\r\n const excerpt = result.excerpt || result.Excerpt;\r\n const link = result.pageUrl.linkUrl || result.pageUrl.LinkUrl;\r\n\r\n // Create an element for each result\r\n const resultBlock = document.createElement('div');\r\n resultBlock.className = \"adm-div-search-util-typeahead-block\";\r\n resultBlock.innerHTML = `\r\n \r\n

${title}

\r\n

${excerpt}

\r\n
\r\n `;\r\n typeaheadScrollerUtil.append(resultBlock);\r\n typeaheadOldResults.push(resultBlock);\r\n }\r\n}\r\n\r\nsearchBoxDropdown?.addEventListener(\"focusout\", () => {\r\n setTimeout(() => {\r\n if (!searchBoxDropdown?.contains(document.activeElement)) {\r\n canTypeaheadShow = false;\r\n clearTimeout(typeaheadTimeoutUtil);\r\n }\r\n }, 0);\r\n})"],"names":["deleteTextBtn","document","getElementById","searchInput","expandSearchBtn","searchBoxDropdown","submitSearchBtnUtil","querySelector","mainDarkBackground","nextElementSibling","typeaheadContainerUtil","typeaheadScrollerUtil","firstElementChild","searchBoxHeaderNav","typeaheadTimeoutUtil","addEventListener","event","preventDefault","searchBoxStyles","getComputedStyle","visibility","style","opacity","setAttribute","classList","add","setTimeout","focus","remove","blur","value","trim","length","display","searchInputValue","searchPageUrl","getAttribute","encoded","encodeURIComponent","window","location","href","e","contains","parentElement","target","typeaheadOldResults","canTypeaheadShow","trigger","clearTimeout","async","string","replace","reqPath","origin","response","fetch","method","headers","searchResults","json","results","oldResult","result","title","Title","excerpt","Excerpt","link","pageUrl","linkUrl","LinkUrl","resultBlock","createElement","className","innerHTML","append","push","displaySearchResults","err","console","log","activeElement"],"sourceRoot":""}