fix: improve kanban board filtering (#919)

- Render only the selected status column when status chips are active
- Add status color treatments and default assignee normalization
- Reuse profile avatars for Kanban card assignee tags
- Cover status filtering, default assignee labels, and avatar rendering
This commit is contained in:
Zhicheng Han
2026-05-22 02:20:45 +02:00
committed by GitHub
parent 254573400d
commit b5f0215beb
8 changed files with 298 additions and 52 deletions
@@ -0,0 +1,27 @@
export const DEFAULT_KANBAN_ASSIGNEE = 'default'
export interface KanbanAssigneeSummary {
name: string
counts?: Record<string, number> | null
}
export function assigneeTaskTotal(assignee: KanbanAssigneeSummary): number {
return Object.values(assignee.counts || {}).reduce((sum, count) => sum + count, 0)
}
export function withDefaultAssignee<T extends KanbanAssigneeSummary>(
assignees: T[],
byAssignee: Record<string, number> = {},
): KanbanAssigneeSummary[] {
const defaultCount = byAssignee[DEFAULT_KANBAN_ASSIGNEE] || 0
const hasDefault = assignees.some(assignee => assignee.name === DEFAULT_KANBAN_ASSIGNEE)
const normalized = assignees.map(assignee => {
if (assignee.name !== DEFAULT_KANBAN_ASSIGNEE || assignee.counts) return assignee
return { ...assignee, counts: { total: defaultCount } }
})
if (hasDefault) return normalized
return [
{ name: DEFAULT_KANBAN_ASSIGNEE, counts: { total: defaultCount } },
...normalized,
]
}