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