Browse Source

RoomListFilters : try using Row instead of LazyRow..

jme/room_list_filters_embedded
ganfra 7 months ago
parent
commit
4777ee83f9
  1. 51
      features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFiltersView.kt

51
features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFiltersView.kt

@ -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…
Cancel
Save