From 0977e34a2d6ed74977d900745efce936a6cd23f5 Mon Sep 17 00:00:00 2001 From: Achmad Setyabudi Susilo Date: Sun, 28 Jun 2026 21:57:16 +0700 Subject: [PATCH] fix(#44): pin expense filter chips directly under tabs Hoist the date-range filter chip group and divider out of the LazyColumn and into a Column wrapper, so the chips sit directly under the Expenses/Recurring tabs and the list fills the rest of the page. Previously the chips were the first item of the LazyColumn, which left a large empty area between the tabs and the chips. Also add Modifier.fillMaxSize() to the Recurring tab's LazyColumn so it fills the pager page (no chips to hoist, but the layout is now consistent with the Expenses tab). --- .../ui/screens/expenses/ExpenseListScreen.kt | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt b/app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt index 341ee1a..6824b1c 100644 --- a/app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt +++ b/app/src/main/java/dev/achmad/ledgerr/ui/screens/expenses/ExpenseListScreen.kt @@ -270,29 +270,28 @@ private fun ExpensesTabContent( return } - LazyColumn( - contentPadding = contentPadding, - ) { - item { - SingleSelectFilterChipGroup( - options = DateRangeFilter.entries.map { it to stringResource(it.labelRes()) }, - selectedOption = dateRangeFilter to stringResource(dateRangeFilter.labelRes()), - onSelectionChanged = { (filter, _) -> screenModel.setDateRangeFilter(filter) }, - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp, vertical = 4.dp), - ) - } - item { - HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) - } - items(items = expenses, key = { it.expense.id }) { item -> - ExpenseRow( - item = item, - onClick = { onExpenseClick(item.expense.id) }, - onLongClick = { onExpenseLongClick(item.expense.id) }, - ) - HorizontalDivider() + Column(modifier = Modifier.fillMaxSize()) { + SingleSelectFilterChipGroup( + options = DateRangeFilter.entries.map { it to stringResource(it.labelRes()) }, + selectedOption = dateRangeFilter to stringResource(dateRangeFilter.labelRes()), + onSelectionChanged = { (filter, _) -> screenModel.setDateRangeFilter(filter) }, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 4.dp), + ) + HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) + LazyColumn( + modifier = Modifier.fillMaxSize(), + contentPadding = contentPadding, + ) { + items(items = expenses, key = { it.expense.id }) { item -> + ExpenseRow( + item = item, + onClick = { onExpenseClick(item.expense.id) }, + onLongClick = { onExpenseLongClick(item.expense.id) }, + ) + HorizontalDivider() + } } } } @@ -318,6 +317,7 @@ private fun RecurringTabContent( } LazyColumn( + modifier = Modifier.fillMaxSize(), contentPadding = contentPadding, ) { items(items = recurring, key = { it.recurring.id }) { item ->