Files
openfoodnetwork/app/webpacker/controllers/dropdown_controller.js
David Cook d03b88cf83 Rename variables
To make it clear they are arrays
2023-07-11 10:48:52 +02:00

45 lines
1.1 KiB
JavaScript

import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["arrow", "menu"];
connect() {
this.collapsedClasses = this.arrowTarget.dataset.collapsedClass.split(" ");
this.expandedClasses = this.arrowTarget.dataset.expandedClass.split(" ");
this.#hide();
document.addEventListener("click", this.#onBodyClick.bind(this));
}
disconnect() {
document.removeEventListener("click", this.#onBodyClick);
}
toggle() {
if (this.element.classList.contains("disabled")) {
return;
}
if (this.menuTarget.classList.contains("hidden")) {
this.#show();
} else {
this.#hide();
}
}
#onBodyClick(event) {
if (!this.element.contains(event.target)) {
this.#hide();
}
}
#show() {
this.menuTarget.classList.remove("hidden");
this.arrowTarget.classList.remove(...this.collapsedClasses);
this.arrowTarget.classList.add(...this.expandedClasses);
}
#hide() {
this.menuTarget.classList.add("hidden");
this.arrowTarget.classList.remove(...this.expandedClasses);
this.arrowTarget.classList.add(...this.collapsedClasses);
}
}