diff --git a/app/src/business/openRecentDocs.ts b/app/src/business/openRecentDocs.ts
index 5a941ad2d..27c430e4c 100644
--- a/app/src/business/openRecentDocs.ts
+++ b/app/src/business/openRecentDocs.ts
@@ -83,6 +83,7 @@ export const openRecentDocs = () => {
range = getSelection().getRangeAt(0);
}
const dialog = new Dialog({
+ positionId: Constants.DIALOG_RECENTDOCS,
title: `
${window.siyuan.languages.recentDocs}
diff --git a/app/src/card/makeCard.ts b/app/src/card/makeCard.ts
index da9dc125b..3fc13b19e 100644
--- a/app/src/card/makeCard.ts
+++ b/app/src/card/makeCard.ts
@@ -48,6 +48,7 @@ export const makeCard = (app: App, ids: string[]) => {
html += genCardItem(item);
});
const dialog = new Dialog({
+ positionId: Constants.DIALOG_MAKECARD,
width: isMobile() ? "92vw" : "50vw",
height: "70vh",
title: window.siyuan.languages.riffCard,
diff --git a/app/src/card/openCard.ts b/app/src/card/openCard.ts
index 1c98e7054..e74a76dd7 100644
--- a/app/src/card/openCard.ts
+++ b/app/src/card/openCard.ts
@@ -464,13 +464,11 @@ export const openCardByData = (app: App, cardsData: {
if (exit) {
return;
}
- const dialogPosition = window.siyuan.storage[Constants.LOCAL_DIALOGPOSITION][Constants.DIALOG_OPENCARD];
const dialog = new Dialog({
+ positionId: Constants.DIALOG_OPENCARD,
content: genCardHTML({id, cardType, cardsData, isTab: false}),
- width: dialogPosition ? dialogPosition.width + "px" : (isMobile() ? "100vw" : "80vw"),
- height: dialogPosition ? dialogPosition.height + "px" : (isMobile() ? "100vh" : "70vh"),
- left: dialogPosition?.left,
- top: dialogPosition?.top,
+ width: isMobile() ? "100vw" : "80vw",
+ height: isMobile() ? "100vh" : "70vh",
destroyCallback() {
if (editor) {
editor.destroy();
diff --git a/app/src/card/viewCards.ts b/app/src/card/viewCards.ts
index 5b8c89885..e49e9a644 100644
--- a/app/src/card/viewCards.ts
+++ b/app/src/card/viewCards.ts
@@ -21,6 +21,7 @@ export const viewCards = (app: App, deckID: string, title: string, deckType: "Tr
page: pageIndex
}, (response) => {
const dialog = new Dialog({
+ positionId: Constants.DIALOG_VIEWCARDS,
content: `
${escapeHtml(title)}
diff --git a/app/src/dialog/index.ts b/app/src/dialog/index.ts
index 9d42f0fa4..9e43256f1 100644
--- a/app/src/dialog/index.ts
+++ b/app/src/dialog/index.ts
@@ -5,6 +5,7 @@ import {moveResize} from "./moveResize";
import {isMobile} from "../util/functions";
import {isNotCtrl} from "../protyle/util/compatibility";
import {Protyle} from "../protyle";
+import {Constants} from "../constants";
export class Dialog {
private destroyCallback: (options?: IObject) => void;
@@ -15,11 +16,10 @@ export class Dialog {
public data: any;
constructor(options: {
+ positionId?: string,
title?: string,
transparent?: boolean,
content: string,
- left?: number,
- top?: number,
width?: string,
height?: string,
destroyCallback?: (options?: IObject) => void,
@@ -33,10 +33,20 @@ export class Dialog {
window.siyuan.dialogs.push(this);
this.destroyCallback = options.destroyCallback;
this.element = document.createElement("div") as HTMLElement;
-
- this.element.innerHTML = `
+ let left
+ let top
+ if (!isMobile() && options.positionId) {
+ const dialogPosition = window.siyuan.storage[Constants.LOCAL_DIALOGPOSITION][options.positionId];
+ if (dialogPosition) {
+ left = dialogPosition.left + "px";
+ top = dialogPosition.top + "px";
+ options.width = dialogPosition.width + "px";
+ options.height = dialogPosition.height + "px";
+ }
+ }
+ this.element.innerHTML = `
-
+
${options.content}
diff --git a/app/src/dialog/moveResize.ts b/app/src/dialog/moveResize.ts
index 0e26eef51..fb50d0643 100644
--- a/app/src/dialog/moveResize.ts
+++ b/app/src/dialog/moveResize.ts
@@ -137,10 +137,10 @@ export const moveResize = (element: HTMLElement, afterCB?: (type: string) => voi
const dialogElement = hasClosestByClassName(element, "b3-dialog--open")
if (dialogElement) {
const dialogId = dialogElement.dataset.key;
- if (dialogId) {
+ if (dialogId && element.offsetWidth) {
window.siyuan.storage[Constants.LOCAL_DIALOGPOSITION][dialogId] = {
- width: parseInt(element.style.width),
- height: parseInt(element.style.height),
+ width: element.offsetWidth,
+ height: element.offsetHeight,
left: parseInt(element.style.left),
top: parseInt(element.style.top),
}
diff --git a/app/src/search/spread.ts b/app/src/search/spread.ts
index cb2b100fe..3cf19c158 100644
--- a/app/src/search/spread.ts
+++ b/app/src/search/spread.ts
@@ -80,6 +80,7 @@ export const openSearch = async (options: {
range = getSelection().getRangeAt(0);
}
const dialog = new Dialog({
+ positionId: options.hotkey,
content: "",
width: "80vw",
height: "90vh",
diff --git a/app/src/util/mount.ts b/app/src/util/mount.ts
index efd82b1d6..a04bfc3a3 100644
--- a/app/src/util/mount.ts
+++ b/app/src/util/mount.ts
@@ -64,6 +64,7 @@ export const newDailyNote = (app: App) => {
}
});
const dialog = new Dialog({
+ positionId: Constants.DIALOG_DIALYNOTE,
title: window.siyuan.languages.plsChoose,
content: `