Independent scrolling is now working for the TasksTab

This commit is contained in:
Colin Dawson 2026-02-16 21:24:31 +00:00
parent a777f3157a
commit b1d2ee70c9
5 changed files with 66 additions and 19 deletions

View File

@ -1,5 +1,30 @@
@import "./_esuiteVariables.scss"; @import "./_esuiteVariables.scss";
.full-height-container {
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
> form {
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
> h1,
> div:not(.horizionalTabs),
> * {
flex-shrink: 0;
}
> .horizionalTabs {
flex: 1;
min-height: 0;
}
}
}
.two-column-grid-1-1 { .two-column-grid-1-1 {
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: 1fr 1fr;
@ -10,4 +35,10 @@
display: grid; display: grid;
grid-template-columns: fit-content(50%) auto; grid-template-columns: fit-content(50%) auto;
grid-gap: $gridGap; grid-gap: $gridGap;
height: 100%;
> div {
overflow-y: auto;
height: 100%;
}
} }

View File

@ -42,4 +42,8 @@
width: 100%; width: 100%;
overflow: auto; overflow: auto;
padding: $frameWorkAreaPadding; padding: $frameWorkAreaPadding;
&.no-scroll {
overflow: hidden;
}
} }

View File

@ -1,5 +1,9 @@
.horizionalTabs { .horizionalTabs {
display: flex;
flex-direction: column;
.tab-list { .tab-list {
flex-shrink: 0;
padding-left: 0; padding-left: 0;
display: flex; display: flex;
align-items: bottom; align-items: bottom;
@ -32,6 +36,12 @@
border-width: 0 0 1px 0; border-width: 0 0 1px 0;
background-color: inherit; background-color: inherit;
} }
> div:last-child {
flex: 1;
overflow: hidden;
min-height: 0;
}
} }
.error-icon { .error-icon {

View File

@ -207,7 +207,7 @@ const WorkflowTemplateDetails: React.FC<{ editMode: boolean }> = ({
return ( return (
<Loading loaded={loaded}> <Loading loaded={loaded}>
<div> <div className="full-height-container">
<form onSubmit={handleSubmit}> <form onSubmit={handleSubmit}>
<h1>{heading}</h1> <h1>{heading}</h1>

View File

@ -67,7 +67,7 @@ const TasksTab: React.FC<TasksTabProps> = ({
return ( return (
<div className="two-column-grid"> <div className="two-column-grid">
<div className="fit-content-width"> <div className="fit-content-width`">
<TaskList <TaskList
tasks={tasks} tasks={tasks}
validTasksList={taskValidation} validTasksList={taskValidation}
@ -79,26 +79,28 @@ const TasksTab: React.FC<TasksTabProps> = ({
/> />
</div> </div>
{selectedTask && ( {selectedTask && (
<TaskEditor <div>
tasksMetadata={tasksMetadata} <TaskEditor
task={selectedTask} tasksMetadata={tasksMetadata}
tasks={tasks} task={selectedTask}
onChange={(updatedTask) => { tasks={tasks}
const newTasks = tasks.map((t) => onChange={(updatedTask) => {
t.config.guid === updatedTask.config.guid ? updatedTask : t, const newTasks = tasks.map((t) =>
); t.config.guid === updatedTask.config.guid ? updatedTask : t,
);
handleTasksChange(newTasks); handleTasksChange(newTasks);
// Use the updated object from the array, not the raw updatedTask // Use the updated object from the array, not the raw updatedTask
const updatedFromArray = newTasks.find( const updatedFromArray = newTasks.find(
(t) => t.config.guid === updatedTask.config.guid, (t) => t.config.guid === updatedTask.config.guid,
); );
setSelectedTask(updatedFromArray!); setSelectedTask(updatedFromArray!);
}} }}
onValidate={onValidate} onValidate={onValidate}
/> />
</div>
)} )}
</div> </div>
); );