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