-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Why these changes are being introduced: The filter sidebar can become unwieldy, as all available filters are shown at all times. Relevant ticket(s): * https://mitlibraries.atlassian.net/browse/GDT-127 * https://mitlibraries.atlassian.net/browse/GDT-173 * https://mitlibraries.atlassian.net/browse/GDT-174 How this addresses that need: This restyles the filter sidebar as dropdown menus. In so doing, it also changes some behavior in the filter logic: * Number of results is listed in the filter sidebar header. * Clicking an applied filter removes that filter (this replaces the previous removal mechanism, which removed all applied filters). * Applied filters are highlighted with an `x` symbol, to indicate that it can be removed on click. (Previously, the 'applied' filter was added, but we hadn't done anything with it.) * The first filter dropdown in the sidebar is always open, even if no filters are applied. Not addressed in this commit: * Darcy asked that we persist menu state between page loads, such that an open menu always remains open unless a user closes it manually (e.g., if all filters have been removed in that category). This proved relatively complex, so I opened GDT-173 to address it. * There are some visual differences in how the sidebar appears in smaller viewports. This is covered in GDT-174. Side effects of this change: * Some tests have been updated to reflect the new logic. * One potential a11y issue with filter categories is having to navigate through a bunch of filter opens before getting to the next category. We might want to add skip-content links if this feels onerous. * The JS for the dropdown menus is so minimal that I included it in the view as a `script` tag. * The filter container is now above the results in the DOM.
- Loading branch information
Showing
9 changed files
with
209 additions
and
59 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
module ResultsHelper | ||
def results_summary(hits) | ||
hits.to_i >= 10_000 ? '10,000+ items' : "#{number_with_delimiter(hits)} items" | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,29 @@ | ||
<% return if values.empty? %> | ||
|
||
<div class="category"> | ||
<h3><%= nice_labels[category] || category %></h3> | ||
<ul class="category-terms list-unbulleted"> | ||
<% values.each do |term| %> | ||
<li class="term"> | ||
<a href="<%= results_path(add_filter(@enhanced_query, category, term['key'])) %>" class="<%= "applied" if @enhanced_query[category.to_sym] == term['key'] %>"> | ||
<span class="name"><%= term['key'] %></span> | ||
<span class="count"><%= term['docCount'] %> <span class="sr">records</span></span> | ||
</a> | ||
</li> | ||
<% end %> | ||
</ul> | ||
<% if @enhanced_query[category.to_sym].present? %> | ||
<div><%= link_to "Show all #{nice_labels[category]&.downcase || category}", results_path(remove_filter(@enhanced_query, category)) %> | ||
</div> | ||
<% end %> | ||
<button class="filter-label <%= 'expanded' if @enhanced_query[category.to_sym].present? || first == true %>" | ||
onclick="toggleFilter(this)"><%= nice_labels[category] || category %></button> | ||
<div class="filter-options"> | ||
<ul class="category-terms list-unbulleted"> | ||
<% values.each do |term| %> | ||
<li class="term"> | ||
<% if filter_applied?(@enhanced_query[category.to_sym], term['key']) %> | ||
<a href="<%= results_path(remove_filter(@enhanced_query, category.to_sym, term['key'])) %>" class="applied"> | ||
<span class="sr">Remove applied filter?</span> | ||
<% else %> | ||
<a href="<%= results_path(add_filter(@enhanced_query, category.to_sym, term['key'])) %>"> | ||
<% end %> | ||
<span class="name"><%= term['key'] %></span> | ||
<span class="count"><%= term['docCount'] %> <span class="sr">records</span></span> | ||
</a> | ||
</li> | ||
<% end %> | ||
</ul> | ||
</div> | ||
</div> | ||
|
||
<script> | ||
function toggleFilter(e) { | ||
e.parentNode.getElementsByClassName("filter-label")[0].classList.toggle("expanded"); | ||
} | ||
</script> |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
require 'test_helper' | ||
|
||
class ResultsHelperTest < ActionView::TestCase | ||
include ResultsHelper | ||
|
||
test 'if number of hits is equal to 10,000, results summary returns "10,000+"' do | ||
hits = 10000 | ||
assert_equal '10,000+ items', results_summary(hits) | ||
end | ||
|
||
test 'if number of hits is above 10,000, results summary returns "10,000+"' do | ||
hits = 10500 | ||
assert_equal '10,000+ items', results_summary(hits) | ||
end | ||
|
||
test 'if number of hits is below 10,000, results summary returns actual number of results' do | ||
hits = 9000 | ||
assert_equal '9,000 items', results_summary(hits) | ||
end | ||
end |