diff options
| author | Shpuld Shpludson <shp@cock.li> | 2020-02-28 16:39:47 +0000 |
|---|---|---|
| committer | Shpuld Shpludson <shp@cock.li> | 2020-02-28 16:39:47 +0000 |
| commit | 111c1ced676da55b5ccd8f119e5f069f53e04958 (patch) | |
| tree | ec26cdbf70913cd5176a3345862d5af225991563 /src/components/react_button | |
| parent | d19c64314ff08391a2649681e6b64d052e600059 (diff) | |
| parent | 31225f5d142b51d52bed305f25a37288c9188062 (diff) | |
Merge branch 'fix/popover-performance' into 'develop'
Fix/popover performance
See merge request pleroma/pleroma-fe!1066
Diffstat (limited to 'src/components/react_button')
| -rw-r--r-- | src/components/react_button/react_button.js | 23 | ||||
| -rw-r--r-- | src/components/react_button/react_button.vue | 32 |
2 files changed, 22 insertions, 33 deletions
diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js index a6cf5b94..19949563 100644 --- a/src/components/react_button/react_button.js +++ b/src/components/react_button/react_button.js @@ -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: { diff --git a/src/components/react_button/react_button.vue b/src/components/react_button/react_button.vue index fb43ebaf..ab4b4fcd 100644 --- a/src/components/react_button/react_button.vue +++ b/src/components/react_button/react_button.vue @@ -1,13 +1,14 @@ <template> - <v-popover - :popper-options="popperOptions" - :open="showTooltip" - trigger="manual" + <Popover + trigger="click" placement="top" + :offset="{ y: 5 }" 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 +20,7 @@ v-for="emoji in commonEmojis" :key="emoji" class="emoji-button" - @click="addReaction($event, emoji)" + @click="addReaction($event, emoji, close)" > {{ emoji }} </span> @@ -28,23 +29,20 @@ 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> <div class="reaction-bottom-fader" /> </div> </div> - <div + <i v-if="loggedIn" - @click.prevent="openReactionSelect" - > - <i - class="icon-smile button-icon add-reaction-button" - :title="$t('tool_tip.add_reaction')" - /> - </div> - </v-popover> + slot="trigger" + class="icon-smile button-icon add-reaction-button" + :title="$t('tool_tip.add_reaction')" + /> + </Popover> </template> <script src="./react_button.js" ></script> |
