Files
myep-team/assets/controllers/toggle_controller.js
T

44 lines
997 B
JavaScript

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)
}
}