RoomListFilters : try using Row instead of LazyRow..
This commit is contained in:
parent
9b2198f12b
commit
f2cdc25ef3
1 changed files with 24 additions and 27 deletions
|
|
@ -17,14 +17,13 @@
|
||||||
package io.element.android.features.roomlist.impl.filters
|
package io.element.android.features.roomlist.impl.filters
|
||||||
|
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
|
import androidx.compose.foundation.horizontalScroll
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyRow
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.lazy.items
|
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material3.FilterChip
|
import androidx.compose.material3.FilterChip
|
||||||
import androidx.compose.material3.FilterChipDefaults
|
import androidx.compose.material3.FilterChipDefaults
|
||||||
|
|
@ -43,7 +42,6 @@ import io.element.android.libraries.designsystem.theme.components.Icon
|
||||||
import io.element.android.libraries.designsystem.theme.components.IconButton
|
import io.element.android.libraries.designsystem.theme.components.IconButton
|
||||||
import io.element.android.libraries.designsystem.theme.components.Text
|
import io.element.android.libraries.designsystem.theme.components.Text
|
||||||
|
|
||||||
@OptIn(ExperimentalFoundationApi::class)
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RoomListFiltersView(
|
fun RoomListFiltersView(
|
||||||
state: RoomListFiltersState,
|
state: RoomListFiltersState,
|
||||||
|
|
@ -58,31 +56,30 @@ fun RoomListFiltersView(
|
||||||
state.eventSink(RoomListFiltersEvents.ToggleFilter(filter))
|
state.eventSink(RoomListFiltersEvents.ToggleFilter(filter))
|
||||||
}
|
}
|
||||||
|
|
||||||
val horizontalPadding = if(state.showClearFilterButton) 4.dp else 16.dp
|
val horizontalPadding = if (state.showClearFilterButton) 4.dp else 16.dp
|
||||||
|
val scrollState = rememberScrollState()
|
||||||
Row(modifier.padding(horizontal = horizontalPadding)) {
|
Row(
|
||||||
|
modifier = modifier
|
||||||
|
.padding(horizontal = horizontalPadding)
|
||||||
|
.horizontalScroll(scrollState),
|
||||||
|
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||||
|
) {
|
||||||
AnimatedVisibility(visible = state.showClearFilterButton) {
|
AnimatedVisibility(visible = state.showClearFilterButton) {
|
||||||
RoomListClearFiltersButton(onClick = ::onClearFiltersClicked)
|
RoomListClearFiltersButton(onClick = ::onClearFiltersClicked)
|
||||||
}
|
}
|
||||||
LazyRow(
|
for (filter in state.selectedFilters) {
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
RoomListFilterView(
|
||||||
) {
|
roomListFilter = filter,
|
||||||
items(state.selectedFilters) { filter ->
|
selected = true,
|
||||||
RoomListFilterView(
|
onClick = ::onFilterClicked,
|
||||||
roomListFilter = filter,
|
)
|
||||||
selected = true,
|
}
|
||||||
onClick = ::onFilterClicked,
|
for (filter in state.unselectedFilters) {
|
||||||
modifier = Modifier.animateItemPlacement(),
|
RoomListFilterView(
|
||||||
)
|
roomListFilter = filter,
|
||||||
}
|
selected = false,
|
||||||
items(state.unselectedFilters) { filter ->
|
onClick = ::onFilterClicked,
|
||||||
RoomListFilterView(
|
)
|
||||||
roomListFilter = filter,
|
|
||||||
selected = false,
|
|
||||||
onClick = ::onFilterClicked,
|
|
||||||
modifier = Modifier.animateItemPlacement(),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -103,7 +100,7 @@ private fun RoomListClearFiltersButton(
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
modifier = Modifier.align(Alignment.Center),
|
modifier = Modifier.align(Alignment.Center),
|
||||||
imageVector = CompoundIcons.Close,
|
imageVector = CompoundIcons.Close(),
|
||||||
tint = ElementTheme.colors.iconOnSolidPrimary,
|
tint = ElementTheme.colors.iconOnSolidPrimary,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue