diff --git a/app/src/main/java/org/blackcandy/android/compose/login/LoginAuthenticationForm.kt b/app/src/main/java/org/blackcandy/android/compose/login/LoginAuthenticationForm.kt index 446b921..2c5b938 100644 --- a/app/src/main/java/org/blackcandy/android/compose/login/LoginAuthenticationForm.kt +++ b/app/src/main/java/org/blackcandy/android/compose/login/LoginAuthenticationForm.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Button import androidx.compose.material3.OutlinedTextField @@ -11,8 +12,11 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusDirection +import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.tooling.preview.Preview @@ -35,26 +39,47 @@ fun LoginAuthenticationForm( ), modifier = modifier, ) { + val submitEnabled = email.isNotEmpty() && password.isNotEmpty() + val focusManager = LocalFocusManager.current + OutlinedTextField( value = email, label = { Text(text = stringResource(R.string.email)) }, - keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email), + keyboardOptions = + KeyboardOptions( + keyboardType = KeyboardType.Email, + imeAction = ImeAction.Next, + ), + keyboardActions = + KeyboardActions( + onNext = { focusManager.moveFocus(FocusDirection.Down) }, + ), onValueChange = onEmailChanged, modifier = Modifier.fillMaxWidth(), + singleLine = true, ) OutlinedTextField( value = password, label = { Text(text = stringResource(R.string.password)) }, keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + keyboardActions = + KeyboardActions( + onDone = { + if (submitEnabled) { + onLoginButtonClicked() + } + }, + ), visualTransformation = PasswordVisualTransformation(), onValueChange = onPasswordChanged, modifier = Modifier.fillMaxWidth(), + singleLine = true, ) Button( modifier = Modifier.fillMaxWidth(), - enabled = email.isNotEmpty() && password.isNotEmpty(), + enabled = submitEnabled, onClick = { onLoginButtonClicked() }, ) { Text(text = stringResource(R.string.login)) diff --git a/app/src/main/java/org/blackcandy/android/compose/login/LoginConnectionForm.kt b/app/src/main/java/org/blackcandy/android/compose/login/LoginConnectionForm.kt index 23880a4..5f98d69 100644 --- a/app/src/main/java/org/blackcandy/android/compose/login/LoginConnectionForm.kt +++ b/app/src/main/java/org/blackcandy/android/compose/login/LoginConnectionForm.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Button import androidx.compose.material3.OutlinedTextField @@ -48,7 +49,16 @@ fun LoginConnectionForm( value = serverAddress, label = { Text(text = stringResource(R.string.server_address)) }, keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Uri), + keyboardActions = + KeyboardActions( + onDone = { + if (serverAddress.isNotEmpty()) { + onConnectButtonClicked() + } + }, + ), onValueChange = onServerAddressChanged, + singleLine = true, modifier = Modifier.fillMaxWidth(), )