'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/backend/useAuth'; import { CloneLibraryItemSchema, ICloneLibraryItemDTO } from '@/features/library/backend/api'; import { useCloneItem } from '@/features/library/backend/useCloneItem'; import SelectAccessPolicy from '@/features/library/components/SelectAccessPolicy'; import SelectLocationContext from '@/features/library/components/SelectLocationContext'; import SelectLocationHead from '@/features/library/components/SelectLocationHead'; import { AccessPolicy, ILibraryItem, LocationHead } from '@/features/library/models/library'; import { cloneTitle, combineLocation } from '@/features/library/models/libraryAPI'; import { useDialogsStore } from '@/stores/dialogs'; import { ConstituentaID } from '../models/rsform'; export interface DlgCloneLibraryItemProps { base: ILibraryItem; initialLocation: string; selected: ConstituentaID[]; 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(CloneLibraryItemSchema), 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) { cloneItem(data, 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]')} >
( )} /> (