Refresh save filter toggle when changing filter
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
class Filters::SaveToggleRefreshesController < ApplicationController
|
||||
include FilterScoped
|
||||
|
||||
def create
|
||||
turbo_stream.replace("filter-toggle", partial: "filters/filter_toggle", locals: { filter: @filter })
|
||||
end
|
||||
end
|
||||
@@ -1,9 +1,11 @@
|
||||
import { Controller } from "@hotwired/stimulus"
|
||||
import { debounce } from "helpers/timing_helpers";
|
||||
import { post } from "@rails/request.js"
|
||||
|
||||
export default class extends Controller {
|
||||
static classes = ["filtersSet"]
|
||||
static targets = ["field"]
|
||||
static targets = ["field", "form"]
|
||||
static values = { refreshSaveToggleUrl: String }
|
||||
|
||||
initialize() {
|
||||
this.debouncedChange = debounce(this.change.bind(this), 50)
|
||||
@@ -15,6 +17,7 @@ export default class extends Controller {
|
||||
|
||||
change() {
|
||||
this.#toggleFiltersSetClass()
|
||||
this.#refreshSaveToggleButton()
|
||||
}
|
||||
|
||||
async fieldTargetConnected(field) {
|
||||
@@ -42,4 +45,24 @@ export default class extends Controller {
|
||||
const comboboxContainer = field.closest("[data-combobox-default-value-value]")
|
||||
return comboboxContainer?.dataset?.comboboxDefaultValueValue
|
||||
}
|
||||
|
||||
#refreshSaveToggleButton() {
|
||||
post(this.refreshSaveToggleUrlValue, {
|
||||
body: this.#collectFilterFormData(),
|
||||
responseKind: "turbo-stream"
|
||||
})
|
||||
}
|
||||
|
||||
#collectFilterFormData() {
|
||||
const formData = new FormData()
|
||||
|
||||
this.formTargets.forEach(form => {
|
||||
const hiddenFields = form.querySelectorAll('input[type="hidden"]:not([disabled])[name]')
|
||||
hiddenFields.forEach(field => {
|
||||
formData.append(field.name, field.value)
|
||||
})
|
||||
})
|
||||
|
||||
return formData
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% cache user_filtering do %>
|
||||
<%= tag.aside id: "filter-settings",
|
||||
class: class_names("filters flex align-center gap-half justify-center center margin-block-end", { "filters--expanded": user_filtering.expanded? }),
|
||||
data: { controller: "toggle-class filter-settings", toggle_class_toggle_class: "filters--expanded", filter_settings_filters_set_class: "filters--has-filters-set" } do %>
|
||||
data: { controller: "toggle-class filter-settings", toggle_class_toggle_class: "filters--expanded", filter_settings_filters_set_class: "filters--has-filters-set", filter_settings_refresh_save_toggle_url_value: save_toggle_refresh_path } do %>
|
||||
<div class="flex-inline center align-center gap-half" data-controller="toggle-enable">
|
||||
<%= render "filters/settings/terms", user_filtering: user_filtering %>
|
||||
<%= render "filters/settings/controls", user_filtering: user_filtering %>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<%= form_with url: cards_path, method: :get, class: "flex-inline center align-center gap-half",
|
||||
data: { controller: "form", turbo_frame: "card_columns", turbo_action: "advance" } do |form| %>
|
||||
data: { controller: "form", turbo_frame: "card_columns", turbo_action: "advance", filter_settings_target: "form" } do |form| %>
|
||||
<%= hidden_field_tag :expand_all, true, disabled: !user_filtering.expanded?, data: { toggle_enable_target: "element" } %>
|
||||
<% user_filtering.filter.collections.each do |collection| %>
|
||||
<%= filter_hidden_field_tag "collection_ids[]", collection.id %>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<% filter = user_filtering.filter %>
|
||||
|
||||
<%= form_with url: cards_path, method: :get, class: "", data: { controller: "form", turbo_frame: "card_columns", action: "input->form#debouncedSubmit" } do |form| %>
|
||||
<%= form_with url: cards_path, method: :get, class: "", data: { controller: "form", turbo_frame: "card_columns", action: "input->form#debouncedSubmit", filter_settings_target: "form" } do |form| %>
|
||||
<% filter.as_params.except(:terms).each do |key, value| %>
|
||||
<%= filter_hidden_field_tag key, value %>
|
||||
<% end %>
|
||||
|
||||
+7
-1
@@ -81,7 +81,13 @@ Rails.application.routes.draw do
|
||||
resources :queries
|
||||
end
|
||||
|
||||
resources :filters
|
||||
resources :filters do
|
||||
scope module: :filters do
|
||||
collection do
|
||||
resource :save_toggle_refresh, only: :create
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
resources :events, only: :index
|
||||
namespace :events do
|
||||
|
||||
Reference in New Issue
Block a user