feat(ui): persist collapsed group state on issues page

Adds `collapsedGroups` to the view state (persisted in localStorage),
so folding a status/priority/assignee group header is remembered across
page navigations and reloads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Forgotten
2026-02-26 12:28:59 -06:00
parent 20176d9d60
commit 25a528a636

View File

@@ -39,6 +39,7 @@ export type IssueViewState = {
sortDir: "asc" | "desc";
groupBy: "status" | "priority" | "assignee" | "none";
viewMode: "list" | "board";
collapsedGroups: string[];
};
const defaultViewState: IssueViewState = {
@@ -50,6 +51,7 @@ const defaultViewState: IssueViewState = {
sortDir: "asc",
groupBy: "status",
viewMode: "list",
collapsedGroups: [],
};
const quickFilterPresets = [
@@ -497,7 +499,17 @@ export function IssuesList({
/>
) : (
groupedContent.map((group) => (
<Collapsible key={group.key} defaultOpen>
<Collapsible
key={group.key}
open={!viewState.collapsedGroups.includes(group.key)}
onOpenChange={(open) => {
updateView({
collapsedGroups: open
? viewState.collapsedGroups.filter((k) => k !== group.key)
: [...viewState.collapsedGroups, group.key],
});
}}
>
{group.label && (
<div className="flex items-center py-1.5 pl-1 pr-3">
<CollapsibleTrigger className="flex items-center gap-1.5">