From 67be46e9a9e2b91c8954bc6d77869006f62b1b37 Mon Sep 17 00:00:00 2001 From: Antoine M Date: Wed, 8 Apr 2026 15:41:08 +0200 Subject: [PATCH] FEATURE Add reset search button functionality and improve event listener checks for select elements in archives component --- resources/js/archives/archives.ts | 42 +++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/resources/js/archives/archives.ts b/resources/js/archives/archives.ts index 65c27a4..ca56fc6 100644 --- a/resources/js/archives/archives.ts +++ b/resources/js/archives/archives.ts @@ -22,6 +22,8 @@ export default function archivesInit() { ) as HTMLSelectElement; const rechercheInput = toolbar.querySelector('.search-bar input') as HTMLInputElement; + const resetSearchButton = toolbar.querySelector('#reset-search') as HTMLButtonElement; + // Évite les courses: annule les requêtes précédentes et ignore les réponses obsolètes let currentAbortController: AbortController | null = null; let lastRequestId = 0; @@ -110,20 +112,34 @@ export default function archivesInit() { }); } - auteursSelect.addEventListener('change', (e) => { - hydratePosts(); - }); + if (auteursSelect) { + auteursSelect.addEventListener('change', (e) => { + hydratePosts(); + }); + } - etiquettesSelect.addEventListener('change', (e) => { - hydratePosts(); - }); - - sortBySelect.addEventListener('change', (e) => { - hydratePosts(); // immédiat pour le tri - }); - rechercheInput.addEventListener('input', (e) => { - hydratePostsDebounced(); // debounce pour la saisie rapide - }); + if (etiquettesSelect) { + etiquettesSelect.addEventListener('change', (e) => { + hydratePosts(); + }); + } + if (sortBySelect) { + sortBySelect.addEventListener('change', (e) => { + hydratePosts(); // immédiat pour le tri + }); + } + if (rechercheInput) { + rechercheInput.addEventListener('input', (e) => { + hydratePostsDebounced(); // debounce pour la saisie rapide + }); + if (resetSearchButton) { + resetSearchButton.addEventListener('click', (e) => { + e.preventDefault(); + rechercheInput.value = ''; + hydratePosts(); + }); + } + } handleFilterPostsBy(); postGridToolbarActions.addEventListener('click', (e) => {