NTP-15616 | Venkat Praneeth Reddy | Add fractional height and ondismiss action support to home page bottom sheet (#14028)
This commit is contained in:
committed by
GitHub
parent
0720a30c96
commit
91321a53e8
@@ -11,6 +11,7 @@ import com.navi.common.utils.TemporaryStorageHelper
|
||||
import com.naviapp.home.compose.activity.HomePageActivity
|
||||
import com.naviapp.home.compose.listener.HomeScreenCallbackListener
|
||||
import com.naviapp.home.compose.model.CtaActionEvent
|
||||
import com.naviapp.home.model.HpBottomSheetConfig
|
||||
import com.naviapp.home.model.HpBottomSheetContent
|
||||
import com.naviapp.home.model.HpBottomSheetRenderType
|
||||
import com.naviapp.home.model.HpBottomSheetState
|
||||
@@ -50,6 +51,13 @@ fun handleCtaAction(
|
||||
HpBottomSheetContent(
|
||||
renderType = HpBottomSheetRenderType.UI_TRON,
|
||||
uiTronContent = it.content?.widgets
|
||||
),
|
||||
config =
|
||||
HpBottomSheetConfig(
|
||||
isCancellable = it.isCancellable,
|
||||
bottomSheetPercentageHeight = it.bottomSheetPercentageHeight,
|
||||
uiStrategy = it.uiStrategy,
|
||||
onDismiss = { homeVM.handleActions(it.onDismissAction) }
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import androidx.compose.runtime.MutableState
|
||||
import androidx.compose.runtime.Stable
|
||||
import com.navi.base.model.ActionData
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.common.alchemist.model.AlchemistBottomSheetStructure
|
||||
import com.navi.common.alchemist.model.AlchemistWidgetModelDefinition
|
||||
import com.navi.naviwidgets.models.FooterButtonState
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
@@ -38,7 +39,9 @@ open class HpBottomSheetConfig(
|
||||
val contentColor: String? = null,
|
||||
val scrimColor: String? = null,
|
||||
val onDismiss: () -> Unit = {},
|
||||
val onVisible: () -> Unit = {}
|
||||
val onVisible: () -> Unit = {},
|
||||
val uiStrategy: AlchemistBottomSheetStructure.UiStrategy? = null,
|
||||
val bottomSheetPercentageHeight: Float? = null
|
||||
)
|
||||
|
||||
@Stable
|
||||
|
||||
@@ -10,6 +10,7 @@ package com.naviapp.screenOverlay.bottomsheet.ui
|
||||
import BottomSheetData
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.heightIn
|
||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
@@ -23,6 +24,7 @@ import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalConfiguration
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.platform.LocalView
|
||||
import androidx.compose.ui.unit.dp
|
||||
@@ -32,6 +34,7 @@ import com.navi.alfred.AlfredManager
|
||||
import com.navi.ap.utils.constants.BOTTOM_SHEET_VISIBILITY
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.base.utils.orTrue
|
||||
import com.navi.common.alchemist.model.AlchemistBottomSheetStructure
|
||||
import com.navi.common.uitron.model.action.CtaAction
|
||||
import com.navi.common.uitron.render.CommonCustomUiTronRenderer
|
||||
import com.navi.common.utils.CommonNaviAnalytics
|
||||
@@ -93,6 +96,23 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) ->
|
||||
|
||||
if (bottomSheetStateHolder.state != HpBottomSheetState.Hidden) {
|
||||
bottomSheetStateHolder.let {
|
||||
val modifier: Modifier =
|
||||
when (it.config?.uiStrategy?.name) {
|
||||
AlchemistBottomSheetStructure.UiStrategy.FIX_PERCENTAGE_HEIGHT.name -> {
|
||||
Modifier.heightIn(
|
||||
min = 0.dp,
|
||||
max =
|
||||
LocalConfiguration.current.screenHeightDp.dp *
|
||||
(it.config.bottomSheetPercentageHeight ?: 0.5f)
|
||||
)
|
||||
}
|
||||
AlchemistBottomSheetStructure.UiStrategy.DEFAULT.name -> {
|
||||
Modifier
|
||||
}
|
||||
else -> {
|
||||
Modifier
|
||||
}
|
||||
}
|
||||
val statusBarHeight = with(LocalDensity.current) { getStatusBarHeight().toDp() }
|
||||
ModalBottomSheet(
|
||||
onDismissRequest = {
|
||||
@@ -114,7 +134,7 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) ->
|
||||
contentWindowInsets = { WindowInsets(0, 0, 0, 0) }
|
||||
) {
|
||||
AlfredManager.setBottomSheetView(LocalView.current.rootView)
|
||||
Column(modifier = Modifier.navigationBarsPadding()) {
|
||||
Column(modifier = modifier.navigationBarsPadding()) {
|
||||
BottomSheetContentRenderer(it.config, it.content, viewModel)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user