package com.sp365.calendar.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.sp365.calendar.utils.* import java.time.LocalDate @OptIn(ExperimentalPagerApi::class) @Composable fun WeekPager( pagerState: com.google.accompanist.pager.PagerState, currentDate: LocalDate, onDateSelected: (LocalDate) -> Unit ) { LaunchedEffect(currentDate) { val weeksFromStart = calculateWeeksFromStart(currentDate) val targetPage = weeksFromStart + 5000 // Đặt targetPage với mốc lớn hơn để cuộn sâu hơn về quá khứ pagerState.animateScrollToPage(targetPage) } HorizontalPager( state = pagerState, count = Int.MAX_VALUE, modifier = Modifier .fillMaxWidth() .background(Color.White) .padding(top = 4.dp, bottom = 4.dp) ) { page -> val startOfWeek = LocalDate.now().with(java.time.DayOfWeek.MONDAY).plusWeeks(page.toLong() - 5000) val weekDays = (0..6).map { startOfWeek.plusDays(it.toLong()) } Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceAround ) { weekDays.forEach { date -> DayItem( date = date, isSelected = date == currentDate, isToday = date == LocalDate.now(), onClick = { onDateSelected(date) } ) } } } }