Wire up search

This commit is contained in:
Jose Farias
2024-11-11 15:40:10 -06:00
parent 9e99d961ba
commit 3b513fc726
5 changed files with 25 additions and 11 deletions
+4 -1
View File
@@ -8,7 +8,10 @@ class BubblesController < ApplicationController
def index
@bubbles = @filter.bubbles
@bubbles = @bubbles.mentioning(params[:term]) if params[:term].present?
Array.wrap(params[:terms]).each do |term|
@bubbles = @bubbles.mentioning(term)
end
end
def create
+11 -3
View File
@@ -3,10 +3,16 @@ module FiltersHelper
"#{name}_filter--#{value}"
end
def filter_buttons(filter, **)
filter.to_h.map do |kind, object|
def filter_buttons(filter, terms, **)
filters = filter.to_h.map do |kind, object|
filter_button_from kind, object, **
end.join.html_safe
end
terms = Array.wrap(terms).map do |term|
filter_button_from :terms, term, **
end
safe_join filters + terms
end
def filter_button_tag(display:, value:, name:, **options)
@@ -50,6 +56,8 @@ module FiltersHelper
[ object.humanize, object, "indexed_by" ]
when :assignments
[ object.humanize, object, "assignments" ]
when :terms
[ %Q("#{object}"), object, "terms[]" ]
end.then do |display, value, name|
{ display: display, value: value, name: name }
end
+6 -5
View File
@@ -10,7 +10,7 @@
</button>
<%= form_with url: bubbles_path, method: :get, class: "flex-inline center align-center gap-half", data: { controller: "form" } do %>
<%= filter_buttons filter %>
<%= filter_buttons filter, terms %>
<% end %>
</div>
@@ -38,18 +38,19 @@
</button>
<%= form_with url: bubbles_path, id: :filter_form, method: :get, class: "flex-inline center align-center gap-half" do %>
<%= filter_buttons filter, class: "fill-selected" %>
<%= filter_buttons filter, terms, class: "fill-selected" %>
<% end %>
</div>
<div class="flex gap flex-item-grow align-center justify-center full-width center margin-block">
<input type="text" class="input full-width" placeholder="Type to match words…" autocomplete="off" />
<%= form_with url: filter_buttons_path, method: :post, class: "flex gap flex-item-grow align-center justify-center full-width center margin-block" do %>
<%= hidden_field_tag :name, "terms[]" %>
<input name="value" type="text" class="input full-width" placeholder="Type to match words…" autocomplete="off" />
<button class="btn txt-small" type="submit">
<span class="for-screen-reader">Submit text filter</span>
<%= image_tag "add.svg", aria: { hidden: true }, size: 24 %>
</button>
</div>
<% end %>
<div class="flex flex-column gap full-width" style="--border-color: var(--color-subtle)">
<div class="flex gap">
+1 -1
View File
@@ -8,7 +8,7 @@
<% end %>
<header class="txt-align-center">
<%= render "bubbles/filters", filter: @filter %>
<%= render "bubbles/filters", filter: @filter, terms: params[:terms] %>
</header>
<% if @filter.buckets.any? %>
@@ -1,4 +1,6 @@
<%= turbo_stream.remove filter_button_id(params[:value], params[:name]) %>
<%= turbo_stream.append :filter_form do %>
<%= filter_button_tag display: params[:display], value: params[:value], name: params[:name], class: "fill-selected" %>
<%= filter_button_tag display: params[:display] || %Q("#{params[:value]}"),
value: params[:value], name: params[:name], class: "fill-selected" %>
<% end %>