Skip to content

Commit

Permalink
feat: Add keypad type (#86)
Browse files Browse the repository at this point in the history
  • Loading branch information
behzodhalil committed Dec 25, 2023
1 parent b248f6e commit c98268c
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Clear
import androidx.compose.material.icons.filled.Fingerprint
import androidx.compose.material.icons.outlined.ArrowBackIos
import androidx.compose.material.icons.outlined.ArrowForwardIos
import androidx.compose.runtime.Composable
Expand Down Expand Up @@ -138,3 +140,43 @@ fun LKNumberButton(
)
}
}

@Composable
fun FingerPrintButton(
modifier: Modifier = Modifier,
onClick: () -> Unit,
) {
Box(
modifier = modifier.size(65.dp).clickable { onClick.invoke() },
contentAlignment = Alignment.Center,
) {
Icon(
imageVector = Icons.Filled.Fingerprint,
tint = Color.White,
contentDescription = "Finger print button"
)
}
}

@Composable
fun ClearButton(
modifier: Modifier = Modifier,
onClearClick: () -> Unit
) {
Box(
modifier = modifier.size(65.dp).clickable { onClearClick.invoke() },
contentAlignment = Alignment.Center,
) {
Icon(
imageVector = Icons.Filled.Clear,
tint = Color.White,
contentDescription = "Clear button"
)
}
}

enum class KeypadType {
Number,
FingerPrint,
Clear;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,64 +7,49 @@ import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.dp
import io.spherelabs.designsystem.button.ClearButton
import io.spherelabs.designsystem.button.FingerPrintButton
import io.spherelabs.designsystem.button.KeypadType
import io.spherelabs.designsystem.button.LKNumberButton

@Composable
fun LKGridLayout(
items: List<String>,
items: List<Pair<KeypadType, String>>,
fontFamily: FontFamily,
modifier: Modifier = Modifier,
onValueChanged: (String) -> Unit,
onValueChanged: (Pair<KeypadType, String>) -> Unit,
) {
LazyRow(
horizontalArrangement = Arrangement.SpaceEvenly,
modifier = Modifier.fillMaxWidth().padding(top = 18.dp),
content = {
itemsIndexed(items) { _, item ->
LKNumberButton(
value = item,
fontFamily = fontFamily,
) {
onValueChanged.invoke(item)
}
}
},
)
}

@Composable
fun CreateBoxes(
modifier: Modifier = Modifier,
content: @Composable () -> Unit,
) {
Layout(
modifier = modifier,
content = content,
) { measurables, constraints ->
val box1 = measurables[0]
val box2 = measurables[1]
val box3 = measurables[2]
LazyRow(
horizontalArrangement = Arrangement.SpaceEvenly,
modifier = Modifier.fillMaxWidth().padding(top = 18.dp),
content = {
itemsIndexed(items) { _, (keypadType, itemValue) ->
when (keypadType) {
KeypadType.Number -> {
LKNumberButton(
value = itemValue,
fontFamily = fontFamily,
) {
onValueChanged.invoke(keypadType to itemValue)
}
}

val looseConstraints =
constraints.copy(
minWidth = 0,
minHeight = 0,
)
KeypadType.FingerPrint -> {
FingerPrintButton {
onValueChanged.invoke(keypadType to itemValue)
}
}

val box1Placeable = box1.measure(looseConstraints)
val box2Placeable = box2.measure(looseConstraints)
val box3Placeable = box3.measure(looseConstraints)
KeypadType.Clear -> {
ClearButton {
onValueChanged.invoke(keypadType to itemValue)
}
}
}

layout(width = constraints.maxWidth, height = constraints.maxHeight) {
box1Placeable.placeRelative(constraints.maxWidth / 4, box2Placeable.height / 4)
box2Placeable.placeRelative(constraints.maxWidth / 4 + box1Placeable.width - 12, 0)
box3Placeable.placeRelative(
(constraints.maxWidth / 4) + (box2Placeable.width + box1Placeable.width) - 22,
box2Placeable.height / 4,
)
}
}
}
},
)
}

0 comments on commit c98268c

Please # to comment.