From eab2f698d6b222ef48873426a5a311edfdec4bd7 Mon Sep 17 00:00:00 2001 From: janpeter visser Date: Mon, 27 Apr 2026 20:12:47 +0200 Subject: [PATCH] fix(sprint-backlog): prevent text selection on PBI collapse button --- components/sprint/sprint-backlog.tsx | 62 +++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/components/sprint/sprint-backlog.tsx b/components/sprint/sprint-backlog.tsx index a94476e..5d4ceb7 100644 --- a/components/sprint/sprint-backlog.tsx +++ b/components/sprint/sprint-backlog.tsx @@ -1,7 +1,7 @@ 'use client' import { useState, useTransition } from 'react' -import { Trash2, MoreHorizontal } from 'lucide-react' +import { Trash2, MoreHorizontal, ChevronsUp, ChevronsDown, ListFilter } from 'lucide-react' import { useDroppable, useDraggable } from '@dnd-kit/core' import { SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable' import { CSS } from '@dnd-kit/utilities' @@ -15,6 +15,7 @@ import { import { PanelNavBar } from '@/components/shared/panel-nav-bar' import { UserAvatar } from '@/components/shared/user-avatar' import { DemoTooltip } from '@/components/shared/demo-tooltip' +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip' import { PRIORITY_BORDER } from '@/components/backlog/backlog-card' import { useSprintStore } from '@/stores/sprint-store' import { claimStoryAction, unclaimStoryAction, reassignStoryAction, claimAllUnassignedInActiveSprintAction } from '@/actions/stories' @@ -372,7 +373,15 @@ interface SprintBacklogRightProps { } export function SprintBacklogRight({ pbisWithStories, sprintStoryIds, isDemo, onAdd }: SprintBacklogRightProps) { - const [collapsed, setCollapsed] = useState>(new Set()) + const [collapsed, setCollapsed] = useState>(() => { + const auto = new Set() + for (const pbi of pbisWithStories) { + if (pbi.stories.length > 0 && pbi.stories.every(s => s.status === 'DONE')) { + auto.add(pbi.id) + } + } + return auto + }) const { setNodeRef, isOver } = useDroppable({ id: 'backlog-zone' }) function toggle(pbiId: string) { @@ -383,9 +392,50 @@ export function SprintBacklogRight({ pbisWithStories, sprintStoryIds, isDemo, on }) } + function collapseAll() { + setCollapsed(new Set(pbisWithStories.map(p => p.id))) + } + + function expandAll() { + setCollapsed(new Set()) + } + + function onlyNotDone() { + const auto = new Set() + for (const pbi of pbisWithStories) { + if (pbi.stories.length > 0 && pbi.stories.every(s => s.status === 'DONE')) { + auto.add(pbi.id) + } + } + setCollapsed(auto) + } + + const collapseActions = ( + + + + + + Alles inklappen + + + + + + Alles uitklappen + + + + + + Alleen niet klaar + + + ) + return (
- +
{!collapsed.has(pbi.id) && pbi.stories.map(story => {