aboutsummaryrefslogtreecommitdiff
path: root/src/components/emoji_picker
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/emoji_picker')
-rw-r--r--src/components/emoji_picker/emoji_picker.js8
-rw-r--r--src/components/emoji_picker/emoji_picker.scss18
-rw-r--r--src/components/emoji_picker/emoji_picker.vue22
3 files changed, 45 insertions, 3 deletions
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index bce5026e..03870a99 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -17,6 +17,7 @@ const EmojiPicker = {
keyword: '',
activeGroup: 'custom',
showingStickers: false,
+ zoomEmoji: false,
spamMode: false
}
},
@@ -60,6 +61,13 @@ const EmojiPicker = {
},
onStickerUploadFailed (e) {
this.$emit('sticker-upload-failed', e)
+ },
+ setZoomEmoji (e, emoji) {
+ this.zoomEmoji = emoji
+ const { x, y } = e.target.getBoundingClientRect()
+ console.log(e.target)
+ this.$refs['zoom-portal'].style.left = (x - 32) + 'px'
+ this.$refs['zoom-portal'].style.top = (y - 32) + 'px'
}
},
watch: {
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index e3a83bdd..872af2de 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -10,6 +10,20 @@
margin: 0 !important;
z-index: 1;
+ .zoom-portal {
+ position: fixed;
+ pointer-events: none;
+ width: 96px;
+ height: 96px;
+ font-size: 96px;
+ line-height: 96px;
+ z-index: 10;
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
.spam-mode {
padding: 7px;
line-height: normal;
@@ -135,6 +149,10 @@
cursor: pointer;
+ &:hover {
+ opacity: 0
+ }
+
img {
max-width: 100%;
max-height: 100%;
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 901520aa..5a8961d2 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -65,12 +65,16 @@
:title="emoji.displayText"
class="emoji-item"
@click.stop.prevent="onEmoji(emoji)"
- >
- <span v-if="!emoji.imageUrl">{{ emoji.replacement }}</span>
+ @mouseenter="setZoomEmoji($event, emoji)"
+ @mouseleave="setZoomEmoji($event, false)"
+ >
+ <span v-if="!emoji.imageUrl">
+ {{ emoji.replacement }}
+ </span>
<img
v-else
:src="emoji.imageUrl"
- >
+ >
</span>
</div>
</div>
@@ -95,6 +99,18 @@
/>
</div>
</div>
+ <div ref="zoom-portal" class="zoom-portal">
+ <span v-if="zoomEmoji">
+ <span v-if="!zoomEmoji.imageUrl">
+ {{ zoomEmoji.replacement }}
+ </span>
+ <img
+ v-else
+ :key="zoomEmoji.imageUrl"
+ :src="zoomEmoji.imageUrl"
+ >
+ </span>
+ </div>
</div>
</template>