Skip to content

Commit

Permalink
catalog: add material dialog demo
Browse files Browse the repository at this point in the history
  • Loading branch information
hrach committed Nov 5, 2021
1 parent 50e611e commit 037597a
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 0 deletions.
1 change: 1 addition & 0 deletions catalog/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ dependencies {
implementation(libs.compose.animation)
implementation(libs.compose.foundation)
implementation(libs.compose.layout)
implementation(libs.compose.material)
implementation(libs.compose.materialIconsExtended)
implementation(libs.compose.navigation)
implementation(libs.compose.runtime)
Expand Down
22 changes: 22 additions & 0 deletions catalog/src/main/java/kiwi/orbit/compose/catalog/NavGraph.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,16 @@ import androidx.compose.runtime.remember
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.dialog
import androidx.navigation.compose.rememberNavController
import kiwi.orbit.compose.catalog.screens.AlertScreen
import kiwi.orbit.compose.catalog.screens.BadgeScreen
import kiwi.orbit.compose.catalog.screens.ButtonScreen
import kiwi.orbit.compose.catalog.screens.CardsScreen
import kiwi.orbit.compose.catalog.screens.CheckboxScreen
import kiwi.orbit.compose.catalog.screens.ColorsScreen
import kiwi.orbit.compose.catalog.screens.DialogsMaterialDialog
import kiwi.orbit.compose.catalog.screens.DialogsScreen
import kiwi.orbit.compose.catalog.screens.IconsScreen
import kiwi.orbit.compose.catalog.screens.IllustrationsScreen
import kiwi.orbit.compose.catalog.screens.MainScreen
Expand All @@ -36,6 +39,8 @@ private object MainDestinations {
const val BUTTON = "button"
const val CARDS = "cards"
const val CHECKBOX = "checkbox"
const val DIALOGS = "dialogs"
const val DIALOGS_MATERIAL_DIALOG = "dialgos_material_dialog"
const val RADIO = "radio"
const val STEPPER = "stepper"
const val SWITCH = "switch"
Expand Down Expand Up @@ -89,6 +94,15 @@ fun NavGraph(
composable(MainDestinations.CHECKBOX) {
CheckboxScreen(actions::navigateUp)
}
composable(MainDestinations.DIALOGS) {
DialogsScreen(
actions::navigateUp,
actions::showDialogsMaterialDialog,
)
}
dialog(MainDestinations.DIALOGS_MATERIAL_DIALOG) {
DialogsMaterialDialog(navController)
}
composable(MainDestinations.RADIO) {
RadioScreen(actions::navigateUp)
}
Expand Down Expand Up @@ -154,6 +168,14 @@ class MainActions(
navController.navigate(MainDestinations.CHECKBOX)
}

fun showDialogs() {
navController.navigate(MainDestinations.DIALOGS)
}

fun showDialogsMaterialDialog() {
navController.navigate(MainDestinations.DIALOGS_MATERIAL_DIALOG)
}

fun showRadio() {
navController.navigate(MainDestinations.RADIO)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package kiwi.orbit.compose.catalog.screens

import androidx.compose.material.AlertDialog
import androidx.compose.runtime.Composable
import androidx.navigation.NavController
import kiwi.orbit.compose.ui.controls.Text

@Composable
fun DialogsMaterialDialog(navController: NavController) {
DialogsMaterialDialog(
onClose = { navController.popBackStack() },
)
}

@Suppress("Dependency")
@Composable
private fun DialogsMaterialDialog(
onClose: () -> Unit,
) {
AlertDialog(
onDismissRequest = onClose,
title = { androidx.compose.material.Text("Title") },
text = { androidx.compose.material.Text("Some message.") },
confirmButton = {
androidx.compose.material.TextButton(onClick = onClose) {
Text("Ok")
}
}
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package kiwi.orbit.compose.catalog.screens

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import kiwi.orbit.compose.catalog.Screen
import kiwi.orbit.compose.ui.controls.ButtonPrimary
import kiwi.orbit.compose.ui.controls.Text

@Composable
fun DialogsScreen(
onUpClick: () -> Unit,
onShowMaterialDialog: () -> Unit,
) {
Screen(
title = "Dialogs",
onUpClick = onUpClick,
withBackground = false,
) {
Box(
Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.padding(it)
) {
DialogsScreenInner(onShowMaterialDialog)
}
}
}

@Composable
private fun DialogsScreenInner(
onShowMaterialDialog: () -> Unit,
) {
Column(Modifier.padding(16.dp)) {
ButtonPrimary(
onClick = onShowMaterialDialog,
) { Text("Show Material Dialog") }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ fun MainScreen(
Triple("Button", { Icon(MaterialIcons.SmartButton, null) }, actions::showButton),
Triple("Cards / Tiles", { Icon(MaterialIcons.Article, null) }, actions::showCards),
Triple("Checkbox", { Icon(MaterialIcons.CheckBox, null) }, actions::showCheckbox),
Triple("Dialogs", { Icon(Icons.Chat, null) }, actions::showDialogs),
Triple("Radio", { Icon(Icons.CircleFilled, null) }, actions::showRadio),
Triple("Stepper", { Icon(Icons.PlusCircle, null) }, actions::showStepper),
Triple("Switch", { Icon(MaterialIcons.ToggleOn, null) }, actions::showSwitch),
Expand Down

0 comments on commit 037597a

Please sign in to comment.