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