diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/NumberPicker.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/NumberPicker.kt index 3d36a8f..9060a25 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/NumberPicker.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/NumberPicker.kt @@ -3,6 +3,7 @@ package com.pixelized.rplexicon.ui.composable import android.content.res.Configuration.UI_MODE_NIGHT_NO import android.content.res.Configuration.UI_MODE_NIGHT_YES import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.height @@ -15,15 +16,16 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.util.lerp import com.pixelized.rplexicon.ui.theme.LexiconTheme +import kotlinx.coroutines.launch import kotlin.math.absoluteValue @OptIn(ExperimentalFoundationApi::class) @@ -35,6 +37,7 @@ fun NumberPicker( from: Int = 0, pager: PagerState, ) { + val scope = rememberCoroutineScope() VerticalPager( modifier = Modifier .height(height = itemSize * itemAmount) @@ -44,7 +47,9 @@ fun NumberPicker( pageSize = PageSize.Fixed(itemSize), ) { index -> Box( - modifier = Modifier.size(size = itemSize), + modifier = Modifier + .clickable { scope.launch { pager.animateScrollToPage(page = index) } } + .size(size = itemSize), contentAlignment = Alignment.Center, ) { Text( @@ -76,7 +81,7 @@ private fun NumberPickerPreview() { LexiconTheme { Surface { NumberPicker( - pager = rememberPagerState(initialPage = 20) { 99 } + pager = rememberPagerState(initialPage = 20) { 99 }, ) } } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleCounterEditDialog.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleCounterEditDialog.kt index 27ce036..df9fb36 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleCounterEditDialog.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleCounterEditDialog.kt @@ -18,6 +18,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.State import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -44,6 +45,7 @@ fun HandleCounterEditDialog( onConfirm: (String, Int) -> Unit, ) { dialog.value?.let { + val scope = rememberCoroutineScope() val pager = rememberPagerState(initialPage = it.value) { it.max + 1 } Dialog( properties = remember { DialogProperties(usePlatformDefaultWidth = false) }, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleHitPointEditDialog.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleHitPointEditDialog.kt index 7252208..8b64bdc 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleHitPointEditDialog.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleHitPointEditDialog.kt @@ -22,6 +22,7 @@ import androidx.compose.runtime.Stable import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -51,6 +52,7 @@ fun HandleHitPointEditDialog( onConfirm: (hp: Int, extra: Int) -> Unit, ) { dialog.value?.let { + val scope = rememberCoroutineScope() val hpPager = rememberPagerState(initialPage = it.value) { it.max + 1 } val extraPager = rememberPagerState(initialPage = it.extra) { 99 } Dialog(