diff --git a/src/components/FolderView/SongList.vue b/src/components/FolderView/SongList.vue
index 41f11543..e65f9284 100644
--- a/src/components/FolderView/SongList.vue
+++ b/src/components/FolderView/SongList.vue
@@ -16,17 +16,17 @@
-
- {{ copyright() }}
+
+ {{ copyright }}
@@ -38,19 +38,16 @@
diff --git a/src/components/shared/SongItem.vue b/src/components/shared/SongItem.vue
index 35798c9c..8cbe5744 100644
--- a/src/components/shared/SongItem.vue
+++ b/src/components/shared/SongItem.vue
@@ -86,11 +86,11 @@ const props = defineProps<{
}>();
const emit = defineEmits<{
- (e: "updateQueue", song: Track): void;
+ (e: "updateQueue"): void;
}>();
function emitUpdate(track: Track) {
- emit("updateQueue", track);
+ emit("updateQueue");
}
function showMenu(e: Event) {
diff --git a/src/directives/vTooltip.ts b/src/directives/vTooltip.ts
index 39d52bde..eb56af46 100644
--- a/src/directives/vTooltip.ts
+++ b/src/directives/vTooltip.ts
@@ -11,13 +11,15 @@ function hideTooltip() {
tooltip.style.visibility = "hidden";
}
-function handleHover(el: HTMLElement, text: string, isHovered: Ref) {
+function handleHover(el: HTMLElement, text: string, handleOthers = true) {
+ let isHovered = false;
+
el.addEventListener("mouseover", () => {
- isHovered.value = true;
+ isHovered = true;
tooltip.innerText = text;
setTimeout(() => {
- if (isHovered.value) {
+ if (isHovered) {
tooltip.style.visibility = "visible";
createPopper(el, tooltip, {
@@ -37,28 +39,32 @@ function handleHover(el: HTMLElement, text: string, isHovered: Ref) {
});
}
}, 2000);
+
+ function handleHide() {
+ ["mouseout", "click"].forEach((event) => {
+ el.addEventListener(event, () => {
+ isHovered = false;
+ hideTooltip();
+ });
+ });
+ }
+
+ handleOthers ? handleHide() : null;
});
}
let isHovered = ref(false);
export default {
- state: {},
mounted(el: HTMLElement, binding) {
if (tooltip === undefined) {
tooltip = getTooltip();
}
- handleHover(el, binding.value, isHovered);
- ["mouseout", "click"].forEach((event) => {
- el.addEventListener(event, () => {
- isHovered.value = false;
- hideTooltip();
- });
- });
+ handleHover(el, binding.value);
},
updated(el, binding) {
el.removeEventListener("mouseover", () => {});
- handleHover(el, binding.value, isHovered);
+ handleHover(el, binding.value, false);
},
beforeUnmount(el: HTMLElement) {
hideTooltip();
diff --git a/src/views/FolderView.vue b/src/views/FolderView.vue
index ceec48da..3ec3238e 100644
--- a/src/views/FolderView.vue
+++ b/src/views/FolderView.vue
@@ -12,8 +12,12 @@
loading="lazy"
/>
-
-
+
+
@@ -26,12 +30,14 @@ import SongList from "@/components/FolderView/SongList.vue";
import FolderList from "@/components/FolderView/FolderList.vue";
import FolderSvg from "@/assets/icons/folder.svg";
-import useFStore from "../stores/pages/folder";
-import useLoaderStore from "../stores/loader";
+import useFolderStore from "@/stores/pages/folder";
+import useQueueStore from "@/stores/queue";
+import useLoaderStore from "@/stores/loader";
import { isSameRoute } from "@/composables/perks";
const loader = useLoaderStore();
-const FStore = useFStore();
+const folder = useFolderStore();
+const queue = useQueueStore();
const scrollable = ref(null);
@@ -40,11 +46,17 @@ function getFolderName(route: RouteLocationNormalized) {
return path.split("/").pop();
}
+function playFromPage(index: number) {
+ queue.playFromFolder(folder.path, folder.tracks);
+ queue.play(index);
+}
+
onBeforeRouteUpdate((to, from) => {
if (isSameRoute(to, from)) return;
loader.startLoading();
- FStore.fetchAll(to.params.path as string)
+ folder
+ .fetchAll(to.params.path as string)
.then(() => {
scrollable.value.scrollTop = 0;
@@ -107,7 +119,7 @@ onBeforeRouteUpdate((to, from) => {
width: 100%;
object-fit: cover;
object-position: bottom right;
- transition: all .25s ease;
+ transition: all 0.25s ease;
}
}
diff --git a/src/views/album/Content.vue b/src/views/album/Content.vue
index bcc4d622..ebb618e3 100644
--- a/src/views/album/Content.vue
+++ b/src/views/album/Content.vue
@@ -6,7 +6,8 @@
:tracks="disc"
:on_album_page="true"
:disc="key"
- :copyright="isLastDisc(key) ? () => copyright : null"
+ :copyright="isLastDisc(key) ? copyright : null"
+ @playFromPage="playFromAlbumPage"
/>
@@ -15,6 +16,8 @@