@@ -6,34 +6,71 @@ import androidx.compose.material3.Icon
66import androidx.compose.material3.Text
77import androidx.compose.material3.TextButton
88import androidx.compose.runtime.Composable
9+ import androidx.compose.runtime.mutableStateOf
10+ import androidx.compose.runtime.saveable.rememberSaveable
911import androidx.compose.ui.Modifier
1012import androidx.compose.ui.graphics.vector.ImageVector
1113import androidx.compose.ui.res.stringResource
12- import androidx.compose.ui.text.style.TextAlign
14+ import com.espressodev.gptmap.core.designsystem.GmIcons
1315import com.espressodev.gptmap.core.designsystem.R.string as AppText
1416
1517@Composable
16- fun AppAlertDialog (
17- icon : ImageVector ,
18+ fun GmAlertDialog (
1819 @StringRes title : Int ,
19- @StringRes text : Int ,
2020 onConfirm : () -> Unit ,
2121 onDismiss : () -> Unit ,
22+ text : @Composable () -> Unit ,
2223 modifier : Modifier = Modifier ,
24+ icon : ImageVector ? = null,
2325) {
26+ val dialogIcon: @Composable (() -> Unit )? = when (icon) {
27+ null -> null
28+ else -> {
29+ { Icon (imageVector = icon, contentDescription = null ) }
30+ }
31+ }
2432 AlertDialog (
25- icon = { Icon (icon, null ) } ,
33+ icon = dialogIcon ,
2634 title = { Text (stringResource(title)) },
27- text = { Text (stringResource( text), textAlign = TextAlign . Center ) } ,
35+ text = text,
2836 onDismissRequest = onDismiss,
2937 confirmButton = {
30- TextButton (onClick = {
31- onConfirm()
32- }) { Text (stringResource(AppText .confirm)) }
38+ TextButton (onClick = onConfirm) { Text (stringResource(AppText .confirm)) }
3339 },
3440 dismissButton = {
3541 TextButton (onClick = onDismiss) { Text (stringResource(AppText .dismiss)) }
3642 },
3743 modifier = modifier
3844 )
3945}
46+
47+ @Composable
48+ fun GmEditAlertDialog (
49+ @StringRes title : Int ,
50+ @StringRes textFieldLabel : Int ,
51+ onConfirm : (String ) -> Unit ,
52+ onDismiss : () -> Unit
53+ ) {
54+ val (text, onValueChange) = rememberSaveable { mutableStateOf(" " ) }
55+ val (isError, setIsError) = rememberSaveable { mutableStateOf(value = false ) }
56+ GmAlertDialog (
57+ title = title,
58+ onConfirm = {
59+ if (text.isNotBlank()) {
60+ onConfirm(text)
61+ } else {
62+ setIsError(true )
63+ }
64+ },
65+ onDismiss = onDismiss,
66+ text = {
67+ DefaultTextField (
68+ value = text,
69+ label = textFieldLabel,
70+ leadingIcon = GmIcons .EditDefault ,
71+ onValueChange = onValueChange,
72+ isError = isError
73+ )
74+ }
75+ )
76+ }
0 commit comments