40 lines
799 B
JavaScript
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)
|
|
}
|
|
}
|