aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/emoji_input/emoji_input.vue1
-rw-r--r--src/components/emoji_picker/emoji_picker.js24
-rw-r--r--src/components/emoji_picker/emoji_picker.vue9
3 files changed, 27 insertions, 7 deletions
diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue
index 81b81913..eedde9aa 100644
--- a/src/components/emoji_input/emoji_input.vue
+++ b/src/components/emoji_input/emoji_input.vue
@@ -19,6 +19,7 @@
v-if="enableEmojiPicker"
ref="picker"
:class="{ hide: !showPicker }"
+ :showing="showPicker"
:enable-sticker-picker="enableStickerPicker"
class="emoji-picker-panel"
@emoji="insert"
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 5b90c31e..8b4f302f 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -39,6 +39,10 @@ const EmojiPicker = {
required: false,
type: Boolean,
default: false
+ },
+ showing: {
+ required: true,
+ type: Boolean
}
},
data () {
@@ -48,7 +52,9 @@ const EmojiPicker = {
showingStickers: false,
groupsScrolledClass: 'scrolled-top',
keepOpen: false,
- customEmojiTimeout: null
+ customEmojiTimeout: null,
+ // Lazy-load only after the first time `showing` becomes true.
+ contentLoaded: false
}
},
components: {
@@ -115,6 +121,9 @@ const EmojiPicker = {
this.$lozad = lozad('img', {})
this.$lozad.observe()
},
+ waitForDomAndInitializeLazyLoad() {
+ this.$nextTick(() => this.initializeLazyLoad())
+ },
destroyLazyLoad () {
if (this.$lozad) {
if (this.$lozad.observer) {
@@ -129,18 +138,23 @@ const EmojiPicker = {
watch: {
keyword () {
this.onScroll()
- // Wait for the dom to change
- this.$nextTick(() => this.initializeLazyLoad())
+ this.waitForDomAndInitializeLazyLoad()
},
allCustomGroups () {
- this.$nextTick(() => this.initializeLazyLoad())
+ this.waitForDomAndInitializeLazyLoad()
+ },
+ showing (val) {
+ if (val) {
+ this.contentLoaded = true
+ this.waitForDomAndInitializeLazyLoad()
+ }
}
},
mounted () {
if (this.defaultGroup) {
this.highlight(this.defaultGroup)
}
- this.initializeLazyLoad()
+ this.waitForDomAndInitializeLazyLoad()
},
destroyed () {
this.destroyLazyLoad()
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index ed196066..b92bccd7 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -1,5 +1,7 @@
<template>
- <div class="emoji-picker panel panel-default panel-body">
+ <div
+ class="emoji-picker panel panel-default panel-body"
+ >
<div class="heading">
<span class="emoji-tabs">
<span
@@ -45,7 +47,10 @@
</span>
</span>
</div>
- <div class="content">
+ <div
+ v-if="contentLoaded"
+ class="content"
+ >
<div
class="emoji-content"
:class="{hidden: showingStickers}"