standartized autocomplete panel suggesions format, fixed some bugs
This commit is contained in:
parent
ca3140fd3e
commit
8872b4802e
7 changed files with 129 additions and 112 deletions
|
@ -1,38 +1,25 @@
|
|||
<template>
|
||||
<div class="emoji-input">
|
||||
<slot
|
||||
:class="classname"
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
@input="onInput"
|
||||
@click="setCaret"
|
||||
@keyup="setCaret"
|
||||
@keydown="onKeydown"
|
||||
@keydown.down="cycleForward"
|
||||
@keydown.up="cycleBackward"
|
||||
@keydown.shift.tab="cycleBackward"
|
||||
@keydown.tab="cycleForward"
|
||||
@keydown.enter="replaceEmoji"
|
||||
>
|
||||
</slot>
|
||||
<div class="autocomplete-panel" v-if="suggestions">
|
||||
<div class="autocomplete-panel-body">
|
||||
<div
|
||||
v-for="(suggestion, index) in suggestions"
|
||||
:key="index"
|
||||
@click="replace(suggestion.replacement)"
|
||||
class="autocomplete-item"
|
||||
:class="{ highlighted: suggestion.highlighted }"
|
||||
<div class="emoji-input">
|
||||
<slot></slot>
|
||||
<div ref="panel" class="autocomplete-panel" :class="{ hide: suggestions}">
|
||||
<div class="autocomplete-panel-body">
|
||||
<div
|
||||
v-for="(suggestion, index) in suggestions"
|
||||
:key="index"
|
||||
@click.stop.prevent="replace(suggestion.replacement)"
|
||||
class="autocomplete-item"
|
||||
:class="{ highlighted: suggestion.highlighted }"
|
||||
>
|
||||
<span v-if="suggestion.img">
|
||||
<img :src="suggestion.img" />
|
||||
</span>
|
||||
<span v-else>{{suggestion.replacement}}</span>
|
||||
<span>{{suggestion.shortcode}}</span>
|
||||
<span v-if="suggestion.img">
|
||||
<img :src="suggestion.img" />
|
||||
</span>
|
||||
<span v-else>{{suggestion.replacement}}</span>
|
||||
<span>{{suggestion.displayText}}</span>
|
||||
<span>{{suggestion.detailText}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script src="./emoji-input.js"></script>
|
||||
|
@ -41,8 +28,21 @@
|
|||
@import '../../_variables.scss';
|
||||
|
||||
.emoji-input {
|
||||
.form-control {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&.hide {
|
||||
display: none
|
||||
}
|
||||
|
||||
.autocomplete-panel {
|
||||
position: absolute;
|
||||
z-index: 9;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
input, textarea {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue