Added enter support for input dialogs

This commit is contained in:
Abdelilah El Aissaoui 2021-11-27 07:16:26 +01:00
parent 619083f829
commit fc0fc8c448
4 changed files with 68 additions and 6 deletions

View File

@ -5,13 +5,18 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material.* import androidx.compose.material.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusOrder import androidx.compose.ui.focus.focusOrder
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onPreviewKeyEvent
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
@OptIn(ExperimentalComposeUiApi::class)
@Composable @Composable
fun NewBranchDialog( fun NewBranchDialog(
onReject: () -> Unit, onReject: () -> Unit,
@ -32,7 +37,15 @@ fun NewBranchDialog(
.focusOrder(branchFieldFocusRequester) { .focusOrder(branchFieldFocusRequester) {
this.next = buttonFieldFocusRequester this.next = buttonFieldFocusRequester
} }
.width(300.dp), .width(300.dp)
.onPreviewKeyEvent {
if(it.key == Key.Enter) {
onAccept(branchField)
true
} else {
false
}
},
value = branchField, value = branchField,
singleLine = true, singleLine = true,
label = { Text("New branch name", fontSize = 14.sp) }, label = { Text("New branch name", fontSize = 14.sp) },

View File

@ -5,13 +5,18 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material.* import androidx.compose.material.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusOrder import androidx.compose.ui.focus.focusOrder
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onPreviewKeyEvent
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
@OptIn(ExperimentalComposeUiApi::class)
@Composable @Composable
fun NewTagDialog( fun NewTagDialog(
onReject: () -> Unit, onReject: () -> Unit,
@ -32,7 +37,15 @@ fun NewTagDialog(
.focusOrder(tagFieldFocusRequester) { .focusOrder(tagFieldFocusRequester) {
this.next = buttonFieldFocusRequester this.next = buttonFieldFocusRequester
} }
.width(300.dp), .width(300.dp)
.onPreviewKeyEvent {
if(it.key == Key.Enter) {
onAccept(tagField)
true
} else {
false
}
},
value = tagField, value = tagField,
singleLine = true, singleLine = true,
label = { Text("New tag name", fontSize = 14.sp) }, label = { Text("New tag name", fontSize = 14.sp) },

View File

@ -5,14 +5,19 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material.* import androidx.compose.material.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusOrder import androidx.compose.ui.focus.focusOrder
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onPreviewKeyEvent
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
@OptIn(ExperimentalComposeUiApi::class)
@Composable @Composable
fun PasswordDialog( fun PasswordDialog(
onReject: () -> Unit, onReject: () -> Unit,
@ -39,7 +44,15 @@ fun PasswordDialog(
.focusOrder(passwordFieldFocusRequester) { .focusOrder(passwordFieldFocusRequester) {
this.next = buttonFieldFocusRequester this.next = buttonFieldFocusRequester
} }
.width(300.dp), .width(300.dp)
.onPreviewKeyEvent {
if(it.key == Key.Enter) {
onAccept(passwordField)
true
} else {
false
}
},
value = passwordField, value = passwordField,
singleLine = true, singleLine = true,
label = { Text("Password", fontSize = 14.sp) }, label = { Text("Password", fontSize = 14.sp) },

View File

@ -5,14 +5,19 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material.* import androidx.compose.material.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusOrder import androidx.compose.ui.focus.focusOrder
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onPreviewKeyEvent
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
@OptIn(ExperimentalComposeUiApi::class)
@Composable @Composable
fun UserPasswordDialog( fun UserPasswordDialog(
onReject: () -> Unit, onReject: () -> Unit,
@ -23,7 +28,9 @@ fun UserPasswordDialog(
val userFieldFocusRequester = remember { FocusRequester() } val userFieldFocusRequester = remember { FocusRequester() }
val passwordFieldFocusRequester = remember { FocusRequester() } val passwordFieldFocusRequester = remember { FocusRequester() }
val buttonFieldFocusRequester = remember { FocusRequester() } val buttonFieldFocusRequester = remember { FocusRequester() }
val acceptDialog = {
onAccept(userField, passwordField)
}
Column( Column(
modifier = Modifier modifier = Modifier
.background(MaterialTheme.colors.background), .background(MaterialTheme.colors.background),
@ -42,7 +49,15 @@ fun UserPasswordDialog(
.focusOrder(userFieldFocusRequester) { .focusOrder(userFieldFocusRequester) {
this.next = passwordFieldFocusRequester this.next = passwordFieldFocusRequester
} }
.width(300.dp), .width(300.dp)
.onPreviewKeyEvent {
if(it.key == Key.Enter) {
acceptDialog()
true
} else {
false
}
},
value = userField, value = userField,
singleLine = true, singleLine = true,
label = { Text("User", fontSize = 14.sp) }, label = { Text("User", fontSize = 14.sp) },
@ -57,7 +72,15 @@ fun UserPasswordDialog(
this.previous = userFieldFocusRequester this.previous = userFieldFocusRequester
this.next = buttonFieldFocusRequester this.next = buttonFieldFocusRequester
} }
.width(300.dp), .width(300.dp)
.onPreviewKeyEvent {
if(it.key == Key.Enter) {
acceptDialog()
true
} else {
false
}
},
value = passwordField, value = passwordField,
singleLine = true, singleLine = true,
label = { Text("Password", fontSize = 14.sp) }, label = { Text("Password", fontSize = 14.sp) },