Dropdown.js
class Dropdown extends Autowire {
get output(){
return document.getElementById('test');
}
async results(){
const json = await this.fetchText(this.n.getAttribute('x-target'), {"query":this.n.value});
const items = JSON.parse(json);
return items;
}
async onkeyup(){
const items = await this.results();
console.log(items);
const txt = 'ok';
this.output.innerHTML = txt;
const dropdown = document.createElement('div');
for (const item_text of items){
const item = document.createElement('div');
item.innerText = item_text;
dropdown.insertBefore(item,null);
new DropdownItem(item, this);
}
this.output.innerHTML = '';
this.output.insertBefore(dropdown,null);
}
}
class DropdownItem extends Autowire {
onCreate(Dropdown){
this.input = Dropdown.n;
}
onclick(){
this.input.value = this.innerHTML;
}
}