From 1df60a1fefdbabdacd864364132c62513b505bf5 Mon Sep 17 00:00:00 2001 From: Alejo Date: Sat, 19 Oct 2024 07:27:42 -0600 Subject: [PATCH 1/4] add bottom sheet --- .../WooShippingLabelCreationFragment.kt | 4 +- .../WooShippingLabelCreationScreen.kt | 105 ++++++++++++++---- 2 files changed, 87 insertions(+), 22 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationFragment.kt index a21f77d5ca1..eadea6177e8 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationFragment.kt @@ -7,9 +7,9 @@ import android.view.ViewGroup import androidx.compose.material.Surface import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy -import com.woocommerce.android.R import com.woocommerce.android.ui.base.BaseFragment import com.woocommerce.android.ui.compose.theme.WooThemeWithBackground +import com.woocommerce.android.ui.main.AppBarStatus class WooShippingLabelCreationFragment : BaseFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { @@ -25,5 +25,5 @@ class WooShippingLabelCreationFragment : BaseFragment() { } } - override fun getFragmentTitle() = getString(R.string.orderdetail_shipping_label_create_shipping_label) + override val activityAppBarStatus: AppBarStatus = AppBarStatus.Hidden } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationScreen.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationScreen.kt index 8b204d3f4e6..61afc6b5154 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationScreen.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationScreen.kt @@ -3,21 +3,34 @@ package com.woocommerce.android.ui.orders.wooshippinglabels import android.content.res.Configuration import androidx.compose.foundation.background import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll +import androidx.compose.material.BottomSheetScaffold +import androidx.compose.material.Button +import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.Icon +import androidx.compose.material.IconButton import androidx.compose.material.MaterialTheme +import androidx.compose.material.Surface import androidx.compose.material.Text +import androidx.compose.material.TopAppBar +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.rememberBottomSheetScaffoldState import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.colorResource @@ -33,31 +46,83 @@ import com.woocommerce.android.R import com.woocommerce.android.ui.compose.component.WCColoredButton import com.woocommerce.android.ui.compose.modifiers.dashedBorder import com.woocommerce.android.ui.compose.theme.WooThemeWithBackground +import kotlinx.coroutines.launch +@OptIn(ExperimentalMaterialApi::class) @Composable fun WooShippingLabelCreationScreen( modifier: Modifier = Modifier ) { - Column(modifier.verticalScroll(rememberScrollState())) { - val isExpanded = remember { mutableStateOf(false) } - ShippingProductsCard( - shippableItems = ShippableItems( - shippableItems = generateItems(6), - totalWeight = "8.5kg", - totalPrice = "$92.78" - ), - modifier = Modifier - .fillMaxWidth() - .padding(16.dp), - isExpanded = isExpanded.value, - onExpand = { isExpanded.value = it } - ) - HazmatCard( - modifier = Modifier - .fillMaxWidth() - .padding(start = 4.dp, end = 8.dp) - ) - PackageCard(modifier = Modifier.padding(16.dp)) + val scope = rememberCoroutineScope() + val scaffoldState = rememberBottomSheetScaffoldState() + BottomSheetScaffold( + sheetContent = { + Box( + Modifier + .fillMaxWidth() + .height(128.dp), + contentAlignment = Alignment.Center + ) { + Text("Swipe up to expand sheet") + } + Column( + Modifier + .fillMaxSize() + .padding(64.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text("Sheet content") + Spacer(Modifier.height(20.dp)) + Button(onClick = { scope.launch { scaffoldState.bottomSheetState.collapse() } }) { + Text("Click to collapse sheet") + } + } + }, + sheetPeekHeight = 128.dp, + scaffoldState = scaffoldState, + topBar = { + TopAppBar( + title = { Text(stringResource(id = R.string.shipping_label_create_title)) }, + navigationIcon = { + IconButton({}) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(id = R.string.back) + ) + } + }, + backgroundColor = colorResource(id = R.color.color_toolbar), + elevation = 0.dp, + ) + }, + ) { innerPadding -> + Surface( + modifier + .fillMaxSize() + .padding(innerPadding) + ) { + Column(modifier.verticalScroll(rememberScrollState())) { + val isExpanded = remember { mutableStateOf(false) } + ShippingProductsCard( + shippableItems = ShippableItems( + shippableItems = generateItems(6), + totalWeight = "8.5kg", + totalPrice = "$92.78" + ), + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + isExpanded = isExpanded.value, + onExpand = { isExpanded.value = it } + ) + HazmatCard( + modifier = Modifier + .fillMaxWidth() + .padding(start = 4.dp, end = 8.dp) + ) + PackageCard(modifier = Modifier.padding(16.dp)) + } + } } } From b8c98d62578c93d49a424916c938150d0b5f80ba Mon Sep 17 00:00:00 2001 From: Alejo Date: Wed, 23 Oct 2024 16:47:52 -0600 Subject: [PATCH 2/4] add resources --- WooCommerce/src/main/res/values/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/WooCommerce/src/main/res/values/strings.xml b/WooCommerce/src/main/res/values/strings.xml index c6a448ff6f4..62d943f4528 100644 --- a/WooCommerce/src/main/res/values/strings.xml +++ b/WooCommerce/src/main/res/values/strings.xml @@ -1260,6 +1260,8 @@ Select a Package Select a package to get shipping rates Enter your package\'s dimensions or pick a carrier package option to see the available shipping rates. + Shipment details + Order details