| | |
| | | package com.runt.open.mvi.views |
| | | |
| | | import android.util.Log |
| | | import androidx.compose.foundation.BorderStroke |
| | | import androidx.compose.foundation.background |
| | | import androidx.compose.foundation.layout.Arrangement |
| | |
| | | import androidx.compose.ui.Modifier |
| | | import androidx.compose.ui.draw.clip |
| | | import androidx.compose.ui.graphics.Color |
| | | import androidx.compose.ui.layout.Layout |
| | | import androidx.compose.ui.text.style.TextAlign |
| | | import androidx.compose.ui.tooling.preview.Preview |
| | | import androidx.compose.ui.unit.Constraints |
| | | import androidx.compose.ui.unit.dp |
| | | import androidx.compose.ui.unit.sp |
| | | import androidx.compose.ui.window.Dialog |
| | |
| | | * @purpose |
| | | * @date 5/18/25 |
| | | */ |
| | | |
| | | /** |
| | | * 超出父容器 |
| | | */ |
| | | @Composable |
| | | fun UnboundedBox( |
| | | modifier: Modifier = Modifier, |
| | | content: @Composable () -> Unit |
| | | ) { |
| | | Layout(content, modifier) { measurables, parent -> |
| | | // 给子树宽高用"无限"上限测量 |
| | | val loose = Constraints( |
| | | minWidth = 0, minHeight = 0, |
| | | maxWidth = Int.MAX_VALUE, maxHeight = Int.MAX_VALUE |
| | | ) |
| | | val placeables = measurables.map { it.measure(loose) } |
| | | |
| | | // 自己仍按父约束的大小布局(不撑爆父) |
| | | val w = parent.maxWidth |
| | | val h = parent.maxHeight |
| | | layout(w, h) { |
| | | // 放在(0,0)。如需往外探出,可用负偏移:placeRelative(-50, 0) |
| | | placeables.forEach { it.placeRelative(0, 0) } |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Composable |
| | | fun LoadingDialog( loadingState : LoadingState) { |
| | |
| | | fun MessageDialog(message : MessageState){ |
| | | if(message.isVisible){ |
| | | Dialog(onDismissRequest = { |
| | | if(message.cancelDissmiss){ |
| | | //系统响应 |
| | | Log.i("PublicViews" , "MessageDialog: onDismiss") |
| | | if(message.touchOutside){ |
| | | message.setDismiss.invoke() |
| | | message.onDismissRequest.invoke() |
| | | } |
| | | message.onDismissRequest.invoke() |
| | | }) { |
| | | Card( |
| | | modifier = Modifier |
| | |
| | | Button(onClick = { |
| | | if(message.cancelDissmiss){ |
| | | message.setDismiss.invoke() |
| | | message.onDismissRequest.invoke() |
| | | } |
| | | message.onCancelRequest.invoke() |
| | | }, |
| | |
| | | Button(onClick = { |
| | | if(message.confirmDissmiss){ |
| | | message.setDismiss.invoke() |
| | | message.onDismissRequest.invoke() |
| | | } |
| | | message.onConfirmRequest.invoke() |
| | | }) { |