Gitnuro/src/main/kotlin/app/ui/dialogs/MaterialDialog.kt
2022-02-17 19:24:36 +01:00

55 lines
1.8 KiB
Kotlin

package app.ui.dialogs
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.*
import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.PopupPositionProvider
import app.theme.dialogBackgroundColor
@Composable
fun MaterialDialog(
alignment: Alignment = Alignment.Center,
paddingHorizontal: Dp = 16.dp,
paddingVertical: Dp = 16.dp,
content: @Composable () -> Unit
) {
Popup(
focusable = true,
popupPositionProvider = object : PopupPositionProvider {
override fun calculatePosition(
anchorBounds: IntRect,
windowSize: IntSize,
layoutDirection: LayoutDirection,
popupContentSize: IntSize
): IntOffset = IntOffset.Zero
}
) {
Box(
modifier = Modifier
.fillMaxSize()
.background(dialogBackgroundColor),
contentAlignment = alignment,
) {
Box(
modifier = Modifier
.clip(RoundedCornerShape(15.dp))
.background(MaterialTheme.colors.background)
.padding(
horizontal = paddingHorizontal,
vertical = paddingVertical,
)
) {
content()
}
}
}
}