manage a hidden template instead since this will come handy when dealing with multiple selection
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 %>
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<%= hidden_field_tag :indexed_by, nil, data: { combobox_target: "hiddenField", filter_settings_target: "field" } %>
|
||||
<template data-combobox-target="hiddenFieldTemplate">
|
||||
<%= hidden_field_tag :indexed_by, nil, data: { filter_settings_target: "field" } %>
|
||||
</template>
|
||||
|
||||
<%= filter_dialog "Filter by…" do %>
|
||||
<strong class="popup__title">Filter by…</strong>
|
||||
|
||||
@@ -12,7 +12,9 @@
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<%= hidden_field_tag :sorted_by, nil, data: { combobox_target: "hiddenField", filter_settings_target: "field" } %>
|
||||
<template data-combobox-target="hiddenFieldTemplate">
|
||||
<%= hidden_field_tag :sorted_by, nil, data: { filter_settings_target: "field" } %>
|
||||
</template>
|
||||
|
||||
<%= filter_dialog "Sort by…" do %>
|
||||
<strong class="popup__title">Sort by…</strong>
|
||||
|
||||
Reference in New Issue
Block a user