mirror of
https://github.com/owntone/owntone-server.git
synced 2025-04-14 08:16:17 -04:00
commit
9c4d246c8b
@ -24,10 +24,5 @@ htdocsassetsdir = $(datadir)/owntone/htdocs/assets
|
|||||||
|
|
||||||
dist_htdocsassets_DATA = \
|
dist_htdocsassets_DATA = \
|
||||||
assets/index.css \
|
assets/index.css \
|
||||||
assets/index.js \
|
assets/index.js
|
||||||
assets/materialdesignicons-webfont.svg \
|
|
||||||
assets/materialdesignicons-webfont.ttf \
|
|
||||||
assets/materialdesignicons-webfont.woff2 \
|
|
||||||
assets/materialdesignicons-webfont.woff \
|
|
||||||
assets/materialdesignicons-webfont.eot
|
|
||||||
endif
|
endif
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 2.3 MiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
40
web-src/package-lock.json
generated
40
web-src/package-lock.json
generated
@ -9,13 +9,14 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aacassandra/vue3-progressbar": "^1.0.3",
|
"@aacassandra/vue3-progressbar": "^1.0.3",
|
||||||
|
"@mdi/js": "^6.6.96",
|
||||||
"@ts-pro/vue-eternal-loading": "^1.2.0",
|
"@ts-pro/vue-eternal-loading": "^1.2.0",
|
||||||
"@vueform/slider": "github:chme/slider#faff83ed8a77f2cdbcb7252505ef734301efd139",
|
"@vueform/slider": "github:chme/slider#faff83ed8a77f2cdbcb7252505ef734301efd139",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
"bulma": "^0.9.3",
|
"bulma": "^0.9.3",
|
||||||
"bulma-switch": "^2.0.4",
|
"bulma-switch": "^2.0.4",
|
||||||
"luxon": "^2.3.1",
|
"luxon": "^2.3.1",
|
||||||
"mdi": "^2.2.43",
|
"mdi-vue": "^3.0.12",
|
||||||
"reconnectingwebsocket": "^1.0.0",
|
"reconnectingwebsocket": "^1.0.0",
|
||||||
"spotify-web-api-js": "^1.5.2",
|
"spotify-web-api-js": "^1.5.2",
|
||||||
"string-to-color": "^2.2.2",
|
"string-to-color": "^2.2.2",
|
||||||
@ -97,6 +98,11 @@
|
|||||||
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@mdi/js": {
|
||||||
|
"version": "6.6.96",
|
||||||
|
"resolved": "https://registry.npmjs.org/@mdi/js/-/js-6.6.96.tgz",
|
||||||
|
"integrity": "sha512-ke9PN5DjPCOlMfhioxeZYADz8Yiz6v47W0IYRza01SSJD7y1EwESVpwFnnFUso+eCoWtE1CO9cTIvQF6sEreuA=="
|
||||||
|
},
|
||||||
"node_modules/@ts-pro/vue-eternal-loading": {
|
"node_modules/@ts-pro/vue-eternal-loading": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@ts-pro/vue-eternal-loading/-/vue-eternal-loading-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@ts-pro/vue-eternal-loading/-/vue-eternal-loading-1.2.0.tgz",
|
||||||
@ -1485,11 +1491,17 @@
|
|||||||
"sourcemap-codec": "^1.4.8"
|
"sourcemap-codec": "^1.4.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mdi": {
|
"node_modules/mdi-vue": {
|
||||||
"version": "2.2.43",
|
"version": "3.0.12",
|
||||||
"resolved": "https://registry.npmjs.org/mdi/-/mdi-2.2.43.tgz",
|
"resolved": "https://registry.npmjs.org/mdi-vue/-/mdi-vue-3.0.12.tgz",
|
||||||
"integrity": "sha512-g3m6z4303qieltUM20JL2gdsJZvoVzIzO74qa2XxZ2kg9JPwrPEAgooVhRDHZi1vvRh0gB8Dg+c9XqNdz4jcIg==",
|
"integrity": "sha512-rc4rq99Hafa7v1u3KyfzGRr13v7/AzBvNrcXdhcgPQvj8wYafimbLGfNvQcGiAYZMow40KpXlZuG07132XccKw==",
|
||||||
"deprecated": "The mdi package was renamed to @mdi/font after v2.2.43. Please rename in your package.json for future updates."
|
"dependencies": {
|
||||||
|
"@mdi/js": "*"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@mdi/js": "*",
|
||||||
|
"vue": "*"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimatch": {
|
"node_modules/minimatch": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
@ -2182,6 +2194,11 @@
|
|||||||
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@mdi/js": {
|
||||||
|
"version": "6.6.96",
|
||||||
|
"resolved": "https://registry.npmjs.org/@mdi/js/-/js-6.6.96.tgz",
|
||||||
|
"integrity": "sha512-ke9PN5DjPCOlMfhioxeZYADz8Yiz6v47W0IYRza01SSJD7y1EwESVpwFnnFUso+eCoWtE1CO9cTIvQF6sEreuA=="
|
||||||
|
},
|
||||||
"@ts-pro/vue-eternal-loading": {
|
"@ts-pro/vue-eternal-loading": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@ts-pro/vue-eternal-loading/-/vue-eternal-loading-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@ts-pro/vue-eternal-loading/-/vue-eternal-loading-1.2.0.tgz",
|
||||||
@ -3145,10 +3162,13 @@
|
|||||||
"sourcemap-codec": "^1.4.8"
|
"sourcemap-codec": "^1.4.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mdi": {
|
"mdi-vue": {
|
||||||
"version": "2.2.43",
|
"version": "3.0.12",
|
||||||
"resolved": "https://registry.npmjs.org/mdi/-/mdi-2.2.43.tgz",
|
"resolved": "https://registry.npmjs.org/mdi-vue/-/mdi-vue-3.0.12.tgz",
|
||||||
"integrity": "sha512-g3m6z4303qieltUM20JL2gdsJZvoVzIzO74qa2XxZ2kg9JPwrPEAgooVhRDHZi1vvRh0gB8Dg+c9XqNdz4jcIg=="
|
"integrity": "sha512-rc4rq99Hafa7v1u3KyfzGRr13v7/AzBvNrcXdhcgPQvj8wYafimbLGfNvQcGiAYZMow40KpXlZuG07132XccKw==",
|
||||||
|
"requires": {
|
||||||
|
"@mdi/js": "*"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"minimatch": {
|
"minimatch": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
|
@ -11,13 +11,14 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aacassandra/vue3-progressbar": "^1.0.3",
|
"@aacassandra/vue3-progressbar": "^1.0.3",
|
||||||
|
"@mdi/js": "^6.6.96",
|
||||||
"@ts-pro/vue-eternal-loading": "^1.2.0",
|
"@ts-pro/vue-eternal-loading": "^1.2.0",
|
||||||
"@vueform/slider": "github:chme/slider#faff83ed8a77f2cdbcb7252505ef734301efd139",
|
"@vueform/slider": "github:chme/slider#faff83ed8a77f2cdbcb7252505ef734301efd139",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
"bulma": "^0.9.3",
|
"bulma": "^0.9.3",
|
||||||
"bulma-switch": "^2.0.4",
|
"bulma-switch": "^2.0.4",
|
||||||
"luxon": "^2.3.1",
|
"luxon": "^2.3.1",
|
||||||
"mdi": "^2.2.43",
|
"mdi-vue": "^3.0.12",
|
||||||
"reconnectingwebsocket": "^1.0.0",
|
"reconnectingwebsocket": "^1.0.0",
|
||||||
"spotify-web-api-js": "^1.5.2",
|
"spotify-web-api-js": "^1.5.2",
|
||||||
"string-to-color": "^2.2.2",
|
"string-to-color": "^2.2.2",
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
@click="is_active = !is_active"
|
@click="is_active = !is_active"
|
||||||
>
|
>
|
||||||
<span>{{ modelValue }}</span>
|
<span>{{ modelValue }}</span>
|
||||||
<span class="icon is-small">
|
<span class="icon">
|
||||||
<i class="mdi mdi-chevron-down" aria-hidden="true" />
|
<mdicon name="chevron-down" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
<div class="media-right" style="padding-top: 0.7rem">
|
<div class="media-right" style="padding-top: 0.7rem">
|
||||||
<a @click.prevent.stop="open_dialog(album.item)">
|
<a @click.prevent.stop="open_dialog(album.item)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
<a @click.prevent.stop="open_dialog(artist.item)">
|
<a @click.prevent.stop="open_dialog(artist.item)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
<a @click.prevent.stop="open_dialog(composer.item)">
|
<a @click.prevent.stop="open_dialog(composer.item)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
>
|
>
|
||||||
<figure class="media-left fd-has-action">
|
<figure class="media-left fd-has-action">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-subdirectory-arrow-left" />
|
<mdicon name="subdirectory-arrow-left" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content fd-has-action is-clipped">
|
||||||
@ -20,7 +20,7 @@
|
|||||||
<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 fd-has-action">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-folder" />
|
<mdicon name="folder" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content fd-has-action is-clipped">
|
||||||
@ -34,7 +34,7 @@
|
|||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
<a @click.prevent.stop="open_dialog(directory)">
|
<a @click.prevent.stop="open_dialog(directory)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
<a @click.prevent.stop="open_dialog(genre.item)">
|
<a @click.prevent.stop="open_dialog(genre.item)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div v-if="is_next || !show_only_next_items" class="media">
|
<div v-if="is_next || !show_only_next_items" class="media">
|
||||||
<div v-if="edit_mode" class="media-left">
|
<div v-if="edit_mode" class="media-left">
|
||||||
<span class="icon has-text-grey fd-is-movable handle"
|
<span class="icon has-text-grey fd-is-movable handle"
|
||||||
><i class="mdi mdi-drag-horizontal mdi-18px"
|
><mdicon name="drag-horizontal" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -1,32 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
v-for="playlist in playlists"
|
v-for="playlist in playlists"
|
||||||
:key="playlist.id"
|
:key="playlist.itemId"
|
||||||
class="media"
|
class="media"
|
||||||
:playlist="playlist"
|
:playlist="playlist"
|
||||||
@click="open_playlist(playlist)"
|
@click="open_playlist(playlist.item)"
|
||||||
>
|
>
|
||||||
<figure class="media-left fd-has-action">
|
<figure class="media-left fd-has-action">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i
|
<mdicon :name="icon_name(playlist.item)" size="16" />
|
||||||
class="mdi"
|
|
||||||
:class="{
|
|
||||||
'mdi-library-music': playlist.type !== 'folder',
|
|
||||||
'mdi-rss': playlist.type === 'rss',
|
|
||||||
'mdi-folder': playlist.type === 'folder'
|
|
||||||
}"
|
|
||||||
/>
|
|
||||||
</span>
|
</span>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content fd-has-action is-clipped">
|
||||||
<h1 class="title is-6">
|
<h1 class="title is-6">
|
||||||
{{ playlist.name }}
|
{{ playlist.item.name }}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
<a @click.prevent.stop="open_dialog(playlist)">
|
<a @click.prevent.stop="open_dialog(playlist.item)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -68,6 +61,16 @@ export default {
|
|||||||
open_dialog: function (playlist) {
|
open_dialog: function (playlist) {
|
||||||
this.selected_playlist = playlist
|
this.selected_playlist = playlist
|
||||||
this.show_details_modal = true
|
this.show_details_modal = true
|
||||||
|
},
|
||||||
|
|
||||||
|
icon_name: function (playlist) {
|
||||||
|
if (playlist.type === 'folder') {
|
||||||
|
return 'folder'
|
||||||
|
} else if (playlist.type === 'rss') {
|
||||||
|
return 'rss'
|
||||||
|
} else {
|
||||||
|
return 'music-box-multiple'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
>
|
>
|
||||||
<figure v-if="show_icon" class="media-left fd-has-action">
|
<figure v-if="show_icon" class="media-left fd-has-action">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-file-outline" />
|
<mdicon name="file-outline" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="media-content fd-has-action is-clipped">
|
<div class="media-content fd-has-action is-clipped">
|
||||||
@ -37,7 +37,7 @@
|
|||||||
<div class="media-right">
|
<div class="media-right">
|
||||||
<a @click.prevent.stop="open_dialog(track)">
|
<a @click.prevent.stop="open_dialog(track)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="$emit('close')">
|
<a class="card-footer-item has-text-dark" @click="$emit('close')">
|
||||||
<span class="icon"><i class="mdi mdi-cancel" /></span>
|
<span class="icon"><mdicon name="cancel" size="16" /></span>
|
||||||
<span class="is-size-7">{{
|
<span class="is-size-7">{{
|
||||||
close_action ? close_action : 'Cancel'
|
close_action ? close_action : 'Cancel'
|
||||||
}}</span>
|
}}</span>
|
||||||
@ -23,7 +23,7 @@
|
|||||||
class="card-footer-item has-background-danger has-text-white has-text-weight-bold"
|
class="card-footer-item has-background-danger has-text-white has-text-weight-bold"
|
||||||
@click="$emit('delete')"
|
@click="$emit('delete')"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-delete" /></span>
|
<span class="icon"><mdicon name="delete" size="16" /></span>
|
||||||
<span class="is-size-7">{{ delete_action }}</span>
|
<span class="is-size-7">{{ delete_action }}</span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@ -31,7 +31,7 @@
|
|||||||
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
||||||
@click="$emit('ok')"
|
@click="$emit('ok')"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-check" /></span>
|
<span class="icon"><mdicon name="check" size="16" /></span>
|
||||||
<span class="is-size-7">{{ ok_action }}</span>
|
<span class="is-size-7">{{ ok_action }}</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
:disabled="loading"
|
:disabled="loading"
|
||||||
/>
|
/>
|
||||||
<span class="icon is-left">
|
<span class="icon is-left">
|
||||||
<i class="mdi mdi-rss" />
|
<mdicon name="rss" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p class="help">
|
<p class="help">
|
||||||
@ -31,7 +31,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer v-if="loading" class="card-footer">
|
<footer v-if="loading" class="card-footer">
|
||||||
<a class="card-footer-item button is-loading">
|
<a class="card-footer-item button is-loading">
|
||||||
<span class="icon"><i class="mdi mdi-web" /></span>
|
<span class="icon"><mdicon name="web" size="16" /></span>
|
||||||
<span class="is-size-7">Processing ...</span>
|
<span class="is-size-7">Processing ...</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
@ -40,14 +40,16 @@
|
|||||||
class="card-footer-item has-text-danger"
|
class="card-footer-item has-text-danger"
|
||||||
@click="$emit('close')"
|
@click="$emit('close')"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-cancel" /></span>
|
<span class="icon"><mdicon name="cancel" size="16" /></span>
|
||||||
<span class="is-size-7">Cancel</span>
|
<span class="is-size-7">Cancel</span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
||||||
@click="add_stream"
|
@click="add_stream"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
:disabled="loading"
|
:disabled="loading"
|
||||||
/>
|
/>
|
||||||
<span class="icon is-left">
|
<span class="icon is-left">
|
||||||
<i class="mdi mdi-web" />
|
<mdicon name="web" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer v-if="loading" class="card-footer">
|
<footer v-if="loading" class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark">
|
<a class="card-footer-item has-text-dark">
|
||||||
<span class="icon"><i class="mdi mdi-web" /></span>
|
<span class="icon"><mdicon name="web" size="16" /></span>
|
||||||
<span class="is-size-7">Loading ...</span>
|
<span class="is-size-7">Loading ...</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
@ -36,18 +36,20 @@
|
|||||||
class="card-footer-item has-text-danger"
|
class="card-footer-item has-text-danger"
|
||||||
@click="$emit('close')"
|
@click="$emit('close')"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-cancel" /></span>
|
<span class="icon"><mdicon name="cancel" size="16" /></span>
|
||||||
<span class="is-size-7">Cancel</span>
|
<span class="is-size-7">Cancel</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="add_stream">
|
<a class="card-footer-item has-text-dark" @click="add_stream">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
||||||
@click="play"
|
@click="play"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -68,15 +68,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -34,15 +34,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -32,15 +32,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -12,15 +12,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -30,15 +30,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -20,19 +20,27 @@
|
|||||||
<span class="heading">Type</span>
|
<span class="heading">Type</span>
|
||||||
<span class="title is-6">{{ playlist.type }}</span>
|
<span class="title is-6">{{ playlist.type }}</span>
|
||||||
</p>
|
</p>
|
||||||
|
<p v-if="!playlist.folder">
|
||||||
|
<span class="heading">Track count</span>
|
||||||
|
<span class="title is-6">{{ playlist.item_count }}</span>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer v-if="!playlist.folder" class="card-footer">
|
<footer v-if="!playlist.folder" class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
:disabled="loading"
|
:disabled="loading"
|
||||||
/>
|
/>
|
||||||
<span class="icon is-left">
|
<span class="icon is-left">
|
||||||
<i class="mdi mdi-file-music" />
|
<mdicon name="file-music" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer v-if="loading" class="card-footer">
|
<footer v-if="loading" class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark">
|
<a class="card-footer-item has-text-dark">
|
||||||
<span class="icon"><i class="mdi mdi-web" /></span>
|
<span class="icon"><mdicon name="web" size="16" /></span>
|
||||||
<span class="is-size-7">Saving ...</span>
|
<span class="is-size-7">Saving ...</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
@ -36,14 +36,16 @@
|
|||||||
class="card-footer-item has-text-danger"
|
class="card-footer-item has-text-danger"
|
||||||
@click="$emit('close')"
|
@click="$emit('close')"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-cancel" /></span>
|
<span class="icon"><mdicon name="cancel" size="16" /></span>
|
||||||
<span class="is-size-7">Cancel</span>
|
<span class="is-size-7">Cancel</span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
||||||
@click="save"
|
@click="save"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-content-save" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="content-save" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Save</span>
|
<span class="is-size-7">Save</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -92,11 +92,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="remove">
|
<a class="card-footer-item has-text-dark" @click="remove">
|
||||||
<span class="icon"><i class="mdi mdi-delete" /></span>
|
<span class="icon"><mdicon name="delete" size="16" /></span>
|
||||||
<span class="is-size-7">Remove</span>
|
<span class="is-size-7">Remove</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -29,14 +29,14 @@
|
|||||||
class="card-footer-item has-text-danger"
|
class="card-footer-item has-text-danger"
|
||||||
@click="$emit('close')"
|
@click="$emit('close')"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-cancel" /></span>
|
<span class="icon"><mdicon name="cancel" size="16" /></span>
|
||||||
<span class="is-size-7">Cancel</span>
|
<span class="is-size-7">Cancel</span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
class="card-footer-item has-background-info has-text-white has-text-weight-bold"
|
||||||
@click="kickoff_pairing"
|
@click="kickoff_pairing"
|
||||||
>
|
>
|
||||||
<span class="icon"><i class="mdi mdi-cellphone-iphone" /></span>
|
<span class="icon"><mdicon name="cellphone" size="16" /></span>
|
||||||
<span class="is-size-7">Pair Remote</span>
|
<span class="is-size-7">Pair Remote</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -124,15 +124,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play_track">
|
<a class="card-footer-item has-text-dark" @click="play_track">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<div class="navbar-brand fd-expanded">
|
<div class="navbar-brand fd-expanded">
|
||||||
<!-- Link to queue -->
|
<!-- Link to queue -->
|
||||||
<navbar-item-link to="/" exact>
|
<navbar-item-link to="/" exact>
|
||||||
<span class="icon"><i class="mdi mdi-24px mdi-playlist-play" /></span>
|
<span class="icon"><mdicon name="playlist-play" size="24" /></span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
|
|
||||||
<!-- Now playing artist/title (not visible on "now playing" page) -->
|
<!-- Now playing artist/title (not visible on "now playing" page) -->
|
||||||
@ -39,31 +39,31 @@
|
|||||||
<player-button-previous
|
<player-button-previous
|
||||||
v-if="is_now_playing_page"
|
v-if="is_now_playing_page"
|
||||||
class="navbar-item fd-margin-left-auto"
|
class="navbar-item fd-margin-left-auto"
|
||||||
icon_style="mdi-24px"
|
:icon_size="24"
|
||||||
/>
|
/>
|
||||||
<player-button-seek-back
|
<player-button-seek-back
|
||||||
v-if="is_now_playing_page"
|
v-if="is_now_playing_page"
|
||||||
seek_ms="10000"
|
:seek_ms="10000"
|
||||||
class="navbar-item"
|
class="navbar-item"
|
||||||
icon_style="mdi-24px"
|
:icon_size="24"
|
||||||
/>
|
/>
|
||||||
<!-- Play/pause -->
|
<!-- Play/pause -->
|
||||||
<player-button-play-pause
|
<player-button-play-pause
|
||||||
class="navbar-item"
|
class="navbar-item"
|
||||||
icon_style="mdi-36px"
|
:icon_size="36"
|
||||||
show_disabled_message
|
show_disabled_message
|
||||||
/>
|
/>
|
||||||
<player-button-seek-forward
|
<player-button-seek-forward
|
||||||
v-if="is_now_playing_page"
|
v-if="is_now_playing_page"
|
||||||
seek_ms="30000"
|
:seek_ms="30000"
|
||||||
class="navbar-item"
|
class="navbar-item"
|
||||||
icon_style="mdi-24px"
|
:icon_size="24"
|
||||||
/>
|
/>
|
||||||
<!-- Skip next (not visible on "now playing" page) -->
|
<!-- Skip next (not visible on "now playing" page) -->
|
||||||
<player-button-next
|
<player-button-next
|
||||||
v-if="is_now_playing_page"
|
v-if="is_now_playing_page"
|
||||||
class="navbar-item"
|
class="navbar-item"
|
||||||
icon_style="mdi-24px"
|
:icon_size="24"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Player menu button (only visible on mobile and tablet) -->
|
<!-- Player menu button (only visible on mobile and tablet) -->
|
||||||
@ -72,12 +72,9 @@
|
|||||||
@click="show_player_menu = !show_player_menu"
|
@click="show_player_menu = !show_player_menu"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i
|
><mdicon
|
||||||
class="mdi mdi-18px"
|
:name="show_player_menu ? 'chevron-down' : 'chevron-up'"
|
||||||
:class="{
|
size="18"
|
||||||
'mdi-chevron-up': !show_player_menu,
|
|
||||||
'mdi-chevron-down': show_player_menu
|
|
||||||
}"
|
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@ -91,12 +88,9 @@
|
|||||||
@click="show_player_menu = !show_player_menu"
|
@click="show_player_menu = !show_player_menu"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i
|
><mdicon
|
||||||
class="mdi mdi-18px"
|
:name="show_player_menu ? 'chevron-down' : 'chevron-up'"
|
||||||
:class="{
|
size="18"
|
||||||
'mdi-chevron-up': !show_player_menu,
|
|
||||||
'mdi-chevron-down': show_player_menu
|
|
||||||
}"
|
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@ -114,12 +108,9 @@
|
|||||||
@click="toggle_mute_volume"
|
@click="toggle_mute_volume"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i
|
><mdicon
|
||||||
class="mdi mdi-18px"
|
:name="player.volume > 0 ? 'volume-high' : 'volume-off'"
|
||||||
:class="{
|
size="18"
|
||||||
'mdi-volume-off': player.volume <= 0,
|
|
||||||
'mdi-volume-high': player.volume > 0
|
|
||||||
}"
|
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -173,7 +164,7 @@
|
|||||||
'is-loading': loading
|
'is-loading': loading
|
||||||
}"
|
}"
|
||||||
@click="togglePlay"
|
@click="togglePlay"
|
||||||
><i class="mdi mdi-18px mdi-radio-tower" /></span
|
><mdicon name="radio-tower" size="18" /></span
|
||||||
></a>
|
></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="level-item fd-expanded">
|
<div class="level-item fd-expanded">
|
||||||
@ -239,9 +230,9 @@
|
|||||||
<!-- Repeat/shuffle/consume -->
|
<!-- Repeat/shuffle/consume -->
|
||||||
<div class="navbar-item">
|
<div class="navbar-item">
|
||||||
<div class="buttons is-centered">
|
<div class="buttons is-centered">
|
||||||
<player-button-repeat class="button" icon_style="mdi-18px" />
|
<player-button-repeat class="button" :icon_size="18" />
|
||||||
<player-button-shuffle class="button" icon_style="mdi-18px" />
|
<player-button-shuffle class="button" :icon_size="18" />
|
||||||
<player-button-consume class="button" icon_style="mdi-18px" />
|
<player-button-consume class="button" :icon_size="18" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -254,12 +245,9 @@
|
|||||||
<div class="level-item" style="flex-grow: 0">
|
<div class="level-item" style="flex-grow: 0">
|
||||||
<a class="button is-white is-small" @click="toggle_mute_volume">
|
<a class="button is-white is-small" @click="toggle_mute_volume">
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i
|
><mdicon
|
||||||
class="mdi mdi-18px"
|
:name="player.volume > 0 ? 'volume-high' : 'volume-off'"
|
||||||
:class="{
|
size="18"
|
||||||
'mdi-volume-off': player.volume <= 0,
|
|
||||||
'mdi-volume-high': player.volume > 0
|
|
||||||
}"
|
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -313,7 +301,7 @@
|
|||||||
'is-loading': loading
|
'is-loading': loading
|
||||||
}"
|
}"
|
||||||
@click="togglePlay"
|
@click="togglePlay"
|
||||||
><i class="mdi mdi-18px mdi-radio-tower" />
|
><mdicon name="radio-tower" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,11 +9,7 @@
|
|||||||
:class="{ 'has-text-grey-light': !output.selected }"
|
:class="{ 'has-text-grey-light': !output.selected }"
|
||||||
@click="set_enabled"
|
@click="set_enabled"
|
||||||
>
|
>
|
||||||
<i
|
<mdicon :name="type_class" size="18" :title="output.type" />
|
||||||
class="mdi mdi-18px"
|
|
||||||
:class="type_class"
|
|
||||||
:title="output.type"
|
|
||||||
/>
|
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -68,13 +64,13 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
type_class() {
|
type_class() {
|
||||||
if (this.output.type.startsWith('AirPlay')) {
|
if (this.output.type.startsWith('AirPlay')) {
|
||||||
return 'mdi-airplay'
|
return 'cast-variant'
|
||||||
} else if (this.output.type === 'Chromecast') {
|
} else if (this.output.type === 'Chromecast') {
|
||||||
return 'mdi-cast'
|
return 'cast'
|
||||||
} else if (this.output.type === 'fifo') {
|
} else if (this.output.type === 'fifo') {
|
||||||
return 'mdi-pipe'
|
return 'pipe'
|
||||||
} else {
|
} else {
|
||||||
return 'mdi-server'
|
return 'server'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -7,25 +7,25 @@
|
|||||||
>
|
>
|
||||||
<div class="navbar-brand">
|
<div class="navbar-brand">
|
||||||
<navbar-item-link v-if="is_visible_playlists" to="/playlists">
|
<navbar-item-link v-if="is_visible_playlists" to="/playlists">
|
||||||
<span class="icon"><i class="mdi mdi-library-music" /></span>
|
<span class="icon"><mdicon name="music-box-multiple" size="16" /></span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link v-if="is_visible_music" to="/music">
|
<navbar-item-link v-if="is_visible_music" to="/music">
|
||||||
<span class="icon"><i class="mdi mdi-music" /></span>
|
<span class="icon"><mdicon name="music" size="16" /></span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link v-if="is_visible_podcasts" to="/podcasts">
|
<navbar-item-link v-if="is_visible_podcasts" to="/podcasts">
|
||||||
<span class="icon"><i class="mdi mdi-microphone" /></span>
|
<span class="icon"><mdicon name="microphone" size="16" /></span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link v-if="is_visible_audiobooks" to="/audiobooks">
|
<navbar-item-link v-if="is_visible_audiobooks" to="/audiobooks">
|
||||||
<span class="icon"><i class="mdi mdi-book-open-variant" /></span>
|
<span class="icon"><mdicon name="book-open-variant" size="16" /></span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link v-if="is_visible_radio" to="/radio">
|
<navbar-item-link v-if="is_visible_radio" to="/radio">
|
||||||
<span class="icon"><i class="mdi mdi-radio" /></span>
|
<span class="icon"><mdicon name="radio" size="16" /></span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link v-if="is_visible_files" to="/files">
|
<navbar-item-link v-if="is_visible_files" to="/files">
|
||||||
<span class="icon"><i class="mdi mdi-folder-open" /></span>
|
<span class="icon"><mdicon name="folder-open" size="16" /></span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link v-if="is_visible_search" to="/search">
|
<navbar-item-link v-if="is_visible_search" to="/search">
|
||||||
<span class="icon"><i class="mdi mdi-magnify" /></span>
|
<span class="icon"><mdicon name="magnify" size="16" /></span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@ -51,18 +51,20 @@
|
|||||||
>
|
>
|
||||||
<a class="navbar-link is-arrowless">
|
<a class="navbar-link is-arrowless">
|
||||||
<span class="icon is-hidden-touch"
|
<span class="icon is-hidden-touch"
|
||||||
><i class="mdi mdi-24px mdi-menu"
|
><mdicon name="menu" size="24"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="is-hidden-desktop has-text-weight-bold">OwnTone</span>
|
<span class="is-hidden-desktop has-text-weight-bold">OwnTone</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="navbar-dropdown is-right">
|
<div class="navbar-dropdown is-right">
|
||||||
<navbar-item-link to="/playlists">
|
<navbar-item-link to="/playlists">
|
||||||
<span class="icon"><i class="mdi mdi-library-music" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="music-box-multiple" size="16"
|
||||||
|
/></span>
|
||||||
<b>Playlists</b>
|
<b>Playlists</b>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link to="/music" exact>
|
<navbar-item-link to="/music" exact>
|
||||||
<span class="icon"><i class="mdi mdi-music" /></span>
|
<span class="icon"><mdicon name="music" size="16" /></span>
|
||||||
<b>Music</b>
|
<b>Music</b>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link to="/music/artists">
|
<navbar-item-link to="/music/artists">
|
||||||
@ -78,23 +80,25 @@
|
|||||||
<span class="fd-navbar-item-level2">Spotify</span>
|
<span class="fd-navbar-item-level2">Spotify</span>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link to="/podcasts">
|
<navbar-item-link to="/podcasts">
|
||||||
<span class="icon"><i class="mdi mdi-microphone" /></span>
|
<span class="icon"><mdicon name="microphone" size="16" /></span>
|
||||||
<b>Podcasts</b>
|
<b>Podcasts</b>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link to="/audiobooks">
|
<navbar-item-link to="/audiobooks">
|
||||||
<span class="icon"><i class="mdi mdi-book-open-variant" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="book-open-variant" size="16"
|
||||||
|
/></span>
|
||||||
<b>Audiobooks</b>
|
<b>Audiobooks</b>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link to="/radio">
|
<navbar-item-link to="/radio">
|
||||||
<span class="icon"><i class="mdi mdi-radio" /></span>
|
<span class="icon"><mdicon name="radio" size="16" /></span>
|
||||||
<b>Radio</b>
|
<b>Radio</b>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link to="/files">
|
<navbar-item-link to="/files">
|
||||||
<span class="icon"><i class="mdi mdi-folder-open" /></span>
|
<span class="icon"><mdicon name="folder-open" size="16" /></span>
|
||||||
<b>Files</b>
|
<b>Files</b>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<navbar-item-link to="/search">
|
<navbar-item-link to="/search">
|
||||||
<span class="icon"><i class="mdi mdi-magnify" /></span>
|
<span class="icon"><mdicon name="magnify" size="16" /></span>
|
||||||
<b>Search</b>
|
<b>Search</b>
|
||||||
</navbar-item-link>
|
</navbar-item-link>
|
||||||
<hr class="fd-navbar-divider" />
|
<hr class="fd-navbar-divider" />
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a :class="{ 'is-warning': is_consume }" @click="toggle_consume_mode">
|
<a :class="{ 'is-warning': is_consume }" @click="toggle_consume_mode">
|
||||||
<span class="icon"><i class="mdi mdi-fire" :class="icon_style" /></span>
|
<span class="icon"><mdicon name="fire" :size="icon_size" /></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -11,7 +11,10 @@ export default {
|
|||||||
name: 'PlayerButtonConsume',
|
name: 'PlayerButtonConsume',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
icon_style: String
|
icon_size: {
|
||||||
|
type: Number,
|
||||||
|
default: 16
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a :disabled="disabled" @click="play_next">
|
<a :disabled="disabled" @click="play_next">
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="skip-forward" :size="icon_size" /></span>
|
||||||
><i class="mdi mdi-skip-forward" :class="icon_style"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -13,7 +11,10 @@ export default {
|
|||||||
name: 'PlayerButtonNext',
|
name: 'PlayerButtonNext',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
icon_style: String
|
icon_size: {
|
||||||
|
type: Number,
|
||||||
|
default: 16
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -1,17 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a :disabled="disabled" @click="toggle_play_pause">
|
<a :disabled="disabled" @click="toggle_play_pause">
|
||||||
<span class="icon"
|
<span class="icon"><mdicon :name="icon_name" :size="icon_size" /></span>
|
||||||
><i
|
|
||||||
class="mdi"
|
|
||||||
:class="[
|
|
||||||
icon_style,
|
|
||||||
{
|
|
||||||
'mdi-play': !is_playing,
|
|
||||||
'mdi-pause': is_playing && is_pause_allowed,
|
|
||||||
'mdi-stop': is_playing && !is_pause_allowed
|
|
||||||
}
|
|
||||||
]"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -22,7 +11,10 @@ export default {
|
|||||||
name: 'PlayerButtonPlayPause',
|
name: 'PlayerButtonPlayPause',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
icon_style: String,
|
icon_size: {
|
||||||
|
type: Number,
|
||||||
|
default: 16
|
||||||
|
},
|
||||||
show_disabled_message: Boolean
|
show_disabled_message: Boolean
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -40,6 +32,15 @@ export default {
|
|||||||
|
|
||||||
disabled() {
|
disabled() {
|
||||||
return !this.$store.state.queue || this.$store.state.queue.count <= 0
|
return !this.$store.state.queue || this.$store.state.queue.count <= 0
|
||||||
|
},
|
||||||
|
|
||||||
|
icon_name() {
|
||||||
|
if (!this.is_playing) {
|
||||||
|
return 'play'
|
||||||
|
} else if (this.is_pause_allowed) {
|
||||||
|
return 'pause'
|
||||||
|
}
|
||||||
|
return 'stop'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a :disabled="disabled" @click="play_previous">
|
<a :disabled="disabled" @click="play_previous">
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="skip-backward" :size="icon_size" /></span>
|
||||||
><i class="mdi mdi-skip-backward" :class="icon_style"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -13,7 +11,10 @@ export default {
|
|||||||
name: 'PlayerButtonPrevious',
|
name: 'PlayerButtonPrevious',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
icon_style: String
|
icon_size: {
|
||||||
|
type: Number,
|
||||||
|
default: 16
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -1,17 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a :class="{ 'is-warning': !is_repeat_off }" @click="toggle_repeat_mode">
|
<a :class="{ 'is-warning': !is_repeat_off }" @click="toggle_repeat_mode">
|
||||||
<span class="icon"
|
<span class="icon"><mdicon :name="icon_name" :size="icon_size" /></span>
|
||||||
><i
|
|
||||||
class="mdi"
|
|
||||||
:class="[
|
|
||||||
icon_style,
|
|
||||||
{
|
|
||||||
'mdi-repeat': is_repeat_all,
|
|
||||||
'mdi-repeat-once': is_repeat_single,
|
|
||||||
'mdi-repeat-off': is_repeat_off
|
|
||||||
}
|
|
||||||
]"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -22,7 +11,10 @@ export default {
|
|||||||
name: 'PlayerButtonRepeat',
|
name: 'PlayerButtonRepeat',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
icon_style: String
|
icon_size: {
|
||||||
|
type: Number,
|
||||||
|
default: 16
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
@ -34,6 +26,14 @@ export default {
|
|||||||
},
|
},
|
||||||
is_repeat_off() {
|
is_repeat_off() {
|
||||||
return !this.is_repeat_all && !this.is_repeat_single
|
return !this.is_repeat_all && !this.is_repeat_single
|
||||||
|
},
|
||||||
|
icon_name() {
|
||||||
|
if (this.is_repeat_all) {
|
||||||
|
return 'repeat'
|
||||||
|
} else if (this.is_repeat_single) {
|
||||||
|
return 'repeat-once'
|
||||||
|
}
|
||||||
|
return 'repeat-off'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a v-if="visible" :disabled="disabled" @click="seek">
|
<a v-if="visible" :disabled="disabled" @click="seek">
|
||||||
<span class="icon"><i class="mdi mdi-rewind" :class="icon_style" /></span>
|
<span class="icon"><mdicon name="rewind" :size="icon_size" /></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -9,7 +9,13 @@ import webapi from '@/webapi'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'PlayerButtonSeekBack',
|
name: 'PlayerButtonSeekBack',
|
||||||
props: ['seek_ms', 'icon_style'],
|
props: {
|
||||||
|
seek_ms: Number,
|
||||||
|
icon_size: {
|
||||||
|
type: Number,
|
||||||
|
default: 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
now_playing() {
|
now_playing() {
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a v-if="visible" :disabled="disabled" @click="seek">
|
<a v-if="visible" :disabled="disabled" @click="seek">
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="fast-forward" :size="icon_size" /></span>
|
||||||
><i class="mdi mdi-fast-forward" :class="icon_style"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -11,7 +9,13 @@ import webapi from '@/webapi'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'PlayerButtonSeekForward',
|
name: 'PlayerButtonSeekForward',
|
||||||
props: ['seek_ms', 'icon_style'],
|
props: {
|
||||||
|
seek_ms: Number,
|
||||||
|
icon_size: {
|
||||||
|
type: Number,
|
||||||
|
default: 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
now_playing() {
|
now_playing() {
|
||||||
|
@ -1,13 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a :class="{ 'is-warning': is_shuffle }" @click="toggle_shuffle_mode">
|
<a :class="{ 'is-warning': is_shuffle }" @click="toggle_shuffle_mode">
|
||||||
<span class="icon"
|
<span class="icon"><mdicon :name="icon_name" :size="icon_size" /></span>
|
||||||
><i
|
|
||||||
class="mdi"
|
|
||||||
:class="[
|
|
||||||
icon_style,
|
|
||||||
{ 'mdi-shuffle': is_shuffle, 'mdi-shuffle-disabled': !is_shuffle }
|
|
||||||
]"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -18,12 +11,21 @@ export default {
|
|||||||
name: 'PlayerButtonShuffle',
|
name: 'PlayerButtonShuffle',
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
icon_style: String
|
icon_size: {
|
||||||
|
type: Number,
|
||||||
|
default: 16
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
is_shuffle() {
|
is_shuffle() {
|
||||||
return this.$store.state.player.shuffle
|
return this.$store.state.player.shuffle
|
||||||
|
},
|
||||||
|
icon_name() {
|
||||||
|
if (this.is_shuffle) {
|
||||||
|
return 'shuffle'
|
||||||
|
}
|
||||||
|
return 'shuffle-disabled'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -43,15 +43,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -27,15 +27,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -30,15 +30,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -51,15 +51,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer class="card-footer">
|
<footer class="card-footer">
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add">
|
<a class="card-footer-item has-text-dark" @click="queue_add">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-plus" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-plus" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add</span>
|
<span class="is-size-7">Add</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
<a class="card-footer-item has-text-dark" @click="queue_add_next">
|
||||||
<span class="icon"><i class="mdi mdi-playlist-play" /></span>
|
<span class="icon"
|
||||||
|
><mdicon name="playlist-play" size="16"
|
||||||
|
/></span>
|
||||||
<span class="is-size-7">Add Next</span>
|
<span class="is-size-7">Add Next</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="card-footer-item has-text-dark" @click="play">
|
<a class="card-footer-item has-text-dark" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span class="is-size-7">Play</span>
|
<span class="is-size-7">Play</span>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<li :class="{ 'is-active': isActive }">
|
<li :class="{ 'is-active': isActive }">
|
||||||
<a @click="navigate" @keypress.enter="navigate">
|
<a @click="navigate" @keypress.enter="navigate">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-artist"
|
><mdicon name="account-music" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Authors</span>
|
<span class="">Authors</span>
|
||||||
</a>
|
</a>
|
||||||
@ -27,7 +27,7 @@
|
|||||||
<li :class="{ 'is-active': isActive }">
|
<li :class="{ 'is-active': isActive }">
|
||||||
<a @click="navigate" @keypress.enter="navigate">
|
<a @click="navigate" @keypress.enter="navigate">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-album"
|
><mdicon name="album" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Audiobooks</span>
|
<span class="">Audiobooks</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -12,7 +12,9 @@
|
|||||||
>
|
>
|
||||||
<li :class="{ 'is-active': isActive }">
|
<li :class="{ 'is-active': isActive }">
|
||||||
<a @click="navigate" @keypress.enter="navigate">
|
<a @click="navigate" @keypress.enter="navigate">
|
||||||
<span class="icon is-small"><i class="mdi mdi-web" /></span>
|
<span class="icon is-small"
|
||||||
|
><mdicon name="web" size="16"
|
||||||
|
/></span>
|
||||||
<span class="">Browse</span>
|
<span class="">Browse</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -25,7 +27,7 @@
|
|||||||
<li :class="{ 'is-active': isActive }">
|
<li :class="{ 'is-active': isActive }">
|
||||||
<a @click="navigate" @keypress.enter="navigate">
|
<a @click="navigate" @keypress.enter="navigate">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-artist"
|
><mdicon name="account-music" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Artists</span>
|
<span class="">Artists</span>
|
||||||
</a>
|
</a>
|
||||||
@ -39,7 +41,7 @@
|
|||||||
<li :class="{ 'is-active': isActive }">
|
<li :class="{ 'is-active': isActive }">
|
||||||
<a @click="navigate" @keypress.enter="navigate">
|
<a @click="navigate" @keypress.enter="navigate">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-album"
|
><mdicon name="album" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Albums</span>
|
<span class="">Albums</span>
|
||||||
</a>
|
</a>
|
||||||
@ -53,7 +55,7 @@
|
|||||||
<li :class="{ 'is-active': isActive }">
|
<li :class="{ 'is-active': isActive }">
|
||||||
<a @click="navigate" @keypress.enter="navigate">
|
<a @click="navigate" @keypress.enter="navigate">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-speaker"
|
><mdicon name="speaker" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Genres</span>
|
<span class="">Genres</span>
|
||||||
</a>
|
</a>
|
||||||
@ -67,7 +69,7 @@
|
|||||||
<li :class="{ 'is-active': isActive }">
|
<li :class="{ 'is-active': isActive }">
|
||||||
<a @click="navigate" @keypress.enter="navigate">
|
<a @click="navigate" @keypress.enter="navigate">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-book-open-page-variant"
|
><mdicon name="book-open-page-variant" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Composers</span>
|
<span class="">Composers</span>
|
||||||
</a>
|
</a>
|
||||||
@ -82,7 +84,7 @@
|
|||||||
<li :class="{ 'is-active': isActive }">
|
<li :class="{ 'is-active': isActive }">
|
||||||
<a @click="navigate" @keypress.enter="navigate">
|
<a @click="navigate" @keypress.enter="navigate">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-spotify"
|
><mdicon name="spotify" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Spotify</span>
|
<span class="">Spotify</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -5,18 +5,26 @@
|
|||||||
<div class="column is-four-fifths">
|
<div class="column is-four-fifths">
|
||||||
<div class="tabs is-centered is-small is-toggle is-toggle-rounded">
|
<div class="tabs is-centered is-small is-toggle is-toggle-rounded">
|
||||||
<ul>
|
<ul>
|
||||||
<li :class="{ 'is-active': $store.state.search_path === '/search/library' }">
|
<li
|
||||||
|
:class="{
|
||||||
|
'is-active': $store.state.search_path === '/search/library'
|
||||||
|
}"
|
||||||
|
>
|
||||||
<a @click="search_library">
|
<a @click="search_library">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-library-books"
|
><mdicon name="bookshelf" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Library</span>
|
<span class="">Library</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li :class="{ 'is-active': $store.state.search_path === '/search/spotify' }">
|
<li
|
||||||
|
:class="{
|
||||||
|
'is-active': $store.state.search_path === '/search/spotify'
|
||||||
|
}"
|
||||||
|
>
|
||||||
<a @click="search_spotify">
|
<a @click="search_spotify">
|
||||||
<span class="icon is-small"
|
<span class="icon is-small"
|
||||||
><i class="mdi mdi-spotify"
|
><mdicon name="spotify" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
<span class="">Spotify</span>
|
<span class="">Spotify</span>
|
||||||
</a>
|
</a>
|
||||||
|
117
web-src/src/icons.js
Normal file
117
web-src/src/icons.js
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
import {
|
||||||
|
mdiAccountMusic,
|
||||||
|
mdiAlbum,
|
||||||
|
mdiArrowCollapseDown,
|
||||||
|
mdiBookOpenVariant,
|
||||||
|
mdiBookOpenPageVariant,
|
||||||
|
mdiBookshelf,
|
||||||
|
mdiCancel,
|
||||||
|
mdiCast,
|
||||||
|
mdiCastVariant,
|
||||||
|
mdiCellphone,
|
||||||
|
mdiCheck,
|
||||||
|
mdiChevronDown,
|
||||||
|
mdiChevronUp,
|
||||||
|
mdiContentSave,
|
||||||
|
mdiDelete,
|
||||||
|
mdiDeleteEmpty,
|
||||||
|
mdiDotsHorizontal,
|
||||||
|
mdiDotsVertical,
|
||||||
|
mdiDragHorizontal,
|
||||||
|
mdiFastForward,
|
||||||
|
mdiFileMusic,
|
||||||
|
mdiFileOutline,
|
||||||
|
mdiFire,
|
||||||
|
mdiFolder,
|
||||||
|
mdiFolderOpen,
|
||||||
|
mdiMagnify,
|
||||||
|
mdiMenu,
|
||||||
|
mdiMicrophone,
|
||||||
|
mdiMusic,
|
||||||
|
mdiMusicBoxMultiple,
|
||||||
|
mdiPause,
|
||||||
|
mdiPencil,
|
||||||
|
mdiPipe,
|
||||||
|
mdiPlay,
|
||||||
|
mdiPlaylistPlay,
|
||||||
|
mdiPlaylistPlus,
|
||||||
|
mdiRadio,
|
||||||
|
mdiRadioTower,
|
||||||
|
mdiRefresh,
|
||||||
|
mdiRepeat,
|
||||||
|
mdiRepeatOff,
|
||||||
|
mdiRepeatOnce,
|
||||||
|
mdiRewind,
|
||||||
|
mdiRss,
|
||||||
|
mdiServer,
|
||||||
|
mdiShuffle,
|
||||||
|
mdiShuffleDisabled,
|
||||||
|
mdiSkipBackward,
|
||||||
|
mdiSkipForward,
|
||||||
|
mdiSpeaker,
|
||||||
|
mdiSpotify,
|
||||||
|
mdiStop,
|
||||||
|
mdiSubdirectoryArrowLeft,
|
||||||
|
mdiVolumeHigh,
|
||||||
|
mdiVolumeOff,
|
||||||
|
mdiWeb
|
||||||
|
} from '@mdi/js'
|
||||||
|
|
||||||
|
export const icons = {
|
||||||
|
mdiAccountMusic,
|
||||||
|
mdiAlbum,
|
||||||
|
mdiArrowCollapseDown,
|
||||||
|
mdiBookOpenVariant,
|
||||||
|
mdiBookOpenPageVariant,
|
||||||
|
mdiBookshelf,
|
||||||
|
mdiCancel,
|
||||||
|
mdiCast,
|
||||||
|
mdiCastVariant,
|
||||||
|
mdiCellphone,
|
||||||
|
mdiCheck,
|
||||||
|
mdiChevronDown,
|
||||||
|
mdiChevronUp,
|
||||||
|
mdiContentSave,
|
||||||
|
mdiDelete,
|
||||||
|
mdiDeleteEmpty,
|
||||||
|
mdiDotsHorizontal,
|
||||||
|
mdiDotsVertical,
|
||||||
|
mdiDragHorizontal,
|
||||||
|
mdiFastForward,
|
||||||
|
mdiFileMusic,
|
||||||
|
mdiFileOutline,
|
||||||
|
mdiFire,
|
||||||
|
mdiFolder,
|
||||||
|
mdiFolderOpen,
|
||||||
|
mdiMagnify,
|
||||||
|
mdiMenu,
|
||||||
|
mdiMicrophone,
|
||||||
|
mdiMusic,
|
||||||
|
mdiMusicBoxMultiple,
|
||||||
|
mdiPause,
|
||||||
|
mdiPencil,
|
||||||
|
mdiPipe,
|
||||||
|
mdiPlay,
|
||||||
|
mdiPlaylistPlay,
|
||||||
|
mdiPlaylistPlus,
|
||||||
|
mdiRadio,
|
||||||
|
mdiRadioTower,
|
||||||
|
mdiRefresh,
|
||||||
|
mdiRepeat,
|
||||||
|
mdiRepeatOff,
|
||||||
|
mdiRepeatOnce,
|
||||||
|
mdiRewind,
|
||||||
|
mdiRss,
|
||||||
|
mdiServer,
|
||||||
|
mdiShuffle,
|
||||||
|
mdiShuffleDisabled,
|
||||||
|
mdiSkipBackward,
|
||||||
|
mdiSkipForward,
|
||||||
|
mdiSpeaker,
|
||||||
|
mdiSpotify,
|
||||||
|
mdiStop,
|
||||||
|
mdiSubdirectoryArrowLeft,
|
||||||
|
mdiVolumeHigh,
|
||||||
|
mdiVolumeOff,
|
||||||
|
mdiWeb
|
||||||
|
}
|
@ -1,31 +0,0 @@
|
|||||||
// The Vue build version to load with the `import` command
|
|
||||||
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
|
|
||||||
import Vue from 'vue'
|
|
||||||
import App from './App'
|
|
||||||
import { router } from './router'
|
|
||||||
import store from './store'
|
|
||||||
import './filter'
|
|
||||||
import './progress'
|
|
||||||
import vClickOutside from 'v-click-outside'
|
|
||||||
import VueTinyLazyloadImg from 'vue-tiny-lazyload-img'
|
|
||||||
import VueObserveVisibility from 'vue-observe-visibility'
|
|
||||||
import VueScrollTo from 'vue-scrollto'
|
|
||||||
import 'mdi/css/materialdesignicons.css'
|
|
||||||
import 'vue-range-slider/dist/vue-range-slider.css'
|
|
||||||
import './mystyles.scss'
|
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
|
||||||
|
|
||||||
Vue.use(vClickOutside)
|
|
||||||
Vue.use(VueTinyLazyloadImg)
|
|
||||||
Vue.use(VueObserveVisibility)
|
|
||||||
Vue.use(VueScrollTo)
|
|
||||||
|
|
||||||
/* eslint-disable no-new */
|
|
||||||
new Vue({
|
|
||||||
el: '#app',
|
|
||||||
router,
|
|
||||||
store,
|
|
||||||
components: { App },
|
|
||||||
template: '<App/>'
|
|
||||||
})
|
|
@ -5,11 +5,12 @@ import VueProgressBar from '@aacassandra/vue3-progressbar'
|
|||||||
import VueClickAway from 'vue3-click-away'
|
import VueClickAway from 'vue3-click-away'
|
||||||
import VueLazyLoad from 'vue3-lazyload'
|
import VueLazyLoad from 'vue3-lazyload'
|
||||||
import VueScrollTo from 'vue-scrollto'
|
import VueScrollTo from 'vue-scrollto'
|
||||||
|
import mdiVue from 'mdi-vue/v3'
|
||||||
import { filters } from './filter'
|
import { filters } from './filter'
|
||||||
|
import { icons } from './icons'
|
||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
|
|
||||||
import './mystyles.scss'
|
import './mystyles.scss'
|
||||||
import 'mdi/css/materialdesignicons.css'
|
|
||||||
import '@vueform/slider/themes/default.css'
|
import '@vueform/slider/themes/default.css'
|
||||||
|
|
||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
@ -26,6 +27,9 @@ const app = createApp(App)
|
|||||||
log: false
|
log: false
|
||||||
})
|
})
|
||||||
.use(VueScrollTo)
|
.use(VueScrollTo)
|
||||||
|
.use(mdiVue, {
|
||||||
|
icons: icons
|
||||||
|
})
|
||||||
|
|
||||||
app.config.globalProperties.$filters = filters
|
app.config.globalProperties.$filters = filters
|
||||||
app.mount('#app')
|
app.mount('#app')
|
||||||
|
@ -10,16 +10,14 @@
|
|||||||
|
|
||||||
<div class="buttons fd-is-centered-mobile fd-has-margin-top">
|
<div class="buttons fd-is-centered-mobile fd-has-margin-top">
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_album_details_modal = true"
|
@click="show_album_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -22,12 +22,10 @@
|
|||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_artist_details_modal = true"
|
@click="show_artist_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,11 +16,11 @@
|
|||||||
@click="show_artist_details_modal = true"
|
@click="show_artist_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
><mdicon name="dots-horizontal" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -10,16 +10,14 @@
|
|||||||
|
|
||||||
<div class="buttons fd-is-centered-mobile fd-has-margin-top">
|
<div class="buttons fd-is-centered-mobile fd-has-margin-top">
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span>Play</span>
|
<span>Play</span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_album_details_modal = true"
|
@click="show_album_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -11,12 +11,10 @@
|
|||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_artist_details_modal = true"
|
@click="show_artist_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,11 +13,11 @@
|
|||||||
@click="show_composer_details_modal = true"
|
@click="show_composer_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
><mdicon name="dots-horizontal" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,11 +13,11 @@
|
|||||||
@click="show_composer_details_modal = true"
|
@click="show_composer_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
><mdicon name="dots-horizontal" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,11 +14,11 @@
|
|||||||
@click="open_directory_dialog({ path: current_directory })"
|
@click="open_directory_dialog({ path: current_directory })"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
><mdicon name="dots-horizontal" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-play" /></span>
|
<span class="icon"><mdicon name="play" size="16" /></span>
|
||||||
<span>Play</span>
|
<span>Play</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,11 +16,11 @@
|
|||||||
@click="show_genre_details_modal = true"
|
@click="show_genre_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
><mdicon name="dots-horizontal" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,11 +16,11 @@
|
|||||||
@click="show_genre_details_modal = true"
|
@click="show_genre_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
><mdicon name="dots-horizontal" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,12 +11,10 @@
|
|||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_playlist_details_modal = true"
|
@click="show_playlist_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
<p class="title is-4">
|
<p class="title is-4">
|
||||||
{{ playlist.name }}
|
{{ playlist.name }}
|
||||||
</p>
|
</p>
|
||||||
<p class="heading">{{ playlists.total }} playlists</p>
|
<p class="heading">{{ playlists.count }} playlists</p>
|
||||||
</template>
|
</template>
|
||||||
<template #content>
|
<template #content>
|
||||||
<list-playlists :playlists="playlists.items" />
|
<list-playlists :playlists="playlists" />
|
||||||
</template>
|
</template>
|
||||||
</content-with-heading>
|
</content-with-heading>
|
||||||
</template>
|
</template>
|
||||||
@ -16,6 +16,7 @@
|
|||||||
import ContentWithHeading from '@/templates/ContentWithHeading.vue'
|
import ContentWithHeading from '@/templates/ContentWithHeading.vue'
|
||||||
import ListPlaylists from '@/components/ListPlaylists.vue'
|
import ListPlaylists from '@/components/ListPlaylists.vue'
|
||||||
import webapi from '@/webapi'
|
import webapi from '@/webapi'
|
||||||
|
import { GroupByList, noop } from '@/lib/GroupByList'
|
||||||
|
|
||||||
const dataObject = {
|
const dataObject = {
|
||||||
load: function (to) {
|
load: function (to) {
|
||||||
@ -27,7 +28,7 @@ const dataObject = {
|
|||||||
|
|
||||||
set: function (vm, response) {
|
set: function (vm, response) {
|
||||||
vm.playlist = response[0].data
|
vm.playlist = response[0].data
|
||||||
vm.playlists = response[1].data
|
vm.playlists_list = new GroupByList(response[1].data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,7 +52,25 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
playlist: {},
|
playlist: {},
|
||||||
playlists: {}
|
playlists_list: new GroupByList()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
radio_playlists() {
|
||||||
|
return this.$store.state.config.radio_playlists
|
||||||
|
},
|
||||||
|
|
||||||
|
playlists() {
|
||||||
|
this.playlists_list.group(noop(), [
|
||||||
|
(playlist) =>
|
||||||
|
playlist.folder ||
|
||||||
|
this.radio_playlists ||
|
||||||
|
playlist.stream_count === 0 ||
|
||||||
|
playlist.item_count > playlist.stream_count
|
||||||
|
])
|
||||||
|
|
||||||
|
return this.playlists_list
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,13 +11,11 @@
|
|||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_album_details_modal = true"
|
@click="show_album_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-play" />
|
<mdicon name="play" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Play</span>
|
<span>Play</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<div class="buttons is-centered">
|
<div class="buttons is-centered">
|
||||||
<a class="button is-small" @click="mark_all_played">
|
<a class="button is-small" @click="mark_all_played">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-pencil" />
|
<mdicon name="pencil" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Mark All Played</span>
|
<span>Mark All Played</span>
|
||||||
</a>
|
</a>
|
||||||
@ -32,13 +32,13 @@
|
|||||||
<div class="buttons is-centered">
|
<div class="buttons is-centered">
|
||||||
<a v-if="rss.tracks > 0" class="button is-small" @click="update_rss">
|
<a v-if="rss.tracks > 0" class="button is-small" @click="update_rss">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-refresh" />
|
<mdicon name="refresh" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Update</span>
|
<span>Update</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small" @click="open_add_podcast_dialog">
|
<a class="button is-small" @click="open_add_podcast_dialog">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-rss" />
|
<mdicon name="rss" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Add Podcast</span>
|
<span>Add Podcast</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -12,13 +12,13 @@
|
|||||||
@click="update_show_next_items"
|
@click="update_show_next_items"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-arrow-collapse-down" />
|
<mdicon name="arrow-collapse-down" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Hide previous</span>
|
<span>Hide previous</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small" @click="open_add_stream_dialog">
|
<a class="button is-small" @click="open_add_stream_dialog">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-web" />
|
<mdicon name="web" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Add Stream</span>
|
<span>Add Stream</span>
|
||||||
</a>
|
</a>
|
||||||
@ -28,13 +28,13 @@
|
|||||||
@click="edit_mode = !edit_mode"
|
@click="edit_mode = !edit_mode"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-pencil" />
|
<mdicon name="pencil" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Edit</span>
|
<span>Edit</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small" @click="queue_clear">
|
<a class="button is-small" @click="queue_clear">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-delete-empty" />
|
<mdicon name="delete-empty" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Clear</span>
|
<span>Clear</span>
|
||||||
</a>
|
</a>
|
||||||
@ -45,7 +45,7 @@
|
|||||||
@click="save_dialog"
|
@click="save_dialog"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="mdi mdi-content-save" />
|
<mdicon name="content-save" size="16" />
|
||||||
</span>
|
</span>
|
||||||
<span>Save</span>
|
<span>Save</span>
|
||||||
</a>
|
</a>
|
||||||
@ -69,7 +69,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a v-if="!edit_mode" @click.prevent.stop="open_dialog(element)">
|
<a v-if="!edit_mode" @click.prevent.stop="open_dialog(element)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@ -77,7 +77,7 @@
|
|||||||
@click.prevent.stop="remove(element)"
|
@click.prevent.stop="remove(element)"
|
||||||
>
|
>
|
||||||
<span class="icon has-text-grey"
|
<span class="icon has-text-grey"
|
||||||
><i class="mdi mdi-delete mdi-18px"
|
><mdicon name="delete" size="18"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
/>
|
/>
|
||||||
<span class="icon is-left">
|
<span class="icon is-left">
|
||||||
<i class="mdi mdi-magnify" />
|
<mdicon name="magnify" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p class="help has-text-centered">
|
<p class="help has-text-centered">
|
||||||
@ -131,7 +131,7 @@
|
|||||||
<p class="title is-4">Composers</p>
|
<p class="title is-4">Composers</p>
|
||||||
</template>
|
</template>
|
||||||
<template #content>
|
<template #content>
|
||||||
<list-composers :composers="composers.items" />
|
<list-composers :composers="composers" />
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<nav v-if="show_all_composers_button" class="level">
|
<nav v-if="show_all_composers_button" class="level">
|
||||||
@ -139,7 +139,7 @@
|
|||||||
<a
|
<a
|
||||||
class="button is-light is-small is-rounded"
|
class="button is-light is-small is-rounded"
|
||||||
@click="open_search_composers"
|
@click="open_search_composers"
|
||||||
>Show all {{ composers.total }} composers</a
|
>Show all {{ composers.total.toLocaleString() }} composers</a
|
||||||
>
|
>
|
||||||
</p>
|
</p>
|
||||||
</nav>
|
</nav>
|
||||||
@ -157,7 +157,7 @@
|
|||||||
<p class="title is-4">Playlists</p>
|
<p class="title is-4">Playlists</p>
|
||||||
</template>
|
</template>
|
||||||
<template #content>
|
<template #content>
|
||||||
<list-playlists :playlists="playlists.items" />
|
<list-playlists :playlists="playlists" />
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<nav v-if="show_all_playlists_button" class="level">
|
<nav v-if="show_all_playlists_button" class="level">
|
||||||
@ -264,8 +264,8 @@ export default {
|
|||||||
tracks: { items: [], total: 0 },
|
tracks: { items: [], total: 0 },
|
||||||
artists: new GroupByList(),
|
artists: new GroupByList(),
|
||||||
albums: new GroupByList(),
|
albums: new GroupByList(),
|
||||||
composers: { items: [], total: 0 },
|
composers: new GroupByList(),
|
||||||
playlists: { items: [], total: 0 },
|
playlists: new GroupByList(),
|
||||||
audiobooks: new GroupByList(),
|
audiobooks: new GroupByList(),
|
||||||
podcasts: new GroupByList()
|
podcasts: new GroupByList()
|
||||||
}
|
}
|
||||||
@ -396,12 +396,8 @@ export default {
|
|||||||
this.tracks = data.tracks ? data.tracks : { items: [], total: 0 }
|
this.tracks = data.tracks ? data.tracks : { items: [], total: 0 }
|
||||||
this.artists = new GroupByList(data.artists)
|
this.artists = new GroupByList(data.artists)
|
||||||
this.albums = new GroupByList(data.albums)
|
this.albums = new GroupByList(data.albums)
|
||||||
this.composers = data.composers
|
this.composers = new GroupByList(data.composers)
|
||||||
? data.composers
|
this.playlists = new GroupByList(data.playlists)
|
||||||
: { items: [], total: 0 }
|
|
||||||
this.playlists = data.playlists
|
|
||||||
? data.playlists
|
|
||||||
: { items: [], total: 0 }
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -12,16 +12,14 @@
|
|||||||
|
|
||||||
<div class="buttons fd-is-centered-mobile fd-has-margin-top">
|
<div class="buttons fd-is-centered-mobile fd-has-margin-top">
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_album_details_modal = true"
|
@click="show_album_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -52,7 +50,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_track_dialog(track)">
|
<a @click.prevent.stop="open_track_dialog(track)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
@ -11,12 +11,10 @@
|
|||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_artist_details_modal = true"
|
@click="show_artist_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -43,7 +41,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_dialog(album)">
|
<a @click.prevent.stop="open_dialog(album)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_album_dialog(album)">
|
<a @click.prevent.stop="open_album_dialog(album)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
@ -67,7 +67,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_playlist_dialog(playlist)">
|
<a @click.prevent.stop="open_playlist_dialog(playlist)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_playlist_dialog(playlist)">
|
<a @click.prevent.stop="open_playlist_dialog(playlist)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_album_dialog(album)">
|
<a @click.prevent.stop="open_album_dialog(album)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
@ -11,12 +11,10 @@
|
|||||||
class="button is-small is-light is-rounded"
|
class="button is-small is-light is-rounded"
|
||||||
@click="show_playlist_details_modal = true"
|
@click="show_playlist_details_modal = true"
|
||||||
>
|
>
|
||||||
<span class="icon"
|
<span class="icon"><mdicon name="dots-horizontal" size="16" /></span>
|
||||||
><i class="mdi mdi-dots-horizontal mdi-18px"
|
|
||||||
/></span>
|
|
||||||
</a>
|
</a>
|
||||||
<a class="button is-small is-dark is-rounded" @click="play">
|
<a class="button is-small is-dark is-rounded" @click="play">
|
||||||
<span class="icon"><i class="mdi mdi-shuffle" /></span>
|
<span class="icon"><mdicon name="shuffle" size="16" /></span>
|
||||||
<span>Shuffle</span>
|
<span>Shuffle</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -36,7 +34,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_track_dialog(item.track)">
|
<a @click.prevent.stop="open_track_dialog(item.track)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
/>
|
/>
|
||||||
<span class="icon is-left">
|
<span class="icon is-left">
|
||||||
<i class="mdi mdi-magnify" />
|
<mdicon name="magnify" size="16" />
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -55,7 +55,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_track_dialog(track)">
|
<a @click.prevent.stop="open_track_dialog(track)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
@ -105,7 +105,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_artist_dialog(artist)">
|
<a @click.prevent.stop="open_artist_dialog(artist)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
@ -166,7 +166,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_album_dialog(album)">
|
<a @click.prevent.stop="open_album_dialog(album)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
@ -215,7 +215,7 @@
|
|||||||
<template #actions>
|
<template #actions>
|
||||||
<a @click.prevent.stop="open_playlist_dialog(playlist)">
|
<a @click.prevent.stop="open_playlist_dialog(playlist)">
|
||||||
<span class="icon has-text-dark"
|
<span class="icon has-text-dark"
|
||||||
><i class="mdi mdi-dots-vertical mdi-18px"
|
><mdicon name="dots-vertical" size="16"
|
||||||
/></span>
|
/></span>
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
@ -15,14 +15,14 @@
|
|||||||
class="button is-small is-white"
|
class="button is-small is-white"
|
||||||
@click="scroll_to_top"
|
@click="scroll_to_top"
|
||||||
><span class="icon is-small"
|
><span class="icon is-small"
|
||||||
><i class="mdi mdi-chevron-up" /></span
|
><mdicon name="chevron-up" size="16" /></span
|
||||||
></a>
|
></a>
|
||||||
<a
|
<a
|
||||||
v-else
|
v-else
|
||||||
class="button is-small is-white"
|
class="button is-small is-white"
|
||||||
@click="scroll_to_content"
|
@click="scroll_to_content"
|
||||||
><span class="icon is-small"
|
><span class="icon is-small"
|
||||||
><i class="mdi mdi-chevron-down" /></span
|
><mdicon name="chevron-down" size="16" /></span
|
||||||
></a>
|
></a>
|
||||||
</nav>
|
</nav>
|
||||||
</section>
|
</section>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user