diff --git a/.idea/misc.xml b/.idea/misc.xml
index 6c70665..8d206dc 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -79,6 +79,8 @@
+
+
diff --git a/app/src/main/java/com/pixelized/biblib/ui/composable/screen/LoginScreenComposable.kt b/app/src/main/java/com/pixelized/biblib/ui/composable/screen/LoginScreenComposable.kt
index c87a365..4f84925 100644
--- a/app/src/main/java/com/pixelized/biblib/ui/composable/screen/LoginScreenComposable.kt
+++ b/app/src/main/java/com/pixelized/biblib/ui/composable/screen/LoginScreenComposable.kt
@@ -4,11 +4,12 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.text.KeyboardActions
+import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.*
import androidx.compose.material.ButtonDefaults.outlinedButtonColors
import androidx.compose.material.TextFieldDefaults.outlinedTextFieldColors
-import androidx.compose.material.TextFieldDefaults.textFieldColors
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.sharp.Visibility
import androidx.compose.material.icons.sharp.VisibilityOff
@@ -16,8 +17,12 @@ import androidx.compose.runtime.*
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.tooling.preview.Preview
@@ -63,17 +68,24 @@ fun LoginScreenComposable(
Spacer(modifier = Modifier.weight(1f))
+ val focusRequester = remember { FocusRequester() }
+ val localFocus = LocalFocusManager.current
LoginField(
viewModel = authenticationViewModel,
modifier = Modifier
.fillMaxWidth()
- .padding(bottom = 16.dp)
+ .padding(bottom = 16.dp),
+ keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
+ keyboardActions = KeyboardActions { focusRequester.requestFocus() }
)
PasswordField(
viewModel = authenticationViewModel,
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp)
+ .focusRequester(focusRequester),
+ keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
+ keyboardActions = KeyboardActions { localFocus.clearFocus() }
)
CredentialRemember(
viewModel = authenticationViewModel,
@@ -122,7 +134,12 @@ fun LoginScreenComposable(
}
@Composable
-private fun LoginField(viewModel: AuthenticationViewModel, modifier: Modifier = Modifier) {
+private fun LoginField(
+ viewModel: AuthenticationViewModel,
+ modifier: Modifier = Modifier,
+ keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
+ keyboardActions: KeyboardActions = KeyboardActions(),
+) {
val login: State = viewModel.login.observeAsState()
TextField(
modifier = modifier,
@@ -132,11 +149,18 @@ private fun LoginField(viewModel: AuthenticationViewModel, modifier: Modifier =
colors = outlinedTextFieldColors(),
maxLines = 1,
singleLine = true,
+ keyboardOptions = keyboardOptions,
+ keyboardActions = keyboardActions,
)
}
@Composable
-private fun PasswordField(viewModel: AuthenticationViewModel, modifier: Modifier = Modifier) {
+private fun PasswordField(
+ viewModel: AuthenticationViewModel,
+ modifier: Modifier = Modifier,
+ keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
+ keyboardActions: KeyboardActions = KeyboardActions(),
+) {
val password = viewModel.password.observeAsState()
var passwordVisibility by remember { mutableStateOf(false) }
TextField(
@@ -156,6 +180,8 @@ private fun PasswordField(viewModel: AuthenticationViewModel, modifier: Modifier
)
}
},
+ keyboardOptions = keyboardOptions,
+ keyboardActions = keyboardActions,
)
}