diff --git a/app/javascript/controllers/combobox_controller.js b/app/javascript/controllers/combobox_controller.js
index 7b6ab78ff..92778215a 100644
--- a/app/javascript/controllers/combobox_controller.js
+++ b/app/javascript/controllers/combobox_controller.js
@@ -1,7 +1,9 @@
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
- static targets = [ "label", "item", "hiddenField" ]
+ #hiddenField
+
+ static targets = [ "label", "item", "hiddenFieldTemplate" ]
static values = {
selectPropertyName: { type: String, default: "aria-checked" },
defaultValue: String
@@ -30,7 +32,7 @@ export default class extends Controller {
this.#clearSelection()
item.setAttribute(this.selectPropertyNameValue, "true")
this.labelTarget.textContent = this.#selectedLabel
- this.hiddenFieldTarget.value = item.dataset.comboboxValue
+ this.hiddenField.value = item.dataset.comboboxValue
}
#clearSelection() {
@@ -38,4 +40,17 @@ export default class extends Controller {
target.setAttribute(this.selectPropertyNameValue, "false")
})
}
+
+ get hiddenField() {
+ if (!this.#hiddenField) {
+ this.#hiddenField = this.#buildHiddenField()
+ }
+ return this.#hiddenField
+ }
+
+ #buildHiddenField() {
+ const [field] = this.hiddenFieldTemplateTarget.content.cloneNode(true).children
+ this.element.appendChild(field)
+ return field
+ }
}
diff --git a/app/views/filters/settings/_controls.html.erb b/app/views/filters/settings/_controls.html.erb
index d4ca7e23d..7c8b48de4 100644
--- a/app/views/filters/settings/_controls.html.erb
+++ b/app/views/filters/settings/_controls.html.erb
@@ -3,7 +3,7 @@
<%= hidden_field_tag :expand_all, true, disabled: !user_filtering.expanded?, data: { toggle_enable_target: "element" } %>
<%= render "filters/settings/sorted_by", user_filtering: user_filtering %>
<%= render "filters/settings/indexed_by", user_filtering: user_filtering %>
-<%#= render "filters/settings/tags", user_filtering: user_filtering %>
+ <%#= render "filters/settings/tags", user_filtering: user_filtering %>
<%#= render "filters/settings/assignees", user_filtering: user_filtering %>
<%#= render "filters/settings/creators", user_filtering: user_filtering %>
<%#= render "filters/settings/closers", user_filtering: user_filtering %>
diff --git a/app/views/filters/settings/_indexed_by.html.erb b/app/views/filters/settings/_indexed_by.html.erb
index 6ed39ef9b..93fca342f 100644
--- a/app/views/filters/settings/_indexed_by.html.erb
+++ b/app/views/filters/settings/_indexed_by.html.erb
@@ -7,7 +7,9 @@
- <%= hidden_field_tag :indexed_by, nil, data: { combobox_target: "hiddenField", filter_settings_target: "field" } %>
+
+ <%= hidden_field_tag :indexed_by, nil, data: { filter_settings_target: "field" } %>
+
<%= filter_dialog "Filter by…" do %>
diff --git a/app/views/filters/settings/_sorted_by.html.erb b/app/views/filters/settings/_sorted_by.html.erb
index 0d4ff25e8..eff94c017 100644
--- a/app/views/filters/settings/_sorted_by.html.erb
+++ b/app/views/filters/settings/_sorted_by.html.erb
@@ -12,7 +12,9 @@
- <%= hidden_field_tag :sorted_by, nil, data: { combobox_target: "hiddenField", filter_settings_target: "field" } %>
+
+ <%= hidden_field_tag :sorted_by, nil, data: { filter_settings_target: "field" } %>
+
<%= filter_dialog "Sort by…" do %>