From 1ea07a243851908132c43eab3b78a1d709400d73 Mon Sep 17 00:00:00 2001 From: thibaud-leclere Date: Sun, 29 Mar 2026 10:22:37 +0200 Subject: [PATCH] feat: add Stimulus dropdown controller --- assets/controllers/dropdown_controller.js | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 assets/controllers/dropdown_controller.js diff --git a/assets/controllers/dropdown_controller.js b/assets/controllers/dropdown_controller.js new file mode 100644 index 0000000..1bfe62b --- /dev/null +++ b/assets/controllers/dropdown_controller.js @@ -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; + } + } +}