Browse Source

:art: fix https://github.com/siyuan-note/siyuan/issues/5608

Vanessa 2 years ago
parent
commit
734ff8490b
1 changed files with 36 additions and 20 deletions
  1. 36 20
      app/src/menus/protyle.ts

+ 36 - 20
app/src/menus/protyle.ts

@@ -737,25 +737,13 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText
             });
         }
     }).element);
-    window.siyuan.menus.menu.append(new MenuItem({
-        icon: "iconTrashcan",
-        label: window.siyuan.languages.remove,
-        click() {
-            protyle.toolbar.setInlineMark(protyle, "link", "remove");
-        }
-    }).element);
-    if (linkAddress?.startsWith("assets/")) {
-        window.siyuan.menus.menu.append(new MenuItem({
-            label: window.siyuan.languages.rename,
-            click() {
-                renameAsset(linkAddress);
-            }
-        }).element);
+    if (linkAddress) {
+        openMenu(linkAddress);
     }
+    const submenu: IMenu[] = [];
     if (linkAddress?.startsWith("siyuan://blocks/")) {
-        window.siyuan.menus.menu.append(new MenuItem({
-            icon: "iconRefresh",
-            label: window.siyuan.languages.turnInto + " " + window.siyuan.languages.blockRef,
+        submenu.push({
+            label: window.siyuan.languages.blockRef,
             click() {
                 linkElement.setAttribute("data-subtype", "s");
                 linkElement.setAttribute("data-type", "block-ref");
@@ -768,11 +756,39 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText
                 protyle.toolbar.range.collapse(false);
                 focusByRange(protyle.toolbar.range);
             }
-        }).element);
+        });
     }
-    if (linkAddress) {
-        openMenu(linkAddress);
+    submenu.push({
+        label: window.siyuan.languages.text,
+        click() {
+            protyle.toolbar.setInlineMark(protyle, "link", "remove");
+        }
+    })
+    window.siyuan.menus.menu.append(new MenuItem({
+        label: window.siyuan.languages.turnInto,
+        icon: "iconRefresh",
+        submenu
+    }).element);
+    if (linkAddress?.startsWith("assets/")) {
+        window.siyuan.menus.menu.append(new MenuItem({
+            label: window.siyuan.languages.rename,
+            click() {
+                renameAsset(linkAddress);
+            }
+        }).element);
     }
+    window.siyuan.menus.menu.append(new MenuItem({
+        icon: "iconTrashcan",
+        label: window.siyuan.languages.remove,
+        click() {
+            const oldHTML = nodeElement.outerHTML;
+            linkElement.insertAdjacentHTML("afterend", "<wbr>");
+            linkElement.remove();
+            nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
+            updateTransaction(protyle, id, nodeElement.outerHTML, oldHTML);
+            focusByWbr(nodeElement, protyle.toolbar.range);
+        }
+    }).element);
     const rect = linkElement.getBoundingClientRect();
     window.siyuan.menus.menu.popup({
         x: rect.left,