From 6e467502702c403943a3050923cdadabe38080eb Mon Sep 17 00:00:00 2001 From: geoffrey45 Date: Tue, 6 Sep 2022 18:53:26 +0300 Subject: [PATCH] rewrite queue page to use songlist + add nav components to queue page + revert tooltip to undo handling updates - I can't find a viable solution to the updates problem --- src/assets/scss/Global/basic.scss | 1 + src/components/FolderView/SongList.vue | 4 +- .../RightSideBar/Queue/QueueActions.vue | 12 +- src/components/nav/NavBar.vue | 25 ++-- src/components/nav/NavButtons.vue | 15 ++- src/components/nav/Titles/APTitle.vue | 3 +- src/components/nav/Titles/QueueTitle.vue | 113 ++++++++++++++++++ src/components/shared/PlayBtn.vue | 4 +- src/components/shared/SongItem.vue | 14 +-- src/directives/vTooltip.ts | 87 ++++++-------- src/views/QueueView.vue | 28 ++++- 11 files changed, 206 insertions(+), 100 deletions(-) create mode 100644 src/components/nav/Titles/QueueTitle.vue diff --git a/src/assets/scss/Global/basic.scss b/src/assets/scss/Global/basic.scss index 67f0ec6c..97d9702a 100644 --- a/src/assets/scss/Global/basic.scss +++ b/src/assets/scss/Global/basic.scss @@ -67,6 +67,7 @@ button { justify-content: center; height: 2.25rem; background: linear-gradient(70deg, $gray3, $gray2); + padding: 0 $small; &:hover { background-image: linear-gradient(70deg, $darkestblue, $darkblue); diff --git a/src/components/FolderView/SongList.vue b/src/components/FolderView/SongList.vue index e65f9284..7e4128dc 100644 --- a/src/components/FolderView/SongList.vue +++ b/src/components/FolderView/SongList.vue @@ -1,6 +1,6 @@ @@ -37,20 +36,11 @@ const queue = useQueueStore(); } .action { - padding: $smaller; - padding-right: $small; + padding-left: $smaller; svg { transform: scale(0.8); } } - - .btn-more { - padding-right: $smaller; - - svg { - transform: scale(1.25); - } - } } diff --git a/src/components/nav/NavBar.vue b/src/components/nav/NavBar.vue index 1b545894..91bae2c7 100644 --- a/src/components/nav/NavBar.vue +++ b/src/components/nav/NavBar.vue @@ -13,9 +13,10 @@ + - @@ -23,21 +24,24 @@ + + diff --git a/src/components/shared/PlayBtn.vue b/src/components/shared/PlayBtn.vue index b83886fb..df772ff8 100644 --- a/src/components/shared/PlayBtn.vue +++ b/src/components/shared/PlayBtn.vue @@ -24,9 +24,7 @@ defineProps<{ diff --git a/src/components/shared/SongItem.vue b/src/components/shared/SongItem.vue index 8cbe5744..463a85ea 100644 --- a/src/components/shared/SongItem.vue +++ b/src/components/shared/SongItem.vue @@ -76,7 +76,6 @@ const imguri = paths.images.thumb; const options_button_clicked = ref(false); const artisttitle = ref(null); -const tooltip = ref(null); const props = defineProps<{ track: Track; @@ -107,13 +106,14 @@ function showMenu(e: Event) { height: 3.75rem; gap: 1rem; user-select: none; + // background-color: $gray; + + // &:nth-child(odd) { + // background-color: rgba(26, 26, 26, 0.068); + // } &:hover { background-color: $gray4; - - .options-icon { - opacity: 1 !important; - } } .song-album { @@ -138,7 +138,6 @@ function showMenu(e: Event) { opacity: 0.5; font-size: 0.8rem; width: 100%; - // margin-left: $small; } .song-duration { @@ -151,7 +150,6 @@ function showMenu(e: Event) { } .options-icon { - opacity: 0; display: flex; align-items: center; justify-content: center; @@ -160,7 +158,7 @@ function showMenu(e: Event) { svg { transition: all 0.2s ease-in; - transform: rotate(90deg); + // transform: rotate(90deg); stroke: $track-btn-svg; circle { diff --git a/src/directives/vTooltip.ts b/src/directives/vTooltip.ts index eb56af46..89eccd6f 100644 --- a/src/directives/vTooltip.ts +++ b/src/directives/vTooltip.ts @@ -1,4 +1,4 @@ -import { Directive, Ref, ref } from "vue"; +import { Directive } from "vue"; import { createPopper } from "@popperjs/core"; let tooltip: HTMLElement; @@ -11,60 +11,47 @@ function hideTooltip() { tooltip.style.visibility = "hidden"; } -function handleHover(el: HTMLElement, text: string, handleOthers = true) { - let isHovered = false; - - el.addEventListener("mouseover", () => { - isHovered = true; - tooltip.innerText = text; - - setTimeout(() => { - if (isHovered) { - tooltip.style.visibility = "visible"; - - createPopper(el, tooltip, { - placement: "top", - modifiers: [ - { - name: "offset", - options: { - offset: [0, 10], - }, - }, - { - name: "hide", - enabled: true, - }, - ], - }); - } - }, 2000); - - function handleHide() { - ["mouseout", "click"].forEach((event) => { - el.addEventListener(event, () => { - isHovered = false; - hideTooltip(); - }); - }); - } - - handleOthers ? handleHide() : null; - }); -} -let isHovered = ref(false); - export default { - mounted(el: HTMLElement, binding) { + mounted(el, binding) { + let isHovered = false; + if (tooltip === undefined) { tooltip = getTooltip(); } - handleHover(el, binding.value); - }, - updated(el, binding) { - el.removeEventListener("mouseover", () => {}); - handleHover(el, binding.value, false); + el.addEventListener("mouseover", () => { + isHovered = true; + + setTimeout(() => { + if (isHovered) { + tooltip.innerText = binding.value; + tooltip.style.visibility = "visible"; + + createPopper(el, tooltip, { + placement: "top", + modifiers: [ + { + name: "offset", + options: { + offset: [0, 10], + }, + }, + { + name: "hide", + enabled: true, + }, + ], + }); + } + }, 1500); + }); + + ["mouseout", "click"].forEach((event) => { + document.addEventListener(event, () => { + isHovered = false; + hideTooltip(); + }); + }); }, beforeUnmount(el: HTMLElement) { hideTooltip(); diff --git a/src/views/QueueView.vue b/src/views/QueueView.vue index 4880b17c..fba273cf 100644 --- a/src/views/QueueView.vue +++ b/src/views/QueueView.vue @@ -1,16 +1,32 @@ - + -->