Implement event/date search bar

This commit is contained in:
LeoVasanko committed 2025-08-27 23:15:27 +00:00
1 parent 367072a8a2
commit 825e3e2b73
5 files changed
+616 -312

No files matched your search

+19 -4
View File
@@ -285,10 +285,24 @@ export function createVirtualWeekManager({
}
function goToToday() {
const top = addDays(new Date(calendarStore.now), -21)
const targetWeekIndex = getWeekIndex(top)
const newScrollTop = (targetWeekIndex - minVirtualWeek.value) * rowHeight.value
if (setScrollTopFn) setScrollTopFn(newScrollTop, 'go-to-today')
const todayDate = new Date(calendarStore.now)
const targetWeekIndex = getWeekIndex(todayDate)
scrollToWeekCentered(targetWeekIndex, 'go-to-today', true)
}
function scrollToWeekCentered(weekIndex, reason = 'center-scroll', smooth = true) {
if (weekIndex == null || !isFinite(weekIndex)) return
const maxScroll = Math.max(0, contentHeight.value - viewportHeight.value)
const baseTop = (weekIndex - minVirtualWeek.value) * rowHeight.value
// Center: subtract half viewport minus half row height
let newScrollTop = baseTop - (viewportHeight.value / 2 - rowHeight.value / 2)
newScrollTop = Math.max(0, Math.min(newScrollTop, maxScroll))
if (smooth && viewport.value && typeof viewport.value.scrollTo === 'function') {
viewport.value.scrollTo({ top: newScrollTop, behavior: 'smooth' })
} else if (setScrollTopFn) {
setScrollTopFn(newScrollTop, reason)
scheduleWindowUpdate(reason)
}
}
function handleHeaderYearChange({ scrollTop }) {
@@ -308,6 +322,7 @@ export function createVirtualWeekManager({
getWeekIndex,
getFirstDayForVirtualWeek,
goToToday,
scrollToWeekCentered,
handleHeaderYearChange,
attachScroll,
}