more work on ItemInput

This commit is contained in:
2019-06-15 16:31:16 +02:00
parent aa23fd7077
commit b345faa517
2 changed files with 35 additions and 15 deletions

View File

@@ -1,7 +1,8 @@
<template> <template>
<div class="container is-fluid"> <div class="container">
<div class="field has-addons"> <div class="field has-addons">
<div class="control" :class="{'is-loading': is_loading }"> <div class="control is-expanded"
:class="{'is-loading': is_loading }">
<input type="text" <input type="text"
v-model="search" v-model="search"
@input="autoCompletion" @input="autoCompletion"
@@ -9,15 +10,19 @@
:class="{'is-danger': no_results, :class="{'is-danger': no_results,
'is-warning': auto_open}" 'is-warning': auto_open}"
autocomplete="on"> autocomplete="on">
</input>
</div> </div>
<div class="control"> <div class="control">
<button class="button is-primary" <button class="button is-primary"
:disabled="no_results" :disabled="no_results"
@click="addItem"
>+</button> >+</button>
</div> </div>
</div> </div>
<ul class="box" v-show="auto_open"> <ul class="box" v-show="auto_open">
<li v-for="(result,i) in results" :key="i"> <li v-for="(result,i) in results" :key="i"
@click="setResult(result.name)"
>
{{ result.name }} {{ result.name }}
</li> </li>
</ul> </ul>
@@ -45,23 +50,33 @@
autoCompletion (ev) { autoCompletion (ev) {
// TODO: a lot happens here that // TODO: a lot happens here that
// need to be clarified // need to be clarified
this.auto_open = true;
if (this.search == '') { if (this.search == '') {
this.auto_open = false;
this.results = []; this.results = [];
this.no_results = false; this.no_results = false;
this.auto_open = false;
console.log("empty search");
} else { } else {
this.results = MOCK_ITEMS.filter(item => { this.results = MOCK_ITEMS.filter(item => {
return item.name.includes(this.search); return item.name.includes(this.search);
}); });
// Update status // Update status
this.no_results = this.results.length == 0; if (this.results.length == 0) {
this.no_results = true;
} else {
this.no_results = false;
this.auto_open = true;
}
} }
}, },
setResult(result) { setResult(result) {
this.search = result; this.search = result;
this.auto_open = false; this.auto_open = false;
},
addItem () {
this.$emit("addItem", this.search);
this.search = '';
this.results = [];
this.no_results = false;
this.auto_open = false;
} }
}, },
} }

View File

@@ -5,7 +5,7 @@
Nouveau loot</p> Nouveau loot</p>
</div> </div>
<div class="card-content"> <div class="card-content">
<ItemInput></ItemInput> <ItemInput @addItem="onAddItem"></ItemInput>
<p v-for="(item, idx) in looted" :key="idx" <p v-for="(item, idx) in looted" :key="idx"
class="has-text-left is-size-5"> class="has-text-left is-size-5">
{{ item }} {{ item }}
@@ -22,7 +22,12 @@
data () { return { data () { return {
looted: [], looted: [],
}; };
},
methods: {
onAddItem (item) {
this.looted.push(item);
}
}
} }
}
</script> </script>