import { useState, useEffect } from 'react'; import { Button, Modal, ModalBody, ModalFooter, ModalTitle, Input, RadioGroup, RadioGroupAdapter, FormItem } from '@vertesia/ui/core'; import { useUITranslation } from '@vertesia/ui/i18n'; export interface SaveVersionConfirmModalProps { isOpen: boolean; onClose: () => void; onConfirm: (createVersion: boolean, versionLabel?: string) => Promise; isLoading: boolean; uploadedFileName?: string; // Add this to show when an uploaded file is being used } // Define option type and adapter for RadioGroup interface SaveOptionType { id: string; label: string; description: string; } class SaveOptionAdapter extends RadioGroupAdapter { idOf(item: SaveOptionType): string { return item.id } labelOf(item: SaveOptionType): string { return item.label } descriptionOf(item: SaveOptionType): React.ReactNode { return item.description } selectedClassName(_item: SaveOptionType): string { return 'border-3 border-primary' } } export function SaveVersionConfirmModal({ isOpen, onClose, onConfirm, isLoading, uploadedFileName }: SaveVersionConfirmModalProps) { const { t } = useUITranslation(); const saveOptions: SaveOptionType[] = [ { id: "update", label: t('modal.saveVersion.updateCurrent'), description: uploadedFileName ? t('modal.saveVersion.updateWithFileDescription') : t('modal.saveVersion.updateDescription') }, { id: "new-version", label: t('modal.saveVersion.createNew'), description: uploadedFileName ? t('modal.saveVersion.createWithFileDescription') : t('modal.saveVersion.createDescription') } ]; // Default to "create new version" when replacing a file, "update current version" when editing properties const defaultOption = uploadedFileName ? saveOptions[1] : saveOptions[0]; const [selectedOption, setSelectedOption] = useState(defaultOption); const [versionLabel, setVersionLabel] = useState(''); const optionAdapter = new SaveOptionAdapter(); // Reset to default when modal opens or uploadedFileName changes useEffect(() => { if (isOpen) { setSelectedOption(defaultOption); setVersionLabel(''); } }, [isOpen, uploadedFileName]); const createVersion = selectedOption?.id === "new-version"; const handleOptionChange = (option: SaveOptionType) => { setSelectedOption(option); }; const handleConfirm = async () => { await onConfirm(createVersion, createVersion ? versionLabel : undefined); }; return ( {t('modal.saveChanges')}
{uploadedFileName && (

{t('modal.saveVersion.replaceFile')} {uploadedFileName}

)}

{t('modal.saveVersion.howToSave')}

{createVersion && ( )}
); }