Browse Source

:art: fix https://github.com/88250/lute/issues/42

Liyuan Li 5 years ago
parent
commit
e6f0fb6c49
4 changed files with 15 additions and 12 deletions
  1. 1 1
      demo/index.js
  2. 3 5
      src/assets/scss/_ir.scss
  3. 2 1
      src/ts/ir/processKeydown.ts
  4. 9 5
      src/ts/wysiwyg/highlightToolbar.ts

+ 1 - 1
demo/index.js

@@ -4,7 +4,7 @@ import '../src/assets/scss/index.scss'
 window.vditor = new Vditor('vditor', {
   debugger: true,
   typewriterMode: true,
-  // mode: 'sv',
+  // mode: 'ir',
   placeholder: 'placeholder',
   preview: {
     markdown: {

+ 3 - 5
src/assets/scss/_ir.scss

@@ -4,6 +4,9 @@
   position: relative;
   width: 100%;
 
+  &__block[data-type="html-block"] pre {
+    margin: 1em 0 !important;
+  }
 
   &__node {
     &[data-type="code-block"]:before,
@@ -155,7 +158,6 @@
   h4:before,
   h5:before,
   h6:before,
-  div.vditor-wysiwyg__block:before,
   div[data-type="link-ref-defs-block"]:before,
   div[data-type="footnotes-block"]:before,
   .vditor-toc:before {
@@ -196,10 +198,6 @@
     content: '^F';
   }
 
-  div.vditor-wysiwyg__block:before {
-    content: "</>";
-  }
-
   .vditor-toc:before {
     content: "ToC";
   }

+ 2 - 1
src/ts/ir/processKeydown.ts

@@ -71,7 +71,8 @@ export const processKeydown = (vditor: IVditor, event: KeyboardEvent) => {
             return true;
         }
         // 数学公式上无元素,按上或左将添加新块
-        if (codeRenderElement.getAttribute("data-type") === "math-block" &&
+        if ((codeRenderElement.getAttribute("data-type") === "math-block"
+            || codeRenderElement.getAttribute("data-type") === "html-block") &&
             insertBeforeBlock(vditor, event, range, codeRenderElement, preRenderElement.parentElement)) {
             return true;
         }

+ 9 - 5
src/ts/wysiwyg/highlightToolbar.ts

@@ -459,9 +459,9 @@ export const highlightToolbar = (vditor: IVditor) => {
             setPopoverPosition(vditor, footnotesRefElement);
         }
 
-        const blockRenderElement = hasClosestByClassName(typeElement, "vditor-wysiwyg__block");
+        let blockRenderElement = hasClosestByClassName(typeElement, "vditor-wysiwyg__block") as HTMLElement;
+        // block popover: math-inline, math-block, html-block, html-inline, code-block
         if (blockRenderElement && blockRenderElement.getAttribute("data-type").indexOf("block") > -1) {
-            // block popover: math-inline, math-block, html-block, html-inline, code-block
             vditor.wysiwyg.popover.innerHTML = "";
             genClose(vditor.wysiwyg.popover, blockRenderElement, vditor);
             genInsertBefore(range, blockRenderElement, vditor);
@@ -524,9 +524,13 @@ export const highlightToolbar = (vditor: IVditor) => {
             }
             setPopoverPosition(vditor, blockRenderElement);
         } else {
-            vditor.wysiwyg.element.querySelectorAll(".vditor-wysiwyg__preview").forEach((itemElement) => {
-                (itemElement.previousElementSibling as HTMLElement).style.display = "none";
-            });
+            if (!blockRenderElement) {
+                vditor.wysiwyg.element.querySelectorAll(".vditor-wysiwyg__preview").forEach((itemElement) => {
+                    const previousElement = itemElement.previousElementSibling as HTMLElement
+                    previousElement.style.display = "none";
+                });
+            }
+            blockRenderElement = undefined;
         }
 
         if (headingElement) {