From bb25301e367587dbcb0ef05188c946646e2c320a Mon Sep 17 00:00:00 2001 From: Austin Mroz Date: Wed, 10 Sep 2025 15:37:31 -0500 Subject: [PATCH] Update widget state after visibility toggle --- src/components/selectionbar/SubgraphNode.vue | 34 +++++++++++++- .../selectionbar/SubgraphNodeWidget.vue | 47 ++----------------- 2 files changed, 36 insertions(+), 45 deletions(-) diff --git a/src/components/selectionbar/SubgraphNode.vue b/src/components/selectionbar/SubgraphNode.vue index 4945470e5..3da178acd 100644 --- a/src/components/selectionbar/SubgraphNode.vue +++ b/src/components/selectionbar/SubgraphNode.vue @@ -7,6 +7,7 @@ import draggable from 'vuedraggable' import SidebarTabTemplate from '@/components/sidebar/tabs/SidebarTabTemplate.vue' import SubgraphNodeWidget from '@/components/selectionbar/SubgraphNodeWidget.vue' +import { useDomWidgetStore } from '@/stores/domWidgetStore' import { useCanvasStore } from '@/stores/graphStore' const { t } = useI18n() @@ -27,6 +28,7 @@ const activeWidgets = computed({ get() { triggerUpdate.value const node = activeNode.value + if (!node) return [] const pw = node.properties.proxyWidgets ?? [] return pw.map(([id, name]) => { const wNode = node.subgraph._nodes_by_id[id] @@ -43,6 +45,32 @@ const activeWidgets = computed({ canvasStore.canvas.setDirty(true) } }) +function toggleVisibility(nodeId, widgetName, isShown) { + const node = activeNode.value + const { widgetStates } = useDomWidgetStore() + if (!isShown) { + const w = node.addProxyWidget(`${nodeId}`, widgetName) + if (widgetStates.has(w.id)) { + const widgetState = widgetStates.get(w.id) + widgetState.active = true + widgetState.widget = w + } + } else { + const index = node.widgets.findIndex((w) => w.name === widgetName) + if (index < 0) throw new Error("Can't disable missing widget") + const [w] = node.widgets.splice(index, 1) + if (widgetStates.has(w.id)) { + widgetStates.get(w.id).active = false + } + const { properties } = node + properties.proxyWidgets = properties.proxyWidgets.filter((p) => { + return p[1] !== widgetName + //NOTE: intentional loose as nodeId is often string/int + || p[0] != nodeId}) + } + triggerUpdate.value++ + useCanvasStore().canvas.setDirty(true) +} const candidateWidgets = computed(() =>{ const node = canvasStore.selectedItems[0] ?? {} @@ -78,13 +106,15 @@ const candidateWidgets = computed(() =>{ @end="drag=false" item-key="id">
- +
diff --git a/src/components/selectionbar/SubgraphNodeWidget.vue b/src/components/selectionbar/SubgraphNodeWidget.vue index 7577ce5f6..3efe9917c 100644 --- a/src/components/selectionbar/SubgraphNodeWidget.vue +++ b/src/components/selectionbar/SubgraphNodeWidget.vue @@ -1,59 +1,20 @@