Skip to content

Commit dadb723

Browse files
make step header sticky, disabled when tool form is shown to avoid stacking
1 parent c1f3d40 commit dadb723

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

client/src/components/Workflow/Invocation/Graph/InvocationGraph.vue

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,22 @@ const initialPosition = computed(() => ({
128128
129129
const activeStep = computed(() => (activeNodeId.value !== null ? props.workflow.steps[activeNodeId.value] : undefined));
130130
131+
const activeCardHeaderClass = computed<Record<string, boolean>>(() => {
132+
const baseClasses = {
133+
"invocation-step-header": !showToolForm.value,
134+
"sticky-top": !showToolForm.value,
135+
"d-flex": true,
136+
"justify-content-between": true,
137+
"align-items-center": true,
138+
"px-3": true,
139+
"py-1": true,
140+
};
141+
142+
const stepHeaderClass = activeNodeId.value !== null ? steps.value[activeNodeId.value]?.headerClass : undefined;
143+
144+
return stepHeaderClass ? { ...baseClasses, ...stepHeaderClass } : baseClasses;
145+
});
146+
131147
/**
132148
* The job ID of the active step if it is not a workflow input and has a job associated with it, otherwise undefined.
133149
* This is used to determine whether to show the tool form for the active step.
@@ -253,9 +269,7 @@ function stepClicked(nodeId: number | null) {
253269
</div>
254270
</div>
255271
<BCard v-if="activeNodeId !== null && activeStep" ref="stepCard" class="invocation-step-card mt-2" no-body>
256-
<BCardHeader
257-
class="d-flex justify-content-between align-items-center px-3 py-1"
258-
:class="activeNodeId !== null ? steps[activeNodeId]?.headerClass : ''">
272+
<BCardHeader :class="activeCardHeaderClass">
259273
<WorkflowInvocationStepHeader
260274
class="w-100 pr-2"
261275
:workflow-step="activeStep"
@@ -366,15 +380,19 @@ function stepClicked(nodeId: number | null) {
366380
min-height: 500px;
367381
}
368382
369-
// Keep sticky header but let multiselect dropdowns render above it.
383+
.invocation-step-header {
384+
z-index: 2;
385+
}
386+
387+
// Prevent sticky header from covering multiselect dropdowns.
370388
.invocation-tool-form {
371389
&:deep(.tool-header),
372390
&:deep(.ui-form-header-underlay) {
373391
z-index: 2 !important;
374392
}
375393
376394
&:deep(.multiselect__content-wrapper) {
377-
z-index: 3;
395+
z-index: 1000;
378396
}
379397
}
380398
</style>

0 commit comments

Comments
 (0)