diff --git a/app/assets/stylesheets/filters.css b/app/assets/stylesheets/filters.css index 737fed57c..5b621bbf9 100644 --- a/app/assets/stylesheets/filters.css +++ b/app/assets/stylesheets/filters.css @@ -99,6 +99,10 @@ } } + .filter__terms { + --input-background: var(--color-canvas); + } + .quick-filter { &:not(.default-value):has(.checked) { .input--select { diff --git a/app/models/filter/params.rb b/app/models/filter/params.rb index b1a917bd4..7685c87fc 100644 --- a/app/models/filter/params.rb +++ b/app/models/filter/params.rb @@ -64,7 +64,7 @@ module Filter::Params end def as_params_without(key, value) - as_params.tap do |params| + as_params.dup.tap do |params| if params[key].is_a?(Array) params[key] = params[key] - [ value ] params.delete(key) if params[key].empty? diff --git a/app/views/filters/_settings.html.erb b/app/views/filters/_settings.html.erb index 6ddeb2476..a8e875c3e 100644 --- a/app/views/filters/_settings.html.erb +++ b/app/views/filters/_settings.html.erb @@ -1,8 +1,7 @@ <% cache user_filtering do %> diff --git a/app/views/filters/settings/_terms.html.erb b/app/views/filters/settings/_terms.html.erb index eda8efed3..9693ce23f 100644 --- a/app/views/filters/settings/_terms.html.erb +++ b/app/views/filters/settings/_terms.html.erb @@ -1,3 +1,23 @@ -<% user_filtering.filter.terms.each do |term| %> - <%= filter_chip_tag %Q("#{term}"), filter.as_params_without(:terms, term) %> +<% filter = user_filtering.filter %> +<%= form_with url: cards_path, method: :get, class: "", data: { controller: "form" } do |form| %> + <% filter.as_params.except(:terms).each do |key, value| %> + <%= filter_hidden_field_tag key, value %> + <% end %> + + <% filter.terms.each do |existing_term| %> + <%= hidden_field_tag "terms[]", existing_term %> + <% end %> + + <% if user_filtering.expanded? %> + <%= hidden_field_tag :expand_all, user_filtering.expanded? %> + <% end %> + + <%= form.text_field "terms[]", placeholder: "Filter these cards…", class: "input txt-x-small filter__terms", + autofocus: false, autocomplete: :off, autocorrect: "off", data: { "1p-ignore": "true" } %> +<% end %> + +<% if filter.terms.present? %> + <% filter.terms.each do |term| %> + <%= filter_chip_tag %Q("#{term}"), filter.as_params_without(:terms, term) %> + <% end %> <% end %> diff --git a/app/views/filters/settings/_toggle.html.erb b/app/views/filters/settings/_toggle.html.erb index 2ca631889..d46b6fa96 100644 --- a/app/views/filters/settings/_toggle.html.erb +++ b/app/views/filters/settings/_toggle.html.erb @@ -3,11 +3,11 @@ <% if user_filtering.expanded? %> <%= link_to cards_path(filter.as_params), class: "btn txt-x-small btn--reversed", aria: { selected: true } do %> <%= icon_tag "filter" %> - Filter these cards + Close filter options <% end %> <% else %> <%= link_to cards_path(filter.as_params.merge(expand_all: true)), class: "btn txt-x-small" do %> <%= icon_tag "filter" %> - Filter these cards + Expand filter options <% end %> <% end %>