From 0836c5db7ddbfb8db8ecd690acd9a9e9089574ca Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 11 Oct 2025 21:38:02 +0100 Subject: [PATCH] editmodal --- frontend/src/components/EditProjectModal.jsx | 86 ++++++++++++++++++++ frontend/src/pages/ProjectPage.jsx | 67 +++++++++------ frontend/src/services/projectService.js | 5 ++ 3 files changed, 135 insertions(+), 23 deletions(-) create mode 100644 frontend/src/components/EditProjectModal.jsx diff --git a/frontend/src/components/EditProjectModal.jsx b/frontend/src/components/EditProjectModal.jsx new file mode 100644 index 0000000..12e5f03 --- /dev/null +++ b/frontend/src/components/EditProjectModal.jsx @@ -0,0 +1,86 @@ +import React, { useState, useEffect } from 'react'; +import * as projectService from '../services/projectService'; + +const EditProjectModal = ({ + isOpen, + onClose, + project, + onProjectUpdated +}) => { + const [title, setTitle] = useState(''); + const [description, setDescription] = useState(''); + + // Pre-fill fields when modal opens or project changes + useEffect(() => { + if (project) { + setTitle(project.title || ''); + setDescription(project.description || ''); + } + }, [project]); + + const handleSubmit = async (e) => { + e.preventDefault(); + try { + const updatedProject = await projectService.updateProject(project._id, { + title, + description, + }); + onProjectUpdated(updatedProject); + onClose(); + } catch (error) { + console.error('Failed to update project:', error); + } + }; + + if (!isOpen) return null; + + return ( +
+
+

Edit Project

+
+
+ + setTitle(e.target.value)} + required + className="w-full px-3 py-2 mt-1 text-white bg-gray-700 border border-gray-600 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" + /> +
+ +
+ +