diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 58c419b3d..d8c7c36c5 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 f70987c66..14c4fe5e3 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 4be740196..1295527cf 100644 --- a/netbox/project-static/src/search.ts +++ b/netbox/project-static/src/search.ts @@ -7,38 +7,74 @@ import { isTruthy } from './util'; */ function quickSearchEventHandler(event: Event): void { const quicksearch = event.currentTarget as HTMLInputElement; - const clearbtn = document.getElementById("quicksearch_clear") as HTMLAnchorElement; + const clearbtn = document.getElementById('quicksearch_clear') as HTMLAnchorElement; if (isTruthy(clearbtn)) { - if (quicksearch.value === "") { - clearbtn.classList.add("invisible"); + if (quicksearch.value === '') { + clearbtn.classList.add('invisible'); } else { - clearbtn.classList.remove("invisible"); + clearbtn.classList.remove('invisible'); } } } +/** + * Clear the existing search parameters in the link to export Current View. + */ +function clearLinkParams(): void { + const link = document.getElementById('export_current_view') as HTMLLinkElement; + const 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 { + const quickSearchParameters = event.currentTarget as HTMLInputElement; + + // Clear the existing search parameters + clearLinkParams(); + + if (quickSearchParameters != null) { + const link = document.getElementById('export_current_view') as HTMLLinkElement; + const search_parameter = `q=${quickSearchParameters.value}`; + 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 HTMLAnchorElement; + const quicksearch = document.getElementById('quicksearch') as HTMLInputElement; + const clearbtn = document.getElementById('quicksearch_clear') as HTMLAnchorElement; if (isTruthy(quicksearch)) { - quicksearch.addEventListener("keyup", quickSearchEventHandler, { - passive: true - }) - quicksearch.addEventListener("search", quickSearchEventHandler, { - passive: true - }) + quicksearch.addEventListener('keyup', quickSearchEventHandler, { + passive: true, + }); + quicksearch.addEventListener('search', quickSearchEventHandler, { + passive: true, + }); + quicksearch.addEventListener('change', handleQuickSearchParams, { + passive: true, + }); + if (isTruthy(clearbtn)) { - clearbtn.addEventListener("click", async () => { - const search = new Event('search'); - quicksearch.value = ''; - await new Promise(f => setTimeout(f, 100)); - quicksearch.dispatchEvent(search); - }, { - passive: true - }) + clearbtn.addEventListener( + 'click', + async () => { + const search = new Event('search'); + quicksearch.value = ''; + await new Promise(f => setTimeout(f, 100)); + quicksearch.dispatchEvent(search); + clearLinkParams(); + }, + { + passive: true, + }, + ); } } } diff --git a/netbox/utilities/templates/buttons/export.html b/netbox/utilities/templates/buttons/export.html index 2085356fa..279757236 100644 --- a/netbox/utilities/templates/buttons/export.html +++ b/netbox/utilities/templates/buttons/export.html @@ -4,7 +4,7 @@ {% trans "Export" %}