feat(heute): ToDos mitten am Tag hinzufügen
Nach dem Lock-in konnte man ToDos nur bearbeiten/abhaken, aber keine neuen anlegen. Neuer Endpoint dayEntry.addTodo hängt ein einzelnes ToDo an den heutigen Tageseintrag an (erlaubt solange der Eintrag vom heutigen Berlin-Tag ist, auch nach der Reflexion). Inline-Feld „Neues ToDo hinzufügen" in der EinstempeltView; aktualisiert Heute + Dashboard-Sichten. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
bcae44eeb3
commit
68480c1eb1
3 files changed
+85
No files matched your search
@@ -273,6 +273,42 @@ function TodoRow({
|
||||
);
|
||||
}
|
||||
|
||||
function AddTodoInline() {
|
||||
const utils = trpc.useUtils();
|
||||
const [title, setTitle] = useState('');
|
||||
const add = trpc.dayEntry.addTodo.useMutation({
|
||||
onSuccess: async () => {
|
||||
setTitle('');
|
||||
await utils.dayEntry.today.invalidate();
|
||||
await utils.dayEntry.todayTeam.invalidate();
|
||||
await utils.dashboard.overview.invalidate();
|
||||
},
|
||||
});
|
||||
return (
|
||||
<form
|
||||
className="mt-3 flex items-center gap-2"
|
||||
onSubmit={(e) => {
|
||||
e.preventDefault();
|
||||
const v = title.trim();
|
||||
if (!v) return;
|
||||
add.mutate({ title: v });
|
||||
}}
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
value={title}
|
||||
onChange={(e) => setTitle(e.target.value)}
|
||||
placeholder="Neues ToDo hinzufügen …"
|
||||
maxLength={200}
|
||||
className="flex-1 rounded-[var(--radius-md)] border border-[var(--color-border)] bg-white px-3 py-2 text-sm focus:border-[var(--color-ink)] focus:outline-none"
|
||||
/>
|
||||
<Button type="submit" size="sm" variant="secondary" disabled={!title.trim() || add.isPending}>
|
||||
<Plus size={14} /> Hinzufügen
|
||||
</Button>
|
||||
</form>
|
||||
);
|
||||
}
|
||||
|
||||
function EinstempeltView({
|
||||
todos,
|
||||
entry,
|
||||
@@ -322,6 +358,7 @@ function EinstempeltView({
|
||||
<TodoRow key={t.id} todo={t} allTodos={todos} />
|
||||
))}
|
||||
</ul>
|
||||
<AddTodoInline />
|
||||
</Card.Body>
|
||||
<Card.Footer className="flex justify-end">
|
||||
<Button onClick={() => (location.href = '/reflexion')}>{ctaLabel}</Button>
|
||||
|
||||
Reference in new issue
Block a user