// Toggle search bar when the search icon is clicked document.querySelector("#search-icon").addEventListener("click", function (e) { e.preventDefault(); var searchBar = document.querySelector("#navbarSearch"); searchBar.classList.toggle("show"); }); window.onload = function () { var items = document.querySelectorAll(".dropdown-item, .nav-link"); var dummyContainer = document.createElement("div"); dummyContainer.style.position = "absolute"; dummyContainer.style.visibility = "hidden"; dummyContainer.style.whiteSpace = "nowrap"; // Ensure we measure full width document.body.appendChild(dummyContainer); var maxWidth = 0; items.forEach(function (item) { var clone = item.cloneNode(true); dummyContainer.appendChild(clone); var width = clone.offsetWidth; if (width > maxWidth) { maxWidth = width; } dummyContainer.removeChild(clone); }); document.body.removeChild(dummyContainer); // Store max width for later use window.navItemMaxWidth = maxWidth; }; // Show search results as user types in search box document.querySelector("#navbarSearchInput").addEventListener("input", function (e) { var searchText = e.target.value.toLowerCase(); var items = document.querySelectorAll(".dropdown-item, .nav-link"); var resultsBox = document.querySelector("#searchResults"); // Clear any previous results resultsBox.innerHTML = ""; items.forEach(function (item) { var titleElement = item.querySelector(".icon-text"); var iconElement = item.querySelector(".icon"); var itemHref = item.getAttribute("href"); var tags = item.getAttribute("data-bs-tags") || ""; // If no tags, default to empty string if (titleElement && iconElement && itemHref !== "#") { var title = titleElement.innerText; if ( (title.toLowerCase().indexOf(searchText) !== -1 || tags.toLowerCase().indexOf(searchText) !== -1) && !resultsBox.querySelector(`a[href="${item.getAttribute("href")}"]`) ) { var result = document.createElement("a"); result.href = itemHref; result.classList.add("dropdown-item"); var resultIcon = document.createElement("img"); resultIcon.src = iconElement.src; resultIcon.alt = "icon"; resultIcon.classList.add("icon"); result.appendChild(resultIcon); var resultText = document.createElement("span"); resultText.textContent = title; resultText.classList.add("icon-text"); result.appendChild(resultText); resultsBox.appendChild(result); } } }); // Set the width of the search results box to the maximum width resultsBox.style.width = window.navItemMaxWidth + "px"; });