diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb index 98f1bde87..03a62ebed 100644 --- a/app/controllers/filters_controller.rb +++ b/app/controllers/filters_controller.rb @@ -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 diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index 8b33a23b1..7c75954ae 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -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" diff --git a/app/models/filter/resources.rb b/app/models/filter/resources.rb index e4d84ba99..da71ce982 100644 --- a/app/models/filter/resources.rb +++ b/app/models/filter/resources.rb @@ -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 diff --git a/app/models/user/filtering.rb b/app/models/user/filtering.rb index 9aecb8a24..9f321bbed 100644 --- a/app/models/user/filtering.rb +++ b/app/models/user/filtering.rb @@ -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 diff --git a/app/views/filters/create.turbo_stream.erb b/app/views/filters/create.turbo_stream.erb new file mode 100644 index 000000000..30013fc92 --- /dev/null +++ b/app/views/filters/create.turbo_stream.erb @@ -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 }) %> diff --git a/app/views/filters/destroy.turbo_stream.erb b/app/views/filters/destroy.turbo_stream.erb new file mode 100644 index 000000000..30013fc92 --- /dev/null +++ b/app/views/filters/destroy.turbo_stream.erb @@ -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 }) %> diff --git a/app/views/filters/menu/_custom.html.erb b/app/views/filters/menu/_custom.html.erb index 2de2cae1d..e2ef1d9b7 100644 --- a/app/views/filters/menu/_custom.html.erb +++ b/app/views/filters/menu/_custom.html.erb @@ -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 %> diff --git a/app/views/filters/menu/custom/_filter.html.erb b/app/views/filters/menu/custom/_filter.html.erb index 7f40cb83f..5ed324e03 100644 --- a/app/views/filters/menu/custom/_filter.html.erb +++ b/app/views/filters/menu/custom/_filter.html.erb @@ -2,7 +2,7 @@ <%= icon_tag "bookmark", class: "popup__icon" %> <%= link_to cards_path(filter_id: filter.id), class: "popup__btn btn" do %>