mirror of
https://github.com/Dvorinka/swingmusic-extended.git
synced 2026-06-05 13:03:02 +00:00
add folder page banner
This commit is contained in:
@@ -46,6 +46,8 @@ const app_dom = document.getElementById("app");
|
|||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
// function to add the
|
||||||
|
|
||||||
queue.readQueue();
|
queue.readQueue();
|
||||||
useShortcuts(useQStore);
|
useShortcuts(useQStore);
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ $medium: 0.75rem;
|
|||||||
$large: 1.5rem;
|
$large: 1.5rem;
|
||||||
$larger: 2rem;
|
$larger: 2rem;
|
||||||
|
|
||||||
|
$banner-height: 18rem;
|
||||||
|
|
||||||
// apple human design guideline colors
|
// apple human design guideline colors
|
||||||
$black: #181a1c;
|
$black: #181a1c;
|
||||||
$white: #ffffffde;
|
$white: #ffffffde;
|
||||||
@@ -24,9 +26,8 @@ $gray3: rgb(72, 72, 74);
|
|||||||
$gray4: rgb(58, 58, 60);
|
$gray4: rgb(58, 58, 60);
|
||||||
$gray5: rgb(44, 44, 46);
|
$gray5: rgb(44, 44, 46);
|
||||||
|
|
||||||
|
$red: #ff453a;
|
||||||
$red: #FF453A;
|
$blue: #0a84ff;
|
||||||
$blue: #0A84FF;
|
|
||||||
$darkblue: #055ee2;
|
$darkblue: #055ee2;
|
||||||
$green: rgb(20, 160, 55);
|
$green: rgb(20, 160, 55);
|
||||||
$yellow: rgb(255, 214, 10);
|
$yellow: rgb(255, 214, 10);
|
||||||
@@ -34,10 +35,9 @@ $orange: rgb(255, 159, 10);
|
|||||||
$pink: rgb(255, 55, 95);
|
$pink: rgb(255, 55, 95);
|
||||||
$purple: #bf5af2;
|
$purple: #bf5af2;
|
||||||
$brown: rgb(172, 142, 104);
|
$brown: rgb(172, 142, 104);
|
||||||
$indigo: #5E5CE6;
|
$indigo: #5e5ce6;
|
||||||
$teal: rgb(64, 200, 224);
|
$teal: rgb(64, 200, 224);
|
||||||
|
|
||||||
|
|
||||||
$primary: $gray4;
|
$primary: $gray4;
|
||||||
$accent: $red;
|
$accent: $red;
|
||||||
$secondary: $gray5;
|
$secondary: $gray5;
|
||||||
|
|||||||
@@ -58,6 +58,22 @@ a {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.abs {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pad-small {
|
||||||
|
padding: $small;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pad-medium {
|
||||||
|
padding: $medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pad-large {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
.grid {
|
.grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 628 KiB |
@@ -108,3 +108,5 @@ export interface FetchProps {
|
|||||||
put?: boolean;
|
put?: boolean;
|
||||||
headers?: {};
|
headers?: {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -174,11 +174,11 @@ function toggleBottom() {
|
|||||||
position: relative;
|
position: relative;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-rows: 18rem 1fr;
|
grid-template-rows: $banner-height 1fr;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
|
|
||||||
.ap-page-content {
|
.ap-page-content {
|
||||||
padding-bottom: 17rem;
|
padding-bottom: calc($banner-height - 1rem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="f-view-parent">
|
<div id="f-view-parent">
|
||||||
<div id="scrollable" ref="scrollable">
|
<div id="scrollable" ref="scrollable">
|
||||||
|
<div class="banner shadow-lg">
|
||||||
|
<div class="text abs rounded pad-medium">
|
||||||
|
<h1><FolderSvg /> {{ getFolderName($route) }}</h1>
|
||||||
|
</div>
|
||||||
|
<img src="../assets/images/one.jpg" alt="" class="rounded" />
|
||||||
|
</div>
|
||||||
<FolderList :folders="FStore.dirs" />
|
<FolderList :folders="FStore.dirs" />
|
||||||
<SongList :tracks="FStore.tracks" :path="FStore.path" />
|
<SongList :tracks="FStore.tracks" :path="FStore.path" />
|
||||||
</div>
|
</div>
|
||||||
@@ -9,10 +15,11 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from "@vue/reactivity";
|
import { ref } from "@vue/reactivity";
|
||||||
import { onBeforeRouteUpdate } from "vue-router";
|
import { onBeforeRouteUpdate, RouteLocationNormalized } from "vue-router";
|
||||||
|
|
||||||
import SongList from "@/components/FolderView/SongList.vue";
|
import SongList from "@/components/FolderView/SongList.vue";
|
||||||
import FolderList from "@/components/FolderView/FolderList.vue";
|
import FolderList from "@/components/FolderView/FolderList.vue";
|
||||||
|
import FolderSvg from "@/assets/icons/folder.svg";
|
||||||
|
|
||||||
import useFStore from "../stores/pages/folder";
|
import useFStore from "../stores/pages/folder";
|
||||||
import useLoaderStore from "../stores/loader";
|
import useLoaderStore from "../stores/loader";
|
||||||
@@ -23,6 +30,11 @@ const FStore = useFStore();
|
|||||||
|
|
||||||
const scrollable = ref(null);
|
const scrollable = ref(null);
|
||||||
|
|
||||||
|
function getFolderName(route: RouteLocationNormalized) {
|
||||||
|
const path = route.params.path as string;
|
||||||
|
return path.split("/").pop();
|
||||||
|
}
|
||||||
|
|
||||||
onBeforeRouteUpdate((to, from) => {
|
onBeforeRouteUpdate((to, from) => {
|
||||||
if (isSameRoute(to, from)) return;
|
if (isSameRoute(to, from)) return;
|
||||||
|
|
||||||
@@ -54,6 +66,35 @@ onBeforeRouteUpdate((to, from) => {
|
|||||||
height: calc(100% - $small);
|
height: calc(100% - $small);
|
||||||
scrollbar-color: grey transparent;
|
scrollbar-color: grey transparent;
|
||||||
|
|
||||||
|
.banner {
|
||||||
|
margin-bottom: $small;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
svg {
|
||||||
|
transform: scale(1.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
bottom: 1rem;
|
||||||
|
left: 1rem;
|
||||||
|
background-color: $black;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: $small;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: $small;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
height: $banner-height;
|
||||||
|
width: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@include phone-only {
|
@include phone-only {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user