Skip to content

Commit 04ee85e

Browse files
committed
Added default icon and title to tab as for web app it was not working
1 parent f11df98 commit 04ee85e

File tree

5 files changed

+40
-23
lines changed

5 files changed

+40
-23
lines changed

composeApp/src/commonMain/kotlin/ui/component/BottomNavigationBar.kt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,25 @@ import androidx.compose.runtime.setValue
2929
import cafe.adriel.voyager.navigator.tab.LocalTabNavigator
3030
import cafe.adriel.voyager.navigator.tab.Tab
3131
import cafe.adriel.voyager.navigator.tab.TabNavigator
32+
import org.jetbrains.compose.resources.DrawableResource
33+
import org.jetbrains.compose.resources.StringResource
3234
import util.AnimateVisibility
3335
import org.jetbrains.compose.resources.painterResource
36+
import org.jetbrains.compose.resources.stringResource
3437
import theme.White
3538
import theme.PrimaryColor
3639
import theme.SecondTextColor
37-
import travelbuddy.composeapp.generated.resources.Res
38-
import travelbuddy.composeapp.generated.resources.star
3940
import ui.screen.CartTab
4041
import ui.screen.FavoriteTab
4142
import ui.screen.HomeTab
4243
import ui.screen.ProfileTab
4344

45+
interface Tabx: Tab {
46+
fun defaultTitle(): StringResource
47+
fun defaultIcon(): DrawableResource
48+
}
4449

