'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import clsx from 'clsx'; import { Controller, useForm } from 'react-hook-form'; import { z } from 'zod'; import { Label, TextArea } from '@/components/Input'; import { ModalForm } from '@/components/Modal'; import { useAuthSuspense } from '@/features/auth/backend/useAuth'; import { useDialogsStore } from '@/stores/dialogs'; import { limits } from '@/utils/constants'; import { errorMsg } from '@/utils/labels'; import SelectLocationContext from '../components/SelectLocationContext'; import SelectLocationHead from '../components/SelectLocationHead'; import { LocationHead } from '../models/library'; import { combineLocation, validateLocation } from '../models/libraryAPI'; const schemaLocation = z.object({ location: z.string().refine(data => validateLocation(data), { message: errorMsg.invalidLocation }) }); type ILocationType = z.infer; export interface DlgChangeLocationProps { initial: string; onChangeLocation: (newLocation: string) => void; } function DlgChangeLocation() { const { initial, onChangeLocation } = useDialogsStore(state => state.props as DlgChangeLocationProps); const { user } = useAuthSuspense(); const { handleSubmit, control, formState: { errors, isValid, isDirty } } = useForm({ resolver: zodResolver(schemaLocation), defaultValues: { location: initial }, mode: 'onChange' }); function onSubmit(data: ILocationType) { onChangeLocation(data.location); } return ( void handleSubmit(onSubmit)(event)} className={clsx('w-[35rem]', 'pb-3 px-6 flex gap-3 h-[9rem]')} >
( )} /> (