feat: add Stimulus dropdown controller
This commit is contained in:
24
assets/controllers/dropdown_controller.js
Normal file
24
assets/controllers/dropdown_controller.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user