Scrum4Me/components/sprint/planning-right-client.tsx
janpeter visser d92e548f88 feat: ST-301-ST-312 M3 Sprint Backlog en Sprint Planning
- useSprintStore met sprintStoryOrder/taskOrder (ST-301)
- Sprint aanmaken modal met Sprint Goal validatie (ST-302)
- Sprint Backlog pagina SplitPane layout met Sprint Goal header (ST-303)
- Stories toevoegen aan Sprint via knop in rechterpaneel (ST-304)
- Sprint Backlog volgorde aanpassen via dnd-kit (ST-305)
- Story uit Sprint verwijderen met status terug naar OPEN (ST-306)
- Sprint Planning pagina SplitPane met story selectie (ST-307)
- Taken aanmaken inline in rechterpaneel (ST-308)
- Taak drag-and-drop verticaal met optimistische update (ST-309)
- Taakstatus toggle TO_DO/IN_PROGRESS/DONE met voortgangsindicator (ST-310)
- Taak inline bewerken en verwijderen (ST-311)
- Sprint afronden dialoog met per-story Done/Terug keuze (ST-312)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 11:51:27 +02:00

39 lines
1.1 KiB
TypeScript

'use client'
import { useSelectionStore } from '@/stores/selection-store'
import { TaskList } from './task-list'
import type { Task } from './task-list'
import type { SprintStory } from './sprint-backlog'
interface PlanningRightClientProps {
sprintId: string
productId: string
stories: SprintStory[]
tasksByStory: Record<string, Task[]>
isDemo: boolean
}
export function PlanningRightClient({ sprintId, productId, stories, tasksByStory, isDemo }: PlanningRightClientProps) {
const { selectedStoryId } = useSelectionStore()
const story = stories.find(s => s.id === selectedStoryId)
const tasks = selectedStoryId ? (tasksByStory[selectedStoryId] ?? []) : []
if (!selectedStoryId || !story) {
return (
<div className="flex items-center justify-center h-full">
<p className="text-sm text-muted-foreground">Selecteer een story om de taken te bekijken.</p>
</div>
)
}
return (
<TaskList
storyId={selectedStoryId}
sprintId={sprintId}
productId={productId}
tasks={tasks}
isDemo={isDemo}
/>
)
}