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" } %> + <%= filter_dialog "Filter by…" do %> Filter by… 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" } %> + <%= filter_dialog "Sort by…" do %> Sort by…