diff --git a/src/components/common/TreeExplorer.vue b/src/components/common/TreeExplorer.vue index a4f5c77421..15e57e4da9 100644 --- a/src/components/common/TreeExplorer.vue +++ b/src/components/common/TreeExplorer.vue @@ -49,7 +49,7 @@ const props = defineProps<{ }>() const emit = defineEmits<{ (e: 'nodeClick', node: RenderedTreeExplorerNode): void - (e: 'nodeRename', node: RenderedTreeExplorerNode, newName: string): void + (e: 'nodeDelete', node: RenderedTreeExplorerNode): void (e: 'contextMenu', node: RenderedTreeExplorerNode, event: MouseEvent): void }>() const { expandedKeys, toggleNodeOnEvent } = useTreeExpansion() @@ -89,9 +89,9 @@ const onNodeContentClick = (e: MouseEvent, node: RenderedTreeExplorerNode) => { emit('nodeClick', node) } const menu = ref(null) -const menuTargetNode = ref(null) +const menuTargetNode = ref(null) provide('menuTargetNode', menuTargetNode) -const renameEditingNode = ref(null) +const renameEditingNode = ref(null) provide('renameEditingNode', renameEditingNode) const menuItems = computed(() => [ { @@ -99,7 +99,17 @@ const menuItems = computed(() => [ icon: 'pi pi-file-edit', command: () => { renameEditingNode.value = menuTargetNode.value - } + }, + visible: menuTargetNode.value?.handleRename !== undefined + }, + { + label: 'Delete', + icon: 'pi pi-trash', + command: () => { + menuTargetNode.value?.handleDelete?.(menuTargetNode.value) + emit('nodeDelete', menuTargetNode.value) + }, + visible: menuTargetNode.value?.handleDelete !== undefined }, ...(props.extraMenuItems || []) ]) diff --git a/src/types/treeExplorerTypes.ts b/src/types/treeExplorerTypes.ts index ef3adb2155..d164deb279 100644 --- a/src/types/treeExplorerTypes.ts +++ b/src/types/treeExplorerTypes.ts @@ -8,6 +8,13 @@ export interface TreeExplorerNode { getIcon?: (node: TreeExplorerNode) => string // Function to handle renaming the node handleRename?: (node: TreeExplorerNode, newName: string) => void + // Function to handle deleting the node + handleDelete?: (node: TreeExplorerNode) => void + // Function to handle adding a child node + handleAddChild?: ( + node: TreeExplorerNode, + child: TreeExplorerNode + ) => void } export interface RenderedTreeExplorerNode extends TreeExplorerNode {