move progress bar and hot keys to new components

This commit is contained in:
geoffrey45
2022-01-28 22:42:13 +03:00
parent 17c9f3a23e
commit e847574446
9 changed files with 243 additions and 174 deletions
+14 -25
View File
@@ -2,33 +2,25 @@
<div class="b-bar border card-dark">
<div class="grid">
<SongCard />
<div class="controlsx">
<div class="controlsx border rounded">
<div class="controls controls-bottom">
<div class="nav">
<div class="image" id="previous" @click="playPrev"></div>
<div
class="image play-pause"
@click="playPause"
:class="{ isPlaying: isPlaying }"
></div>
<div class="image" id="next" @click="playNext"></div>
</div>
<HotKeys />
</div>
<div class="progress progress-bottom">
<span class="durationx">0:45</span>
<input
id="progress"
type="range"
:value="pos"
min="0"
max="1000"
@change="seek()"
/>
<Progress />
<span class="durationx">3:55</span>
</div>
<div class="r-group">
<div class="heart image"></div>
<div class="add-to image"></div>
<div class="repeat image"></div>
</div>
<div class="controls controls-bottom"></div>
</div>
<div class="volume-group">
</div>
<div class="prog"></div>
<div class="volume-group"></div>
</div>
</div>
</template>
@@ -38,14 +30,11 @@ import { ref } from "vue";
import "../../assets/css/BottomBar/BottomBar.scss";
import playAudio from "../../composables/playAudio";
import SongCard from "./SongCard.vue";
import Progress from "../shared/Progress.vue";
import HotKeys from "../shared/HotKeys.vue";
const pos = ref(playAudio.pos);
const isPlaying = ref(playAudio.playing);
const seek = () => {
playAudio.seek(document.getElementById("progress").value);
};
const { playNext } = playAudio;
const { playPrev } = playAudio;
const { playPause } = playAudio;
+9 -24
View File
@@ -22,29 +22,14 @@
</div>
<div class="progress">
<div class="duration">{{ current.length }}</div>
<input
id="progress"
type="range"
:value="pos"
min="0"
max="1000"
@change="seek()"
/>
<Progress />
</div>
<div class="controls">
<div class="shuffle">
<div class="image"></div>
<div class="image"></div>
</div>
<div class="nav">
<div class="image" id="previous" @click="playPrev"></div>
<div
class="image play-pause"
@click="playPause"
:class="{ isPlaying: isPlaying }"
></div>
<div class="image" id="next" @click="playNext"></div>
</div>
<HotKeys />
<div class="fav">
<div class="image"></div>
<div class="image"></div>
@@ -55,9 +40,13 @@
<script>
import { ref } from "@vue/reactivity";
import perks from "../../composables/perks.js";
import playAudio from "@/composables/playAudio.js";
import Progress from "../shared/Progress.vue";
import HotKeys from "../shared/HotKeys.vue";
export default {
setup() {
const current = ref(perks.current);
@@ -66,16 +55,13 @@ export default {
function fmtMSS(s) {
return (s - (s %= 60)) / 60 + (9 < s ? ":" : ":0") + s;
}
const { playNext } = playAudio;
const { playPrev } = playAudio;
const { playPause } = playAudio;
const isPlaying = playAudio.playing;
const seek = () => {
playAudio.seek(document.getElementById("progress").value);
};
return {
current,
putCommas,
@@ -88,6 +74,7 @@ export default {
fmtMSS,
};
},
components: { Progress, HotKeys },
};
</script>
@@ -95,14 +82,12 @@ export default {
.now-playing {
border-radius: 0.5rem;
height: 14rem;
margin-top: .5rem;
margin-top: 0.5rem;
padding: 0.5rem;
background: $card-dark;
display: grid;
grid-template-rows: 3fr 1fr;
.art-tags {
display: flex;
align-items: center;
@@ -135,4 +120,4 @@ export default {
}
}
}
</style>
</style>
+9 -3
View File
@@ -1,5 +1,11 @@
<template>
<div class="result-item border">
<router-link
:to="{
name: 'AlbumView',
params: { album: album.name, artist: album.artist },
}"
class="result-item border"
>
<div
class="album-art image"
:style="{
@@ -8,7 +14,7 @@
></div>
<div class="title ellip">{{ album.name }}</div>
<div class="artistsx ellipsis">{{ album.artist }}</div>
</div>
</router-link>
</template>
<script>
@@ -48,4 +54,4 @@ export default {
color: rgba(40, 116, 216, 0.767);
}
}
</style>
</style>
+58
View File
@@ -0,0 +1,58 @@
<template>
<div class="nav">
<div class="image" id="previous" @click="playPrev"></div>
<div
class="image play-pause"
@click="playPause"
:class="{ isPlaying: isPlaying }"
></div>
<div class="image" id="next" @click="playNext"></div>
</div>
</template>
<script setup>
import playAudio from "../../composables/playAudio";
const playPause = playAudio.playPause;
const playNext = playAudio.playNext;
const playPrev = playAudio.playPrev;
const isPlaying = playAudio.playing;
</script>
<style lang="scss">
.nav {
display: grid;
grid-template-columns: repeat(3, 1fr);
width: 100%;
gap: $small;
& * {
height: 2rem;
width: 2rem;
background-size: 1.2rem !important;
cursor: pointer;
border-radius: 0.5rem;
&:hover {
background-color: $pink;
}
}
#previous {
background-image: url(../../assets/icons/previous.svg);
}
.play-pause {
background-image: url(../../assets/icons/play.svg);
}
.isPlaying {
background-image: url(../../assets/icons/pause.svg);
}
#next {
background-image: url(../../assets/icons/next.svg);
}
}
</style>
+20
View File
@@ -0,0 +1,20 @@
<template>
<input
id="progress"
type="range"
:value="pos"
min="0"
max="1000"
@change="seek()"
/>
</template>
<script setup>
import { ref } from "vue";
import playAudio from "../../composables/playAudio";
const pos = ref(playAudio.pos);
const seek = () => {
playAudio.seek(document.getElementById("progress").value);
};
</script>