Files
adiuvAI/src/renderer/components/tasks/TaskTable.tsx
Roberto efa3051c61 fix: task UX polish — card menu, sheet live render, composer align, project link, no comment toast
- TaskCard: replace checkbox toggle with right-click ContextMenu (Edit / Change Status submenu / Delete), matching TaskTableRow flow; status now visible via shared StatusBadge in card footer
- TaskTableRow + TaskCard: add RefreshCw icon to Change Status submenu trigger
- TaskDetailSheet: subscribe to fresh row via tasks.byIds and render liveTask so priority/status chip popovers reflect mutations immediately; invalidate byIds alongside tasks.list on update
- ChatInputBox 'comment' variant: items-end -> items-center so single-line placeholder aligns with send button
- TaskTableRow: remove project-cell click handler and underline; remove onProjectClick prop chain from TaskTable
- TaskDetailSheet header breadcrumb: now a button navigating to /projects?projectId=... (closes sheet first)
- TaskDetailSheet addComment: drop success toast on create, keep error toast and cache invalidation
2026-05-08 16:00:55 +02:00

63 lines
1.8 KiB
TypeScript

import { useTranslation } from 'react-i18next';
import {
Table,
TableHeader,
TableBody,
TableRow,
TableHead,
} from '@/components/ui/table';
import { useFormatPrefs } from '@/lib/date';
import { type TaskItem } from './task-types';
import { TaskTableRow } from './TaskTableRow';
interface Props {
tasks: TaskItem[];
hideProjectColumn?: boolean;
onRowClick: (task: TaskItem) => void;
onEdit: (task: TaskItem) => void;
onDelete: (id: string) => void;
onStatusChange: (id: string, status: string) => void;
}
export function TaskTable({
tasks,
hideProjectColumn,
onRowClick,
onEdit,
onDelete,
onStatusChange,
}: Props) {
const { t } = useTranslation();
const prefs = useFormatPrefs();
return (
<div className="rounded-lg border border-border/50 bg-card/65 backdrop-blur-xl shadow-sm overflow-hidden">
<Table>
<TableHeader>
<TableRow className="hover:bg-transparent">
<TableHead>{t('tasks.colTask')}</TableHead>
{!hideProjectColumn && <TableHead>{t('tasks.colProject')}</TableHead>}
<TableHead>{t('tasks.colPriority')}</TableHead>
<TableHead>{t('tasks.colDue')}</TableHead>
<TableHead>{t('tasks.colAssignee')}</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{tasks.map((task) => (
<TaskTableRow
key={task.id}
task={task}
hideProjectColumn={hideProjectColumn}
onClick={() => onRowClick(task)}
onEdit={() => onEdit(task)}
onDelete={() => onDelete(task.id)}
onStatusChange={(s) => onStatusChange(task.id, s)}
prefs={prefs}
/>
))}
</TableBody>
</Table>
</div>
);
}