'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import clsx from 'clsx'; import { Controller, useForm } from 'react-hook-form'; import { urls, useConceptNavigation } from '@/app'; import { MiniButton } from '@/components/Control'; import { VisibilityIcon } from '@/components/DomainIcons'; import { Checkbox, Label, TextArea, TextInput } from '@/components/Input'; import { ModalForm } from '@/components/Modal'; import { useAuthSuspense } from '@/features/auth'; import { useDialogsStore } from '@/stores/dialogs'; import { ICloneLibraryItemDTO, schemaCloneLibraryItem } from '../backend/api'; import { useCloneItem } from '../backend/useCloneItem'; import { SelectAccessPolicy } from '../components/SelectAccessPolicy'; import { SelectLocationContext } from '../components/SelectLocationContext'; import { SelectLocationHead } from '../components/SelectLocationHead'; import { AccessPolicy, ILibraryItem, LocationHead } from '../models/library'; import { cloneTitle, combineLocation } from '../models/libraryAPI'; export interface DlgCloneLibraryItemProps { base: ILibraryItem; initialLocation: string; selected: number[]; totalCount: number; } function DlgCloneLibraryItem() { const { base, initialLocation, selected, totalCount } = useDialogsStore( state => state.props as DlgCloneLibraryItemProps ); const router = useConceptNavigation(); const { user } = useAuthSuspense(); 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, comment: base.comment, visible: true, read_only: false, access_policy: AccessPolicy.PUBLIC, location: initialLocation, items: undefined }, mode: 'onChange', reValidateMode: 'onChange' }); function onSubmit(data: ICloneLibraryItemDTO) { return cloneItem(data).then(newSchema => router.push(urls.schema(newSchema.id))); } return ( void handleSubmit(onSubmit)(event)} className={clsx('px-6 py-2', 'cc-column', 'max-h-full w-[30rem]')} >
( )} /> (