Let room filters follow the design.
Ref: https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=2191-606 We cannot change the horizontal padding though, design says it has to be 12dp. Or we need to make our custom component.
This commit is contained in:
parent
bbf78b82b1
commit
fcaa63b0c7
1 changed files with 27 additions and 5 deletions
|
|
@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.lazy.LazyRow
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
|
|
@ -34,6 +35,7 @@ import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
@ -48,6 +50,9 @@ import io.element.android.libraries.designsystem.theme.components.Text
|
||||||
import io.element.android.libraries.testtags.TestTags
|
import io.element.android.libraries.testtags.TestTags
|
||||||
import io.element.android.libraries.testtags.testTag
|
import io.element.android.libraries.testtags.testTag
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ref: https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=2191-606
|
||||||
|
*/
|
||||||
@Composable
|
@Composable
|
||||||
fun RoomListFiltersView(
|
fun RoomListFiltersView(
|
||||||
state: RoomListFiltersState,
|
state: RoomListFiltersState,
|
||||||
|
|
@ -143,9 +148,12 @@ private fun RoomListClearFiltersButton(
|
||||||
.clip(CircleShape)
|
.clip(CircleShape)
|
||||||
.background(ElementTheme.colors.bgActionPrimaryRest)
|
.background(ElementTheme.colors.bgActionPrimaryRest)
|
||||||
.clickable(onClick = onClick)
|
.clickable(onClick = onClick)
|
||||||
|
.padding(4.dp)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
modifier = Modifier.align(Alignment.Center),
|
modifier = Modifier
|
||||||
|
.align(Alignment.Center)
|
||||||
|
.size(16.dp),
|
||||||
imageVector = CompoundIcons.Close(),
|
imageVector = CompoundIcons.Close(),
|
||||||
tint = ElementTheme.colors.iconOnSolidPrimary,
|
tint = ElementTheme.colors.iconOnSolidPrimary,
|
||||||
contentDescription = stringResource(id = R.string.screen_roomlist_clear_filters),
|
contentDescription = stringResource(id = R.string.screen_roomlist_clear_filters),
|
||||||
|
|
@ -170,21 +178,34 @@ private fun RoomListFilterView(
|
||||||
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
|
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
|
||||||
label = "chip text colour",
|
label = "chip text colour",
|
||||||
)
|
)
|
||||||
|
val borderColour = animateColorAsState(
|
||||||
|
targetValue = if (selected) Color.Transparent else ElementTheme.colors.borderInteractiveSecondary,
|
||||||
|
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
|
||||||
|
label = "chip border colour",
|
||||||
|
)
|
||||||
|
|
||||||
FilterChip(
|
FilterChip(
|
||||||
selected = selected,
|
selected = selected,
|
||||||
onClick = { onClick(roomListFilter) },
|
onClick = { onClick(roomListFilter) },
|
||||||
modifier = modifier.height(36.dp),
|
modifier = modifier.height(32.dp),
|
||||||
shape = CircleShape,
|
shape = CircleShape,
|
||||||
colors = FilterChipDefaults.filterChipColors(
|
colors = FilterChipDefaults.filterChipColors(
|
||||||
containerColor = background.value,
|
containerColor = background.value,
|
||||||
selectedContainerColor = background.value,
|
selectedContainerColor = background.value,
|
||||||
labelColor = textColour.value,
|
labelColor = textColour.value,
|
||||||
selectedLabelColor = textColour.value
|
selectedLabelColor = textColour.value,
|
||||||
),
|
),
|
||||||
label = {
|
label = {
|
||||||
Text(text = stringResource(id = roomListFilter.stringResource))
|
Text(
|
||||||
}
|
text = stringResource(id = roomListFilter.stringResource),
|
||||||
|
style = ElementTheme.typography.fontBodyMdRegular,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
border = FilterChipDefaults.filterChipBorder(
|
||||||
|
enabled = true,
|
||||||
|
selected = selected,
|
||||||
|
borderColor = borderColour.value,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -192,6 +213,7 @@ private fun RoomListFilterView(
|
||||||
@Composable
|
@Composable
|
||||||
internal fun RoomListFiltersViewPreview(@PreviewParameter(RoomListFiltersStateProvider::class) state: RoomListFiltersState) = ElementPreview {
|
internal fun RoomListFiltersViewPreview(@PreviewParameter(RoomListFiltersStateProvider::class) state: RoomListFiltersState) = ElementPreview {
|
||||||
RoomListFiltersView(
|
RoomListFiltersView(
|
||||||
|
modifier = Modifier.padding(vertical = 4.dp),
|
||||||
state = state,
|
state = state,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue