feat: UI Changes
* fix(#220): implement edit soul and set model dialogs * fix(#211): make UI more compact and information dense * fix(#211): make navigation drawer sidebar more compact * feat(#252): move settings item to end of navigation drawer * feat(#250): add bottom navigation bar display mode settings * feat(#225): add search bar filtering to remaining screens * fix: make bottom navigation bar display modes more compact * fix: resolve compilation error in KanbanScreen by referencing assignedTo * feat: add search to achievements screen and top padding for icon-only navigation bar * fix: adjust icon-only bottom bar height and remove padding * fix(#249): remove unused PaddingValues imports in 6 screens --------- Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
32def80694
commit
60bf6e8a33
20 files changed
+424
-61
No files matched your search
@@ -16,6 +16,9 @@ import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@@ -30,6 +33,7 @@ import com.m57.hermescontrol.ui.common.EmptyState
|
||||
import com.m57.hermescontrol.ui.common.ErrorState
|
||||
import com.m57.hermescontrol.ui.common.HermesScaffold
|
||||
import com.m57.hermescontrol.ui.common.LoadingState
|
||||
import com.m57.hermescontrol.ui.common.SearchBar
|
||||
|
||||
@Composable
|
||||
fun LogsScreen(
|
||||
@@ -42,6 +46,15 @@ fun LogsScreen(
|
||||
val spacing = LocalSpacing.current
|
||||
val listState = rememberLazyListState()
|
||||
|
||||
var query by remember { mutableStateOf("") }
|
||||
|
||||
val filteredLogs =
|
||||
remember(query, state.logs) {
|
||||
state.logs.filter { logLine ->
|
||||
logLine.contains(query, ignoreCase = true)
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
viewModel.loadLogs()
|
||||
}
|
||||
@@ -54,9 +67,9 @@ fun LogsScreen(
|
||||
}
|
||||
|
||||
// Auto scroll to bottom when new logs arrive
|
||||
LaunchedEffect(state.logs.size) {
|
||||
if (state.logs.isNotEmpty()) {
|
||||
listState.animateScrollToItem(state.logs.size - 1)
|
||||
LaunchedEffect(filteredLogs.size) {
|
||||
if (filteredLogs.isNotEmpty()) {
|
||||
listState.animateScrollToItem(filteredLogs.size)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,7 +114,15 @@ fun LogsScreen(
|
||||
vertical = spacing.sm,
|
||||
),
|
||||
) {
|
||||
items(state.logs) { logLine ->
|
||||
item {
|
||||
SearchBar(
|
||||
query = query,
|
||||
onQueryChange = { query = it },
|
||||
placeholder = "Search logs...",
|
||||
modifier = Modifier.padding(bottom = 8.dp),
|
||||
)
|
||||
}
|
||||
items(filteredLogs) { logLine ->
|
||||
Text(
|
||||
text = logLine,
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
|
||||
Reference in new issue
Block a user