diff --git a/contao/templates/frontend/event_filter.html.twig b/contao/templates/frontend/event_filter.html.twig index c6bf07f..e43598f 100644 --- a/contao/templates/frontend/event_filter.html.twig +++ b/contao/templates/frontend/event_filter.html.twig @@ -38,12 +38,65 @@ @@ -130,6 +183,7 @@ const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; let activeViewTransition = null; let isViewTransitionMutation = false; + let hasAppliedInitialFilter = false; let currentFilter = { type: 'all', value: '' }; let suppressedChangeEvents = 0; @@ -437,8 +491,9 @@ setActiveControl(filterState); const immediateVisibility = shouldMutateVisibilityImmediately(); + const shouldAnimateLayout = immediateVisibility && hasAppliedInitialFilter; - runWithLayoutTransition(() => { + const mutateVisibility = () => { events.forEach((eventItem) => { if (matches(eventItem, filterState)) { showEvent(eventItem, { immediateVisibility }); @@ -446,7 +501,15 @@ hideEvent(eventItem, { immediateVisibility }); } }); - }); + }; + + if (shouldAnimateLayout) { + runWithLayoutTransition(mutateVisibility); + } else { + mutateVisibility(); + } + + hasAppliedInitialFilter = true; updateStatus(filterState); syncState(filterState);