Files
swingmusic-extended/src/components/SongItem.vue
T
geoffrey45 e473b5db92 misc
2022-01-11 03:36:42 +03:00

77 lines
1.8 KiB
Vue

<template>
<tr>
<td
:style="{ width: songTitleWidth + 'px' }"
class="flex"
@click="emitUpdate(song)"
>
<div
class="album-art rounded image"
:style="{
backgroundImage: `url(&quot;${song.image}&quot;)`,
}"
>
<div
class="now-playing-track image"
v-if="current._id == song._id"
:class="{ active: is_playing, not_active: !is_playing }"
></div>
</div>
<div>
<span class="ellip">{{ song.title }}</span>
</div>
</td>
<td :style="{ width: songTitleWidth + 'px' }">
<div class="ellip" v-if="song.artists[0] != ''">
<span
class="artist"
v-for="artist in putCommas(song.artists)"
:key="artist"
>{{ artist }}</span
>
</div>
<div class="ellip" v-else>
<span class="artist">{{ song.album_artist }}</span>
</div>
</td>
<td :style="{ width: songTitleWidth + 'px' }">
<router-link
class="ellip"
:to="{
name: 'AlbumView',
params: { album: song.album, artist: song.album_artist },
}"
>{{ song.album }}</router-link
>
</td>
<td
:style="{ width: songTitleWidth + 'px' }"
v-if="songTitleWidth > minWidth"
>
{{ `${Math.trunc(song.length / 60)} min` }}
</td>
</tr>
</template>
<script>
import perks from "@/composables/perks.js";
import state from "@/composables/state.js";
export default {
props: ["song", "current", "songTitleWidth", "minWidth"],
setup(props, { emit }) {
function emitUpdate(song) {
emit('updateQueue', song);
}
return {
putCommas: perks.putCommas,
emitUpdate,
is_playing: state.is_playing,
};
},
};
</script>
<style>
</style>