Display all emoji groups on emoji picker header

remove-mods-files
Tusooa Zhu 3 years ago
parent ff2242e85d
commit 992d57ef69
No known key found for this signature in database
GPG Key ID: 7B467EDE43A08224

@ -38,6 +38,8 @@ const filterByKeyword = (list, keyword = '') => {
return orderedEmojiList.flat() return orderedEmojiList.flat()
} }
const packOf = emoji => (emoji.tags.filter(k => k.startsWith('pack:'))[0] || '').slice(5)
const EmojiPicker = { const EmojiPicker = {
props: { props: {
enableStickerPicker: { enableStickerPicker: {
@ -174,9 +176,12 @@ const EmojiPicker = {
} }
return 0 return 0
}, },
allEmojis () {
return this.$store.state.instance.customEmoji || []
},
filteredEmoji () { filteredEmoji () {
return filterByKeyword( return filterByKeyword(
this.$store.state.instance.customEmoji || [], this.allEmojis,
trim(this.keyword) trim(this.keyword)
) )
}, },
@ -184,7 +189,6 @@ const EmojiPicker = {
return this.filteredEmoji.slice(0, this.customEmojiBufferSlice) return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)
}, },
groupedCustomEmojis () { groupedCustomEmojis () {
const packOf = emoji => (emoji.tags.filter(k => k.startsWith('pack:'))[0] || '').slice(5)
return this.customEmojiBuffer.reduce((res, emoji) => { return this.customEmojiBuffer.reduce((res, emoji) => {
const pack = packOf(emoji) const pack = packOf(emoji)
if (!res[pack]) { if (!res[pack]) {
@ -201,6 +205,26 @@ const EmojiPicker = {
return res return res
}, {}) }, {})
}, },
allEmojiGroups () {
return this.allEmojis
.reduce((res, emoji) => {
const packName = packOf(emoji)
const packId = `custom-${packName}`
if (res.filter(k => k.id === packId).length === 0) {
res.push({
id: packId,
text: packName,
image: emoji.imageUrl
})
}
return res
}, [])
.concat({
id: 'standard',
text: this.$t('emoji.unicode'),
icon: 'box-open'
})
},
emojis () { emojis () {
const standardEmojis = this.$store.state.instance.emoji || [] const standardEmojis = this.$store.state.instance.emoji || []
// const customEmojis = this.customEmojiBuffer // const customEmojis = this.customEmojiBuffer

@ -52,6 +52,7 @@
display: flex; display: flex;
height: 32px; height: 32px;
padding: 10px 7px 5px; padding: 10px 7px 5px;
overflow-x: auto;
} }
.content { .content {
@ -63,6 +64,9 @@
.emoji-tabs { .emoji-tabs {
flex-grow: 1; flex-grow: 1;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
} }
.emoji-groups { .emoji-groups {
@ -70,6 +74,7 @@
} }
.additional-tabs { .additional-tabs {
display: block;
border-left: 1px solid; border-left: 1px solid;
border-left-color: $fallback--icon; border-left-color: $fallback--icon;
border-left-color: var(--icon, $fallback--icon); border-left-color: var(--icon, $fallback--icon);
@ -79,7 +84,6 @@
.additional-tabs, .additional-tabs,
.emoji-tabs { .emoji-tabs {
display: block;
min-width: 0; min-width: 0;
flex-basis: auto; flex-basis: auto;
flex-shrink: 1; flex-shrink: 1;

@ -3,12 +3,12 @@
<div class="heading"> <div class="heading">
<span class="emoji-tabs"> <span class="emoji-tabs">
<span <span
v-for="group in emojis" v-for="group in allEmojiGroups"
:key="group.id" :key="group.id"
class="emoji-tabs-item" class="emoji-tabs-item"
:class="{ :class="{
active: activeGroupView === group.id, active: activeGroupView === group.id,
disabled: group.emojis.length === 0 disabled: false
}" }"
:title="group.text" :title="group.text"
@click.prevent="highlight(group.id)" @click.prevent="highlight(group.id)"

Loading…
Cancel
Save