Coverage Summary for Class: BpmInputFieldKt (com.vsevolodganin.clicktrack.ui.piece)
Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
BpmInputFieldKt |
0%
(0/2)
|
0%
(0/24)
|
0%
(0/21)
|
0%
(0/338)
|
BpmInputFieldKt$BpmInputField$1$1$1 |
0%
(0/3)
|
|
0%
(0/3)
|
0%
(0/13)
|
Total |
0%
(0/5)
|
0%
(0/24)
|
0%
(0/24)
|
0%
(0/351)
|
package com.vsevolodganin.clicktrack.ui.piece
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.input.OffsetMapping
import androidx.compose.ui.text.input.TransformedText
import com.vsevolodganin.clicktrack.generated.resources.MR
import com.vsevolodganin.clicktrack.model.BeatsPerMinute
import dev.icerock.moko.resources.compose.stringResource
@Composable
fun BpmInputField(
value: Int,
onValueChange: (Int) -> Unit,
modifier: Modifier = Modifier,
isError: Boolean = false,
showSign: Boolean = false,
allowedNumbersRange: IntRange = BeatsPerMinute.VALID_TEMPO_RANGE,
fallbackNumber: Int? = 1,
) {
val bpmSuffix = stringResource(MR.strings.bpm_input_suffix)
NumberInputField(
value = value,
onValueChange = onValueChange,
modifier = modifier,
isError = isError,
showSign = showSign,
allowedNumbersRange = allowedNumbersRange,
fallbackNumber = fallbackNumber,
visualTransformation = { inputText ->
TransformedText(
text = inputText + AnnotatedString(bpmSuffix),
offsetMapping = object : OffsetMapping {
override fun originalToTransformed(offset: Int): Int = offset
override fun transformedToOriginal(offset: Int): Int = offset.coerceIn(0..inputText.length)
},
)
},
)
}