diff --git a/app/src/assets/scss/component/_menu.scss b/app/src/assets/scss/component/_menu.scss
index 3c30f2d5d..b3ca40d51 100644
--- a/app/src/assets/scss/component/_menu.scss
+++ b/app/src/assets/scss/component/_menu.scss
@@ -224,6 +224,14 @@
color: var(--b3-theme-primary);
}
+ &--remove:hover {
+ color: var(--b3-card-error-color);
+
+ & > .b3-menu__icon {
+ color: var(--b3-card-error-color);
+ }
+ }
+
&--current:not(.b3-menu__item--readonly) {
background-color: var(--b3-list-hover);
diff --git a/app/src/card/makeCard.ts b/app/src/card/makeCard.ts
index 9892b88d8..0937861b6 100644
--- a/app/src/card/makeCard.ts
+++ b/app/src/card/makeCard.ts
@@ -118,7 +118,7 @@ export const makeCard = (app: App, ids: string[]) => {
}, () => {
target.parentElement.remove();
});
- });
+ }, undefined, true);
event.stopPropagation();
event.preventDefault();
break;
diff --git a/app/src/config/image.ts b/app/src/config/image.ts
index 33b94b7f1..47ff8a685 100644
--- a/app/src/config/image.ts
+++ b/app/src/config/image.ts
@@ -68,7 +68,7 @@ export const image = {
assetsListElement.innerHTML = `
${window.siyuan.languages.emptyContent}`;
image.element.querySelector(".config-assets__preview").innerHTML = "";
});
- });
+ }, undefined, true);
} else if (target.classList.contains("item") && !target.classList.contains("item--focus")) {
image.element.querySelector(".layout-tab-bar .item--focus").classList.remove("item--focus");
target.classList.add("item--focus");
@@ -113,7 +113,7 @@ export const image = {
}
image.element.querySelector(".config-assets__preview").innerHTML = "";
});
- });
+ }, undefined, true);
event.preventDefault();
event.stopPropagation();
break;
diff --git a/app/src/dialog/confirmDialog.ts b/app/src/dialog/confirmDialog.ts
index 98cc3eb2b..56649aec6 100644
--- a/app/src/dialog/confirmDialog.ts
+++ b/app/src/dialog/confirmDialog.ts
@@ -1,7 +1,10 @@
import {isMobile} from "../util/functions";
import {Dialog} from "./index";
-export const confirmDialog = (title: string, text: string, confirm?: (dialog?: Dialog) => void, cancel?: (dialog: Dialog) => void) => {
+export const confirmDialog = (title: string, text: string,
+ confirm?: (dialog?: Dialog) => void,
+ cancel?: (dialog: Dialog) => void,
+ isDelete = false) => {
if (!text && !title) {
confirm();
return;
@@ -13,7 +16,7 @@ export const confirmDialog = (title: string, text: string, confirm?: (dialog?: D
-
+
`,
width: isMobile() ? "92vw" : "520px",
});
diff --git a/app/src/editor/deleteFile.ts b/app/src/editor/deleteFile.ts
index a00ee4ca5..0e368c765 100644
--- a/app/src/editor/deleteFile.ts
+++ b/app/src/editor/deleteFile.ts
@@ -31,7 +31,7 @@ export const deleteFile = (notebookId: string, pathString: string) => {
notebook: notebookId,
path: pathString
});
- });
+ }, undefined, true);
});
};
@@ -51,7 +51,7 @@ export const deleteFiles = (liElements: Element[]) => {
notebook: itemNotebookId,
callback: Constants.CB_MOUNT_REMOVE
});
- });
+ }, undefined, true);
}
}
} else {
@@ -73,6 +73,6 @@ export const deleteFiles = (liElements: Element[]) => {
fetchPost("/api/filetree/removeDocs", {
paths
});
- });
+ }, undefined, true);
}
};
diff --git a/app/src/history/history.ts b/app/src/history/history.ts
index 3fdbb4c16..6d9742a4e 100644
--- a/app/src/history/history.ts
+++ b/app/src/history/history.ts
@@ -759,7 +759,7 @@ const bindEvent = (app: App, element: Element, dialog?: Dialog) => {
fetchPost("/api/repo/" + type, {tag}, () => {
renderRepo(repoElement, 1);
});
- });
+ }, undefined, true);
event.stopPropagation();
event.preventDefault();
break;
diff --git a/app/src/layout/dock/Files.ts b/app/src/layout/dock/Files.ts
index 1402d450d..e6600dd1e 100644
--- a/app/src/layout/dock/Files.ts
+++ b/app/src/layout/dock/Files.ts
@@ -165,7 +165,7 @@ export class Files extends Model {
notebook: target.getAttribute("data-url"),
callback: Constants.CB_MOUNT_REMOVE
});
- });
+ }, undefined, true);
window.siyuan.menus.menu.remove();
event.stopPropagation();
event.preventDefault();
diff --git a/app/src/layout/dock/Inbox.ts b/app/src/layout/dock/Inbox.ts
index 2405584a5..4c7a1214d 100644
--- a/app/src/layout/dock/Inbox.ts
+++ b/app/src/layout/dock/Inbox.ts
@@ -290,7 +290,7 @@ ${data.shorthandContent}
} else {
this.remove(detailsElement.getAttribute("data-id"));
}
- });
+ }, undefined, true);
}
}).element);
}
diff --git a/app/src/menus/Menu.ts b/app/src/menus/Menu.ts
index 4a6645583..29e2235c8 100644
--- a/app/src/menus/Menu.ts
+++ b/app/src/menus/Menu.ts
@@ -213,6 +213,9 @@ export class MenuItem {
if (options.type === "readonly") {
this.element.classList.add("b3-menu__item--readonly");
}
+ if (options.icon === "iconTrashcan") {
+ this.element.classList.add("b3-menu__item--remove");
+ }
if (options.element) {
this.element.append(options.element);
diff --git a/app/src/menus/bookmark.ts b/app/src/menus/bookmark.ts
index e16ad7798..9178ad7ca 100644
--- a/app/src/menus/bookmark.ts
+++ b/app/src/menus/bookmark.ts
@@ -85,7 +85,7 @@ export const openBookmarkMenu = (element: HTMLElement, event: MouseEvent, bookma
} else {
fetchPost("/api/bookmark/removeBookmark", {bookmark: bookmarkText});
}
- });
+ }, undefined, true);
}
}).element);
}
diff --git a/app/src/menus/tag.ts b/app/src/menus/tag.ts
index b5bb1b397..0105ec09b 100644
--- a/app/src/menus/tag.ts
+++ b/app/src/menus/tag.ts
@@ -24,7 +24,7 @@ export const openTagMenu = (element: HTMLElement, event: MouseEvent, labelName:
click: () => {
confirmDialog(window.siyuan.languages.deleteOpConfirm, `${window.siyuan.languages.confirmDelete} ${escapeHtml(labelName)}?`, () => {
fetchPost("/api/tag/removeTag", {label: labelName});
- });
+ }, undefined, true);
}
}).element);
window.siyuan.menus.menu.element.setAttribute("data-name", "tagMenu");
diff --git a/app/src/menus/workspace.ts b/app/src/menus/workspace.ts
index 82e426791..ef74cfef0 100644
--- a/app/src/menus/workspace.ts
+++ b/app/src/menus/workspace.ts
@@ -301,7 +301,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
fetchPost("/api/system/removeWorkspaceDir", {path: item.path}, () => {
confirmDialog(window.siyuan.languages.deleteOpConfirm, window.siyuan.languages.removeWorkspacePhysically.replace("${x}", item.path), () => {
fetchPost("/api/system/removeWorkspaceDirPhysically", {path: item.path});
- });
+ }, undefined, true);
});
return;
}
diff --git a/app/src/mobile/dock/MobileFiles.ts b/app/src/mobile/dock/MobileFiles.ts
index ad0e032a9..ebde8f453 100644
--- a/app/src/mobile/dock/MobileFiles.ts
+++ b/app/src/mobile/dock/MobileFiles.ts
@@ -177,7 +177,7 @@ export class MobileFiles extends Model {
notebook: target.getAttribute("data-url"),
callback: Constants.CB_MOUNT_REMOVE
});
- });
+ }, undefined, true);
event.stopPropagation();
event.preventDefault();
break;
diff --git a/app/src/mobile/settings/about.ts b/app/src/mobile/settings/about.ts
index 2fa76ef92..6a97b02a2 100644
--- a/app/src/mobile/settings/about.ts
+++ b/app/src/mobile/settings/about.ts
@@ -356,7 +356,7 @@ export const initAbout = () => {
genWorkspace(workspaceDirElement);
confirmDialog(window.siyuan.languages.deleteOpConfirm, window.siyuan.languages.removeWorkspacePhysically.replace("${x}", removePath), () => {
fetchPost("/api/system/removeWorkspaceDirPhysically", {path: removePath});
- });
+ }, undefined, true);
});
event.preventDefault();
event.stopPropagation();
diff --git a/app/src/protyle/render/av/select.ts b/app/src/protyle/render/av/select.ts
index e0252a8db..ff9381f50 100644
--- a/app/src/protyle/render/av/select.ts
+++ b/app/src/protyle/render/av/select.ts
@@ -289,7 +289,7 @@ export const setColOption = (protyle: IProtyle, data: IAV, target: HTMLElement,
if (selectedElement) {
menuElement.querySelector(".b3-menu__items").scrollTop = oldScroll + (menuElement.querySelector(".b3-chips").clientHeight - oldChipsHeight);
}
- });
+ }, undefined, true);
}
});
menu.addSeparator();
diff --git a/app/src/sync/syncGuide.ts b/app/src/sync/syncGuide.ts
index 43fc167b1..c64f8de9f 100644
--- a/app/src/sync/syncGuide.ts
+++ b/app/src/sync/syncGuide.ts
@@ -61,7 +61,7 @@ export const bindSyncCloudListEvent = (cloudPanelElement: Element, cb?: () => vo
window.siyuan.config.sync.cloudName = response.data;
getSyncCloudList(cloudPanelElement, true, cb);
});
- });
+ }, undefined, true);
break;
case "selectCloud":
cloudPanelElement.innerHTML = '
';