improvement: treatment plan now save on debounce. save treatment button removed.

This commit is contained in:
2026-06-28 18:08:29 +03:30
parent 478cfa085a
commit 7b8ed48fa0
6 changed files with 211 additions and 123 deletions

View File

@@ -15,12 +15,10 @@ interface TreatmentDetailsEditorProps {
isDetailLocked: (detail: TreatmentDetailDraft) => boolean;
disabled: boolean;
canEdit: boolean;
isDirty: boolean;
saveBusy: boolean;
saveStatus: 'idle' | 'dirty' | 'saving' | 'saved' | 'error';
uploadBusy: boolean;
onAddDetail: () => void;
onPreview: () => void;
onSave: () => void;
onUploadFiles: (files: FileList | null) => void;
}
@@ -32,12 +30,10 @@ export function TreatmentDetailsEditor({
isDetailLocked,
disabled,
canEdit,
isDirty,
saveBusy,
saveStatus,
uploadBusy,
onAddDetail,
onPreview,
onSave,
onUploadFiles,
}: TreatmentDetailsEditorProps) {
const t = useTranslations('treatment');
@@ -175,21 +171,19 @@ export function TreatmentDetailsEditor({
</div>
</div>
{canEdit && (
<div className="flex flex-wrap gap-3 pt-2 border-t border-border/60">
<Button
type="button"
variant="primary"
disabled={disabled || saveBusy}
isLoading={saveBusy}
onClick={onSave}
>
{t('saveDraft')}
</Button>
<p className="text-xs text-text-muted self-center">
{isDirty ? t('unsavedChanges') : t('draftSaved')}. {t('detailsSaveHint')}
</p>
</div>
{canEdit && saveStatus !== 'idle' && (
<p
className={`text-xs pt-2 border-t border-border/60 ${
saveStatus === 'error' ? 'text-red-500' : 'text-text-muted'
}`}
role="status"
aria-live="polite"
>
{saveStatus === 'dirty' && t('unsavedChanges')}
{saveStatus === 'saving' && t('saveStatusSaving')}
{saveStatus === 'saved' && t('saveStatusSaved')}
{saveStatus === 'error' && t('saveStatusError')}
</p>
)}
</div>
);