From 41b4017bd1280faff2cb853d8060714dbe2595a1 Mon Sep 17 00:00:00 2001 From: "bert.hausmans" Date: Sun, 17 May 2026 02:04:07 +0200 Subject: [PATCH] feat(gui-v2): wire OrganizerLayoutV2 to compose the real shell components Replaces the Plan-1 skeleton stubs: OrganizerLayoutV2 now fills AppShellV2's #sidebar/#topbar/#drawer slots with the ported AppSidebar / AppTopbar / RightDrawer and sources orgNavItems via useV2Nav() (legal now that OrganizerLayoutV2.vue is the layouts-v2 zone). AppShellV2 is unchanged; its contract test stays green. New component test locks the composition (right component per slot, :groups forwarded, no skeleton). Co-Authored-By: Claude Opus 4.7 --- apps/app/src/layouts/OrganizerLayoutV2.vue | 41 +++++++--- .../layouts/OrganizerLayoutV2.spec.ts | 77 +++++++++++++++++++ 2 files changed, 107 insertions(+), 11 deletions(-) create mode 100644 apps/app/tests/component/layouts/OrganizerLayoutV2.spec.ts diff --git a/apps/app/src/layouts/OrganizerLayoutV2.vue b/apps/app/src/layouts/OrganizerLayoutV2.vue index 9f9970d3..b00561d1 100644 --- a/apps/app/src/layouts/OrganizerLayoutV2.vue +++ b/apps/app/src/layouts/OrganizerLayoutV2.vue @@ -1,26 +1,45 @@ diff --git a/apps/app/tests/component/layouts/OrganizerLayoutV2.spec.ts b/apps/app/tests/component/layouts/OrganizerLayoutV2.spec.ts new file mode 100644 index 00000000..7100b7a8 --- /dev/null +++ b/apps/app/tests/component/layouts/OrganizerLayoutV2.spec.ts @@ -0,0 +1,77 @@ +import { describe, expect, it } from 'vitest' +import { mount } from '@vue/test-utils' +import { createPinia } from 'pinia' +import { createMemoryHistory, createRouter } from 'vue-router' +import { defineComponent } from 'vue' +import OrganizerLayoutV2 from '@/layouts/OrganizerLayoutV2.vue' +import AppShellV2 from '@/layouts/components/AppShellV2.vue' + +// Stub the 3 leaf shell components: this test verifies COMPOSITION +// (right component in right slot + nav data forwarded), not their +// internals (those have their own unit tests). Stubs keep jsdom free +// of PrimeVue teleport/overlay/breakpoint machinery. +const AppSidebarStub = defineComponent({ + name: 'AppSidebarStub', + props: { groups: { type: Array, default: () => [] } }, + template: '