From 703ea71514035e177938e97eaa7122f0faeb1af4 Mon Sep 17 00:00:00 2001 From: geoffrey45 Date: Wed, 21 Sep 2022 14:30:13 +0300 Subject: [PATCH] extract virtual scroller page into a layout --- src/components/shared/Input.vue | 55 +++++++++---- src/layouts/HeaderAndVList.vue | 80 ++++++++++++++++++ src/views/QueueView.vue | 141 ++++++++------------------------ 3 files changed, 150 insertions(+), 126 deletions(-) create mode 100644 src/layouts/HeaderAndVList.vue diff --git a/src/components/shared/Input.vue b/src/components/shared/Input.vue index 93067b8c..e504d44a 100644 --- a/src/components/shared/Input.vue +++ b/src/components/shared/Input.vue @@ -1,6 +1,6 @@ @@ -25,26 +26,44 @@ import useFolderStore from "@/stores/pages/folder"; import { Routes } from "@/composables/enums"; import SearchSvg from "@/assets/icons/search.svg"; -const clicked = ref(false); +const clicked = ref(true); +const [playlist, album, folder] = [ + usePStore(), + useAlbumStore(), + useFolderStore(), +]; -const { query: playlistQuery } = storeToRefs(usePStore()); -const { query: folderQuery } = storeToRefs(useFolderStore()); -const { query: albumQuery } = storeToRefs(useAlbumStore()); +const { query: playlistQuery } = storeToRefs(playlist); +const { query: folderQuery } = storeToRefs(folder); +const { query: albumQuery } = storeToRefs(album); const props = defineProps<{ page: Routes | string; }>(); +const inputRef = ref(); + +function handleFocus() { + // if input is not focused, focus it + // if input is focused, blur it + clicked.value = !clicked.value; + if (clicked.value) { + inputRef.value?.focus(); + } else { + inputRef.value?.blur(); + resetQuery(); + } +} function getRef() { switch (props.page) { case Routes.playlist: - return playlistQuery; + return [playlistQuery, playlist.resetQuery]; case Routes.folder: - return folderQuery; + return [folderQuery, folder.resetQuery]; case Routes.album: - return albumQuery; + return [albumQuery, album.resetQuery]; default: return null; @@ -52,6 +71,13 @@ function getRef() { } const source = getRef(); +let query: any; +let resetQuery: any; + +if (source) { + query = source[0]; + resetQuery = source[1]; +} diff --git a/src/layouts/HeaderAndVList.vue b/src/layouts/HeaderAndVList.vue new file mode 100644 index 00000000..335fc58d --- /dev/null +++ b/src/layouts/HeaderAndVList.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/QueueView.vue b/src/views/QueueView.vue index 9d94e8e6..4735f1e0 100644 --- a/src/views/QueueView.vue +++ b/src/views/QueueView.vue @@ -1,133 +1,56 @@