@@ -29,6 +29,7 @@ package com.salesforce.androidsdk.ui.components
2929import android.content.Context
3030import android.content.ContextWrapper
3131import android.content.res.Configuration
32+ import android.os.Build
3233import android.webkit.WebView
3334import androidx.compose.animation.AnimatedVisibility
3435import androidx.compose.animation.core.animateFloatAsState
@@ -43,14 +44,17 @@ import androidx.compose.foundation.layout.Box
4344import androidx.compose.foundation.layout.PaddingValues
4445import androidx.compose.foundation.layout.Row
4546import androidx.compose.foundation.layout.WindowInsets
47+ import androidx.compose.foundation.layout.consumeWindowInsets
4648import androidx.compose.foundation.layout.defaultMinSize
4749import androidx.compose.foundation.layout.fillMaxSize
4850import androidx.compose.foundation.layout.fillMaxWidth
4951import androidx.compose.foundation.layout.height
52+ import androidx.compose.foundation.layout.ime
5053import androidx.compose.foundation.layout.navigationBars
5154import androidx.compose.foundation.layout.padding
5255import androidx.compose.foundation.layout.safeDrawing
5356import androidx.compose.foundation.layout.size
57+ import androidx.compose.foundation.layout.windowInsetsPadding
5458import androidx.compose.foundation.shape.RoundedCornerShape
5559import androidx.compose.material.icons.Icons
5660import androidx.compose.material.icons.automirrored.filled.ArrowBack
@@ -233,6 +237,8 @@ internal fun LoginView(
233237 modifier = Modifier
234238 .background(dynamicBackgroundColor.value)
235239 .padding(innerPadding)
240+ .consumeWindowInsets(innerPadding)
241+ .applyImePaddingConditionally()
236242 .graphicsLayer(alpha = alpha),
237243 factory = { webView },
238244 update = { it.loadUrl(loginUrl.value ? : " " ) },
@@ -473,6 +479,15 @@ private tailrec fun Context.getActivity(): FragmentActivity? = when (this) {
473479 else -> null
474480}
475481
482+ @Composable
483+ private fun Modifier.applyImePaddingConditionally () : Modifier =
484+ // TODO: Remove when min API is > 29
485+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R ) {
486+ windowInsetsPadding(WindowInsets .ime)
487+ } else {
488+ this
489+ }
490+
476491// Note: the light and dark previews should look the same.
477492@Preview
478493@Preview(" Dark Mode" , uiMode = Configuration .UI_MODE_NIGHT_YES , backgroundColor = 0xFF181818 )
0 commit comments