Toggle filters in the hey menu too

This also fixes a problem where the label in the menu for the filters was wrong
This commit is contained in:
Jorge Manrubia
2025-09-19 16:05:39 +02:00
parent 0703263664
commit 64b46d37e4
9 changed files with 33 additions and 19 deletions
+9 -7
View File
@@ -1,18 +1,20 @@
class FiltersController < ApplicationController
def create
filter = Current.user.filters.remember filter_params
before_action :set_filters
render turbo_stream: turbo_stream.replace("filter-toggle", partial: "filters/filter_toggle", locals: { filter: filter })
def create
@filter = Current.user.filters.remember filter_params
end
def destroy
filter = Current.user.filters.find(params[:id])
filter.destroy!
render turbo_stream: turbo_stream.replace("filter-toggle", partial: "filters/filter_toggle", locals: { filter: filter })
@filter = Current.user.filters.find(params[:id])
@filter.destroy!
end
private
def set_filters
@filters = Current.user.filters
end
def filter_params
params.permit(*Filter::PERMITTED_PARAMS).compact_blank
end
+2 -2
View File
@@ -35,8 +35,8 @@ module FiltersHelper
}, &block
end
def collapsible_nav_section(title, &block)
tag.details class: "popup__section", data: { action: "toggle->nav-section-expander#toggle", nav_section_expander_target: "section", nav_section_expander_key_value: title.parameterize }, open: true do
def collapsible_nav_section(title, **properties, &block)
tag.details class: "popup__section", data: { action: "toggle->nav-section-expander#toggle", nav_section_expander_target: "section", nav_section_expander_key_value: title.parameterize }, open: true, **properties do
concat(tag.summary(class: "popup__section-title") do
concat title
concat icon_tag "caret-down"
+12
View File
@@ -21,4 +21,16 @@ module Filter::Resources
def collections
creator.collections.where id: super.ids
end
def collection_titles
if collections.none?
[ Collection.one? ? collections.first.name : "All collections" ]
else
collections.map(&:name)
end
end
def collections_label
collection_titles.to_sentence
end
end
+2 -6
View File
@@ -15,15 +15,11 @@ class User::Filtering
end
def selected_collection_titles
if filter.collections.none?
[ collections.one? ? collections.first.name : "All collections" ]
else
filter.collections.map(&:name)
end
filter.collection_titles
end
def selected_collections_label
selected_collection_titles.to_sentence
filter.collections_label
end
def tags
@@ -0,0 +1,2 @@
<%= turbo_stream.replace("filter-toggle", partial: "filters/filter_toggle", locals: { filter: @filter }) %>
<%= turbo_stream.replace("my-filters", partial: "filters/menu/custom", locals: { filters: @filters }) %>
@@ -0,0 +1,2 @@
<%= turbo_stream.replace("filter-toggle", partial: "filters/filter_toggle", locals: { filter: @filter }) %>
<%= turbo_stream.replace("my-filters", partial: "filters/menu/custom", locals: { filters: @filters }) %>
+2 -2
View File
@@ -1,6 +1,6 @@
<%= collapsible_nav_section "Saved filters" do %>
<%= collapsible_nav_section "Saved filters", id: "my-filters" do %>
<%= form_with url: cards_path, method: :get, data: { controller: "form" } do |form| %>
<%= render "filters/menu/custom/create" %>
<%= render partial: "filters/menu/custom/filter", collection: user_filtering.filters, as: :filter, locals: { user_filtering: user_filtering } %>
<%= render partial: "filters/menu/custom/filter", collection: filters, as: :filter %>
<% end %>
<% end %>
@@ -2,7 +2,7 @@
<%= icon_tag "bookmark", class: "popup__icon" %>
<%= link_to cards_path(filter_id: filter.id), class: "popup__btn btn" do %>
<div class="txt-tight-lines min-width txt-small overflow-ellipsis">
<div><%= filter_selected_collections_title(user_filtering) %></div>
<div><%= filter.collections_label %></div>
<div><%= filter.summary %></div>
</div>
<% end %>
+1 -1
View File
@@ -22,7 +22,7 @@
</div>
<%= render "filters/menu/hotkeys" %>
<%= render "filters/menu/custom", user_filtering: @user_filtering %>
<%= render "filters/menu/custom", filters: @user_filtering.filters %>
<%= render "filters/menu/collections", user_filtering: @user_filtering %>
<%= render "filters/menu/tags", user_filtering: @user_filtering %>
<%= render "filters/menu/users", user_filtering: @user_filtering %>