From 5fee57d93aa062b1b386b623096745d79170aaa5 Mon Sep 17 00:00:00 2001 From: Agzamus Date: Fri, 4 Sep 2026 01:07:09 +0300 Subject: [PATCH] ui: better week select l&f --- .../vyatsu/ui/schedule/ScheduleScreen.kt | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt b/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt index 70e267a..84ec6e7 100644 --- a/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt +++ b/app/src/main/java/agzam/vyatsu/ui/schedule/ScheduleScreen.kt @@ -5,6 +5,7 @@ import agzam.vyatsu.domain.model.SchedulePeriod import agzam.vyatsu.domain.model.TimeSlot import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.WindowInsets @@ -13,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBars +import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items @@ -22,10 +24,9 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowDropDown import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.ExposedDropdownMenuAnchorType -import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.HorizontalDivider @@ -175,13 +176,9 @@ private fun WeekSelector( val selected = periods.firstOrNull { it.weekStart == selectedWeekStart } var expanded by remember { mutableStateOf(false) } - ExposedDropdownMenuBox( - expanded = expanded, - onExpandedChange = { expanded = it } - ) { + Box { Row( modifier = Modifier - .menuAnchor(ExposedDropdownMenuAnchorType.PrimaryNotEditable, enabled = true) .clip(MaterialTheme.shapes.small) .clickable(enabled = true, onClick = { expanded = true }) .padding(horizontal = 10.dp, vertical = 8.dp), @@ -198,28 +195,30 @@ private fun WeekSelector( tint = MaterialTheme.colorScheme.primary ) } - ExposedDropdownMenu( + DropdownMenu( expanded = expanded, - onDismissRequest = { expanded = false } + onDismissRequest = { expanded = false }, + modifier = Modifier.widthIn(min = 220.dp) ) { periods.forEach { period -> val isTodayWeek = todayWeekStart == period.weekStart DropdownMenuItem( text = { - Row(verticalAlignment = Alignment.CenterVertically) { + Text( + weekLabel(period), + style = MaterialTheme.typography.bodyLarge + ) + }, + trailingIcon = if (isTodayWeek) { + { Text( - weekLabel(period), - style = MaterialTheme.typography.bodyLarge, - modifier = Modifier.weight(1f) + "сегодня", + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.primary ) - if (isTodayWeek) { - Text( - "сегодня", - style = MaterialTheme.typography.labelMedium, - color = MaterialTheme.colorScheme.primary - ) - } } + } else { + null }, onClick = { expanded = false