From af18a24ea9c59b57530e4c8bf0c21583beae7470 Mon Sep 17 00:00:00 2001 From: RafaelKayumov Date: Mon, 30 Jun 2025 13:43:43 +0300 Subject: [PATCH 01/10] Move destination address CTA footer to scroll view for accessibility sizes --- .../WooShippingEditAddressView.swift | 72 ++++++++++++------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressView.swift index f6e52d61a89..9bbb3a323e8 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressView.swift @@ -20,6 +20,7 @@ struct WooShippingEditAddressView: View { @State private var previousFocusedField: WooShippingAddressFieldType? @Environment(\.dismiss) private var dismiss + @Environment(\.sizeCategory) private var sizeCategory @State private var isPresentingCountrySelector: Bool = false @State private var isPresentingStateSelector: Bool = false @@ -77,6 +78,10 @@ struct WooShippingEditAddressView: View { .font(.subheadline) .tint(Color(.accent)) } + + if sizeCategory.isAccessibilityCategory { + ctaFooter(isScrollViewEmbedded: true) + } } .padding() .onChange(of: focusedField) { newField in @@ -147,33 +152,9 @@ struct WooShippingEditAddressView: View { } } .safeAreaInset(edge: .bottom) { - VStack(spacing: .zero) { - Divider().ignoresSafeArea(edges: [.horizontal]) - VStack(spacing: Constants.verticalSpacing) { - HStack { - Image(systemName: viewModel.status == .verified ? "checkmark.circle" : "exclamationmark.circle") - Text(viewModel.statusLabel) - } - .font(.subheadline) - .foregroundStyle(viewModel.status == .verified ? Constants.green : Constants.red) - Button(Localization.Button.label(for: viewModel.status)) { - switch viewModel.status { - case .verified: - dismiss() - case .unverified: - Task { @MainActor in - await viewModel.remotelyValidateAddress() - } - case .missingInformation: - break - } - } - .buttonStyle(PrimaryLoadingButtonStyle(isLoading: viewModel.isLoading)) - .disabled(viewModel.status == .missingInformation) - } - .padding() + if !sizeCategory.isAccessibilityCategory { + ctaFooter(isScrollViewEmbedded: false) } - .background(Color(uiColor: .systemBackground)) } .sheet(item: $viewModel.normalizeAddressVM) { viewModel in NavigationStack { @@ -206,6 +187,44 @@ struct WooShippingEditAddressView: View { ) } + private func ctaFooter(isScrollViewEmbedded: Bool) -> some View { + VStack(spacing: .zero) { + Divider() + .ignoresSafeArea(edges: [.horizontal]) + .padding( + /// When embedded in scroll view + /// we use a negative value to neglect the parent padding for the divider + isScrollViewEmbedded ? .horizontal : [], + -Constants.defaultPadding + ) + + VStack(spacing: Constants.verticalSpacing) { + HStack { + Image(systemName: viewModel.status == .verified ? "checkmark.circle" : "exclamationmark.circle") + Text(viewModel.statusLabel) + } + .font(.subheadline) + .foregroundStyle(viewModel.status == .verified ? Constants.green : Constants.red) + Button(Localization.Button.label(for: viewModel.status)) { + switch viewModel.status { + case .verified: + dismiss() + case .unverified: + Task { @MainActor in + await viewModel.remotelyValidateAddress() + } + case .missingInformation: + break + } + } + .buttonStyle(PrimaryLoadingButtonStyle(isLoading: viewModel.isLoading)) + .disabled(viewModel.status == .missingInformation) + } + .padding(isScrollViewEmbedded ? .vertical : .all) + } + .background(Color(uiColor: .systemBackground)) + } + private struct AddressTextField: View { @ObservedObject var field: WooShippingAddressField @@ -345,6 +364,7 @@ extension WooShippingEditAddressView { private extension WooShippingEditAddressView { enum Constants { static let verticalSpacing: CGFloat = 16 + static let defaultPadding: CGFloat = 16 static let innerSpacing: CGFloat = 8 static let extraPadding: CGFloat = 24 static let cornerRadius: CGFloat = 8 From e39b9746470fa9c69a7fa2209657a60ff4faa42f Mon Sep 17 00:00:00 2001 From: RafaelKayumov Date: Mon, 30 Jun 2025 14:32:10 +0300 Subject: [PATCH 02/10] Conditionally distribute shipment destination address content --- .../WooShippingCreateLabelsView.swift | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsView.swift index 383d3397404..ecd11fda843 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsView.swift @@ -412,10 +412,17 @@ private extension WooShippingCreateLabelsView { /// View showing the destination ("Ship To") address. var shipToAddress: some View { - HStack(alignment: .firstTextBaseline, spacing: Layout.bottomSheetSpacing) { + AdaptiveStack( + horizontalAlignment: .leading, + verticalAlignment: .firstTextBaseline, + spacing: Layout.bottomSheetSpacing + ) { Text(Localization.BottomSheet.shipTo) .frame(width: shipmentDetailsShipFromSize.width, alignment: .leading) - VStack(alignment: .leading) { + VStack( + alignment: .leading, + spacing: Layout.verticalSpacing + ) { if let addressLines = viewModel.destinationAddressLines { AddressLinesView(addressLines: addressLines) } From 74cc5e943f1d1da86d2c3c8689dc682dc085450a Mon Sep 17 00:00:00 2001 From: RafaelKayumov Date: Mon, 30 Jun 2025 15:26:02 +0300 Subject: [PATCH 03/10] Make package empty state content wrap lines --- .../WooCarrierPackagesSelectionView.swift | 3 +++ .../WooSavedPackagesSelectionView.swift | 2 ++ 2 files changed, 5 insertions(+) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift index bc2fc568d70..540cb53f04a 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift @@ -202,10 +202,13 @@ private extension WooCarrierPackagesSelectionView { Text(Localization.emptyStateMessage) .multilineTextAlignment(.center) .bold() + .fixedSize(horizontal: false, vertical: true) + .padding(.horizontal) Button(Localization.createCustomPackageCTA) { addingCustomPackageHandler() } .buttonStyle(PrimaryButtonStyle()) + .fixedSize(horizontal: false, vertical: true) .padding(.horizontal, Layout.ctaPadding) Spacer() } diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift index 70076ed16e2..7d7f58582c5 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift @@ -205,10 +205,12 @@ private extension WooSavedPackagesSelectionView { Text(Localization.emptyStateMessage) .multilineTextAlignment(.center) .bold() + .fixedSize(horizontal: false, vertical: true) Button(Localization.createCustomPackageCTA) { addingCustomPackageHandler() } .buttonStyle(PrimaryButtonStyle()) + .fixedSize(horizontal: false, vertical: true) .padding(.horizontal, Layout.ctaPadding) Spacer() } From 79a6f56773b0801d7f3f57eaed00d506ba17fd53 Mon Sep 17 00:00:00 2001 From: RafaelKayumov Date: Mon, 30 Jun 2025 17:21:25 +0300 Subject: [PATCH 04/10] Conditionally embed noticeStack in scroll view --- .../WooShippingSplitShipmentsView.swift | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsView.swift index 60491c7fdd0..7d9f8f34b32 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsView.swift @@ -3,6 +3,7 @@ import Yosemite struct WooShippingSplitShipmentsView: View { @Environment(\.dismiss) private var dismiss + @Environment(\.sizeCategory) private var sizeCategory @ObservedObject var viewModel: ViewModel @@ -17,7 +18,7 @@ struct WooShippingSplitShipmentsView: View { var body: some View { NavigationView { - VStack { + VStack(spacing: 0) { if viewModel.shipments.count > 1 { VStack(spacing: 0) { topTabView @@ -44,14 +45,20 @@ struct WooShippingSplitShipmentsView: View { CollapsibleShipmentItemCard(viewModel: item) } } + + if sizeCategory.isAccessibilityCategory { + Spacer() + noticeStack + } } .padding(Layout.contentPadding) } - Spacer() - - noticeStack - .padding(Layout.contentPadding) + if !sizeCategory.isAccessibilityCategory { + Spacer() + noticeStack + .padding(Layout.contentPadding) + } } .disabled(viewModel.isSavingShipmentInfo) .navigationBarTitleDisplayMode(.inline) From afbb75d9ee4ccba6a6b4b46f57c454e355c0af7b Mon Sep 17 00:00:00 2001 From: RafaelKayumov Date: Mon, 30 Jun 2025 19:11:50 +0300 Subject: [PATCH 05/10] Re-arrange sheet and toolbar modifiers to avoid stale keybard accessory --- .../WooShippingEditAddressView.swift | 72 ++++++++++--------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressView.swift index 9bbb3a323e8..4a2a1e1f15d 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressView.swift @@ -91,11 +91,6 @@ struct WooShippingEditAddressView: View { previousFocusedField = newField } .toolbar { - ToolbarItem(placement: .cancellationAction) { - Button(Localization.cancel) { - dismiss() - } - } ToolbarItemGroup(placement: .keyboard) { Button(action: { focusPreviousField() @@ -118,36 +113,11 @@ struct WooShippingEditAddressView: View { } } } - .sheet(isPresented: $isPresentingCountrySelector) { - NavigationStack { - FilterListSelector(viewModel: viewModel.countrySelectorVM) - .navigationBarTitleDisplayMode(.inline) - .toolbar { - ToolbarItem(placement: .confirmationAction) { - Button { - isPresentingCountrySelector = false - } label: { - Text(Localization.done) - .bold() - } - } - } - } - } - .sheet(isPresented: $isPresentingStateSelector) { - NavigationStack { - FilterListSelector(viewModel: viewModel.stateSelectorVM) - .navigationBarTitleDisplayMode(.inline) - .toolbar { - ToolbarItem(placement: .confirmationAction) { - Button { - isPresentingStateSelector = false - } label: { - Text(Localization.done) - .bold() - } - } - } + } + .toolbar { + ToolbarItem(placement: .cancellationAction) { + Button(Localization.cancel) { + dismiss() } } } @@ -161,6 +131,38 @@ struct WooShippingEditAddressView: View { WooShippingNormalizeAddressView(viewModel: viewModel) } } + .sheet(isPresented: $isPresentingCountrySelector) { + NavigationStack { + FilterListSelector(viewModel: viewModel.countrySelectorVM) + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .confirmationAction) { + Button { + isPresentingCountrySelector = false + } label: { + Text(Localization.done) + .bold() + } + } + } + } + } + .sheet(isPresented: $isPresentingStateSelector) { + NavigationStack { + FilterListSelector(viewModel: viewModel.stateSelectorVM) + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .confirmationAction) { + Button { + isPresentingStateSelector = false + } label: { + Text(Localization.done) + .bold() + } + } + } + } + } .alert( viewModel.addressErrorState?.title ?? "", isPresented: $viewModel.isShowingAddressErrorAlert, From 3b8d7ccd739d50f1f32054728b56c8f691f1dab8 Mon Sep 17 00:00:00 2001 From: RafaelKayumov Date: Mon, 30 Jun 2025 19:58:14 +0300 Subject: [PATCH 06/10] Add release notes --- RELEASE-NOTES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 665a74c0bf4..d9fbadc2c7b 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -4,6 +4,7 @@ 22.8 ----- - [*] POS: icon button with confirmation step used for clearing the cart [https://github.com/woocommerce/woocommerce-ios/pull/15829] +- [*] Shipping Labels: Fixed a portion of layout issues caused by bigger accessibility content size categories. [https://github.com/woocommerce/woocommerce-ios/pull/15844] 22.7 ----- From 221ce727803a7936945f8c2689e95ed011d80b8c Mon Sep 17 00:00:00 2001 From: Huong Do Date: Tue, 1 Jul 2025 11:23:44 +0700 Subject: [PATCH 07/10] Make shipment to remove row expand all the width. --- .../WooShippingSplitShipmentsView.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsView.swift index 7d9f8f34b32..542c1d2408c 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Split Shipments/WooShippingSplitShipmentsView.swift @@ -275,6 +275,7 @@ private extension WooShippingSplitShipmentsView { Text(otherShipment.itemsDetailLabel) } .font(.subheadline) + .frame(maxWidth: .infinity, alignment: .leading) } } .padding(Layout.contentPadding) From 7c45c2f11d4d96e97e9a5463f9d9482cafd1b6c1 Mon Sep 17 00:00:00 2001 From: Huong Do Date: Tue, 1 Jul 2025 12:09:06 +0700 Subject: [PATCH 08/10] Move Ship from row to adaptive stack --- .../WooShippingCreateLabelsView.swift | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsView.swift index ecd11fda843..d05e04c31ed 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsView.swift @@ -370,7 +370,11 @@ private extension WooShippingCreateLabelsView { /// View showing the origin ("Ship From") address. var shipFromAddress: some View { - HStack(alignment: .firstTextBaseline, spacing: Layout.bottomSheetSpacing) { + AdaptiveStack( + horizontalAlignment: .leading, + verticalAlignment: .firstTextBaseline, + spacing: Layout.bottomSheetSpacing + ) { Text(Localization.BottomSheet.shipFrom) .trackSize(size: $shipmentDetailsShipFromSize) @@ -379,7 +383,10 @@ private extension WooShippingCreateLabelsView { AddressLinesView(addressLines: addressLines) .frame(maxWidth: .infinity, alignment: .leading) } else { - VStack(alignment: .leading) { + VStack( + alignment: .leading, + spacing: Layout.verticalSpacing + ) { Button { isOriginAddressListPresented = true } label: { From b9bf7a0c7d169a4d690aadbfef7ebede867e5ef0 Mon Sep 17 00:00:00 2001 From: Huong Do Date: Tue, 1 Jul 2025 12:09:22 +0700 Subject: [PATCH 09/10] Make empty views in package selection scrollable --- .../WooCarrierPackagesSelectionView.swift | 2 +- .../WooSavedPackagesSelectionView.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift index 540cb53f04a..d99d0340433 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift @@ -212,7 +212,7 @@ private extension WooCarrierPackagesSelectionView { .padding(.horizontal, Layout.ctaPadding) Spacer() } - + .scrollVerticallyIfNeeded() } func addPackageButtonTapped() { diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift index 7d7f58582c5..e444ca5acc0 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift @@ -214,7 +214,7 @@ private extension WooSavedPackagesSelectionView { .padding(.horizontal, Layout.ctaPadding) Spacer() } - + .scrollVerticallyIfNeeded() } var selectionButtonDisabled: Bool { From 36c47d58010db15b43ee2311704f4fb13a5c0808 Mon Sep 17 00:00:00 2001 From: Huong Do Date: Tue, 1 Jul 2025 12:20:21 +0700 Subject: [PATCH 10/10] Hide select package button when no content is available --- .../WooCarrierPackagesSelectionView.swift | 1 + .../WooSavedPackagesSelectionView.swift | 1 + 2 files changed, 2 insertions(+) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift index d99d0340433..ec5e029022a 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooCarrierPackagesSelectionView.swift @@ -136,6 +136,7 @@ struct WooCarrierPackagesSelectionView: View { Button(selectionButtonText) { addPackageButtonTapped() } + .renderedIf(viewModel.carrierTabs.isNotEmpty) .disabled(selectionButtonDisabled) .if(viewModel.previousSelectedAndSelectedCarriersPackageAreSame) { $0.buttonStyle(SecondaryButtonStyle()) diff --git a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift index e444ca5acc0..204754faa87 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift @@ -157,6 +157,7 @@ struct WooSavedPackagesSelectionView: View { addPackageButtonTapped() } .disabled(selectionButtonDisabled) + .renderedIf(viewModel.hasSavedPackages) .if(viewModel.previousSelectedAndSelectedSavedPackageAreSame) { $0.buttonStyle(SecondaryButtonStyle()) }