mirror of
https://github.com/owntone/owntone-server.git
synced 2024-12-27 07:35:57 -05:00
[web] Fix icon when track is not playable
Spotify tracks that are not playable have now a "not allowed" cursor when hovered. Moreover, the Bulma CSS class is now used for clickable items instead of a custom one.
This commit is contained in:
parent
6a2f85e04f
commit
bbe29a7a63
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -13,11 +13,11 @@
|
|||||||
:artwork_url="album.item.artwork_url"
|
:artwork_url="album.item.artwork_url"
|
||||||
:artist="album.item.artist"
|
:artist="album.item.artist"
|
||||||
:album="album.item.name"
|
:album="album.item.name"
|
||||||
class="fd-has-action fd-has-shadow fd-cover fd-cover-small-image"
|
class="is-clickable fd-has-shadow fd-cover fd-cover-small-image"
|
||||||
@click="show_album_details_modal = true"
|
@click="show_album_details_modal = true"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<div style="margin-top: 0.7rem">
|
<div style="margin-top: 0.7rem">
|
||||||
<h1 class="title is-6" v-text="album.item.name" />
|
<h1 class="title is-6" v-text="album.item.name" />
|
||||||
<h2 class="subtitle is-7 has-text-grey">
|
<h2 class="subtitle is-7 has-text-grey">
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
class="media"
|
class="media"
|
||||||
@click="open_artist(artist.item)"
|
@click="open_artist(artist.item)"
|
||||||
>
|
>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<h1 class="title is-6" v-text="artist.item.name" />
|
<h1 class="title is-6" v-text="artist.item.name" />
|
||||||
</div>
|
</div>
|
||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
class="media"
|
class="media"
|
||||||
@click="open_composer(composer.item)"
|
@click="open_composer(composer.item)"
|
||||||
>
|
>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<h1 class="title is-6" v-text="composer.item.name" />
|
<h1 class="title is-6" v-text="composer.item.name" />
|
||||||
</div>
|
</div>
|
||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
|
@ -4,12 +4,12 @@
|
|||||||
class="media"
|
class="media"
|
||||||
@click="open_parent_directory()"
|
@click="open_parent_directory()"
|
||||||
>
|
>
|
||||||
<figure class="media-left fd-has-action">
|
<figure class="media-left is-clickable">
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><mdicon name="subdirectory-arrow-left" size="16"
|
><mdicon name="subdirectory-arrow-left" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<h1 class="title is-6">..</h1>
|
<h1 class="title is-6">..</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
@ -18,10 +18,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<template v-for="directory in directories" :key="directory.path">
|
<template v-for="directory in directories" :key="directory.path">
|
||||||
<div class="media" @click="open_directory(directory)">
|
<div class="media" @click="open_directory(directory)">
|
||||||
<figure class="media-left fd-has-action">
|
<figure class="media-left is-clickable">
|
||||||
<span class="icon"><mdicon name="folder" size="16" /></span>
|
<span class="icon"><mdicon name="folder" size="16" /></span>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<h1
|
<h1
|
||||||
class="title is-6"
|
class="title is-6"
|
||||||
v-text="directory.path.substring(directory.path.lastIndexOf('/') + 1)"
|
v-text="directory.path.substring(directory.path.lastIndexOf('/') + 1)"
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="genre.isItem" class="media" @click="open_genre(genre.item)">
|
<div v-else-if="genre.isItem" class="media" @click="open_genre(genre.item)">
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<h1 class="title is-6" v-text="genre.item.name" />
|
<h1 class="title is-6" v-text="genre.item.name" />
|
||||||
</div>
|
</div>
|
||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
><mdicon name="drag-horizontal" size="16"
|
><mdicon name="drag-horizontal" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="media-content fd-has-action is-clipped" @click="play">
|
<div class="media-content is-clickable is-clipped" @click="play">
|
||||||
<h1
|
<h1
|
||||||
class="title is-6"
|
class="title is-6"
|
||||||
:class="{
|
:class="{
|
||||||
|
@ -6,12 +6,12 @@
|
|||||||
:playlist="playlist"
|
:playlist="playlist"
|
||||||
@click="open_playlist(playlist.item)"
|
@click="open_playlist(playlist.item)"
|
||||||
>
|
>
|
||||||
<figure class="media-left fd-has-action">
|
<figure class="media-left is-clickable">
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><mdicon :name="icon_name(playlist.item)" size="16"
|
><mdicon :name="icon_name(playlist.item)" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<h1 class="title is-6" v-text="playlist.item.name" />
|
<h1 class="title is-6" v-text="playlist.item.name" />
|
||||||
</div>
|
</div>
|
||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
|
@ -13,10 +13,10 @@
|
|||||||
:class="{ 'with-progress': show_progress }"
|
:class="{ 'with-progress': show_progress }"
|
||||||
@click="play_track(index, track.item)"
|
@click="play_track(index, track.item)"
|
||||||
>
|
>
|
||||||
<figure v-if="show_icon" class="media-left fd-has-action">
|
<figure v-if="show_icon" class="media-left is-clickable">
|
||||||
<span class="icon"><mdicon name="file-outline" size="16" /></span>
|
<span class="icon"><mdicon name="file-outline" size="16" /></span>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<h1
|
<h1
|
||||||
class="title is-6"
|
class="title is-6"
|
||||||
:class="{
|
:class="{
|
||||||
|
@ -146,7 +146,7 @@
|
|||||||
class="button is-white is-small"
|
class="button is-white is-small"
|
||||||
:class="{ 'is-loading': loading }"
|
:class="{ 'is-loading': loading }"
|
||||||
><span
|
><span
|
||||||
class="icon fd-has-action"
|
class="icon is-clickable"
|
||||||
:class="{
|
:class="{
|
||||||
'has-text-grey-light': !playing && !loading,
|
'has-text-grey-light': !playing && !loading,
|
||||||
'is-loading': loading
|
'is-loading': loading
|
||||||
@ -269,7 +269,7 @@
|
|||||||
:class="{ 'is-loading': loading }"
|
:class="{ 'is-loading': loading }"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="icon fd-has-action"
|
class="icon is-clickable"
|
||||||
:class="{
|
:class="{
|
||||||
'has-text-grey-light': !playing && !loading,
|
'has-text-grey-light': !playing && !loading,
|
||||||
'is-loading': loading
|
'is-loading': loading
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<div class="level-item" style="flex-grow: 0">
|
<div class="level-item" style="flex-grow: 0">
|
||||||
<a class="button is-white is-small">
|
<a class="button is-white is-small">
|
||||||
<span
|
<span
|
||||||
class="icon fd-has-action"
|
class="icon is-clickable"
|
||||||
:class="{ 'has-text-grey-light': !output.selected }"
|
:class="{ 'has-text-grey-light': !output.selected }"
|
||||||
@click="set_enabled"
|
@click="set_enabled"
|
||||||
><mdicon :name="type_class" size="18" :title="output.type"
|
><mdicon :name="type_class" size="18" :title="output.type"
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="media">
|
<div class="media">
|
||||||
<div v-if="$slots['artwork']" class="media-left fd-has-action">
|
<div v-if="$slots['artwork']" class="media-left is-clickable">
|
||||||
<slot name="artwork" />
|
<slot name="artwork" />
|
||||||
</div>
|
</div>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content is-clickable is-clipped">
|
||||||
<h1 class="title is-6" v-text="album.name" />
|
<h1 class="title is-6" v-text="album.name" />
|
||||||
<h2 class="subtitle is-7 has-text-grey">
|
<h2 class="subtitle is-7 has-text-grey">
|
||||||
<b v-text="album.artists[0].name" />
|
<b v-text="album.artists[0].name" />
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="media">
|
<div class="media">
|
||||||
<div class="media-content fd-has-action is-clipped" @click="open_artist">
|
<div class="media-content is-clickable is-clipped" @click="open_artist">
|
||||||
<h1 class="title is-6" v-text="artist.name" />
|
<h1 class="title is-6" v-text="artist.name" />
|
||||||
</div>
|
</div>
|
||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="media">
|
<div class="media">
|
||||||
<div class="media-content fd-has-action is-clipped" @click="open_playlist">
|
<div class="media-content is-clickable is-clipped" @click="open_playlist">
|
||||||
<h1 class="title is-6" v-text="playlist.name" />
|
<h1 class="title is-6" v-text="playlist.name" />
|
||||||
<h2 class="subtitle is-7" v-text="playlist.owner.display_name" />
|
<h2 class="subtitle is-7" v-text="playlist.owner.display_name" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
<div
|
<div
|
||||||
class="media-content is-clipped"
|
class="media-content is-clipped"
|
||||||
:class="{
|
:class="{
|
||||||
'is-clickable': track.is_playable
|
'is-clickable': track.is_playable,
|
||||||
|
'fd-is-not-allowed': !track.is_playable
|
||||||
}"
|
}"
|
||||||
@click="play"
|
@click="play"
|
||||||
>
|
>
|
||||||
|
@ -66,8 +66,8 @@ a.navbar-item {
|
|||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fd-has-action {
|
.fd-is-not-allowed {
|
||||||
cursor: pointer;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fd-is-movable {
|
.fd-is-movable {
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
:artwork_url="album.artwork_url"
|
:artwork_url="album.artwork_url"
|
||||||
:artist="album.artist"
|
:artist="album.artist"
|
||||||
:album="album.name"
|
:album="album.name"
|
||||||
class="fd-has-action fd-has-shadow fd-cover fd-cover-medium-image"
|
class="is-clickable fd-has-shadow fd-cover fd-cover-medium-image"
|
||||||
@click="show_album_details_modal = true"
|
@click="show_album_details_modal = true"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
:artwork_url="album.artwork_url"
|
:artwork_url="album.artwork_url"
|
||||||
:artist="album.artist"
|
:artist="album.artist"
|
||||||
:album="album.name"
|
:album="album.name"
|
||||||
class="fd-has-action fd-has-shadow fd-cover fd-cover-medium-image"
|
class="is-clickable fd-has-shadow fd-cover fd-cover-medium-image"
|
||||||
@click="show_album_details_modal = true"
|
@click="show_album_details_modal = true"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
:artwork_url="now_playing.artwork_url"
|
:artwork_url="now_playing.artwork_url"
|
||||||
:artist="now_playing.artist"
|
:artist="now_playing.artist"
|
||||||
:album="now_playing.album"
|
:album="now_playing.album"
|
||||||
class="fd-has-action fd-has-shadow fd-is-expanded fd-cover fd-cover-big-image"
|
class="is-clickable fd-has-shadow fd-is-expanded fd-cover fd-cover-big-image"
|
||||||
@click="open_dialog(now_playing)"
|
@click="open_dialog(now_playing)"
|
||||||
/>
|
/>
|
||||||
<div class="fd-has-padding-left-right">
|
<div class="fd-has-padding-left-right">
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
:artwork_url="artwork_url"
|
:artwork_url="artwork_url"
|
||||||
:artist="album.artist"
|
:artist="album.artist"
|
||||||
:album="album.name"
|
:album="album.name"
|
||||||
class="fd-has-action fd-has-shadow fd-cover fd-cover-medium-image"
|
class="is-clickable fd-has-shadow fd-cover fd-cover-medium-image"
|
||||||
@click="show_album_details_modal = true"
|
@click="show_album_details_modal = true"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
:artwork_url="artwork_url(album)"
|
:artwork_url="artwork_url(album)"
|
||||||
:artist="album.artist"
|
:artist="album.artist"
|
||||||
:album="album.name"
|
:album="album.name"
|
||||||
class="fd-has-action fd-has-shadow fd-cover fd-cover-small-image"
|
class="is-clickable fd-has-shadow fd-cover fd-cover-small-image"
|
||||||
:maxwidth="64"
|
:maxwidth="64"
|
||||||
:maxheight="64"
|
:maxheight="64"
|
||||||
/>
|
/>
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
:artwork_url="artwork_url(album)"
|
:artwork_url="artwork_url(album)"
|
||||||
:artist="album.artist"
|
:artist="album.artist"
|
||||||
:album="album.name"
|
:album="album.name"
|
||||||
class="fd-has-action fd-has-shadow fd-cover fd-cover-small-image"
|
class="is-clickable fd-has-shadow fd-cover fd-cover-small-image"
|
||||||
:maxwidth="64"
|
:maxwidth="64"
|
||||||
:maxheight="64"
|
:maxheight="64"
|
||||||
/>
|
/>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
:artwork_url="artwork_url(album)"
|
:artwork_url="artwork_url(album)"
|
||||||
:artist="album.artist"
|
:artist="album.artist"
|
||||||
:album="album.name"
|
:album="album.name"
|
||||||
class="fd-has-action fd-has-shadow fd-cover fd-cover-small-image"
|
class="is-clickable fd-has-shadow fd-cover fd-cover-small-image"
|
||||||
:maxwidth="64"
|
:maxwidth="64"
|
||||||
:maxheight="64"
|
:maxheight="64"
|
||||||
/>
|
/>
|
||||||
|
@ -66,7 +66,6 @@ import store from '@/store'
|
|||||||
import webapi from '@/webapi'
|
import webapi from '@/webapi'
|
||||||
import SpotifyWebApi from 'spotify-web-api-js'
|
import SpotifyWebApi from 'spotify-web-api-js'
|
||||||
import { VueEternalLoading } from '@ts-pro/vue-eternal-loading'
|
import { VueEternalLoading } from '@ts-pro/vue-eternal-loading'
|
||||||
import { mdiAxe } from '@mdi/js'
|
|
||||||
|
|
||||||
const PAGE_SIZE = 50
|
const PAGE_SIZE = 50
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@
|
|||||||
:artwork_url="artwork_url(album)"
|
:artwork_url="artwork_url(album)"
|
||||||
:artist="album.artist"
|
:artist="album.artist"
|
||||||
:album="album.name"
|
:album="album.name"
|
||||||
class="fd-has-action fd-has-shadow fd-cover fd-cover-small-image"
|
class="is-clickable fd-has-shadow fd-cover fd-cover-small-image"
|
||||||
:maxwidth="64"
|
:maxwidth="64"
|
||||||
:maxheight="64"
|
:maxheight="64"
|
||||||
/>
|
/>
|
||||||
|
Loading…
Reference in New Issue
Block a user