minor refactors

This commit is contained in:
geoffrey45
2022-02-19 22:12:10 +03:00
parent a6bb5059b0
commit 92c2443c7c
20 changed files with 121 additions and 104 deletions
+9 -11
View File
@@ -6,7 +6,7 @@
overflow: hidden; overflow: hidden;
width: auto; width: auto;
height: 100%; height: 100%;
padding: $small $small 0 $small; padding: $small $small 0 0;
.no-res { .no-res {
text-align: center; text-align: center;
@@ -33,19 +33,11 @@
position: relative; position: relative;
} }
.search-icon {
position: absolute;
top: 0;
right: 0;
height: 2.5rem;
width: 2.5rem;
background-image: url(../../icons/search.svg);
background-size: 70%;
}
} }
.right-search .scrollable { .right-search .scrollable {
overflow-y: auto; overflow-y: auto;
scrollbar-width: none;
&::-webkit-scrollbar { &::-webkit-scrollbar {
display: none; display: none;
@@ -58,6 +50,12 @@
border-radius: 0.4rem; border-radius: 0.4rem;
position: relative; position: relative;
._loader {
position: absolute;
top: 0;
right: 2rem;
}
input { input {
width: calc(100% - 2.5rem); width: calc(100% - 2.5rem);
border: none; border: none;
@@ -67,7 +65,7 @@
font-size: 1rem; font-size: 1rem;
outline: none; outline: none;
transition: all 0.5s ease; transition: all 0.5s ease;
padding-left: 0.4rem; padding-left: .75rem;
&:focus { &:focus {
transition: all 0.5s ease; transition: all 0.5s ease;
+2
View File
@@ -62,6 +62,8 @@ export default {
height: 100%; height: 100%;
background-image: url("../../assets/images/abg.webp"); background-image: url("../../assets/images/abg.webp");
background-position: 0% 60%; background-position: 0% 60%;
background-repeat: no-repeat;
background-size: cover;
.info { .info {
width: 100%; width: 100%;
+2 -1
View File
@@ -2,7 +2,7 @@
<router-link <router-link
:to="{ name: 'FolderView', params: { path: props.folder.path } }" :to="{ name: 'FolderView', params: { path: props.folder.path } }"
> >
<div class="f-item border-sm rounded"> <div class="f-item">
<div class="icon image"></div> <div class="icon image"></div>
<div class="info"> <div class="info">
<div class="f-item-text ellip">{{ props.folder.name }}</div> <div class="f-item-text ellip">{{ props.folder.name }}</div>
@@ -30,6 +30,7 @@ const props = defineProps({
position: relative; position: relative;
background-color: #ffffff09; background-color: #ffffff09;
transition: all 0.2s ease; transition: all 0.2s ease;
border-radius: .75rem;
@include phone-only { @include phone-only {
height: 4rem; height: 4rem;
+1 -1
View File
@@ -16,7 +16,7 @@
<input <input
type="text" type="text"
class="search-input" class="search-input"
placeholder="/" placeholder="Search this folder"
v-model="query" v-model="query"
/> />
<div class="search-icon image"></div> <div class="search-icon image"></div>
+2 -1
View File
@@ -1,7 +1,7 @@
<template> <template>
<div class="l_" v-if="!props.collapsed"> <div class="l_" v-if="!props.collapsed">
<div <div
class="l-image image border rounded" class="l-image image rounded"
:style="{ :style="{
backgroundImage: `url(&quot;${current.image}&quot;)`, backgroundImage: `url(&quot;${current.image}&quot;)`,
}" }"
@@ -28,6 +28,7 @@ const props = defineProps({
.l-image { .l-image {
height: 14rem; height: 14rem;
width: 14rem; width: 14rem;
border-radius: .5rem;
} }
} }
</style> </style>
@@ -111,6 +111,7 @@ export default {
flex-wrap: nowrap; flex-wrap: nowrap;
overflow-x: scroll; overflow-x: scroll;
gap: $small; gap: $small;
scrollbar-width: none;
&::-webkit-scrollbar { &::-webkit-scrollbar {
display: none; display: none;
+5 -6
View File
@@ -1,6 +1,6 @@
<template> <template>
<div class="p-header rounded"> <div class="p-header rounded">
<div class="info rounded card-dark"> <div class="info card-dark">
<div> <div>
<div class="name">Makaveli Radio</div> <div class="name">Makaveli Radio</div>
<div class="metrics rounded border">45 Tracks 3 Hours 4 Minutes</div> <div class="metrics rounded border">45 Tracks 3 Hours 4 Minutes</div>
@@ -43,7 +43,6 @@
box-shadow: 0 0 1rem rgba(0, 0, 0, 0.479); box-shadow: 0 0 1rem rgba(0, 0, 0, 0.479);
@include phone-only { @include phone-only {
// border: solid;
bottom: 1rem; bottom: 1rem;
right: 1rem; right: 1rem;
font-size: small; font-size: small;
@@ -67,8 +66,9 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: flex-end; align-items: flex-end;
padding: $small $small 3.5rem; padding: 1rem 1rem 4rem 1rem;
box-shadow: 0 0 1.5rem rgba(0, 0, 0, 0.658); box-shadow: 0 0 1.5rem rgba(0, 0, 0, 0.658);
border-radius: .5rem;
@include phone-only { @include phone-only {
width: calc(100% - 1rem); width: calc(100% - 1rem);
@@ -89,13 +89,12 @@
color: rgb(0, 60, 255); color: rgb(0, 60, 255);
padding: $small; padding: $small;
width: fit-content; width: fit-content;
border-radius: $smaller;
} }
.buttons { .buttons {
position: absolute; position: absolute;
bottom: $small; bottom:1rem;
left: $small; left:1rem;
display: flex; display: flex;
gap: $small; gap: $small;
+2 -5
View File
@@ -1,20 +1,17 @@
<template> <template>
<div class="r-home"> <div class="r-home">
<NowPlaying />
<Recommendations /> <Recommendations />
</div> </div>
</template> </template>
<style lang="scss"> <style lang="scss">
.r-home { .r-home {
height: 100%; height: calc(100% - 1rem);
width: 31rem;
background-color: $card-dark; background-color: $card-dark;
padding: $smaller $small; padding: 0 $small $small 0;
} }
</style> </style>
<script setup> <script setup>
import NowPlaying from '../NowPlaying.vue';
import Recommendations from '../Recommendation.vue'; import Recommendations from '../Recommendation.vue';
</script> </script>
+4 -3
View File
@@ -1,7 +1,7 @@
<template> <template>
<div class="r-sidebar"> <div class="r-sidebar">
<div class="grid"> <div class="grid">
<div class="r-content border"> <div class="r-content">
<div class="r-dash" v-show="current_tab === tabs.home"> <div class="r-dash" v-show="current_tab === tabs.home">
<DashBoard /> <DashBoard />
</div> </div>
@@ -57,7 +57,7 @@ function changeTab(tab) {
<style lang="scss"> <style lang="scss">
.r-sidebar { .r-sidebar {
width: 34em; width: 32em;
@include phone-only { @include phone-only {
display: none; display: none;
@@ -74,7 +74,8 @@ function changeTab(tab) {
.r-content { .r-content {
grid-area: content; grid-area: content;
width: 31rem; width: 29rem;
@include tablet-landscape { @include tablet-landscape {
display: none; display: none;
+35 -28
View File
@@ -1,22 +1,24 @@
<template> <template>
<div class="up-next"> <div class="up-next">
<p class="heading">COMING UP NEXT</p>
<div class="r-grid"> <div class="r-grid">
<div class="main-item h-1 border" @click="playNext"> <div class="main-item border" >
<div <p class="heading">COMING UP NEXT</p>
class="album-art image" <div class="itemx" @click="playNext">
:style="{ <div
backgroundImage: `url(&quot;${next.image}&quot;)`, class="album-art image"
}" :style="{
></div> backgroundImage: `url(&quot;${next.image}&quot;)`,
<div class="tags"> }"
<p class="title ellip">{{ next.title }}</p> ></div>
<hr /> <div class="tags">
<p class="artist ellip"> <p class="title ellip">{{ next.title }}</p>
<span v-for="artist in putCommas(next.artists)" :key="artist">{{ <hr />
artist <p class="artist ellip">
}}</span> <span v-for="artist in putCommas(next.artists)" :key="artist">{{
</p> artist
}}</span>
</p>
</div>
</div> </div>
</div> </div>
<div class="scrollable-r border rounded"> <div class="scrollable-r border rounded">
@@ -29,8 +31,7 @@
<script> <script>
import perks from "@/composables/perks.js"; import perks from "@/composables/perks.js";
import audio from "@/composables/playAudio.js"; import audio from "@/composables/playAudio.js";
import { ref, toRefs } from "@vue/reactivity"; import { ref } from "@vue/reactivity";
import { watch } from "@vue/runtime-core";
import TrackItem from "../shared/TrackItem.vue"; import TrackItem from "../shared/TrackItem.vue";
export default { export default {
@@ -41,6 +42,7 @@ export default {
const { playNext } = audio; const { playNext } = audio;
const putCommas = perks.putCommas; const putCommas = perks.putCommas;
return { return {
playNext, playNext,
putCommas, putCommas,
@@ -55,7 +57,7 @@ export default {
<style lang="scss"> <style lang="scss">
.up-next { .up-next {
background-color: $card-dark; background-color: $card-dark;
padding: $small; padding: $small $small $small 0;
overflow: hidden; overflow: hidden;
height: 100%; height: 100%;
@@ -65,13 +67,22 @@ export default {
} }
.main-item { .main-item {
display: flex;
align-items: center;
padding: 0.5rem;
border-radius: 0.5rem; border-radius: 0.5rem;
cursor: pointer; padding: 0.5rem;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
.itemx {
display: flex;
align-items: center;
padding: 0.5rem;
cursor: pointer;
border-radius: 0.5rem;
&:hover {
background-color: $blue;
}
}
.album-art { .album-art {
width: 4.5rem; width: 4.5rem;
height: 4.5rem; height: 4.5rem;
@@ -95,15 +106,11 @@ export default {
font-size: small; font-size: small;
} }
} }
&:hover {
background-color: $blue;
}
} }
.r-grid { .r-grid {
position: relative; position: relative;
height: calc(100% - 2rem); height: calc(100% - 2.5rem);
display: grid; display: grid;
grid-template-rows: min-content; grid-template-rows: min-content;
+3 -2
View File
@@ -2,7 +2,6 @@
<div class="right-search"> <div class="right-search">
<div> <div>
<div class="input"> <div class="input">
<Loader/>
<Filters :filters="filters" @removeFilter="removeFilter"/> <Filters :filters="filters" @removeFilter="removeFilter"/>
<div class="input-loader border"> <div class="input-loader border">
<input <input
@@ -12,7 +11,9 @@
type="text" type="text"
@keyup.backspace="removeLastFilter" @keyup.backspace="removeLastFilter"
/> />
<div class="search-icon image"></div> <div class="_loader">
<Loader/>
</div>
</div> </div>
</div> </div>
<div class="separator no-border"></div> <div class="separator no-border"></div>
+2 -1
View File
@@ -40,7 +40,8 @@ export default {
overflow-x: hidden; overflow-x: hidden;
.grid { .grid {
display: flex; display: grid;
grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
flex-wrap: wrap; flex-wrap: wrap;
padding: $small $small 0 $small; padding: $small $small 0 $small;
gap: $small; gap: $small;
-1
View File
@@ -29,7 +29,6 @@ export default {
<style lang="scss"> <style lang="scss">
.right-search .filter { .right-search .filter {
display: flex; display: flex;
margin-left: 2rem;
height: 2rem; height: 2rem;
.item { .item {
+1 -1
View File
@@ -41,6 +41,6 @@ function loadMore() {
<style lang="scss"> <style lang="scss">
.right-search .tracks-results { .right-search .tracks-results {
border-radius: 0.5rem; border-radius: 0.5rem;
padding: $small; padding: 1rem $small;
} }
</style> </style>
+12 -9
View File
@@ -4,7 +4,7 @@
name: 'AlbumView', name: 'AlbumView',
params: { album: album.name, artist: album.artist }, params: { album: album.name, artist: album.artist },
}" }"
class="result-item border" class="result-item"
> >
<div <div
class="album-art image" class="album-art image"
@@ -29,29 +29,32 @@ export default {
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
padding: $small; padding: $small;
border-radius: $small; border-radius: .75rem;
text-align: left !important; text-align: left !important;
width: 9rem; background-color: #726c7227;
&:hover {
background-color: #1b3688cb;
}
.album-art { .album-art {
height: 7rem; height: 7.5rem;
width: 7rem; width: 7.5rem;
border-radius: 0.5rem; border-radius: .5rem;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
} }
.title { .title {
width: 7rem; width: 7rem;
margin-bottom: 0.5rem; margin-bottom: 0.25rem;
font-size: 0.9rem; font-size: 0.9rem;
} }
.artistsx { .artistsx {
width: 7rem; width: 7rem;
display: flex;
font-size: 0.8rem; font-size: 0.8rem;
text-align: left; text-align: left;
color: rgba(40, 116, 216, 0.767); color: #ffffffbd;
} }
} }
</style> </style>
+2 -2
View File
@@ -1,5 +1,5 @@
<template> <template>
<div class="xartist border" :style="{ backgroundColor: `#${color}` }"> <div class="xartist" :style="{ backgroundColor: `#${color}` }">
<div <div
class="artist-image image" class="artist-image image"
:style="{ backgroundImage: `url('${artist.image}')` }" :style="{ backgroundImage: `url('${artist.image}')` }"
@@ -24,7 +24,7 @@ export default {
width: 9em; width: 9em;
height: 11em; height: 11em;
border-radius: $small; border-radius: 1rem;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
+2 -1
View File
@@ -3,7 +3,7 @@
<td class="index">{{ index }}</td> <td class="index">{{ index }}</td>
<td class="flex" @click="emitUpdate(song)"> <td class="flex" @click="emitUpdate(song)">
<div <div
class="album-art rounded image" class="album-art image"
:style="{ backgroundImage: `url(&quot;${song.image}&quot;` }" :style="{ backgroundImage: `url(&quot;${song.image}&quot;` }"
> >
<div <div
@@ -113,6 +113,7 @@ export default {
margin-right: 1rem; margin-right: 1rem;
display: grid; display: grid;
place-items: center; place-items: center;
border-radius: .5rem;
} }
.artist { .artist {
+7 -4
View File
@@ -9,9 +9,11 @@
</div> </div>
<div class="separator" id="av-sep"></div> <div class="separator" id="av-sep"></div>
<FeaturedArtists :artists="artists" /> <FeaturedArtists :artists="artists" />
<div class="separator" id="av-sep"></div> <div v-if="bio">
<AlbumBio :bio="bio" v-if="bio" /> <div class="separator" id="av-sep"></div>
<div class="separator" id="av-sep"></div> <AlbumBio :bio="bio" v-if="bio" />
</div>
<!-- <div class="separator" id="av-sep"></div> -->
</div> </div>
</template> </template>
@@ -74,12 +76,13 @@ export default {
.al-view { .al-view {
height: calc(100% - 1rem); height: calc(100% - 1rem);
overflow: auto; overflow: auto;
margin: $smaller $small; margin: $small $small;
scrollbar-width: none; scrollbar-width: none;
.songs { .songs {
padding: $small; padding: $small;
background-color: $card-dark; background-color: $card-dark;
min-height: calc(100% - 30rem);
} }
&::-webkit-scrollbar { &::-webkit-scrollbar {
+24 -23
View File
@@ -1,26 +1,26 @@
<template> <template>
<div id="f-view-parent" class="border rounded card-dark"> <div id="f-view-parent" class="border rounded card-dark">
<div class="fixed"> <div class="fixed">
<Header :path="path" :first_song="songs[0]" @search="updateQueryString"/> <Header :path="path" :first_song="songs[0]" @search="updateQueryString" />
</div> </div>
<div id="scrollable" ref="scrollable"> <div id="scrollable" ref="scrollable">
<FolderList :folders="folders"/> <FolderList :folders="folders" />
<div class="separator" v-if="folders.length && songs.length"></div> <div class="separator" v-if="folders.length && songs.length"></div>
<SongList :songs="songs"/> <SongList :songs="songs" />
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {computed, ref} from "@vue/reactivity"; import { computed, ref } from "@vue/reactivity";
import {useRoute} from "vue-router"; import { useRoute } 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 Header from "@/components/FolderView/Header.vue"; import Header from "@/components/FolderView/Header.vue";
import getTracksAndDirs from "../composables/getFiles.js"; import getTracksAndDirs from "../composables/getFiles.js";
import {onMounted, watch} from "@vue/runtime-core"; import { onMounted, watch } from "@vue/runtime-core";
import state from "@/composables/state.js"; import state from "@/composables/state.js";
export default { export default {
@@ -46,9 +46,9 @@ export default {
if (query.value.length > 1) { if (query.value.length > 1) {
for (let i = 0; i < song_list.value.length; i++) { for (let i = 0; i < song_list.value.length; i++) {
if ( if (
song_list.value[i].title song_list.value[i].title
.toLowerCase() .toLowerCase()
.includes(query.value.toLowerCase()) .includes(query.value.toLowerCase())
) { ) {
songs_.push(song_list.value[i]); songs_.push(song_list.value[i]);
} }
@@ -66,9 +66,9 @@ export default {
if (query.value.length > 1) { if (query.value.length > 1) {
for (let i = 0; i < folders_list.value.length; i++) { for (let i = 0; i < folders_list.value.length; i++) {
if ( if (
folders_list.value[i].name folders_list.value[i].name
.toLowerCase() .toLowerCase()
.includes(query.value.toLowerCase()) .includes(query.value.toLowerCase())
) { ) {
folders_.push(folders_list.value[i]); folders_.push(folders_list.value[i]);
} }
@@ -84,19 +84,19 @@ export default {
const getDirData = (path) => { const getDirData = (path) => {
state.loading.value = true; state.loading.value = true;
getTracksAndDirs(path) getTracksAndDirs(path)
.then((data) => { .then((data) => {
scrollable.value.scrollTop = 0; scrollable.value.scrollTop = 0;
state.folder_song_list.value = data.songs; state.folder_song_list.value = data.songs;
state.folder_list.value = data.folders; state.folder_list.value = data.folders;
state.loading.value = false; state.loading.value = false;
}) })
.then(() => { .then(() => {
setTimeout(() => { setTimeout(() => {
query.value = ""; query.value = "";
}, 100); }, 100);
}); });
}; };
getDirData(path.value); getDirData(path.value);
@@ -144,6 +144,7 @@ export default {
overflow-y: auto; overflow-y: auto;
height: calc(100% - $small); height: calc(100% - $small);
padding-right: $small; padding-right: $small;
scrollbar-color: grey transparent;
@include phone-only { @include phone-only {
padding-right: 0; padding-right: 0;
+1
View File
@@ -44,6 +44,7 @@ export default {
margin: 0 $small; margin: 0 $small;
overflow: auto; overflow: auto;
padding-bottom: $small; padding-bottom: $small;
scrollbar-width: none;
&::-webkit-scrollbar { &::-webkit-scrollbar {
display: none; display: none;