members filters as panels
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 48s

This commit is contained in:
Torsten Schulz (local)
2026-06-09 16:01:04 +02:00
parent 2fa7f9b537
commit 5423f24969
3 changed files with 56 additions and 4 deletions

View File

@@ -5105,6 +5105,8 @@ private fun MembersScreen(
var selectedSort by rememberSaveable { mutableStateOf("name") }
var sortAscending by rememberSaveable { mutableStateOf(true) }
var showTrainingParticipationsColumn by rememberSaveable { mutableStateOf(false) }
var memberActionsPanelExpanded by rememberSaveable { mutableStateOf(false) }
var memberFiltersPanelExpanded by rememberSaveable { mutableStateOf(false) }
var groupFilterMenuOpen by remember { mutableStateOf(false) }
var ratingsBusy by remember { mutableStateOf(false) }
var membersActionNote by remember { mutableStateOf<String?>(null) }
@@ -5668,7 +5670,12 @@ private fun MembersScreen(
}
}
}
Row(horizontalArrangement = Arrangement.spacedBy(8.dp), modifier = Modifier.fillMaxWidth()) {
MembersTogglePanel(
title = tr("members.actions", "Aktionen"),
expanded = memberActionsPanelExpanded,
onToggle = { memberActionsPanelExpanded = !memberActionsPanelExpanded },
) {
Row(horizontalArrangement = Arrangement.spacedBy(8.dp), modifier = Modifier.fillMaxWidth()) {
OutlinedButton(
onClick = { dependencies.applicationScope.launch { dependencies.membersManager.loadMembers(clubId) } },
modifier = Modifier
@@ -5780,7 +5787,13 @@ private fun MembersScreen(
) { Text(tr("members.transferMembers", "Transfer"), style = MaterialTheme.typography.caption) }
}
}
OutlinedTextField(
}
MembersTogglePanel(
title = tr("members.filterSearchSort", "Filter, Suche & Sortierung"),
expanded = memberFiltersPanelExpanded,
onToggle = { memberFiltersPanelExpanded = !memberFiltersPanelExpanded },
) {
OutlinedTextField(
value = query,
onValueChange = { query = it },
label = { Text(tr("mobile.search", "Suche")) },
@@ -6118,6 +6131,7 @@ private fun MembersScreen(
) { Text(tr("members.bulkEndTest", "Test beenden (Liste)"), style = MaterialTheme.typography.caption) }
}
}
}
membersActionNote?.let { note ->
Text(note, style = MaterialTheme.typography.caption, color = MaterialTheme.colors.primary, modifier = Modifier.padding(bottom = 6.dp))
}
@@ -7383,6 +7397,44 @@ private fun FormScaffold(
}
}
@Composable
private fun MembersTogglePanel(
title: String,
expanded: Boolean,
onToggle: () -> Unit,
content: @Composable ColumnScope.() -> Unit,
) {
Card(
modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp),
elevation = 1.dp,
backgroundColor = MaterialTheme.colors.onSurface.copy(alpha = 0.03f),
) {
Column(modifier = Modifier.fillMaxWidth()) {
Row(
modifier = Modifier
.fillMaxWidth()
.clickable(onClick = onToggle)
.padding(horizontal = 12.dp, vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
) {
Text(title, fontWeight = FontWeight.SemiBold, style = MaterialTheme.typography.subtitle2)
Icon(
imageVector = if (expanded) Icons.Filled.ExpandLess else Icons.Filled.ExpandMore,
contentDescription = null,
modifier = Modifier.size(20.dp),
)
}
if (expanded) {
Column(
modifier = Modifier.fillMaxWidth().padding(horizontal = 12.dp, vertical = 8.dp),
content = content,
)
}
}
}
}
@Composable
private fun Header(text: String) {
Text(text, style = MaterialTheme.typography.h5, fontWeight = FontWeight.SemiBold)

View File

@@ -1,7 +1,7 @@
[versions]
# composeApp (Play Store / „Über die App“-Build)
appVersionCode = "26"
appVersionName = "1.7.6"
appVersionCode = "27"
appVersionName = "1.7.7"
agp = "9.2.1"
android-compileSdk = "35"
android-minSdk = "24"