This commit is contained in:
Vanessa 2023-04-12 10:08:58 +08:00
parent 8224303021
commit 532cb82f4f
6 changed files with 47 additions and 21 deletions

View file

@ -24,6 +24,7 @@
background-color: var(--b3-theme-background);
font-size: 16px;
align-items: center;
padding: 16px;
& > div {
font-size: 64px;

View file

@ -104,6 +104,12 @@ export const openCardByData = (cardsData: { cards: ICard[], unreviewedCount: num
</div>`,
width: isMobile() ? "100vw" : "80vw",
height: isMobile() ? "100vh" : "70vh",
destroyCallback() {
if (editor) {
editor.destroy();
window.siyuan.mobile.popEditor = null;
}
}
});
(dialog.element.querySelector(".b3-dialog__scrim") as HTMLElement).style.backgroundColor = "var(--b3-theme-background)";
(dialog.element.querySelector(".b3-dialog__container") as HTMLElement).style.maxWidth = "1024px";
@ -118,6 +124,7 @@ export const openCardByData = (cardsData: { cards: ICard[], unreviewedCount: num
},
typewriterMode: false
});
window.siyuan.mobile.popEditor = editor;
if (window.siyuan.config.editor.readOnly) {
disabledProtyle(editor.protyle);
}
@ -137,7 +144,7 @@ export const openCardByData = (cardsData: { cards: ICard[], unreviewedCount: num
const selectElement = dialog.element.querySelector("select");
dialog.element.addEventListener("click", (event) => {
const target = event.target as HTMLElement;
const titleElement = countElement.previousElementSibling;
const titleElement = countElement?.previousElementSibling;
let type = "";
if (typeof event.detail === "string") {
if (event.detail === "1" || event.detail === "j") {
@ -294,7 +301,7 @@ export const openCardByData = (cardsData: { cards: ICard[], unreviewedCount: num
}
selectElement.addEventListener("change", () => {
fetchPost("/api/riff/getRiffDueCards", {deckID: selectElement.value}, (cardsChangeResponse) => {
blocks = cardsChangeResponse.data.blocks;
blocks = cardsChangeResponse.data.cards;
index = 0;
if (blocks.length > 0) {
nextCard({

View file

@ -39,11 +39,12 @@ export const viewCards = (deckID: string, title: string, deckType: "Tree" | "" |
<div class="fn__flex-1 card__empty">${window.siyuan.languages.emptyContent}</div>
</div>
</div>`,
width: isMobile() ? "98vw" : "80vw",
height: isMobile() ? "80vh" : "70vh",
width: isMobile() ? "100vw" : "80vw",
height: isMobile() ? "100vh" : "70vh",
destroyCallback() {
if (edit) {
edit.destroy();
window.siyuan.mobile.popEditor = null;
}
}
});
@ -57,6 +58,7 @@ export const viewCards = (deckID: string, title: string, deckType: "Tree" | "" |
breadcrumbDocName: true
},
});
window.siyuan.mobile.popEditor = edit;
if (window.siyuan.config.editor.readOnly) {
disabledProtyle(edit.protyle);
}

View file

