From 1139ffddc0a2500efd759188bfdcccb1073cb504 Mon Sep 17 00:00:00 2001 From: Jeffrey Chen <78434827+TCOTC@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:45:24 +0800 Subject: [PATCH] Improve the class name of `showTooltip()` (#12746) --- app/src/block/popover.ts | 14 +++++++++++--- app/src/dialog/tooltip.ts | 19 ++++++++++--------- app/src/editor/rename.ts | 4 ++-- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/app/src/block/popover.ts b/app/src/block/popover.ts index 1d91f9ccaa3..e949738ca2d 100644 --- a/app/src/block/popover.ts +++ b/app/src/block/popover.ts @@ -25,7 +25,8 @@ export const initBlockPopover = (app: App) => { hasClosestByClassName(event.target, "av__calc--ashow") || hasClosestByClassName(event.target, "av__cell"); if (aElement) { - let tip = aElement.getAttribute("aria-label") || aElement.getAttribute("data-inline-memo-content"); + let tooltipClass = ""; + let tip = aElement.getAttribute("aria-label"); if (aElement.classList.contains("av__cell")) { if (aElement.classList.contains("av__cell--header")) { const textElement = aElement.querySelector(".av__celltext"); @@ -51,11 +52,18 @@ export const initBlockPopover = (app: App) => { } else if (aElement.classList.contains("av__calc--ashow") && aElement.clientWidth + 2 < aElement.scrollWidth) { tip = aElement.lastChild.textContent + " " + aElement.firstElementChild.textContent; } + if (!tip) { + tip = aElement.getAttribute("data-inline-memo-content"); + if (tip) { + tooltipClass = "memo"; // 为行级备注添加 class https://github.com/siyuan-note/siyuan/issues/6161 + } + } if (!tip) { const href = aElement.getAttribute("data-href") || ""; // 链接地址强制换行 https://github.com/siyuan-note/siyuan/issues/11539 if (href) { tip = `${href.substring(0, Constants.SIZE_TITLE)}`; + tooltipClass = "href"; // 为超链接添加 class https://github.com/siyuan-note/siyuan/issues/11440#issuecomment-2119080691 } const title = aElement.getAttribute("data-title"); if (tip && isLocalPath(href) && !aElement.classList.contains("b3-tooltips")) { @@ -78,10 +86,10 @@ export const initBlockPopover = (app: App) => { if (tip && !aElement.classList.contains("b3-tooltips")) { // https://github.com/siyuan-note/siyuan/issues/11294 try { - showTooltip(decodeURIComponent(tip), aElement); + showTooltip(decodeURIComponent(tip), aElement, tooltipClass); } catch (e) { // https://ld246.com/article/1718235737991 - showTooltip(tip, aElement); + showTooltip(tip, aElement, tooltipClass); } event.stopPropagation(); } else { diff --git a/app/src/dialog/tooltip.ts b/app/src/dialog/tooltip.ts index 964c20e8247..9da081dcbd5 100644 --- a/app/src/dialog/tooltip.ts +++ b/app/src/dialog/tooltip.ts @@ -1,6 +1,6 @@ import {isMobile} from "../util/functions"; -export const showTooltip = (message: string, target: Element, error = false) => { +export const showTooltip = (message: string, target: Element, tooltipClass?: string) => { if (isMobile()) { return; } @@ -16,15 +16,16 @@ export const showTooltip = (message: string, target: Element, error = false) => } else { messageElement.innerHTML = message; } - if (error) { - messageElement.classList.add("tooltip--error"); - } else { - messageElement.classList.remove("tooltip--error"); - } - if (target.getAttribute("data-inline-memo-content")) { - messageElement.classList.add("tooltip--memo"); // 为行级备注添加 class https://github.com/siyuan-note/siyuan/issues/6161 + + if (tooltipClass) { + messageElement.classList.add("tooltip--" + tooltipClass); } else { - messageElement.classList.remove("tooltip--memo"); + const classesToRemove = Array.from(messageElement.classList).filter(className => + className.startsWith("tooltip--") + ); + classesToRemove.forEach(className => { + messageElement.classList.remove(className); + }); } let left = targetRect.left; diff --git a/app/src/editor/rename.ts b/app/src/editor/rename.ts index 3b60c46173d..0c93a477922 100644 --- a/app/src/editor/rename.ts +++ b/app/src/editor/rename.ts @@ -16,7 +16,7 @@ import {getAllEditor} from "../layout/getAll"; export const validateName = (name: string, targetElement?: HTMLElement) => { if (/\r\n|\r|\n|\u2028|\u2029|\t|\//.test(name)) { if (targetElement) { - showTooltip(window.siyuan.languages.fileNameRule, targetElement, true); + showTooltip(window.siyuan.languages.fileNameRule, targetElement, "error"); } else { showMessage(window.siyuan.languages.fileNameRule); } @@ -24,7 +24,7 @@ export const validateName = (name: string, targetElement?: HTMLElement) => { } if (name.length > Constants.SIZE_TITLE) { if (targetElement) { - showTooltip(window.siyuan.languages["_kernel"]["106"], targetElement, true); + showTooltip(window.siyuan.languages["_kernel"]["106"], targetElement, "error"); } else { showMessage(window.siyuan.languages["_kernel"]["106"]); }