(search) Add a screenreader-only alert when the search filters are updated to make it easier to understand what happens.

This commit is contained in:
Viktor Lofgren 2024-05-03 18:07:09 +02:00
parent 01f242ac7e
commit 3548d54cf6
5 changed files with 15 additions and 9 deletions

View File

@ -17,33 +17,34 @@ public record SearchParameters(String query,
SearchRecentParameter recent, SearchRecentParameter recent,
SearchTitleParameter searchTitle, SearchTitleParameter searchTitle,
SearchAdtechParameter adtech, SearchAdtechParameter adtech,
boolean poisonResults boolean poisonResults,
boolean newFilter
) { ) {
public String profileStr() { public String profileStr() {
return profile.filterId; return profile.filterId;
} }
public SearchParameters withProfile(SearchProfile profile) { public SearchParameters withProfile(SearchProfile profile) {
return new SearchParameters(query, profile, js, recent, searchTitle, adtech, poisonResults); return new SearchParameters(query, profile, js, recent, searchTitle, adtech, poisonResults, true);
} }
public SearchParameters withJs(SearchJsParameter js) { public SearchParameters withJs(SearchJsParameter js) {
return new SearchParameters(query, profile, js, recent, searchTitle, adtech, poisonResults); return new SearchParameters(query, profile, js, recent, searchTitle, adtech, poisonResults, true);
} }
public SearchParameters withAdtech(SearchAdtechParameter adtech) { public SearchParameters withAdtech(SearchAdtechParameter adtech) {
return new SearchParameters(query, profile, js, recent, searchTitle, adtech, poisonResults); return new SearchParameters(query, profile, js, recent, searchTitle, adtech, poisonResults, true);
} }
public SearchParameters withRecent(SearchRecentParameter recent) { public SearchParameters withRecent(SearchRecentParameter recent) {
return new SearchParameters(query, profile, js, recent, searchTitle, adtech, poisonResults); return new SearchParameters(query, profile, js, recent, searchTitle, adtech, poisonResults, true);
} }
public SearchParameters withTitle(SearchTitleParameter title) { public SearchParameters withTitle(SearchTitleParameter title) {
return new SearchParameters(query, profile, js, recent, title, adtech, poisonResults); return new SearchParameters(query, profile, js, recent, title, adtech, poisonResults, true);
} }
public String renderUrl(WebsiteUrl baseUrl) { public String renderUrl(WebsiteUrl baseUrl) {
String path = String.format("/search?query=%s&profile=%s&js=%s&adtech=%s&recent=%s&searchTitle=%s", String path = String.format("/search?query=%s&profile=%s&js=%s&adtech=%s&recent=%s&searchTitle=%s&newfilter=true",
URLEncoder.encode(query, StandardCharsets.UTF_8), URLEncoder.encode(query, StandardCharsets.UTF_8),
URLEncoder.encode(profile.filterId, StandardCharsets.UTF_8), URLEncoder.encode(profile.filterId, StandardCharsets.UTF_8),
URLEncoder.encode(js.value, StandardCharsets.UTF_8), URLEncoder.encode(js.value, StandardCharsets.UTF_8),

View File

@ -26,4 +26,5 @@ public class DecoratedSearchResults {
public String getAdtech() { return params.adtech().value; } public String getAdtech() { return params.adtech().value; }
public String getRecent() { return params.recent().value; } public String getRecent() { return params.recent().value; }
public String getSearchTitle() { return params.searchTitle().value; } public String getSearchTitle() { return params.searchTitle().value; }
public Boolean isNewFilter() { return params.newFilter(); }
} }

View File

@ -58,7 +58,8 @@ public class SearchQueryService {
SearchRecentParameter.parse(request.queryParams("recent")), SearchRecentParameter.parse(request.queryParams("recent")),
SearchTitleParameter.parse(request.queryParams("searchTitle")), SearchTitleParameter.parse(request.queryParams("searchTitle")),
SearchAdtechParameter.parse(request.queryParams("adtech")), SearchAdtechParameter.parse(request.queryParams("adtech")),
"1".equals(request.headers("X-Poison-Results")) "1".equals(request.headers("X-Poison-Results")),
"true".equals(request.queryParams("newfilter"))
); );
} }
catch (Exception ex) { catch (Exception ex) {

View File

@ -12,11 +12,14 @@
<body data-filter="{{filters.currentFilter}}"> <body data-filter="{{filters.currentFilter}}">
{{#if newFilter}} <div class="screenreader-only" aria-role="status">Search Filters Updated</div> {{/if}}
<!-- Hi there, fellow human being :-) --> <!-- Hi there, fellow human being :-) -->
{{>search/parts/search-header}} {{>search/parts/search-header}}
{{>search/parts/search-form}} {{>search/parts/search-form}}
<span id="content-start"></span> <span id="content-start"></span>
<section class="sidebar-narrow"> <section class="sidebar-narrow">

View File

@ -15,7 +15,7 @@ class BangCommandTest {
try { try {
bangCommand.process(null, bangCommand.process(null,
new SearchParameters(" !g test", new SearchParameters(" !g test",
null, null, null, null, null, false) null, null, null, null, null, false, false)
); );
Assertions.fail("Should have thrown RedirectException"); Assertions.fail("Should have thrown RedirectException");
} }