Updated on 2026-08-14
This commit is contained in:
parent
d8844fda91
commit
5b516f2c9b
23 changed files with 339 additions and 52 deletions
|
|
@ -0,0 +1,50 @@
|
|||
package com.tangem.core.ui.components.provider
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.key
|
||||
import androidx.compose.ui.Modifier
|
||||
import com.tangem.core.ui.R
|
||||
import com.tangem.domain.express.models.ProviderFilterType
|
||||
import com.tangem.core.ui.ds.tabs.TangemSegmentUM
|
||||
import com.tangem.core.ui.ds.tabs.TangemSegmentedPicker
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.res.TangemThemeRedesign
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
@Composable
|
||||
fun ProviderTypeFilterPicker(
|
||||
availableFilters: ImmutableList<ProviderFilterType>,
|
||||
selectedFilter: ProviderFilterType,
|
||||
onFilterSelect: (ProviderFilterType) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val segments = availableFilters.map { filter ->
|
||||
TangemSegmentUM(
|
||||
id = filter.name,
|
||||
title = when (filter) {
|
||||
ProviderFilterType.ALL -> resourceReference(R.string.common_all)
|
||||
ProviderFilterType.CEX -> TextReference.Str("CEX")
|
||||
ProviderFilterType.DEX -> TextReference.Str("DEX")
|
||||
},
|
||||
)
|
||||
}.toImmutableList()
|
||||
val selectedSegment = segments.firstOrNull { it.id == selectedFilter.name }
|
||||
TangemThemeRedesign {
|
||||
// key() forces recomposition when selectedFilter changes to re-seed initialSelectedItem,
|
||||
// because TangemSegmentedPicker owns its selection state internally via remember.
|
||||
key(selectedFilter) {
|
||||
TangemSegmentedPicker(
|
||||
items = segments,
|
||||
initialSelectedItem = selectedSegment,
|
||||
isFixed = true,
|
||||
modifier = modifier,
|
||||
onClick = { segment ->
|
||||
val filterType = availableFilters.firstOrNull { it.name == segment.id }
|
||||
if (filterType != null) onFilterSelect(filterType)
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue