diff options
Diffstat (limited to 'src/components/emoji_picker/emoji_picker.js')
| -rw-r--r-- | src/components/emoji_picker/emoji_picker.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js new file mode 100644 index 00000000..92d517b7 --- /dev/null +++ b/src/components/emoji_picker/emoji_picker.js @@ -0,0 +1,53 @@ +const filterByKeyword = (list, keyword = '') => { + return list.filter(x => x.displayText.includes(keyword)) +} + +const EmojiPicker = { + data () { + return { + keyword: '', + activeGroup: 'standard' + } + }, + methods: { + onEmoji (emoji) { + const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement + this.$emit('emoji', ` ${value} `) + this.open = false + }, + highlight (key) { + const ref = this.$refs['group-' + key] + const top = ref[0].offsetTop + this.$refs['emoji-groups'].scrollTop = top + 1 + this.activeGroup = key + }, + scrolledGroup (e) { + const top = e.target.scrollTop + Object.keys(this.emojis).forEach(key => { + if (this.$refs['group-' + key][0].offsetTop < top) { + this.activeGroup = key + } + }) + } + }, + computed: { + emojis () { + const standardEmojis = this.$store.state.instance.emoji || [] + const customEmojis = this.$store.state.instance.customEmoji || [] + return { + custom: { + text: 'Custom', + icon: 'icon-picture', + emojis: filterByKeyword(customEmojis, this.keyword) + }, + standard: { + text: 'Standard', + icon: 'icon-star', + emojis: filterByKeyword(standardEmojis, this.keyword) + } + } + } + } +} + +export default EmojiPicker |
