55 lines
1.8 KiB
Kotlin
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()
|
|
}
|
|
}
|
|
}
|
|
} |