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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user