import { Controller } from '@hotwired/stimulus' export default class extends Controller { static classes = [ 'closed' ] static targets = [ 'toggle', 'icon' ] static values = { open: Boolean, iconClosed: String, iconOpen: String, spriteUrl: String } connect() { this.target = this.hasToggleTarget ? this.toggleTarget : this.element this.openValue = !this.target.classList.contains(this.closedClass) } toggle() { this.openValue ? this._close() : this._open() } close() { this._close() } _close() { this.openValue = false this.target.classList.add(this.closedClass) } open() { this._open() } _open() { this.openValue = true this.target.classList.remove(this.closedClass) } openValueChanged() { if (false === this.hasIconTarget) { return } this.iconTarget.classList.toggle('rotate-90', true === this.openValue) } }