Files
panel/src/components/NoteForm.js
Chop d0586f2876 feat: Add NoteForm, ProjectForm, and ProjectTaskForm components
- Implemented NoteForm for adding notes to projects.
- Created ProjectForm for managing project details with contract selection.
- Developed ProjectTaskForm for adding tasks to projects, supporting both templates and custom tasks.

feat: Add ProjectTasksSection component

- Introduced ProjectTasksSection to display and manage tasks for a specific project.
- Includes functionality for adding, updating, and deleting tasks.

feat: Create TaskTemplateForm for managing task templates

- Added TaskTemplateForm for creating new task templates with required wait days.

feat: Implement UI components

- Created reusable UI components: Badge, Button, Card, Input, Loading, Navigation.
- Enhanced user experience with consistent styling and functionality.

feat: Set up database and queries

- Initialized SQLite database with tables for contracts, projects, tasks, project tasks, and notes.
- Implemented queries for managing contracts, projects, tasks, and notes.

chore: Add error handling and loading states

- Improved error handling in forms and data fetching.
- Added loading states for better user feedback during data operations.
2025-06-02 22:07:05 +02:00

47 lines
1018 B
JavaScript

"use client";
import React, { useState } from "react";
export default function NoteForm({ projectId }) {
const [note, setNote] = useState("");
const [status, setStatus] = useState(null);
async function handleSubmit(e) {
e.preventDefault();
const res = await fetch("/api/notes", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ project_id: projectId, note }),
});
if (res.ok) {
setNote("");
setStatus("Note added");
window.location.reload();
} else {
setStatus("Failed to save note");
}
}
return (
<form onSubmit={handleSubmit} className="space-y-2 mb-4">
<textarea
value={note}
onChange={(e) => setNote(e.target.value)}
placeholder="Add a new note..."
className="border p-2 w-full"
rows={3}
required
/>
<button
type="submit"
className="bg-blue-600 text-white px-4 py-2 rounded"
>
Add Note
</button>
{status && <p className="text-sm text-gray-600">{status}</p>}
</form>
);
}