koel/resources/assets/js/components/main-wrapper/extra/artist-info.vue

71 lines
2.1 KiB
Vue
Raw Normal View History

<template>
2016-06-25 05:24:55 +00:00
<article id="artistInfo" :class="mode">
<h1 class="name">
2016-02-08 13:14:51 +00:00
<span>{{ artist.name }}</span>
<a class="shuffle" @click.prevent="shuffleAll"><i class="fa fa-random"></i></a>
</h1>
2016-02-08 13:14:51 +00:00
<div v-if="artist.info">
<img v-if="artist.info.image" :src="artist.info.image"
title="They see me posin, they hatin"
class="cool-guys-posing cover">
2016-02-08 13:14:51 +00:00
<div class="bio" v-if="artist.info.bio.summary">
2016-06-25 05:24:55 +00:00
<div class="summary" v-show="mode !== 'full' && !showingFullBio" v-html="artist.info.bio.summary"></div>
<div class="full" v-show="mode === 'full' || showingFullBio" v-html="artist.info.bio.full"></div>
<button class="more" v-show="mode !== 'full' && !showingFullBio"
@click.prevent="showingFullBio = !showingFullBio">
Full Bio
</button>
</div>
<p class="none" v-else>This artist has no Last.fm biography yet.</p>
2016-06-25 05:24:55 +00:00
<footer>Data &copy; <a target="_blank" :href="artist.info.url">Last.fm</a></footer>
</div>
<p class="none" v-else>Nothing can be found. This artist is a mystery.</p>
</article>
</template>
<script>
2016-06-25 10:15:57 +00:00
import { playback } from '../../../services';
export default {
replace: false,
props: ['artist', 'mode'],
data() {
return {
showingFullBio: false,
};
},
methods: {
2016-01-07 09:03:38 +00:00
/**
2016-02-08 13:14:51 +00:00
* Reset the component's current state.
2016-01-07 09:03:38 +00:00
*/
resetState() {
this.showingFullBio = false;
},
2016-01-07 09:03:38 +00:00
/**
* Shuffle all songs performed by the current song's artist.
*/
shuffleAll() {
2016-02-08 13:14:51 +00:00
playback.playAllByArtist(this.artist);
},
},
2016-02-08 13:14:51 +00:00
};
</script>
<style lang="sass">
2016-03-13 17:00:32 +00:00
@import "../../../../sass/partials/_vars.scss";
@import "../../../../sass/partials/_mixins.scss";
#artistInfo {
@include artist-album-info();
}
</style>