resetQueryDrivenState() was ignoring the user's localStorage preference and
always resetting to the group config default (CARDS). When queryParamMap
re-emitted (orientation change, soft reload, navigation events), the user's
explicit Table view selection was overridden. Now reads from localStorage first,
matching the pattern already used in the systemConfigService subscription.
Also adds role="button" to dropdown <a> elements for reliable touch interaction
on mobile browsers (Samsung Internet, older WebViews) where <a> without href
may not fire click events.
Clears expandedWalks when switching to table view so that a walk expanded in cards view does not carry over its expanded state into the table layout.
Fix replaceQueryParams in both events-full and walk-search to read the actual current URL before merging, instead of relying on the stale Angular router snapshot. The old approach used queryParamsHandling:"merge" which merged with route.snapshot.queryParams — but location.replaceState never updated that snapshot, so successive calls lost params set by earlier calls.
Make queryParamMap subscription the primary search trigger on init, removing the unreliable setTimeout fallback that could race with query param processing. Advanced search changes now always fire performServerSideSearch directly from onAdvancedSearch, and walk-search always writes advanced criteria to query params (setting queryParamsActive=true on any change).
When the server returns zero results for a page beyond range but pagination total indicates matching documents exist, reset to page 1 and re-fetch rather than displaying empty results with stale pagination.