diff --git a/src/components/__tests__/SplitGridNode.test.tsx b/src/components/__tests__/SplitGridNode.test.tsx
index 0d4d3606..a6dacdbe 100644
--- a/src/components/__tests__/SplitGridNode.test.tsx
+++ b/src/components/__tests__/SplitGridNode.test.tsx
@@ -209,15 +209,27 @@ describe("SplitGridNode", () => {
expect(screen.queryByTestId("split-grid-settings-modal")).not.toBeInTheDocument();
});
- it("should auto-open settings when not configured and no child nodes", () => {
+ it("should auto-open settings for a freshly created split grid node", () => {
render(
-
+
);
- // Modal should be open automatically
expect(screen.getByTestId("split-grid-settings-modal")).toBeInTheDocument();
+ expect(mockUpdateNodeData).toHaveBeenCalledWith("split-grid-node-1", {
+ shouldOpenSettingsOnCreate: false,
+ });
+ });
+
+ it("should not auto-open settings for loaded unconfigured split grid nodes", () => {
+ render(
+
+
+
+ );
+
+ expect(screen.queryByTestId("split-grid-settings-modal")).not.toBeInTheDocument();
});
it("should not auto-open settings when already configured", () => {
diff --git a/src/components/nodes/SplitGridNode.tsx b/src/components/nodes/SplitGridNode.tsx
index 82bdba27..9b62c182 100644
--- a/src/components/nodes/SplitGridNode.tsx
+++ b/src/components/nodes/SplitGridNode.tsx
@@ -43,12 +43,14 @@ export function SplitGridNode({ id, data, selected }: NodeProps {
- if (!nodeData.isConfigured && (!nodeData.childNodeIds || nodeData.childNodeIds.length === 0)) {
+ if (nodeData.shouldOpenSettingsOnCreate) {
setShowSettings(true);
+ updateNodeData(id, { shouldOpenSettingsOnCreate: false });
}
- }, [nodeData.isConfigured, nodeData.childNodeIds]);
+ }, [id, nodeData.shouldOpenSettingsOnCreate, updateNodeData]);
const handleOpenSettings = useCallback(() => {
setShowSettings(true);
diff --git a/src/store/utils/__tests__/nodeDefaults.test.ts b/src/store/utils/__tests__/nodeDefaults.test.ts
index 3daf040f..e7d856fc 100644
--- a/src/store/utils/__tests__/nodeDefaults.test.ts
+++ b/src/store/utils/__tests__/nodeDefaults.test.ts
@@ -193,6 +193,7 @@ describe("nodeDefaults utilities", () => {
expect(data).toHaveProperty("gridRows", 2);
expect(data).toHaveProperty("gridCols", 3);
expect(data).toHaveProperty("isConfigured", false);
+ expect(data).toHaveProperty("shouldOpenSettingsOnCreate", true);
expect(data).toHaveProperty("status", "idle");
expect(data).toHaveProperty("error", null);
});
diff --git a/src/store/utils/nodeDefaults.ts b/src/store/utils/nodeDefaults.ts
index 9190c94e..d9cb11d5 100644
--- a/src/store/utils/nodeDefaults.ts
+++ b/src/store/utils/nodeDefaults.ts
@@ -364,6 +364,7 @@ export const createDefaultNodeData = (type: NodeType): WorkflowNodeData => {
gridRows: 2,
gridCols: 3,
isConfigured: false,
+ shouldOpenSettingsOnCreate: true,
status: "idle",
error: null,
} as SplitGridNodeData;
diff --git a/src/types/nodes.ts b/src/types/nodes.ts
index 4a11b97f..d7f37132 100644
--- a/src/types/nodes.ts
+++ b/src/types/nodes.ts
@@ -542,6 +542,7 @@ export interface SplitGridNodeData extends BaseNodeData {
gridRows: number;
gridCols: number;
isConfigured: boolean;
+ shouldOpenSettingsOnCreate?: boolean;
status: NodeStatus;
error: string | null;
}