Skip to content

Commit b7f5160

Browse files
committed
feat: zIndex management for Flex Nodes
1 parent ea601fc commit b7f5160

4 files changed

Lines changed: 47 additions & 5 deletions

File tree

knip.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@
88
"src/components/shared/StatusFilterSelect/**",
99
"openapi-ts.config.ts",
1010
"vite.config.ghpages.js",
11-
"src/components/shared/ReactFlow/FlowCanvas/utils/zIndex.ts",
12-
"src/components/shared/ReactFlow/FlowControls/StackingControls.tsx",
13-
"src/components/shared/ReactFlow/FlowCanvas/types.ts",
1411
"src/components/shared/ReactFlow/FlowCanvas/FlexNode/interface.ts"
1512
],
1613
"ignoreDependencies": [

src/components/shared/ReactFlow/FlowCanvas/FlexNode/FlexNodeEditor.tsx

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@ import { Paragraph, Text } from "@/components/ui/typography";
1212
import { useComponentSpec } from "@/providers/ComponentSpecProvider";
1313
import { updateSubgraphSpec } from "@/utils/subgraphUtils";
1414

15+
import { StackingControls } from "../../FlowControls/StackingControls";
1516
import { updateFlexNodeInComponentSpec } from "./interface";
1617
import type { FlexNodeData } from "./types";
1718

1819
interface FlexNodeEditorProps {
1920
flexNode: FlexNodeData;
2021
readOnly?: boolean;
2122
}
22-
23+
//cachebust
2324
export const FlexNodeEditor = ({
2425
flexNode,
2526
readOnly = false,
@@ -77,6 +78,8 @@ export const FlexNodeEditor = ({
7778
},
7879
]}
7980
/>
81+
82+
{!readOnly && <ZIndexEditor flexNode={flexNode} />}
8083
</BlockStack>
8184
);
8285
};
@@ -272,3 +275,39 @@ const ColorEditor = ({
272275
</ContentBlock>
273276
);
274277
};
278+
279+
const ZIndexEditor = ({ flexNode }: { flexNode: FlexNodeData }) => {
280+
const {
281+
componentSpec,
282+
currentSubgraphSpec,
283+
currentSubgraphPath,
284+
setComponentSpec,
285+
} = useComponentSpec();
286+
287+
const handleStackingControlChange = (newZIndex: number) => {
288+
const updatedSubgraphSpec = updateFlexNodeInComponentSpec(
289+
currentSubgraphSpec,
290+
{
291+
...flexNode,
292+
zIndex: newZIndex,
293+
},
294+
);
295+
296+
const newRootSpec = updateSubgraphSpec(
297+
componentSpec,
298+
currentSubgraphPath,
299+
updatedSubgraphSpec,
300+
);
301+
302+
setComponentSpec(newRootSpec);
303+
};
304+
305+
return (
306+
<ContentBlock title="Stacking">
307+
<StackingControls
308+
nodeId={flexNode.id}
309+
onChange={handleStackingControlChange}
310+
/>
311+
</ContentBlock>
312+
);
313+
};

src/components/shared/ReactFlow/FlowCanvas/utils/addFlexNode.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { type ComponentSpec } from "@/utils/componentSpec";
66
import { updateFlexNodeInComponentSpec } from "../FlexNode/interface";
77
import type { FlexNodeData } from "../FlexNode/types";
88
import { DEFAULT_FLEX_NODE_SIZE, DEFAULT_STICKY_NOTE } from "../FlexNode/utils";
9+
import { Z_INDEX_RANGES } from "./zIndex";
910

1011
interface AddFlexNodeResult {
1112
spec: ComponentSpec;
@@ -45,7 +46,7 @@ const addFlexNode = (
4546
metadata,
4647
size: DEFAULT_FLEX_NODE_SIZE,
4748
position: position,
48-
zIndex: 0,
49+
zIndex: Z_INDEX_RANGES.flex.default,
4950
};
5051

5152
const newComponentSpec = updateFlexNodeInComponentSpec(

src/components/shared/ReactFlow/FlowCanvas/utils/zIndex.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ export const Z_INDEX_RANGES: Record<NodeType, ZIndexDefinition> = {
2929
max: 100,
3030
default: 100,
3131
},
32+
flex: {
33+
min: -100,
34+
max: 100,
35+
default: 0,
36+
},
3237
};
3338

3439
const getNodeZIndexProp = (

0 commit comments

Comments
 (0)