Request focus after adding an answer
This commit is contained in:
parent
1144cee572
commit
dfdd8e59f7
1 changed files with 12 additions and 6 deletions
|
|
@ -34,6 +34,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
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.focusRequester
|
import androidx.compose.ui.focus.focusRequester
|
||||||
|
|
@ -63,6 +64,8 @@ import io.element.android.libraries.designsystem.theme.components.TopAppBar
|
||||||
import io.element.android.libraries.matrix.api.poll.PollKind
|
import io.element.android.libraries.matrix.api.poll.PollKind
|
||||||
import io.element.android.libraries.theme.ElementTheme
|
import io.element.android.libraries.theme.ElementTheme
|
||||||
import io.element.android.libraries.ui.strings.CommonStrings
|
import io.element.android.libraries.ui.strings.CommonStrings
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -70,6 +73,8 @@ fun CreatePollView(
|
||||||
state: CreatePollState,
|
state: CreatePollState,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
|
val coroutineScope = rememberCoroutineScope()
|
||||||
|
|
||||||
val navBack = { state.eventSink(CreatePollEvents.ConfirmNavBack) }
|
val navBack = { state.eventSink(CreatePollEvents.ConfirmNavBack) }
|
||||||
BackHandler(onBack = navBack)
|
BackHandler(onBack = navBack)
|
||||||
if (state.showConfirmation) ConfirmationDialog(
|
if (state.showConfirmation) ConfirmationDialog(
|
||||||
|
|
@ -142,7 +147,6 @@ fun CreatePollView(
|
||||||
}
|
}
|
||||||
itemsIndexed(state.answers) { index, answer ->
|
itemsIndexed(state.answers) { index, answer ->
|
||||||
val isLastItem = index == state.answers.size - 1
|
val isLastItem = index == state.answers.size - 1
|
||||||
val hasAdditionalOptions = state.answers.size > 2
|
|
||||||
ListItem(
|
ListItem(
|
||||||
headlineContent = {
|
headlineContent = {
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
|
|
@ -170,10 +174,6 @@ fun CreatePollView(
|
||||||
},
|
},
|
||||||
style = if (answer.canDelete) ListItemStyle.Destructive else ListItemStyle.Default,
|
style = if (answer.canDelete) ListItemStyle.Destructive else ListItemStyle.Default,
|
||||||
)
|
)
|
||||||
LaunchedEffect(isLastItem, hasAdditionalOptions) {
|
|
||||||
lazyListState.animateScrollToItem(state.answers.size + 1)
|
|
||||||
if (isLastItem && hasAdditionalOptions) answerFocusRequester.requestFocus()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (state.canAddAnswer) {
|
if (state.canAddAnswer) {
|
||||||
item {
|
item {
|
||||||
|
|
@ -183,7 +183,13 @@ fun CreatePollView(
|
||||||
iconSource = IconSource.Vector(Icons.Default.Add),
|
iconSource = IconSource.Vector(Icons.Default.Add),
|
||||||
),
|
),
|
||||||
style = ListItemStyle.Primary,
|
style = ListItemStyle.Primary,
|
||||||
onClick = { state.eventSink(CreatePollEvents.AddAnswer) },
|
onClick = {
|
||||||
|
state.eventSink(CreatePollEvents.AddAnswer)
|
||||||
|
coroutineScope.launch(Dispatchers.Main) {
|
||||||
|
lazyListState.animateScrollToItem(state.answers.size + 1)
|
||||||
|
answerFocusRequester.requestFocus()
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue