Merge pull request #7007 from element-hq/renovate/androidx.compose.material3-material3-1.x

Update dependency androidx.compose.material3:material3 to v1.5.0-alpha21
This commit is contained in:
Benoit Marty
2026-07-06 18:31:45 +02:00
committed by GitHub
74 changed files with 228 additions and 160 deletions
@@ -11,7 +11,8 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
@@ -85,9 +86,9 @@ internal fun SelectParentSpaceOptions(
) )
if (displaySelectSpaceBottomSheet) { if (displaySelectSpaceBottomSheet) {
val sheetState = rememberModalBottomSheetState( val sheetState = rememberBottomSheetState(
skipPartiallyExpanded = true, initialValue = SheetValue.Hidden,
confirmValueChange = { true }, enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
) )
ModalBottomSheet( ModalBottomSheet(
sheetState = sheetState, sheetState = sheetState,
@@ -200,7 +200,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,
@@ -24,7 +24,7 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.text.input.TextFieldState import androidx.compose.foundation.text.input.TextFieldState
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SheetValue import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -57,8 +57,9 @@ fun SpaceFiltersView(
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
val isSelecting by rememberUpdatedState(state is SpaceFiltersState.Selecting) val isSelecting by rememberUpdatedState(state is SpaceFiltersState.Selecting)
val sheetState = rememberModalBottomSheetState( val sheetState = rememberBottomSheetState(
skipPartiallyExpanded = true, initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
confirmValueChange = { sheetValueTarget -> confirmValueChange = { sheetValueTarget ->
// This ensures the hide animation is not cancelled // This ensures the hide animation is not cancelled
when (sheetValueTarget) { when (sheetValueTarget) {
@@ -187,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)
} }
@@ -30,7 +30,7 @@ import androidx.compose.material3.SheetValue
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.rememberBottomSheetScaffoldState import androidx.compose.material3.rememberBottomSheetScaffoldState
import androidx.compose.material3.rememberStandardBottomSheetState import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.derivedStateOf
@@ -86,7 +86,9 @@ fun MapBottomSheetScaffold(
customMapStyleUrl: AsyncData<String?>, customMapStyleUrl: AsyncData<String?>,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
scaffoldState: BottomSheetScaffoldState = rememberBottomSheetScaffoldState( scaffoldState: BottomSheetScaffoldState = rememberBottomSheetScaffoldState(
bottomSheetState = rememberStandardBottomSheetState(initialValue = SheetValue.PartiallyExpanded) bottomSheetState = rememberBottomSheetState(
initialValue = SheetValue.PartiallyExpanded,
)
), ),
cameraState: CameraState = rememberCameraState(), cameraState: CameraState = rememberCameraState(),
mapOptions: MapOptions = MapDefaults.options, mapOptions: MapOptions = MapDefaults.options,
@@ -20,7 +20,7 @@ import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SheetValue import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetScaffoldState import androidx.compose.material3.rememberBottomSheetScaffoldState
import androidx.compose.material3.rememberStandardBottomSheetState import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -105,7 +105,9 @@ fun ShareLocationView(
} }
val scaffoldState = rememberBottomSheetScaffoldState( val scaffoldState = rememberBottomSheetScaffoldState(
bottomSheetState = rememberStandardBottomSheetState(initialValue = SheetValue.Expanded) bottomSheetState = rememberBottomSheetState(
initialValue = SheetValue.Expanded,
)
) )
val cameraState = rememberCameraState(firstPosition = MapDefaults.defaultCameraPosition) val cameraState = rememberCameraState(firstPosition = MapDefaults.defaultCameraPosition)
@@ -21,7 +21,7 @@ import androidx.compose.material3.BottomSheetDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SheetValue import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetScaffoldState import androidx.compose.material3.rememberBottomSheetScaffoldState
import androidx.compose.material3.rememberStandardBottomSheetState import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -92,7 +92,9 @@ fun ShowLocationView(
} }
val scaffoldState = rememberBottomSheetScaffoldState( val scaffoldState = rememberBottomSheetScaffoldState(
bottomSheetState = rememberStandardBottomSheetState(SheetValue.Expanded) bottomSheetState = rememberBottomSheetState(
initialValue = SheetValue.Expanded,
)
) )
LaunchedEffect(state.isSheetDraggable) { LaunchedEffect(state.isSheetDraggable) {
if (!state.isSheetDraggable) { if (!state.isSheetDraggable) {
@@ -31,7 +31,8 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ListItemDefaults import androidx.compose.material3.ListItemDefaults
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.material3.ripple import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.ReadOnlyComposable
@@ -111,7 +112,9 @@ fun ActionListView(
onVerifiedUserSendFailureClick: (TimelineItem.Event) -> Unit, onVerifiedUserSendFailureClick: (TimelineItem.Event) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val sheetState = rememberModalBottomSheetState() val sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
)
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
val targetItem = (state.target as? ActionListState.Target.Success)?.event val targetItem = (state.target as? ActionListState.Target.Success)?.event
@@ -409,7 +412,9 @@ private fun EmojiReactionsRow(
} }
Box( Box(
modifier = Modifier.padding(end = 10.dp).requiredSize(48.dp), modifier = Modifier
.padding(end = 10.dp)
.requiredSize(48.dp),
contentAlignment = Alignment.CenterEnd, contentAlignment = Alignment.CenterEnd,
) { ) {
Icon( Icon(
@@ -14,7 +14,8 @@ import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -43,7 +44,10 @@ fun ResolveVerifiedUserSendFailureView(
state: ResolveVerifiedUserSendFailureState, state: ResolveVerifiedUserSendFailureState,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) val sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
)
var showSheet by remember { mutableStateOf(false) } var showSheet by remember { mutableStateOf(false) }
fun dismiss() { fun dismiss() {
@@ -16,7 +16,8 @@ import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -72,8 +73,9 @@ internal fun AttachmentsBottomSheet(
if (isVisible) { if (isVisible) {
ModalBottomSheet( ModalBottomSheet(
modifier = modifier, modifier = modifier,
sheetState = rememberModalBottomSheetState( sheetState = rememberBottomSheetState(
skipPartiallyExpanded = true initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
), ),
onDismissRequest = { isVisible = false }, onDismissRequest = { isVisible = false },
scrollable = false, scrollable = false,
@@ -151,10 +153,11 @@ private fun AttachmentSourcePickerMenu(
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun AttachmentSourcePickerMenuPreview() = ElementPreview { internal fun AttachmentsBottomSheetPreview() = ElementPreview(fillMaxSize = true) {
AttachmentSourcePickerMenu( AttachmentsBottomSheet(
state = aMessageComposerState( state = aMessageComposerState(
canShareLocation = true, canShareLocation = true,
showAttachmentSourcePicker = true,
), ),
onSendLocationClick = {}, onSendLocationClick = {},
onCreatePollClick = {}, onCreatePollClick = {},
@@ -10,7 +10,8 @@ package io.element.android.features.messages.impl.timeline.components.customreac
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
@@ -30,7 +31,9 @@ fun CustomReactionBottomSheet(
onSelectEmoji: (EventOrTransactionId, Emoji) -> Unit, onSelectEmoji: (EventOrTransactionId, Emoji) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val sheetState = rememberModalBottomSheetState() val sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
)
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
val target = state.target as? CustomReactionState.Target.Success val target = state.target as? CustomReactionState.Target.Success
@@ -9,13 +9,13 @@
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
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -44,7 +44,9 @@ internal fun ReadReceiptBottomSheet(
) { ) {
val isVisible = state.selectedEvent != null val isVisible = state.selectedEvent != null
val sheetState = rememberModalBottomSheetState() val sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
)
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
if (isVisible) { if (isVisible) {
ModalBottomSheet( ModalBottomSheet(
@@ -115,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 = {},
) )
@@ -12,7 +12,8 @@ import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -141,7 +142,10 @@ private fun ChangeOwnRoleBottomSheet(
eventSink: (RolesAndPermissionsEvents) -> Unit, eventSink: (RolesAndPermissionsEvents) -> Unit,
) { ) {
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) val sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
)
fun dismiss() { fun dismiss() {
sheetState.hide(coroutineScope) { sheetState.hide(coroutineScope) {
eventSink(RolesAndPermissionsEvents.CancelPendingAction) eventSink(RolesAndPermissionsEvents.CancelPendingAction)
@@ -22,7 +22,8 @@ import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
@@ -221,7 +222,10 @@ private fun RoomMemberActionsBottomSheet(
onDismiss: () -> Unit, onDismiss: () -> Unit,
) { ) {
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
val bottomSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) val bottomSheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
)
ModalBottomSheet( ModalBottomSheet(
modifier = Modifier.systemBarsPadding(), modifier = Modifier.systemBarsPadding(),
sheetState = bottomSheetState, sheetState = bottomSheetState,
@@ -18,7 +18,8 @@ import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@@ -47,7 +48,10 @@ fun JoinRoomByAddressView(
state: JoinRoomByAddressState, state: JoinRoomByAddressState,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) val sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
)
ModalBottomSheet( ModalBottomSheet(
modifier = modifier, modifier = modifier,
sheetState = sheetState, sheetState = sheetState,
+1 -1
View File
@@ -126,7 +126,7 @@ androidx_preference = "androidx.preference:preference:1.2.1"
androidx_webkit = "androidx.webkit:webkit:1.16.0" androidx_webkit = "androidx.webkit:webkit:1.16.0"
androidx_compose_bom = { module = "androidx.compose:compose-bom", version.ref = "compose_bom" } androidx_compose_bom = { module = "androidx.compose:compose-bom", version.ref = "compose_bom" }
androidx_compose_material3 = { module = "androidx.compose.material3:material3", version = '1.5.0-alpha15' } androidx_compose_material3 = { module = "androidx.compose.material3:material3", version = '1.5.0-alpha21' }
androidx_compose_material3_windowsizeclass = { module = "androidx.compose.material3:material3-window-size-class" } androidx_compose_material3_windowsizeclass = { module = "androidx.compose.material3:material3-window-size-class" }
androidx_compose_material3_adaptive = "androidx.compose.material3:material3-adaptive-android:1.0.0-alpha06" androidx_compose_material3_adaptive = "androidx.compose.material3:material3-adaptive-android:1.0.0-alpha06"
androidx_compose_ui = { module = "androidx.compose.ui:ui" } androidx_compose_ui = { module = "androidx.compose.ui:ui" }
@@ -17,7 +17,8 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
@@ -39,7 +40,10 @@ fun SimpleModalBottomSheet(
ModalBottomSheet( ModalBottomSheet(
onDismissRequest = onDismiss, onDismissRequest = onDismiss,
modifier = modifier, modifier = modifier,
sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
),
scrollable = false, scrollable = false,
) { ) {
Column( Column(
@@ -61,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,13 @@ 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.runtime.movableContentOf
import androidx.compose.runtime.remember
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 +34,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
@@ -40,11 +46,21 @@ fun ElementPreview(
} }
) { ) {
ElementTheme(theme = theme) { ElementTheme(theme = theme) {
val movableContent = remember { movableContentOf { content() } }
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 = movableContent,
)
} else { } else {
content() if (fillMaxSize) {
Box(modifier = Modifier.fillMaxSize()) {
movableContent()
}
} else {
movableContent()
}
} }
} }
} }
@@ -11,12 +11,10 @@ package io.element.android.libraries.designsystem.preview
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SheetState import androidx.compose.material3.SheetState
import androidx.compose.material3.SheetValue import androidx.compose.material3.SheetValue
import androidx.compose.runtime.Composable
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable
fun sheetStateForPreview() = SheetState( fun sheetStateForPreview() = SheetState(
skipPartiallyExpanded = true, enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
positionalThreshold = { 0.5f }, positionalThreshold = { 0.5f },
velocityThreshold = { 400f }, velocityThreshold = { 400f },
initialValue = SheetValue.Expanded, initialValue = SheetValue.Expanded,
@@ -21,8 +21,9 @@ import androidx.compose.material3.BottomSheetDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SheetState import androidx.compose.material3.SheetState
import androidx.compose.material3.SheetValue
import androidx.compose.material3.contentColorFor import androidx.compose.material3.contentColorFor
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.movableContentOf import androidx.compose.runtime.movableContentOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@@ -57,7 +58,9 @@ fun ModalBottomSheet(
onDismissRequest: () -> Unit, onDismissRequest: () -> Unit,
scrollable: Boolean, scrollable: Boolean,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
sheetState: SheetState = rememberModalBottomSheetState(), sheetState: SheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
),
shape: Shape = BottomSheetDefaults.ExpandedShape, shape: Shape = BottomSheetDefaults.ExpandedShape,
containerColor: Color = MaterialTheme.colorScheme.surface, containerColor: Color = MaterialTheme.colorScheme.surface,
contentColor: Color = contentColorFor(containerColor), contentColor: Color = contentColorFor(containerColor),
@@ -18,7 +18,8 @@ import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -47,8 +48,9 @@ fun AvatarActionBottomSheet(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
val sheetState = rememberModalBottomSheetState( val sheetState = rememberBottomSheetState(
skipPartiallyExpanded = true initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
) )
BackHandler(enabled = isVisible) { BackHandler(enabled = isVisible) {
@@ -113,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,
@@ -17,8 +17,9 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SheetValue
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -75,7 +76,10 @@ fun CreateDmConfirmationBottomSheet(
ModalBottomSheet( ModalBottomSheet(
modifier = modifier, modifier = modifier,
onDismissRequest = onDismiss, onDismissRequest = onDismiss,
sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
),
scrollable = false, scrollable = false,
) { ) {
Column( Column(
@@ -156,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,
@@ -20,8 +20,9 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SheetValue
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -59,7 +60,10 @@ fun MediaDeleteConfirmationBottomSheet(
ModalBottomSheet( ModalBottomSheet(
modifier = modifier, modifier = modifier,
onDismissRequest = onDismiss, onDismissRequest = onDismiss,
sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), sheetState = rememberBottomSheetState(
initialValue = SheetValue.Hidden,
enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded),
),
scrollable = false, scrollable = false,
) { ) {
Column( Column(
@@ -165,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 = {},
) )
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ecda20f80c78991c5835e3e32fb18db8e08ba0ff8d8308c8a3c06ab46687006f
size 27083
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9ac6266d2081724960015f80dd7a489a6746bd4bd705755b92d91500e1f7bb2f
size 25443