'use client'; import { useEffect, useState } from 'react'; import { IconReset, IconSave } from '@/components/Icons'; import MiniButton from '@/components/ui/MiniButton'; import Modal from '@/components/ui/Modal'; import TextArea from '@/components/ui/TextArea'; import TextInput from '@/components/ui/TextInput'; import { IVersionData, IVersionInfo, VersionID } from '@/models/library'; import { useDialogsStore } from '@/stores/dialogs'; import TableVersions from './TableVersions'; export interface DlgEditVersionsProps { versions: IVersionInfo[]; onDelete: (versionID: VersionID) => void; onUpdate: (versionID: VersionID, data: IVersionData) => void; } function DlgEditVersions() { const { versions, onDelete, onUpdate } = useDialogsStore(state => state.props as DlgEditVersionsProps); const [selected, setSelected] = useState(undefined); const processing = false; // TODO: fix processing hook and versions update const [version, setVersion] = useState(''); const [description, setDescription] = useState(''); const isValid = selected && versions.every(ver => ver.id === selected.id || ver.version != version); const isModified = selected && (selected.version != version || selected.description != description); function handleUpdate() { if (!isModified || !selected || processing || !isValid) { return; } const data: IVersionData = { version: version, description: description }; onUpdate(selected.id, data); } function handleReset() { if (!selected) { return false; } setVersion(selected?.version ?? ''); setDescription(selected?.description ?? ''); } useEffect(() => { setVersion(selected?.version ?? ''); setDescription(selected?.description ?? ''); }, [selected]); return ( setSelected(versions.find(ver => ver.id === versionID))} selected={selected?.id} />
setVersion(event.target.value)} />
} onClick={handleUpdate} /> } />