'use client'; import { useRef } from 'react'; import { useTranslations } from 'next-intl'; import { Button } from '@/components/ui/shared/Button'; import { Dropdown } from '@/components/ui/shared/Dropdown'; import { autosaveStatusClass, labPendingBannerClass, labSentBannerClass, } from '@/components/treatment/treatmentStatusStyles'; import type { TreatmentDetailDraft } from '@/types/treatment'; import type { TreatmentCatalogEntry } from '@/types/treatment-catalog'; import { treatmentTypeColor } from '@/components/shared/treatmentTypeDisplay'; interface TreatmentDetailsEditorProps { details: TreatmentDetailDraft[]; activeDetailId: string; onActiveDetailChange: (id: string) => void; onDetailsChange: (details: TreatmentDetailDraft[]) => void; isDetailLocked: (detail: TreatmentDetailDraft) => boolean; labDependentCodes: Set; treatmentCatalog: TreatmentCatalogEntry[]; disabled: boolean; canEdit: boolean; saveStatus: 'idle' | 'dirty' | 'saving' | 'saved' | 'error'; uploadBusy: boolean; onAddDetail: () => void; onUploadFiles: (files: FileList | null) => void; } export function TreatmentDetailsEditor({ details, activeDetailId, onActiveDetailChange, onDetailsChange, isDetailLocked, labDependentCodes, treatmentCatalog, disabled, canEdit, saveStatus, uploadBusy, onAddDetail, onUploadFiles, }: TreatmentDetailsEditorProps) { const t = useTranslations('treatment'); const attachmentInputRef = useRef(null); const activeDetail = details.find((d) => d.clientId === activeDetailId) ?? details[0]; if (!activeDetail) return null; const locked = isDetailLocked(activeDetail); const readOnly = disabled || locked; const treatmentTypeTextColor = treatmentTypeColor( activeDetail.treatmentType, treatmentCatalog.findIndex((e) => e.code === activeDetail.treatmentType), ); const isLabDependent = labDependentCodes.has(activeDetail.treatmentType); const showPendingLabHint = isLabDependent && !locked && !readOnly; return (

{t('detailsTitle')}

{t('detailsSubtitle')}

{details.map((d, idx) => ( ))}
{locked && (

{t('detailLockedInShipment')}

)} {showPendingLabHint && (

{t('detailPendingLabSend')}

)}