Browse Source

:art: https://github.com/siyuan-note/siyuan/issues/10488

Vanessa 9 months ago
parent
commit
5158805544
2 changed files with 12 additions and 4 deletions
  1. 11 4
      app/src/protyle/util/insertHTML.ts
  2. 1 0
      app/src/protyle/wysiwyg/index.ts

+ 11 - 4
app/src/protyle/util/insertHTML.ts

@@ -209,18 +209,25 @@ const processTable = (range: Range, html: string, protyle: IProtyle, blockElemen
     const scrollLeft = blockElement.firstElementChild.scrollLeft;
     const tableSelectElement = blockElement.querySelector(".table__select") as HTMLElement;
     let index = 0;
-    const oldHTML = blockElement.outerHTML;
-    blockElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
+    const matchCellsElement: HTMLTableCellElement[] = []
     blockElement.querySelectorAll("th, td").forEach((item: HTMLTableCellElement) => {
         if (!item.classList.contains("fn__none") &&
             item.offsetLeft + 6 > tableSelectElement.offsetLeft + scrollLeft && item.offsetLeft + item.clientWidth - 6 < tableSelectElement.offsetLeft + scrollLeft + tableSelectElement.clientWidth &&
             item.offsetTop + 6 > tableSelectElement.offsetTop && item.offsetTop + item.clientHeight - 6 < tableSelectElement.offsetTop + tableSelectElement.clientHeight &&
             cellElements.length > index) {
-            item.innerHTML = cellElements[index].innerHTML;
+            matchCellsElement.push(item);
             index++;
-            setLastNodeRange(item, range, false);
         }
     });
+    tableSelectElement.removeAttribute("style");
+    const oldHTML = blockElement.outerHTML;
+    blockElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
+    matchCellsElement.forEach((item, matchIndex) => {
+        item.innerHTML = cellElements[matchIndex].innerHTML;
+        if (matchIndex === matchCellsElement.length - 1) {
+            setLastNodeRange(item, range, false);
+        }
+    })
     range.collapse(false);
     updateTransaction(protyle, blockElement.getAttribute("data-node-id"), blockElement.outerHTML, oldHTML);
     return true;

+ 1 - 0
app/src/protyle/wysiwyg/index.ts

@@ -1467,6 +1467,7 @@ export class WYSIWYG {
                 const scrollLeft = nodeElement.firstElementChild.scrollLeft;
                 const tableSelectElement = nodeElement.querySelector(".table__select") as HTMLElement;
                 html = "<table>";
+                tableSelectElement.removeAttribute("style");
                 const oldHTML = nodeElement.outerHTML;
                 nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
                 nodeElement.querySelectorAll("th, td").forEach((item: HTMLTableCellElement) => {