more work on ItemInput
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user