a11yist/app/javascript/controllers/collapse_chevron_toggler_controller.js

31 lines
962 B
JavaScript
Raw Permalink Normal View History

2024-07-20 16:52:12 +02:00
import { Controller } from "@hotwired/stimulus"
// Connects to data-controller="collapse-chevron-toggler"
export default class extends Controller {
2024-11-11 05:00:51 +01:00
static targets = ["icon"];
2024-07-20 16:52:12 +02:00
collapsible = null;
connect() {
this.collapsible = window.document.getElementById(this.element.getAttribute('href').substring(1));
this.setIcon();
2024-11-11 05:00:51 +01:00
2024-07-20 16:52:12 +02:00
this.collapsible.addEventListener('hide.bs.collapse', e => this.toggle())
this.collapsible.addEventListener('show.bs.collapse', e => this.toggle())
}
setIcon(reverted = false) {
2024-11-11 05:00:51 +01:00
if (this.collapsible.classList.contains('show')) {
2024-07-20 16:52:12 +02:00
this.iconTarget.classList.remove('bi-chevron-down')
this.iconTarget.classList.add('bi-chevron-up')
} else {
this.iconTarget.classList.remove('bi-chevron-up')
this.iconTarget.classList.add('bi-chevron-down')
}
}
toggle() {
this.iconTarget.classList.toggle('bi-chevron-down');
this.iconTarget.classList.toggle('bi-chevron-up');
}
}