From 288aebcd699bc0dde35c7849c76febcadd3f14ad Mon Sep 17 00:00:00 2001 From: "bert.hausmans" Date: Sat, 9 May 2026 01:53:02 +0200 Subject: [PATCH] =?UTF-8?q?feat(timetable):=20interactive=20components=20?= =?UTF-8?q?=E2=80=94=20Popover,=20AddPerformanceDialog,=20StageEditor,=20L?= =?UTF-8?q?ineupMatrix,=20Wachtrij=20+=20WachtrijCard=20(Session=204=20ste?= =?UTF-8?q?p=2010)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PerformancePopover.vue — teleported floating panel; closes on Esc; shows status chip, advancing %, computed Buma/VAT/total cost; deal-summary + delete + open-detail buttons. Position math (340px wide, 12px margin, flip side if no room) ports prototype's pickPos verbatim. - AddPerformanceDialog.vue — Vuetify VDialog + raw ref form pattern (matches CreateShiftDialog and the rest of the codebase). Uses createPerformancePayloadSchema for client-side validation; falls back to surface-level errors map per field. - StageEditor.vue — single-stage CRUD modal with name + capacity + 10-swatch palette picker. Window.confirm cascade-park warning on delete. - LineupMatrix.vue — stages × sub-events checkbox matrix; only dirty stages fire replaceStageDays (atomic per stage). - Wachtrij.vue — sidebar with search + 9 toggleable status chips with counts; reads/writes useTimetableStore.statusFilter and searchQuery. - WachtrijCard.vue — initials avatar + status dot + dot label + cancelled strike-through. role=button, tabindex=0. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../timetable/AddPerformanceDialog.vue | 195 ++++++++++++++ .../src/components/timetable/LineupMatrix.vue | 218 ++++++++++++++++ .../timetable/PerformancePopover.vue | 238 ++++++++++++++++++ .../src/components/timetable/StageEditor.vue | 215 ++++++++++++++++ .../app/src/components/timetable/Wachtrij.vue | 215 ++++++++++++++++ .../src/components/timetable/WachtrijCard.vue | 143 +++++++++++ 6 files changed, 1224 insertions(+) create mode 100644 apps/app/src/components/timetable/AddPerformanceDialog.vue create mode 100644 apps/app/src/components/timetable/LineupMatrix.vue create mode 100644 apps/app/src/components/timetable/PerformancePopover.vue create mode 100644 apps/app/src/components/timetable/StageEditor.vue create mode 100644 apps/app/src/components/timetable/Wachtrij.vue create mode 100644 apps/app/src/components/timetable/WachtrijCard.vue diff --git a/apps/app/src/components/timetable/AddPerformanceDialog.vue b/apps/app/src/components/timetable/AddPerformanceDialog.vue new file mode 100644 index 00000000..1e36aea6 --- /dev/null +++ b/apps/app/src/components/timetable/AddPerformanceDialog.vue @@ -0,0 +1,195 @@ + + + diff --git a/apps/app/src/components/timetable/LineupMatrix.vue b/apps/app/src/components/timetable/LineupMatrix.vue new file mode 100644 index 00000000..54ab4024 --- /dev/null +++ b/apps/app/src/components/timetable/LineupMatrix.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/apps/app/src/components/timetable/PerformancePopover.vue b/apps/app/src/components/timetable/PerformancePopover.vue new file mode 100644 index 00000000..a1ed687e --- /dev/null +++ b/apps/app/src/components/timetable/PerformancePopover.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/apps/app/src/components/timetable/StageEditor.vue b/apps/app/src/components/timetable/StageEditor.vue new file mode 100644 index 00000000..fd84e2ae --- /dev/null +++ b/apps/app/src/components/timetable/StageEditor.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/apps/app/src/components/timetable/Wachtrij.vue b/apps/app/src/components/timetable/Wachtrij.vue new file mode 100644 index 00000000..7c3f00a3 --- /dev/null +++ b/apps/app/src/components/timetable/Wachtrij.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/apps/app/src/components/timetable/WachtrijCard.vue b/apps/app/src/components/timetable/WachtrijCard.vue new file mode 100644 index 00000000..ee773e98 --- /dev/null +++ b/apps/app/src/components/timetable/WachtrijCard.vue @@ -0,0 +1,143 @@ + + + + +