feat(NotesPage, MarkdownEditor): enhance note creation and editing experience

- Added state management for new notes in NotesPageClient to track if a note is newly created.
- Updated MarkdownEditor to support initial editing state and handle editing changes, improving user interaction during note creation and editing.
This commit is contained in:
Julien Froidefond
2025-11-17 08:27:34 +01:00
parent f0b9f75817
commit 6cad6a333d
2 changed files with 35 additions and 3 deletions

View File

@@ -20,6 +20,7 @@ interface NotesPageClientProps {
function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) {
const [notes, setNotes] = useState<Note[]>(initialNotes);
const [selectedNote, setSelectedNote] = useState<Note | null>(null);
const [isNewNote, setIsNewNote] = useState(false);
const { tags: availableTags } = useTasksContext();
const [error, setError] = useState<string | null>(null);
const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
@@ -46,6 +47,7 @@ function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) {
}
setSelectedNote(note);
setIsNewNote(false);
setHasUnsavedChanges(false);
},
[hasUnsavedChanges, selectedNote]
@@ -60,6 +62,7 @@ function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) {
setNotes((prev) => [newNote, ...prev]);
setSelectedNote(newNote);
setIsNewNote(true);
setHasUnsavedChanges(false);
} catch (err) {
setError('Erreur lors de la création de la note');
@@ -128,6 +131,7 @@ function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) {
);
setHasUnsavedChanges(false);
setIsNewNote(false);
} catch (err) {
setError('Erreur lors de la sauvegarde');
console.error('Error saving note:', err);
@@ -279,6 +283,12 @@ function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) {
onToggleSidebar={() =>
setSidebarCollapsed(!sidebarCollapsed)
}
initialIsEditing={isNewNote}
onEditingChange={(isEditing) => {
if (!isEditing) {
setIsNewNote(false);
}
}}
className="h-full"
/>
</div>