Sha256: b3db778a9806d7ccc8403c53691e5fea86d4b5b4bbeed23c18c6bcda4920e0b0

Contents?: true

Size: 1.38 KB

Versions: 64

Compression:

Stored size: 1.38 KB

Contents

import { Controller } from 'stimulus'

export default class extends Controller {
  static targets = ['select', 'type']

  get selectedType() {
    return this.selectTarget.value
  }

  connect() {
    this.setValidNames()
    this.changedType()
  }

  setValidNames() {
    this.typeTargets.forEach((target) => {
      const { type } = target.dataset
      const select = target.querySelector('select')
      const name = select.getAttribute('name')

      select.setAttribute('valid-name', name)
      if (this.selectedType !== type) {
        select.selectedIndex = 0
      }
    })
  }

  changedType() {
    this.hideAllTypeTargets()
    this.enableType(this.selectTarget.value)
  }

  hideAllTypeTargets() {
    this.typeTargets.forEach((target) => {
      this.hideTarget(target)
      this.invalidateTarget(target)
    })
  }

  hideTarget(target) {
    target.classList.add('hidden')
  }

  invalidateTarget(target) {
    const select = target.querySelector('select')

    select.setAttribute('name', '')
  }

  validateTarget(target) {
    const select = target.querySelector('select')
    const validName = select.getAttribute('valid-name')

    select.setAttribute('name', validName)
  }

  enableType(type) {
    const target = this.typeTargets.find((typeTarget) => typeTarget.dataset.type === type)

    if (target) {
      target.classList.remove('hidden')
      this.validateTarget(target)
    }
  }
}

Version data entries

64 entries across 64 versions & 1 rubygems

Version Path
avo-1.21.0.pre.1 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.20.1 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.11 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.10 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.9 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.8 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.7 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.6 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.5 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.4 app/javascript/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.3 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.2 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.1.pre.1 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.19.0 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.18.2 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.18.2.pre.0 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.18.1 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.18.0 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.18.0.pre.3 app/packs/js/controllers/fields/belongs_to_field_controller.js
avo-1.18.0.pre.2 app/packs/js/controllers/fields/belongs_to_field_controller.js