diff --git a/libs/SalesforceSDK/src/com/salesforce/androidsdk/ui/components/LoginView.kt b/libs/SalesforceSDK/src/com/salesforce/androidsdk/ui/components/LoginView.kt index 96e9c888a..227cdb9d3 100644 --- a/libs/SalesforceSDK/src/com/salesforce/androidsdk/ui/components/LoginView.kt +++ b/libs/SalesforceSDK/src/com/salesforce/androidsdk/ui/components/LoginView.kt @@ -29,6 +29,7 @@ package com.salesforce.androidsdk.ui.components import android.content.Context import android.content.ContextWrapper import android.content.res.Configuration +import android.os.Build import android.webkit.WebView import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.animateFloatAsState @@ -43,14 +44,17 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.ime import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack @@ -233,6 +237,8 @@ internal fun LoginView( modifier = Modifier .background(dynamicBackgroundColor.value) .padding(innerPadding) + .consumeWindowInsets(innerPadding) + .applyImePaddingConditionally() .graphicsLayer(alpha = alpha), factory = { webView }, update = { it.loadUrl(loginUrl.value ?: "") }, @@ -473,6 +479,15 @@ private tailrec fun Context.getActivity(): FragmentActivity? = when (this) { else -> null } +@Composable +private fun Modifier.applyImePaddingConditionally() : Modifier = + // TODO: Remove when min API is > 29 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + windowInsetsPadding(WindowInsets.ime) + } else { + this + } + // Note: the light and dark previews should look the same. @Preview @Preview("Dark Mode", uiMode = Configuration.UI_MODE_NIGHT_YES, backgroundColor = 0xFF181818)