'use client'; import React from 'react'; import { useState, useEffect } from 'react'; import { Button, Input, Textarea, Checkbox, Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, } from '@nextui-org/react'; import { ProjectType, ProjectsMessages } from '@/types/project'; type Props = { isOpen: boolean; editingProject: ProjectType | null; onCancel: () => void; onSubmit: (name: string, detail: string, isPublic: boolean) => void; messages: ProjectsMessages; }; export default function ProjectDialog({ isOpen, editingProject, onCancel, onSubmit, messages }: Props) { const [projectName, setProjectName] = useState({ text: editingProject ? editingProject.name : '', isValid: false, errorMessage: '', }); const [projectDetail, setProjectDetail] = useState({ text: editingProject ? editingProject.detail : '', isValid: false, errorMessage: '', }); const [isProjectPublic, setIsProjectPublic] = useState(editingProject ? editingProject.isPublic : true); useEffect(() => { if (editingProject) { setProjectName({ ...projectName, text: editingProject.name, }); setProjectDetail({ ...projectDetail, text: editingProject.detail ? editingProject.detail : '', }); setIsProjectPublic(editingProject.isPublic); } else { setProjectName({ ...projectName, text: '', }); setProjectDetail({ ...projectDetail, text: '', }); setIsProjectPublic(true); } }, [editingProject]); const clear = () => { setProjectName({ isValid: false, text: '', errorMessage: '', }); setProjectDetail({ isValid: false, text: '', errorMessage: '', }); }; const validate = () => { if (!projectName.text) { setProjectName({ text: '', isValid: false, errorMessage: messages.pleaseEnter, }); return; } onSubmit(projectName.text, projectDetail.text, isProjectPublic); clear(); }; return ( { onCancel(); }} > {messages.project} { setProjectName({ ...projectName, text: e.target.value, }); }} />