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 = [];