From 172502ae0a699a46e3b67024288c4cde35674eab Mon Sep 17 00:00:00 2001 From: Eric Gesemann Date: Tue, 9 Jun 2026 15:08:42 +0200 Subject: [PATCH] Update FilterFormFactory and flare.js to enhance query handling --- public/frontend/flare.js | 9 +++++---- src/Form/Factory/FilterFormFactory.php | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/public/frontend/flare.js b/public/frontend/flare.js index f7711857..77738805 100644 --- a/public/frontend/flare.js +++ b/public/frontend/flare.js @@ -1,12 +1,13 @@ -((d, a, b, l) => { - b = () => d.querySelectorAll(`form${a}, ${a} form`).forEach(f => { +((d, s, q, b, l) => { + b = () => d.querySelectorAll(`form${s}, ${s} form`).forEach(f => { if (f.method?.toUpperCase?.() !== 'GET') return; l = add => (e => { if (!f.action || !f.name) return; e.preventDefault(); + const n = Array.from(f.querySelectorAll(q) || []).map(e => e.name); const url = new URL(f.action), del = []; for (const k of url.searchParams.keys()) { - if (k.startsWith(f.name + '[')) del.push(k); + if (k.startsWith(f.name + '[') || n.includes(k)) del.push(k); } del.forEach(key => url.searchParams.delete(key)); add ? new FormData(f).forEach((v, k) => { @@ -18,4 +19,4 @@ f.addEventListener('reset', l(0)); }); d.readyState === 'loading' ? d.addEventListener('DOMContentLoaded', b) : b(); -})(document, '[data-flare-keep-query]'); \ No newline at end of file +})(document, '[data-flare-form="keep-query"]', '[data-flare-form="query-field"]'); \ No newline at end of file diff --git a/src/Form/Factory/FilterFormFactory.php b/src/Form/Factory/FilterFormFactory.php index d1746100..af1965de 100644 --- a/src/Form/Factory/FilterFormFactory.php +++ b/src/Form/Factory/FilterFormFactory.php @@ -41,7 +41,7 @@ public function create(ListSpecification $list, FormContextInterface $context): 'csrf_protection' => false, 'translation_domain' => 'flare_form', 'attr' => [ - 'data-flare-keep-query' => 'true', + 'data-flare-form' => 'keep-query', ], ];