sketch: 실행과제/기반업무 left side labels

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
EENE Dashboard
2026-06-01 14:24:47 +09:00
parent 5dec3f2fae
commit 289dca19e2

View File

@@ -229,38 +229,56 @@ export function DepartmentColumn({ title: initialTitle, titleEn, subtitle: initi
</div> </div>
)} )}
{/* 프로젝트 카드 목록 (스크롤 영역) */} {/* ── 실행과제 영역 ── */}
<div <div className="flex flex-1 min-h-0">
className="flex-1 overflow-y-auto p-4 min-h-0" {/* 좌측 라벨 */}
onContextMenu={handleListContextMenu} <div className="shrink-0 w-6 flex items-center justify-center bg-blue-50 border-r border-blue-100">
> <span
{(() => { className="text-xs font-black text-blue-300 tracking-widest select-none"
const projectTasks = orderedTasks.filter((t) => t.taskType !== '상시업무'); style={{ writingMode: 'vertical-rl', transform: 'rotate(180deg)' }}
return projectTasks.length === 0 ? ( ></span>
<div className="flex items-center justify-center h-40 text-2xl text-gray-300"> </div>
{/* 카드 목록 */}
</div> <div
) : ( className="flex-1 overflow-y-auto p-4 min-h-0"
<DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}> onContextMenu={handleListContextMenu}
<SortableContext items={projectTasks.map((t) => t.id)} strategy={verticalListSortingStrategy}> >
{projectTasks.map((task) => ( {(() => {
<SortableTaskCard key={task.id} task={task} sectionOptions={sectionOptions} onSelect={onSelectTask} /> const projectTasks = orderedTasks.filter((t) => t.taskType !== '상시업무');
))} return projectTasks.length === 0 ? (
</SortableContext> <div className="flex items-center justify-center h-40 text-2xl text-gray-300">
</DndContext>
); </div>
})()} ) : (
<DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>
<SortableContext items={projectTasks.map((t) => t.id)} strategy={verticalListSortingStrategy}>
{projectTasks.map((task) => (
<SortableTaskCard key={task.id} task={task} sectionOptions={sectionOptions} onSelect={onSelectTask} />
))}
</SortableContext>
</DndContext>
);
})()}
</div>
</div> </div>
{/* 관리현황 고정 영역 (하단 2칸) */} {/* ── 기반업무 영역 ── */}
{(() => { {(() => {
const routineTasks = orderedTasks.filter((t) => t.taskType === '상시업무'); const routineTasks = orderedTasks.filter((t) => t.taskType === '상시업무');
return ( return (
<div className="shrink-0 border-t border-gray-200"> <div className="shrink-0 flex border-t border-gray-200" style={{ height: 300 }}>
<div className="px-4 pb-3 h-[300px] overflow-y-auto"> {/* 좌측 라벨 */}
<div className="shrink-0 w-6 flex items-center justify-center bg-amber-50 border-r border-amber-100">
<span
className="text-xs font-black text-amber-400 tracking-widest select-none"
style={{ writingMode: 'vertical-rl', transform: 'rotate(180deg)' }}
></span>
</div>
{/* 카드 목록 */}
<div className="flex-1 overflow-y-auto p-4">
{routineTasks.length === 0 ? ( {routineTasks.length === 0 ? (
<div className="flex items-center justify-center h-full text-base text-gray-300"> <div className="flex items-center justify-center h-full text-base text-gray-300">
</div> </div>
) : ( ) : (
<DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}> <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>