mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-19 02:21:38 +08:00
This commit is contained in:
parent
7f21a05d84
commit
0f8e2969ee
@ -15,8 +15,8 @@ export const initBlockPopover = (app: App) => {
|
||||
return;
|
||||
}
|
||||
const aElement = hasClosestByAttribute(event.target, "data-type", "a", true) ||
|
||||
hasClosestByAttribute(event.target, "data-type", "url") ||
|
||||
hasClosestByAttribute(event.target, "data-type", "tab-header") ||
|
||||
hasClosestByClassName(event.target, "av__celltext") ||
|
||||
hasClosestByClassName(event.target, "ariaLabel") ||
|
||||
hasClosestByAttribute(event.target, "data-type", "inline-memo");
|
||||
if (aElement) {
|
||||
@ -25,6 +25,9 @@ export const initBlockPopover = (app: App) => {
|
||||
if (hasClosestByAttribute(event.target, "data-type", "fold", true)) {
|
||||
tip = window.siyuan.languages.fold;
|
||||
}
|
||||
if (aElement.classList.contains("av__celltext") && aElement.scrollWidth > aElement.parentElement.clientWidth - 11) {
|
||||
tip = aElement.textContent;
|
||||
}
|
||||
if (!tip) {
|
||||
tip = aElement.getAttribute("data-href");
|
||||
const title = aElement.getAttribute("data-title");
|
||||
@ -159,8 +162,9 @@ const getTarget = (event: MouseEvent & { target: HTMLElement }, aElement: false
|
||||
if (!popoverTargetElement) {
|
||||
popoverTargetElement = hasClosestByClassName(event.target, "popover__block") as HTMLElement;
|
||||
}
|
||||
if (!popoverTargetElement && aElement && aElement.getAttribute("data-href")?.startsWith("siyuan://blocks") &&
|
||||
aElement.getAttribute("prevent-popover") !== "true") {
|
||||
if (!popoverTargetElement && aElement && (
|
||||
(aElement.getAttribute("data-href")?.startsWith("siyuan://blocks") && aElement.getAttribute("prevent-popover") !== "true") ||
|
||||
(aElement.classList.contains("av__celltext") && aElement.dataset.type === "url"))) {
|
||||
popoverTargetElement = aElement;
|
||||
}
|
||||
if (!popoverTargetElement || window.siyuan.altIsPressed ||
|
||||
@ -208,11 +212,12 @@ export const showPopover = async (app: App, showRef = false) => {
|
||||
});
|
||||
ids = postResponse.data;
|
||||
}
|
||||
} else if (
|
||||
popoverTargetElement.getAttribute("data-type")?.split(" ").includes("a") ||
|
||||
popoverTargetElement.getAttribute("data-type")?.split(" ").includes("url")) {
|
||||
} else if (popoverTargetElement.getAttribute("data-type")?.split(" ").includes("a")) {
|
||||
// 以思源协议开头的链接
|
||||
ids = [getIdFromSYProtocol(popoverTargetElement.getAttribute("data-href"))];
|
||||
} else if (popoverTargetElement.dataset.type === "url") {
|
||||
// 在 database 的 url 列中以思源协议开头的链接
|
||||
ids = [getIdFromSYProtocol(popoverTargetElement.textContent.trim())];
|
||||
} else {
|
||||
// pdf
|
||||
let targetId;
|
||||
|
@ -116,16 +116,13 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle
|
||||
|
||||
const linkElement = hasClosestByClassName(event.target, "av__celltext--url");
|
||||
if (linkElement) {
|
||||
// let prefix = "";
|
||||
// if (linkElement.dataset.type === "phone") {
|
||||
// prefix = "tel:";
|
||||
// } else if (linkElement.dataset.type === "email") {
|
||||
// prefix = "mailto:";
|
||||
// }
|
||||
// window.open(prefix + linkElement.textContent.trim());
|
||||
|
||||
let linkUrl = linkElement.getAttribute("data-href")
|
||||
window.open(linkUrl.trim());
|
||||
let prefix = "";
|
||||
if (linkElement.dataset.type === "phone") {
|
||||
prefix = "tel:";
|
||||
} else if (linkElement.dataset.type === "email") {
|
||||
prefix = "mailto:";
|
||||
}
|
||||
window.open(prefix + linkElement.textContent.trim());
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return true;
|
||||
|
@ -68,18 +68,8 @@ style="width: ${column.width || "200px"}">${getCalcValue(column) || '<svg><use x
|
||||
let text = "";
|
||||
if (cell.valueType === "text") {
|
||||
text = `<span class="av__celltext">${cell.value?.text.content || ""}</span>`;
|
||||
} else if (cell.valueType === "url") {
|
||||
text = `<span class="av__celltext av__celltext--url" data-type="url" data-href="${cell.value ? cell.value[cell.valueType as "url"].content : ""}">${cell.value ? cell.value[cell.valueType as "url"].content : ""}</span>`;
|
||||
if (cell.value && cell.value[cell.valueType as "url"].content) {
|
||||
text += `<span data-type="copy" class="b3-tooltips b3-tooltips__n block__icon" aria-label="${window.siyuan.languages.copy}"><svg><use xlink:href="#iconCopy"></use></svg></span>`;
|
||||
}
|
||||
} else if (cell.valueType === "email") {
|
||||
text = `<span class="av__celltext av__celltext--url" data-type="email" data-href="${cell.value ? "mailto:" + cell.value[cell.valueType as "url"].content : ""}">${cell.value ? cell.value[cell.valueType as "url"].content : ""}</span>`;
|
||||
if (cell.value && cell.value[cell.valueType as "url"].content) {
|
||||
text += `<span data-type="copy" class="b3-tooltips b3-tooltips__n block__icon" aria-label="${window.siyuan.languages.copy}"><svg><use xlink:href="#iconCopy"></use></svg></span>`;
|
||||
}
|
||||
} else if (cell.valueType === "phone") {
|
||||
text = `<span class="av__celltext av__celltext--url" data-type="phone" data-href="${cell.value ? "tel:" + cell.value[cell.valueType as "url"].content : ""}">${cell.value ? cell.value[cell.valueType as "url"].content : ""}</span>`;
|
||||
} else if (["url", "email", "phone"].includes(cell.valueType)) {
|
||||
text = `<span class="av__celltext av__celltext--url" data-type="${cell.valueType}">${cell.value ? cell.value[cell.valueType as "url"].content : ""}</span>`;
|
||||
if (cell.value && cell.value[cell.valueType as "url"].content) {
|
||||
text += `<span data-type="copy" class="b3-tooltips b3-tooltips__n block__icon" aria-label="${window.siyuan.languages.copy}"><svg><use xlink:href="#iconCopy"></use></svg></span>`;
|
||||
}
|
||||
|
@ -1640,11 +1640,16 @@ export class WYSIWYG {
|
||||
const range = getEditorRange(this.element);
|
||||
// 需放在嵌入块之前,否则嵌入块内的引用、链接、pdf 双链无法点击打开 https://ld246.com/article/1630479789513
|
||||
const blockRefElement = hasClosestByAttribute(event.target, "data-type", "block-ref");
|
||||
let ifaElement = hasClosestByAttribute(event.target, "data-type", "a");
|
||||
const aElement = ifaElement ? ifaElement : hasClosestByAttribute(event.target, "data-type", "url")
|
||||
if (blockRefElement ||
|
||||
(aElement && aElement.getAttribute("data-href").startsWith("siyuan://blocks/"))
|
||||
) {
|
||||
const aElement = hasClosestByAttribute(event.target, "data-type", "a") || hasClosestByAttribute(event.target, "data-type", "url");
|
||||
let aLink = ""
|
||||
if (aElement) {
|
||||
if (aElement.classList.contains("av__celltext")) {
|
||||
aLink = aElement.textContent.trim()
|
||||
} else {
|
||||
aLink = aElement.getAttribute("data-href")
|
||||
}
|
||||
}
|
||||
if (blockRefElement || aLink.startsWith("siyuan://blocks/")) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
hideElements(["dialog", "toolbar"], protyle);
|
||||
@ -1656,7 +1661,7 @@ export class WYSIWYG {
|
||||
if (blockRefElement) {
|
||||
refBlockId = blockRefElement.getAttribute("data-id");
|
||||
} else if (aElement) {
|
||||
refBlockId = aElement.getAttribute("data-href").substring(16, 38);
|
||||
refBlockId = aLink.substring(16, 38);
|
||||
}
|
||||
|
||||
fetchPost("/api/block/checkBlockFold", {id: refBlockId}, (foldResponse) => {
|
||||
@ -1666,7 +1671,7 @@ export class WYSIWYG {
|
||||
hideKeyboardToolbar();
|
||||
/// #else
|
||||
if (aElement) {
|
||||
window.open(aElement.getAttribute("data-href"));
|
||||
window.open(aLink);
|
||||
return;
|
||||
}
|
||||
if (event.shiftKey) {
|
||||
@ -1743,7 +1748,7 @@ export class WYSIWYG {
|
||||
if (aElement && !event.altKey) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
const linkAddress = Lute.UnEscapeHTMLStr(aElement.getAttribute("data-href"));
|
||||
const linkAddress = Lute.UnEscapeHTMLStr(aLink);
|
||||
/// #if MOBILE
|
||||
openByMobile(linkAddress);
|
||||
/// #else
|
||||
|
Loading…
Reference in New Issue
Block a user