Files
sure/app/javascript/controllers/multi_select_controller.js
Bishal Shrestha efd96f606c added multi_select_controller and added multi-select support for tags without Ctrl/Shift in transaction forms (#55)
* added multi_select_controller and added multi-select support for tags without Ctrl/Shift in transaction forms

* fix: prevent memory leak by properly cleaning up event listener in multi-select controller

* chore: updated indentation
2025-08-03 07:35:34 +02:00

21 lines
544 B
JavaScript

import { Controller } from "@hotwired/stimulus";
export default class extends Controller {
connect() {
this.element.addEventListener('mousedown', this.toggleOption);
}
disconnect() {
this.element.removeEventListener('mousedown', this.toggleOption);
}
toggleOption = (e) => {
const option = e.target;
if (option.tagName === 'OPTION') {
e.preventDefault();
option.selected = !option.selected;
const event = new Event('change', { bubbles: true });
this.element.dispatchEvent(event);
}
}
}