From 0bbeef5594b8a78f439edcf559f33c59a565f6fc Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev <572431+veikab@users.noreply.github.com> Date: Mon, 23 Feb 2026 15:32:52 +0700 Subject: [PATCH] fix(calendar): scope zoom selectors by layer and stretch week days to full height --- .../components/workspace/CrmWorkspaceApp.vue | 22 ++++++++++++------- .../workspace/calendar/CrmCalendarPanel.vue | 9 ++++++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/frontend/app/components/workspace/CrmWorkspaceApp.vue b/frontend/app/components/workspace/CrmWorkspaceApp.vue index 02b45c5..3db145e 100644 --- a/frontend/app/components/workspace/CrmWorkspaceApp.vue +++ b/frontend/app/components/workspace/CrmWorkspaceApp.vue @@ -2765,10 +2765,10 @@ async function zoomInCalendar(event?: Event) { const anchorDayKey = resolveWeekAnchor(wheelEvent); const rowStartKey = weekRowStartForDate(anchorDayKey); const sourceElement = - queryCalendarElement(`[data-calendar-week-start-key="${rowStartKey}"]`) ?? - queryCalendarElement(`[data-calendar-day-key="${anchorDayKey}"]`) ?? - queryCalendarElement("[data-calendar-week-start-key]") ?? - queryCalendarElement("[data-calendar-day-key]"); + queryCalendarElement(`[data-calendar-layer="month"] [data-calendar-week-start-key="${rowStartKey}"]`) ?? + queryCalendarElement(`[data-calendar-layer="month"] [data-calendar-day-key="${anchorDayKey}"]`) ?? + queryCalendarElement(`[data-calendar-layer="month"] [data-calendar-week-start-key]`) ?? + queryCalendarElement(`[data-calendar-layer="month"] [data-calendar-day-key]`); if (maybePrimeWheelZoom(wheelEvent, calendarPrimeWeekToken(rowStartKey))) return; await animateCalendarZoomIntoSource(sourceElement, () => { openWeekView(anchorDayKey); @@ -2778,7 +2778,9 @@ async function zoomInCalendar(event?: Event) { if (calendarView.value === "week") { const dayAnchor = resolveDayAnchor(wheelEvent); - const sourceElement = queryCalendarElement(`[data-calendar-day-key="${dayAnchor}"]`) ?? queryCalendarElement("[data-calendar-day-key]"); + const sourceElement = + queryCalendarElement(`[data-calendar-layer="week"] [data-calendar-day-key="${dayAnchor}"]`) ?? + queryCalendarElement(`[data-calendar-layer="week"] [data-calendar-day-key]`); if (maybePrimeWheelZoom(wheelEvent, calendarPrimeDayToken(dayAnchor))) return; await animateCalendarZoomIntoSource(sourceElement, () => { openDayView(dayAnchor); @@ -2803,7 +2805,9 @@ async function zoomOutCalendar() { () => { calendarView.value = "week"; }, - () => queryCalendarElement(`[data-calendar-day-key="${targetDayKey}"]`), + () => + queryCalendarElement(`[data-calendar-layer="week"] [data-calendar-day-key="${targetDayKey}"]`) ?? + queryCalendarElement(`[data-calendar-layer="week"] [data-calendar-day-key]`), ); return; } @@ -2816,8 +2820,10 @@ async function zoomOutCalendar() { calendarView.value = "month"; }, () => - queryCalendarElement(`[data-calendar-week-start-key="${targetRowKey}"]`) ?? - queryCalendarElement(`[data-calendar-day-key="${selectedDateKey.value}"]`), + queryCalendarElement(`[data-calendar-layer="month"] [data-calendar-week-start-key="${targetRowKey}"]`) ?? + queryCalendarElement(`[data-calendar-layer="month"] [data-calendar-day-key="${selectedDateKey.value}"]`) ?? + queryCalendarElement(`[data-calendar-layer="month"] [data-calendar-week-start-key]`) ?? + queryCalendarElement(`[data-calendar-layer="month"] [data-calendar-day-key]`), ); return; } diff --git a/frontend/app/components/workspace/calendar/CrmCalendarPanel.vue b/frontend/app/components/workspace/calendar/CrmCalendarPanel.vue index 8d41968..3d669a6 100644 --- a/frontend/app/components/workspace/calendar/CrmCalendarPanel.vue +++ b/frontend/app/components/workspace/calendar/CrmCalendarPanel.vue @@ -206,6 +206,7 @@ defineProps<{