Skip to content

Commit bd38494

Browse files
new : SelectDialog
1 parent 59b65d3 commit bd38494

7 files changed

Lines changed: 371 additions & 0 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.streamliners.data
2+
3+
val indianStatesAndUTs = listOf(
4+
// States
5+
"Andhra Pradesh",
6+
"Arunachal Pradesh",
7+
"Assam",
8+
"Bihar",
9+
"Chhattisgarh",
10+
"Goa",
11+
"Gujarat",
12+
"Haryana",
13+
"Himachal Pradesh",
14+
"Jharkhand",
15+
"Karnataka",
16+
"Kerala",
17+
"Madhya Pradesh",
18+
"Maharashtra",
19+
"Manipur",
20+
"Meghalaya",
21+
"Mizoram",
22+
"Nagaland",
23+
"Odisha",
24+
"Punjab",
25+
"Rajasthan",
26+
"Sikkim",
27+
"Tamil Nadu",
28+
"Telangana",
29+
"Tripura",
30+
"Uttar Pradesh",
31+
"Uttarakhand",
32+
"West Bengal",
33+
34+
// Union Territories
35+
"Andaman and Nicobar Islands",
36+
"Chandigarh",
37+
"Dadra and Nagar Haveli and Daman and Diu",
38+
"Delhi",
39+
"Jammu and Kashmir",
40+
"Ladakh",
41+
"Lakshadweep",
42+
"Puducherry"
43+
)
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package com.streamliners.feature.dialogs_sample
2+
3+
import androidx.compose.foundation.layout.Arrangement
4+
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.fillMaxSize
6+
import androidx.compose.foundation.layout.padding
7+
import androidx.compose.material3.Button
8+
import androidx.compose.material3.SnackbarHostState
9+
import androidx.compose.material3.Text
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.runtime.remember
12+
import androidx.compose.runtime.rememberCoroutineScope
13+
import androidx.compose.ui.Alignment
14+
import androidx.compose.ui.Modifier
15+
import androidx.compose.ui.unit.dp
16+
import androidx.navigation.NavController
17+
import com.streamliners.compose.android.comp.appBar.TitleBarScaffold
18+
import com.streamliners.compose.android.comp.selectDialog.SelectDialog
19+
import com.streamliners.compose.android.comp.selectDialog.rememberSelectDialogState
20+
import com.streamliners.compose.android.comp.selectDialog.showForMultipleSelection
21+
import com.streamliners.compose.android.comp.selectDialog.showForSingleSelection
22+
import com.streamliners.compose.comp.Center
23+
import com.streamliners.data.indianStatesAndUTs
24+
import kotlinx.coroutines.launch
25+
26+
@Composable
27+
fun DialogsSampleScreen(
28+
navController: NavController
29+
) {
30+
31+
val scope = rememberCoroutineScope()
32+
val snackbarHostState = remember { SnackbarHostState() }
33+
val selectDialogState = rememberSelectDialogState<String>()
34+
35+
TitleBarScaffold(
36+
title = "Dialogs Samples",
37+
navigateUp = { navController.navigateUp() },
38+
snackbarHostState = snackbarHostState
39+
) { paddingValues ->
40+
41+
Column(
42+
modifier = Modifier
43+
.fillMaxSize()
44+
.padding(paddingValues)
45+
.padding(16.dp),
46+
horizontalAlignment = Alignment.CenterHorizontally,
47+
verticalArrangement = Arrangement.Center
48+
) {
49+
Button(
50+
onClick = {
51+
selectDialogState.showForSingleSelection(
52+
"Select your Gender",
53+
listOf("Male", "Female", "Other")
54+
) { selection ->
55+
scope.launch {
56+
snackbarHostState.showSnackbar("You selected : $selection")
57+
}
58+
}
59+
}
60+
) {
61+
Text(text = "Show Single Select Dialog")
62+
}
63+
64+
Button(
65+
onClick = {
66+
selectDialogState.showForMultipleSelection(
67+
"Select your Favourite states",
68+
indianStatesAndUTs
69+
) { selection ->
70+
scope.launch {
71+
snackbarHostState.showSnackbar("You selected : $selection")
72+
}
73+
}
74+
}
75+
) {
76+
Text(text = "Show Multi Select Dialog")
77+
}
78+
}
79+
}
80+
81+
SelectDialog(mState = selectDialogState)
82+
}

