Files
openfoodnetwork/app/components/vertical_ellipsis_menu/component_controller.js
Gaetan Craig-Riou 0a04342712 Remove event listener on disconnect
It prevents memory leak
2024-09-10 13:29:39 +10:00

30 lines
576 B
JavaScript

import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["content"];
connect() {
super.connect();
window.addEventListener("click", this.#hideIfClickedOutside);
}
disconnect() {
window.removeEventListener("click", this.#hideIfClickedOutside);
}
toggle() {
this.contentTarget.classList.toggle("show");
}
#hideIfClickedOutside = (event) => {
if (this.element.contains(event.target)) {
return;
}
this.#hide();
};
#hide() {
this.contentTarget.classList.remove("show");
}
}