Vue
HTML
<div id="app">
<input v-on:blur="_close" v-on:keyup="_show"/>
<ul v-if="open">
<li v-on:click="set_data('A')">A</li>
<li v-on:click="set_data('B')">B</li>
<li v-on:click="set_data('C')">C</li>
</ul>
<div>
{{letter}}
<!-- this letter will be always empty -->
</div>
</div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
del {
color: rgba(0, 0, 0, 0.3);
}
li{
cursor: pointer;
}
li:hover{
background: #ebebeb;
}
Vue
new Vue({
el: "#app",
data:{
open: false,
letter: ""
},
methods: {
set_data(letter) {
this.letter = letter
},
_close(){
this.open = false;
//i can add here setTimeOut function but i dont know how many miliseconds/seconds blur will be pressed
//someone can hold it for 10 - 20 just to proof that you cna not relay on setTimeout
},
_show(){
this.open = true;
}
}
})