Skip to content

Commit b90a793

Browse files
henrik-skyclaude
andcommitted
fix(DON-2676): Fix double-clip, add semantics tests, restore npmjs resolved URLs
- Remove redundant clip() from BpkNavigationTabImpl by moving it to always apply once in BpkNavigationTab before the selectable modifier - Add withoutIcons snapshot test and semanticsSelectedState assertions - Restore registry.npmjs.org resolved URLs in package-lock.json (Artifactory rewrites occur on npm install due to local ~/.npmrc config) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1686534 commit b90a793

File tree

3 files changed

+47
-15
lines changed

3 files changed

+47
-15
lines changed

app/src/test/java/net/skyscanner/backpack/compose/navigationtabgroup/BpkNavigationTabGroupTest.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
package net.skyscanner.backpack.compose.navigationtabgroup
2020

2121
import androidx.compose.ui.graphics.Color
22+
import androidx.compose.ui.test.assertCountEquals
23+
import androidx.compose.ui.test.assertIsNotSelected
24+
import androidx.compose.ui.test.assertIsSelected
25+
import androidx.compose.ui.test.isSelectable
26+
import androidx.compose.ui.test.onAllNodes
2227
import net.skyscanner.backpack.compose.BpkSnapshotTest
2328
import net.skyscanner.backpack.compose.theme.BpkTheme
2429
import net.skyscanner.backpack.demo.compose.NavigationTabGroupSample
@@ -35,4 +40,31 @@ class BpkNavigationTabGroupTest : BpkSnapshotTest() {
3540
fun onDark() = snap(background = { BpkTheme.colors.surfaceContrast }) {
3641
NavigationTabGroupSample(style = BpkNavigationTabGroupStyle.SurfaceContrast)
3742
}
43+
44+
@Test
45+
fun withoutIcons() = snap(background = { Color.Transparent }) {
46+
BpkNavigationTabGroup(
47+
tabs = listOf(
48+
BpkNavigationTabItem("Tab 1"),
49+
BpkNavigationTabItem("Tab 2"),
50+
BpkNavigationTabItem("Tab 3"),
51+
),
52+
selectedIndex = 0,
53+
onItemClicked = {},
54+
)
55+
}
56+
57+
@Test
58+
fun semanticsSelectedState() = snap(
59+
background = { Color.Transparent },
60+
assertion = {
61+
onAllNodes(isSelectable()).assertCountEquals(4)
62+
onAllNodes(isSelectable())[0].assertIsSelected()
63+
onAllNodes(isSelectable())[1].assertIsNotSelected()
64+
onAllNodes(isSelectable())[2].assertIsNotSelected()
65+
onAllNodes(isSelectable())[3].assertIsNotSelected()
66+
},
67+
) {
68+
NavigationTabGroupSample()
69+
}
3870
}

backpack-compose/src/main/kotlin/net/skyscanner/backpack/compose/navigationtabgroup/internal/BpkNavigationTab.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,15 @@ internal fun BpkNavigationTab(
7373
style = style,
7474
icon = icon,
7575
interactionSource = interactionSource,
76-
modifier = modifier.applyIf(onClick != null) {
77-
clip(NavigationTabShape)
78-
.selectable(
76+
modifier = modifier
77+
.clip(NavigationTabShape)
78+
.applyIf(onClick != null) {
79+
selectable(
7980
selected = selected,
8081
interactionSource = interactionSource,
8182
indication = bpkRipple(),
8283
) { onClick!!.invoke() }
83-
},
84+
},
8485
)
8586
}
8687

@@ -131,7 +132,6 @@ private fun BpkNavigationTabImpl(
131132
modifier = modifier
132133
.heightIn(min = 48.dp)
133134
.widthIn(min = 76.dp)
134-
.clip(NavigationTabShape)
135135
.background(backgroundColor)
136136
.border(BorderStroke(BpkBorderSize.Sm, strokeColor), NavigationTabShape)
137137
.padding(horizontal = BpkSpacing.Base, vertical = BpkSpacing.Md),

package-lock.json

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)