From e00719e41b736c1ef74b7756910eebeb0dea409a Mon Sep 17 00:00:00 2001 From: dwindown Date: Sun, 9 Nov 2025 20:58:49 +0700 Subject: [PATCH] fix: Mobile accordion + deduplicate shipping methods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: ✅ Issue #2: Mobile drawer now uses accordion (no nested modals) ✅ Issue #3: Duplicate "Local pickup" - now shows as: - Local pickup - Local pickup (local_pickup_plus) Changes: - Mobile drawer matches desktop accordion pattern - Smaller text/spacing for mobile - Deduplication logic in backend API - Adds method ID suffix for duplicate titles Result: ✅ No modal-over-modal on any device ✅ Consistent UX desktop/mobile ✅ Clear distinction between similar methods --- admin-spa/src/routes/Settings/Shipping.tsx | 168 +++++++++++++++------ includes/Api/ShippingController.php | 15 +- 2 files changed, 139 insertions(+), 44 deletions(-) diff --git a/admin-spa/src/routes/Settings/Shipping.tsx b/admin-spa/src/routes/Settings/Shipping.tsx index c3e3d50..9cd7b3b 100644 --- a/admin-spa/src/routes/Settings/Shipping.tsx +++ b/admin-spa/src/routes/Settings/Shipping.tsx @@ -502,53 +502,137 @@ export default function ShippingPage() { {__('Add Delivery Option')} - {/* Delivery Options List */} -
+ {/* Delivery Options Accordion (Mobile) */} + { + setExpandedMethod(value); + if (value) { + const instanceId = parseInt(value); + fetchMethodSettings(instanceId); + } + }}> {selectedZone.rates?.map((rate: any) => ( -
-
-
-
+ +
+ +
- +
+
+
+ + + {rate.enabled ? __('On') : __('Off')} + +
+
-
- - - {rate.enabled ? __('On') : __('Off')} - -
-
-
- - -
+
+
-
+ + {methodSettings[rate.instance_id] ? ( +
+
+ + +
+ + {methodSettings[rate.instance_id].settings?.cost && ( +
+ + + {methodSettings[rate.instance_id].settings.cost.description && ( +

+ )} +

+ )} + + {methodSettings[rate.instance_id].settings?.min_amount && ( +
+ + +
+ )} + +
+ + +
+
+ ) : ( +
+ +
+ )} +
+ ))} -
+
diff --git a/includes/Api/ShippingController.php b/includes/Api/ShippingController.php index d44f4cb..873dca1 100644 --- a/includes/Api/ShippingController.php +++ b/includes/Api/ShippingController.php @@ -398,10 +398,21 @@ class ShippingController extends WP_REST_Controller { $methods = $shipping->get_shipping_methods(); $available = array(); + $seen_titles = array(); + foreach ( $methods as $method ) { + $title = $method->get_method_title(); + $id = $method->id; + + // Deduplicate by adding ID suffix if title already exists + if ( isset( $seen_titles[ $title ] ) ) { + $title .= ' (' . $id . ')'; + } + $seen_titles[ $title ] = true; + $available[] = array( - 'id' => $method->id, - 'title' => $method->get_method_title(), + 'id' => $id, + 'title' => $title, 'description' => $method->get_method_description(), ); }