package com.hyperling.expensetracker import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextGeometricTransform import androidx.compose.ui.unit.dp @Composable fun ExpenseDialogAdd( state: ExpenseState, onEvent: (ExpenseEvent) -> Unit, modifier: Modifier = Modifier ) { AlertDialog( onDismissRequest = { onEvent(ExpenseEvent.HideDialog) }, title = { Text(text = "Add Expense") }, text = { Column ( verticalArrangement = Arrangement.spacedBy(8.dp) ){ TextField( value = state.name, onValueChange = { onEvent(ExpenseEvent.SetName(it)) }, placeholder = { Text(text = "Name") }, keyboardOptions = KeyboardOptions(capitalization = KeyboardCapitalization.Words) ) // TBD / TODO: Had to make this a String, can we turn it back to a Double somehow? TextField( value = state.cost, onValueChange = { onEvent(ExpenseEvent.SetCost(it)) }, placeholder = { Text(text = "Cost") }, keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Decimal) ) // TBD / TODO: Unsure what to do here yet so that an Enum is possible. // A simple Picker type does not seems to exist? Why? Whyyy??? TextField( value = state.rate, onValueChange = { onEvent(ExpenseEvent.SetRate(it)) }, placeholder = { Text(text = "Rate") }, ) // */ } }, confirmButton = { Box( modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center ) { Button(onClick = { onEvent(ExpenseEvent.SaveExpense) }) { Text(text = "Save") } } } ) }