app/src/main/java/com/streamliners/feature/home/HomeScreen.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@ fun HomeScreen(
6060
Text(text = "Helpers")
6161
}
6262

63+
Button(
64+
onClick = {
65+
navController.navigate(Route.DialogsSampleScreen.route)
66+
}
67+
) {
68+
Text(text = "Dialogs")
69+
}
70+
6371
Button(
6472
onClick = {
6573
navController.navigate(Route.OfficialSamplesScreen.route)

app/src/main/java/com/streamliners/ui/main/DroidLibsApp.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.streamliners.feature.compose.ComposeScreen
1414
import com.streamliners.feature.compose.DrawingPadSampleScreen
1515
import com.streamliners.feature.compose.search_bar.SearchBarSampleScreen
1616
import com.streamliners.feature.compose.text_input_layout.TextInputLayoutScreen
17+
import com.streamliners.feature.dialogs_sample.DialogsSampleScreen
1718
import com.streamliners.feature.helpers_sample.HelpersSampleScreen
1819
import com.streamliners.feature.home.HomeScreen
1920
import com.streamliners.feature.official_sample.OfficialSamplesScreen
@@ -106,5 +107,9 @@ fun BaseActivity.DroidLibsApp() {
106107
composable(Route.HelpersSampleScreen.route) {
107108
HelpersSampleScreen(navController = navController)
108109
}
110+
111+
composable(Route.DialogsSampleScreen.route) {
112+
DialogsSampleScreen(navController = navController)
113+
}
109114
}
110115
}

app/src/main/java/com/streamliners/ui/main/Route.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ sealed class Route(
2121
data object TaskStateSampleScreen: Route("taskState")
2222

2323
data object HelpersSampleScreen: Route("helpers")
24+
data object DialogsSampleScreen: Route("dialogs")
2425

2526
}

compose-android/src/main/java/com/streamliners/compose/android/comp/appBar/TitleBar.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,28 @@ import androidx.compose.material3.Icon
1212
import androidx.compose.material3.IconButton
1313
import androidx.compose.material3.MaterialTheme
1414
import androidx.compose.material3.Scaffold
15+
import androidx.compose.material3.SnackbarHost
16+
import androidx.compose.material3.SnackbarHostState
1517
import androidx.compose.material3.Text
1618
import androidx.compose.material3.TopAppBar
1719
import androidx.compose.material3.TopAppBarColors
1820
import androidx.compose.material3.TopAppBarDefaults.topAppBarColors
1921
import androidx.compose.material3.contentColorFor
2022
import androidx.compose.runtime.Composable
23+
import androidx.compose.runtime.LaunchedEffect
24+
import androidx.compose.runtime.remember
25+
import androidx.compose.runtime.rememberCoroutineScope
2126
import androidx.compose.ui.Modifier
2227
import androidx.compose.ui.graphics.Color
28+
import kotlinx.coroutines.launch
2329

2430
@OptIn(ExperimentalMaterial3Api::class)
2531
@Composable
2632
fun TitleBarScaffold(
2733
title: String,
2834
navigationIcon: (@Composable () -> Unit)? = null,
2935
navigateUp: (() -> Unit)? = null,
36+
snackbarHostState: SnackbarHostState? = null,
3037
containerColor: Color = MaterialTheme.colorScheme.background,
3138
contentColor: Color = contentColorFor(containerColor),
3239
actions: @Composable RowScope.() -> Unit = {},
@@ -40,6 +47,9 @@ fun TitleBarScaffold(
4047
TitleBar(
4148
title, navigationIcon, navigateUp, actions = actions
4249
)
50+
},
51+
snackbarHost = {
52+
snackbarHostState?.let { SnackbarHost(hostState = it) }
4353
}
4454
) { paddingValues ->
4555

0 commit comments

Comments
 (0)