SimpleAlertDialogContent: enforce button submit instead of button cancel and improve API around dialogs.
This commit is contained in:
parent
5af7b47bd5
commit
70ea2beaf9
4 changed files with 38 additions and 39 deletions
|
|
@ -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 = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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(
|
|||
title = title,
|
||||
subtitle = subtitle,
|
||||
modifier = modifier,
|
||||
cancelText = dismissButtonTitle,
|
||||
onCancelClicked = onDismissRequest,
|
||||
submitText = dismissButtonTitle,
|
||||
onSubmitClicked = onDismissRequest,
|
||||
applyPaddingToContents = false,
|
||||
) {
|
||||
LazyColumn {
|
||||
|
|
|
|||
|
|
@ -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(
|
|||
|
||||
@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(
|
|||
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() {
|
|||
},
|
||||
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() {
|
|||
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() {
|
|||
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() {
|
|||
cancelText = "Cancel",
|
||||
submitText = "Delete",
|
||||
destructiveSubmit = true,
|
||||
onCancelClicked = {},
|
||||
onSubmitClicked = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue