mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-05 08:18:49 +01:00
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import {setPosition} from "../util/setPosition";
|
|
import {isMobile} from "../util/functions";
|
|
|
|
export const showTooltip = (message: string, target: Element) => {
|
|
if (isMobile()) {
|
|
return;
|
|
}
|
|
const targetRect = target.getBoundingClientRect();
|
|
if (targetRect.height === 0 || !message) {
|
|
hideTooltip();
|
|
return;
|
|
}
|
|
let messageElement = document.getElementById("tooltip");
|
|
if (!messageElement) {
|
|
document.body.insertAdjacentHTML("beforeend", `<div class="tooltip" id="tooltip">${message}</div>`);
|
|
messageElement = document.getElementById("tooltip");
|
|
} else {
|
|
messageElement.innerHTML = message;
|
|
}
|
|
let left = targetRect.left;
|
|
const position = target.getAttribute("data-position");
|
|
if (position === "right") {
|
|
left = targetRect.right - messageElement.clientWidth;
|
|
} else if (position === "center") {
|
|
left = targetRect.left + (targetRect.width - messageElement.clientWidth) / 2;
|
|
}
|
|
setPosition(messageElement, left, targetRect.top + targetRect.height + 8, targetRect.height * 2 + 8);
|
|
};
|
|
|
|
export const hideTooltip = () => {
|
|
const messageElement = document.getElementById("tooltip");
|
|
if (messageElement) {
|
|
messageElement.remove();
|
|
}
|
|
};
|