diff --git a/src/components/forms/EditTaskForm.tsx b/src/components/forms/EditTaskForm.tsx index 52506b9..acfd2fd 100644 --- a/src/components/forms/EditTaskForm.tsx +++ b/src/components/forms/EditTaskForm.tsx @@ -143,6 +143,8 @@ export function EditTaskForm({ } errors={errors} loading={loading} + readonlyFields={task.readonlyFields || []} + source={task.source} /> diff --git a/src/components/forms/task/TaskBasicFields.tsx b/src/components/forms/task/TaskBasicFields.tsx index c7e1aad..18fd5ed 100644 --- a/src/components/forms/task/TaskBasicFields.tsx +++ b/src/components/forms/task/TaskBasicFields.tsx @@ -19,6 +19,8 @@ interface TaskBasicFieldsProps { onDueDateChange: (date?: Date) => void; errors: Record; loading: boolean; + readonlyFields?: string[]; + source?: string; // Source de la tâche pour déterminer le message (jira, tfs, etc.) } export function TaskBasicFields({ @@ -34,31 +36,71 @@ export function TaskBasicFields({ onDueDateChange, errors, loading, + readonlyFields = [], + source, }: TaskBasicFieldsProps) { + const isTitleReadonly = readonlyFields.includes('title'); + const isDescriptionReadonly = readonlyFields.includes('description'); + const isStatusReadonly = readonlyFields.includes('status'); + const isPriorityReadonly = readonlyFields.includes('priority'); + const isDueDateReadonly = readonlyFields.includes('dueDate'); + + // Déterminer le message selon la source + const getSyncMessage = (field: string) => { + if (source === 'jira') { + return field === 'title' || field === 'description' || field === 'dueDate' + ? '(synchronisé par Jira)' + : '(sync)'; + } else if (source === 'tfs') { + return field === 'title' || field === 'description' || field === 'dueDate' + ? '(synchronisé par TFS)' + : '(sync)'; + } + return '(sync)'; + }; + return ( <> {/* Titre */} - onTitleChange(e.target.value)} - placeholder="Titre de la tâche..." - error={errors.title} - disabled={loading} - /> +
+
+ + {isTitleReadonly && ( + + {getSyncMessage('title')} + + )} +
+ onTitleChange(e.target.value)} + placeholder="Titre de la tâche..." + error={errors.title} + disabled={loading || isTitleReadonly} + /> +
{/* Description */}
- +
+ + {isDescriptionReadonly && ( + + {getSyncMessage('description')} + + )} +