Skip to content

Commit 00940d6

Browse files
authored
fix: #520 Mocks dialog (#521)
1 parent 3bbe848 commit 00940d6

4 files changed

Lines changed: 63 additions & 43 deletions

File tree

  • FloconDesktop

FloconDesktop/composeApp/src/commonMain/kotlin/io/github/openflocon/flocondesktop/features/network/Navigation.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import io.github.openflocon.flocondesktop.features.network.search.view.NetworkSe
1717
import io.github.openflocon.navigation.FloconRoute
1818
import io.github.openflocon.navigation.PanelRoute
1919
import io.github.openflocon.navigation.WindowRoute
20+
import io.github.openflocon.navigation.scene.BigDialogProperties
21+
import io.github.openflocon.navigation.scene.BigDialogSceneStrategy
2022
import io.github.openflocon.navigation.scene.PanelSceneStrategy
2123
import io.github.openflocon.navigation.scene.WindowSceneStrategy
2224
import kotlinx.serialization.Serializable
@@ -76,7 +78,9 @@ fun EntryProviderScope<FloconRoute>.networkRoutes() {
7678
NetworkDetailScreen(requestId = it.requestId)
7779
}
7880
entry<NetworkRoutes.Mocks>(
79-
metadata = DialogSceneStrategy.dialog()
81+
metadata = BigDialogSceneStrategy.bigDialog(
82+
BigDialogProperties(title = "Mocks")
83+
)
8084
) {
8185
NetworkMocksWindow(
8286
fromNetworkCallId = it.id

FloconDesktop/composeApp/src/commonMain/kotlin/io/github/openflocon/flocondesktop/features/network/mock/list/view/NetworkMocksScreen.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private fun NetworkMocksContent(
7777
) {
7878
Column(modifier = modifier) {
7979
FloconDialogHeader(
80-
title = "Mocks",
80+
title = null,
8181
modifier = Modifier.fillMaxWidth(),
8282
trailingContent = {
8383
FloconButton(
@@ -127,7 +127,10 @@ private fun NetworkMocksContent(
127127
},
128128
modifier = Modifier.fillMaxWidth(),
129129
)
130-
HorizontalDivider(Modifier.fillMaxWidth(), color = MaterialTheme.colorScheme.outline)
130+
HorizontalDivider(
131+
Modifier.fillMaxWidth(),
132+
color = MaterialTheme.colorScheme.outline
133+
)
131134
}
132135
}
133136
}

FloconDesktop/library/designsystem/src/commonMain/kotlin/io/github/openflocon/library/designsystem/components/FloconDialog.kt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.compose.foundation.background
66
import androidx.compose.foundation.layout.Arrangement
77
import androidx.compose.foundation.layout.Row
88
import androidx.compose.foundation.layout.RowScope
9+
import androidx.compose.foundation.layout.Spacer
910
import androidx.compose.foundation.layout.fillMaxWidth
1011
import androidx.compose.foundation.layout.padding
1112
import androidx.compose.foundation.layout.wrapContentHeight
@@ -49,7 +50,7 @@ fun FloconDialog(
4950

5051
@Composable
5152
fun FloconDialogHeader(
52-
title: String,
53+
title: String?,
5354
modifier: Modifier = Modifier,
5455
trailingContent: @Composable RowScope.() -> Unit = {},
5556
) {
@@ -59,15 +60,19 @@ fun FloconDialogHeader(
5960
.padding(horizontal = 12.dp, vertical = 4.dp),
6061
verticalAlignment = Alignment.CenterVertically,
6162
) {
62-
Text(
63-
text = title,
64-
modifier = Modifier
65-
.padding(vertical = 12.dp)
66-
.padding(start = 4.dp)
67-
.weight(1f),
68-
style = FloconTheme.typography.titleMedium,
69-
color = FloconTheme.colorPalette.onPrimary,
70-
)
63+
if (title != null) {
64+
Text(
65+
text = title,
66+
modifier = Modifier
67+
.padding(vertical = 12.dp)
68+
.padding(start = 4.dp)
69+
.weight(1f),
70+
style = FloconTheme.typography.titleMedium,
71+
color = FloconTheme.colorPalette.onPrimary,
72+
)
73+
} else {
74+
Spacer(Modifier.weight(1f))
75+
}
7176
Row(
7277
verticalAlignment = Alignment.CenterVertically,
7378
) {

FloconDesktop/navigation/src/commonMain/kotlin/io/github/openflocon/navigation/scene/BigDialogScene.kt

Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@ package io.github.openflocon.navigation.scene
44

55
import androidx.compose.foundation.background
66
import androidx.compose.foundation.clickable
7+
import androidx.compose.foundation.layout.Arrangement
78
import androidx.compose.foundation.layout.Box
9+
import androidx.compose.foundation.layout.Column
10+
import androidx.compose.foundation.layout.Row
11+
import androidx.compose.foundation.layout.Spacer
812
import androidx.compose.foundation.layout.fillMaxSize
13+
import androidx.compose.foundation.layout.fillMaxWidth
14+
import androidx.compose.foundation.layout.height
915
import androidx.compose.foundation.layout.padding
1016
import androidx.compose.foundation.shape.RoundedCornerShape
1117
import androidx.compose.material.icons.Icons
1218
import androidx.compose.material.icons.filled.Close
1319
import androidx.compose.material3.ExperimentalMaterial3Api
20+
import androidx.compose.material3.HorizontalDivider
1421
import androidx.compose.material3.Text
15-
import androidx.compose.material3.TopAppBar
16-
import androidx.compose.material3.TopAppBarDefaults
22+
import androidx.compose.material3.VerticalDivider
1723
import androidx.compose.runtime.Composable
1824
import androidx.compose.runtime.Immutable
1925
import androidx.compose.ui.Modifier
@@ -29,7 +35,6 @@ import androidx.navigation3.scene.SceneStrategyScope
2935
import io.github.openflocon.library.designsystem.FloconTheme
3036
import io.github.openflocon.library.designsystem.components.FloconIcon
3137
import io.github.openflocon.library.designsystem.components.FloconIconButton
32-
import io.github.openflocon.library.designsystem.components.FloconScaffold
3338
import io.github.openflocon.navigation.FloconRoute
3439

3540
@Immutable
@@ -40,34 +45,15 @@ private data class BigDialogScene(
4045
override val overlaidEntries: List<NavEntry<FloconRoute>>,
4146
private val onBack: () -> Unit,
4247
) : OverlayScene<FloconRoute> {
48+
4349
override val key: Any = BigDialogSceneStrategy.BIG_DIALOG
4450
override val entries: List<NavEntry<FloconRoute>> = listOf(entry)
4551
override val content: @Composable (() -> Unit) = {
46-
FloconScaffold(
47-
topBar = {
48-
TopAppBar(
49-
title = {
50-
Text(properties.title)
51-
},
52-
actions = {
53-
FloconIconButton(
54-
onClick = onBack
55-
) {
56-
FloconIcon(
57-
imageVector = Icons.Default.Close
58-
)
59-
}
60-
},
61-
colors = TopAppBarDefaults.topAppBarColors(
62-
containerColor = FloconTheme.colorPalette.primary,
63-
titleContentColor = FloconTheme.colorPalette.onPrimary,
64-
actionIconContentColor = FloconTheme.colorPalette.onPrimary
65-
)
66-
)
67-
},
68-
containerColor = FloconTheme.colorPalette.primary.copy(alpha = 0.5f),
52+
53+
Column(
6954
modifier = Modifier
7055
.fillMaxSize()
56+
.background(FloconTheme.colorPalette.primary.copy(alpha = 0.7f))
7157
.clickable(
7258
onClick = onBack,
7359
indication = null,
@@ -78,17 +64,38 @@ private data class BigDialogScene(
7864
shape = RoundedCornerShape(12.dp),
7965
shadow = Shadow(
8066
radius = 4.dp,
81-
color = FloconTheme.colorPalette.onAccent
67+
color = FloconTheme.colorPalette.onAccent.copy(alpha = 0.5f)
8268
)
8369
)
8470
.clip(RoundedCornerShape(12.dp))
8571
.background(FloconTheme.colorPalette.primary)
8672
.padding(16.dp)
8773
) {
74+
Row(
75+
horizontalArrangement = Arrangement.SpaceBetween,
76+
modifier = Modifier.fillMaxWidth()
77+
) {
78+
Text(
79+
text = properties.title,
80+
color = FloconTheme.colorPalette.onPrimary,
81+
style = FloconTheme.typography.headlineSmall
82+
)
83+
FloconIconButton(
84+
onClick = onBack
85+
) {
86+
FloconIcon(
87+
imageVector = Icons.Default.Close,
88+
tint = FloconTheme.colorPalette.onPrimary
89+
)
90+
}
91+
}
92+
Spacer(Modifier.height(8.dp))
93+
HorizontalDivider()
94+
Spacer(Modifier.height(8.dp))
8895
Box(
89-
modifier = Modifier
96+
Modifier
9097
.fillMaxSize()
91-
.padding(it)
98+
.clickable(onClick = {}, indication = null, interactionSource = null)
9299
) {
93100
entry.Content()
94101
}
@@ -121,7 +128,8 @@ class BigDialogSceneStrategy : SceneStrategy<FloconRoute> {
121128
companion object {
122129
const val BIG_DIALOG = "BIG_DIALOG"
123130

124-
fun bigDialog(properties: BigDialogProperties): Map<String, Any> = mapOf(BIG_DIALOG to properties)
131+
fun bigDialog(properties: BigDialogProperties): Map<String, Any> =
132+
mapOf(BIG_DIALOG to properties)
125133
}
126134

127135
}

0 commit comments

Comments
 (0)