Sha256: 2c29a618ef60f454aa4674d2fe4e3665304a8fe3d5fa4413b2c091ecb08c43eb

Contents?: true

Size: 1.16 KB

Versions: 90

Compression:

Stored size: 1.16 KB

Contents

import { AttributeObserver } from '@stimulus/mutation-observers'
import { Controller } from '@hotwired/stimulus'

export default class extends Controller {
  static targets = ['resourceAction', 'standaloneAction']

  static classes = ['enabled', 'disabled']

  target = {}

  get targetIsDisabled() {
    return this.target.dataset.disabled === 'true'
  }

  enableTarget() {
    if (this.targetIsDisabled) {
      this.target.classList.remove(...this.disabledClasses)
      this.target.classList.add(...this.enabledClasses)
      this.target.dataset.disabled = false
    }
  }

  disableTarget() {
    this.target.classList.remove(...this.enabledClasses)
    this.target.classList.add(...this.disabledClasses)
    this.target.dataset.disabled = true
  }

  visitAction(event) {
    this.target = event.target

    if (this.targetIsDisabled) {
      event.preventDefault()

      return
    }

    this.disableTarget()

    const observer = new AttributeObserver(document.querySelector('turbo-frame#actions_show'), 'busy', {
      elementUnmatchedAttribute: () => {
        this.enableTarget(this.target)
        if (observer) observer.stop()
      },
    })
    observer.start()
  }
}

Version data entries

90 entries across 90 versions & 1 rubygems

Version Path
avo-2.16.1.pre.1.nativefields app/javascript/js/controllers/actions_picker_controller.js
avo-2.16.0 app/javascript/js/controllers/actions_picker_controller.js
avo-2.15.3 app/javascript/js/controllers/actions_picker_controller.js
avo-2.15.3.pre.1.data.attrs.to.sidebar.items app/javascript/js/controllers/actions_picker_controller.js
avo-2.15.2 app/javascript/js/controllers/actions_picker_controller.js
avo-2.15.2.pre.1 app/javascript/js/controllers/actions_picker_controller.js
avo-2.15.1 app/javascript/js/controllers/actions_picker_controller.js
avo-2.15.0 app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.3.pre.7.polytranslations1 app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.3.pre.6.nosprockets app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.3.pre.5.nosprockets app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.3.pre.4.tosqlfix app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.3.pre.3.jsbundling app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.3.pre.2.tailwindcss app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.3.pre.1.branding app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.2 app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.2.pre.1 app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.1 app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.1.pre.1 app/javascript/js/controllers/actions_picker_controller.js
avo-2.14.0 app/javascript/js/controllers/actions_picker_controller.js