From b317c595c6b9ef8aa63f956e40fa0b36bb55eefc Mon Sep 17 00:00:00 2001
From: Frozen FIsh <76603360+sudongyuer@users.noreply.github.com>
Date: Fri, 30 Sep 2022 12:33:27 +0800
Subject: [PATCH] fix: delete block leftMenu not delete (#472)
---
.../editor-core/src/editor/commands/block-commands.ts | 6 ++++--
.../editor-plugins/src/menu/left-menu/LeftMenu.tsx | 10 +++++++---
.../src/menu/left-menu/LeftMenuDraggable.tsx | 5 +++++
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/libs/components/editor-core/src/editor/commands/block-commands.ts b/libs/components/editor-core/src/editor/commands/block-commands.ts
index f156bd627a..bb6ba6eadf 100644
--- a/libs/components/editor-core/src/editor/commands/block-commands.ts
+++ b/libs/components/editor-core/src/editor/commands/block-commands.ts
@@ -46,12 +46,14 @@ export class BlockCommands {
*
* remove block by block id
* @param {string} blockId
+ * @param onDelete Delete Block's LeftMenuDraggable
* @memberof BlockCommands
*/
- public async removeBlock(blockId: string) {
+ public async removeBlock(blockId: string, onDelete?: () => void) {
const block = await this._editor.getBlockById(blockId);
if (block) {
- block.remove();
+ onDelete();
+ await block.remove();
}
}
diff --git a/libs/components/editor-plugins/src/menu/left-menu/LeftMenu.tsx b/libs/components/editor-plugins/src/menu/left-menu/LeftMenu.tsx
index 731b6ea42e..c951d7600f 100644
--- a/libs/components/editor-plugins/src/menu/left-menu/LeftMenu.tsx
+++ b/libs/components/editor-plugins/src/menu/left-menu/LeftMenu.tsx
@@ -18,17 +18,21 @@ interface LeftMenuProps {
editor?: Virgo;
hooks: PluginHooks;
blockId: string;
+ onDelete: () => void;
}
export function LeftMenu(props: LeftMenuProps) {
- const { editor, anchorEl, hooks, blockId, onClose } = props;
+ const { editor, anchorEl, hooks, blockId, onClose, onDelete } = props;
const { t } = useTranslation();
const menu: CascaderItemProps[] = useMemo(
() => [
{
title: t('Delete'),
- callback: () => {
- editor.commands.blockCommands.removeBlock(blockId);
+ callback: async () => {
+ await editor.commands.blockCommands.removeBlock(
+ blockId,
+ onDelete
+ );
},
shortcut: 'Del',
icon: ,
diff --git a/libs/components/editor-plugins/src/menu/left-menu/LeftMenuDraggable.tsx b/libs/components/editor-plugins/src/menu/left-menu/LeftMenuDraggable.tsx
index 71e11e4679..4701c6c312 100644
--- a/libs/components/editor-plugins/src/menu/left-menu/LeftMenuDraggable.tsx
+++ b/libs/components/editor-plugins/src/menu/left-menu/LeftMenuDraggable.tsx
@@ -165,6 +165,10 @@ export const LeftMenuDraggable = (props: LeftMenuProps) => {
setAnchorEl(currentTarget);
};
+ const onDelete = useCallback(() => {
+ setBlock(undefined);
+ }, []);
+
const onClose = useCallback(() => setAnchorEl(undefined), [setAnchorEl]);
useEffect(() => {
@@ -241,6 +245,7 @@ export const LeftMenuDraggable = (props: LeftMenuProps) => {
editor={props.editor}
hooks={props.hooks}
onClose={onClose}
+ onDelete={onDelete}
blockId={block.block.id}
>