feat: update demo

This commit is contained in:
2024-01-19 00:05:38 +08:00
parent 0f7a867db7
commit 6b13398f63
4 changed files with 702 additions and 16 deletions

View File

@@ -66,7 +66,7 @@ private val EnString = Strings(
openLink = "Open Link",
openLinkDescription = "Open the project URL in the browser?",
open = "Open",
comfirm = "OK",
confirm = "OK",
cancel = "Cancel",
singlePageDemo = "Single Page Demo",
singlePageDemoDescription = "Open a single page",
@@ -83,7 +83,41 @@ private val EnString = Strings(
linearList = "Linear List",
gridList = "Grid List",
listRemoveSingle = "Remove this data",
listNoData = "No data to show"
listNoData = "No data to show",
textAndInput = "Text and Input",
enterTextHere = "Enter text here",
enterTextHereDescription = "The text you enter will be displayed here",
dropdownAndAutoComplete = "Dropdown and Auto Complete",
dropdownSimpleDescription = "Please select a data",
dropdownAndAutoCompleteDescription = "Enter the beginning of the text from the drop-down list above to experience autocompletion.",
simpleStringData = listOf(
"Week",
"Year",
"Month",
"Auto complete this text",
"Auto complete those text",
"The weather is nice today",
"Flexi UI is beautiful and useful"
),
progressIndicator = "Progress Indicator",
progressTo30 = "Progress to 30%",
progressTo100 = "Progress to 100%",
useCircularIndicator = "Use circular progress indicator",
switchToIndeterminateProgress = "Switch to indeterminate progress",
dialog = "Dialog",
normalDialog = "Show a Normal Dialog",
normalDialogDescription = "This is a normal dialog.",
multiButtonDialog = "Multi-Button",
multiButtonDialogDescription = "In this dialog you have two options.",
dialogWithIcon = "With an Icon",
progressDialog = "Progress Indicator",
loadingDialog = "Loading",
singleInputDialog = "Single Input Box",
multiInputDialog = "Multi Input Box",
passwordInputDialog = "Password Input Box",
dropdownListDialog = "Dropdown List",
singleChoiceDialog = "Single Choice",
mutliChoiceDialog = "Multi Choice"
)
private val ZhCnString = Strings(
@@ -102,7 +136,7 @@ private val ZhCnString = Strings(
openLink = "打开链接",
openLinkDescription = "在浏览器中打开项目链接?",
open = "打开",
comfirm = "确定",
confirm = "确定",
cancel = "取消",
singlePageDemo = "独立页面演示",
singlePageDemoDescription = "打开一个独立页面",
@@ -119,7 +153,41 @@ private val ZhCnString = Strings(
linearList = "线性列表",
gridList = "九宫格列表",
listRemoveSingle = "移除这条数据",
listNoData = "暂无数据"
listNoData = "暂无数据",
textAndInput = "文本与输入",
enterTextHere = "在这里输入文字",
enterTextHereDescription = "你输入的文字会显示在这里",
dropdownAndAutoComplete = "下拉列表与自动完成",
dropdownSimpleDescription = "请选择一项数据",
dropdownAndAutoCompleteDescription = "输入上方下拉列表中的文字开头部分可体验自动补全功能。",
simpleStringData = listOf(
"星期",
"年份",
"月份",
"自动补全这条文本",
"自动补全这些文本",
"今天天气很好",
"Flexi UI 美观且实用"
),
progressIndicator = "进度指示器",
progressTo30 = "进度到 30%",
progressTo100 = "进度到 100%",
useCircularIndicator = "使用圆形进度条",
switchToIndeterminateProgress = "切换到不确定进度",
dialog = "对话框",
normalDialog = "显示一个普通对话框",
normalDialogDescription = "这是一个普通的对话框。",
multiButtonDialog = "多个按钮",
multiButtonDialogDescription = "在这个对话框中你有两个选择。",
dialogWithIcon = "带个图标",
progressDialog = "进度指示",
loadingDialog = "加载中",
singleInputDialog = "单行输入框",
multiInputDialog = "多行输入框",
passwordInputDialog = "密码输入框",
dropdownListDialog = "下拉列表",
singleChoiceDialog = "单项选择",
mutliChoiceDialog = "多项选择"
)
@Immutable
@@ -139,7 +207,7 @@ data class Strings(
val openLink: String,
val openLinkDescription: String,
val open: String,
val comfirm: String,
val confirm: String,
val cancel: String,
val singlePageDemo: String,
val singlePageDemoDescription: String,
@@ -153,5 +221,31 @@ data class Strings(
val linearList: String,
val gridList: String,
val listRemoveSingle: String,
val listNoData: String
val listNoData: String,
val textAndInput: String,
val enterTextHere: String,
val enterTextHereDescription: String,
val dropdownAndAutoComplete: String,
val dropdownSimpleDescription: String,
val dropdownAndAutoCompleteDescription: String,
val simpleStringData: List<String>,
val progressIndicator: String,
val progressTo30: String,
val progressTo100: String,
val useCircularIndicator: String,
val switchToIndeterminateProgress: String,
val dialog: String,
val normalDialog: String,
val normalDialogDescription: String,
val multiButtonDialog: String,
val multiButtonDialogDescription: String,
val dialogWithIcon: String,
val progressDialog: String,
val loadingDialog: String,
val singleInputDialog: String,
val multiInputDialog: String,
val passwordInputDialog: String,
val dropdownListDialog: String,
val singleChoiceDialog: String,
val mutliChoiceDialog: String
)

View File

@@ -533,4 +533,196 @@ val FlexiIcons.DeleteForever by lazy {
close()
}
}
}
val FlexiIcons.TextFields by lazy {
ImageVector(
name = "text_fields",
defaultWidth = 24.dp,
defaultHeight = 24.dp,
viewportWidth = 24f,
viewportHeight = 24f
) {
path(
fill = SolidColor(Color.White),
fillAlpha = 1.0f,
strokeAlpha = 1.0f,
strokeLineWidth = 1.0f,
strokeLineCap = StrokeCap.Butt,
strokeLineJoin = StrokeJoin.Miter,
strokeLineMiter = 1.0f,
pathFillType = PathFillType.NonZero
) {
moveTo(2.5f, 5.5f)
curveTo(2.5f, 6.33f, 3.17f, 7f, 4f, 7f)
horizontalLineToRelative(3.5f)
verticalLineToRelative(10.5f)
curveToRelative(0f, 0.83f, 0.67f, 1.5f, 1.5f, 1.5f)
reflectiveCurveToRelative(1.5f, -0.67f, 1.5f, -1.5f)
verticalLineTo(7f)
horizontalLineTo(14f)
curveToRelative(0.83f, 0f, 1.5f, -0.67f, 1.5f, -1.5f)
reflectiveCurveTo(14.83f, 4f, 14f, 4f)
horizontalLineTo(4f)
curveToRelative(-0.83f, 0f, -1.5f, 0.67f, -1.5f, 1.5f)
close()
moveTo(20f, 9f)
horizontalLineToRelative(-6f)
curveToRelative(-0.83f, 0f, -1.5f, 0.67f, -1.5f, 1.5f)
reflectiveCurveTo(13.17f, 12f, 14f, 12f)
horizontalLineToRelative(1.5f)
verticalLineToRelative(5.5f)
curveToRelative(0f, 0.83f, 0.67f, 1.5f, 1.5f, 1.5f)
reflectiveCurveToRelative(1.5f, -0.67f, 1.5f, -1.5f)
verticalLineTo(12f)
horizontalLineTo(20f)
curveToRelative(0.83f, 0f, 1.5f, -0.67f, 1.5f, -1.5f)
reflectiveCurveTo(20.83f, 9f, 20f, 9f)
close()
}
}
}
val FlexiIcons.AutoList by lazy {
ImageVector(
name = "auto_list",
defaultWidth = 24.dp,
defaultHeight = 24.dp,
viewportWidth = 24f,
viewportHeight = 24f
) {
path(
fill = SolidColor(Color.White),
fillAlpha = 1.0f,
strokeAlpha = 1.0f,
strokeLineWidth = 1.0f,
strokeLineCap = StrokeCap.Butt,
strokeLineJoin = StrokeJoin.Miter,
strokeLineMiter = 1.0f,
pathFillType = PathFillType.NonZero
) {
moveTo(22f, 8f)
curveToRelative(0f, -0.55f, -0.45f, -1f, -1f, -1f)
horizontalLineToRelative(-7f)
curveToRelative(-0.55f, 0f, -1f, 0.45f, -1f, 1f)
reflectiveCurveToRelative(0.45f, 1f, 1f, 1f)
horizontalLineToRelative(7f)
curveTo(21.55f, 9f, 22f, 8.55f, 22f, 8f)
close()
moveTo(13f, 16f)
curveToRelative(0f, 0.55f, 0.45f, 1f, 1f, 1f)
horizontalLineToRelative(7f)
curveToRelative(0.55f, 0f, 1f, -0.45f, 1f, -1f)
curveToRelative(0f, -0.55f, -0.45f, -1f, -1f, -1f)
horizontalLineToRelative(-7f)
curveTo(13.45f, 15f, 13f, 15.45f, 13f, 16f)
close()
moveTo(10.47f, 4.63f)
curveToRelative(0.39f, 0.39f, 0.39f, 1.02f, 0f, 1.41f)
lineToRelative(-4.23f, 4.25f)
curveToRelative(-0.39f, 0.39f, -1.02f, 0.39f, -1.42f, 0f)
lineTo(2.7f, 8.16f)
curveToRelative(-0.39f, -0.39f, -0.39f, -1.02f, 0f, -1.41f)
curveToRelative(0.39f, -0.39f, 1.02f, -0.39f, 1.41f, 0f)
lineToRelative(1.42f, 1.42f)
lineToRelative(3.54f, -3.54f)
curveTo(9.45f, 4.25f, 10.09f, 4.25f, 10.47f, 4.63f)
close()
moveTo(10.48f, 12.64f)
curveToRelative(0.39f, 0.39f, 0.39f, 1.02f, 0f, 1.41f)
lineToRelative(-4.23f, 4.25f)
curveToRelative(-0.39f, 0.39f, -1.02f, 0.39f, -1.42f, 0f)
lineTo(2.7f, 16.16f)
curveToRelative(-0.39f, -0.39f, -0.39f, -1.02f, 0f, -1.41f)
reflectiveCurveToRelative(1.02f, -0.39f, 1.41f, 0f)
lineToRelative(1.42f, 1.42f)
lineToRelative(3.54f, -3.54f)
curveTo(9.45f, 12.25f, 10.09f, 12.25f, 10.48f, 12.64f)
lineTo(10.48f, 12.64f)
close()
}
}
}
val FlexiIcons.Signpost by lazy {
ImageVector(
name = "signpost",
defaultWidth = 24.dp,
defaultHeight = 24.dp,
viewportWidth = 24f,
viewportHeight = 24f
) {
path(
fill = SolidColor(Color.White),
fillAlpha = 1.0f,
strokeAlpha = 1.0f,
strokeLineWidth = 1.0f,
strokeLineCap = StrokeCap.Butt,
strokeLineJoin = StrokeJoin.Miter,
strokeLineMiter = 1.0f,
pathFillType = PathFillType.NonZero
) {
moveTo(13f, 10f)
lineToRelative(5f, 0f)
lineToRelative(3f, -3f)
lineToRelative(-3f, -3f)
lineToRelative(-5f, 0f)
lineToRelative(0f, -2f)
lineToRelative(-2f, 0f)
lineToRelative(0f, 2f)
lineToRelative(-7f, 0f)
lineToRelative(0f, 6f)
lineToRelative(7f, 0f)
lineToRelative(0f, 2f)
lineToRelative(-5f, 0f)
lineToRelative(-3f, 3f)
lineToRelative(3f, 3f)
lineToRelative(5f, 0f)
lineToRelative(0f, 4f)
lineToRelative(2f, 0f)
lineToRelative(0f, -4f)
lineToRelative(7f, 0f)
lineToRelative(0f, -6f)
lineToRelative(-7f, 0f)
close()
}
}
}
val FlexiIcons.Dialog by lazy {
ImageVector(
name = "dialog",
defaultWidth = 24.dp,
defaultHeight = 24.dp,
viewportWidth = 24f,
viewportHeight = 24f
) {
path(
fill = SolidColor(Color.White),
fillAlpha = 1.0f,
strokeAlpha = 1.0f,
strokeLineWidth = 1.0f,
strokeLineCap = StrokeCap.Butt,
strokeLineJoin = StrokeJoin.Miter,
strokeLineMiter = 1.0f,
pathFillType = PathFillType.NonZero
) {
moveTo(19f, 5f)
horizontalLineTo(5f)
curveTo(3.9f, 5f, 3f, 5.9f, 3f, 7f)
verticalLineToRelative(10f)
curveToRelative(0f, 1.1f, 0.9f, 2f, 2f, 2f)
horizontalLineToRelative(14f)
curveToRelative(1.1f, 0f, 2f, -0.9f, 2f, -2f)
verticalLineTo(7f)
curveTo(21f, 5.9f, 20.1f, 5f, 19f, 5f)
close()
moveTo(19f, 17f)
horizontalLineTo(5f)
verticalLineTo(7f)
horizontalLineToRelative(14f)
verticalLineTo(17f)
close()
}
}
}

View File

@@ -95,7 +95,7 @@ fun LazyListScreen() {
showRemoveAllDialog = false
testListData.clear()
}
) { Text(strings.comfirm) }
) { Text(strings.confirm) }
},
cancelButton = {
Button(
@@ -178,7 +178,9 @@ fun LazyListScreen() {
}
if (testListData.isNotEmpty()) when (index) {
0 -> LazyColumn(
modifier = Modifier.fillMaxSize().padding(innerPadding),
modifier = Modifier
.fillMaxSize()
.padding(innerPadding),
state = lazyListState,
verticalArrangement = ListSpacing
) {
@@ -193,7 +195,9 @@ fun LazyListScreen() {
}
}
1 -> LazyVerticalGrid(
modifier = Modifier.fillMaxSize().padding(innerPadding),
modifier = Modifier
.fillMaxSize()
.padding(innerPadding),
state = lazyGridState,
columns = GridCells.Adaptive(GridMaxWidth),
verticalArrangement = ListSpacing,
@@ -210,7 +214,9 @@ fun LazyListScreen() {
}
}
} else Box(
modifier = Modifier.fillMaxSize().padding(innerPadding),
modifier = Modifier
.fillMaxSize()
.padding(innerPadding),
contentAlignment = Alignment.Center
) { Text(strings.listNoData) }
}

View File

@@ -45,35 +45,48 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.highcapable.betterandroid.compose.extension.ui.layout.AdaptiveRow
import com.highcapable.flexiui.FlexiTheme
import com.highcapable.flexiui.availableColorSchemes
import com.highcapable.flexiui.component.AreaBox
import com.highcapable.flexiui.component.AreaColumn
import com.highcapable.flexiui.component.AutoCompleteOptions
import com.highcapable.flexiui.component.Button
import com.highcapable.flexiui.component.CircularProgressIndicator
import com.highcapable.flexiui.component.DropdownList
import com.highcapable.flexiui.component.DropdownMenuItem
import com.highcapable.flexiui.component.HorizontalItemBox
import com.highcapable.flexiui.component.Icon
import com.highcapable.flexiui.component.IconDefaults
import com.highcapable.flexiui.component.LinearProgressIndicator
import com.highcapable.flexiui.component.NavigationBarItem
import com.highcapable.flexiui.component.NavigationBarRow
import com.highcapable.flexiui.component.PrimaryAppBar
import com.highcapable.flexiui.component.Scaffold
import com.highcapable.flexiui.component.SecondarySpacer
import com.highcapable.flexiui.component.SecondaryText
import com.highcapable.flexiui.component.Slider
import com.highcapable.flexiui.component.StickyHeaderBar
import com.highcapable.flexiui.component.SwitchItem
import com.highcapable.flexiui.component.TertiarySpacer
import com.highcapable.flexiui.component.Text
import com.highcapable.flexiui.component.TextField
import com.highcapable.flexiui.component.window.FlexiDialog
import com.highcapable.flexiui.demo.AutoList
import com.highcapable.flexiui.demo.Component
import com.highcapable.flexiui.demo.Dialog
import com.highcapable.flexiui.demo.GitHub
import com.highcapable.flexiui.demo.Home
import com.highcapable.flexiui.demo.Locale
import com.highcapable.flexiui.demo.PROJECT_URL
import com.highcapable.flexiui.demo.Preferences
import com.highcapable.flexiui.demo.Screen
import com.highcapable.flexiui.demo.Signpost
import com.highcapable.flexiui.demo.Style
import com.highcapable.flexiui.demo.TextFields
import com.highcapable.flexiui.demo.displayName
import com.highcapable.flexiui.demo.locales
import com.highcapable.flexiui.demo.rememberRouter
@@ -145,6 +158,7 @@ fun MainScreen() {
HorizontalPager(
modifier = Modifier.fillMaxSize(),
state = pagerState,
beyondBoundsPageCount = pageCount
) { index ->
val modifier = Modifier.padding(innerPadding)
when (index) {
@@ -158,7 +172,11 @@ fun MainScreen() {
@Composable
fun MainHomePage(modifier: Modifier) {
val scrollState = rememberScrollState()
Column(modifier = modifier.fillMaxSize().verticalScroll(scrollState)) {
Column(
modifier = modifier
.fillMaxSize()
.verticalScroll(scrollState)
) {
AreaBox(modifier = Modifier.fillMaxWidth()) { Text(strings.appDescription) }
SecondarySpacer()
AreaColumn(modifier = Modifier.fillMaxWidth()) {
@@ -268,9 +286,385 @@ fun MainHomePage(modifier: Modifier) {
@Composable
fun MainComponentPage(modifier: Modifier) {
// TODO: To be implemented.
Box(
modifier = modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) { SecondaryText("To be implemented.", primaryFontSize = true) }
val scrollState = rememberScrollState()
Column(
modifier = modifier
.fillMaxSize()
.verticalScroll(scrollState)
) {
AreaColumn(modifier = Modifier.fillMaxWidth()) {
StickyHeaderBar(
modifier = Modifier.fillMaxWidth(),
icon = { Icon(FlexiIcons.TextFields) },
title = { Text(strings.textAndInput) }
)
SecondarySpacer()
val defaultFontSize = FlexiTheme.typography.primary.fontSize.value
val maxFontSize = 30f
var inputText by remember { mutableStateOf("") }
var fontSize by remember { mutableStateOf(defaultFontSize) }
TextField(
modifier = Modifier.fillMaxWidth(),
value = inputText,
onValueChange = { inputText = it },
placeholder = { Text(strings.enterTextHere) }
)
SecondarySpacer()
Text(
modifier = Modifier.align(Alignment.CenterHorizontally).padding(10.dp),
text = inputText.ifEmpty { strings.enterTextHereDescription },
fontSize = fontSize.sp,
textAlign = TextAlign.Center
)
SecondarySpacer()
Slider(
modifier = Modifier.fillMaxWidth(),
value = fontSize,
onValueChange = { fontSize = it },
max = maxFontSize
)
}
SecondarySpacer()
AreaColumn(modifier = Modifier.fillMaxWidth()) {
var expanded by remember { mutableStateOf(false) }
var selectedText by remember { mutableStateOf("") }
var inputText by remember { mutableStateOf("") }
StickyHeaderBar(
modifier = Modifier.fillMaxWidth(),
icon = { Icon(FlexiIcons.AutoList) },
title = { Text(strings.dropdownAndAutoComplete) }
)
SecondarySpacer()
DropdownList(
modifier = Modifier.fillMaxWidth(),
expanded = expanded,
onExpandedChange = { expanded = it },
text = { Text(selectedText.ifEmpty { strings.dropdownSimpleDescription }) },
) {
strings.simpleStringData.forEach {
DropdownMenuItem(
actived = selectedText == it,
onClick = {
expanded = false
selectedText = it
}
) { Text(it) }
}
}
SecondarySpacer()
TextField(
modifier = Modifier.fillMaxWidth(),
value = inputText,
onValueChange = { inputText = it },
placeholder = { Text(strings.enterTextHere) },
singleLine = true,
completionValues = strings.simpleStringData,
completionOptions = AutoCompleteOptions(
checkCase = false,
threshold = 1
)
)
SecondarySpacer()
SecondaryText(
modifier = Modifier.align(Alignment.CenterHorizontally),
text = strings.dropdownAndAutoCompleteDescription,
textAlign = TextAlign.Center
)
}
SecondarySpacer()
AreaColumn(modifier = Modifier.fillMaxWidth()) {
var useCircularIndicator by remember { mutableStateOf(true) }
var indeterminate by remember { mutableStateOf(false) }
var progress by remember { mutableStateOf(30f) }
StickyHeaderBar(
modifier = Modifier.fillMaxWidth(),
icon = { Icon(FlexiIcons.Signpost) },
title = { Text(strings.progressIndicator) }
)
SecondarySpacer()
Box(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 10.dp),
contentAlignment = Alignment.Center
) {
if (useCircularIndicator)
CircularProgressIndicator(
progress = progress,
max = 100f,
indeterminate = indeterminate
)
else
LinearProgressIndicator(
modifier = Modifier.fillMaxWidth(),
progress = progress,
max = 100f,
indeterminate = indeterminate
)
}
SecondarySpacer()
AdaptiveRow(
modifier = Modifier.fillMaxWidth(),
spacingBetween = 10.dp
) {
Button(
onClick = { progress = 30f }
) { Text(strings.progressTo30, singleLine = true) }
Button(
onClick = { progress = 100f }
) { Text(strings.progressTo100, singleLine = true) }
}
SecondarySpacer()
SwitchItem(
checked = useCircularIndicator,
onCheckedChange = { useCircularIndicator = it }
) { Text(strings.useCircularIndicator) }
SecondarySpacer()
SwitchItem(
checked = indeterminate,
onCheckedChange = { indeterminate = it }
) { Text(strings.switchToIndeterminateProgress) }
}
SecondarySpacer()
AreaColumn(modifier = Modifier.fillMaxWidth()) {
StickyHeaderBar(
modifier = Modifier.fillMaxWidth(),
icon = { Icon(FlexiIcons.Dialog) },
title = { Text(strings.dialog) }
)
SecondarySpacer()
var showNormalDialog by remember { mutableStateOf(false) }
var showMultiButtonDialog by remember { mutableStateOf(false) }
var showDialogWithIcon by remember { mutableStateOf(false) }
var showLoadingDialog by remember { mutableStateOf(false) }
var showProgressDialog by remember { mutableStateOf(false) }
var showSingleInputDialog by remember { mutableStateOf(false) }
var showMultiInputDialog by remember { mutableStateOf(false) }
var showDropdownListDialog by remember { mutableStateOf(false) }
var showPasswordInputDialog by remember { mutableStateOf(false) }
var showSingleChoiceDialog by remember { mutableStateOf(false) }
var showMutliChoiceDialog by remember { mutableStateOf(false) }
NormalDialog(
visible = showNormalDialog,
onDismissRequest = { showNormalDialog = false }
)
MultiButtonDialog(
visible = showMultiButtonDialog,
onDismissRequest = { showMultiButtonDialog = false }
)
DialogWithIconDialog(
visible = showDialogWithIcon,
onDismissRequest = { showDialogWithIcon = false }
)
LoadingDialog(
visible = showLoadingDialog,
onDismissRequest = { showLoadingDialog = false }
)
ProgressDialog(
visible = showProgressDialog,
onDismissRequest = { showProgressDialog = false }
)
SingleInputDialog(
visible = showSingleInputDialog,
onDismissRequest = { showSingleInputDialog = false }
)
MultiInputDialog(
visible = showMultiInputDialog,
onDismissRequest = { showMultiInputDialog = false }
)
DropdownListDialog(
visible = showDropdownListDialog,
onDismissRequest = { showDropdownListDialog = false }
)
PasswordInputDialog(
visible = showPasswordInputDialog,
onDismissRequest = { showPasswordInputDialog = false }
)
SingleChoiceDialog(
visible = showSingleChoiceDialog,
onDismissRequest = { showSingleChoiceDialog = false }
)
MutliChoiceDialog(
visible = showMutliChoiceDialog,
onDismissRequest = { showMutliChoiceDialog = false }
)
Button(
modifier = Modifier.fillMaxWidth(),
onClick = { showNormalDialog = true }
) { Text(strings.normalDialog, singleLine = true) }
SecondarySpacer()
AdaptiveRow(
modifier = Modifier.fillMaxWidth(),
spacingBetween = 10.dp
) {
Button(
onClick = { showMultiButtonDialog = true }
) { Text(strings.multiButtonDialog, singleLine = true) }
Button(
onClick = { showDialogWithIcon = true }
) { Text(strings.dialogWithIcon, singleLine = true) }
}
SecondarySpacer()
AdaptiveRow(
modifier = Modifier.fillMaxWidth(),
spacingBetween = 10.dp
) {
Button(
onClick = { showLoadingDialog = true }
) { Text(strings.loadingDialog, singleLine = true) }
Button(
onClick = { showProgressDialog = true }
) { Text(strings.progressDialog, singleLine = true) }
}
SecondarySpacer()
AdaptiveRow(
modifier = Modifier.fillMaxWidth(),
spacingBetween = 10.dp
) {
Button(
onClick = { showSingleInputDialog = true }
) { Text(strings.singleInputDialog, singleLine = true) }
Button(
onClick = { showMultiInputDialog = true }
) { Text(strings.multiInputDialog, singleLine = true) }
}
SecondarySpacer()
AdaptiveRow(
modifier = Modifier.fillMaxWidth(),
spacingBetween = 10.dp
) {
Button(
onClick = { showDropdownListDialog = true }
) { Text(strings.dropdownListDialog, singleLine = true) }
Button(
onClick = { showPasswordInputDialog = true }
) { Text(strings.passwordInputDialog, singleLine = true) }
}
SecondarySpacer()
AdaptiveRow(
modifier = Modifier.fillMaxWidth(),
spacingBetween = 10.dp
) {
Button(
onClick = { showSingleChoiceDialog = true }
) { Text(strings.singleChoiceDialog, singleLine = true) }
Button(
onClick = { showMutliChoiceDialog = true }
) { Text(strings.mutliChoiceDialog, singleLine = true) }
}
}
}
}
@Composable
private fun NormalDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
FlexiDialog(
visible = visible,
onDismissRequest = onDismissRequest,
title = { Text(strings.normalDialog) },
content = { Text(strings.normalDialogDescription) },
confirmButton = {
Button(
onClick = onDismissRequest
) { Text(strings.confirm) }
}
)
}
@Composable
private fun MultiButtonDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
FlexiDialog(
visible = visible,
onDismissRequest = onDismissRequest,
title = { Text(strings.multiButtonDialog) },
content = { Text(strings.multiButtonDialogDescription) },
confirmButton = {
Button(
onClick = onDismissRequest
) { Text(strings.confirm) }
},
cancelButton = {
Button(
onClick = onDismissRequest
) { Text(strings.cancel) }
}
)
}
@Composable
private fun DialogWithIconDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Dialog with icon
}
@Composable
private fun LoadingDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Loading dialog
}
@Composable
private fun ProgressDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Progress dialog
}
@Composable
private fun SingleInputDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Single input dialog
}
@Composable
private fun MultiInputDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Multi input dialog
}
@Composable
private fun DropdownListDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Dropdown list dialog
}
@Composable
private fun PasswordInputDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Password input dialog
}
@Composable
private fun SingleChoiceDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Single choice dialog
}
@Composable
private fun MutliChoiceDialog(
visible: Boolean,
onDismissRequest: () -> Unit
) {
// TODO: Multi choice dialog
}