Sha256: 171998c3b73fc67f1a161587e35d70fcf5ce487dedff9775c8538950f39e652f

Contents?: true

Size: 1.03 KB

Versions: 4

Compression:

Stored size: 1.03 KB

Contents

import Combobox from "hw_combobox/models/combobox/base"
import { visible } from "hw_combobox/helpers"

Combobox.Options = Base => class extends Base {
  _resetOptions() {
    this._deselect()
    this.hiddenFieldTarget.name = this.originalNameValue
  }

  get _allowNew() {
    return !!this.nameWhenNewValue
  }

  get _allOptions() {
    return Array.from(this._allOptionElements)
  }

  get _allOptionElements() {
    return this._actingListbox.querySelectorAll(`[${this.filterableAttributeValue}]`)
  }

  get _visibleOptionElements() {
    return [ ...this._allOptionElements ].filter(visible)
  }

  get _selectedOptionElement() {
    return this._actingListbox.querySelector("[role=option][aria-selected=true]")
  }

  get _selectedOptionIndex() {
    return [ ...this._visibleOptionElements ].indexOf(this._selectedOptionElement)
  }

  get _isUnjustifiablyBlank() {
    const valueIsMissing = !this.hiddenFieldTarget.value
    const noBlankOptionSelected = !this._selectedOptionElement

    return valueIsMissing && noBlankOptionSelected
  }
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hotwire_combobox-0.1.42 app/assets/javascripts/hw_combobox/models/combobox/options.js
hotwire_combobox-0.1.41 app/assets/javascripts/hw_combobox/models/combobox/options.js
hotwire_combobox-0.1.40 app/assets/javascripts/hw_combobox/models/combobox/options.js
hotwire_combobox-0.1.39 app/assets/javascripts/hw_combobox/models/combobox/options.js