use div scroll method to scroll to current song in queue

This commit is contained in:
geoffrey45
2022-10-01 16:02:51 +03:00
committed by Mungai Njoroge
parent 8e258eaf24
commit 278439eee8
7 changed files with 51 additions and 36 deletions
+17 -3
View File
@@ -1,13 +1,14 @@
<template>
<QueueActions />
<div
ref="scrollable"
class="scrollable-r"
v-bind="containerProps"
style="height: 100%"
@mouseover="mouseover = true"
@mouseout="mouseover = false"
>
<div class="inner" v-bind="wrapperProps" >
<div class="inner" v-bind="wrapperProps">
<TrackItem
style="height: 64px"
v-for="t in tracks"
@@ -34,6 +35,7 @@ import QueueActions from "./Queue/QueueActions.vue";
const queue = useQStore();
const mouseover = ref(false);
const scrollable = ref<HTMLElement>();
function playFromQueue(index: number) {
queue.play(index);
@@ -51,8 +53,8 @@ const {
});
onMounted(() => {
scrollTo(queue.currentindex);
queue.setScrollFunction(scrollTo, mouseover);
// scrollTo(queue.currentindex);
queue.setScrollFunction(scrollToCurrent, mouseover);
});
onBeforeUnmount(() => {
@@ -60,6 +62,18 @@ onBeforeUnmount(() => {
});
// TODO: Handle focusing current track on song end
function scrollToCurrent() {
const elem = document.getElementsByClassName('scrollable-r')[0] as HTMLElement;
const itemHeight = 64;
const top = queue.currentindex * itemHeight - itemHeight;
elem.scroll({
top,
behavior: "smooth",
});
}
</script>
<style lang="scss">