diff --git a/app/src/boot/globalEvent/keydown.ts b/app/src/boot/globalEvent/keydown.ts index 2f0024529..8ab5b74f7 100644 --- a/app/src/boot/globalEvent/keydown.ts +++ b/app/src/boot/globalEvent/keydown.ts @@ -1164,6 +1164,7 @@ export const windowKeyDown = (app: App, event: KeyboardEvent) => { } hideElements(["dialog"]); switchDialog = new Dialog({ + positionId: Constants.DIALOG_SWITCHTAB, title: window.siyuan.languages.switchTab, content: `
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.title || ""}
${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: `