From db4c9b8bf3ed93c6bf6c1451803b269528d0b886 Mon Sep 17 00:00:00 2001 From: Padreug Date: Wed, 17 Jun 2026 19:06:52 +0200 Subject: [PATCH 1/2] feat(events): calendar popup respects the selected category filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The date-picker popup showed dots for all events regardless of the active category filter. Feed it a category-filtered set so its per-day dots reflect what the user is browsing (temporal/day filters still don't apply — the calendar is for picking any date). No categories selected behaves as before (all events). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/modules/events/views/EventsPage.vue | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/modules/events/views/EventsPage.vue b/src/modules/events/views/EventsPage.vue index 121941e..7ffc44d 100644 --- a/src/modules/events/views/EventsPage.vue +++ b/src/modules/events/views/EventsPage.vue @@ -61,6 +61,18 @@ const { const filtersOpen = ref(false) const calendarOpen = ref(false) +// Events feeding the calendar popup's per-day dots. Respects the active +// category filter (so the calendar reflects what the user is browsing), +// but not the temporal/day filters — the calendar is for picking any +// date. No categories selected ⇒ all events. +const calendarEvents = computed(() => + selectedCategories.value.length + ? allEvents.value.filter( + (e) => e.category && selectedCategories.value.includes(e.category), + ) + : allEvents.value, +) + // Human label for the active day filter, shown as a removable chip. const selectedDateLabel = computed(() => selectedDate.value @@ -255,7 +267,7 @@ onBeforeRouteLeave(() => { day filters the feed to it and closes. --> Date: Thu, 18 Jun 2026 14:31:39 +0200 Subject: [PATCH 2/2] feat(events): show selected categories as deselectable chips in calendar popup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The calendar popup already narrows its day-dots to the active category filter; surface those categories inside the popup so the user can see — and loosen — what's narrowing it without closing. Renders only the selected categories as removable chips; clicking one emits toggle-category to the parent, which reactively re-widens the dots in place. - EventCalendarPopup: optional selectedCategories prop (defaults to none for callers like My Tickets) + toggle-category emit; chip row between the header and the month grid. - EventsPage: wire selectedCategories + toggleCategory through. - i18n: events.filters.filteringBy + removeCategory (en/fr/es + schema). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/i18n/locales/en.ts | 2 + src/i18n/locales/es.ts | 2 + src/i18n/locales/fr.ts | 2 + src/i18n/types.ts | 2 + .../events/components/EventCalendarPopup.vue | 55 +++++++++++++++++-- src/modules/events/views/EventsPage.vue | 2 + 6 files changed, 59 insertions(+), 6 deletions(-) diff --git a/src/i18n/locales/en.ts b/src/i18n/locales/en.ts index 34f4bc6..cacfb8c 100644 --- a/src/i18n/locales/en.ts +++ b/src/i18n/locales/en.ts @@ -71,6 +71,8 @@ const messages: LocaleMessages = { past: 'Past', filters: 'Filters', clearAll: 'Clear all', + filteringBy: 'Filtering by:', + removeCategory: 'Remove {category} filter', }, categories: { concert: 'Concert', diff --git a/src/i18n/locales/es.ts b/src/i18n/locales/es.ts index 048c71a..898352b 100644 --- a/src/i18n/locales/es.ts +++ b/src/i18n/locales/es.ts @@ -71,6 +71,8 @@ const messages: LocaleMessages = { past: 'Pasado', filters: 'Filtros', clearAll: 'Limpiar todo', + filteringBy: 'Filtrando por:', + removeCategory: 'Quitar el filtro {category}', }, categories: { concert: 'Concierto', diff --git a/src/i18n/locales/fr.ts b/src/i18n/locales/fr.ts index 57b3797..9638e69 100644 --- a/src/i18n/locales/fr.ts +++ b/src/i18n/locales/fr.ts @@ -71,6 +71,8 @@ const messages: LocaleMessages = { past: 'Passé', filters: 'Filtres', clearAll: 'Tout effacer', + filteringBy: 'Filtré par :', + removeCategory: 'Retirer le filtre {category}', }, categories: { concert: 'Concert', diff --git a/src/i18n/types.ts b/src/i18n/types.ts index f4177ba..ecdf42f 100644 --- a/src/i18n/types.ts +++ b/src/i18n/types.ts @@ -72,6 +72,8 @@ export interface LocaleMessages { past: string filters: string clearAll: string + filteringBy: string + removeCategory: string } categories: Record detail: { diff --git a/src/modules/events/components/EventCalendarPopup.vue b/src/modules/events/components/EventCalendarPopup.vue index 955d805..546c16f 100644 --- a/src/modules/events/components/EventCalendarPopup.vue +++ b/src/modules/events/components/EventCalendarPopup.vue @@ -1,5 +1,6 @@