aboutsummaryrefslogtreecommitdiff
path: root/src/components/emoji_reactions
diff options
context:
space:
mode:
authorShpuld Shpludson <shp@cock.li>2020-02-28 16:39:47 +0000
committerShpuld Shpludson <shp@cock.li>2020-02-28 16:39:47 +0000
commit31225f5d142b51d52bed305f25a37288c9188062 (patch)
treeec26cdbf70913cd5176a3345862d5af225991563 /src/components/emoji_reactions
parentd19c64314ff08391a2649681e6b64d052e600059 (diff)
Fix/popover performance
Diffstat (limited to 'src/components/emoji_reactions')
-rw-r--r--src/components/emoji_reactions/emoji_reactions.js11
-rw-r--r--src/components/emoji_reactions/emoji_reactions.vue33
2 files changed, 23 insertions, 21 deletions
diff --git a/src/components/emoji_reactions/emoji_reactions.js b/src/components/emoji_reactions/emoji_reactions.js
index b799ac9a..ae7f53be 100644
--- a/src/components/emoji_reactions/emoji_reactions.js
+++ b/src/components/emoji_reactions/emoji_reactions.js
@@ -1,20 +1,17 @@
import UserAvatar from '../user_avatar/user_avatar.vue'
+import Popover from '../popover/popover.vue'
const EMOJI_REACTION_COUNT_CUTOFF = 12
const EmojiReactions = {
name: 'EmojiReactions',
components: {
- UserAvatar
+ UserAvatar,
+ Popover
},
props: ['status'],
data: () => ({
- showAll: false,
- popperOptions: {
- modifiers: {
- preventOverflow: { padding: { top: 50 }, boundariesElement: 'viewport' }
- }
- }
+ showAll: false
}),
computed: {
tooManyReactions () {
diff --git a/src/components/emoji_reactions/emoji_reactions.vue b/src/components/emoji_reactions/emoji_reactions.vue
index b25c9716..bac4c605 100644
--- a/src/components/emoji_reactions/emoji_reactions.vue
+++ b/src/components/emoji_reactions/emoji_reactions.vue
@@ -1,15 +1,14 @@
<template>
<div class="emoji-reactions">
- <v-popover
+ <Popover
v-for="(reaction) in emojiReactions"
:key="reaction.name"
- :popper-options="popperOptions"
trigger="hover"
placement="top"
+ :offset="{ y: 5 }"
>
-
<div
- slot="popover"
+ slot="content"
class="reacted-users"
>
<div v-if="accountsForEmoji[reaction.name].length">
@@ -24,7 +23,12 @@
:compact="true"
/>
<div class="reacted-user-names">
- <span class="reacted-user-name" v-html="account.name_html" />
+ <!-- eslint-disable vue/no-v-html -->
+ <span
+ class="reacted-user-name"
+ v-html="account.name_html"
+ />
+ <!-- eslint-enable vue/no-v-html -->
<span class="reacted-user-screen-name">{{ account.screen_name }}</span>
</div>
</div>
@@ -34,6 +38,7 @@
</div>
</div>
<button
+ slot="trigger"
class="emoji-reaction btn btn-default"
:class="{ 'picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }"
@click="emojiOnClick(reaction.name, $event)"
@@ -42,17 +47,16 @@
<span class="reaction-emoji">{{ reaction.name }}</span>
<span>{{ reaction.count }}</span>
</button>
- </v-popover>
+ </Popover>
<a
- v-if="tooManyReactions"
- @click="toggleShowAll"
- class="emoji-reaction-expand faint"
- href='javascript:void(0)'
- >
- {{ showAll ? $t('general.show_less') : showMoreString }}
- </a>
+ v-if="tooManyReactions"
+ class="emoji-reaction-expand faint"
+ href="javascript:void(0)"
+ @click="toggleShowAll"
+ >
+ {{ showAll ? $t('general.show_less') : showMoreString }}
+ </a>
</div>
-
</template>
<script src="./emoji_reactions.js" ></script>
@@ -78,6 +82,7 @@
display: flex;
flex-direction: column;
margin-left: 0.5em;
+ min-width: 5em;
img {
width: 1em;