PM-19466: Handle the IME padding internal to the BitwardenScaffold (#4912)

This commit is contained in:
David Perez
2025-03-24 12:13:35 -05:00
committed by GitHub
parent 8ed9b97805
commit ab270cd243
32 changed files with 16 additions and 77 deletions

View File

@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentHeight
@@ -87,7 +86,6 @@ fun CheckEmailScreen(
) {
Column(
modifier = Modifier
.imePadding()
.fillMaxSize()
.verticalScroll(rememberScrollState()),
) {

View File

@@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
@@ -162,7 +161,6 @@ fun CompleteRegistrationScreen(
) {
Column(
modifier = Modifier
.imePadding()
.fillMaxSize()
.verticalScroll(rememberScrollState()),
) {

View File

@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -176,7 +175,6 @@ fun CreateAccountScreen(
) {
Column(
modifier = Modifier
.imePadding()
.fillMaxSize()
.verticalScroll(rememberScrollState()),
) {

View File

@@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -128,7 +127,6 @@ private fun EnterpriseSignOnScreenContent(
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier
.imePadding()
.verticalScroll(rememberScrollState())
.fillMaxWidth(),
) {

View File

@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
@@ -181,7 +180,6 @@ fun EnvironmentScreen(
Column(
modifier = Modifier
.fillMaxSize()
.imePadding()
.verticalScroll(rememberScrollState()),
) {
Spacer(modifier = Modifier.height(height = 12.dp))

View File

@@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.layout.wrapContentHeight
@@ -205,7 +204,6 @@ private fun LandingScreenContent(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier
.fillMaxSize()
.imePadding()
.verticalScroll(rememberScrollState())
.statusBarsPadding(),
) {

View File

@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -234,7 +233,6 @@ private fun LoginScreenContent(
) {
Column(
modifier = modifier
.imePadding()
.verticalScroll(rememberScrollState()),
) {
Spacer(modifier = Modifier.height(height = 12.dp))

View File

@@ -9,7 +9,6 @@ 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.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
@@ -133,7 +132,6 @@ private fun LoginWithDeviceScreenContent(
) {
Column(
modifier = modifier
.imePadding()
.verticalScroll(rememberScrollState()),
) {
Text(

View File

@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
@@ -117,9 +116,7 @@ private fun NewDeviceNoticeEmailAccessContent(
BitwardenFilledButton(
label = stringResource(R.string.continue_text),
onClick = onContinueClick,
modifier = Modifier
.fillMaxSize()
.imePadding(),
modifier = Modifier.fillMaxSize(),
)
Spacer(modifier = Modifier.navigationBarsPadding())
}

View File

@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -174,7 +173,6 @@ private fun ResetPasswordScreenContent(
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier
.imePadding()
.verticalScroll(rememberScrollState()),
) {
Spacer(modifier = Modifier.height(height = 12.dp))

View File

@@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -96,7 +95,6 @@ fun SetPasswordScreen(
{ viewModel.trySendAction(SetPasswordAction.PasswordHintInputChanged(it)) }
},
modifier = Modifier
.imePadding()
.fillMaxSize(),
)
}

View File

@@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
@@ -191,7 +190,6 @@ private fun StartRegistrationContent(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier
.fillMaxSize()
.imePadding()
.verticalScroll(rememberScrollState()),
) {
Spacer(modifier = Modifier.height(height = 12.dp))

View File

@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
@@ -227,7 +226,6 @@ private fun TwoFactorLoginScreenContent(
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier
.imePadding()
.verticalScroll(rememberScrollState()),
) {
if (state.authMethod != TwoFactorAuthMethod.YUBI_KEY) {

View File

@@ -2,8 +2,8 @@ package com.x8bit.bitwarden.ui.platform.components.dialog
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -86,7 +86,7 @@ fun BitwardenClientCertificateDialog(
autoFocus = true,
cardStyle = CardStyle.Top(dividerPadding = 0.dp),
textFieldTestTag = "AlertClientCertificateAliasInputField",
modifier = Modifier.imePadding(),
modifier = Modifier.fillMaxWidth(),
)
BitwardenPasswordField(
@@ -95,7 +95,7 @@ fun BitwardenClientCertificateDialog(
onValueChange = { password = it },
cardStyle = CardStyle.Bottom,
passwordFieldTestTag = "AlertClientCertificatePasswordInputField",
modifier = Modifier.imePadding(),
modifier = Modifier.fillMaxWidth(),
)
}
},

View File

@@ -2,8 +2,8 @@ package com.x8bit.bitwarden.ui.platform.components.dialog
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -80,7 +80,7 @@ fun BitwardenMasterPasswordDialog(
autoFocus = true,
passwordFieldTestTag = "AlertInputField",
cardStyle = CardStyle.Full,
modifier = Modifier.imePadding(),
modifier = Modifier.fillMaxWidth(),
)
}
},

View File

@@ -1,7 +1,6 @@
package com.x8bit.bitwarden.ui.platform.components.dialog
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.imePadding
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -68,9 +67,7 @@ fun BitwardenPinDialog(
autoFocus = true,
passwordFieldTestTag = "AlertInputField",
cardStyle = CardStyle.Full,
modifier = Modifier
.fillMaxWidth()
.imePadding(),
modifier = Modifier.fillMaxWidth(),
)
},
shape = BitwardenTheme.shapes.dialog,

View File

@@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.displayCutout
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.union
@@ -73,7 +74,8 @@ fun BitwardenScaffold(
Column(
modifier = Modifier
.padding(paddingValues = paddingValues)
.consumeWindowInsets(paddingValues = paddingValues),
.consumeWindowInsets(paddingValues = paddingValues)
.imePadding(),
) {
utilityBar()
val internalPullToRefreshState = rememberPullToRefreshState()

View File

@@ -3,7 +3,6 @@ package com.x8bit.bitwarden.ui.platform.feature.search
import android.widget.Toast
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.TopAppBarDefaults
@@ -149,28 +148,24 @@ fun SearchScreen(
searchHandlers = searchHandlers,
searchType = state.searchType,
modifier = Modifier
.fillMaxSize()
.imePadding(),
.fillMaxSize(),
)
is SearchState.ViewState.Empty -> SearchEmptyContent(
viewState = viewState,
modifier = Modifier
.fillMaxSize()
.imePadding(),
.fillMaxSize(),
)
is SearchState.ViewState.Error -> BitwardenErrorContent(
message = viewState.message(),
modifier = Modifier
.fillMaxSize()
.imePadding(),
.fillMaxSize(),
)
SearchState.ViewState.Loading -> BitwardenLoadingContent(
modifier = Modifier
.fillMaxSize()
.imePadding(),
.fillMaxSize(),
)
}
}

View File

@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
@@ -113,7 +112,6 @@ fun DeleteAccountScreen(
) {
Column(
modifier = Modifier
.imePadding()
.fillMaxSize()
.verticalScroll(rememberScrollState()),
) {

View File

@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -193,7 +192,6 @@ private fun ExportVaultScreenContent(
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier
.imePadding()
.verticalScroll(rememberScrollState()),
) {
Spacer(modifier = Modifier.height(height = 12.dp))

View File

@@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
@@ -386,8 +385,7 @@ private fun CoachMarkScope<ExploreGeneratorCoachMark>.ScrollContent(
LazyColumn(
state = lazyListState,
modifier = modifier
.fillMaxHeight()
.imePadding(),
.fillMaxHeight(),
) {
item {
Spacer(modifier = Modifier.height(12.dp))

View File

@@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
@@ -123,8 +122,7 @@ fun PasswordHistoryScreen(
PasswordHistoryContent(
state = viewState,
modifier = Modifier
.fillMaxSize()
.imePadding(),
.fillMaxSize(),
onPasswordCopyClick = { password ->
viewModel.trySendAction(
PasswordHistoryAction.PasswordCopyClick(password),

View File

@@ -5,7 +5,6 @@ import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.scaleIn
import androidx.compose.animation.scaleOut
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.imePadding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState
@@ -171,7 +170,6 @@ fun SendScreen(
pullToRefreshState = pullToRefreshState,
) {
val modifier = Modifier
.imePadding()
.fillMaxSize()
when (val viewState = state.viewState) {
is SendState.ViewState.Content -> SendContent(

View File

@@ -4,7 +4,6 @@ import android.widget.Toast
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.imePadding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState
@@ -218,7 +217,6 @@ fun AddSendScreen(
},
) {
val modifier = Modifier
.imePadding()
.fillMaxSize()
when (val viewState = state.viewState) {

View File

@@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
@@ -418,7 +417,6 @@ fun VaultAddEditScreen(
onCoachMarkDismissed = scrollBackToTop,
shouldShowLearnAboutLoginsCard = state.shouldShowLearnAboutNewLogins,
modifier = Modifier
.imePadding()
.fillMaxSize(),
)

View File

@@ -5,7 +5,6 @@ import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.scaleIn
import androidx.compose.animation.scaleOut
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.TopAppBarDefaults
@@ -262,7 +261,6 @@ fun VaultItemScreen(
VaultItemContent(
viewState = state.viewState,
modifier = Modifier
.imePadding()
.fillMaxSize(),
vaultCommonItemTypeHandlers = remember(viewModel) {
VaultCommonItemTypeHandlers.create(viewModel = viewModel)

View File

@@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -142,7 +141,6 @@ fun ManualCodeEntryScreen(
) {
Column(
modifier = Modifier
.imePadding()
.verticalScroll(state = rememberScrollState())
.fillMaxSize(),
) {

View File

@@ -2,7 +2,6 @@ package com.x8bit.bitwarden.ui.vault.feature.movetoorganization
import android.widget.Toast
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.imePadding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState
@@ -119,7 +118,6 @@ private fun VaultMoveToOrganizationScaffold(
},
) {
val modifier = Modifier
.imePadding()
.fillMaxSize()
when (state.viewState) {
is VaultMoveToOrganizationState.ViewState.Content -> {

View File

@@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
@@ -141,7 +140,6 @@ fun EditItemScreen(
is EditItemState.ViewState.Content -> {
EditItemContent(
modifier = Modifier
.imePadding()
.padding(innerPadding),
viewState = viewState,
onIssuerNameTextChange = remember(viewModel) {

View File

@@ -3,7 +3,6 @@ package com.bitwarden.authenticator.ui.authenticator.feature.search
import android.widget.Toast
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.TopAppBarDefaults
@@ -82,7 +81,6 @@ fun ItemSearchScreen(
) {
val innerModifier = Modifier
.fillMaxSize()
.imePadding()
when (val viewState = state.viewState) {
is ItemSearchState.ViewState.Content -> {

View File

@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -179,7 +178,6 @@ private fun ExportScreenContent(
) {
Column(
modifier = modifier
.imePadding()
.verticalScroll(rememberScrollState()),
) {
val resources = LocalContext.current.resources

View File

@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -160,7 +159,6 @@ private fun ImportScreenContent(
) {
Column(
modifier = modifier
.imePadding()
.verticalScroll(rememberScrollState()),
) {
val resources = LocalContext.current.resources