add a spin animation to favorite and boost actions

This commit is contained in:
xj9 2017-03-08 21:45:40 -07:00
parent ba4f7ef3ef
commit 459fdaf10f
4 changed files with 28 additions and 5 deletions

View file

@ -1,5 +1,10 @@
const FavoriteButton = { const FavoriteButton = {
props: [ 'status' ], props: ['status'],
data () {
return {
animated: false
}
},
methods: { methods: {
favorite () { favorite () {
if (!this.status.favorited) { if (!this.status.favorited) {
@ -7,13 +12,18 @@ const FavoriteButton = {
} else { } else {
this.$store.dispatch('unfavorite', {id: this.status.id}) this.$store.dispatch('unfavorite', {id: this.status.id})
} }
this.animated = true
setTimeout(() => {
this.animated = false
}, 500)
} }
}, },
computed: { computed: {
classes () { classes () {
return { return {
'icon-star-empty': !this.status.favorited, 'icon-star-empty': !this.status.favorited,
'icon-star': this.status.favorited 'icon-star': this.status.favorited,
'animate-spin': this.animated
} }
} }
} }

View file

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<i :class='classes' class='favorite-button fa' v-on:click.prevent='favorite()'></i> <i :class='classes' class='favorite-button fa' @click.prevent='favorite()'/>
<span v-if='status.fave_num > 0'>{{status.fave_num}}</span> <span v-if='status.fave_num > 0'>{{status.fave_num}}</span>
</div> </div>
</template> </template>
@ -10,6 +10,7 @@
<style lang='scss'> <style lang='scss'>
.favorite-button { .favorite-button {
cursor: pointer; cursor: pointer;
animation-duration: 0.6s;
&:hover { &:hover {
color: orange; color: orange;
} }
@ -17,4 +18,5 @@
.icon-star { .icon-star {
color: orange; color: orange;
} }
</style> </style>

View file

@ -1,16 +1,26 @@
const RetweetButton = { const RetweetButton = {
props: [ 'status' ], props: ['status'],
data () {
return {
animated: false
}
},
methods: { methods: {
retweet () { retweet () {
if (!this.status.repeated) { if (!this.status.repeated) {
this.$store.dispatch('retweet', {id: this.status.id}) this.$store.dispatch('retweet', {id: this.status.id})
} }
this.animated = true
setTimeout(() => {
this.animated = false
}, 500)
} }
}, },
computed: { computed: {
classes () { classes () {
return { return {
'retweeted': this.status.repeated 'retweeted': this.status.repeated,
'animate-spin': this.animated
} }
} }
} }

View file

@ -11,6 +11,7 @@
@import '../../_variables.scss'; @import '../../_variables.scss';
.icon-retweet { .icon-retweet {
cursor: pointer; cursor: pointer;
animation-duration: 0.6s;
&:hover { &:hover {
color: $green; color: $green;
} }