diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 45ec6b5e7..5d1396b83 100644 Binary files a/netbox/project-static/dist/netbox.js and b/netbox/project-static/dist/netbox.js differ diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index a32d864d4..49fd205f8 100644 Binary files a/netbox/project-static/dist/netbox.js.map and b/netbox/project-static/dist/netbox.js.map differ diff --git a/netbox/project-static/src/search.ts b/netbox/project-static/src/search.ts index dc0325e24..1c8ae8da6 100644 --- a/netbox/project-static/src/search.ts +++ b/netbox/project-static/src/search.ts @@ -1,6 +1,5 @@ import { isTruthy } from './util'; - /** * Show/hide quicksearch clear button. * @@ -10,52 +9,66 @@ function quickSearchEventHandler(event: Event): void { const quicksearch = event.currentTarget as HTMLInputElement; const inputgroup = quicksearch.parentElement as HTMLDivElement; if (isTruthy(inputgroup)) { - if (quicksearch.value === '') { - inputgroup.classList.add('hide-last-child'); + if (quicksearch.value === "") { + inputgroup.classList.add("hide-last-child"); + clearLinkParams(); } else { - inputgroup.classList.remove('hide-last-child'); + inputgroup.classList.remove("hide-last-child"); } } } +/** + * Clear the existing search parameters in the link to export Current View. + */ +function clearLinkParams(): void { + const link = document.getElementById("current_view") as HTMLLinkElement; + let linkUpdated = link?.href.split("&")[0]; + link.setAttribute("href", linkUpdated); +} + /** * Update the Export View link to add the Quick Search parameters. * @param event */ function handleQuickSearchParams(event: Event): void { - console.log('getParams'); const quickSearchParameters = event.currentTarget as HTMLInputElement; - const link = document.getElementById('current_view') as HTMLLinkElement; + + // Clear the existing search parameters + clearLinkParams(); + if (quickSearchParameters != null) { + const link = document.getElementById("current_view") as HTMLLinkElement; const search_parameter = `q=${quickSearchParameters.value}`; - const linkUpdated = link?.href + '&' + search_parameter; - link.setAttribute('href', linkUpdated); + const linkUpdated = link?.href + "&" + search_parameter; + link.setAttribute("href", linkUpdated); } + } /** * Initialize Quicksearch Event listener/handlers. */ export function initQuickSearch(): void { - const quicksearch = document.getElementById('quicksearch') as HTMLInputElement; - const clearbtn = document.getElementById('quicksearch_clear') as HTMLButtonElement; + const quicksearch = document.getElementById("quicksearch") as HTMLInputElement; + const clearbtn = document.getElementById("quicksearch_clear") as HTMLButtonElement; if (isTruthy(quicksearch)) { - quicksearch.addEventListener('keyup', quickSearchEventHandler, { + quicksearch.addEventListener("keyup", quickSearchEventHandler, { passive: true, }); - quicksearch.addEventListener('search', quickSearchEventHandler, { + quicksearch.addEventListener("search", quickSearchEventHandler, { passive: true, }); - quicksearch.addEventListener('change', handleQuickSearchParams); + quicksearch.addEventListener("change", handleQuickSearchParams); if (isTruthy(clearbtn)) { clearbtn.addEventListener( - 'click', + "click", async () => { - const search = new Event('search'); - quicksearch.value = ''; + const search = new Event("search"); + quicksearch.value = ""; await new Promise(f => setTimeout(f, 100)); quicksearch.dispatchEvent(search); }, diff --git a/netbox/templates/inc/table_controls_htmx.html b/netbox/templates/inc/table_controls_htmx.html index eb5a241e9..053a25eca 100644 --- a/netbox/templates/inc/table_controls_htmx.html +++ b/netbox/templates/inc/table_controls_htmx.html @@ -6,7 +6,7 @@
+ hx-trigger="keyup changed delay:500ms, search" />