|
|
@ -37,7 +37,7 @@ import androidx.compose.ui.Alignment |
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.draw.clip |
|
|
|
import androidx.compose.ui.draw.clip |
|
|
|
import androidx.compose.ui.unit.Dp |
|
|
|
import androidx.compose.ui.unit.Dp |
|
|
|
import androidx.compose.ui.unit.coerceAtMost |
|
|
|
import androidx.compose.ui.unit.coerceIn |
|
|
|
import androidx.compose.ui.unit.dp |
|
|
|
import androidx.compose.ui.unit.dp |
|
|
|
import androidx.compose.ui.unit.sp |
|
|
|
import androidx.compose.ui.unit.sp |
|
|
|
import androidx.compose.ui.unit.times |
|
|
|
import androidx.compose.ui.unit.times |
|
|
@ -50,6 +50,7 @@ import kotlinx.collections.immutable.ImmutableList |
|
|
|
import kotlinx.collections.immutable.persistentListOf |
|
|
|
import kotlinx.collections.immutable.persistentListOf |
|
|
|
|
|
|
|
|
|
|
|
private val spaceBetweenPinKey = 16.dp |
|
|
|
private val spaceBetweenPinKey = 16.dp |
|
|
|
|
|
|
|
private val minSizePinKey = 16.dp |
|
|
|
private val maxSizePinKey = 80.dp |
|
|
|
private val maxSizePinKey = 80.dp |
|
|
|
|
|
|
|
|
|
|
|
@Composable |
|
|
|
@Composable |
|
|
@ -61,8 +62,8 @@ fun PinKeypad( |
|
|
|
verticalAlignment: Alignment.Vertical = Alignment.Top, |
|
|
|
verticalAlignment: Alignment.Vertical = Alignment.Top, |
|
|
|
horizontalAlignment: Alignment.Horizontal = Alignment.Start, |
|
|
|
horizontalAlignment: Alignment.Horizontal = Alignment.Start, |
|
|
|
) { |
|
|
|
) { |
|
|
|
val pinKeyMaxWidth = ((maxWidth - 2 * spaceBetweenPinKey) / 3).coerceAtMost(maxSizePinKey) |
|
|
|
val pinKeyMaxWidth = ((maxWidth - 2 * spaceBetweenPinKey) / 3).coerceIn(minSizePinKey, maxSizePinKey) |
|
|
|
val pinKeyMaxHeight = ((maxHeight - 3 * spaceBetweenPinKey) / 4).coerceAtMost(maxSizePinKey) |
|
|
|
val pinKeyMaxHeight = ((maxHeight - 3 * spaceBetweenPinKey) / 4).coerceIn(minSizePinKey, maxSizePinKey) |
|
|
|
val pinKeySize = if (pinKeyMaxWidth < pinKeyMaxHeight) pinKeyMaxWidth else pinKeyMaxHeight |
|
|
|
val pinKeySize = if (pinKeyMaxWidth < pinKeyMaxHeight) pinKeyMaxWidth else pinKeyMaxHeight |
|
|
|
|
|
|
|
|
|
|
|
val horizontalArrangement = spacedBy(spaceBetweenPinKey, Alignment.CenterHorizontally) |
|
|
|
val horizontalArrangement = spacedBy(spaceBetweenPinKey, Alignment.CenterHorizontally) |
|
|
@ -129,7 +130,7 @@ private fun PinKeypadRow( |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
is PinKeypadModel.Number -> { |
|
|
|
is PinKeypadModel.Number -> { |
|
|
|
PinKeyBadDigitButton( |
|
|
|
PinKeypadDigitButton( |
|
|
|
size = pinKeySize, |
|
|
|
size = pinKeySize, |
|
|
|
modifier = commonModifier, |
|
|
|
modifier = commonModifier, |
|
|
|
digit = model.number.toString(), |
|
|
|
digit = model.number.toString(), |
|
|
@ -158,7 +159,7 @@ private fun PinKeypadButton( |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Composable |
|
|
|
@Composable |
|
|
|
private fun PinKeyBadDigitButton( |
|
|
|
private fun PinKeypadDigitButton( |
|
|
|
digit: String, |
|
|
|
digit: String, |
|
|
|
size: Dp, |
|
|
|
size: Dp, |
|
|
|
onClick: (String) -> Unit, |
|
|
|
onClick: (String) -> Unit, |
|
|
|