diff --git a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-nodes-border-chromium-linux.png b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-nodes-border-chromium-linux.png index bcc9e7e30..1fc54d81d 100644 Binary files a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-nodes-border-chromium-linux.png and b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-nodes-border-chromium-linux.png differ diff --git a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-selections-border-chromium-linux.png b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-selections-border-chromium-linux.png index ce3118790..dd636783b 100644 Binary files a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-selections-border-chromium-linux.png and b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-selections-border-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png index 83547c874..fa66f6cd1 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png index 60efd884f..eb8c0b8cb 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png index 363c2ba2f..c47f1b2fe 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png differ diff --git a/packages/design-system/src/icons/pin.svg b/packages/design-system/src/icons/pin.svg new file mode 100644 index 000000000..a837563ee --- /dev/null +++ b/packages/design-system/src/icons/pin.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/components/graph/selectionToolbox/BypassButton.vue b/src/components/graph/selectionToolbox/BypassButton.vue index 26d40052b..00c4fbe39 100644 --- a/src/components/graph/selectionToolbox/BypassButton.vue +++ b/src/components/graph/selectionToolbox/BypassButton.vue @@ -11,7 +11,7 @@ @click="toggleBypass" > diff --git a/src/renderer/extensions/vueNodes/components/LGraphNode.vue b/src/renderer/extensions/vueNodes/components/LGraphNode.vue index 9ce2d83f1..ead65d2cc 100644 --- a/src/renderer/extensions/vueNodes/components/LGraphNode.vue +++ b/src/renderer/extensions/vueNodes/components/LGraphNode.vue @@ -140,7 +140,7 @@ import { useI18n } from 'vue-i18n' import type { VueNodeData } from '@/composables/graph/useGraphNodeManager' import { toggleNodeOptions } from '@/composables/graph/useMoreOptionsMenu' import { useErrorHandling } from '@/composables/useErrorHandling' -import { LiteGraph } from '@/lib/litegraph/src/litegraph' +import { LGraphEventMode, LiteGraph } from '@/lib/litegraph/src/litegraph' import { useSettingStore } from '@/platform/settings/settingStore' import { useTelemetry } from '@/platform/telemetry' import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' @@ -222,8 +222,10 @@ const hasAnyError = computed((): boolean => { }) const isCollapsed = computed(() => nodeData.flags?.collapsed ?? false) -const bypassed = computed((): boolean => nodeData.mode === 4) -const muted = computed((): boolean => nodeData.mode === 2) // NEVER mode +const bypassed = computed( + (): boolean => nodeData.mode === LGraphEventMode.BYPASS +) +const muted = computed((): boolean => nodeData.mode === LGraphEventMode.NEVER) const nodeBodyBackgroundColor = computed(() => { const colorPaletteStore = useColorPaletteStore() diff --git a/src/renderer/extensions/vueNodes/components/NodeBadge.vue b/src/renderer/extensions/vueNodes/components/NodeBadge.vue index dd2b376a8..064eac26d 100644 --- a/src/renderer/extensions/vueNodes/components/NodeBadge.vue +++ b/src/renderer/extensions/vueNodes/components/NodeBadge.vue @@ -1,19 +1,31 @@ diff --git a/src/renderer/extensions/vueNodes/components/NodeHeader.vue b/src/renderer/extensions/vueNodes/components/NodeHeader.vue index aa84a7f99..5758fed62 100644 --- a/src/renderer/extensions/vueNodes/components/NodeHeader.vue +++ b/src/renderer/extensions/vueNodes/components/NodeHeader.vue @@ -54,17 +54,22 @@ @edit="handleTitleEdit" @cancel="handleTitleCancel" /> -
- + + + { // Local state for title to provide immediate feedback const displayTitle = ref(resolveTitle(nodeData)) -// Watch for external changes to the node title or type -watch( - () => [nodeData?.title, nodeData?.type] as const, - () => { - const next = resolveTitle(nodeData) - if (next !== displayTitle.value) { - displayTitle.value = next - } - } +const bypassed = computed( + (): boolean => nodeData?.mode === LGraphEventMode.BYPASS +) +const muted = computed((): boolean => nodeData?.mode === LGraphEventMode.NEVER) + +const statusBadge = computed((): NodeBadgeProps | undefined => + muted.value + ? { text: 'Muted', cssIcon: 'icon-[lucide--ban]' } + : bypassed.value + ? { text: 'Bypassed', cssIcon: 'icon-[lucide--redo-dot]' } + : undefined ) -const nodeBadges = computed(() => - (nodeData?.badges ?? []).map(toValue) +const nodeBadges = computed(() => + [...(nodeData?.badges ?? [])].map(toValue) ) const isPinned = computed(() => Boolean(nodeData?.flags?.pinned)) const isApiNode = computed(() => Boolean(nodeData?.apiNode)) @@ -210,6 +218,17 @@ const isSubgraphNode = computed(() => { return litegraphNode?.isSubgraphNode() ?? false }) +// Watch for external changes to the node title or type +watch( + () => [nodeData?.title, nodeData?.type] as const, + () => { + const next = resolveTitle(nodeData) + if (next !== displayTitle.value) { + displayTitle.value = next + } + } +) + // Event handlers const handleCollapse = () => { emit('collapse')