44 lines
997 B
JavaScript
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)
|
|
}
|
|
}
|