Sha256: e0305c744846f23c15ae52a5085283c0a0ff820ccf1b4ba1b76186e0eb874803

Contents?: true

Size: 1.81 KB

Versions: 9

Compression:

Stored size: 1.81 KB

Contents

import Combobox from "hw_combobox/models/combobox/base"

Combobox.FormField = Base => class extends Base {
  get _fieldValue() {
    if (this._isMultiselect) {
      const currentValue = this.hiddenFieldTarget.value
      const arrayFromValue = currentValue ? currentValue.split(",") : []

      return new Set(arrayFromValue)
    } else {
      return this.hiddenFieldTarget.value
    }
  }

  get _fieldValueString() {
    if (this._isMultiselect) {
      return this._fieldValueArray.join(",")
    } else {
      return this.hiddenFieldTarget.value
    }
  }

  get _incomingFieldValueString() {
    if (this._isMultiselect) {
      const array = this._fieldValueArray

      if (this.hiddenFieldTarget.dataset.valueForMultiselect) {
        array.push(this.hiddenFieldTarget.dataset.valueForMultiselect)
      }

      return array.join(",")
    } else {
      return this.hiddenFieldTarget.value
    }
  }

  get _fieldValueArray() {
    if (this._isMultiselect) {
      return Array.from(this._fieldValue)
    } else {
      return [ this.hiddenFieldTarget.value ]
    }
  }

  set _fieldValue(value) {
    if (this._isMultiselect) {
      this.hiddenFieldTarget.dataset.valueForMultiselect = value?.replace(/,/g, "")
      this.hiddenFieldTarget.dataset.displayForMultiselect = this._fullQuery
    } else {
      this.hiddenFieldTarget.value = value
    }
  }

  get _hasEmptyFieldValue() {
    if (this._isMultiselect) {
      return this.hiddenFieldTarget.dataset.valueForMultiselect == "" ||
        this.hiddenFieldTarget.dataset.valueForMultiselect == "undefined"
    } else {
      return this.hiddenFieldTarget.value === ""
    }
  }

  get _hasFieldValue() {
    return !this._hasEmptyFieldValue
  }

  get _fieldName() {
    return this.hiddenFieldTarget.name
  }

  set _fieldName(value) {
    this.hiddenFieldTarget.name = value
  }
}

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
hotwire_combobox-0.3.2 app/assets/javascripts/hw_combobox/models/combobox/form_field.js
hotwire_combobox-0.3.1 app/assets/javascripts/hw_combobox/models/combobox/form_field.js
hotwire_combobox-0.3.0 app/assets/javascripts/hw_combobox/models/combobox/form_field.js
hotwire_combobox-0.2.5 app/assets/javascripts/hw_combobox/models/combobox/form_field.js
hotwire_combobox-0.2.4 app/assets/javascripts/hw_combobox/models/combobox/form_field.js
hotwire_combobox-0.2.3 app/assets/javascripts/hw_combobox/models/combobox/form_field.js
hotwire_combobox-0.2.2 app/assets/javascripts/hw_combobox/models/combobox/form_field.js
hotwire_combobox-0.2.1 app/assets/javascripts/hw_combobox/models/combobox/form_field.js
hotwire_combobox-0.2.0 app/assets/javascripts/hw_combobox/models/combobox/form_field.js