From 774a99bbf2a23944de4fdfeb126c730f7e8bba06 Mon Sep 17 00:00:00 2001 From: Raja Jawahar Date: Wed, 10 Jan 2024 12:04:07 +0530 Subject: [PATCH 1/8] TUIFloatingNavigationButton created --- .../uicomponents/components/TUITextRow.kt | 2 +- .../components/tab/TUIFloatingNavButton.kt | 115 ++++++++++++++++++ 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt diff --git a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/TUITextRow.kt b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/TUITextRow.kt index 9b41c504..231db87e 100644 --- a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/TUITextRow.kt +++ b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/TUITextRow.kt @@ -68,7 +68,7 @@ import com.tarkalabs.uicomponents.theme.TUITheme @Composable fun TUITextRow( title: String, style: TextRowStyle = Title, - modifier: Modifier = Modifier.fillMaxWidth(), + modifier: Modifier = Modifier, iconOne: TarkaIcon? = null, iconTwo: TarkaIcon? = null, buttonTitle: String? = null, diff --git a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt new file mode 100644 index 00000000..070851a3 --- /dev/null +++ b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt @@ -0,0 +1,115 @@ +package com.tarkalabs.uicomponents.components.tab + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.tarkalabs.tarkaicons.ChevronDown24 +import com.tarkalabs.tarkaicons.Diversity24 +import com.tarkalabs.tarkaicons.TarkaIcon +import com.tarkalabs.tarkaicons.TarkaIcons +import com.tarkalabs.uicomponents.components.VerticalSpacer +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.BURGER +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.NAVIGATION +import com.tarkalabs.uicomponents.extentions.clickableWithoutRipple +import com.tarkalabs.uicomponents.theme.TUITheme + +enum class TUIFloatingNavButtonStyle { + NAVIGATION, + LIST, + BURGER; + + companion object { + val defaultStyle: TUIFloatingNavButtonStyle = NAVIGATION + } +} + +sealed class TUIFloatingNavButtonContentType { + data class List( + val iconOne: TarkaIcon, + val onIconOneClick: (() -> Unit)? = null, + val iconTwo: TarkaIcon, + val onIconTwoClick: (() -> Unit)? = null, + val iconThree: TarkaIcon, + val onIconFourClick: (() -> Unit)? = null + ) : TUIFloatingNavButtonContentType() + + data class Navigation(val text: String) : TUIFloatingNavButtonContentType() + object Burger : TUIFloatingNavButtonContentType() +} + +@Composable fun TUIFloatingNavButton( + modifier: Modifier = Modifier, + style: TUIFloatingNavButtonStyle = TUIFloatingNavButtonStyle.defaultStyle, + leadingIcon: TarkaIcon? = null, + title: String, + onClicked: () -> Unit +) { + + Row(modifier a w2 = modifier + .wrapContentSize() + .clickableWithoutRipple { + if (style == NAVIGATION || style == BURGER) onClicked() + } + .background(shape = RoundedCornerShape(32.dp), color = TUITheme.colors.primaryAltHover) + .testTag("")) { + + Row( + modifier = Modifier.padding(horizontal = 16.dp, vertical = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + + if (leadingIcon != null) Icon( + painter = painterResource(id = leadingIcon.iconRes), + contentDescription = leadingIcon.contentDescription, + tint = TUITheme.colors.primary, + ) + + Text( + modifier = Modifier.padding(horizontal = 8.dp), + text = title, + style = TUITheme.typography.heading6, + color = TUITheme.colors.primary + ) + Icon( + painter = painterResource(id = TarkaIcons.Filled.ChevronDown24.iconRes), + contentDescription = TarkaIcons.Filled.ChevronDown24.contentDescription, + tint = TUITheme.colors.primary, + ) + + } + + } +} + +@Preview @Composable fun TUIFloatingNavButtonPreview() { + TUITheme { + + var currentTabItem by remember { + mutableStateOf(0) + } + + Column(modifier = Modifier.wrapContentSize(Alignment.Center)) { + VerticalSpacer(space = 40) + TUIFloatingNavButton(leadingIcon = TarkaIcons.Filled.Diversity24, title = "Overview") { + + } + VerticalSpacer(space = 40) + } + } +} \ No newline at end of file From 4ac620a3b8550a0f8b99aae2a648667a8985e971 Mon Sep 17 00:00:00 2001 From: Megna Date: Tue, 23 Jan 2024 16:03:40 +0530 Subject: [PATCH 2/8] Changed bg color for floatingNavBar --- .../tarkalabs/uicomponents/components/tab/TUIFloatingNavBar.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavBar.kt b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavBar.kt index 731d6a88..f54196c3 100644 --- a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavBar.kt +++ b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavBar.kt @@ -44,7 +44,7 @@ import com.tarkalabs.uicomponents.theme.TUITheme horizontalArrangement = Arrangement.SpaceAround, modifier = modifier .horizontalScroll(rememberScrollState()) - .background(color = TUITheme.colors.onPrimary, shape = RoundedCornerShape(32.dp)) + .background(color = TUITheme.colors.primaryAltHover, shape = RoundedCornerShape(32.dp)) .border( width = 1.dp, color = TUITheme.colors.primaryAltHover, From abe04bb1d72da6cf2c541dd2bdce0dc1e3aa196f Mon Sep 17 00:00:00 2001 From: Megna Date: Tue, 23 Jan 2024 16:04:14 +0530 Subject: [PATCH 3/8] Removed unwanted args. --- .../java/com/tarkalabs/uicomponents/TUISearchBarTest.kt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/TUISearchBarTest.kt b/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/TUISearchBarTest.kt index 056a2b69..0044cc44 100644 --- a/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/TUISearchBarTest.kt +++ b/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/TUISearchBarTest.kt @@ -37,7 +37,6 @@ class TUISearchBarTest { searchBarTags = searchBarTags, trailingIcon = TarkaIcons.Regular.Dismiss24, leadingIcon = TarkaIcons.Regular.Search24, - showKeyboard = false ) } composable.onNodeWithTag(searchBarTags.parentTag).assertIsDisplayed() @@ -54,7 +53,6 @@ class TUISearchBarTest { onLeadingIconClick = {}, searchBarTags = searchBarTags, trailingIcon = TarkaIcons.Regular.Dismiss24, - showKeyboard = false ) } composable.onNodeWithTag(trailingIconTags.parentTag, useUnmergedTree = true).assertIsDisplayed() @@ -72,7 +70,6 @@ class TUISearchBarTest { searchBarTags = searchBarTags, trailingIcon = TarkaIcons.Regular.Dismiss24, leadingIcon = TarkaIcons.Regular.Search24, - showKeyboard = false ) } composable.onNodeWithTag(leadingIconTags.parentTag, useUnmergedTree = true) @@ -89,7 +86,6 @@ class TUISearchBarTest { onLeadingIconClick = {}, searchBarTags = searchBarTags, trailingIcon = TarkaIcons.Regular.Dismiss24, - showKeyboard = false ) } composable.onNodeWithTag(trailingIconTags.parentTag, useUnmergedTree = true) From e7939e899a1febeb5ba1f9a51c15251e51b2bf2d Mon Sep 17 00:00:00 2001 From: Megna Date: Tue, 23 Jan 2024 16:04:38 +0530 Subject: [PATCH 4/8] Changed text style. --- .../com/tarkalabs/uicomponents/components/tab/TUIFloatingTab.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingTab.kt b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingTab.kt index 68fe97ac..a9760044 100644 --- a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingTab.kt +++ b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingTab.kt @@ -64,7 +64,7 @@ import com.tarkalabs.uicomponents.theme.TUITheme Text( modifier = Modifier.padding(16.dp), text = title, - style = TUITheme.typography.body6, + style = TUITheme.typography.heading6, color = if (selected) TUITheme.colors.onPrimary else TUITheme.colors.primary ) } From 3d3d00e8480e7500beae7b751392b6bb46b60dd1 Mon Sep 17 00:00:00 2001 From: Megna Date: Tue, 23 Jan 2024 16:11:11 +0530 Subject: [PATCH 5/8] Floating Navigation button component. --- .../components/tab/TUIFloatingNavButton.kt | 203 ++++++++++++++---- 1 file changed, 162 insertions(+), 41 deletions(-) diff --git a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt index 070851a3..fa5c8faa 100644 --- a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt +++ b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt @@ -9,28 +9,34 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.tarkalabs.tarkaicons.CalendarRtl24 import com.tarkalabs.tarkaicons.ChevronDown24 +import com.tarkalabs.tarkaicons.Directions24 import com.tarkalabs.tarkaicons.Diversity24 +import com.tarkalabs.tarkaicons.Map24 +import com.tarkalabs.tarkaicons.Navigation24 import com.tarkalabs.tarkaicons.TarkaIcon import com.tarkalabs.tarkaicons.TarkaIcons import com.tarkalabs.uicomponents.components.VerticalSpacer +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.Burger +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.List +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.Navigation import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.BURGER +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.LIST import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.NAVIGATION +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.VIEW_TOGGLE import com.tarkalabs.uicomponents.extentions.clickableWithoutRipple import com.tarkalabs.uicomponents.theme.TUITheme enum class TUIFloatingNavButtonStyle { NAVIGATION, + VIEW_TOGGLE, LIST, BURGER; @@ -41,75 +47,190 @@ enum class TUIFloatingNavButtonStyle { sealed class TUIFloatingNavButtonContentType { data class List( - val iconOne: TarkaIcon, + val iconOne: TarkaIcon? = null, val onIconOneClick: (() -> Unit)? = null, - val iconTwo: TarkaIcon, + val iconTwo: TarkaIcon? = null, val onIconTwoClick: (() -> Unit)? = null, - val iconThree: TarkaIcon, - val onIconFourClick: (() -> Unit)? = null + val iconThree: TarkaIcon? = null, + val onIconThreeClick: (() -> Unit)? = null + ) : TUIFloatingNavButtonContentType() + + data class Navigation( + val leadingIcon: TarkaIcon? = null, + val text: String, ) : TUIFloatingNavButtonContentType() - data class Navigation(val text: String) : TUIFloatingNavButtonContentType() object Burger : TUIFloatingNavButtonContentType() } @Composable fun TUIFloatingNavButton( modifier: Modifier = Modifier, style: TUIFloatingNavButtonStyle = TUIFloatingNavButtonStyle.defaultStyle, - leadingIcon: TarkaIcon? = null, - title: String, - onClicked: () -> Unit + contentType: TUIFloatingNavButtonContentType, + onClicked: (() -> Unit)? = null, + tags: TUIFloatingNavButtonTags = TUIFloatingNavButtonTags() ) { - - Row(modifier a w2 = modifier + Row(modifier = modifier .wrapContentSize() .clickableWithoutRipple { - if (style == NAVIGATION || style == BURGER) onClicked() + if (style != LIST && onClicked != null) { + onClicked() + } } .background(shape = RoundedCornerShape(32.dp), color = TUITheme.colors.primaryAltHover) - .testTag("")) { + .testTag(tags.parentTag)) { - Row( - modifier = Modifier.padding(horizontal = 16.dp, vertical = 16.dp), - verticalAlignment = Alignment.CenterVertically - ) { + when (contentType) { + is Burger -> { + TUIFloatingNavBurgerButton() + } - if (leadingIcon != null) Icon( - painter = painterResource(id = leadingIcon.iconRes), - contentDescription = leadingIcon.contentDescription, - tint = TUITheme.colors.primary, - ) + is Navigation -> { + TUIFloatingNavTypeButton(contentType, style) + } - Text( - modifier = Modifier.padding(horizontal = 8.dp), - text = title, - style = TUITheme.typography.heading6, - color = TUITheme.colors.primary - ) + is List -> { + TUIFloatingNavListButton(contentType) + } + } + } +} + +@Composable +private fun TUIFloatingNavTypeButton( + contentType: Navigation, + style: TUIFloatingNavButtonStyle, + tags: TUIFloatingNavButtonTags = TUIFloatingNavButtonTags(), +) { + Row( + modifier = Modifier.padding(horizontal = 16.dp, vertical = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + + if (contentType.leadingIcon != null) Icon( + modifier = Modifier.testTag(tags.leadingIconTag), + painter = painterResource(id = contentType.leadingIcon.iconRes), + contentDescription = contentType.leadingIcon.contentDescription, + tint = TUITheme.colors.primary, + ) + + Text( + modifier = Modifier.padding(horizontal = 8.dp), + text = contentType.text, + style = TUITheme.typography.heading6, + color = TUITheme.colors.primary + ) + + if (style == NAVIGATION) { Icon( + modifier = Modifier.testTag(tags.trailingIconTag), painter = painterResource(id = TarkaIcons.Filled.ChevronDown24.iconRes), contentDescription = TarkaIcons.Filled.ChevronDown24.contentDescription, tint = TUITheme.colors.primary, ) - } + } +} +@Composable fun TUIFloatingNavListButton( + contentType: List, + tags: TUIFloatingNavButtonTags = TUIFloatingNavButtonTags(), +) { + Row( + modifier = Modifier + .padding(horizontal = 4.dp, vertical = 4.dp), + verticalAlignment = Alignment.CenterVertically + ) { + if (contentType.iconOne != null) { + Icon( + modifier = Modifier + .padding(12.dp) + .clickableWithoutRipple { + if (contentType.onIconOneClick != null) { + contentType.onIconOneClick.invoke() + } + } + .testTag(tags.iconOneTag), + painter = painterResource(id = contentType.iconOne.iconRes), + contentDescription = contentType.iconOne.contentDescription, + tint = TUITheme.colors.primary + ) + } + if (contentType.iconTwo != null) { + Icon( + modifier = Modifier + .padding(12.dp) + .clickableWithoutRipple { + if (contentType.onIconTwoClick != null) { + contentType.onIconTwoClick.invoke() + } + } + .testTag(tags.iconTwoTag), + painter = painterResource(id = contentType.iconTwo.iconRes), + contentDescription = contentType.iconTwo.contentDescription, + tint = TUITheme.colors.primary, + ) + } + if (contentType.iconThree != null) { + Icon( + modifier = Modifier + .padding(12.dp) + .clickableWithoutRipple { + if (contentType.onIconThreeClick != null) { + contentType.onIconThreeClick.invoke() + } + } + .testTag(tags.iconThreeTag), + painter = painterResource(id = contentType.iconThree.iconRes), + contentDescription = contentType.iconThree.contentDescription, + tint = TUITheme.colors.primary + ) + } } } -@Preview @Composable fun TUIFloatingNavButtonPreview() { - TUITheme { +@Composable fun TUIFloatingNavBurgerButton() { + Icon( + modifier = Modifier.padding(12.dp), + painter = painterResource(id = TarkaIcons.Filled.Navigation24.iconRes), + contentDescription = TarkaIcons.Filled.Navigation24.contentDescription, + tint = TUITheme.colors.primary + ) +} - var currentTabItem by remember { - mutableStateOf(0) - } - Column(modifier = Modifier.wrapContentSize(Alignment.Center)) { - VerticalSpacer(space = 40) - TUIFloatingNavButton(leadingIcon = TarkaIcons.Filled.Diversity24, title = "Overview") { +data class TUIFloatingNavButtonTags( + val parentTag: String = "TUIFloatingNavButton", + val leadingIconTag: String = "TUIFloatingNavButton_LeadingIcon", + val trailingIconTag: String = "TUIFloatingNavButton_TrailingIcon", + val iconOneTag: String = "TUIFloatingNavButton_Icon_One", + val iconTwoTag: String = "TUIFloatingNavButton_Icon_Two", + val iconThreeTag: String = "TUIFloatingNavButton_Icon_Three", +) - } +@Preview @Composable fun TUIFloatingNavButtonPreview() { + TUITheme { + Column( + horizontalAlignment = Alignment.CenterHorizontally + ) { + VerticalSpacer(space = 40) + TUIFloatingNavButton( + contentType = Navigation(leadingIcon = TarkaIcons.Filled.Diversity24, "Overview"), + ) + VerticalSpacer(space = 40) + TUIFloatingNavButton( + contentType = List( + iconOne = TarkaIcons.Regular.CalendarRtl24, iconTwo = TarkaIcons.Regular.Map24, + iconThree = TarkaIcons.Regular.Directions24 + ), style = LIST + ) + VerticalSpacer(space = 40) + TUIFloatingNavButton( + contentType = Navigation(leadingIcon = TarkaIcons.Filled.Diversity24, "Overview"), + style = VIEW_TOGGLE + ) VerticalSpacer(space = 40) + TUIFloatingNavButton(contentType = Burger, style = BURGER) } } } \ No newline at end of file From e4fb49d05af7b5b7906ed45844cea86dc8ed51d1 Mon Sep 17 00:00:00 2001 From: Megna Date: Wed, 24 Jan 2024 11:00:03 +0530 Subject: [PATCH 6/8] TUIFloatingNavButton test --- .idea/androidTestResultsUserPreferences.xml | 104 ++++++++++++ .../uicomponents/TUIFloatingNavButtonTest.kt | 157 ++++++++++++++++++ .../TUIFloatingNavButtonScreenShotTest.kt | 68 ++++++++ .../components/tab/TUIFloatingNavButton.kt | 8 +- 4 files changed, 335 insertions(+), 2 deletions(-) create mode 100644 tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/TUIFloatingNavButtonTest.kt create mode 100644 tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/screenshots/TUIFloatingNavButtonScreenShotTest.kt diff --git a/.idea/androidTestResultsUserPreferences.xml b/.idea/androidTestResultsUserPreferences.xml index ef0d48d3..94bffccd 100644 --- a/.idea/androidTestResultsUserPreferences.xml +++ b/.idea/androidTestResultsUserPreferences.xml @@ -29,6 +29,19 @@ + + + + + + + @@ -42,6 +55,19 @@ + + + + + + + @@ -173,6 +199,19 @@ + + + + + + + @@ -434,6 +473,19 @@ + + + + + + + @@ -474,6 +526,19 @@ + + + + + + + @@ -539,6 +604,19 @@ + + + + + + + @@ -565,6 +643,19 @@ + + + + + + + @@ -631,6 +722,19 @@ + + + + + + + diff --git a/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/TUIFloatingNavButtonTest.kt b/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/TUIFloatingNavButtonTest.kt new file mode 100644 index 00000000..eb3953bf --- /dev/null +++ b/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/TUIFloatingNavButtonTest.kt @@ -0,0 +1,157 @@ +package com.tarkalabs.uicomponents + +import androidx.compose.ui.test.assertIsDisplayed +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.performClick +import com.tarkalabs.tarkaicons.CalendarRtl24 +import com.tarkalabs.tarkaicons.Directions24 +import com.tarkalabs.tarkaicons.Diversity24 +import com.tarkalabs.tarkaicons.Map24 +import com.tarkalabs.tarkaicons.TarkaIcons +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButton +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.Burger +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.List +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.Navigation +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.BURGER +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.LIST +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.VIEW_TOGGLE +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonTags +import org.junit.Rule +import org.junit.Test +import org.mockito.kotlin.mock +import org.mockito.kotlin.verify + +class TUIFloatingNavButtonTest { + + @get:Rule val composable = createComposeRule() + private val tags = TUIFloatingNavButtonTags() + + + @Test fun floating_nav_btn_is_displayed() { + val onClick: () -> Unit = mock() + composable.run { + setContent { + TUIFloatingNavButton( + contentType = Navigation(TarkaIcons.Filled.Diversity24, text = "Test"), + onClicked = onClick, tags = tags + ) + } + onNodeWithTag(tags.parentTag).run { + assertIsDisplayed() + performClick() + verify(onClick)() + } + + onNodeWithTag(tags.leadingIconTag, true).assertIsDisplayed() + onNodeWithTag(tags.trailingIconTag, true).assertIsDisplayed() + } + } + + @Test fun floating_nav_btn_trailing_icon_is_not_displayed() { + val onClick: () -> Unit = mock() + composable.run { + setContent { + TUIFloatingNavButton( + contentType = Navigation(TarkaIcons.Filled.Diversity24, text = "Test"), + onClicked = onClick, tags = tags, style = VIEW_TOGGLE + ) + } + onNodeWithTag(tags.parentTag).run { + assertIsDisplayed() + performClick() + verify(onClick)() + } + + onNodeWithTag(tags.leadingIconTag, true).assertIsDisplayed() + onNodeWithTag(tags.trailingIconTag, true).assertDoesNotExist() + } + } + + @Test fun floating_nav_list_type_all_icons_are_displayed() { + val onIconOneClick: () -> Unit = mock() + val onIconTwoClick: () -> Unit = mock() + val onIconThreeClick: () -> Unit = mock() + + composable.run { + setContent { + TUIFloatingNavButton( + contentType = List( + iconOne = TarkaIcons.Filled.CalendarRtl24, + onIconOneClick = onIconOneClick, + iconTwo = TarkaIcons.Filled.Map24, + onIconTwoClick = onIconTwoClick, + iconThree = TarkaIcons.Filled.Directions24, + onIconThreeClick = onIconThreeClick + ), + style = LIST + ) + } + onNodeWithTag(tags.iconOneTag).run { + assertIsDisplayed() + performClick() + verify(onIconOneClick)() + } + onNodeWithTag(tags.iconTwoTag).run { + assertIsDisplayed() + performClick() + verify(onIconTwoClick)() + } + onNodeWithTag(tags.iconThreeTag).run { + assertIsDisplayed() + performClick() + verify(onIconThreeClick)() + } + } + } + + @Test fun floating_nav_list_type_few_icons_are_displayed() { + val onIconOneClick: () -> Unit = mock() + val onIconTwoClick: () -> Unit = mock() + + composable.run { + setContent { + TUIFloatingNavButton( + contentType = List( + iconOne = TarkaIcons.Filled.CalendarRtl24, + onIconOneClick = onIconOneClick, + iconTwo = TarkaIcons.Filled.Map24, + onIconTwoClick = onIconTwoClick, + ), + style = LIST + ) + } + onNodeWithTag(tags.iconOneTag).run { + assertIsDisplayed() + performClick() + verify(onIconOneClick)() + } + onNodeWithTag(tags.iconTwoTag).run { + assertIsDisplayed() + performClick() + verify(onIconTwoClick)() + } + onNodeWithTag(tags.iconThreeTag).run { + assertDoesNotExist() + } + } + } + + @Test fun floating_nav_burger_button_is_displayed() { + val onClick: () -> Unit = mock() + composable.run { + setContent { + TUIFloatingNavButton( + contentType = Burger, + style = BURGER, + onClicked = onClick + ) + } + onNodeWithTag(tags.burgerIconTag, true).run { + assertIsDisplayed() + performClick() + verify(onClick)() + } + } + } +} \ No newline at end of file diff --git a/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/screenshots/TUIFloatingNavButtonScreenShotTest.kt b/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/screenshots/TUIFloatingNavButtonScreenShotTest.kt new file mode 100644 index 00000000..1e61346f --- /dev/null +++ b/tarkaui/src/androidTest/java/com/tarkalabs/uicomponents/screenshots/TUIFloatingNavButtonScreenShotTest.kt @@ -0,0 +1,68 @@ +package com.tarkalabs.uicomponents.screenshots + +import com.tarkalabs.tarkaicons.CalendarRtl24 +import com.tarkalabs.tarkaicons.Directions24 +import com.tarkalabs.tarkaicons.Diversity24 +import com.tarkalabs.tarkaicons.Map24 +import com.tarkalabs.tarkaicons.TarkaIcons +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButton +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.Burger +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.List +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonContentType.Navigation +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.BURGER +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.LIST +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.NAVIGATION +import com.tarkalabs.uicomponents.components.tab.TUIFloatingNavButtonStyle.VIEW_TOGGLE +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.Parameterized + +@RunWith(Parameterized::class) +class TUIFloatingNavButtonScreenShotTest( + private val darkTheme: Boolean, + private val testName: String, +) : ComposeScreenshotComparator() { + + companion object { + @JvmStatic + @Parameterized.Parameters + fun data(): Collection> { + return mutableListOf>().apply { + for (darkTheme in listOf(true, false)) { + val testName = "darkTheme_${darkTheme}" + add(arrayOf(darkTheme, testName)) + } + } + } + } + + @Test fun floatingNavButton() = compareScreenshotFor(darkTheme, "_floatingNavButton_$testName") { + TUIFloatingNavButton( + contentType = Navigation(leadingIcon = TarkaIcons.Filled.Diversity24, text = "Overview"), + style = NAVIGATION + ) + } + + @Test fun floatingNavViewToggleButton() = + compareScreenshotFor(darkTheme, "_floatingNavViewToggleButton_$testName") { + TUIFloatingNavButton( + contentType = Navigation(leadingIcon = TarkaIcons.Filled.Diversity24, text = "Overview"), + style = VIEW_TOGGLE + ) + } + + @Test fun floatingNavBurgerButton() = + compareScreenshotFor(darkTheme, "_floatingNavBurgerButton_$testName") { + TUIFloatingNavButton(contentType = Burger, style = BURGER) + } + + @Test fun floatingNavListButton() = + compareScreenshotFor(darkTheme, "_floatingNavListButton_$testName") { + TUIFloatingNavButton( + contentType = List( + iconOne = TarkaIcons.Filled.CalendarRtl24, iconTwo = TarkaIcons.Filled.Map24, + iconThree = TarkaIcons.Filled.Directions24 + ), style = LIST + ) + } +} \ No newline at end of file diff --git a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt index fa5c8faa..1cfba5b2 100644 --- a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt +++ b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt @@ -189,9 +189,12 @@ private fun TUIFloatingNavTypeButton( } } -@Composable fun TUIFloatingNavBurgerButton() { +@Composable +fun TUIFloatingNavBurgerButton(tags: TUIFloatingNavButtonTags = TUIFloatingNavButtonTags()) { Icon( - modifier = Modifier.padding(12.dp), + modifier = Modifier + .padding(12.dp) + .testTag(tags.burgerIconTag), painter = painterResource(id = TarkaIcons.Filled.Navigation24.iconRes), contentDescription = TarkaIcons.Filled.Navigation24.contentDescription, tint = TUITheme.colors.primary @@ -206,6 +209,7 @@ data class TUIFloatingNavButtonTags( val iconOneTag: String = "TUIFloatingNavButton_Icon_One", val iconTwoTag: String = "TUIFloatingNavButton_Icon_Two", val iconThreeTag: String = "TUIFloatingNavButton_Icon_Three", + val burgerIconTag: String = "TUIFloatingNavButton_Burger_Icon" ) @Preview @Composable fun TUIFloatingNavButtonPreview() { From 837e1597d9cd4c25ad4788612c1875feb912a6b6 Mon Sep 17 00:00:00 2001 From: Megna Date: Wed, 24 Jan 2024 20:36:16 +0530 Subject: [PATCH 7/8] generated screenshots --- ...__floatingNavBurgerButton_darkTheme_false.png | Bin 0 -> 2901 bytes ...t__floatingNavBurgerButton_darkTheme_true.png | Bin 0 -> 3558 bytes ...otTest__floatingNavButton_darkTheme_false.png | Bin 0 -> 8957 bytes ...hotTest__floatingNavButton_darkTheme_true.png | Bin 0 -> 9370 bytes ...st__floatingNavListButton_darkTheme_false.png | Bin 0 -> 6266 bytes ...est__floatingNavListButton_darkTheme_true.png | Bin 0 -> 6911 bytes ...oatingNavViewToggleButton_darkTheme_false.png | Bin 0 -> 8514 bytes ...loatingNavViewToggleButton_darkTheme_true.png | Bin 0 -> 8854 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavBurgerButton_darkTheme_false.png create mode 100644 tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavBurgerButton_darkTheme_true.png create mode 100644 tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavButton_darkTheme_false.png create mode 100644 tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavButton_darkTheme_true.png create mode 100644 tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavListButton_darkTheme_false.png create mode 100644 tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavListButton_darkTheme_true.png create mode 100644 tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavViewToggleButton_darkTheme_false.png create mode 100644 tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavViewToggleButton_darkTheme_true.png diff --git a/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavBurgerButton_darkTheme_false.png b/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavBurgerButton_darkTheme_false.png new file mode 100644 index 0000000000000000000000000000000000000000..535f2c9243cf37c53ea3dc67ad8c5df203354183 GIT binary patch literal 2901 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 literal 0 HcmV?d00001 diff --git a/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavButton_darkTheme_false.png b/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavButton_darkTheme_false.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7c895e8871b32de9dfe2cd2086fc7944ba4d0b GIT binary patch literal 8957 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

V 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 PzX+rtqY5sUdLQ&ZZM!>~ literal 0 HcmV?d00001 diff --git a/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavListButton_darkTheme_false.png b/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavListButton_darkTheme_false.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b4caad0dad544db2cf7350d3c1b1f8a00fde8b GIT binary patch literal 6266 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 Z)Iqu`4j+_X0skL>;7XdXYDLS?{{xn>u1o*` literal 0 HcmV?d00001 diff --git a/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavListButton_darkTheme_true.png b/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavListButton_darkTheme_true.png new file mode 100644 index 0000000000000000000000000000000000000000..fa938f4de0b91aedfba5815f627048dd05826412 GIT binary patch literal 6911 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 literal 0 HcmV?d00001 diff --git a/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavViewToggleButton_darkTheme_false.png b/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavViewToggleButton_darkTheme_false.png new file mode 100644 index 0000000000000000000000000000000000000000..143c8a9687ba90bf967539ab311ef2aa3f8a6c8c GIT binary patch literal 8514 zcmXY1bzIZm_Z}cH5ottpj0S;G6UhNOx>UNmM07NaZV45nr3FN4l!$amj1Cb&axhYA zw35HKpWkF0BAP^f!P4ST)I%|8*HyJV!C`@n>Y&kjHlD(t$ z!7G9bO&r5QOvWWbC%4B=w$)XgE7-2Kh2xG%a#cOwI8ZrIhKsmuT){Y_Xyl zFx3$IYG*Qpy_giMuODyNk&gK?Y z;#lPKN=qq<`Sq5IpI^2OFG_-NVyt!HUp{gq=_jP>t0u<2!5|Iv?Cc*J==D;3;BVNo zro74CMJ6fa6NyJt5mSQ^p`LS?tR5qn*KUx9K{1iy^Jm$4CiaiD(Zo?9Q7TPo zDp7`#HHR*&vzlmwS_Rzuw*ug9`@t^zehnHVED|5`I5$KnH^e(v)`80mEe>DPDT50) z8)&5#aWRh5GUwI5(M;taWA8f6;)nu%w-W;LxxqW%pei=)P9LwT(_yEmELkCTR!DmA3=lslk>pEtXMJtU-hf#OiX%6;B7xF!$L2h;KF44YV8eL(^xX|J6>0Y`% zFd~B#Wwxz>(=mvF*~M4A_KZe39!0$7O-#KBt+`HWy9mqYqqr0C?r*`+knN+WXzxm| zw3>QFxP1dIAyF@j!d{eqd~1|F;+=27xUiLW+Oxhc=`_tkK}N*m5j!{j5UChUR!Uwr>Nb+$lE01}xgC zj3R6YbqV`e(!rTv;A+FKQCJs2V-vE_jX#H0mkix*@Kk=TPI&*OS5lns0lwrqd)KYh zW9iYm&mJ4Q=!RkU_^#8}=&31z*=s4j-Z1)(fA;4Vuk>KhFY2lswA4o3AvN^xM!_meGNQ&j;8Eiz*=%_%* zF86?5%ALsQLZ!-^A@ta&_xtoV$6%~8Nu9p^bM7&d$mS(r+ z&{+WK)Zs+s1n`n6OLRz8T}W=Shy}LvXXCZ_nCLh3y8lg*{#bLuh0Ml}@ILnYn{XN= zX6esIy);NP5C(|hJ?tYe`z;SoB>Z9uH6Eq{OA)|w15uHU>bW1Cj;_k#>)>qj$m(|k zqLHD;2zc|TKf@zWoEtql><0MM`X#w(OhRF(1OJENs1!hEK&!?ti9$Yjq19mv=g{>r zLxP<|>1*IT&alODX*Ab&itK+T1%FR{)Elo}&?k?_>w3O`u}6IQY*K;OCyh@UH`di? z1+zzpS-=W$%bs3DU9N;^F2*;noPGiWy+!T}8|WX}NumRu+9z`WP_-t^CU26)kKg~5 zK?jQf{Nn{y*RRJ2R3eG~$i-NM6x#$+Mn;;kpTpj&#;3a@oS2+FVk$FXGeD`sRy>c5 zp_|L}ED}G>fkquv= z-AW3IP+U7H1LXKm1AZ!za20hOQTier;M>73O|zeKUc;17-TyEXU!dD5q2pgNvuKdu zLwqO?Is#7t|J9#qOACa)Qqw?5vO+7%IgI?M3J3(8NkAyt<4Q$8bQGbQOijg0*sPKhZhSzHG_!5eDI0(k0}pjw0u!W za7oltvmW>aQJl<)s8F_4nmVxSA<(ppz3Dp~sXDG#ZJO49R2y;lAc=V4`JbVJcLN^C zUgDlYsO4G2o8?y0UjEZr z7JrUcP=74SHrEmuPYev!Wlf?%4vI)T2IkkkOHR#6WbJwnb?-zpKumu~ga6**hckW zo$Oay<&z|nY9=~v0XpBhFmKT6p%m?FOJnpjRj~DtnZA@jN*h7yEB-e{76`-asRFajTZ7~i0MSRSv#(0ei1Xi*?pKBY!jroUb`RRA@yYC?- z=@Ia9uOic!>MFB?`PbV`jsqidzuWs4ZYmL7Zcp5XF3^`0Q)iSCyFfJXZ*85y+a z^F899>h%}~NyfCDt!V1s6f008ji-9G_ZQ2P0k8N7*YNwLp<8y!!XVlE3*Aw~J>lKA zZ{p6>u zxT!|1GTJDnbag)~f1WnHd~jX4O-FrIZdGlV6G$aT`HXLU8{capt(rnwy=ft7GH3Na zwru!0@J|3}FN1$XRfu~?-=X(#g%AvVJQr8JEFg&VN9_ano*S}Q$nalFB%seEq7p4u_2V|R70gqpOofjMUzSPXb9$DKGUlc=paUm)dAG*A;$=3bPdyP&98P50~QZi)Z>KKMyi0?^u+y zc_Z!9mWk~rUA0`7fYl8PZ?*a)p^pWR>2US}v*;y(8-%{i8L?23-V~ppEq?i&Kl{Y9 z=!CStw-r>r{~59N2$yC5*a}ai5Vfswh(3DmEC=VYzJRB#;wLMQmPU=d=FrBsJfrJT zZ?RvnWs&)y1!g-Ys9EE;w=RLD*q%R4h5+r0N)Pv752K_Kt{F-mwq4$2_G5jI^KC+cezf=IN7Kr{ zYkp_4Us04+lTRVG)*hu%t)8Y$eDSug(o}RLMGFHhUqYdlO*Lit?Fra}cFWoMm~h_l z+rqzDZpHSYkIT8_0@N0_mgjfh;C1C!qM>2Ty)t6(@pncv8qgg?C zD+iNUuKfFU+*9I8h`MN#7WJWw>xGH1oL^)mE(9XGSRWRTK&v0@U3nQwpjxM1Cx2YZ z&5g&EFy*Tb{`ztj<2*yano5JjP>4f|%_1P{JtWeu{)+jZ@63pYE*4Ca%zDdKfdgVJ zPp~J7RoP?KOP329-(IHuW<3{YPH;P`d+aQCIVN!a=eJ79Gf=PB)CzZIwzU78$-(Y4 zlP7q6*Us`827VQ_VS@L+s3Twf@fLP&1u4iW?bhR~XZQ*CDP%4v`P$_F`#Kmc@ zzf8&yr`h3Vb(MM1Jf=1W(L`p62KEEio-9wmzuGFQJs3a^t zwj}B4;jG3IHGMKe1Pq?LT%*cTwaw6O(SNZkGyR%>goxE<@UbPc+M@H7wEj`(GkU%PffFK?!-%Uv9kJFT0~I4rsM$tqWh68~-F zuE+@5*;Y0HX;=RmB%|D%5@xK-zr;zs^;FfDfq-;~dGn15SgvfhQQ+_POl@=nhpK5@X0Thh9QnQSvE`rG^j;|2`s ztDVeOG~(kgd=@j#zX{Q5_$fsrqBh=R`UD=>04a3xXAj~!^jsq7$YgP3@UqkC9>sg# z_{sRsjx4@F!LaqsJ?3$d=D#0&Y^>pUke**mv&|$uyw@a!anbozw$NF3D0ZS3&4L&- zx@-CI;5Khjtxx!5g?A^r`@7gwvE$Yxm~VB!%F|fiHQxd5=^JNpbF`~!8M&uVK_{r^ z!u67*Go%>Vkr<$@`EwAQ@qH`!SF8Um35(@OD*}(#kPUC^dBS5ew8h5VSmifS+HY^S z0qYp9BDY)pJkNX3LNICawsd08w&Cdm)?i)U1-HNbKQGKH$QeN{bw9bfAbyT1dP(<$ ze-<3v#@y#TN98nN_V>?968lzK$ZIvkP~=h0u{&%EqQ)ND#34ffhH%qquQK0TUNL{< z+h%U6Xoq8|KYd2;we-8w_@=?U7Mo7U2FR#BT;i?u3VL?GGolW{3?quYEn&%Cnbhy(!Pn2i$+39cj z8~PJ9E^-JrSA1K$JnG>3nD6DMjUz;w%Dj)4o!plrN7=x%TXY`n%f#bD$amJmI@_UX zesMr7?zDLek5E=%nz5$5@Qk3qZV6ex2@}k>NaxA=5)xvPC+6@NT8H!c+u7R|tzp?8 zuWsVQz@Sc*aaB0+*bwFhBWJMd_Hzm8fRs5ybN^6p0Gy z9LFlK`)`Jkg~2o(o5LWJ6@gh)_UwJ74r;IL)#CS##g8D=1$U%^0F=%Y zlt#YsOCeu@PKim_D{nxU0m5B%<$A|wsHERcFw`xpcAC_fl>FhcFIDW2cY4j6VY|H_ zuSK^4WkScQzGC(oA3)85^O!OxGwalZQ+4*1TfsSgqTb%J!546*uc#Mw0dRAdaoY!L zXok$V&j);k>g*B~;}$TW?{UfQ#U)DFmJ~N!kaeRPrivPhKXEhC*G!)r4EIsWU4_Ra z?&f7Z(yjDaz1F?keAABZN2Dl+?w^;OC1Gqw zWVXTB$TcZ}9Hk*%#7L-w3FG%zXpr<98P+@9NoV<7*j zk{jqr33RFybREFj*1ODHgU&L4J`7d$)7NKRPbS=Pi`CXo@qc{LM0h>yBPwCNBcNW< z>JRVS!ZjsSD<&1=*`HyS+tPoFLX{u*oulQLz_CL^{>^=0P+CQApw`~LE`PyNi|$&` zEn}$ylN%IU>Np~c_vGmxfK5wi67bIjy7<{EVO?}-|4wtbg4;i60L1Sd)|2TY{;q3c zJ)XoS_p^)W5k@|a$}M>{AKfhCFB737M0Ie7$dQ&5SZ`i)d+`tBDQ=r>o0p&U%kf9D zrfV)vvOS%}4sRCp%hcCoWBsj25eS3ql4O%MGntuSyk?Lca0(LYk3X%#`+Y>NBgn_b z8gI%7h>z~JbDkV7w!WlqS=rHS*EBYo2=x~T`r?LavUIQ|r3 z@6IuB1|c;04xwAb5}i49wo#^hWlIfpQ!?2D=A+^j2TM^Sx1fg)q?5W6+^!1@Z~b)l)az{izA@`K5GfN#{1fJV zD|xTg@7~)d7P)1k{I>`MqoFAUBq$0LU0dOAGSU0&lNGs-P{=j61zUV{N^w-~=FF3* zu?6vaQ;{nX@VhOJ>^QCnRf zy*#wL|A(!uHY5AQN-zp_FQbG(SV8S`tj`k%!X4YT-U-jxe4(QDP@g-JNqPE+R^Bip z^$w=GCpODsoFTLHV#y@G3Oz8}gfX#$hz^tLJ5vuj83pDfa}%Nfy5oGe2>Gh9m!EQRN~QsNbGu%|9RKBMn>$tEU;y4 z&y9SeFQUfLdBx6zSW>D(GK$HSNtpLHT|K(X!>3uluA{@d1voPMHgN4tFtnekpt5pd zjc*iC&W9=YrQWGKvN`BkGFzv7bIKuatx9jv{Zre?H+zNWbI1;=Mw@g<! zToF3A8ChYBFPPplVX}pl+&&bON*F%E8vQiKU_e)g5dT+tTW42{J*jO{kxgwfaczD! z6!BXWhO^w0l>f`k+Sl0`*?Yi+y(2#pVNjT?fD>DDX9#9_cLQE4{^ra5wBAsknHQ_o zCsvE3zqcqOm>-4_44*nKtfzw<`{hs`W=+!tG6HB{uE>S6DDCrQ32ld#;CnpyHDN5F zFBsB^%5Hb-(_!-1C`?|WCnv(iv}g~RZ!waf4zHum2L89M~-) zBrPZcJQjLak8GqRyX(n`k{cQ$r^3D|>VbIkyys60aa0+zzG1h}xRZlX7P)nvP-9^O z3q&z3TxN!EmMS(Wsy&^#_p2Jh{Yj;GOpuGcz7cR9z2w%*?$N9roaI~-M(uWuxy7Uh zyyapr;_VwK}!b>959jq6UQG@oOE@2XPSKwy2Q1(P0S9g*B+T+88(tKQwBbxpv;^=wJ5x`^@U1+nh=K z4*d2z=S8=hwhGJx)7_6}Yf4yVa>jCeF1AdsBhCzVd}kk1F{=ssQp^>}Ggy5ESMvT3 zqy3x0#-+ANQwno{+jXmpP8#3JwFgXQDCy;wVLd)6W|ANJQ`CN>b1D1;Q6-U4HF2I# zsQIAK<+F1=^`fx63$PY&MIB~z3)A|0ZS}PV@03gZsBLlS&bY+2{#4c?c%g6rKwj*n z-*ui@cq;hMta7|%m3ccwkM(2UmEpU>wI1iC`a2n>byLQ27RzB#19IJiEBsugL!p#< z=r0&%O!C3|vNEmqh2T$2!KX9Xj7Kl|f37a>0eul+ZiLi%p3-+Eq-nXkYPS2!?GYl& z#&VKiU;ngEcZwiUy^A?o+kd9b=U$nVW%g|W*AHgA&(QM=&{LGt?|nKMY-K*(T;l#7 z@*2qUt?Wg)-6K*a?gFWIq%6een42#SxYk6OMo8)`H?XTma$9om+V8vY0DXn}Nn9e{ z-CRqe{9tMIb<3x@3uz^)e_p;e{E{LC+<4Orr4&wk?d8mxdfr+#L$E+?F7kS;cg?+~ z`mWF+uEKeS=7kH&{&5RX*OcQHfK73Ja4=n3(MpxKWs&+it&xoaaxm!iJKxkq&cby= zvqJvZSw-ioY6dou0(Ft8%NU5tjGA127-IH45Jk0I;XF;~p83LE_LnEh!L)5KQf23Q z#%29cB0%oHPZoiu(moM*s^7l0`u`-ANC5A1ZeVLbatApWk`hw&{>&kWq0rZjO1g2& zwK8|){TC&1pYL}ZZTVCVmA~|wjXj4#GbhhPB+VK%X(ZD~tcM@29)4>)xU+4HeTY)l zp~j#}3|75ejcP|@^lxNds1Hsq@R@vCFcQe$t4aGRB|z?YRW_~cW8iu6ssHSE@<8Yd z!7)r#o37Z=IW>sTB&AT9OM|>)kIIs4`bW{Bqult7%BF!r0x*<}!L18J&JJuT)BYkc zQMpw2Ounku%RL8??lX%>huJhmnrRbJa(p7_+;qw zK0E?DG0wdtP96D`sZWDIiXJiMYAGmH_*s2e z2;KbYCpzkKsoW0Ksfr7?tw7!wQWlP{X1_cAo*!v~o!BAdW{rd9qt6Q1(4cmp@fa8N z7c>XB=n{)M%l7?zZ;_18InSpb18jA*uz}g=wRkF4>Y^d4Xn>v8VJYg(>nxg+YoC2O zs#QY`u1Y^@GlZ zOCc!2vy=TFwlOrwRlc@Nl_o=Zvg9{Zfm(97SAbsSk=%5dMhP_!>M&6GL5BqMjchIr z?EDqD%Y3@&iKAtYpm8o;ZnP9fd;X0K8!rH?Oc`c2onuIf0e3#^R00(G6Ft9{%6sT9 z{sONR|DiHWv%F_){lKt$Q~Pz}v*UmIgTu14r5nLjMv?+h6>M~0H!9A}EyG^H7jMWY z@y`L;N#{DtFCcQd4IB|<(3y+9^dAB~aDJZtv1}K%3J}B;< z<2Y&ol#^R)J_kl-E6;T%Xsy(!hva~CN||tHsgyLJD5$_$mV+z=Fh^g$<&n|Y{q2XH zQdB$^p7iNoSO%+M>kp$wW@o=_r0?X26KNDj0CU5v)hbD3U#=Q<|18wxzfI%Xdi_@b zfMi0Z4I66pmb=04w}I`<Nv&Fx1ipq=e5 zd)_Kod{JWw$c{!9!BIv>W7Q6y6$zjaKt&}VH|F{-b_39OY%G}K4;qyQvU2UxaS1+t zJg;@xGa`X(ozEAdy&;n+Kl6UTy@Ld#lNhU;2SbXM_HslFTABwD0f|*Fh@Q&f4p*6f zf$RX7YHjsmdgN+?xJ3NrW7=&CXP9=iku-Wa(gv>F313kFvwsEj*7aSQ(G{1+f6HkF zX%YK?7>logrySEEUv%%Tj!n+rdBj;+81~|3-45{%&L{ez>Gf}1ksU7pI``|u3}?g_ur_XVXJu@0Wo(1K zy>^EyywAI%zz9~zmZ(Rg#UK5NAtQwb`8y2n&ixgrUqsXkRUQvAx{v?=H#r6gssgHZ zdR+Gzo`TtXTp>8OeS)+UutNfbhL1b)rN*L-rM;^B@XxUr3^I|(SesoS zB)|A65rtU96a$tB0?JuqBZRbjxPlv2c#GOQHgGsPsd^TOnPAqs_`nr8*r)$_rLBHG Q;44T?>9Jx3(kkr#0QVbP?EnA( literal 0 HcmV?d00001 diff --git a/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavViewToggleButton_darkTheme_true.png b/tarkaui/screenshots/debug/screenshots-default/com.tarkalabs.uicomponents.screenshots.TUIFloatingNavButtonScreenShotTest__floatingNavViewToggleButton_darkTheme_true.png new file mode 100644 index 0000000000000000000000000000000000000000..beb3a1bdf93929bf7b6a5c70b709f76671c017f3 GIT binary patch literal 8854 zcmXY1bwE_z(_TbMx_gmExg7qbo5_6Q1k?VTb4%i|*j$FJAltxb zuWL+bMpzMv(YX%J(75%frm~K{fqQnEt+&rpFPD14i*}d7H-UY}}{p&+pVcW|b>v5tVD{!v>$@ zu|WQj2amP;=9Y`GsTPuYmLzJ^ys;S>(LFon3=9mN6f|fNy)QcL1B`b}xXCVXlJRnp zV)~IMImF#WHr>XIe=YGB6fkj%yoo+NEhVES?;DtS8G=epM&Y(cU2*IQrE1ZIBNuw` ztH!psJ@-QC)k!w;&w!y+?d}Bp_G;~>3)&k&f9FqL)kiNfV8*^@%}lnyc(=v z;IMaW9VMN@10QCq(3!-J{@ZK8!ci)98uEgOI2lgLqKYRm!yHDiw5&Jb-bPM(WHmWy zIWNkf=Apirst!wvRMDH#L;Q@)6=MA&i|-ezwvu!MM3#e zE_aQ#ID9x;8Em9?6}3B+SbzFU&%U@7dsaZS<2-O}6Hj6QB1bUkxkaWl_lR$lQ8F(| zr3t-ed>AxqGLNC0E9)*dY9g%vu^KQ_ht=9m8x;FZS|&vGu|MWyu`tv*zg-&vrR&>G zwvS8JPuA=$C||gqtu#4LI`R&cK&QnQ^{c^=c|3p2xgPoL9ZJw}Flgqr&~Wd*;*3Dn zF;Xk=U%XaDo>zrFPgJPA{&ZY!CSv4i%`#0PMz7jXLDygwQ(_ zFeT6S(Y#^T=a%bA@6c-55r&wWbir-?n72{B6!R~G@ZPRcJ9yr2oL6OwmV2;(Oc}f& z7ny}sRtWn4-Hm9KtlS#?>?4lgzEA{v1^0UTKH{oq$g4YH&@yNoksb+qZisx`x1Z)f zU5)EM@;L4!RDP6=(I=D`2tS!RAKx0-ymV{&!6VT9??au_&4T)R|C-ZV@}p$}U_y=8 zaJj6!d?#rXwrabFhCaC1hJ4|%l_syH=C$4rhM-vD%3XVUoV%?;AZnwR#Pa6OSXf_m z<9O$p z{3%9QBkZ@qUh52oO!mKs7Xr#)QTNp-#KXLmF+W9p3pOyxTRIQFUew*pb0Q$C!rcLp zZ*jKZH-7JV#`T!4mCPK3*QH`mi%htkw`be_ZBdM00c>=?WC-~;b6MZW4}{c9!PSou z#e*1b4Vm*hH)#wptCuUvVQ@SNw}xu(bW09A_!8+#^?@U#?Geq^C<$=(bMX2j^5FvP z$Ns#gfR~2DYINble&uWn1MoCP@BPXL3Qhf4u?GG69aRmr5X8eCVy2mjHVBW{?^5P- zC>?Rki58>R_X3Lzu1{A&c+bV7hVdoPRa0N0Uq#S7U;|k~qbZAZ(CqQ@Q)JnpfbGX{ zJc%#TH8u0bz)0CpeNqMl?6ZGcrwy2hop3jCwqzv4K<%vYeoU-!d(DYm1RV(eN!R|? z^$x(Zx>EvlN>3r+21Wzst1Cn9>34{wKOK7X48rGJfGv2|kl+o;-Kj=Q-m|cB#9S2w z;YnO*Yv@J$#T>`%wVE);)P%DhF5b#Y3DF1P5$OLr^m}eWtZCBDb+~hSvaKBIM+gY4 zW{dL{E8B5?Z0iRS62oCSo&Ew4$III`qqCyLPd*yY=m43Js^4sE{qJikdlwfub%mBL%e0M$kKQvl8~a|>z@@{B3CqoT+~(u zGqh9os>+bElxSneShdg*zV3`(OVg@;aB)MmEwU*=}n&Nl+yr`{Igk;B9 zoNmH$4+w!%(c8IgT}sXwhWY0&wdC3s*H8jfI~CK?&~WM=gH{SN@a4B=OHn0Xck>6I zh~{#^RbPb}czD4L=X7olPd}rx@RDs;5Z|G?*Ka>-p>4^Zj5|HmDz|tsMxRMSbBYHL z%ILIuXQQ|gwxv3A1}$4Ft-bDGH@ zFf8PTn?NE0j%#Eu~jtShtZbto{2%c#aN;=lpd z2Z#8xjf<3n`;s~(*UHknn?8Zdks(xsef}6+qLc7AdkkVbDV^u?4Am8`DVOQq$3!B& zZk>TL4Id7Oh{K3ouLIHiSMKNx;FA&zX4Gxb9%)by|G7|0jv%rMBMWljS+lM|g=ZP2 z*1C?yQ~m*Rgi3B0MMK1@@ozEd6Y`v`Ka&>d%NJHl-%Z2A0Ux+xf^B?@0n6T(7W!~m~tw^j|HuS~nN5k}1(QvqL zDi_vbLk6*s&YR6h-?DD)Z!nrtn-Md&CI5Nl-cFvji&W!ob<~zM>-@j$JSD;k5~>At zdp?1xeHCiSO88%O=+K|lIEZZ2I@tYSb`85W1^@9IjwO$`2gDzCEkR!zn6^DI{ zfqso0j?67KY%-L8cay4%()(SYnB&sJ3Re9Z%FkM&QTp@aH;gzS*}8$E!R%hb z`so2>t4AemrbuB|FAG>YLCsXYm3en;T2hV&RS8AflqIZT3Kmf_Q@$6^&O2w-*EgNT zjto0GTt($J3@$+`1>9b-4uXuQ-Z_}6M?bW-Q+Y05zaZ*$uwcnKnHg+_{!$VKDDappLFy8g6mOgt^bg6)_5?UNeG+vXlmC_!f7u;K4Boaxy_J63rH4X4thdL~$5u+rkwM2n+c zd99tbzWAE@>`w$5 zt85acDvG$geV`U;Ld3>(n*kIoBMLLkLr|cQ#T~}YEIFvHx_ktma~05 zE3!K=td|EEty@mgAUEj^Mkr%%)S=?rNYVB(WLVZb}^DVug z_j6NmQ#D>JXABI$A0;m7Utp{;7;aP&h$5FjsQkwc z0qHV&{2Br=g`1y7Hf3|dCrqwapHHgCMur!3wtAG2&1=c^7!OD#d0Q?R`r+g1pJ5PP7pes&+aOUN&5QpMqi6u5 zmG=$I=G4SA%#wUi3m1!uo5SVPa-&opV0YNHbA|`1>A}WUd+LKTGK4o}8!RT?T;MJ3 zWzKy4wn|Z0#FB2z$}O|plBpJ@rK57iCeG4Os}+;&!iWAli9#8L=0ei@C=S+y3Z9`9 zU5zx3P3v@W$Lt?&&x_fYL%l358fcf>34jD{=?HIkF8^Y{Sn=LYMXju(Swo1`RjS3c z@ALg|m?PoP{1+rN7u~6CvBuUJVz)GR{vrC0lPv9bZjU=WLdVrii|r$U)J1cmwmnIZ zxy!}!cli~yv+^4#WLVO#J-=M3zgA~RNPXYQQm*07v(FRpk`L{}ZC@l3?v^QR@&xr; zPhm}li}Q$1^X``7~`gVzL?1MO=Qy zrb1R`8Rawb<>Q1R)omZv2xr4^-UFicgx5aud3_prq%=E1Zbyo*_63>&2I~l`dfL{( zaukmhve~HXKko`xdKO3^T&! z@>nm~N;$cmL6+8BXE_AV)V?BhrMxLaZ3#oM2 z)--xHtZ*6Q;kaU!1J1s5rGk>0G36l+m<*`;$PEhRBlNZTVwSND6QokKb>|Zm&a!;b z$YpDWkZ^s~hIe`B9)bri7vjklCQ z;GFmTRq|{r&+Zn{5A#!jQ5_DkKU*oz)j{dPActYVuk7uCZbC{1dUs-TjiF9wgYp;O zUK#|xk0m{-cK4b=XBUo=u(_8(qPHn`&t(YAhKZOM2Jlt*MvX&-{T74%iPO8rxBpEg z2PS}XmM{pf?L2wO)Z+=HAf)-^E?gt;-7t^_(dtZ z)hd;@bW{W?p9T4zxyHv{-8dr)hGr4VUD)3=B%qq3USS8O<2S|jg$AK#FW0feK;Qqo z1GXIZY0WzF2gF|T;Pw*x?;m3fT#BY+3oemdN)2V4r6bRk2g-|P&F6N5Oe`&TY1q8# zW+Q>rpI0oSvO?Wp_N5=q9rKePgmZ`ZXTSnA#8AZKz2E#6Jf1U#{8T!Rm}Y4-1syt( zu%@=XKtnd?wgio0VW(5Du&)qi*3Mz;xh%dpOZnOa=dz=vvhz3OXu|~07QFWgVq4m^ z+UUp-Yl5!81>Sp9ED!#;l{@ofrl_ho-}Nb;?d0X-!|uMANmz5X2FzD<#c*V2+UM^v zt~W75xk&Vj1T6;8aufOInc%Ord5o*Sr=GsXLTJ93hEv4N>N<85TJ|fQhM$l z3i>Jeu1QhKVbgvjGR&O0iI&Ww{WPr286im5R;w++=;hBTE%c%v$quezZ6SzX=ofdB zFueTRPcrVZwTxUwep*!#>1;#IgXN2m&D-b#cdsCYn6vZfx9n?wyf&W#PA7RkD;p=n zIO!`Gp<4%XKmJ=L?oG%=&)oMj`7f^s56&lFdntr4Kaa4DPF}{sAg}Yb^V}~E=Ht)BiMdcv)oH^0 z`v%4G+KRau&h-6I3Ri6#^2u+>0lqfmVm;K6!J%$xrfqI%Xvs7XPK7TjnPOWaR1a(t z?*yaV_tJVT{gt@tX!k5EM8b2$Y_DEP1ZaP?2#m)q@fHjaWmIJ z2y4u5ZJb)hKawxHa>PP^HPAR<`hMp)c%z`YZXrQvMrk9)q6ikAr8nm7z^|1DdRxL( zreEU{nMED@rP&J5GS0LMPvwr*z9}*@(M|iq!v9w#+ere{vP~=&IlI}ms?=tn4JL1d zSQ_IbsV67aOnx;XtH8nCqYmAtX#N0|qgs1Cs`T=<#Hxz|S#>Gx&Lvi}^{XwebFxM` zv6cLYW1VhTHzJ+GVmp_{(Q z5nZWj*(0Fvf_MA%9M;}Co*d*VM4i7}v?Azh*7&g=IO2N$jBoQ*xh-?Y>?RUf2rAW6 z_mVTnmAR?B*`ql}Jkxr@^ zHK?i_D!2pBS1SYm(!wv~#26tlt_p_sMygXPBH#dW{+B1CbpF5NWz#35 zZVKw)GO4G|1-xs;4?2(_8_-%B;ZFGTW5$Ab!GD|g3Q2}WN;T+ZkM!GHHEbTOma+PG z;F7dcN-10z$z0I%#%1Sp$!?Br1e3&NlIZEa9GmM2Olu1`i%Cc(V>mN;eKMK9U=J;R zSx!(Y*OwKZS{1(=B_w-QH%fJJh_01Cz ziTUZ^yT6Ry{oh|CcWsq5kqp4o?+ImDYODIJgc+{cd*;i6@gzBLJATF=Ag5;tyDd?i zOyvC0{TFUVQu=Z`K=Es4n>DfdPJRS)+g}b%~@#Qr1VP^JA-}Cf7xg@6pS?*u9Y1}tDuP9a{?74>rLTK10CrQ{DVm% zB;aurlaFCVt8ARe=tMeT zbl?#=@gFi->A**rb~hjl=DnUCaA9?$ucxjaF8 zwxX4G+_v%!sFgEa)W~u*p2j9_;}uCfF~Pz(3vogbQ6h9>BA#_PC(sWp*`(N>q_xCW zaz!Kfnm#wXQ5`oQgg8H*W{(*24(W`ipb&)vQu7xHD11IxQ*R(wScM4$I;h$@exk$6!(?oj+f;m?m85uCaNAW+FtmvT-;XJHQ+6DIheD{&JkeH3qXRU`%_>temv>Yg?9^8mv<32RVD)s(B3Mck+?zWa zal!+<#w6wpX|2EOxc+v~ibZ|oGrmegn*T^8C4?67vYT~47RWP_y}j;i#EI)ebm4Sa zp4LMC2OPK{Yq8HH0L0pil1~z`vHGdAqN>U%M@9c-`h4||t%-fASnCX~+=3>gKB`va z$#;4!R)YrirR2avro0~x?;gi5xebLqq?3*7pb92?>WuKH0N_}qdH6!1W}xJVkiWlY z*rXQ##wKgHl}F}N{`~@Qs7Z;q-foDyn%p;CogdE^zn>iQk^*O;k{U|KRK=dpO)&4p zdI&mgX?GW-`rC2|c|4(+><9TtMwa@-WvLIsA~PN#4T^zNuVYn+EaX{+5{y02ugcUr z%u|+Yl9w6m*`UGv3xG)PlngS-gX>?{l~Kjy4OYL}bkg;|tOU{-Je%$Un)bM|nyr6y zZ49`f5y+6U>BYi2l=##=aahF{hEg=i_)Z~3;1qjxBaOK8oU`WyfKX!Qn9t#Tg#EwT z4K+%$L||0QPVH>_;x@%AOr{1Ul>MT?-{5<4B;@rd6;=A+hsy*N$M}gEwhhn1L8o1B z)qt2+VhK{#+e~J~H$}7X+ zbwEh7auU&hYnfBIlcMzqHp5?xRv{si@Vy!nMIP*TY4oh2)c9PbG3Kxk>r8_$W{F}d5hQpIISeN zC`LwHkmq%9cHXZ2wi*|JFf+W+8x!2xCH>U4bHFa*1?mVex+8)k-~T`Ff{J$Iyg~X_ zb62l~AqMDx?#|!di%F?!Y`Xwn)nE#zd$`Vi0O!$nmwZ%C1k^k#cfZ?TY}Y*a@Ar#R zt49)GXtttI?+oN$Fn(~-#r3)17bCC^_DRh4JMy$QmFj=f`ev|}`D_iV3QMU0rfR{> zwLC4E5r~BVI9gWs~`q+X&|TF;zm0RdGKmixu%VOtqW_o6?1pU*y+R4@rObut1JHUkK)q7mtv}vlW$;a_wmNCV_h)cXP;v|MMvm$`M*SI*Wvw!ZCORL1opjeB-ds9ptu&1NkZ)f(zib1onuzwF! zAkZ`Zr*{F`WG>Cd*JLhm08YS|9%pjQg;2S98=?yjZ>jEr)h$Y283W>LM< zrOw|bPL5NeL?E67$gh=l1kd69zxe;BWhb1BW*qD#9Kz0(*|#qR3(}oG*dc? zUTwU52(^I#4#RGeYsQ&Bs|d~z<{kRIgg6=En`mG3 zPWL^rV~Y);yr70!DL~L*s1i+jKd^IVh$8#A66%c$9Z<&=X!)LP+I$-P&Ss*o@a{68W!`JVs) literal 0 HcmV?d00001 From b5b5a7bdef1de06a600b0c346aba56b7142b912b Mon Sep 17 00:00:00 2001 From: Megna Date: Thu, 25 Jan 2024 15:18:39 +0530 Subject: [PATCH 8/8] optimised code --- .../components/tab/TUIFloatingNavButton.kt | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt index 1cfba5b2..7f2d4b4a 100644 --- a/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt +++ b/tarkaui/src/main/java/com/tarkalabs/uicomponents/components/tab/TUIFloatingNavButton.kt @@ -81,17 +81,11 @@ sealed class TUIFloatingNavButtonContentType { .testTag(tags.parentTag)) { when (contentType) { - is Burger -> { - TUIFloatingNavBurgerButton() - } + is Burger -> TUIFloatingNavBurgerButton() - is Navigation -> { - TUIFloatingNavTypeButton(contentType, style) - } + is Navigation -> TUIFloatingNavTypeButton(contentType, style) - is List -> { - TUIFloatingNavListButton(contentType) - } + is List -> TUIFloatingNavListButton(contentType) } } }