Skip to content

Commit

Permalink
new : SelectDialog
Browse files Browse the repository at this point in the history
  • Loading branch information
LavishSwarnkar committed Feb 3, 2025
1 parent 59b65d3 commit bd38494
Show file tree
Hide file tree
Showing 7 changed files with 371 additions and 0 deletions.
43 changes: 43 additions & 0 deletions app/src/main/java/com/streamliners/data/IndianStatesList.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.streamliners.data

val indianStatesAndUTs = listOf(
// States
"Andhra Pradesh",
"Arunachal Pradesh",
"Assam",
"Bihar",
"Chhattisgarh",
"Goa",
"Gujarat",
"Haryana",
"Himachal Pradesh",
"Jharkhand",
"Karnataka",
"Kerala",
"Madhya Pradesh",
"Maharashtra",
"Manipur",
"Meghalaya",
"Mizoram",
"Nagaland",
"Odisha",
"Punjab",
"Rajasthan",
"Sikkim",
"Tamil Nadu",
"Telangana",
"Tripura",
"Uttar Pradesh",
"Uttarakhand",
"West Bengal",

// Union Territories
"Andaman and Nicobar Islands",
"Chandigarh",
"Dadra and Nagar Haveli and Daman and Diu",
"Delhi",
"Jammu and Kashmir",
"Ladakh",
"Lakshadweep",
"Puducherry"
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package com.streamliners.feature.dialogs_sample

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.navigation.NavController
import com.streamliners.compose.android.comp.appBar.TitleBarScaffold
import com.streamliners.compose.android.comp.selectDialog.SelectDialog
import com.streamliners.compose.android.comp.selectDialog.rememberSelectDialogState
import com.streamliners.compose.android.comp.selectDialog.showForMultipleSelection
import com.streamliners.compose.android.comp.selectDialog.showForSingleSelection
import com.streamliners.compose.comp.Center
import com.streamliners.data.indianStatesAndUTs
import kotlinx.coroutines.launch

@Composable
fun DialogsSampleScreen(
navController: NavController
) {

val scope = rememberCoroutineScope()
val snackbarHostState = remember { SnackbarHostState() }
val selectDialogState = rememberSelectDialogState<String>()

TitleBarScaffold(
title = "Dialogs Samples",
navigateUp = { navController.navigateUp() },
snackbarHostState = snackbarHostState
) { paddingValues ->

Column(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Button(
onClick = {
selectDialogState.showForSingleSelection(
"Select your Gender",
listOf("Male", "Female", "Other")
) { selection ->
scope.launch {
snackbarHostState.showSnackbar("You selected : $selection")
}
}
}
) {
Text(text = "Show Single Select Dialog")
}

Button(
onClick = {
selectDialogState.showForMultipleSelection(
"Select your Favourite states",
indianStatesAndUTs
) { selection ->
scope.launch {
snackbarHostState.showSnackbar("You selected : $selection")
}
}
}
) {
Text(text = "Show Multi Select Dialog")
}
}
}

SelectDialog(mState = selectDialogState)
}
8 changes: 8 additions & 0 deletions app/src/main/java/com/streamliners/feature/home/HomeScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,14 @@ fun HomeScreen(
Text(text = "Helpers")
}

Button(
onClick = {
navController.navigate(Route.DialogsSampleScreen.route)
}
) {
Text(text = "Dialogs")
}

Button(
onClick = {
navController.navigate(Route.OfficialSamplesScreen.route)
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/java/com/streamliners/ui/main/DroidLibsApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import com.streamliners.feature.compose.ComposeScreen
import com.streamliners.feature.compose.DrawingPadSampleScreen
import com.streamliners.feature.compose.search_bar.SearchBarSampleScreen
import com.streamliners.feature.compose.text_input_layout.TextInputLayoutScreen
import com.streamliners.feature.dialogs_sample.DialogsSampleScreen
import com.streamliners.feature.helpers_sample.HelpersSampleScreen
import com.streamliners.feature.home.HomeScreen
import com.streamliners.feature.official_sample.OfficialSamplesScreen
Expand Down Expand Up @@ -106,5 +107,9 @@ fun BaseActivity.DroidLibsApp() {
composable(Route.HelpersSampleScreen.route) {
HelpersSampleScreen(navController = navController)
}

composable(Route.DialogsSampleScreen.route) {
DialogsSampleScreen(navController = navController)
}
}
}
1 change: 1 addition & 0 deletions app/src/main/java/com/streamliners/ui/main/Route.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ sealed class Route(
data object TaskStateSampleScreen: Route("taskState")

data object HelpersSampleScreen: Route("helpers")
data object DialogsSampleScreen: Route("dialogs")

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,28 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarColors
import androidx.compose.material3.TopAppBarDefaults.topAppBarColors
import androidx.compose.material3.contentColorFor
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import kotlinx.coroutines.launch

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun TitleBarScaffold(
title: String,
navigationIcon: (@Composable () -> Unit)? = null,
navigateUp: (() -> Unit)? = null,
snackbarHostState: SnackbarHostState? = null,
containerColor: Color = MaterialTheme.colorScheme.background,
contentColor: Color = contentColorFor(containerColor),
actions: @Composable RowScope.() -> Unit = {},
Expand All @@ -40,6 +47,9 @@ fun TitleBarScaffold(
TitleBar(
title, navigationIcon, navigateUp, actions = actions
)
},
snackbarHost = {
snackbarHostState?.let { SnackbarHost(hostState = it) }
}
) { paddingValues ->

Expand Down
Loading

0 comments on commit bd38494

Please sign in to comment.