Ensure all dialogs have the same preview format.

A combined ElementThemedPreview with PreviewGroup.Dialogs for Showkase and a regular PreviewsDayNight for code coverage
This commit is contained in:
Benoit Marty 2024-02-09 17:08:18 +01:00 committed by Benoit Marty
parent 7f5a63bf79
commit f3a0ce87a1
7 changed files with 118 additions and 15 deletions

View file

@ -35,8 +35,10 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.DialogPreview
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
@ -141,8 +143,14 @@ private fun ProgressDialogContent(
@Preview(group = PreviewGroup.Dialogs) @Preview(group = PreviewGroup.Dialogs)
@Composable @Composable
internal fun ProgressDialogPreview() = ElementThemedPreview { internal fun ProgressDialogContentPreview() = ElementThemedPreview {
DialogPreview { DialogPreview {
ProgressDialogContent(text = "test dialog content", isCancellable = true) ProgressDialogContent(text = "test dialog content", isCancellable = true)
} }
} }
@PreviewsDayNight
@Composable
internal fun ProgressDialogPreview() = ElementPreview {
ProgressDialog(text = "test dialog content", isCancellable = true)
}

View file

@ -22,8 +22,10 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.DialogPreview
import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@ -87,7 +89,7 @@ private fun ConfirmationDialogContent(
@Preview(group = PreviewGroup.Dialogs) @Preview(group = PreviewGroup.Dialogs)
@Composable @Composable
internal fun ConfirmationDialogPreview() = internal fun ConfirmationDialogContentPreview() =
ElementThemedPreview(showBackground = false) { ElementThemedPreview(showBackground = false) {
DialogPreview { DialogPreview {
ConfirmationDialogContent( ConfirmationDialogContent(
@ -102,3 +104,17 @@ internal fun ConfirmationDialogPreview() =
) )
} }
} }
@PreviewsDayNight
@Composable
internal fun ConfirmationDialogPreview() = ElementPreview {
ConfirmationDialog(
content = "Content",
title = "Title",
submitText = "OK",
cancelText = "Cancel",
thirdButtonText = "Disable",
onSubmitClicked = {},
onDismiss = {}
)
}

View file

@ -22,8 +22,10 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.DialogPreview
import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@ -69,7 +71,7 @@ object ErrorDialogDefaults {
@Preview(group = PreviewGroup.Dialogs) @Preview(group = PreviewGroup.Dialogs)
@Composable @Composable
internal fun ErrorDialogPreview() { internal fun ErrorDialogContentPreview() {
ElementThemedPreview(showBackground = false) { ElementThemedPreview(showBackground = false) {
DialogPreview { DialogPreview {
ErrorDialogContent( ErrorDialogContent(
@ -79,3 +81,12 @@ internal fun ErrorDialogPreview() {
} }
} }
} }
@PreviewsDayNight
@Composable
internal fun ErrorDialogPreview() = ElementPreview {
ErrorDialog(
content = "Content",
onDismiss = {},
)
}

View file

@ -24,10 +24,11 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.airbnb.android.showkase.annotation.ShowkaseComposable
import io.element.android.libraries.designsystem.components.list.TextFieldListItem import io.element.android.libraries.designsystem.components.list.TextFieldListItem
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.DialogPreview
@ -100,11 +101,10 @@ private fun ListDialogContent(
} }
} }
@PreviewsDayNight @Preview(group = PreviewGroup.Dialogs)
@ShowkaseComposable(group = PreviewGroup.Dialogs)
@Composable @Composable
internal fun ListDialogContentPreview() { internal fun ListDialogContentPreview() {
ElementPreview(showBackground = false) { ElementThemedPreview(showBackground = false) {
DialogPreview { DialogPreview {
ListDialogContent( ListDialogContent(
listItems = { listItems = {
@ -124,3 +124,23 @@ internal fun ListDialogContentPreview() {
} }
} }
} }
@PreviewsDayNight
@Composable
internal fun ListDialogPreview() = ElementPreview {
ListDialog(
listItems = {
item {
TextFieldListItem(placeholder = "Text input", text = "", onTextChanged = {})
}
item {
TextFieldListItem(placeholder = "Another text input", text = "", onTextChanged = {})
}
},
title = "Dialog title",
onDismissRequest = {},
onSubmit = {},
cancelText = "Cancel",
submitText = "Save",
)
}

View file

@ -26,10 +26,11 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.toMutableStateList import androidx.compose.runtime.toMutableStateList
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.airbnb.android.showkase.annotation.ShowkaseComposable
import io.element.android.libraries.designsystem.components.list.CheckboxListItem import io.element.android.libraries.designsystem.components.list.CheckboxListItem
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.DialogPreview
@ -124,11 +125,10 @@ private fun MultipleSelectionDialogContent(
} }
} }
@PreviewsDayNight @Preview(group = PreviewGroup.Dialogs)
@ShowkaseComposable(group = PreviewGroup.Dialogs)
@Composable @Composable
internal fun MultipleSelectionDialogContentPreview() { internal fun MultipleSelectionDialogContentPreview() {
ElementPreview(showBackground = false) { ElementThemedPreview(showBackground = false) {
DialogPreview { DialogPreview {
val options = persistentListOf( val options = persistentListOf(
ListOption("Option 1", "Supporting line text lorem ipsum dolor sit amet, consectetur."), ListOption("Option 1", "Supporting line text lorem ipsum dolor sit amet, consectetur."),
@ -147,3 +147,22 @@ internal fun MultipleSelectionDialogContentPreview() {
} }
} }
} }
@PreviewsDayNight
@Composable
internal fun MultipleSelectionDialogPreview() = ElementPreview {
val options = persistentListOf(
ListOption("Option 1", "Supporting line text lorem ipsum dolor sit amet, consectetur."),
ListOption("Option 2"),
ListOption("Option 3"),
)
MultipleSelectionDialog(
title = "Dialog title",
options = options,
onConfirmClicked = {},
onDismissRequest = {},
confirmButtonTitle = "Save",
dismissButtonTitle = "Cancel",
initialSelection = persistentListOf(0),
)
}

View file

@ -22,8 +22,10 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.DialogPreview
import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@ -78,7 +80,7 @@ object RetryDialogDefaults {
@Preview(group = PreviewGroup.Dialogs) @Preview(group = PreviewGroup.Dialogs)
@Composable @Composable
internal fun RetryDialogPreview() { internal fun RetryDialogContentPreview() {
ElementThemedPreview(showBackground = false) { ElementThemedPreview(showBackground = false) {
DialogPreview { DialogPreview {
RetryDialogContent( RetryDialogContent(
@ -89,3 +91,13 @@ internal fun RetryDialogPreview() {
} }
} }
} }
@PreviewsDayNight
@Composable
internal fun RetryDialogPreview() = ElementPreview {
RetryDialog(
content = "Content",
onRetry = {},
onDismiss = {},
)
}

View file

@ -24,8 +24,8 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.airbnb.android.showkase.annotation.ShowkaseComposable
import io.element.android.libraries.designsystem.components.list.RadioButtonListItem import io.element.android.libraries.designsystem.components.list.RadioButtonListItem
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -105,8 +105,7 @@ private fun SingleSelectionDialogContent(
} }
} }
@PreviewsDayNight @Preview(group = PreviewGroup.Dialogs)
@ShowkaseComposable(group = PreviewGroup.Dialogs)
@Composable @Composable
internal fun SingleSelectionDialogContentPreview() { internal fun SingleSelectionDialogContentPreview() {
ElementPreview(showBackground = false) { ElementPreview(showBackground = false) {
@ -127,3 +126,21 @@ internal fun SingleSelectionDialogContentPreview() {
} }
} }
} }
@PreviewsDayNight
@Composable
internal fun SingleSelectionDialogPreview() = ElementPreview {
val options = persistentListOf(
ListOption("Option 1"),
ListOption("Option 2"),
ListOption("Option 3"),
)
SingleSelectionDialog(
title = "Dialog title",
options = options,
onOptionSelected = {},
onDismissRequest = {},
dismissButtonTitle = "Cancel",
initialSelection = 0
)
}