feat: showDate toggle on card via task modal checkbox

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
EENE Dashboard
2026-06-01 14:36:57 +09:00
parent c578fbc324
commit f86fd00674
6 changed files with 24 additions and 7 deletions

View File

@@ -52,6 +52,7 @@ model Task {
issueNote String?
startDate DateTime?
dueDate DateTime?
showDate Boolean @default(true)
creatorId String
assigneeId String?
createdAt DateTime @default(now())

View File

@@ -23,6 +23,7 @@ export interface TaskFormData {
quarter: string;
startDate: string;
dueDate: string;
showDate: boolean;
}
interface TaskModalProps {
@@ -53,6 +54,7 @@ export function TaskModal({ mode, task, defaultSection = 'HR', defaultQuarter =
quarter: task?.quarter ?? defaultQuarter,
startDate: toDateInput(task?.startDate),
dueDate: toDateInput(task?.dueDate),
showDate: task?.showDate ?? true,
});
const set = <K extends keyof TaskFormData>(field: K, value: TaskFormData[K]) =>
@@ -201,18 +203,26 @@ export function TaskModal({ mode, task, defaultSection = 'HR', defaultQuarter =
</div>
{/* 프로젝트 기간 */}
<div className="grid grid-cols-2 gap-3">
<div>
<label className="block text-sm font-bold text-gray-500 mb-1.5"></label>
<div>
<div className="flex items-center justify-between mb-1.5">
<label className="text-sm font-bold text-gray-500"></label>
<label className="flex items-center gap-1.5 cursor-pointer select-none">
<input
type="checkbox"
checked={form.showDate}
onChange={(e) => set('showDate', e.target.checked)}
className="w-4 h-4 accent-blue-500 cursor-pointer"
/>
<span className="text-sm font-semibold text-gray-500"> </span>
</label>
</div>
<div className="grid grid-cols-2 gap-3">
<input
type="date"
value={form.startDate}
onChange={(e) => set('startDate', e.target.value)}
className="w-full border border-gray-200 rounded-xl px-4 py-2.5 outline-none focus:border-blue-400 focus:ring-2 focus:ring-blue-100 transition"
/>
</div>
<div>
<label className="block text-sm font-bold text-gray-500 mb-1.5"></label>
<input
type="date"
value={form.dueDate}

View File

@@ -202,6 +202,7 @@ export function DepartmentColumn({ title: initialTitle, titleEn, subtitle: initi
issueNote: data.issueNote || null,
startDate: data.startDate || null,
dueDate: data.dueDate || null,
showDate: data.showDate,
quarter: data.quarter,
priority: 'MEDIUM',
creatorId: 'system',

View File

@@ -125,6 +125,7 @@ export function TaskCard({
issueNote: data.issueNote || null,
startDate: data.startDate || null,
dueDate: data.dueDate || null,
showDate: data.showDate,
quarter: data.quarter,
priority: 'MEDIUM',
creatorId: 'system',
@@ -144,6 +145,7 @@ export function TaskCard({
issueNote: data.issueNote || null,
startDate: data.startDate || null,
dueDate: data.dueDate || null,
showDate: data.showDate,
});
setModalMode(null);
};
@@ -192,7 +194,7 @@ export function TaskCard({
{/* ── 기간 + 상태 ── */}
<div className="mt-1 flex items-center gap-2">
<span className="text-sm text-gray-400 font-medium flex-1 truncate">
{(task.startDate || task.dueDate)
{task.showDate && (task.startDate || task.dueDate)
? `${task.startDate ? fmtDate(task.startDate) : '?'} ~ ${task.dueDate ? fmtDate(task.dueDate) : '?'}`
: ''}
</span>

View File

@@ -59,6 +59,7 @@ export function TaskManager({ tasks, sectionOptions, quarter, onClose }: TaskMan
taskType: data.taskType || null, status: data.status, progress: data.progress,
description: data.description || null, issueNote: data.issueNote || null,
startDate: data.startDate || null, dueDate: data.dueDate || null,
showDate: data.showDate,
quarter: data.quarter, priority: 'MEDIUM', creatorId: 'system',
});
setModalMode(null);
@@ -73,6 +74,7 @@ export function TaskManager({ tasks, sectionOptions, quarter, onClose }: TaskMan
taskType: data.taskType || null, status: data.status, progress: data.progress,
description: data.description || null, issueNote: data.issueNote || null,
startDate: data.startDate || null, dueDate: data.dueDate || null,
showDate: data.showDate,
},
});
setModalMode(null);

View File

@@ -27,6 +27,7 @@ export interface Task {
issueNote: string | null;
startDate: string | null;
dueDate: string | null;
showDate: boolean;
creatorId: string;
assigneeId: string | null;
createdAt: string;