Skip to content

Commit cc9319c

Browse files
committed
Refactor TreeExplorer (Add handleClick hook)
1 parent 415a2e7 commit cc9319c

File tree

4 files changed

+32
-31
lines changed

4 files changed

+32
-31
lines changed

src/components/common/TreeExplorer.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
class="tree-explorer"
44
:class="props.class"
55
v-model:expandedKeys="expandedKeys"
6+
v-model:selectionKeys="selectionKeys"
67
:value="renderedRoots"
78
selectionMode="single"
89
:pt="{
@@ -42,11 +43,12 @@ import type {
4243
} from '@/types/treeExplorerTypes'
4344
import type { MenuItem, MenuItemCommandEvent } from 'primevue/menuitem'
4445
import { useI18n } from 'vue-i18n'
45-
import { useToast } from 'primevue/usetoast'
4646
import { useErrorHandling } from '@/hooks/errorHooks'
4747
4848
const expandedKeys = defineModel<Record<string, boolean>>('expandedKeys')
4949
provide('expandedKeys', expandedKeys)
50+
const selectionKeys = defineModel<Record<string, boolean>>('selectionKeys')
51+
provide('selectionKeys', selectionKeys)
5052
const props = defineProps<{
5153
roots: TreeExplorerNode[]
5254
class?: string
@@ -91,6 +93,9 @@ const fillNodeInfo = (node: TreeExplorerNode): RenderedTreeExplorerNode => {
9193
}
9294
}
9395
const onNodeContentClick = (e: MouseEvent, node: RenderedTreeExplorerNode) => {
96+
if (node.handleClick) {
97+
node.handleClick(node, e)
98+
}
9499
emit('nodeClick', node, e)
95100
}
96101
const menu = ref(null)

src/components/sidebar/tabs/NodeLibrarySidebarTab.vue

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,17 @@ const renderedRoot = computed<TreeExplorerNode<ComfyNodeDefImpl>>(() => {
123123
}
124124
},
125125
children,
126-
draggable: node.leaf
126+
draggable: node.leaf,
127+
handleClick: (
128+
node: RenderedTreeExplorerNode<ComfyNodeDefImpl>,
129+
e: MouseEvent
130+
) => {
131+
if (node.leaf) {
132+
app.addNodeOnGraph(node.data, { pos: app.getCanvasCenter() })
133+
} else {
134+
toggleNodeOnEvent(e, node)
135+
}
136+
}
127137
}
128138
}
129139
return fillNodeInfo(root.value)
@@ -164,17 +174,6 @@ const handleSearch = (query: string) => {
164174
})
165175
}
166176
167-
const handleNodeClick = (
168-
node: RenderedTreeExplorerNode<ComfyNodeDefImpl>,
169-
e: MouseEvent
170-
) => {
171-
if (node.leaf) {
172-
app.addNodeOnGraph(node.data, { pos: app.getCanvasCenter() })
173-
} else {
174-
toggleNodeOnEvent(e, node)
175-
}
176-
}
177-
178177
const onAddFilter = (filterAndValue: FilterAndValue) => {
179178
filters.value.push({
180179
filter: filterAndValue,

src/components/sidebar/tabs/nodeLibrary/NodeBookmarkTreeExplorer.vue

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
:roots="renderedBookmarkedRoot.children"
66
:expandedKeys="expandedKeys"
77
:extraMenuItems="extraMenuItems"
8-
@nodeClick="handleNodeClick"
98
>
109
<template #folder="{ node }">
1110
<NodeTreeFolder :node="node" />
@@ -36,31 +35,18 @@ import type {
3635
TreeExplorerNode
3736
} from '@/types/treeExplorerTypes'
3837
import type { TreeNode } from 'primevue/treenode'
38+
import { useToast } from 'primevue/usetoast'
3939
import { computed, nextTick, ref, watch } from 'vue'
40+
import { useI18n } from 'vue-i18n'
4041
import { useTreeExpansion } from '@/hooks/treeHooks'
4142
import { app } from '@/scripts/app'
4243
import { findNodeByKey } from '@/utils/treeUtil'
43-
import { useErrorHandling } from '@/hooks/errorHooks'
44-
import { useI18n } from 'vue-i18n'
4544
4645
const props = defineProps<{
4746
filteredNodeDefs: ComfyNodeDefImpl[]
4847
}>()
4948
50-
const expandedKeys = ref<Record<string, boolean>>({})
51-
const { expandNode, toggleNodeOnEvent } = useTreeExpansion(expandedKeys)
52-
53-
const handleNodeClick = (
54-
node: RenderedTreeExplorerNode<ComfyNodeDefImpl>,
55-
e: MouseEvent
56-
) => {
57-
if (node.leaf) {
58-
app.addNodeOnGraph(node.data, { pos: app.getCanvasCenter() })
59-
} else {
60-
toggleNodeOnEvent(e, node)
61-
}
62-
}
63-
49+
const { expandedKeys, expandNode, toggleNodeOnEvent } = useTreeExpansion()
6450
const nodeBookmarkStore = useNodeBookmarkStore()
6551
const bookmarkedRoot = computed<TreeNode>(() => {
6652
const filterTree = (node: TreeNode): TreeNode | null => {
@@ -147,6 +133,16 @@ const renderedBookmarkedRoot = computed<TreeExplorerNode<ComfyNodeDefImpl>>(
147133
const nodePath = folderNodeDef.category + '/' + nodeDefToAdd.name
148134
nodeBookmarkStore.addBookmark(nodePath)
149135
},
136+
handleClick: (
137+
node: RenderedTreeExplorerNode<ComfyNodeDefImpl>,
138+
e: MouseEvent
139+
) => {
140+
if (node.leaf) {
141+
app.addNodeOnGraph(node.data, { pos: app.getCanvasCenter() })
142+
} else {
143+
toggleNodeOnEvent(e, node)
144+
}
145+
},
150146
...(node.leaf
151147
? {}
152148
: {
@@ -204,7 +200,6 @@ const updateCustomization = (icon: string, color: string) => {
204200
}
205201
}
206202
207-
const { t } = useI18n()
208203
const extraMenuItems = computed(
209204
() => (menuTargetNode: RenderedTreeExplorerNode<ComfyNodeDefImpl>) => [
210205
{

src/types/treeExplorerTypes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ export interface TreeExplorerNode<T = any> {
2424
node: TreeExplorerNode<T>,
2525
data: TreeExplorerDragAndDropData
2626
) => void
27+
// Function to handle clicking a node
28+
handleClick?: (node: TreeExplorerNode<T>, event: MouseEvent) => void
2729
// Function to handle errors
2830
handleError?: (error: Error) => void
2931
}

0 commit comments

Comments
 (0)