diff --git a/app/src/assets/scss/mobile.scss b/app/src/assets/scss/mobile.scss index e0ef5b5bf..66b3b27aa 100644 --- a/app/src/assets/scss/mobile.scss +++ b/app/src/assets/scss/mobile.scss @@ -271,6 +271,16 @@ padding: 4px; height: 32px; } + + &.keyboard__svg--close { + height: 12px; + background-color: var(--b3-theme-on-surface-light); + width: 12px; + padding: 4px; + border-radius: 10px; + margin: 10px; + color: var(--b3-theme-on-primary); + } } } } diff --git a/app/src/mobile/util/keyboardToolbar.ts b/app/src/mobile/util/keyboardToolbar.ts index 9440849aa..74e7f66b4 100644 --- a/app/src/mobile/util/keyboardToolbar.ts +++ b/app/src/mobile/util/keyboardToolbar.ts @@ -45,12 +45,13 @@ export const renderKeyboardToolbar = () => { const range = getSelection().getRangeAt(0); let html = "" if (hasClosestByClassName(range.startContainer, "protyle-wysiwyg", true)) { + const protyle = window.siyuan.mobile.editor.protyle; html = ` - + - - + + @@ -65,7 +66,7 @@ export const renderKeyboardToolbar = () => { document.getElementById("keyboardToolbar").innerHTML = `
${html}
- + @@ -83,7 +84,7 @@ export const renderKeyboardToolbar = () => { - +
@@ -109,7 +110,7 @@ export const initKeyboardToolbar = () => { toolbarElement.addEventListener("click", (event) => { const target = event.target as HTMLElement; const buttonElement = hasClosestByMatchTag(target, "BUTTON"); - if (!buttonElement || !window.siyuan.mobile.editor) { + if (!buttonElement) { return; } event.preventDefault(); @@ -119,7 +120,7 @@ export const initKeyboardToolbar = () => { hideKeyboard(); return; } - if (window.siyuan.mobile.editor.protyle.disabled) { + if (window.siyuan.config.readonly || window.siyuan.config.editor.readOnly || !window.siyuan.mobile.editor) { return; } const protyle = window.siyuan.mobile.editor.protyle; @@ -131,17 +132,29 @@ export const initKeyboardToolbar = () => { protyle.undo.redo(protyle); return; } - let range: Range; - if (getSelection().rangeCount > 0) { - range = getSelection().getRangeAt(0); - } - if (!range || (range && !protyle.wysiwyg.element.contains(range.startContainer))) { + if (type === "goback") { + const dynamicElements = document.querySelectorAll("#keyboardToolbar .keyboard__dynamic") + dynamicElements[0].classList.remove("fn__none") + dynamicElements[1].classList.add("fn__none") return; } + if (type === "goinline") { + const dynamicElements = document.querySelectorAll("#keyboardToolbar .keyboard__dynamic") + dynamicElements[1].classList.remove("fn__none") + dynamicElements[0].classList.add("fn__none") + return; + } + + if (getSelection().rangeCount === 0) { + return; + } + const range = getSelection().getRangeAt(0); const nodeElement = hasClosestBlock(range.startContainer); if (!nodeElement) { return; } + // inline element + // block element if (type === "up") { moveToUp(protyle, nodeElement, range); diff --git a/app/src/protyle/undo/index.ts b/app/src/protyle/undo/index.ts index b105c4ef9..8cda95be2 100644 --- a/app/src/protyle/undo/index.ts +++ b/app/src/protyle/undo/index.ts @@ -15,8 +15,8 @@ interface IOperations { export class Undo { private hasUndo = false; - private redoStack: IOperations[]; - private undoStack: IOperations[]; + public redoStack: IOperations[]; + public undoStack: IOperations[]; constructor() { this.redoStack = [];