mirror of
https://github.com/Dvorinka/swingmusic-extended.git
synced 2026-06-03 20:13:02 +00:00
handle tooltip text updates
This commit is contained in:
@@ -53,7 +53,6 @@
|
||||
|
||||
#acontent {
|
||||
grid-area: content;
|
||||
max-width: 1955px;
|
||||
overflow: hidden scroll;
|
||||
margin-right: -1rem;
|
||||
padding-right: calc($medium - 1px);
|
||||
|
||||
+43
-34
@@ -1,4 +1,4 @@
|
||||
import { Directive } from "vue";
|
||||
import { Directive, Ref, ref } from "vue";
|
||||
import { createPopper } from "@popperjs/core";
|
||||
|
||||
let tooltip: HTMLElement;
|
||||
@@ -11,46 +11,55 @@ function hideTooltip() {
|
||||
tooltip.style.visibility = "hidden";
|
||||
}
|
||||
|
||||
export default {
|
||||
updated(el, binding) {
|
||||
let isHovered = false;
|
||||
function handleHover(el: HTMLElement, text: string, isHovered: Ref<boolean>) {
|
||||
el.addEventListener("mouseover", () => {
|
||||
isHovered.value = true;
|
||||
tooltip.innerText = text;
|
||||
|
||||
setTimeout(() => {
|
||||
if (isHovered.value) {
|
||||
tooltip.style.visibility = "visible";
|
||||
|
||||
createPopper(el, tooltip, {
|
||||
placement: "top",
|
||||
modifiers: [
|
||||
{
|
||||
name: "offset",
|
||||
options: {
|
||||
offset: [0, 10],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "hide",
|
||||
enabled: true,
|
||||
},
|
||||
],
|
||||
});
|
||||
}
|
||||
}, 2000);
|
||||
});
|
||||
}
|
||||
let isHovered = ref(false);
|
||||
|
||||
export default {
|
||||
state: {},
|
||||
mounted(el: HTMLElement, binding) {
|
||||
if (tooltip === undefined) {
|
||||
tooltip = getTooltip();
|
||||
}
|
||||
|
||||
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);
|
||||
});
|
||||
|
||||
el.addEventListener("mouseout", () => {
|
||||
isHovered = false;
|
||||
hideTooltip();
|
||||
handleHover(el, binding.value, isHovered);
|
||||
["mouseout", "click"].forEach((event) => {
|
||||
el.addEventListener(event, () => {
|
||||
isHovered.value = false;
|
||||
hideTooltip();
|
||||
});
|
||||
});
|
||||
},
|
||||
updated(el, binding) {
|
||||
el.removeEventListener("mouseover", () => {});
|
||||
handleHover(el, binding.value, isHovered);
|
||||
},
|
||||
beforeUnmount(el: HTMLElement) {
|
||||
hideTooltip();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user