'use client'; import React from 'react'; import { useState, useEffect } from 'react'; import { Button, Input, Textarea, Modal, ModalContent, ModalHeader, ModalBody, ModalFooter } from '@heroui/react'; import { RunType, RunsMessages } from '@/types/run'; type Props = { isOpen: boolean; editingRun: RunType | null; onCancel: () => void; onSubmit: (name: string, description: string) => void; messages: RunsMessages; }; export default function RunDialog({ isOpen, editingRun, onCancel, onSubmit, messages }: Props) { const [runName, setRunName] = useState({ text: editingRun ? editingRun.name : '', isInvalid: false, errorMessage: '', }); const [runDescription, setRunDescription] = useState({ text: editingRun ? editingRun.description : '', isInvalid: false, errorMessage: '', }); useEffect(() => { if (editingRun) { setRunName({ ...runName, text: editingRun.name, }); setRunDescription({ ...runDescription, text: editingRun.description ? editingRun.description : '', }); } else { setRunName({ ...runName, text: '', }); setRunDescription({ ...runDescription, text: '', }); } }, [editingRun]); const clear = () => { setRunName({ isInvalid: false, text: '', errorMessage: '', }); setRunDescription({ isInvalid: false, text: '', errorMessage: '', }); }; const validate = () => { if (!runName.text) { setRunName({ text: '', isInvalid: true, errorMessage: messages.pleaseEnter, }); return; } onSubmit(runName.text, runDescription.text); clear(); }; return ( { onCancel(); }} > {messages.run} { setRunName({ ...runName, text: e.target.value, }); }} />