Skip to content

Commit

Permalink
🚸 #5290
Browse files Browse the repository at this point in the history
  • Loading branch information
Vanessa219 committed Jun 29, 2022
1 parent cb44439 commit b038135
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 30 deletions.
16 changes: 12 additions & 4 deletions app/src/dialog/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@ export class Dialog {

constructor(options: {
title?: string,
transparent?: boolean,
content: string,
width?: string
height?: string,
destroyCallback?: () => void
disableClose?: boolean
disableAnimation?: boolean
}) {
this.disableClose = options.disableClose;
this.id = genUUID();
Expand All @@ -22,15 +24,17 @@ export class Dialog {
this.element = document.createElement("div") as HTMLElement;

this.element.innerHTML = `<div class="b3-dialog">
<div class="b3-dialog__scrim"></div>
<div class="b3-dialog__scrim"${options.transparent ? 'style="background-color:transparent"' : ""}></div>
<div class="b3-dialog__container" style="width:${options.width || "auto"}">
<svg class="b3-dialog__close fn__a${this.disableClose ? " fn__none" : ""}"><use xlink:href="#iconClose"></use></svg>
<div class="b3-dialog__header${options.title ? "" : " fn__none"}" onselectstart="return false;">${options.title || ""}</div>
<div style="height:${options.height || "auto"}">${options.content}</div>
</div></div>`;

this.element.querySelector(".b3-dialog__scrim").addEventListener(getEventName(), (event) => {
this.destroy();
if (!this.disableClose) {
this.destroy();
}
event.stopPropagation();
});
if (!this.disableClose) {
Expand All @@ -40,9 +44,13 @@ export class Dialog {
});
}
document.body.append(this.element);
setTimeout(() => {
if (options.disableAnimation) {
this.element.classList.add("b3-dialog--open");
});
} else {
setTimeout(() => {
this.element.classList.add("b3-dialog--open");
});
}
}

public destroy() {
Expand Down
64 changes: 38 additions & 26 deletions app/src/util/globalShortcut.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,33 @@ const getRightBlock = (element: HTMLElement, x: number, y: number) => {
return nodeElement;
};

const switchDialogEvent = (event: MouseEvent, switchDialog: Dialog) => {
event.preventDefault();
event.stopPropagation();
let target = event.target as HTMLElement;
while (!target.isSameNode(switchDialog.element)) {
if (target.classList.contains("b3-list-item")) {
const currentType = target.getAttribute("data-type") as TDockType;
if (currentType) {
getDockByType(currentType).toggleModel(currentType, true);
} else {
const currentId = target.getAttribute("data-id");
getAllTabs().find(item => {
if (item.id === currentId) {
item.parent.switchTab(item.headElement);
setPanelFocus(item.headElement.parentElement.parentElement);
return true;
}
});
}
switchDialog.destroy();
switchDialog = undefined;
break;
}
target = target.parentElement;
}
}

export const globalShortcut = () => {
window.addEventListener("mousemove", (event) => {
if (window.siyuan.hideBreadcrumb) {
Expand Down Expand Up @@ -159,6 +186,7 @@ export const globalShortcut = () => {
});

let switchDialog: Dialog;

window.addEventListener("keyup", (event) => {
window.siyuan.ctrlIsPressed = false;
window.siyuan.shiftIsPressed = false;
Expand Down Expand Up @@ -288,33 +316,17 @@ export const globalShortcut = () => {
</div>
<div class="fn__hr"></div>
</div>`,
disableClose: true
disableClose: true,
disableAnimation: true,
transparent: true,
});
switchDialog.element.addEventListener(isMac() ? "contextmenu" : "click", (event) => {
event.preventDefault();
event.stopPropagation();
let target = event.target as HTMLElement;
while (!target.isSameNode(switchDialog.element)) {
if (target.classList.contains("b3-list-item")) {
const currentType = target.getAttribute("data-type") as TDockType;
if (currentType) {
getDockByType(currentType).toggleModel(currentType, true);
} else {
const currentId = target.getAttribute("data-id");
getAllTabs().find(item => {
if (item.id === currentId) {
item.parent.switchTab(item.headElement);
setPanelFocus(item.headElement.parentElement.parentElement);
return true;
}
});
}
switchDialog.destroy();
switchDialog = undefined;
break;
}
target = target.parentElement;
}
if (isMac()) {
switchDialog.element.addEventListener("contextmenu", (event) => {
switchDialogEvent(event, switchDialog)
});
}
switchDialog.element.addEventListener("click", (event) => {
switchDialogEvent(event, switchDialog)
});
return;
}
Expand Down

0 comments on commit b038135

Please sign in to comment.