diff --git a/app/components/Player/Queue.vue b/app/components/Player/Queue.vue
new file mode 100644
index 0000000..9549c9f
--- /dev/null
+++ b/app/components/Player/Queue.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/Player/index.vue b/app/components/Player/index.vue
index 9b9206b..1010873 100644
--- a/app/components/Player/index.vue
+++ b/app/components/Player/index.vue
@@ -38,8 +38,8 @@ const durationFormatted = computed(() =>
new Date(duration.value * 1000).toISOString().slice(14, 19),
)
-const toast = useToast()
const { open: openFullscreen } = useFullscreen()
+const queueOpen = ref(false)
@@ -105,12 +105,13 @@ const { open: openFullscreen } = useFullscreen()
+
diff --git a/app/components/Track/Row.vue b/app/components/Track/Row.vue
index 090663c..39c7a3f 100644
--- a/app/components/Track/Row.vue
+++ b/app/components/Track/Row.vue
@@ -6,9 +6,11 @@ interface TrackRowProps {
index: number
extendedInfo?: boolean
showImage?: boolean
+ queueMode?: boolean
}
-const { track, index, extendedInfo, showImage } = defineProps()
+const { track, index, extendedInfo, showImage, queueMode } =
+ defineProps()
const emit = defineEmits<{ (e: "playAlbumAtIndex"): void }>()
const hovering = ref(false)
@@ -56,6 +58,7 @@ const artworkSrc = computed(() => GET_FILE(track.album.file))
extended: extendedInfo,
odd: index % 2 == 1,
image: showImage,
+ queue: queueMode,
}"
@mouseenter="hovering = true"
@mouseleave="hovering = false"
@@ -92,7 +95,13 @@ const artworkSrc = computed(() => GET_FILE(track.album.file))
{{ durationFormatted }}
-
+
+
@@ -134,6 +143,10 @@ const artworkSrc = computed(() => GET_FILE(track.album.file))
}
}
+ &.queue {
+ cursor: grab;
+ }
+
p {
overflow: hidden;
text-overflow: ellipsis;
@@ -195,4 +208,9 @@ const artworkSrc = computed(() => GET_FILE(track.album.file))
font-size: 20px;
cursor: pointer;
}
+
+.queue-handle {
+ opacity: 0.5;
+ cursor: grab;
+}