make more components use new popover, fix some things

This commit is contained in:
Shpuld Shpuldson 2020-02-14 09:05:33 +02:00
commit 3c136c241f
16 changed files with 166 additions and 186 deletions

View file

@ -1,34 +1,25 @@
import Popover from '../popover/popover.vue'
import { mapGetters } from 'vuex'
const ReactButton = {
props: ['status', 'loggedIn'],
data () {
return {
showTooltip: false,
filterWord: '',
popperOptions: {
modifiers: {
preventOverflow: { padding: { top: 50 }, boundariesElement: 'viewport' }
}
}
filterWord: ''
}
},
components: {
Popover
},
methods: {
openReactionSelect () {
this.showTooltip = true
this.filterWord = ''
},
closeReactionSelect () {
this.showTooltip = false
},
addReaction (event, emoji) {
addReaction (event, emoji, close) {
const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)
if (existingReaction && existingReaction.me) {
this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })
} else {
this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })
}
this.closeReactionSelect()
close()
}
},
computed: {

View file

@ -1,13 +1,13 @@
<template>
<v-popover
:popper-options="popperOptions"
:open="showTooltip"
trigger="manual"
<Popover
trigger="click"
placement="top"
class="react-button-popover"
@hide="closeReactionSelect"
>
<div slot="popover">
<div
slot="content"
slot-scope="{close}"
>
<div class="reaction-picker-filter">
<input
v-model="filterWord"
@ -19,7 +19,7 @@
v-for="emoji in commonEmojis"
:key="emoji"
class="emoji-button"
@click="addReaction($event, emoji)"
@click="addReaction($event, emoji, close)"
>
{{ emoji }}
</span>
@ -28,7 +28,7 @@
v-for="(emoji, key) in emojis"
:key="key"
class="emoji-button"
@click="addReaction($event, emoji.replacement)"
@click="addReaction($event, emoji.replacement, close)"
>
{{ emoji.replacement }}
</span>
@ -37,14 +37,14 @@
</div>
<div
v-if="loggedIn"
@click.prevent="openReactionSelect"
slot="trigger"
>
<i
class="icon-smile button-icon add-reaction-button"
:title="$t('tool_tip.add_reaction')"
/>
</div>
</v-popover>
</Popover>
</template>
<script src="./react_button.js" ></script>