Sha256: 22f2fac9a16d7b9bed151613e5df65a1afe7ecc4a6bfb3ce8196f2d276f91b8c

Contents?: true

Size: 1.92 KB

Versions: 326

Compression:

Stored size: 1.92 KB

Contents

import { Controller } from '@hotwired/stimulus'
import camelCase from 'lodash/camelCase'

export default class extends Controller {
  static targets = []

  static values = {
    view: String,
  }

  debugOnInput(e) {
    // eslint-disable-next-line no-console
    console.log('onInput', e, e.target.value)
  }

  toggle({ params }) {
    const { toggleTarget, toggleTargets } = params

    if (toggleTarget) {
      this.toggleAvoTarget(toggleTarget)
    }

    if (toggleTargets && toggleTargets.length > 0) {
      toggleTargets.forEach(this.toggleAvoTarget.bind(this))
    }
  }

  disable({ params }) {
    const { disableTarget, disableTargets } = params

    if (disableTarget) {
      this.disableAvoTarget(disableTarget)
    }

    if (disableTargets && disableTargets.length > 0) {
      disableTargets.forEach(this.disableAvoTarget.bind(this))
    }
  }

  // Private

  toggleAvoTarget(targetName) {
    // compose the default wrapper data value
    const target = camelCase(targetName)
    const element = document.querySelector(`[data-resource-edit-target="${target}"]`)

    if (element) {
      element.classList.toggle('hidden')
    }
  }

  disableAvoTarget(targetName) {
    // compose the default wrapper data value
    const target = camelCase(targetName)

    // find & disable direct selector
    document.querySelectorAll(`[data-resource-edit-target="${target}"]`).forEach(this.toggleItemDisabled)

    // find & disable inputs
    document.querySelectorAll(`[data-resource-edit-target="${target}"] input`).forEach(this.toggleItemDisabled)

    // find & disable select fields
    document.querySelectorAll(`[data-resource-edit-target="${target}"] select`).forEach(this.toggleItemDisabled)

    // find & disable buttons for belongs_to
    document.querySelectorAll(`[data-resource-edit-target="${target}"] [data-slot="value"] button`).forEach(this.toggleItemDisabled)
  }

  toggleItemDisabled(item) {
    item.disabled = !item.disabled
  }
}

Version data entries

326 entries across 326 versions & 1 rubygems

Version Path
avo-3.18.1.tw4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.18.1 app/javascript/js/controllers/resource_edit_controller.js
avo-3.18.0.tw4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.18.0 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.9.beta2 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.9.beta1 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.9.tw4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.9 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.8.tw4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.8 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.7 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.6.tw4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.6 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.5 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.3 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.5.tw4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.4.tw4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.3.tw4 app/javascript/js/controllers/resource_edit_controller.js
avo-3.17.2.tw4 app/javascript/js/controllers/resource_edit_controller.js