'use client'; import { Controller, useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { urls, useConceptNavigation } from '@/app'; import { MiniButton } from '@/components/control'; import { Checkbox, Label, TextArea, TextInput } from '@/components/input'; import { ModalForm } from '@/components/modal'; import { useDialogsStore } from '@/stores/dialogs'; import { AccessPolicy, type ICloneLibraryItemDTO, type ILibraryItem, schemaCloneLibraryItem } from '../backend/types'; import { useCloneItem } from '../backend/use-clone-item'; import { IconItemVisibility } from '../components/icon-item-visibility'; import { PickLocation } from '../components/pick-location'; import { SelectAccessPolicy } from '../components/select-access-policy'; import { cloneTitle } from '../models/library-api'; export interface DlgCloneLibraryItemProps { base: ILibraryItem; initialLocation: string; selected: number[]; totalCount: number; } export function DlgCloneLibraryItem() { const { base, initialLocation, selected, totalCount } = useDialogsStore( state => state.props as DlgCloneLibraryItemProps ); const router = useConceptNavigation(); const { cloneItem } = useCloneItem(); const { register, handleSubmit, control, formState: { errors, isValid } } = useForm({ resolver: zodResolver(schemaCloneLibraryItem), defaultValues: { id: base.id, item_type: base.item_type, title: cloneTitle(base), alias: base.alias, description: base.description, visible: true, read_only: false, access_policy: AccessPolicy.PUBLIC, location: initialLocation, items: [] }, mode: 'onChange', reValidateMode: 'onChange' }); function onSubmit(data: ICloneLibraryItemDTO) { return cloneItem(data).then(newSchema => router.pushAsync({ path: urls.schema(newSchema.id), force: true })); } return ( void handleSubmit(onSubmit)(event)} className='px-6 py-2 cc-column h-fit w-120' >
( )} />