Wire up search
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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 %>
|
||||
|
||||
Reference in New Issue
Block a user