45-
val tabs = arrayListOf<Tab>().apply {
50+
val tabs = arrayListOf<Tabx>().apply {
4651
add(HomeTab)
4752
add(FavoriteTab)
4853
add(CartTab)
@@ -51,9 +56,9 @@ val tabs = arrayListOf<Tab>().apply {
5156

5257
@Composable
5358
private fun BottomMenuItem(
54-
tab: Tab,
59+
tab: Tabx,
5560
tabNavigator: TabNavigator,
56-
onItemClicked: @Composable (Tab) -> Unit
61+
onItemClicked: @Composable (Tabx) -> Unit
5762
) {
5863
var visible by remember { mutableStateOf(false) }
5964
if (visible) {
@@ -66,13 +71,13 @@ private fun BottomMenuItem(
6671
) {
6772
Icon(
6873
modifier = Modifier.size(34.dp).clickable { visible = true },
69-
painter = tab.options.icon ?: painterResource(Res.drawable.star),
70-
contentDescription = tab.options.title,
74+
painter = painterResource(tab.defaultIcon()),
75+
contentDescription = stringResource(tab.defaultTitle()),
7176
tint = if (tabNavigator.current == tab) PrimaryColor else SecondTextColor
7277
)
7378
Text(
7479
modifier = Modifier,
75-
text = tab.options.title,
80+
text = stringResource(tab.defaultTitle()),
7681
color = if (tabNavigator.current == tab) PrimaryColor else SecondTextColor,
7782
style = MaterialTheme.typography.bodySmall
7883
)
@@ -96,7 +101,7 @@ private fun BottomMenuItem(
96101
@Composable
97102
fun BottomMenuBar(
98103
modifier: Modifier = Modifier,
99-
tabs: List<Tab>,
104+
tabs: List<Tabx>,
100105
onItemClicked: @Composable (Tab) -> Unit,
101106
) {
102107
Box(
@@ -122,7 +127,7 @@ fun BottomMenuBar(
122127
}
123128

124129
@Composable
125-
private fun LazyItemScope.TabNavigationItem(tab: Tab, onItemClicked: @Composable (Tab) -> Unit) {
130+
private fun TabNavigationItem(tab: Tabx, onItemClicked: @Composable (Tabx) -> Unit) {
126131
val tabNavigator = LocalTabNavigator.current
127132
BottomMenuItem(tab,tabNavigator) {
128133
onItemClicked.invoke(it)

composeApp/src/commonMain/kotlin/ui/screen/CartTab.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ import androidx.compose.ui.unit.dp
1919
import cafe.adriel.voyager.navigator.LocalNavigator
2020
import cafe.adriel.voyager.navigator.Navigator
2121
import cafe.adriel.voyager.navigator.currentOrThrow
22-
import cafe.adriel.voyager.navigator.tab.Tab
2322
import cafe.adriel.voyager.navigator.tab.TabOptions
2423
import model.Destination
24+
import org.jetbrains.compose.resources.DrawableResource
25+
import org.jetbrains.compose.resources.StringResource
2526
import org.jetbrains.compose.resources.painterResource
2627
import org.jetbrains.compose.resources.stringResource
2728
import theme.TextColor
@@ -30,10 +31,13 @@ import travelbuddy.composeapp.generated.resources.cart_tab
3031
import travelbuddy.composeapp.generated.resources.menu_cart
3132
import ui.component.CartCard
3233
import ui.component.LoadItemAfterSafeCast
34+
import ui.component.Tabx
3335
import ui.viewmodel.HomeViewModel
3436
import util.BOTTOM_NAV_SPACE
3537

36-
data object CartTab : Tab {
38+
data object CartTab : Tabx {
39+
override fun defaultTitle(): StringResource = Res.string.cart_tab
40+
override fun defaultIcon(): DrawableResource = Res.drawable.menu_cart
3741

3842
override val options: TabOptions
3943
@Composable

composeApp/src/commonMain/kotlin/ui/screen/FavoriteTab.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ import cafe.adriel.voyager.core.screen.Screen
2020
import cafe.adriel.voyager.navigator.LocalNavigator
2121
import cafe.adriel.voyager.navigator.Navigator
2222
import cafe.adriel.voyager.navigator.currentOrThrow
23-
import cafe.adriel.voyager.navigator.tab.Tab
2423
import cafe.adriel.voyager.navigator.tab.TabOptions
25-
import data.FakeFavorites
2624
import model.Destination
25+
import org.jetbrains.compose.resources.DrawableResource
26+
import org.jetbrains.compose.resources.StringResource
2727
import org.jetbrains.compose.resources.painterResource
2828
import org.jetbrains.compose.resources.stringResource
2929
import ui.component.LoadItemAfterSafeCast
@@ -33,10 +33,13 @@ import travelbuddy.composeapp.generated.resources.Res
3333
import travelbuddy.composeapp.generated.resources.fav_tab
3434
import travelbuddy.composeapp.generated.resources.favorite_destination
3535
import travelbuddy.composeapp.generated.resources.menu_fav
36+
import ui.component.Tabx
3637
import ui.viewmodel.HomeViewModel
3738
import util.BOTTOM_NAV_SPACE
3839

39-
data object FavoriteTab : Tab {
40+
data object FavoriteTab : Tabx {
41+
override fun defaultTitle(): StringResource = Res.string.fav_tab
42+
override fun defaultIcon(): DrawableResource = Res.drawable.menu_fav
4043

4144
override val options: TabOptions
4245
@Composable

composeApp/src/commonMain/kotlin/ui/screen/HomeTab.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ package ui.screen
33
import androidx.compose.foundation.background
44
import androidx.compose.foundation.layout.Arrangement
55
import androidx.compose.foundation.layout.Column
6-
import androidx.compose.foundation.layout.Row
76
import androidx.compose.foundation.layout.fillMaxSize
87
import androidx.compose.foundation.layout.fillMaxWidth
98
import androidx.compose.foundation.layout.padding
10-
import androidx.compose.foundation.lazy.LazyColumn
119
import androidx.compose.foundation.lazy.LazyRow
1210
import androidx.compose.foundation.lazy.items
1311
import androidx.compose.material3.MaterialTheme
@@ -25,11 +23,11 @@ import cafe.adriel.voyager.core.screen.Screen
2523
import cafe.adriel.voyager.navigator.LocalNavigator
2624
import cafe.adriel.voyager.navigator.Navigator
2725
import cafe.adriel.voyager.navigator.currentOrThrow
28-
import cafe.adriel.voyager.navigator.tab.Tab
2926
import cafe.adriel.voyager.navigator.tab.TabOptions
3027
import data.FakeArticles
31-
import model.Article
3228
import model.Destination
29+
import org.jetbrains.compose.resources.DrawableResource
30+
import org.jetbrains.compose.resources.StringResource
3331
import org.jetbrains.compose.resources.painterResource
3432
import org.jetbrains.compose.resources.stringResource
3533
import travelbuddy.composeapp.generated.resources.Res
@@ -43,9 +41,9 @@ import ui.component.ArticleCard
4341
import ui.component.ChildLayout
4442
import ui.component.LoadItemAfterSafeCast
4543
import ui.component.NearestLocationItem
44+
import ui.component.Tabx
4645
import ui.component.TitleWithViewAllItem
4746
import ui.component.VerticalScrollLayout
48-
import ui.component.article.ArticleOther
4947
import ui.component.destinationSmallItem
5048
import ui.component.homeHeader
5149
import ui.component.loadCategoryItems
@@ -64,7 +62,10 @@ enum class HomeScreenContents {
6462
DESTINATION_SMALL_SECTION,
6563
}
6664

67-
data object HomeTab : Tab {
65+
data object HomeTab : Tabx {
66+
override fun defaultTitle(): StringResource = Res.string.home_tab
67+
override fun defaultIcon(): DrawableResource = Res.drawable.menu_home
68+
6869
override val options: TabOptions
6970
@Composable
7071
get() {

composeApp/src/commonMain/kotlin/ui/screen/ProfileTab.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,21 @@ import androidx.compose.ui.Modifier
1313
import cafe.adriel.voyager.navigator.LocalNavigator
1414
import cafe.adriel.voyager.navigator.Navigator
1515
import cafe.adriel.voyager.navigator.currentOrThrow
16-
import cafe.adriel.voyager.navigator.tab.Tab
1716
import cafe.adriel.voyager.navigator.tab.TabOptions
17+
import org.jetbrains.compose.resources.DrawableResource
18+
import org.jetbrains.compose.resources.StringResource
1819
import org.jetbrains.compose.resources.painterResource
1920
import org.jetbrains.compose.resources.stringResource
2021
import theme.TextColor
2122
import travelbuddy.composeapp.generated.resources.Res
2223
import travelbuddy.composeapp.generated.resources.menu_profile
2324
import travelbuddy.composeapp.generated.resources.profile_tab
25+
import ui.component.Tabx
2426
import util.BOTTOM_NAV_SPACE
2527

26-
data object ProfileTab : Tab {
28+
data object ProfileTab : Tabx {
29+
override fun defaultTitle(): StringResource = Res.string.profile_tab
30+
override fun defaultIcon(): DrawableResource = Res.drawable.menu_profile
2731

2832
override val options: TabOptions
2933
@Composable

0 commit comments

Comments
 (0)