@ -14,6 +14,10 @@ import {setStorageVal} from "../protyle/util/compatibility";
import {showMessage} from "../dialog/message";
import {saveScroll} from "../protyle/scroll/saveScroll";
export const getCurrentEditor = () => {
return window.siyuan.mobile.popEditor || window.siyuan.mobile.editor;
}
export const openMobileFileById = (id: string, action = [Constants.CB_GET_HL]) => {
window.siyuan.storage[Constants.LOCAL_DOCINFO] = {id, action};
setStorageVal(Constants.LOCAL_DOCINFO, window.siyuan.storage[Constants.LOCAL_DOCINFO]);

View file

@ -3,6 +3,7 @@ import {hasClosestBlock, hasClosestByClassName, hasClosestByMatchTag} from "../.
import {moveToDown, moveToUp} from "../../protyle/wysiwyg/move";
import {Constants} from "../../constants";
import {focusByRange, getSelectionPosition} from "../../protyle/util/selection";
import {getCurrentEditor} from "../editor";
let renderKeyboardToolbarTimeout: number;
let showUtil = false;
@ -152,8 +153,11 @@ const showKeyboardToolbarUtil = (oldScrollTop: number) => {
const toolbarElement = document.getElementById("keyboardToolbar");
let keyboardHeight = toolbarElement.getAttribute("data-keyboardheight");
keyboardHeight = (keyboardHeight ? (parseInt(keyboardHeight) + 42) : window.innerHeight / 2) + "px";
window.siyuan.mobile.editor.protyle.element.style.marginBottom = keyboardHeight;
window.siyuan.mobile.editor.protyle.contentElement.scrollTop = oldScrollTop;
const editor = getCurrentEditor();
if (editor) {
editor.protyle.element.parentElement.style.paddingBottom = keyboardHeight;
editor.protyle.contentElement.scrollTop = oldScrollTop;
}
setTimeout(() => {
toolbarElement.style.height = keyboardHeight;
}, Constants.TIMEOUT_TRANSITION); // 防止抖动
@ -165,7 +169,10 @@ const showKeyboardToolbarUtil = (oldScrollTop: number) => {
const hideKeyboardToolbarUtil = () => {
const toolbarElement = document.getElementById("keyboardToolbar");
toolbarElement.style.height = "";
window.siyuan.mobile.editor.protyle.element.style.marginBottom = "42px";
const editor = getCurrentEditor();
if (editor) {
editor.protyle.element.parentElement.style.paddingBottom = "42px";
}
toolbarElement.querySelector('.keyboard__action[data-type="add"]').classList.remove("protyle-toolbar__item--current");
toolbarElement.querySelector('.keyboard__action[data-type="done"] use').setAttribute("xlink:href", "#iconKeyboardHide");
};
@ -268,13 +275,13 @@ export const showKeyboardToolbar = () => {
modelElement.style.paddingBottom = "42px";
}
const range = getSelection().getRangeAt(0);
if (!window.siyuan.mobile.editor ||
!window.siyuan.mobile.editor.protyle.wysiwyg.element.contains(range.startContainer)) {
return;
const editor = getCurrentEditor();
if (editor && editor.protyle.wysiwyg.element.contains(range.startContainer)) {
editor.protyle.element.parentElement.style.paddingBottom = "42px";
}
window.siyuan.mobile.editor.protyle.element.style.marginBottom = "42px";
setTimeout(() => {
const contentElement = window.siyuan.mobile.editor.protyle.contentElement;
const contentElement = hasClosestByClassName(range.startContainer, "protyle-content", true);
if (contentElement) {
const cursorTop = getSelectionPosition(contentElement).top - contentElement.getBoundingClientRect().top;
if (cursorTop < window.innerHeight - 96) {
return;
@ -284,6 +291,7 @@ export const showKeyboardToolbar = () => {
left: contentElement.scrollLeft,
behavior: "smooth"
});
}
}, Constants.TIMEOUT_TRANSITION);
};
@ -294,7 +302,10 @@ export const hideKeyboardToolbar = () => {
const toolbarElement = document.getElementById("keyboardToolbar");
toolbarElement.classList.add("fn__none");
toolbarElement.style.height = "";
window.siyuan.mobile.editor.protyle.element.style.marginBottom = "";
const editor = getCurrentEditor();
if (editor) {
editor.protyle.element.parentElement.style.paddingBottom = "";
}
const modelElement = document.getElementById("model");
if (modelElement.style.transform === "translateY(0px)") {
modelElement.style.paddingBottom = "";

View file

@ -198,6 +198,7 @@ interface ISiyuan {
backStack?: IBackStack[],
mobile?: {
editor?: import("../protyle").Protyle
popEditor?: import("../protyle").Protyle
files?: import("../mobile/util/MobileFiles").MobileFiles
},
user?: {