Skip to content

Commit a9532da

Browse files
committed
tab-navigator: make tabOptions interface
1 parent e14783e commit a9532da

File tree

8 files changed

+38
-39
lines changed

8 files changed

+38
-39
lines changed

docs/navigation/tab-navigation.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ Voyager provides a specialized navigator for tabs : the `TabNavigator`.
77

88
The `Tab` interface, like the `Screen`, has a `Content()` composable function, but also requires a `TabOptions`. 
99

10+
!!! warning
11+
You need to create a `data class` implementing the `TabOptions` interface.
12+
13+
```kotlin
14+
data class TabOptionsModel(
15+
override val index: UShort,
16+
override val title: String,
17+
override val icon: Painter?
18+
) : TabOptions
19+
```
20+
1021
```kotlin
1122
object HomeTab : Tab {
1223

@@ -17,7 +28,7 @@ object HomeTab : Tab {
1728
val icon = rememberVectorPainter(Icons.Default.Home)
1829

1930
return remember {
20-
TabOptions(
31+
TabOptionsModel(
2132
index = 0u,
2233
title = title,
2334
icon = icon

samples/android/src/main/java/cafe/adriel/voyager/sample/tabNavigation/tabs/FavoritesTab.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ object FavoritesTab : Tab {
1616
val icon = rememberVectorPainter(Icons.Default.Favorite)
1717

1818
return remember {
19-
TabOptions(
19+
TabOptionsModel(
2020
index = 1u,
2121
title = "Favorites",
2222
icon = icon

samples/android/src/main/java/cafe/adriel/voyager/sample/tabNavigation/tabs/HomeTab.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ object HomeTab : Tab {
1616
val icon = rememberVectorPainter(Icons.Default.Home)
1717

1818
return remember {
19-
TabOptions(
19+
TabOptionsModel(
2020
index = 0u,
2121
title = "Home",
2222
icon = icon

samples/android/src/main/java/cafe/adriel/voyager/sample/tabNavigation/tabs/ProfileTab.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ object ProfileTab : Tab {
1616
val icon = rememberVectorPainter(Icons.Default.Person)
1717

1818
return remember {
19-
TabOptions(
19+
TabOptionsModel(
2020
index = 2u,
2121
title = "Profile",
2222
icon = icon
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package cafe.adriel.voyager.sample.tabNavigation.tabs
2+
3+
import androidx.compose.ui.graphics.painter.Painter
4+
import cafe.adriel.voyager.navigator.tab.TabOptions
5+
6+
data class TabOptionsModel(
7+
override val index: UShort,
8+
override val title: String,
9+
override val icon: Painter?
10+
): TabOptions

voyager-tab-navigator/api/android/voyager-tab-navigator.api

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,9 @@ public final class cafe/adriel/voyager/navigator/tab/TabNavigatorKt {
3030
public static final fun getLocalTabNavigator ()Landroidx/compose/runtime/ProvidableCompositionLocal;
3131
}
3232

33-
public final class cafe/adriel/voyager/navigator/tab/TabOptions {
34-
public static final field $stable I
35-
public synthetic fun <init> (SLjava/lang/String;Landroidx/compose/ui/graphics/painter/Painter;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
36-
public synthetic fun <init> (SLjava/lang/String;Landroidx/compose/ui/graphics/painter/Painter;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
37-
public final fun component1-Mh2AYeg ()S
38-
public final fun component2 ()Ljava/lang/String;
39-
public final fun component3 ()Landroidx/compose/ui/graphics/painter/Painter;
40-
public final fun copy-_TFR7lA (SLjava/lang/String;Landroidx/compose/ui/graphics/painter/Painter;)Lcafe/adriel/voyager/navigator/tab/TabOptions;
41-
public static synthetic fun copy-_TFR7lA$default (Lcafe/adriel/voyager/navigator/tab/TabOptions;SLjava/lang/String;Landroidx/compose/ui/graphics/painter/Painter;ILjava/lang/Object;)Lcafe/adriel/voyager/navigator/tab/TabOptions;
42-
public fun equals (Ljava/lang/Object;)Z
43-
public final fun getIcon ()Landroidx/compose/ui/graphics/painter/Painter;
44-
public final fun getIndex-Mh2AYeg ()S
45-
public final fun getTitle ()Ljava/lang/String;
46-
public fun hashCode ()I
47-
public fun toString ()Ljava/lang/String;
33+
public abstract interface class cafe/adriel/voyager/navigator/tab/TabOptions {
34+
public abstract fun getIcon ()Landroidx/compose/ui/graphics/painter/Painter;
35+
public abstract fun getIndex-Mh2AYeg ()S
36+
public abstract fun getTitle ()Ljava/lang/String;
4837
}
4938

voyager-tab-navigator/api/desktop/voyager-tab-navigator.api

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,9 @@ public final class cafe/adriel/voyager/navigator/tab/TabNavigatorKt {
3030
public static final fun getLocalTabNavigator ()Landroidx/compose/runtime/ProvidableCompositionLocal;
3131
}
3232

33-
public final class cafe/adriel/voyager/navigator/tab/TabOptions {
34-
public static final field $stable I
35-
public synthetic fun <init> (SLjava/lang/String;Landroidx/compose/ui/graphics/painter/Painter;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
36-
public synthetic fun <init> (SLjava/lang/String;Landroidx/compose/ui/graphics/painter/Painter;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
37-
public final fun component1-Mh2AYeg ()S
38-
public final fun component2 ()Ljava/lang/String;
39-
public final fun component3 ()Landroidx/compose/ui/graphics/painter/Painter;
40-
public final fun copy-_TFR7lA (SLjava/lang/String;Landroidx/compose/ui/graphics/painter/Painter;)Lcafe/adriel/voyager/navigator/tab/TabOptions;
41-
public static synthetic fun copy-_TFR7lA$default (Lcafe/adriel/voyager/navigator/tab/TabOptions;SLjava/lang/String;Landroidx/compose/ui/graphics/painter/Painter;ILjava/lang/Object;)Lcafe/adriel/voyager/navigator/tab/TabOptions;
42-
public fun equals (Ljava/lang/Object;)Z
43-
public final fun getIcon ()Landroidx/compose/ui/graphics/painter/Painter;
44-
public final fun getIndex-Mh2AYeg ()S
45-
public final fun getTitle ()Ljava/lang/String;
46-
public fun hashCode ()I
47-
public fun toString ()Ljava/lang/String;
33+
public abstract interface class cafe/adriel/voyager/navigator/tab/TabOptions {
34+
public abstract fun getIcon ()Landroidx/compose/ui/graphics/painter/Painter;
35+
public abstract fun getIndex-Mh2AYeg ()S
36+
public abstract fun getTitle ()Ljava/lang/String;
4837
}
4938

voyager-tab-navigator/src/commonMain/kotlin/cafe/adriel/voyager/navigator/tab/Tab.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ public fun CurrentTab() {
1414
}
1515
}
1616

17-
public data class TabOptions(
18-
val index: UShort,
19-
val title: String,
20-
val icon: Painter? = null
21-
)
17+
public interface TabOptions {
18+
public val index: UShort
19+
public val title: String
20+
public val icon: Painter?
21+
}
2222

2323
public interface Tab : Screen {
2424

0 commit comments

Comments
 (0)