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.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
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.unit.dp
import androidx.compose.ui.unit.sp
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun NewBranchDialog(
onReject: () -> Unit,
@ -32,7 +37,15 @@ fun NewBranchDialog(
.focusOrder(branchFieldFocusRequester) {
this.next = buttonFieldFocusRequester
}
.width(300.dp),
.width(300.dp)
.onPreviewKeyEvent {
if(it.key == Key.Enter) {
onAccept(branchField)
true
} else {
false
}
},
value = branchField,
singleLine = true,
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.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
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.unit.dp
import androidx.compose.ui.unit.sp
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun NewTagDialog(
onReject: () -> Unit,
@ -32,7 +37,15 @@ fun NewTagDialog(
.focusOrder(tagFieldFocusRequester) {
this.next = buttonFieldFocusRequester
}
.width(300.dp),
.width(300.dp)
.onPreviewKeyEvent {
if(it.key == Key.Enter) {
onAccept(tagField)
true
} else {
false
}
},
value = tagField,
singleLine = true,
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.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
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.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun PasswordDialog(
onReject: () -> Unit,
@ -39,7 +44,15 @@ fun PasswordDialog(
.focusOrder(passwordFieldFocusRequester) {
this.next = buttonFieldFocusRequester
}
.width(300.dp),
.width(300.dp)
.onPreviewKeyEvent {
if(it.key == Key.Enter) {
onAccept(passwordField)
true
} else {
false
}
},
value = passwordField,
singleLine = true,
label = { Text("Password", fontSize = 14.sp) },

View File

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