diff --git a/WooCommerce/Classes/ViewModels/Order Details/OrderDetailsViewModel.swift b/WooCommerce/Classes/ViewModels/Order Details/OrderDetailsViewModel.swift index c09635fca3b..36447bbc4fc 100644 --- a/WooCommerce/Classes/ViewModels/Order Details/OrderDetailsViewModel.swift +++ b/WooCommerce/Classes/ViewModels/Order Details/OrderDetailsViewModel.swift @@ -488,8 +488,16 @@ extension OrderDetailsViewModel { let customFieldsView = UIHostingController( rootView: CustomFieldsListView( isEditable: featureFlagService.isFeatureFlagEnabled(.viewEditCustomFieldsInProductsAndOrders), - viewModel: CustomFieldsListViewModel(customFields: customFields))) - viewController.present(customFieldsView, animated: true) + viewModel: CustomFieldsListViewModel(customFields: customFields), + onBackButtonTapped: { + // Restore the hidden navigation bar + viewController.navigationController?.setNavigationBarHidden(false, animated: true) + }) + ) + + // Hide the navigation bar as `CustomFieldsListView` will create its own toolbar. + viewController.navigationController?.setNavigationBarHidden(true, animated: true) + viewController.navigationController?.pushViewController(customFieldsView, animated: true) case .seeReceipt: let countryCode = configurationLoader.configuration.countryCode ServiceLocator.analytics.track(event: .InPersonPayments.receiptViewTapped(countryCode: countryCode, source: .backend)) diff --git a/WooCommerce/Classes/ViewRelated/Custom Fields/CustomFieldsListView.swift b/WooCommerce/Classes/ViewRelated/Custom Fields/CustomFieldsListView.swift index a156e46ba30..4ed34e4a8bf 100644 --- a/WooCommerce/Classes/ViewRelated/Custom Fields/CustomFieldsListView.swift +++ b/WooCommerce/Classes/ViewRelated/Custom Fields/CustomFieldsListView.swift @@ -5,15 +5,18 @@ struct CustomFieldsListView: View { @ObservedObject private var viewModel: CustomFieldsListViewModel let isEditable: Bool + let onBackButtonTapped: () -> Void init(isEditable: Bool, - viewModel: CustomFieldsListViewModel) { + viewModel: CustomFieldsListViewModel, + onBackButtonTapped: @escaping () -> Void) { self.isEditable = isEditable self.viewModel = viewModel + self.onBackButtonTapped = onBackButtonTapped } var body: some View { - NavigationView { + NavigationStack { List(viewModel.combinedList) { customField in if isEditable { NavigationLink(destination: CustomFieldEditorView(key: customField.key, value: customField.value)) { @@ -29,14 +32,16 @@ struct CustomFieldsListView: View { contentURL: nil) } } + .listStyle(.plain) .navigationTitle(Localization.title) .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .cancellationAction) { Button(action: { + onBackButtonTapped() presentationMode.wrappedValue.dismiss() }, label: { - Image(uiImage: .closeButton) + Image(systemName: "chevron.backward") }) } @@ -133,7 +138,6 @@ extension CustomFieldsListView { private extension CustomFieldRow { enum Constants { static let spacing: CGFloat = 8 - static let vStackPadding: CGFloat = 16 static let hStackPadding: CGFloat = 10 static let height: CGFloat = 64 } @@ -149,7 +153,8 @@ struct OrderCustomFieldsDetails_Previews: PreviewProvider { customFields: [ CustomFieldViewModel(id: 0, title: "First Title", content: "First Content"), CustomFieldViewModel(id: 1, title: "Second Title", content: "Second Content", contentURL: URL(string: "https://woocommerce.com/")) - ]) + ]), + onBackButtonTapped: { } ) } }