-
projectCollapsed.toggle(group.projectKey)}
+ className="hover:bg-surface-raised/40 sticky top-0 z-10 flex w-full cursor-pointer items-center gap-1 px-2 py-1.5 text-[11px] font-semibold transition-colors"
style={{ backgroundColor: 'var(--color-surface-sidebar)' }}
>
+ {isGroupCollapsed ? (
+
+ ) : (
+
+ )}
-
+
{group.projectLabel}
-
- {group.tasks.map((task) => {
- const showTeamHeader = task.teamName !== lastTeam;
- lastTeam = task.teamName;
- return (
-
- {showTeamHeader && (
-
- Team: {task.teamDisplayName}
-
- )}
-
taskLocalState.togglePin(task.teamName, task.id)}
- onToggleArchive={() => taskLocalState.toggleArchive(task.teamName, task.id)}
- onRename={() => setRenamingTaskKey(`${task.teamName}:${task.id}`)}
- onDelete={() => handleDeleteTask(task.teamName, task.id)}
- >
-
+ {group.tasks.length}
+
+
+ {!isGroupCollapsed &&
+ group.tasks.map((task) => {
+ const showTeamHeader = task.teamName !== lastTeam;
+ lastTeam = task.teamName;
+ return (
+
+ {showTeamHeader && (
+
+ Team: {task.teamDisplayName}
+
+ )}
+
- taskLocalState.getRenamedSubject(t.teamName, t.id)
+ isPinned={taskLocalState.isPinned(task.teamName, task.id)}
+ isArchived={taskLocalState.isArchived(task.teamName, task.id)}
+ onTogglePin={() => taskLocalState.togglePin(task.teamName, task.id)}
+ onToggleArchive={() =>
+ taskLocalState.toggleArchive(task.teamName, task.id)
}
- />
-
-
- );
- })}
+ onRename={() => setRenamingTaskKey(`${task.teamName}:${task.id}`)}
+ onDelete={() => handleDeleteTask(task.teamName, task.id)}
+ >
+
+ taskLocalState.getRenamedSubject(t.teamName, t.id)
+ }
+ />
+
+
+ );
+ })}
);
})}
@@ -524,50 +660,64 @@ export const GlobalTaskList = ({
{groupingMode === 'time' &&
categories.map((category) => {
const tasks = grouped[category];
+ const isGroupCollapsed = timeCollapsed.isCollapsed(category);
let lastTeam: string | null = null;
return (
-
timeCollapsed.toggle(category)}
+ className="hover:bg-surface-raised/40 sticky top-0 z-10 flex w-full cursor-pointer items-center gap-1 px-2 py-1.5 text-[11px] font-semibold text-text-secondary transition-colors"
style={{ backgroundColor: 'var(--color-surface-sidebar)' }}
>
- {dateCategoryLabels[category] ?? category}
-
+ {isGroupCollapsed ? (
+
+ ) : (
+
+ )}
+
{dateCategoryLabels[category] ?? category}
+
+ {tasks.length}
+
+
- {tasks.map((task) => {
- const showTeamHeader = task.teamName !== lastTeam;
- lastTeam = task.teamName;
+ {!isGroupCollapsed &&
+ tasks.map((task) => {
+ const showTeamHeader = task.teamName !== lastTeam;
+ lastTeam = task.teamName;
- return (
-
- {showTeamHeader && (
-
- Team: {task.teamDisplayName}
-
- )}
-
taskLocalState.togglePin(task.teamName, task.id)}
- onToggleArchive={() => taskLocalState.toggleArchive(task.teamName, task.id)}
- onRename={() => setRenamingTaskKey(`${task.teamName}:${task.id}`)}
- onDelete={() => handleDeleteTask(task.teamName, task.id)}
- >
-
+ {showTeamHeader && (
+
+ Team: {task.teamDisplayName}
+
+ )}
+
- taskLocalState.getRenamedSubject(t.teamName, t.id)
+ isPinned={taskLocalState.isPinned(task.teamName, task.id)}
+ isArchived={taskLocalState.isArchived(task.teamName, task.id)}
+ onTogglePin={() => taskLocalState.togglePin(task.teamName, task.id)}
+ onToggleArchive={() =>
+ taskLocalState.toggleArchive(task.teamName, task.id)
}
- />
-
-
- );
- })}
+ onRename={() => setRenamingTaskKey(`${task.teamName}:${task.id}`)}
+ onDelete={() => handleDeleteTask(task.teamName, task.id)}
+ >
+
+ taskLocalState.getRenamedSubject(t.teamName, t.id)
+ }
+ />
+
+
+ );
+ })}
);
})}
diff --git a/src/renderer/components/sidebar/TaskFiltersPopover.tsx b/src/renderer/components/sidebar/TaskFiltersPopover.tsx
index 5fe94de2..f0f48152 100644
--- a/src/renderer/components/sidebar/TaskFiltersPopover.tsx
+++ b/src/renderer/components/sidebar/TaskFiltersPopover.tsx
@@ -81,6 +81,11 @@ export const TaskFiltersPopover = ({