Ensure that all the ModalBottomSheet can scroll.

This commit is contained in:
Benoit Marty 2026-04-27 10:23:56 +02:00
parent bf57223d05
commit 09ff3294d5
21 changed files with 88 additions and 22 deletions

View file

@ -95,7 +95,8 @@ internal fun SelectParentSpaceOptions(
sheetState.hide(coroutineScope) {
displaySelectSpaceBottomSheet = false
}
}
},
scrollable = false,
) {
SelectParentSpaceBottomSheet(
spaces = spaces,

View file

@ -11,6 +11,8 @@ package io.element.android.features.home.impl.roomlist
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
@ -43,6 +45,7 @@ fun RoomListContextMenu(
) {
ModalBottomSheet(
onDismissRequest = { eventSink(RoomListEvent.HideContextMenu) },
scrollable = false,
) {
RoomListModalBottomSheetContent(
contextMenu = contextMenu,
@ -91,7 +94,9 @@ private fun RoomListModalBottomSheetContent(
onReportRoomClick: () -> Unit,
) {
Column(
modifier = Modifier.fillMaxWidth()
modifier = Modifier
.fillMaxWidth()
.verticalScroll(rememberScrollState())
) {
ListItem(
headlineContent = {

View file

@ -13,6 +13,8 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@ -45,6 +47,7 @@ fun RoomListDeclineInviteMenu(
) {
ModalBottomSheet(
onDismissRequest = { eventSink(RoomListEvent.HideDeclineInviteMenu) },
scrollable = false,
) {
RoomListDeclineInviteMenuContent(
roomName = menu.roomSummary.name?.toSafeLength(
@ -81,7 +84,8 @@ private fun RoomListDeclineInviteMenuContent(
Column(
modifier = Modifier
.fillMaxWidth()
.padding(all = 16.dp),
.padding(all = 16.dp)
.verticalScroll(rememberScrollState()),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Text(

View file

@ -81,7 +81,8 @@ fun SpaceFiltersView(
if (state is SpaceFiltersState.Selecting) {
state.eventSink(SpaceFiltersEvent.Selecting.Cancel)
}
}
},
scrollable = false,
) {
Box(
modifier = Modifier

View file

@ -262,6 +262,7 @@ private fun InvitePeopleConfirmModal(
ModalBottomSheet(
onDismissRequest = onDismiss,
dragHandle = null,
scrollable = false,
) {
IconTitleSubtitleMolecule(
title = simplePluralStringResource(

View file

@ -156,6 +156,7 @@ fun ActionListView(
sheetState = sheetState,
onDismissRequest = ::onDismiss,
modifier = modifier,
scrollable = false,
) {
ActionListViewContent(
state = state,

View file

@ -75,6 +75,7 @@ fun ResolveVerifiedUserSendFailureView(
.navigationBarsPadding(),
sheetState = sheetState,
onDismissRequest = ::dismiss,
scrollable = true,
) {
IconTitleSubtitleMolecule(
modifier = Modifier.padding(24.dp),

View file

@ -13,6 +13,8 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
@ -74,7 +76,8 @@ internal fun AttachmentsBottomSheet(
sheetState = rememberModalBottomSheetState(
skipPartiallyExpanded = true
),
onDismissRequest = { isVisible = false }
onDismissRequest = { isVisible = false },
scrollable = false,
) {
AttachmentSourcePickerMenu(
state = state,
@ -97,6 +100,7 @@ private fun AttachmentSourcePickerMenu(
modifier = Modifier
.navigationBarsPadding()
.imePadding()
.verticalScroll(rememberScrollState())
) {
ListItem(
modifier = Modifier.clickable { state.eventSink(MessageComposerEvent.PickAttachmentSource.PhotoFromCamera) },

View file

@ -50,7 +50,8 @@ fun CustomReactionBottomSheet(
ModalBottomSheet(
onDismissRequest = ::onDismiss,
sheetState = sheetState,
modifier = modifier
modifier = modifier,
scrollable = false,
) {
val presenter = remember {
EmojiPickerPresenter(

View file

@ -90,7 +90,8 @@ fun ReactionSummaryView(
if (state.target != null) {
ModalBottomSheet(
onDismissRequest = ::onDismiss,
modifier = modifier
modifier = modifier,
scrollable = false,
) {
ReactionSummaryViewContent(summary = state.target)
}

View file

@ -57,7 +57,8 @@ internal fun ReadReceiptBottomSheet(
sheetState.hide()
state.eventSink(ReadReceiptBottomSheetEvent.Dismiss)
}
}
},
scrollable = false,
) {
ReadReceiptBottomSheetContent(
state = state,

View file

@ -153,6 +153,7 @@ private fun ChangeOwnRoleBottomSheet(
.navigationBarsPadding(),
sheetState = sheetState,
onDismissRequest = ::dismiss,
scrollable = true,
) {
Text(
modifier = Modifier.padding(14.dp),

View file

@ -17,6 +17,8 @@ import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
@ -224,9 +226,12 @@ private fun RoomMemberActionsBottomSheet(
onDismiss()
}
},
scrollable = false,
) {
Column(
modifier = Modifier.padding(vertical = 16.dp)
modifier = Modifier
.padding(vertical = 16.dp)
.verticalScroll(rememberScrollState())
) {
Avatar(
avatarData = user.getAvatarData(size = AvatarSize.RoomListManageUser),

View file

@ -13,8 +13,10 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
@ -52,11 +54,13 @@ fun JoinRoomByAddressView(
onDismissRequest = {
state.eventSink(JoinRoomByAddressEvent.Dismiss)
},
scrollable = false,
) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(all = 16.dp),
.padding(all = 16.dp)
.verticalScroll(rememberScrollState()),
horizontalAlignment = Alignment.CenterHorizontally,
) {
RoomAddressField(