Updated on 2026-08-14

This commit is contained in:
Tangem 2025-05-27 19:30:03 +05:00
parent dc9341bb71
commit 222b5d75d1
23 changed files with 300 additions and 48 deletions

View file

@ -7,6 +7,7 @@ import com.tangem.core.ui.extensions.TextReference
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toPersistentList
import kotlinx.serialization.Serializable
@Immutable
data class MessageBottomSheetUMV2(
@ -24,6 +25,7 @@ data class MessageBottomSheetUMV2(
val closeScope = CloseScope()
@Immutable
@Serializable
sealed interface Element
@Immutable
@ -90,7 +92,7 @@ annotation class MessageBottomSheetV2Dsl
// region: DSL
internal fun messageBottomSheetUM(init: @MessageBottomSheetV2Dsl MessageBottomSheetUMV2.() -> Unit) =
fun messageBottomSheetUM(init: @MessageBottomSheetV2Dsl MessageBottomSheetUMV2.() -> Unit) =
MessageBottomSheetUMV2().apply(init)
fun MessageBottomSheetUMV2.onDismiss(block: () -> Unit) = MessageBottomSheetUMV2().apply { onDismissRequest = block }

View file

@ -7,6 +7,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@ -33,23 +34,31 @@ import kotlinx.collections.immutable.toPersistentList
@Composable
fun MessageBottomSheetV2(state: MessageBottomSheetUMV2, onDismissRequest: () -> Unit) {
val stateWithOnDismiss = remember(state) {
state.copy(
onDismissRequest = {
state.onDismissRequest.invoke()
onDismissRequest()
},
)
}
val config = TangemBottomSheetConfig(
isShown = true,
content = state,
onDismissRequest = onDismissRequest,
content = stateWithOnDismiss,
onDismissRequest = stateWithOnDismiss.onDismissRequest,
)
TangemModalBottomSheet(
config,
config = config,
title = {
TangemModalBottomSheetTitle(
endIconRes = R.drawable.ic_close_24,
onEndClick = state.onDismissRequest,
onEndClick = stateWithOnDismiss.onDismissRequest,
)
},
) { content: MessageBottomSheetUMV2 ->
MessageBottomSheetV2Content(content.copy(onDismissRequest = onDismissRequest))
}
content = { content: MessageBottomSheetUMV2 -> MessageBottomSheetV2Content(content) },
)
}
@Composable

View file

@ -27,4 +27,15 @@ fun Modifier.clickableSingle(
indication = LocalIndication.current,
interactionSource = remember { MutableInteractionSource() },
)
}
/**
* Conditionally applies a modifier based on a boolean condition.
*/
fun Modifier.conditional(condition: Boolean, modifier: Modifier.() -> Modifier): Modifier {
return if (condition) {
then(modifier(Modifier))
} else {
this
}
}