Sha256: 085151b5ba92e6e723b97e5d253ef2e47be05ea66c1447068a9668f65d618d5a

Contents?: true

Size: 1 KB

Versions: 12

Compression:

Stored size: 1 KB

Contents

class Select extends HTMLSelectElement {
  #select2Element

  connectedCallback() {
    this.classList.add("alchemy_selectbox")

    this.#select2Element = $(this).select2({
      minimumResultsForSearch: 5,
      dropdownAutoWidth: true
    })
  }

  enable() {
    this.removeAttribute("disabled")
    this.#updateSelect2()
  }

  disable() {
    this.setAttribute("disabled", "disabled")
    this.#updateSelect2()
  }

  setOptions(data, prompt = undefined) {
    let selectedValue = this.value

    // reset the old options and insert the placeholder(s) first
    this.innerHTML = ""
    if (prompt) {
      this.add(new Option(prompt, ""))
    }

    // add the new options to the select
    data.forEach((item) => {
      this.add(new Option(item.text, item.id, false, item.id === selectedValue))
    })

    this.#updateSelect2()
  }

  /**
   * inform Select2 to update
   */
  #updateSelect2() {
    this.#select2Element.trigger("change")
  }
}

customElements.define("alchemy-select", Select, { extends: "select" })

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
alchemy_cms-7.3.4 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.3.3 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.3.2 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.2.7 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.3.1 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.3.0 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.2.6 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.2.5 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.2.4 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.2.3 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.2.2 app/javascript/alchemy_admin/components/select.js
alchemy_cms-7.2.1 app/javascript/alchemy_admin/components/select.js