From b298fc117083e780c0389b206659d1500ac1b55b Mon Sep 17 00:00:00 2001 From: chme Date: Sat, 18 Apr 2020 06:57:55 +0200 Subject: [PATCH] [web-src] Restyling of navbars and now playing page --- web-src/src/App.vue | 39 +- web-src/src/components/NavbarBottom.vue | 358 +++++++++++++++++- web-src/src/components/NavbarItemLink.vue | 35 +- web-src/src/components/NavbarTop.vue | 266 +++---------- .../src/components/PlayerButtonConsume.vue | 8 +- web-src/src/components/PlayerButtonNext.vue | 8 +- .../src/components/PlayerButtonPlayPause.vue | 2 +- .../src/components/PlayerButtonPrevious.vue | 8 +- web-src/src/components/PlayerButtonRepeat.vue | 8 +- .../src/components/PlayerButtonShuffle.vue | 8 +- web-src/src/pages/PageNowPlaying.vue | 78 ++-- web-src/src/router/index.js | 12 +- web-src/src/store/index.js | 6 +- web-src/src/store/mutation_types.js | 1 + 14 files changed, 567 insertions(+), 270 deletions(-) diff --git a/web-src/src/App.vue b/web-src/src/App.vue index 8972f475..e985a277 100644 --- a/web-src/src/App.vue +++ b/web-src/src/App.vue @@ -8,7 +8,10 @@ - + +
@@ -35,8 +38,21 @@ export default { }, computed: { - show_burger_menu () { - return this.$store.state.show_burger_menu + show_burger_menu: { + get () { + return this.$store.state.show_burger_menu + }, + set (value) { + this.$store.commit(types.SHOW_BURGER_MENU, value) + } + }, + show_player_menu: { + get () { + return this.$store.state.show_player_menu + }, + set (value) { + this.$store.commit(types.SHOW_PLAYER_MENU, value) + } } }, @@ -209,16 +225,23 @@ export default { this.$store.commit(types.UPDATE_PAIRING, data) this.pairing_active = data.active }) + }, + + update_is_clipped: function () { + if (this.show_burger_menu || this.show_player_menu) { + document.querySelector('html').classList.add('is-clipped') + } else { + document.querySelector('html').classList.remove('is-clipped') + } } }, watch: { 'show_burger_menu' () { - if (this.show_burger_menu) { - document.querySelector('html').classList.add('is-clipped') - } else { - document.querySelector('html').classList.remove('is-clipped') - } + this.update_is_clipped() + }, + 'show_player_menu' () { + this.update_is_clipped() } } } diff --git a/web-src/src/components/NavbarBottom.vue b/web-src/src/components/NavbarBottom.vue index ae5ccd95..c4d2ea01 100644 --- a/web-src/src/components/NavbarBottom.vue +++ b/web-src/src/components/NavbarBottom.vue @@ -1,40 +1,380 @@ diff --git a/web-src/src/components/NavbarItemLink.vue b/web-src/src/components/NavbarItemLink.vue index 54270a71..0a0b42b1 100644 --- a/web-src/src/components/NavbarItemLink.vue +++ b/web-src/src/components/NavbarItemLink.vue @@ -1,5 +1,5 @@ @@ -9,17 +9,46 @@ import * as types from '@/store/mutation_types' export default { name: 'NavbarItemLink', - props: ['to'], + props: { + to: String, + exact: Boolean + }, computed: { is_active () { + if (this.exact) { + return this.$route.path === this.to + } return this.$route.path.startsWith(this.to) + }, + + show_player_menu: { + get () { + return this.$store.state.show_player_menu + }, + set (value) { + this.$store.commit(types.SHOW_PLAYER_MENU, value) + } + }, + + show_burger_menu: { + get () { + return this.$store.state.show_burger_menu + }, + set (value) { + this.$store.commit(types.SHOW_BURGER_MENU, value) + } } }, methods: { open_link: function () { - this.$store.commit(types.SHOW_BURGER_MENU, false) + if (this.show_burger_menu) { + this.$store.commit(types.SHOW_BURGER_MENU, false) + } + if (this.show_player_menu) { + this.$store.commit(types.SHOW_PLAYER_MENU, false) + } this.$router.push({ path: this.to }) }, diff --git a/web-src/src/components/NavbarTop.vue b/web-src/src/components/NavbarTop.vue index e6f79b00..ff8c7665 100644 --- a/web-src/src/components/NavbarTop.vue +++ b/web-src/src/components/NavbarTop.vue @@ -1,5 +1,5 @@ diff --git a/web-src/src/components/PlayerButtonConsume.vue b/web-src/src/components/PlayerButtonConsume.vue index 8a6d87c5..7b45a61f 100644 --- a/web-src/src/components/PlayerButtonConsume.vue +++ b/web-src/src/components/PlayerButtonConsume.vue @@ -1,6 +1,6 @@ @@ -10,6 +10,10 @@ import webapi from '@/webapi' export default { name: 'PlayerButtonConsume', + props: { + icon_style: String + }, + computed: { is_consume () { return this.$store.state.player.consume diff --git a/web-src/src/components/PlayerButtonNext.vue b/web-src/src/components/PlayerButtonNext.vue index 7d0139fa..f7fae15a 100644 --- a/web-src/src/components/PlayerButtonNext.vue +++ b/web-src/src/components/PlayerButtonNext.vue @@ -1,6 +1,6 @@ @@ -10,6 +10,10 @@ import webapi from '@/webapi' export default { name: 'PlayerButtonNext', + props: { + icon_style: String + }, + computed: { disabled () { return !this.$store.state.queue || this.$store.state.queue.count <= 0 diff --git a/web-src/src/components/PlayerButtonPlayPause.vue b/web-src/src/components/PlayerButtonPlayPause.vue index 440e3869..10e247de 100644 --- a/web-src/src/components/PlayerButtonPlayPause.vue +++ b/web-src/src/components/PlayerButtonPlayPause.vue @@ -1,6 +1,6 @@ diff --git a/web-src/src/components/PlayerButtonPrevious.vue b/web-src/src/components/PlayerButtonPrevious.vue index 1afab093..913e297a 100644 --- a/web-src/src/components/PlayerButtonPrevious.vue +++ b/web-src/src/components/PlayerButtonPrevious.vue @@ -1,6 +1,6 @@ @@ -10,6 +10,10 @@ import webapi from '@/webapi' export default { name: 'PlayerButtonPrevious', + props: { + icon_style: String + }, + computed: { disabled () { return !this.$store.state.queue || this.$store.state.queue.count <= 0 diff --git a/web-src/src/components/PlayerButtonRepeat.vue b/web-src/src/components/PlayerButtonRepeat.vue index dce2029c..0d31503d 100644 --- a/web-src/src/components/PlayerButtonRepeat.vue +++ b/web-src/src/components/PlayerButtonRepeat.vue @@ -1,6 +1,6 @@ @@ -10,8 +10,8 @@ import webapi from '@/webapi' export default { name: 'PlayerButtonRepeat', - data () { - return { } + props: { + icon_style: String }, computed: { diff --git a/web-src/src/components/PlayerButtonShuffle.vue b/web-src/src/components/PlayerButtonShuffle.vue index cfedf9be..9c1199d6 100644 --- a/web-src/src/components/PlayerButtonShuffle.vue +++ b/web-src/src/components/PlayerButtonShuffle.vue @@ -1,6 +1,6 @@ @@ -10,6 +10,10 @@ import webapi from '@/webapi' export default { name: 'PlayerButtonShuffle', + props: { + icon_style: String + }, + computed: { is_shuffle () { return this.$store.state.player.shuffle diff --git a/web-src/src/pages/PageNowPlaying.vue b/web-src/src/pages/PageNowPlaying.vue index f312eb80..945caa8f 100644 --- a/web-src/src/pages/PageNowPlaying.vue +++ b/web-src/src/pages/PageNowPlaying.vue @@ -1,8 +1,51 @@