'use client'; // File: components/review-task/CompleteReviewForm.tsx // Form สำหรับบันทึกผล Review Task (FR-009) — Response Code + Comments import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form'; import { Textarea } from '@/components/ui/textarea'; import { Button } from '@/components/ui/button'; import { ResponseCodeSelector } from '@/components/response-code/ResponseCodeSelector'; import { CodeImplications } from '@/components/response-code/CodeImplications'; import { useResponseCodes } from '@/hooks/use-response-codes'; import { ResponseCode } from '@/types/review-team'; import { useState } from 'react'; const completeReviewSchema = z.object({ responseCodePublicId: z.string().uuid('Response Code is required'), comments: z.string().optional(), }); type CompleteReviewFormValues = z.infer; interface CompleteReviewFormProps { taskPublicId: string; documentTypeId: number; projectId?: number; onSubmit: (values: CompleteReviewFormValues) => void; isLoading?: boolean; } export function CompleteReviewForm({ taskPublicId: _taskPublicId, documentTypeId, projectId, onSubmit, isLoading, }: CompleteReviewFormProps) { const [selectedCode, setSelectedCode] = useState(null); const { data: allCodes = [] } = useResponseCodes(); const form = useForm({ resolver: zodResolver(completeReviewSchema), }); const handleCodeChange = (publicId: string) => { form.setValue('responseCodePublicId', publicId); const found = (allCodes as ResponseCode[]).find((c) => c.publicId === publicId) ?? null; setSelectedCode(found); }; return (
( Response Code )} /> {selectedCode && } ( Comments {selectedCode?.code === '2' || selectedCode?.code === '3' ? ( * ) : null}