Browse Source

SimpleAlertDialogContent: enforce button submit instead of button cancel and improve API around dialogs.

pull/1726/head
Benoit Marty 11 months ago committed by Benoit Marty
parent
commit
70ea2beaf9
  1. 11
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialog.kt
  2. 2
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ListDialog.kt
  3. 6
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt
  4. 58
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt

11
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 @@ -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( @@ -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() { @@ -76,6 +76,7 @@ internal fun ErrorDialogPreview() {
DialogPreview {
ErrorDialogContent(
content = "Content",
onSubmitClicked = {},
)
}
}

2
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 @@ -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,

6
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt

@ -77,8 +77,8 @@ fun SingleSelectionDialog( @@ -77,8 +77,8 @@ fun SingleSelectionDialog(
private fun SingleSelectionDialogContent(
options: ImmutableList<ListOption>,
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( @@ -88,8 +88,8 @@ private fun SingleSelectionDialogContent(
title = title,
subtitle = subtitle,
modifier = modifier,
cancelText = dismissButtonTitle,
onCancelClicked = onDismissRequest,
submitText = dismissButtonTitle,
onSubmitClicked = onDismissRequest,
applyPaddingToContents = false,
) {
LazyColumn {

58
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt

@ -53,14 +53,14 @@ import kotlin.math.max @@ -53,14 +53,14 @@ 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,
@ -90,14 +90,14 @@ internal fun SimpleAlertDialogContent( @@ -90,14 +90,14 @@ internal fun SimpleAlertDialogContent(
@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,24 +121,22 @@ internal fun SimpleAlertDialogContent( @@ -121,24 +121,22 @@ 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) {
Button(
modifier = Modifier.testTag(TestTags.dialogPositive),
text = submitText,
enabled = enabled,
if (cancelText != null) {
TextButton(
modifier = Modifier.testTag(TestTags.dialogNegative),
text = cancelText,
size = ButtonSize.Medium,
onClick = onSubmitClicked,
destructive = destructiveSubmit,
onClick = onCancelClicked,
)
}
Button(
modifier = Modifier.testTag(TestTags.dialogPositive),
text = submitText,
enabled = enabled,
size = ButtonSize.Medium,
onClick = onSubmitClicked,
destructive = destructiveSubmit,
)
}
},
modifier = modifier,
@ -438,8 +436,8 @@ internal fun DialogWithTitleIconAndOkButtonPreview() { @@ -438,8 +436,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 +452,8 @@ internal fun DialogWithTitleAndOkButtonPreview() { @@ -454,8 +452,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 +467,8 @@ internal fun DialogWithOnlyMessageAndOkButtonPreview() { @@ -469,8 +467,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 = {},
)
}
}
@ -488,7 +486,7 @@ internal fun DialogWithDestructiveButtonPreview() { @@ -488,7 +486,7 @@ internal fun DialogWithDestructiveButtonPreview() {
cancelText = "Cancel",
submitText = "Delete",
destructiveSubmit = true,
onCancelClicked = {},
onSubmitClicked = {},
)
}
}

Loading…
Cancel
Save