'use client'; import { Controller, useForm, useWatch } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { Checkbox, TextArea, TextInput } from '@/components/input'; import { ModalForm } from '@/components/modal'; import { useDialogsStore } from '@/stores/dialogs'; import { errorMsg } from '@/utils/labels'; import { type ICreateVersionDTO, type IVersionInfo, schemaCreateVersion } from '../backend/types'; import { useCreateVersion } from '../backend/use-create-version'; import { nextVersion } from '../models/library-api'; export interface DlgCreateVersionProps { itemID: number; versions: IVersionInfo[]; onCreate: (newVersion: number) => void; selected: number[]; totalCount: number; } export function DlgCreateVersion() { const { itemID, versions, selected, totalCount, onCreate } = useDialogsStore( state => state.props as DlgCreateVersionProps ); const { createVersion: versionCreate } = useCreateVersion(); const { register, handleSubmit, control, formState: { errors } } = useForm({ resolver: zodResolver(schemaCreateVersion), defaultValues: { version: versions.length > 0 ? nextVersion(versions[versions.length - 1].version) : '1.0.0', description: '', items: [] }, mode: 'onChange' }); const version = useWatch({ control, name: 'version' }); const canSubmit = !!version && !versions.find(ver => ver.version === version); function onSubmit(data: ICreateVersionDTO) { return versionCreate({ itemID, data }).then(onCreate); } return ( void handleSubmit(onSubmit)(event)} >