Skip to content

Commit d8c15c1

Browse files
committed
feat: add selected bottom tab color selection
1 parent 99866f1 commit d8c15c1

File tree

5 files changed

+71
-38
lines changed

5 files changed

+71
-38
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ dependencies {
130130
implementation(Deps.Lifecycle.runtimeCompose)
131131
implementation("androidx.navigation:navigation-compose:2.9.0")
132132

133-
implementation("androidx.compose.material3:material3:1.2.1")
133+
implementation("androidx.compose.material3:material3:1.3.1")
134134
implementation("com.google.accompanist:accompanist-themeadapter-material3:0.36.0")
135135

136136
implementation("androidx.appcompat:appcompat:1.7.0")

app/src/main/java/com/yogeshpaliyal/keypass/ui/nav/components/KeyPassBottomBar.kt

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package com.yogeshpaliyal.keypass.ui.nav.components
22

3+
import androidx.compose.foundation.selection.selectable
34
import androidx.compose.material.icons.Icons
5+
import androidx.compose.material.icons.outlined.Home
6+
import androidx.compose.material.icons.outlined.Menu
7+
import androidx.compose.material.icons.outlined.Settings
48
import androidx.compose.material.icons.rounded.Add
5-
import androidx.compose.material.icons.rounded.Menu
6-
import androidx.compose.material.icons.rounded.Settings
9+
import androidx.compose.material3.Button
10+
import androidx.compose.material3.ButtonDefaults
711
import androidx.compose.material3.FloatingActionButton
812
import androidx.compose.material3.Icon
913
import androidx.compose.material3.IconButton
14+
import androidx.compose.material3.IconButtonDefaults
15+
import androidx.compose.material3.IconToggleButton
1016
import androidx.compose.material3.MaterialTheme
1117
import androidx.compose.runtime.Composable
1218
import androidx.compose.runtime.getValue
@@ -17,36 +23,59 @@ import com.yogeshpaliyal.keypass.ui.commonComponents.DefaultBottomAppBar
1723
import com.yogeshpaliyal.keypass.ui.redux.actions.BottomSheetAction
1824
import com.yogeshpaliyal.keypass.ui.redux.actions.NavigationAction
1925
import com.yogeshpaliyal.keypass.ui.redux.states.AccountDetailState
26+
import com.yogeshpaliyal.keypass.ui.redux.states.HomeState
2027
import com.yogeshpaliyal.keypass.ui.redux.states.KeyPassState
28+
import com.yogeshpaliyal.keypass.ui.redux.states.ScreenState
2129
import com.yogeshpaliyal.keypass.ui.redux.states.SettingsState
2230
import org.reduxkotlin.compose.rememberDispatcher
2331
import org.reduxkotlin.compose.selectState
2432

33+
34+
35+
2536
@Composable
2637
fun KeyPassBottomBar() {
27-
val showMainBottomAppBar by selectState<KeyPassState, Boolean> { this.currentScreen.showMainBottomAppBar }
38+
val currentScreen: ScreenState by selectState<KeyPassState, ScreenState> { this.currentScreen }
39+
val showMainBottomAppBar = currentScreen.showMainBottomAppBar
2840
val dispatchAction = rememberDispatcher()
2941

3042
if (!showMainBottomAppBar) {
3143
return
3244
}
3345

3446
DefaultBottomAppBar(showBackButton = false, extraAction = {
47+
48+
IconToggleButton (colors = IconButtonDefaults.iconToggleButtonColors(
49+
checkedContainerColor = MaterialTheme.colorScheme.primaryContainer,
50+
checkedContentColor = MaterialTheme.colorScheme.onPrimaryContainer
51+
), checked = currentScreen is HomeState, onCheckedChange = {
52+
dispatchAction(NavigationAction(HomeState(), true))
53+
}) {
54+
Icon(
55+
painter = rememberVectorPainter(image = Icons.Outlined.Home),
56+
contentDescription = "Home",
57+
tint = MaterialTheme.colorScheme.onSurface
58+
)
59+
}
60+
3561
IconButton(onClick = {
3662
dispatchAction(BottomSheetAction.HomeNavigationMenu(true))
3763
}) {
3864
Icon(
39-
painter = rememberVectorPainter(image = Icons.Rounded.Menu),
65+
painter = rememberVectorPainter(image = Icons.Outlined.Menu),
4066
contentDescription = "Menu",
4167
tint = MaterialTheme.colorScheme.onSurface
4268
)
4369
}
4470

45-
IconButton(onClick = {
71+
IconToggleButton(colors = IconButtonDefaults.iconToggleButtonColors(
72+
checkedContainerColor = MaterialTheme.colorScheme.primaryContainer,
73+
checkedContentColor = MaterialTheme.colorScheme.onPrimaryContainer
74+
), checked = currentScreen is SettingsState, onCheckedChange = {
4675
dispatchAction(NavigationAction(SettingsState))
4776
}) {
4877
Icon(
49-
painter = rememberVectorPainter(image = Icons.Rounded.Settings),
78+
painter = rememberVectorPainter(image = Icons.Outlined.Settings),
5079
contentDescription = "Settings",
5180
tint = MaterialTheme.colorScheme.onSurface
5281
)

app/src/main/java/com/yogeshpaliyal/keypass/ui/nav/components/NavItem.kt

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.compose.material.ripple.rememberRipple
1111
import androidx.compose.material3.Icon
1212
import androidx.compose.material3.MaterialTheme
1313
import androidx.compose.material3.Text
14+
import androidx.compose.material3.TextButton
1415
import androidx.compose.runtime.Composable
1516
import androidx.compose.runtime.remember
1617
import androidx.compose.ui.Modifier
@@ -21,24 +22,22 @@ import com.yogeshpaliyal.keypass.ui.nav.NavigationModelItem
2122

2223
@Composable
2324
fun NavItem(item: NavigationModelItem.NavMenuItem, onClick: () -> Unit) {
24-
Row(
25-
modifier = Modifier
26-
.clickable(
27-
interactionSource = remember { MutableInteractionSource() },
28-
indication = rememberRipple(bounded = true),
29-
onClick = onClick
25+
TextButton(onClick) {
26+
Row(
27+
modifier = Modifier
28+
.padding(16.dp)
29+
.fillMaxWidth(1f)
30+
) {
31+
Icon(
32+
painter = painterResource(id = item.icon),
33+
contentDescription = ""
3034
)
31-
.padding(16.dp)
32-
.fillMaxWidth(1f)
33-
) {
34-
Icon(
35-
painter = painterResource(id = item.icon),
36-
contentDescription = ""
37-
)
38-
Spacer(modifier = Modifier.width(32.dp))
39-
Text(
40-
text = stringResource(id = item.titleRes),
41-
style = MaterialTheme.typography.titleMedium
42-
)
35+
Spacer(modifier = Modifier.width(32.dp))
36+
Text(
37+
text = stringResource(id = item.titleRes),
38+
style = MaterialTheme.typography.titleMedium
39+
)
40+
}
4341
}
42+
4443
}

app/src/main/java/com/yogeshpaliyal/keypass/ui/nav/components/NavMenuFolder.kt

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.padding
88
import androidx.compose.material.ripple.rememberRipple
99
import androidx.compose.material3.MaterialTheme
1010
import androidx.compose.material3.Text
11+
import androidx.compose.material3.TextButton
1112
import androidx.compose.runtime.Composable
1213
import androidx.compose.runtime.remember
1314
import androidx.compose.ui.Modifier
@@ -16,22 +17,25 @@ import com.yogeshpaliyal.keypass.ui.nav.NavigationModelItem
1617

1718
@Composable
1819
fun NavMenuFolder(folder: NavigationModelItem.NavTagItem, onClick: () -> Unit) {
19-
Box(
20-
modifier = Modifier
21-
.clickable(
22-
interactionSource = remember { MutableInteractionSource() },
23-
indication = rememberRipple(
24-
bounded = true
25-
),
26-
onClick = onClick
27-
)
28-
.padding(16.dp)
29-
.fillMaxWidth(1f)
30-
31-
) {
20+
TextButton(onClick) {
3221
Text(
3322
text = folder.tag,
3423
style = MaterialTheme.typography.titleMedium
3524
)
3625
}
26+
// Box(
27+
// modifier = Modifier
28+
// .clickable(
29+
// interactionSource = remember { MutableInteractionSource() },
30+
// indication = rememberRipple(
31+
// bounded = true
32+
// ),
33+
// onClick = onClick
34+
// )
35+
// .padding(16.dp)
36+
// .fillMaxWidth(1f)
37+
//
38+
// ) {
39+
//
40+
// }
3741
}

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ plugins {
3030
id("org.jetbrains.kotlin.plugin.serialization") version (Versions.kotlin)
3131
id("androidx.baselineprofile") version "1.3.4" apply false
3232
id("com.android.test") version "8.10.0" apply false
33+
id("org.jetbrains.kotlin.plugin.compose") version(Versions.kotlin) apply false
3334
}
3435

3536

0 commit comments

Comments
 (0)