35 lines
1.4 KiB
JavaScript
35 lines
1.4 KiB
JavaScript
import { Controller } from '@hotwired/stimulus';
|
|
|
|
export default class extends Controller {
|
|
initialize() {
|
|
this._onPreConnect = this._onPreConnect.bind(this);
|
|
this._onConnect = this._onConnect.bind(this);
|
|
}
|
|
|
|
connect() {
|
|
this.element.addEventListener('autocomplete:pre-connect', this._onPreConnect);
|
|
this.element.addEventListener('autocomplete:connect', this._onConnect);
|
|
}
|
|
|
|
disconnect() {
|
|
// You should always remove listeners when the controller is disconnected to avoid side-effects
|
|
this.element.removeEventListener('autocomplete:connect', this._onConnect);
|
|
this.element.removeEventListener('autocomplete:pre-connect', this._onPreConnect);
|
|
}
|
|
|
|
_onPreConnect(event) {
|
|
// TomSelect has not been initialized - options can be changed
|
|
console.log(event.detail.options); // Options that will be used to initialize TomSelect
|
|
event.detail.options.onItemAdd = (value, $item) => {
|
|
console.log(value, $item)
|
|
const params = value.split('|')
|
|
window.location.href = `/result/${params[0]}/${params[1]}`
|
|
};
|
|
}
|
|
|
|
_onConnect(event) {
|
|
// TomSelect has just been initialized and you can access details from the event
|
|
console.log(event.detail.tomSelect); // TomSelect instance
|
|
console.log(event.detail.options); // Options used to initialize TomSelect
|
|
}
|
|
} |