Files
myep/assets/controllers/toggle_controller.js
T

40 lines
799 B
JavaScript

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