Files
swingmusic-extended/src/directives/vTooltip.ts
T
2022-09-04 16:07:05 +03:00

52 lines
1.2 KiB
TypeScript

import { Directive } from "vue";
import { createPopper } from "@popperjs/core";
let tooltip: HTMLElement;
export default {
mounted(el, binding) {
let isHovered = false;
const tooltip = document.getElementById("tooltip") as HTMLElement;
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;
tooltip.style.visibility = "hidden";
});
},
beforeUnmount(el: HTMLElement) {
const tooltip = document.getElementById("tooltip") as HTMLElement;
tooltip.style.visibility = "hidden";
el.removeEventListener("mouseover", () => {});
el.removeEventListener("mouseout", () => {});
},
} as Directive;