Skip to content

Commit bbcabe9

Browse files
committed
fix(dashboard): Prefill address form on modify page & add submitLabel prop
- Add initialAddress prop to CustomerAddressSelector to pre-populate the address form when editing (fixes parity gap 1: editing an address on the modify page no longer requires retyping all fields from scratch) - Add submitLabel prop to CustomerAddressForm (fixes point 9: draft page shows 'Okay' matching Angular, modify page shows 'Update address') - Pass current shipping/billing address as initialAddress on the modify page - Update e2e test to match new button label
1 parent 48a1985 commit bbcabe9

32 files changed

Lines changed: 1080 additions & 758 deletions

File tree

packages/dashboard/e2e/tests/sales/orders.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ test.describe('Orders', () => {
370370
// Country is a Select — open and pick the first available country
371371
await popover.getByRole('combobox').click();
372372
await page.getByRole('option').first().click();
373-
await popover.getByRole('button', { name: /Save Address/i }).click();
373+
await popover.getByRole('button', { name: /Okay/i }).click();
374374

375375
// The new address is applied to the order
376376
await page.waitForResponse(resp => resp.url().includes('/admin-api') && resp.status() === 200);

packages/dashboard/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,27 @@ interface CustomerAddressSelectorProps {
2929
onSubmitNew: (input: CreateAddressInput) => void;
3030
onCancel?: () => void;
3131
defaultOpen?: boolean;
32+
/**
33+
* @description
34+
* Pre-populates the "New address" form with the given values. Used on the order modify page
35+
* so that editing an address doesn't require retyping all fields from scratch.
36+
*/
37+
initialAddress?: {
38+
fullName?: string | null;
39+
company?: string | null;
40+
streetLine1?: string | null;
41+
streetLine2?: string | null;
42+
city?: string | null;
43+
province?: string | null;
44+
postalCode?: string | null;
45+
countryCode?: string | null;
46+
phoneNumber?: string | null;
47+
};
48+
/**
49+
* @description
50+
* Custom label for the submit button in the "New address" form.
51+
*/
52+
submitLabel?: React.ReactNode;
3253
}
3354

3455
export function CustomerAddressSelector({
@@ -37,6 +58,8 @@ export function CustomerAddressSelector({
3758
onSubmitNew,
3859
onCancel,
3960
defaultOpen = false,
61+
initialAddress,
62+
submitLabel,
4063
}: Readonly<CustomerAddressSelectorProps>) {
4164
const [open, setOpen] = useState(defaultOpen);
4265
const [activeTab, setActiveTab] = useState<string>('existing');
@@ -130,6 +153,23 @@ export function CustomerAddressSelector({
130153
<div className="mt-2 max-h-[60vh] overflow-y-auto">
131154
<CustomerAddressForm
132155
hideDefaultAddressFlags
156+
address={initialAddress}
157+
setValuesForUpdate={addr => ({
158+
id: '',
159+
fullName: addr?.fullName ?? '',
160+
company: addr?.company ?? '',
161+
streetLine1: addr?.streetLine1 ?? '',
162+
streetLine2: addr?.streetLine2 ?? '',
163+
city: addr?.city ?? '',
164+
province: addr?.province ?? '',
165+
postalCode: addr?.postalCode ?? '',
166+
countryCode: addr?.countryCode ?? '',
167+
phoneNumber: addr?.phoneNumber ?? '',
168+
defaultShippingAddress: false,
169+
defaultBillingAddress: false,
170+
customFields: {},
171+
})}
172+
submitLabel={submitLabel}
133173
onSubmit={values => {
134174
onSubmitNew(mapFormValuesToInput(values));
135175
setOpen(false);

packages/dashboard/src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ function ModifyOrderPage() {
265265
onSelect={handleSelectShippingAddress}
266266
onSubmitNew={handleSubmitNewShippingAddress}
267267
onCancel={() => setEditingShippingAddress(false)}
268+
initialAddress={shippingAddress}
269+
submitLabel={<Trans>Update address</Trans>}
268270
defaultOpen
269271
/>
270272
) : (
@@ -295,6 +297,8 @@ function ModifyOrderPage() {
295297
onSelect={handleSelectBillingAddress}
296298
onSubmitNew={handleSubmitNewBillingAddress}
297299
onCancel={() => setEditingBillingAddress(false)}
300+
initialAddress={billingAddress}
301+
submitLabel={<Trans>Update address</Trans>}
298302
defaultOpen
299303
/>
300304
) : (

packages/dashboard/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,7 @@ function DraftOrderPage() {
534534
input,
535535
});
536536
}}
537+
submitLabel={<Trans>Okay</Trans>}
537538
/>
538539
</div>
539540
)}
@@ -562,6 +563,7 @@ function DraftOrderPage() {
562563
input,
563564
});
564565
}}
566+
submitLabel={<Trans>Okay</Trans>}
565567
/>
566568
</div>
567569
)}

packages/dashboard/src/i18n/locales/ar.po

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ msgstr ""
1414
"Plural-Forms: \n"
1515

1616
#: src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx:159
17-
#: src/lib/components/shared/customer-address-form.tsx:110
17+
#: src/lib/components/shared/customer-address-form.tsx:116
1818
msgid "Full Name"
1919
msgstr "الاسم الكامل"
2020

@@ -56,7 +56,7 @@ msgstr "تعيين مجموعة خيارات موجودة أو إنشاء مجم
5656
msgid "New role"
5757
msgstr "دور جديد"
5858

59-
#: src/lib/components/shared/customer-address-form.tsx:138
59+
#: src/lib/components/shared/customer-address-form.tsx:144
6060
msgid "Apartment, suite, etc."
6161
msgstr "شقة، جناح، إلخ."
6262

@@ -525,7 +525,7 @@ msgid "Create new customer"
525525
msgstr ""
526526

527527
#: src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx:196
528-
#: src/lib/components/shared/customer-address-form.tsx:148
528+
#: src/lib/components/shared/customer-address-form.tsx:154
529529
msgid "City"
530530
msgstr "المدينة"
531531

@@ -701,7 +701,7 @@ msgstr "يرجى إضافة منتجات وإكمال عنوان الشحن لت
701701
msgid "Toggle header row"
702702
msgstr "تبديل صف الرأس"
703703

704-
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:73
704+
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:96
705705
msgid "Select address"
706706
msgstr "تحديد عنوان"
707707

@@ -862,7 +862,7 @@ msgid "(max: {0})"
862862
msgstr "(الحد الأقصى: {0})"
863863

864864
#: src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx:165
865-
#: src/lib/components/shared/customer-address-form.tsx:118
865+
#: src/lib/components/shared/customer-address-form.tsx:124
866866
msgid "Company"
867867
msgstr "الشركة"
868868

@@ -926,6 +926,11 @@ msgstr "فشل إنشاء المنتج"
926926
msgid "Customer"
927927
msgstr "العميل"
928928

929+
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:269
930+
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:301
931+
msgid "Update address"
932+
msgstr ""
933+
929934
#. placeholder {0}: error.message
930935
#: src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx:46
931936
msgid "Error loading order history: {0}"
@@ -1510,7 +1515,7 @@ msgstr "أحدث الطلبات"
15101515
msgid "+ {leftOver} more"
15111516
msgstr "+ {leftOver} المزيد"
15121517

1513-
#: src/lib/components/shared/customer-address-form.tsx:249
1518+
#: src/lib/components/shared/customer-address-form.tsx:255
15141519
msgid "Use as the default billing address"
15151520
msgstr "استخدام كعنوان فوترة افتراضي"
15161521

@@ -1612,7 +1617,7 @@ msgstr "تم تحديث العنوان بنجاح"
16121617
msgid "Created"
16131618
msgstr "تم الإنشاء"
16141619

1615-
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:93
1620+
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:116
16161621
msgid "Loading addresses..."
16171622
msgstr "جارٍ تحميل العناوين..."
16181623

@@ -1668,7 +1673,7 @@ msgstr "الانتقال إلى الصفحة الأخيرة"
16681673
#: src/lib/components/shared/asset/asset-focal-point-editor.tsx:88
16691674
#: src/lib/components/shared/assign-to-channel-dialog.tsx:126
16701675
#: src/lib/components/shared/confirmation-dialog.tsx:42
1671-
#: src/lib/components/shared/customer-address-form.tsx:262
1676+
#: src/lib/components/shared/customer-address-form.tsx:268
16721677
#: src/lib/components/shared/navigation-confirmation.tsx:55
16731678
#: src/lib/components/shared/rich-text-editor/image-dialog.tsx:208
16741679
#: src/lib/components/shared/rich-text-editor/link-dialog.tsx:146
@@ -1690,7 +1695,7 @@ msgid "Refund from this method"
16901695
msgstr "الاسترداد من هذه الطريقة"
16911696

16921697
#: src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx:208
1693-
#: src/lib/components/shared/customer-address-form.tsx:170
1698+
#: src/lib/components/shared/customer-address-form.tsx:176
16941699
msgid "Postal Code"
16951700
msgstr "الرمز البريدي"
16961701

@@ -1797,7 +1802,7 @@ msgstr "معطل"
17971802
msgid "New promotion"
17981803
msgstr "عرض ترويجي جديد"
17991804

1800-
#: src/lib/components/shared/customer-address-form.tsx:228
1805+
#: src/lib/components/shared/customer-address-form.tsx:234
18011806
msgid "Default Shipping Address"
18021807
msgstr "عنوان الشحن الافتراضي"
18031808

@@ -1898,8 +1903,8 @@ msgstr "تم تحديث الملف الشخصي بنجاح"
18981903
msgid "Payment method"
18991904
msgstr "طريقة الدفع"
19001905

1901-
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:277
1902-
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:307
1906+
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:279
1907+
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:311
19031908
#: src/lib/components/shared/history-timeline/history-note-entry.tsx:46
19041909
msgid "Edit"
19051910
msgstr "تحرير"
@@ -2728,8 +2733,8 @@ msgid "This will remove all option groups from this product and return to the va
27282733
msgstr "سيؤدي هذا إلى إزالة جميع مجموعات الخيارات من هذا المنتج والعودة إلى اختيار إعداد المتغيرات."
27292734

27302735
#: src/app/routes/_authenticated/_orders/components/order-detail-shared.tsx:299
2731-
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:291
2732-
#: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx:542
2736+
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:293
2737+
#: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx:543
27332738
msgid "Billing address"
27342739
msgstr "عنوان الفوترة"
27352740

@@ -2805,7 +2810,7 @@ msgid "Amount"
28052810
msgstr "المبلغ"
28062811

28072812
#: src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx:242
2808-
#: src/lib/components/shared/customer-address-form.tsx:208
2813+
#: src/lib/components/shared/customer-address-form.tsx:214
28092814
msgid "Phone Number"
28102815
msgstr "رقم الهاتف"
28112816

@@ -2944,7 +2949,7 @@ msgstr "تم تحديث نقطة التركيز"
29442949
msgid "Option values"
29452950
msgstr "قيم الخيارات"
29462951

2947-
#: src/lib/components/shared/customer-address-form.tsx:246
2952+
#: src/lib/components/shared/customer-address-form.tsx:252
29482953
msgid "Default Billing Address"
29492954
msgstr "عنوان الفوترة الافتراضي"
29502955

@@ -3193,7 +3198,7 @@ msgstr "فشل تحديث نقطة التركيز"
31933198
msgid "Successfully updated zone"
31943199
msgstr "تم تحديث المنطقة بنجاح"
31953200

3196-
#: src/lib/components/shared/customer-address-form.tsx:156
3201+
#: src/lib/components/shared/customer-address-form.tsx:162
31973202
msgid "State/Province"
31983203
msgstr "الولاية/المحافظة"
31993204

@@ -3215,7 +3220,7 @@ msgstr "تعيين معايير التصفية لعمود {columnId}"
32153220

32163221
#: src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx:217
32173222
#: src/app/routes/_authenticated/_zones/components/zone-countries-table.tsx:53
3218-
#: src/lib/components/shared/customer-address-form.tsx:180
3223+
#: src/lib/components/shared/customer-address-form.tsx:186
32193224
msgid "Country"
32203225
msgstr "البلد"
32213226

@@ -3431,7 +3436,7 @@ msgstr "تم تفويض الدفع"
34313436
msgid "Successfully updated role"
34323437
msgstr "تم تحديث الدور بنجاح"
34333438

3434-
#: src/lib/components/shared/customer-address-form.tsx:191
3439+
#: src/lib/components/shared/customer-address-form.tsx:197
34353440
msgid "Select a country"
34363441
msgstr "حدد بلدًا"
34373442

@@ -3658,7 +3663,7 @@ msgstr "تم إنشاء قيمة الخاصية بنجاح"
36583663
msgid "Marketing"
36593664
msgstr "التسويق"
36603665

3661-
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:82
3666+
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:105
36623667
msgid "Existing address"
36633668
msgstr ""
36643669

@@ -3724,7 +3729,7 @@ msgstr "{0} متغير"
37243729
msgid "Failed to settle payment"
37253730
msgstr "فشل تسوية الدفع"
37263731

3727-
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:315
3732+
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:319
37283733
msgid "No billing address"
37293734
msgstr "لا يوجد عنوان فوترة"
37303735

@@ -3883,7 +3888,7 @@ msgstr "فشل تحديث موقع المخزون"
38833888
msgid "Order shipped"
38843889
msgstr "تم شحن الطلب"
38853890

3886-
#: src/lib/components/shared/customer-address-form.tsx:266
3891+
#: src/lib/components/shared/customer-address-form.tsx:272
38873892
msgid "Save Address"
38883893
msgstr "حفظ العنوان"
38893894

@@ -4621,7 +4626,7 @@ msgstr ""
46214626
msgid "Failed to set billing address for order: {0}"
46224627
msgstr ""
46234628

4624-
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:285
4629+
#: src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx:287
46254630
msgid "No shipping address"
46264631
msgstr "لا يوجد عنوان شحن"
46274632

@@ -4885,7 +4890,7 @@ msgstr "تحرير الأعضاء"
48854890
msgid "Stock on hand"
48864891
msgstr "المخزون المتاح"
48874892

4888-
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:86
4893+
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:109
48894894
msgid "New address"
48904895
msgstr ""
48914896

@@ -5092,7 +5097,7 @@ msgstr "النظام"
50925097
msgid "Variant name"
50935098
msgstr "اسم المتغير"
50945099

5095-
#: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx:595
5100+
#: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx:597
50965101
msgid "Remove"
50975102
msgstr "إزالة"
50985103

@@ -5161,7 +5166,7 @@ msgid "The page will continue with the default query."
51615166
msgstr "ستستمر الصفحة بالاستعلام الافتراضي."
51625167

51635168
#: src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx:175
5164-
#: src/lib/components/shared/customer-address-form.tsx:128
5169+
#: src/lib/components/shared/customer-address-form.tsx:134
51655170
msgid "Street Address"
51665171
msgstr "عنوان الشارع"
51675172

@@ -5314,6 +5319,11 @@ msgstr "اللغة الافتراضية"
53145319
msgid "Status"
53155320
msgstr "الحالة"
53165321

5322+
#: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx:537
5323+
#: src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx:566
5324+
msgid "Okay"
5325+
msgstr ""
5326+
53175327
#: src/lib/components/shared/configurable-operation-multi-selector.tsx:298
53185328
#: src/lib/components/shared/configurable-operation-selector.tsx:155
53195329
msgid "No options found"
@@ -5756,7 +5766,7 @@ msgstr "عرض عملية الطلب"
57565766
msgid "Failed to duplicate view"
57575767
msgstr "فشل نسخ العرض"
57585768

5759-
#: src/lib/components/shared/customer-address-form.tsx:231
5769+
#: src/lib/components/shared/customer-address-form.tsx:237
57605770
msgid "Use as the default shipping address"
57615771
msgstr "استخدام كعنوان شحن افتراضي"
57625772

@@ -6096,7 +6106,7 @@ msgstr "جارٍ التحميل..."
60966106
msgid "The token is used to specify the channel when making API requests."
60976107
msgstr "يُستخدم الرمز المميز لتحديد القناة عند إجراء طلبات API."
60986108

6099-
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:97
6109+
#: src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx:120
61006110
msgid "No addresses found"
61016111
msgstr "لم يتم العثور على عناوين"
61026112

0 commit comments

Comments
 (0)