From cb93e625446f9838d136230ac422eb5a02d60c52 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Mon, 11 Apr 2022 01:04:25 +0200 Subject: [PATCH] Add: SelectableChipRow --- .../looker/droidify/ui/compose/utils/Chip.kt | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/ui/compose/utils/Chip.kt b/src/main/kotlin/com/looker/droidify/ui/compose/utils/Chip.kt index bf2bd3ba..60c1e7e4 100644 --- a/src/main/kotlin/com/looker/droidify/ui/compose/utils/Chip.kt +++ b/src/main/kotlin/com/looker/droidify/ui/compose/utils/Chip.kt @@ -1,16 +1,14 @@ package com.looker.droidify.ui.compose.utils import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Chip -import androidx.compose.material.ChipColors -import androidx.compose.material.ChipDefaults -import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.* import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text -import androidx.compose.runtime.Composable +import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Shape import androidx.compose.ui.unit.dp @@ -45,4 +43,44 @@ fun ChipRow( } } } +} + +@OptIn(ExperimentalMaterialApi::class) +@Composable +fun SelectableChipRow( + modifier: Modifier = Modifier, + list: List, + chipColors: SelectableChipColors = ChipDefaults.filterChipColors( + backgroundColor = MaterialTheme.colorScheme.surface, + contentColor = MaterialTheme.colorScheme.onSurface, + selectedBackgroundColor = MaterialTheme.colorScheme.primary, + selectedContentColor = MaterialTheme.colorScheme.onPrimary + ), + shapes: Shape = RoundedCornerShape(50), + onClick: (String) -> Unit +) { + var selected by remember { mutableStateOf(list[0]) } + + LazyRow( + modifier = modifier, + horizontalArrangement = Arrangement.spacedBy(8.dp), + contentPadding = PaddingValues(horizontal = 8.dp) + ) { + items(list) { + FilterChip( + shape = shapes, + colors = chipColors, + selected = it == selected, + onClick = { + onClick(it) + selected = it + } + ) { + Text( + text = it, + color = chipColors.contentColor(enabled = true, selected = it == selected).value + ) + } + } + } } \ No newline at end of file