Fix broken preview of BottomSheet in Android Studio.

This commit is contained in:
Benoit Marty
2026-06-19 14:04:46 +02:00
parent e98cbdfce1
commit 123037a612
11 changed files with 29 additions and 16 deletions
@@ -216,7 +216,7 @@ private fun RoomListModalBottomSheetContent(
@Composable @Composable
internal fun RoomListContextMenuPreview( internal fun RoomListContextMenuPreview(
@PreviewParameter(RoomListStateContextMenuShownProvider::class) contextMenu: RoomListState.ContextMenu.Shown @PreviewParameter(RoomListStateContextMenuShownProvider::class) contextMenu: RoomListState.ContextMenu.Shown
) = ElementPreview { ) = ElementPreview(fillMaxSize = true) {
RoomListContextMenu( RoomListContextMenu(
contextMenu = contextMenu, contextMenu = contextMenu,
canReportRoom = true, canReportRoom = true,
@@ -188,6 +188,6 @@ private fun SpaceFilterItem(
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun SpaceFiltersViewPreview(@PreviewParameter(SpaceFiltersStateProvider::class) state: SpaceFiltersState) = ElementPreview { internal fun SpaceFiltersViewPreview(@PreviewParameter(SpaceFiltersStateProvider::class) state: SpaceFiltersState) = ElementPreview(fillMaxSize = true) {
SpaceFiltersView(state = state) SpaceFiltersView(state = state)
} }
@@ -153,10 +153,11 @@ private fun AttachmentSourcePickerMenu(
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun AttachmentSourcePickerMenuPreview() = ElementPreview { internal fun AttachmentSourcePickerMenuPreview() = ElementPreview(fillMaxSize = true) {
AttachmentSourcePickerMenu( AttachmentsBottomSheet(
state = aMessageComposerState( state = aMessageComposerState(
canShareLocation = true, canShareLocation = true,
showAttachmentSourcePicker = true,
), ),
onSendLocationClick = {}, onSendLocationClick = {},
onCreatePollClick = {}, onCreatePollClick = {},
@@ -9,7 +9,6 @@
package io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet package io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
@@ -118,9 +117,9 @@ private fun ReadReceiptBottomSheetContent(
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun ReadReceiptBottomSheetPreview(@PreviewParameter(ReadReceiptBottomSheetStateProvider::class) state: ReadReceiptBottomSheetState) = ElementPreview { internal fun ReadReceiptBottomSheetPreview(@PreviewParameter(ReadReceiptBottomSheetStateProvider::class) state: ReadReceiptBottomSheetState) {
Column { ElementPreview(fillMaxSize = true) {
ReadReceiptBottomSheetContent( ReadReceiptBottomSheet(
state = state, state = state,
onUserDataClick = {}, onUserDataClick = {},
) )
@@ -65,7 +65,7 @@ fun SimpleModalBottomSheet(
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun SimpleModalBottomSheetPreview() = ElementPreview { internal fun SimpleModalBottomSheetPreview() = ElementPreview(fillMaxSize = true) {
SimpleModalBottomSheet(title = "A title", onDismiss = {}) { SimpleModalBottomSheet(title = "A title", onDismiss = {}) {
Text( Text(
text = LoremIpsum(20).values.first(), text = LoremIpsum(20).values.first(),
@@ -10,8 +10,11 @@ package io.element.android.libraries.designsystem.preview
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import coil3.annotation.ExperimentalCoilApi import coil3.annotation.ExperimentalCoilApi
@@ -29,6 +32,7 @@ import io.element.android.libraries.designsystem.utils.CommonDrawables
fun ElementPreview( fun ElementPreview(
theme: Theme = if (isSystemInDarkTheme()) Theme.Dark else Theme.Light, theme: Theme = if (isSystemInDarkTheme()) Theme.Dark else Theme.Light,
showBackground: Boolean = true, showBackground: Boolean = true,
fillMaxSize: Boolean = false,
@DrawableRes @DrawableRes
drawableFallbackForImages: Int = CommonDrawables.sample_background, drawableFallbackForImages: Int = CommonDrawables.sample_background,
content: @Composable () -> Unit content: @Composable () -> Unit
@@ -42,9 +46,18 @@ fun ElementPreview(
ElementTheme(theme = theme) { ElementTheme(theme = theme) {
if (showBackground) { if (showBackground) {
// If we have a proper contentColor applied we need a Surface instead of a Box // If we have a proper contentColor applied we need a Surface instead of a Box
Surface(content = content) Surface(
modifier = if (fillMaxSize) Modifier.fillMaxSize() else Modifier,
content = content,
)
} else { } else {
content() if (fillMaxSize) {
Box(modifier = Modifier.fillMaxSize()) {
content()
}
} else {
content()
}
} }
} }
} }
@@ -115,7 +115,7 @@ private fun AvatarActionBottomSheetContent(
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun AvatarActionBottomSheetPreview() = ElementPreview { internal fun AvatarActionBottomSheetPreview() = ElementPreview(fillMaxSize = true) {
AvatarActionBottomSheet( AvatarActionBottomSheet(
actions = persistentListOf(AvatarAction.TakePhoto, AvatarAction.ChoosePhoto, AvatarAction.Remove), actions = persistentListOf(AvatarAction.TakePhoto, AvatarAction.ChoosePhoto, AvatarAction.Remove),
isVisible = true, isVisible = true,
@@ -160,7 +160,7 @@ internal fun CreateDmConfirmationBottomSheetPreview(
@PreviewParameter( @PreviewParameter(
CreateDmConfirmationBottomSheetStateProvider::class CreateDmConfirmationBottomSheetStateProvider::class
) state: CreateDmConfirmationBottomSheetState ) state: CreateDmConfirmationBottomSheetState
) = ElementPreview { ) = ElementPreview(fillMaxSize = true) {
CreateDmConfirmationBottomSheet( CreateDmConfirmationBottomSheet(
matrixUser = state.matrixUser, matrixUser = state.matrixUser,
isUserIdentityUnknown = state.isUserIdentityUnknown, isUserIdentityUnknown = state.isUserIdentityUnknown,
@@ -169,7 +169,7 @@ private fun MediaRow(
@Composable @Composable
internal fun MediaDeleteConfirmationBottomSheetPreview( internal fun MediaDeleteConfirmationBottomSheetPreview(
@PreviewParameter(provider = MediaBottomSheetStateDeleteConfirmationProvider::class) state: MediaBottomSheetState.DeleteConfirmation, @PreviewParameter(provider = MediaBottomSheetStateDeleteConfirmationProvider::class) state: MediaBottomSheetState.DeleteConfirmation,
) = ElementPreview { ) = ElementPreview(fillMaxSize = true) {
MediaDeleteConfirmationBottomSheet( MediaDeleteConfirmationBottomSheet(
state = state, state = state,
onDelete = {}, onDelete = {},
@@ -267,7 +267,7 @@ private fun SectionText(
@Composable @Composable
internal fun MediaDetailsBottomSheetPreview( internal fun MediaDetailsBottomSheetPreview(
@PreviewParameter(MediaBottomSheetStateDetailsProvider::class) state: MediaBottomSheetState.Details, @PreviewParameter(MediaBottomSheetStateDetailsProvider::class) state: MediaBottomSheetState.Details,
) = ElementPreview { ) = ElementPreview(fillMaxSize = true) {
MediaDetailsBottomSheet( MediaDetailsBottomSheet(
state = state, state = state,
onViewInTimeline = {}, onViewInTimeline = {},
@@ -71,7 +71,7 @@ fun CaptionWarningBottomSheet(
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun CaptionWarningBottomSheetPreview() = ElementPreview { internal fun CaptionWarningBottomSheetPreview() = ElementPreview(fillMaxSize = true) {
CaptionWarningBottomSheet( CaptionWarningBottomSheet(
onDismiss = {}, onDismiss = {},
) )