aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTusooa Zhu <tusooa@kazv.moe>2021-10-07 23:23:58 -0400
committerTusooa Zhu <tusooa@kazv.moe>2022-09-18 13:19:51 -0400
commitc70cdbb873eb77bc1aaf7edb9defdda59bdba1e1 (patch)
tree165a38505295386c74b4ec645093fc8e4987bb90 /src
parent90f757cc6d9e1e29c2567979d3c27765f84cdc6c (diff)
Use lozad for lazy image loading
Ref: grouped-emoji-picker
Diffstat (limited to 'src')
-rw-r--r--src/components/emoji_picker/emoji_picker.js6
-rw-r--r--src/components/emoji_picker/emoji_picker.vue3
-rw-r--r--src/directives/lazy_image_container.js13
3 files changed, 20 insertions, 2 deletions
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 8e11f83f..82e5ad0b 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -1,5 +1,6 @@
import { defineAsyncComponent } from 'vue'
import Checkbox from '../checkbox/checkbox.vue'
+import LazyImageContainer from '../../directives/lazy_image_container'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
faBoxOpen,
@@ -64,6 +65,9 @@ const EmojiPicker = {
StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),
Checkbox
},
+ directives: {
+ LazyImageContainer
+ },
methods: {
onStickerUploaded (e) {
this.$emit('sticker-uploaded', e)
@@ -184,7 +188,7 @@ const EmojiPicker = {
this.showingStickers = value
},
limitedEmojis (list, groupId) {
- return list.slice(0, this.loadedCount[groupId])
+ return list // list.slice(0, this.loadedCount[groupId])
},
filterByKeyword (list, keyword) {
return filterByKeyword(list, keyword)
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 7b2b7fc8..0e6c7e41 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -62,6 +62,7 @@
</div>
<div
ref="emoji-groups"
+ v-lazy-image-container
class="emoji-groups"
:class="groupsScrolledClass"
@scroll="onScroll"
@@ -87,7 +88,7 @@
<span v-if="!emoji.imageUrl">{{ emoji.replacement }}</span>
<img
v-else
- :src="emoji.imageUrl"
+ :data-src="emoji.imageUrl"
>
</span>
<span :ref="'group-end-' + group.id" />
diff --git a/src/directives/lazy_image_container.js b/src/directives/lazy_image_container.js
new file mode 100644
index 00000000..44adc828
--- /dev/null
+++ b/src/directives/lazy_image_container.js
@@ -0,0 +1,13 @@
+
+import lozad from 'lozad'
+
+const LazyImageContainer = {
+ inserted (el) {
+ const images = el.querySelectorAll('img')
+ console.log(images.length)
+ el.$observer = lozad(images)
+ el.$observer.observe()
+ }
+}
+
+export default LazyImageContainer