@@ -268,18 +298,19 @@ function ExpandedPanel({
Loading…
) : (
- {board.overdue.length > 0 && (
+ {visibleOverdue.length > 0 && (
- Overdue ({board.overdue.length})
+ Overdue ({visibleOverdue.length})
- {board.overdue.map((o) => (
+ {visibleOverdue.map((o) => (
onToggleOccurrence(o, completed)}
onEdit={() => onEditOccurrence(o.scheduledTodoId)}
/>
diff --git a/components/scheduled/scheduled-todo-item.tsx b/components/scheduled/scheduled-todo-item.tsx
index ed098e9..8a2f13a 100644
--- a/components/scheduled/scheduled-todo-item.tsx
+++ b/components/scheduled/scheduled-todo-item.tsx
@@ -5,6 +5,7 @@ import { StickyNote } from "lucide-react";
import { cn } from "@/lib/utils";
import { Checkbox } from "@/components/ui/checkbox";
import { MouseFollowTooltip } from "@/components/board/mouse-follow-tooltip";
+import type { HoldPhase } from "@/components/hold-on-complete";
import type { ScheduledOccurrenceDTO } from "@/types/scheduled-todo";
/** One occurrence row -- "emphasis" is how loud this date's section reads
@@ -13,11 +14,16 @@ import type { ScheduledOccurrenceDTO } from "@/types/scheduled-todo";
export function ScheduledTodoItem({
occurrence,
emphasis = "normal",
+ holdPhase,
onToggle,
onEdit,
}: {
occurrence: ScheduledOccurrenceDTO;
emphasis?: "overdue" | "today" | "normal";
+ // Only ever set for Overdue rows -- see ExpandedPanel/useHoldOnComplete.
+ // A freshly-checked-off one rides this through "visible" -> "fading" ->
+ // "collapsing" before ExpandedPanel actually drops it from the list.
+ holdPhase?: HoldPhase;
onToggle: (completed: boolean) => void;
onEdit: () => void;
}) {
@@ -41,21 +47,31 @@ export function ScheduledTodoItem({
);
return (
- -
- onToggle(!!checked)}
- className="mt-0.5"
- aria-label={`Mark "${occurrence.title}" ${occurrence.completed ? "incomplete" : "complete"}`}
- />
- {occurrence.details ? (
- {titleButton}
- ) : (
- titleButton
- )}
- {occurrence.details && (
-
- )}
+
-
+
+
+ onToggle(!!checked)}
+ className="mt-0.5"
+ aria-label={`Mark "${occurrence.title}" ${occurrence.completed ? "incomplete" : "complete"}`}
+ />
+ {occurrence.details ? (
+ {titleButton}
+ ) : (
+ titleButton
+ )}
+ {occurrence.details && (
+
+ )}
+
+
);
}