Implement bucket access form

This commit is contained in:
Jose Farias
2024-10-09 11:53:05 -04:00
parent cf142084f3
commit dd1752de2a
14 changed files with 177 additions and 47 deletions
@@ -0,0 +1,46 @@
import { Controller } from "@hotwired/stimulus"
import { debounce } from "helpers/timing_helpers"
export default class extends Controller {
static targets = [ "list" ]
static classes = [ "active", "selected" ]
initialize() {
this.filter = debounce(this.filter.bind(this), 300)
}
connect() {
this.element.focus()
}
filter(event) {
this.#reset()
if (event.target.value != "") {
this.#selectMatches(event.target.value)
this.#activate()
}
}
#reset() {
this.#deactivate()
this.listTarget.querySelectorAll(`.${this.selectedClass}`).forEach((element) => {
element.classList.remove(this.selectedClass)
})
}
#activate() {
this.listTarget.classList.add(this.activeClass)
}
#deactivate() {
this.listTarget.classList.remove(this.activeClass)
}
#selectMatches(value) {
this.listTarget.querySelectorAll(`[data-value*=${value.toLowerCase()}]`).forEach((element) => {
element.classList.add(this.selectedClass)
})
}
}