Skip to content

WindowDialog

WindowDialog is a window-level dialog component. It renders using platform Dialog and does not require Scaffold or MiuixPopupHost. It supports large-screen optimized animations, system back gesture dismissal, and a composition local to request dismiss from inside content.

TIP

This component is independent of Scaffold and can be used in any composable scope.

Import

kotlin
import top.yukonga.miuix.kmp.extra.WindowDialog
import top.yukonga.miuix.kmp.extra.LocalWindowDialogState

Basic Usage

kotlin
val showDialog = remember { mutableStateOf(false) }

TextButton(
    text = "Open",
    onClick = { showDialog.value = true }
)

WindowDialog(
    title = "WindowDialog",
    summary = "A basic window-level dialog",
    show = showDialog,
    onDismissRequest = { showDialog.value = false }
) {
    val dismiss = LocalWindowDialogState.current
    TextButton(
        text = "Confirm",
        onClick = { dismiss?.invoke() },
        modifier = Modifier.fillMaxWidth()
    )
}

Properties

WindowDialog Properties

Property NameTypeDescriptionDefault ValueRequired
showMutableState<Boolean>Controls visibility of the dialog-Yes
modifierModifierRoot content modifierModifierNo
titleString?Dialog titlenullNo
titleColorColorTitle colorWindowDialogDefaults.titleColor()No
summaryString?Dialog summarynullNo
summaryColorColorSummary colorWindowDialogDefaults.summaryColor()No
backgroundColorColorDialog background colorWindowDialogDefaults.backgroundColor()No
onDismissRequest(() -> Unit)?Called when the user requests dismissal (outside tap or back)nullNo
onDismissFinished(() -> Unit)?Callback after dialog fully dismissesnullNo
outsideMarginDpSizeOuter margin (window edges)WindowDialogDefaults.outsideMarginNo
insideMarginDpSizeInner padding for dialog contentWindowDialogDefaults.insideMarginNo
defaultWindowInsetsPaddingBooleanApply default insets padding (IME, nav, caption)trueNo
content@Composable () -> UnitDialog content-Yes

WindowDialogDefaults

Properties

NameTypeDescription
outsideMarginDpSizeDefault outer margin for dialog
insideMarginDpSizeDefault inner padding for dialog

Functions

NameReturn TypeDescription
titleColor()ColorGet default title color
summaryColor()ColorGet default summary color
backgroundColor()ColorGet default dialog background color

LocalWindowDialogState

Provides a () -> Unit function to close the current popup from within the content.

kotlin
val state = LocalWindowDialogState.current
TextButton(
    text = "Close",
    onClick = { state.invoke() }
)

Changelog

Released under the Apache-2.0 License