diff --git a/src/app/notes/NotesPageClient.tsx b/src/app/notes/NotesPageClient.tsx index e719161..23ecbcd 100644 --- a/src/app/notes/NotesPageClient.tsx +++ b/src/app/notes/NotesPageClient.tsx @@ -20,6 +20,7 @@ interface NotesPageClientProps { function NotesPageContent({ initialNotes }: { initialNotes: Note[] }) { const [notes, setNotes] = useState(initialNotes); const [selectedNote, setSelectedNote] = useState(null); + const [isNewNote, setIsNewNote] = useState(false); const { tags: availableTags } = useTasksContext(); const [error, setError] = useState(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" /> diff --git a/src/components/notes/MarkdownEditor.tsx b/src/components/notes/MarkdownEditor.tsx index 9c51d67..86b5f23 100644 --- a/src/components/notes/MarkdownEditor.tsx +++ b/src/components/notes/MarkdownEditor.tsx @@ -288,6 +288,8 @@ interface MarkdownEditorProps { onTaskChange?: (task: Task | null) => void; onCreateNote?: () => void; onToggleSidebar?: () => void; + initialIsEditing?: boolean; + onEditingChange?: (isEditing: boolean) => void; } export function MarkdownEditor({ @@ -305,9 +307,11 @@ export function MarkdownEditor({ onTaskChange, onCreateNote, onToggleSidebar, + initialIsEditing = false, + onEditingChange, }: MarkdownEditorProps) { const [showPreview, setShowPreview] = useState(true); // Aperçu par défaut - const [isEditing, setIsEditing] = useState(false); // Mode édition + const [isEditing, setIsEditing] = useState(initialIsEditing); // Mode édition const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false); const autoSaveTimeoutRef = useRef(null); const lastSavedValueRef = useRef(value); @@ -454,6 +458,7 @@ export function MarkdownEditor({ case 'e': event.preventDefault(); setIsEditing(!isEditing); + onEditingChange?.(!isEditing); break; case 'b': event.preventDefault(); @@ -598,6 +603,17 @@ export function MarkdownEditor({ } }, [value, history, historyIndex, addToHistory]); + // Réinitialiser le mode édition quand initialIsEditing devient true (nouvelle note) + useEffect(() => { + if (initialIsEditing) { + setIsEditing(true); + // Focus sur le textarea après un court délai pour s'assurer qu'il est monté + setTimeout(() => { + textareaRef.current?.focus(); + }, 100); + } + }, [initialIsEditing]); + return (