From f4981a6ba98f6ca998735a8278d7a07828e682aa Mon Sep 17 00:00:00 2001
From: psychedelicious <4822129+psychedelicious@users.noreply.github.com>
Date: Mon, 11 Aug 2025 22:34:04 +1000
Subject: [PATCH] tidy(ui): minor cleanup
---
.../flow/nodes/Invocation/InvocationNode.tsx | 4 +---
.../flow/nodes/Invocation/InvocationNodeHeader.tsx | 10 ++++++----
.../flow/nodes/Invocation/fields/InputFieldTitle.tsx | 6 +++---
.../common/{NodeTitle.tsx => InvocationNodeTitle.tsx} | 7 ++++---
4 files changed, 14 insertions(+), 13 deletions(-)
rename invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/{NodeTitle.tsx => InvocationNodeTitle.tsx} (92%)
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNode.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNode.tsx
index 66e4befb08..7bb92c1494 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNode.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNode.tsx
@@ -8,7 +8,6 @@ import {
useInputFieldNamesConnection,
useInputFieldNamesMissing,
} from 'features/nodes/hooks/useInputFieldNamesByStatus';
-import { useNodeHasErrors } from 'features/nodes/hooks/useNodeIsInvalid';
import { useOutputFieldNames } from 'features/nodes/hooks/useOutputFieldNames';
import { useWithFooter } from 'features/nodes/hooks/useWithFooter';
import { memo } from 'react';
@@ -38,12 +37,11 @@ const sx: SystemStyleObject = {
};
const InvocationNode = ({ nodeId, isOpen }: Props) => {
- const isInvalid = useNodeHasErrors();
const withFooter = useWithFooter();
return (
<>
-
+
{isOpen && (
<>
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeHeader.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeHeader.tsx
index 016f96e287..63a86479b2 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeHeader.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeHeader.tsx
@@ -1,8 +1,9 @@
import type { SystemStyleObject } from '@invoke-ai/ui-library';
import { Flex } from '@invoke-ai/ui-library';
+import InvocationNodeTitle from 'features/nodes/components/flow/nodes/common/InvocationNodeTitle';
import NodeCollapseButton from 'features/nodes/components/flow/nodes/common/NodeCollapseButton';
-import NodeTitle from 'features/nodes/components/flow/nodes/common/NodeTitle';
import InvocationNodeClassificationIcon from 'features/nodes/components/flow/nodes/Invocation/InvocationNodeClassificationIcon';
+import { useNodeHasErrors } from 'features/nodes/hooks/useNodeIsInvalid';
import { memo } from 'react';
import InvocationNodeCollapsedHandles from './InvocationNodeCollapsedHandles';
@@ -12,7 +13,6 @@ import InvocationNodeStatusIndicator from './InvocationNodeStatusIndicator';
type Props = {
nodeId: string;
isOpen: boolean;
- isInvalid?: boolean;
};
const sx: SystemStyleObject = {
@@ -28,12 +28,14 @@ const sx: SystemStyleObject = {
},
};
-const InvocationNodeHeader = ({ nodeId, isOpen, isInvalid }: Props) => {
+const InvocationNodeHeader = ({ nodeId, isOpen }: Props) => {
+ const isInvalid = useNodeHasErrors();
+
return (
-
+
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldTitle.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldTitle.tsx
index 396b05c2ac..b0a4336486 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldTitle.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldTitle.tsx
@@ -30,12 +30,12 @@ const labelSx: SystemStyleObject = {
_hover: {
fontWeight: 'semibold !important',
},
- '&[data-is-added-to-form="true"]': {
- color: 'blue.300',
- },
'&[data-is-invalid="true"]': {
color: 'error.300',
},
+ '&[data-is-added-to-form="true"]': {
+ color: 'blue.300',
+ },
'&[data-is-disabled="true"]': {
opacity: 0.5,
},
diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeTitle.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/InvocationNodeTitle.tsx
similarity index 92%
rename from invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeTitle.tsx
rename to invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/InvocationNodeTitle.tsx
index e08b3fe8d0..538a39facb 100644
--- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeTitle.tsx
+++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/InvocationNodeTitle.tsx
@@ -4,6 +4,7 @@ import { useAppDispatch } from 'app/store/storeHooks';
import { useEditable } from 'common/hooks/useEditable';
import { useBatchGroupColorToken } from 'features/nodes/hooks/useBatchGroupColorToken';
import { useBatchGroupId } from 'features/nodes/hooks/useBatchGroupId';
+import { useNodeHasErrors } from 'features/nodes/hooks/useNodeIsInvalid';
import { useNodeTemplateTitleSafe } from 'features/nodes/hooks/useNodeTemplateTitleSafe';
import { useNodeUserTitleSafe } from 'features/nodes/hooks/useNodeUserTitleSafe';
import { nodeLabelChanged } from 'features/nodes/store/nodesSlice';
@@ -21,11 +22,11 @@ const labelSx: SystemStyleObject = {
type Props = {
nodeId: string;
title?: string;
- isInvalid?: boolean;
};
-const NodeTitle = ({ nodeId, title, isInvalid }: Props) => {
+const InvocationNodeTitle = ({ nodeId, title }: Props) => {
const dispatch = useAppDispatch();
+ const isInvalid = useNodeHasErrors();
const label = useNodeUserTitleSafe();
const batchGroupId = useBatchGroupId(nodeId);
const batchGroupColorToken = useBatchGroupColorToken(batchGroupId);
@@ -83,4 +84,4 @@ const NodeTitle = ({ nodeId, title, isInvalid }: Props) => {
);
};
-export default memo(NodeTitle);
+export default memo(InvocationNodeTitle);