From a8717dec7d22495299036020fca1366356f9b6b6 Mon Sep 17 00:00:00 2001 From: xfy Date: Mon, 1 Jun 2026 13:18:27 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20MenuItem=20=E5=92=8C=20ToolItem=20?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8=20Card(onClick)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 1 + .../plus/rua/project/ui/CalendarMonthView.kt | 23 +++++++++---------- .../kotlin/plus/rua/project/ui/ToolsScreen.kt | 5 ++-- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index ee1bf10..3e36d1d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -77,3 +77,4 @@ CalendarMonthView ← top-level screen (MonthHeader + WeekdayHeader + p - Public `@Composable` functions require KDoc per `COMMENTS.md` - `Modifier` parameter always last in composable signatures - Callback parameters use `on` prefix (`onDateClick`, `onMonthChanged`) +- **Clickable list items:** Use `Card(onClick = ...)` with `CardDefaults.cardElevation(defaultElevation = 0.dp)` instead of `Modifier.clickable()` on `Box`/`Row`. This ensures consistent Material 3 press-state feedback (ripple + background color change) across all interactive list/menu items. See `LicensesScreen`, `ToolsScreen`, and `CalendarMonthView.MenuItem` for reference. diff --git a/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt b/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt index 1966040..a30242a 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthView.kt @@ -633,23 +633,22 @@ private fun MenuItem( onClick: () -> Unit, modifier: Modifier = Modifier ) { - Box( - modifier = modifier - .fillMaxWidth() - .clickable(onClick = onClick) - .then( - if (selected) Modifier.background( - MaterialTheme.colorScheme.primaryContainer, - RoundedCornerShape(8.dp) - ) else Modifier - ) - .padding(horizontal = 16.dp, vertical = 12.dp) + Card( + onClick = onClick, + shape = RoundedCornerShape(8.dp), + colors = CardDefaults.cardColors( + containerColor = if (selected) MaterialTheme.colorScheme.primaryContainer + else MaterialTheme.colorScheme.surfaceContainerHigh + ), + elevation = CardDefaults.cardElevation(defaultElevation = 0.dp), + modifier = modifier.fillMaxWidth() ) { Text( text = text, color = if (selected) MaterialTheme.colorScheme.onPrimaryContainer else MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.bodyLarge + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp) ) } } diff --git a/core/src/main/kotlin/plus/rua/project/ui/ToolsScreen.kt b/core/src/main/kotlin/plus/rua/project/ui/ToolsScreen.kt index b54cc56..9a02df1 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/ToolsScreen.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/ToolsScreen.kt @@ -93,14 +93,13 @@ private fun ToolItem( modifier: Modifier = Modifier ) { Card( + onClick = onClick, shape = RoundedCornerShape(16.dp), colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.surfaceContainerHigh ), elevation = CardDefaults.cardElevation(defaultElevation = 0.dp), - modifier = modifier - .fillMaxWidth() - .clickable(onClick = onClick) + modifier = modifier.fillMaxWidth() ) { Text( text = title,