Skip to content
Snippets Groups Projects
Row.vue 1.92 KiB
Newer Older
  • Learn to ignore specific revisions
  • <template>
      <tr>
        <td>
          <play-button class="basic icon" :discrete="true" :track="track"></play-button>
        </td>
        <td>
          <img class="ui mini image" v-if="track.album.cover" v-lazy="backend.absoluteUrl(track.album.cover)">
          <img class="ui mini image" v-else src="../../..//assets/audio/default-cover.png">
        </td>
        <td colspan="6">
          <router-link class="track" :to="{name: 'library.tracks.detail', params: {id: track.id }}">
            <template v-if="displayPosition && track.position">
              {{ track.position }}.
            </template>
            {{ track.title }}
          </router-link>
        </td>
        <td colspan="6">
          <router-link class="artist discrete link" :to="{name: 'library.artists.detail', params: {id: track.artist.id }}">
            {{ track.artist.name }}
          </router-link>
        </td>
        <td colspan="6">
          <router-link class="album discrete link" :to="{name: 'library.albums.detail', params: {id: track.album.id }}">
            {{ track.album.title }}
          </router-link>
        </td>
        <td>
          <track-favorite-icon class="favorite-icon" :track="track"></track-favorite-icon>
          <track-playlist-icon
            v-if="$store.state.auth.authenticated"
            :track="track"></track-playlist-icon>
        </td>
      </tr>
    </template>
    
    <script>
    import backend from '@/audio/backend'
    
    import TrackFavoriteIcon from '@/components/favorites/TrackFavoriteIcon'
    import TrackPlaylistIcon from '@/components/playlists/TrackPlaylistIcon'
    import PlayButton from '@/components/audio/PlayButton'
    
    export default {
      props: {
        track: {type: Object, required: true},
        displayPosition: {type: Boolean, default: false}
      },
      components: {
        TrackFavoriteIcon,
        TrackPlaylistIcon,
        PlayButton
      },
      data () {
        return {
          backend: backend
        }
      }
    }
    </script>
    
    <!-- Add "scoped" attribute to limit CSS to this component only -->
    <style scoped>
    
    tr:not(:hover) .favorite-icon:not(.favorited) {
      display: none;
    }
    </style>