From b65856a4ae256518bcbd5aa932bd7cb64bcbe35f Mon Sep 17 00:00:00 2001 From: meyou <2636699780@qq.com> Date: Sat, 16 May 2026 14:54:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=9C=88=E4=BB=BD=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E8=B7=B3=E8=BD=AC=E5=88=B0=E4=BB=8A=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/plus/rua/project/ui/CalendarMonthView.kt | 12 ++++++++++++ .../kotlin/plus/rua/project/ui/MonthHeader.kt | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/shared/src/commonMain/kotlin/plus/rua/project/ui/CalendarMonthView.kt b/shared/src/commonMain/kotlin/plus/rua/project/ui/CalendarMonthView.kt index 58feb7d..ce3c726 100644 --- a/shared/src/commonMain/kotlin/plus/rua/project/ui/CalendarMonthView.kt +++ b/shared/src/commonMain/kotlin/plus/rua/project/ui/CalendarMonthView.kt @@ -27,6 +27,7 @@ import kotlinx.datetime.TimeZone import kotlinx.datetime.number import kotlinx.datetime.plus import kotlinx.datetime.todayIn +import kotlinx.coroutines.launch import plus.rua.project.CalendarViewModel import kotlin.math.abs import kotlin.time.Clock @@ -144,6 +145,17 @@ fun CalendarMonthView( year = currentYear, month = currentMonth, weekNumber = viewModel.getIsoWeekNumber(viewModel.selectedDate), + onClick = { + viewModel.selectDate(today) + @Suppress("DEPRECATION") // monthNumber 无替代 API + val targetPage = yearMonthToPage( + today.year, today.month.number, + today.year, today.month.number + ) + if (targetPage != pagerState.currentPage) { + coroutineScope.launch { pagerState.animateScrollToPage(targetPage) } + } + }, modifier = Modifier.onSizeChanged { size -> monthHeaderHeightPx = size.height } diff --git a/shared/src/commonMain/kotlin/plus/rua/project/ui/MonthHeader.kt b/shared/src/commonMain/kotlin/plus/rua/project/ui/MonthHeader.kt index e8d3ca1..c8b42b7 100644 --- a/shared/src/commonMain/kotlin/plus/rua/project/ui/MonthHeader.kt +++ b/shared/src/commonMain/kotlin/plus/rua/project/ui/MonthHeader.kt @@ -7,6 +7,7 @@ import androidx.compose.animation.fadeOut import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutVertically import androidx.compose.animation.togetherWith +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -32,12 +33,14 @@ fun MonthHeader( year: Int, month: Int, weekNumber: Int, + onClick: (() -> Unit)? = null, modifier: Modifier = Modifier ) { Row( modifier = modifier .fillMaxWidth() - .padding(vertical = 14.dp, horizontal = 12.dp), + .padding(vertical = 14.dp, horizontal = 12.dp) + .then(if (onClick != null) Modifier.clickable(onClick = onClick) else Modifier), verticalAlignment = Alignment.CenterVertically ) { AnimatedContent(