Fix behaviour of Enter and Tab hardware keys in TextFields (#216)

* Fix behaviour of Enter and Tab hardware keys in TextFields

* Add changelog
This commit is contained in:
Jorge Martin Espinosa 2023-03-15 13:57:51 +01:00 committed by GitHub
parent 411109b8a9
commit cd09c15df4
3 changed files with 9 additions and 6 deletions

1
changelog.d/216.bugfix Normal file
View file

@ -0,0 +1 @@
Make sure `Modifier.onTabOrEnterKeyFocusNext` doesn't add line breaks or tabs to TextFields.

View file

@ -244,8 +244,8 @@ internal fun LoginForm(
readOnly = !interactionEnabled,
modifier = Modifier
.fillMaxWidth()
.testTag(TestTags.loginEmailUsername)
.onTabOrEnterKeyFocusNext(focusManager),
.onTabOrEnterKeyFocusNext(focusManager)
.testTag(TestTags.loginEmailUsername),
label = {
Text(text = stringResource(StringR.string.ex_login_username_hint))
},
@ -284,8 +284,8 @@ internal fun LoginForm(
readOnly = !interactionEnabled,
modifier = Modifier
.fillMaxWidth()
.testTag(TestTags.loginPassword)
.onTabOrEnterKeyFocusNext(focusManager),
.onTabOrEnterKeyFocusNext(focusManager)
.testTag(TestTags.loginPassword),
onValueChange = {
passwordFieldState = it
eventSink(LoginRootEvents.SetPassword(it))

View file

@ -99,8 +99,10 @@ fun OutlinedTextField(
@OptIn(ExperimentalComposeUiApi::class)
fun Modifier.onTabOrEnterKeyFocusNext(focusManager: FocusManager): Modifier = onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && (event.key == Key.Tab || event.key == Key.Enter)) {
focusManager.moveFocus(FocusDirection.Down)
if (event.key == Key.Tab || event.key == Key.Enter) {
if (event.type == KeyEventType.KeyUp) {
focusManager.moveFocus(FocusDirection.Down)
}
true
} else {
false