Skip to content

Commit

Permalink
Fix ModalBottomSheetPopup parameters (#826)
Browse files Browse the repository at this point in the history
## Proposed Changes

- Position `ModalBottomSheet` not relative to parent
- Exclude default `Popup`'s insets

Before | After
--- | ---
<img
src="https://github.com/JetBrains/compose-multiplatform-core/assets/1836384/fe7b4b1b-8c12-49d7-9f4c-9c72af6d05cd"
height="600"> | <img
src="https://github.com/JetBrains/compose-multiplatform-core/assets/1836384/176a56ec-9469-4603-b0e8-153fa6c9318a"
height="600">

## Testing

Test: run mpp on iOS or try to use `ModalBottomSheetPopup` on device
with safe-area

## Issues Fixed

Fixes JetBrains/compose-multiplatform#3701,
JetBrains/compose-multiplatform#3703
  • Loading branch information
MatkovIvan committed Sep 21, 2023
1 parent cb19bdf commit 955281b
Showing 1 changed file with 21 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,38 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.runtime.Composable
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.IntRect
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.PopupPositionProvider
import androidx.compose.ui.window.PopupProperties


@OptIn(ExperimentalComposeUiApi::class)
@Composable
internal actual fun ModalBottomSheetPopup(
onDismissRequest: () -> Unit,
windowInsets: WindowInsets,
content: @Composable () -> Unit,
) {
Popup(
onDismissRequest = onDismissRequest
popupPositionProvider = object : PopupPositionProvider {
override fun calculatePosition(
anchorBounds: IntRect,
windowSize: IntSize,
layoutDirection: LayoutDirection,
popupContentSize: IntSize
) = IntOffset.Zero
},
onDismissRequest = onDismissRequest,
properties = PopupProperties(
focusable = true,
usePlatformInsets = false
)
) {
Box(Modifier.windowInsetsPadding(windowInsets)) {
content()
Expand Down

0 comments on commit 955281b

Please sign in to comment.