25 lines
630 B
JavaScript
25 lines
630 B
JavaScript
import { Controller } from '@hotwired/stimulus';
|
|
|
|
export default class extends Controller {
|
|
static targets = ['menu', 'trigger'];
|
|
|
|
connect() {
|
|
this._closeOnClickOutside = this._closeOnClickOutside.bind(this);
|
|
document.addEventListener('click', this._closeOnClickOutside);
|
|
}
|
|
|
|
disconnect() {
|
|
document.removeEventListener('click', this._closeOnClickOutside);
|
|
}
|
|
|
|
toggle() {
|
|
this.menuTarget.hidden = !this.menuTarget.hidden;
|
|
}
|
|
|
|
_closeOnClickOutside(event) {
|
|
if (!this.element.contains(event.target)) {
|
|
this.menuTarget.hidden = true;
|
|
}
|
|
}
|
|
}
|