diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt index fb5c511bf4..9b080f5403 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt @@ -32,17 +32,17 @@ import io.element.android.libraries.ui.strings.CommonStrings @Composable fun ErrorDialog( content: String, + onDismiss: () -> Unit, modifier: Modifier = Modifier, title: String = ErrorDialogDefaults.title, submitText: String = ErrorDialogDefaults.submitText, - onDismiss: () -> Unit = {}, ) { AlertDialog(modifier = modifier, onDismissRequest = onDismiss) { ErrorDialogContent( title = title, content = content, submitText = submitText, - onSubmitText = onDismiss, + onSubmitClicked = onDismiss, ) } } @@ -50,17 +50,17 @@ fun ErrorDialog( @Composable private fun ErrorDialogContent( content: String, + onSubmitClicked: () -> Unit, modifier: Modifier = Modifier, title: String = ErrorDialogDefaults.title, submitText: String = ErrorDialogDefaults.submitText, - onSubmitText: () -> Unit = {}, ) { SimpleAlertDialogContent( modifier = modifier, title = title, content = content, - cancelText = submitText, - onCancelClicked = onSubmitText, + submitText = submitText, + onSubmitClicked = onSubmitClicked, ) } @@ -76,6 +76,7 @@ internal fun ErrorDialogPreview() { DialogPreview { ErrorDialogContent( content = "Content", + onSubmitClicked = {}, ) } } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ListDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ListDialog.kt index 42cd70cbbd..5ad13d6a13 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ListDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ListDialog.kt @@ -38,8 +38,8 @@ import io.element.android.libraries.ui.strings.CommonStrings @OptIn(ExperimentalMaterial3Api::class) @Composable fun ListDialog( - onDismissRequest: () -> Unit, onSubmit: () -> Unit, + onDismissRequest: () -> Unit, modifier: Modifier = Modifier, title: String? = null, subtitle: String? = null, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt index db9e7faef2..82b88bc0a1 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt @@ -77,8 +77,8 @@ fun SingleSelectionDialog( private fun SingleSelectionDialogContent( options: ImmutableList, onOptionSelected: (Int) -> Unit, - onDismissRequest: () -> Unit, dismissButtonTitle: String, + onDismissRequest: () -> Unit, modifier: Modifier = Modifier, title: String? = null, initialSelection: Int? = null, @@ -88,8 +88,8 @@ private fun SingleSelectionDialogContent( title = title, subtitle = subtitle, modifier = modifier, - cancelText = dismissButtonTitle, - onCancelClicked = onDismissRequest, + submitText = dismissButtonTitle, + onSubmitClicked = onDismissRequest, applyPaddingToContents = false, ) { LazyColumn { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt index ad68f1a59b..c41e7b868d 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt @@ -53,51 +53,51 @@ import kotlin.math.max @Composable internal fun SimpleAlertDialogContent( content: String, - cancelText: String, - onCancelClicked: () -> Unit, + submitText: String, + onSubmitClicked: () -> Unit, modifier: Modifier = Modifier, title: String? = null, subtitle: @Composable (() -> Unit)? = null, - submitText: String? = null, destructiveSubmit: Boolean = false, - onSubmitClicked: () -> Unit = {}, + cancelText: String? = null, + onCancelClicked: () -> Unit = {}, thirdButtonText: String? = null, onThirdButtonClicked: () -> Unit = {}, applyPaddingToContents: Boolean = true, icon: @Composable (() -> Unit)? = null, ) { SimpleAlertDialogContent( + modifier = modifier, + icon = icon, + title = title, + subtitle = subtitle, content = { Text( text = content, style = ElementTheme.materialTypography.bodyMedium, ) }, - cancelText = cancelText, - onCancelClicked = onCancelClicked, - modifier = modifier, - title = title, - subtitle = subtitle, submitText = submitText, destructiveSubmit = destructiveSubmit, onSubmitClicked = onSubmitClicked, + cancelText = cancelText, + onCancelClicked = onCancelClicked, thirdButtonText = thirdButtonText, onThirdButtonClicked = onThirdButtonClicked, - icon = icon, applyPaddingToContents = applyPaddingToContents, ) } @Composable internal fun SimpleAlertDialogContent( - cancelText: String, - onCancelClicked: () -> Unit, + submitText: String, + onSubmitClicked: () -> Unit, modifier: Modifier = Modifier, title: String? = null, subtitle: @Composable (() -> Unit)? = null, - submitText: String? = null, destructiveSubmit: Boolean = false, - onSubmitClicked: () -> Unit = {}, + cancelText: String? = null, + onCancelClicked: () -> Unit = {}, thirdButtonText: String? = null, onThirdButtonClicked: () -> Unit = {}, applyPaddingToContents: Boolean = true, @@ -121,15 +121,13 @@ internal fun SimpleAlertDialogContent( onClick = onThirdButtonClicked, ) } - TextButton( - modifier = Modifier.testTag( - if (submitText == null) TestTags.dialogPositive else TestTags.dialogNegative - ), - text = cancelText, - size = ButtonSize.Medium, - onClick = onCancelClicked, - ) - if (submitText != null) { + if (cancelText != null) { + TextButton( + modifier = Modifier.testTag(TestTags.dialogNegative), + text = cancelText, + size = ButtonSize.Medium, + onClick = onCancelClicked, + ) Button( modifier = Modifier.testTag(TestTags.dialogPositive), text = submitText, @@ -138,6 +136,15 @@ internal fun SimpleAlertDialogContent( onClick = onSubmitClicked, destructive = destructiveSubmit, ) + } else { + TextButton( + modifier = Modifier.testTag(TestTags.dialogPositive), + text = submitText, + enabled = enabled, + size = ButtonSize.Medium, + onClick = onSubmitClicked, + destructive = destructiveSubmit, + ) } } }, @@ -438,8 +445,8 @@ internal fun DialogWithTitleIconAndOkButtonPreview() { }, title = "Dialog Title", content = "A dialog is a type of modal window that appears in front of app content to provide critical information, or prompt for a decision to be made. Learn more", - cancelText = "OK", - onCancelClicked = {}, + submitText = "OK", + onSubmitClicked = {}, ) } } @@ -454,8 +461,8 @@ internal fun DialogWithTitleAndOkButtonPreview() { SimpleAlertDialogContent( title = "Dialog Title", content = "A dialog is a type of modal window that appears in front of app content to provide critical information, or prompt for a decision to be made. Learn more", - cancelText = "OK", - onCancelClicked = {}, + submitText = "OK", + onSubmitClicked = {}, ) } } @@ -469,8 +476,8 @@ internal fun DialogWithOnlyMessageAndOkButtonPreview() { DialogPreview { SimpleAlertDialogContent( content = "A dialog is a type of modal window that appears in front of app content to provide critical information, or prompt for a decision to be made. Learn more", - cancelText = "OK", - onCancelClicked = {}, + submitText = "OK", + onSubmitClicked = {}, ) } } @@ -478,7 +485,6 @@ internal fun DialogWithOnlyMessageAndOkButtonPreview() { @Preview(group = PreviewGroup.Dialogs, name = "Dialog with destructive button") @Composable -@Suppress("MaxLineLength") internal fun DialogWithDestructiveButtonPreview() { ElementThemedPreview(showBackground = false) { DialogPreview { @@ -488,7 +494,24 @@ internal fun DialogWithDestructiveButtonPreview() { cancelText = "Cancel", submitText = "Delete", destructiveSubmit = true, - onCancelClicked = {}, + onSubmitClicked = {}, + ) + } + } +} + +@Preview(group = PreviewGroup.Dialogs, name = "Dialog with third button") +@Composable +internal fun DialogWithThirdButtonPreview() { + ElementThemedPreview(showBackground = false) { + DialogPreview { + SimpleAlertDialogContent( + title = "Dialog Title", + content = "A dialog with a third button", + cancelText = "Cancel", + submitText = "Delete", + thirdButtonText = "Other", + onSubmitClicked = {}, ) } } diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[l.designsystem.theme.components_null_Dialogs_Dialogwiththirdbutton_0_null,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[l.designsystem.theme.components_null_Dialogs_Dialogwiththirdbutton_0_null,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..1c4345d5ca --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[l.designsystem.theme.components_null_Dialogs_Dialogwiththirdbutton_0_null,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e465788d3307cc42d3f1c322d926e9088994c6b7a5cd338a74dd95a8dfe2977a +size 31190