|
@@ -84,7 +84,9 @@ const EmojiPicker = {
|
|
keepOpen: false,
|
|
keepOpen: false,
|
|
customEmojiTimeout: null,
|
|
customEmojiTimeout: null,
|
|
// Lazy-load only after the first time `showing` becomes true.
|
|
// Lazy-load only after the first time `showing` becomes true.
|
|
- contentLoaded: false
|
|
|
|
|
|
+ contentLoaded: false,
|
|
|
|
+ groupRefs: {},
|
|
|
|
+ emojiRefs: {}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
components: {
|
|
components: {
|
|
@@ -93,6 +95,12 @@ const EmojiPicker = {
|
|
StillImage
|
|
StillImage
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ setGroupRef (name) {
|
|
|
|
+ return el => { this.groupRefs[name] = el }
|
|
|
|
+ },
|
|
|
|
+ setEmojiRef (name) {
|
|
|
|
+ return el => { this.emojiRefs[name] = el }
|
|
|
|
+ },
|
|
onStickerUploaded (e) {
|
|
onStickerUploaded (e) {
|
|
this.$emit('sticker-uploaded', e)
|
|
this.$emit('sticker-uploaded', e)
|
|
},
|
|
},
|
|
@@ -112,8 +120,8 @@ const EmojiPicker = {
|
|
const top = target.scrollTop + 5
|
|
const top = target.scrollTop + 5
|
|
this.$nextTick(() => {
|
|
this.$nextTick(() => {
|
|
this.allEmojiGroups.forEach(group => {
|
|
this.allEmojiGroups.forEach(group => {
|
|
- const ref = this.$refs['group-' + group.id]
|
|
|
|
- if (ref[0].offsetTop <= top) {
|
|
|
|
|
|
+ const ref = this.groupRefs['group-' + group.id]
|
|
|
|
+ if (ref && ref.offsetTop <= top) {
|
|
this.activeGroup = group.id
|
|
this.activeGroup = group.id
|
|
}
|
|
}
|
|
})
|
|
})
|
|
@@ -122,7 +130,7 @@ const EmojiPicker = {
|
|
},
|
|
},
|
|
scrollHeader () {
|
|
scrollHeader () {
|
|
// Scroll the active tab's header into view
|
|
// Scroll the active tab's header into view
|
|
- const headerRef = this.$refs['group-header-' + this.activeGroup][0]
|
|
|
|
|
|
+ const headerRef = this.groupRefs['group-header-' + this.activeGroup]
|
|
const left = headerRef.offsetLeft
|
|
const left = headerRef.offsetLeft
|
|
const right = left + headerRef.offsetWidth
|
|
const right = left + headerRef.offsetWidth
|
|
const headerCont = this.$refs.header
|
|
const headerCont = this.$refs.header
|
|
@@ -138,7 +146,7 @@ const EmojiPicker = {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
highlight (key) {
|
|
highlight (key) {
|
|
- const ref = this.$refs['group-' + key]
|
|
|
|
|
|
+ const ref = this.groupRefs['group-' + key]
|
|
const top = ref.offsetTop
|
|
const top = ref.offsetTop
|
|
this.setShowStickers(false)
|
|
this.setShowStickers(false)
|
|
this.activeGroup = key
|
|
this.activeGroup = key
|
|
@@ -169,7 +177,8 @@ const EmojiPicker = {
|
|
this.$nextTick(() => {
|
|
this.$nextTick(() => {
|
|
this.$lozad = lozad('.still-image.emoji-picker-emoji', {
|
|
this.$lozad = lozad('.still-image.emoji-picker-emoji', {
|
|
load: el => {
|
|
load: el => {
|
|
- const vn = el.__vue__
|
|
|
|
|
|
+ const name = el.getAttribute('data-emoji-name')
|
|
|
|
+ const vn = this.emojiRefs[name]
|
|
if (!vn) {
|
|
if (!vn) {
|
|
return
|
|
return
|
|
}
|
|
}
|