Merge pull request #1524 from basecamp/one-filter-at-a-time

One filter at a time
This commit is contained in:
Andy Smith
2025-11-06 16:50:51 -06:00
committed by GitHub
9 changed files with 32 additions and 8 deletions
@@ -0,0 +1,24 @@
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
this.element.addEventListener("dialog:show", this.handleDialogShow.bind(this))
}
disconnect() {
this.element.removeEventListener("dialog:show", this.handleDialogShow.bind(this))
}
handleDialogShow(event) {
this.#dialogControllers.forEach(dialogController => {
if (dialogController !== event.target) {
const dialog = dialogController.querySelector("dialog")
dialog.removeAttribute("open")
}
})
}
get #dialogControllers() {
return this.element.querySelectorAll('[data-controller~="dialog"]')
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
<%= tag.aside \
class: class_names("filters margin-block-end", { "filters--expanded": user_filtering.expanded? }),
data: {
controller: "toggle-enable toggle-class filter-settings",
controller: "toggle-enable toggle-class filter-settings dialog-manager",
toggle_class_toggle_class: "filters--expanded",
filter_settings_filters_set_class: "filters--has-filters-set",
filter_settings_no_filtering_url_value: no_filtering_url,
@@ -1,5 +1,5 @@
<% filter = user_filtering.filter %>
<%= tag.div class: "quick-filter position-relative",
<%= tag.div class: "quick-filter",
data: {
controller: "dialog multi-selection-combobox",
action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside",
+1 -1
View File
@@ -1,6 +1,6 @@
<% filter = user_filtering.filter %>
<%= tag.div class: "quick-filter position-relative",
<%= tag.div class: "quick-filter",
data: {
controller: "dialog multi-selection-combobox",
action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside",
+1 -1
View File
@@ -1,6 +1,6 @@
<% filter = user_filtering.filter %>
<%= tag.div class: "quick-filter position-relative",
<%= tag.div class: "quick-filter",
data: {
controller: "dialog multi-selection-combobox",
action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside",
@@ -1,6 +1,6 @@
<% filter = user_filtering.filter %>
<%= tag.div class: "quick-filter position-relative",
<%= tag.div class: "quick-filter",
data: {
controller: "dialog multi-selection-combobox",
action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside",
@@ -1,6 +1,6 @@
<% filter = user_filtering.filter %>
<%= tag.div class: class_names("quick-filter position-relative"),
<%= tag.div class: class_names("quick-filter"),
data: { controller: "dialog combobox",
action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside",
filter_show: user_filtering.show_indexed_by?,
@@ -1,6 +1,6 @@
<% filter = user_filtering.filter %>
<%= tag.div class: class_names("quick-filter position-relative"),
<%= tag.div class: class_names("quick-filter"),
data: {
controller: "dialog combobox",
action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside",
@@ -1,5 +1,5 @@
<% filter = user_filtering.filter %>
<%= tag.div class: "quick-filter position-relative",
<%= tag.div class: "quick-filter",
data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside", filter_show: filter.public_send("#{name}_window").present? } do %>
<button class="btn input input--select flex-inline txt-x-small" data-action="click->dialog#open:stop">
<span class="overflow-ellipsis">