feat(ideas): voeg activeProductId-prop toe aan IdeaList

IdeaListProps uitgebreid met activeProductId: string | null.
Create-form initialiseert en reset naar het actieve product na aanmaken.
Tests en page.tsx bijgewerkt (page.tsx krijgt echte waarde in volgende taak).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scrum4Me Agent 2026-05-15 04:27:10 +02:00
parent 3f40bc2f0f
commit 2150038066
3 changed files with 11 additions and 9 deletions

View file

@ -111,7 +111,7 @@ beforeEach(() => {
describe('IdeaList — filterpopover', () => {
it('toont de "Filters"-knop in de toolbar (geen inline chip-rij)', () => {
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} />)
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} activeProductId={null} />)
// Filters-knop aanwezig
expect(screen.getByText('Filters')).toBeInTheDocument()
@ -122,7 +122,7 @@ describe('IdeaList — filterpopover', () => {
})
it('klik op "Filters" opent de popover en toont 11 statusopties', () => {
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} />)
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} activeProductId={null} />)
// Popover nog niet open: content niet zichtbaar
expect(screen.queryByTestId('popover-content')).not.toBeInTheDocument()
@ -145,7 +145,7 @@ describe('IdeaList — filterpopover', () => {
})
it('klik op een statuschip schrijft de status naar de store', () => {
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} />)
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} activeProductId={null} />)
fireEvent.click(screen.getByText('Filters'))
fireEvent.click(screen.getByRole('button', { name: 'Concept' }))
@ -160,7 +160,7 @@ describe('IdeaList — filterpopover', () => {
.getState()
.hydrate({ views: { ideasList: { filterStatuses: ['draft'] } } }, false)
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} />)
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} activeProductId={null} />)
// Trigger toont het actieve filteraantal
expect(screen.getByText('Filters (1)')).toBeInTheDocument()
@ -172,7 +172,7 @@ describe('IdeaList — filterpopover', () => {
})
it('"Wis filters" is disabled wanneer geen filter actief is', () => {
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} />)
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} activeProductId={null} />)
fireEvent.click(screen.getByText('Filters'))
@ -185,7 +185,7 @@ describe('IdeaList — filterpopover', () => {
.getState()
.hydrate({ views: { ideasList: { filterStatuses: ['draft'] } } }, false)
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} />)
render(<IdeaList ideas={IDEAS} products={[]} isDemo={false} activeProductId={null} />)
fireEvent.click(screen.getByText('Filters (1)'))

View file

@ -45,6 +45,7 @@ export default async function IdeasPage() {
ideas={ideas.map((i) => ideaToDto(i))}
products={products}
isDemo={session.isDemo ?? false}
activeProductId={null}
/>
</div>
)

View file

@ -65,6 +65,7 @@ interface IdeaListProps {
ideas: IdeaDto[]
products: ProductOption[]
isDemo: boolean
activeProductId: string | null
}
const STATUS_FILTERS: { value: IdeaStatusApi; label: string }[] = [
@ -119,7 +120,7 @@ function SortHeader({
)
}
export function IdeaList({ ideas, products, isDemo }: IdeaListProps) {
export function IdeaList({ ideas, products, isDemo, activeProductId }: IdeaListProps) {
const router = useRouter()
const [isPending, startTransition] = useTransition()
@ -140,7 +141,7 @@ export function IdeaList({ ideas, products, isDemo }: IdeaListProps) {
const [showCreate, setShowCreate] = useState(false)
const [newTitle, setNewTitle] = useState('')
const [newDescription, setNewDescription] = useState('')
const [newProductId, setNewProductId] = useState<string>('')
const [newProductId, setNewProductId] = useState<string>(activeProductId ?? '')
// Quick-idea form state
const [showQuick, setShowQuick] = useState(false)
@ -235,7 +236,7 @@ export function IdeaList({ ideas, products, isDemo }: IdeaListProps) {
toast.success(`Idee aangemaakt (${r.data?.code})`)
setNewTitle('')
setNewDescription('')
setNewProductId('')
setNewProductId(activeProductId ?? '')
setShowCreate(false)
router.refresh()
})