fix: delete block leftMenu not delete (#472)

This commit is contained in:
Frozen FIsh
2022-09-30 12:33:27 +08:00
committed by GitHub
parent ab22ac6957
commit b317c595c6
3 changed files with 16 additions and 5 deletions
@@ -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();
}
}
@@ -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: <DeleteCashBinIcon />,
@@ -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}
>
<Draggable onClick={onClick}>