Skip to content

feat(site): the full product list of a theme has its own page, expired products last - #1534

Merged
rubenvdlinde merged 1 commit into
developmentfrom
feat/theme-products-route
Oct 12, 2026
Merged

rubenvdlinde merged 1 commit into
developmentfrom
feat/theme-products-route

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

What a resident sees now

  • "Bekijk alle parkeervergunningen" on a theme page opens its own page: /mijn/thema/{slug}/producten.
  • That page lists every product of the theme, expired ones last. It leaves the tasks and actions out.
  • "Terug naar Parkeren" goes back to the theme page.
  • A resident without products reads the same empty text as on the theme page.
  • The address can be shared and reloaded. Until now the full list was a toggle that a reload closed.

Change: life-domain-theme-pages, task T05b (REQ-LDT-004, scenario "An expired permit"). Board: ThemaOverzicht.

How

  • src/shared/portalNav.js: themeProductsRoute(), isThemeProductsRoute(), and navEntryForRoute() resolves the deeper route to the theme's entry. A theme the server did not announce resolves to nothing.
  • AccountArea.vue hands a page the route on screen (currentRoute), only to a page that declares the prop.
  • ThemePage.vue reads the route. The toggle and its "Minder tonen" string are gone; "Terug naar {thema}" is new, in Dutch and English.

For the reviewer

  • The link is a button in link style that asks the shell to navigate, the same as "Bekijk alle taken" on this page. The board draws a link.
  • On the full list the menu does not mark the theme as the current item. The menu compares the route exactly, as it does for a record page.

Tests

tests/life-domain-themes.spec.mjs, 13 pass. Four are new: the route and its resolution, three products plus the link on the theme page, the full list with the expired permit last, and the empty list.

Checks, by exit code

Check Exit
npm run lint, stylelint, format 0 each
npm run check:specs, check:l10n-js, check:reuse 0 each
Hydra gates, scoped to the diff 1: gate 102 only, two dashboard list titles from #1512. Inherited from development; #1532 fixes it.

No PHP changed, so check:strict was not run. No production build was run locally.

Still open on the change

  • T08: dossiq tags its permit collection and actions with the theme. That is a dossiq change.
  • T09, live check: sign in as a resident with four permits of which one expired, open Parkeren, compare with the ThemaOverzicht board, press "Bekijk alle parkeervergunningen", see four rows with the expired one last, reload, press "Terug naar Parkeren".

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/portaliq @ 3d94899

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-specs ✅
check-manifest ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
check-reuse ✅
composer ✅ ✅ 108/108
npm ✅ ✅ 984/984
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ✅ 3809/3809 · 1 skipped
Newman ✅ 1/1
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-12 16:50 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit cc5bf4a into development Oct 12, 2026
44 of 46 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant