diff --git a/app/src/menus/Menu.ts b/app/src/menus/Menu.ts index ec49f0206..c13b0a898 100644 --- a/app/src/menus/Menu.ts +++ b/app/src/menus/Menu.ts @@ -82,6 +82,16 @@ export class Menu { } } + public addSeparator() { + this.addItem({type: "separator"}); + } + + public addItem(option: IMenu) { + const menuItem = new MenuItem(option); + this.append(menuItem.element); + return menuItem.element; + } + public remove() { if (window.siyuan.menus.menu.removeCB) { window.siyuan.menus.menu.removeCB(); @@ -170,7 +180,7 @@ export class MenuItem { }); } let html = `${options.label}`; - if (options.iconHTML) { + if (typeof options.iconHTML === "string") { html = options.iconHTML + html; } else { html = `${html}`; diff --git a/app/src/plugin/API.ts b/app/src/plugin/API.ts index ea28b232d..dea1d7dca 100644 --- a/app/src/plugin/API.ts +++ b/app/src/plugin/API.ts @@ -39,16 +39,14 @@ export class Menu { if (this.isOpen) { return; } - const menuItem = new MenuItem(option); - this.menu.append(menuItem.element); - return menuItem.element; + return this.menu.addItem(option); } addSeparator() { if (this.isOpen) { return; } - this.addItem({type: "separator"}); + this.menu.addSeparator(); } open(options: { x: number, y: number, h?: number, w?: number, isLeft: false }) { diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index 6020217f0..4f44a0e06 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -708,6 +708,12 @@ export class Gutter { } }).element); } + this.app?.plugins?.forEach((plugin) => { + plugin.eventBus.emit("click-blockicon", { + menu: window.siyuan.menus.menu, + blockElements: selectsElement, + }); + }); return window.siyuan.menus.menu; } @@ -1501,8 +1507,11 @@ export class Gutter { type: "readonly", label: `${updateHTML}${window.siyuan.languages.createdAt} ${dayjs(id.substr(0, 14)).format("YYYY-MM-DD HH:mm:ss")}`, }).element); - this.app.plugins.forEach((plugin) => { - plugin.eventBus.emit("click-blockicon", [nodeElement]); + this.app?.plugins?.forEach((plugin) => { + plugin.eventBus.emit("click-blockicon", { + menu: window.siyuan.menus.menu, + blockElements: [nodeElement] + }); }); return window.siyuan.menus.menu; }