@fluid-app/portal-sdk 0.1.311 → 0.1.313
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AddressAutocompleteInput-CmbuVfD5.cjs → AddressAutocompleteInput-BqZwiUup.cjs} +212 -136
- package/dist/AddressAutocompleteInput-BqZwiUup.cjs.map +1 -0
- package/dist/{AddressAutocompleteInput-RLaGWKfq.mjs → AddressAutocompleteInput-DY0ZFQOs.mjs} +212 -136
- package/dist/AddressAutocompleteInput-DY0ZFQOs.mjs.map +1 -0
- package/dist/{ContactsScreen-C2-ScK3i.cjs → ContactsScreen-B_iTSV67.cjs} +21 -21
- package/dist/{ContactsScreen-C2-ScK3i.cjs.map → ContactsScreen-B_iTSV67.cjs.map} +1 -1
- package/dist/{ContactsScreen-9613La-4.cjs → ContactsScreen-BacGvYpU.cjs} +1 -1
- package/dist/{ContactsScreen-CAwUXMDr.mjs → ContactsScreen-D2htG3gL.mjs} +21 -21
- package/dist/{ContactsScreen-CAwUXMDr.mjs.map → ContactsScreen-D2htG3gL.mjs.map} +1 -1
- package/dist/{FluidProvider-D4T1Tfn7.mjs → FluidProvider-BdjVFM6g.mjs} +5 -3
- package/dist/{FluidProvider-D4T1Tfn7.mjs.map → FluidProvider-BdjVFM6g.mjs.map} +1 -1
- package/dist/{FluidProvider-FvdFx8ML.cjs → FluidProvider-CiMgrTE0.cjs} +5 -3
- package/dist/{FluidProvider-FvdFx8ML.cjs.map → FluidProvider-CiMgrTE0.cjs.map} +1 -1
- package/dist/{MessagingScreen-_TJsaL8I.cjs → MessagingScreen-B0nvkVRJ.cjs} +2 -2
- package/dist/{MessagingScreen-_TJsaL8I.cjs.map → MessagingScreen-B0nvkVRJ.cjs.map} +1 -1
- package/dist/{MessagingScreen-CWqnuXcd.mjs → MessagingScreen-ClnTfJPR.mjs} +2 -2
- package/dist/{MessagingScreen-CWqnuXcd.mjs.map → MessagingScreen-ClnTfJPR.mjs.map} +1 -1
- package/dist/{MessagingScreen-bUf-46H5.cjs → MessagingScreen-DckwoF5C.cjs} +2 -2
- package/dist/{MessagingScreen-DuYCzPYW.mjs → MessagingScreen-Dz57LSh8.mjs} +2 -2
- package/dist/{OrdersScreen-kVm3EyXs.cjs → OrdersScreen-Ci3ZZZKP.cjs} +2 -2
- package/dist/{OrdersScreen-kVm3EyXs.cjs.map → OrdersScreen-Ci3ZZZKP.cjs.map} +1 -1
- package/dist/{OrdersScreen-CGxEuDzh.cjs → OrdersScreen-CtzoJUXX.cjs} +2 -2
- package/dist/{OrdersScreen-D1Whz24J.mjs → OrdersScreen-DKzZQPWm.mjs} +2 -2
- package/dist/{OrdersScreen-OEk3M3Qm.mjs → OrdersScreen-zpW6p4eP.mjs} +2 -2
- package/dist/{OrdersScreen-OEk3M3Qm.mjs.map → OrdersScreen-zpW6p4eP.mjs.map} +1 -1
- package/dist/{ProfileScreen-DCrPvVaF.cjs → ProfileScreen-BRYNGS4S.cjs} +3 -3
- package/dist/{ProfileScreen-BBjsjvuj.cjs → ProfileScreen-BXZMqNcY.cjs} +30 -23
- package/dist/ProfileScreen-BXZMqNcY.cjs.map +1 -0
- package/dist/{ProfileScreen-eeXNttNa.mjs → ProfileScreen-BirNjDNw.mjs} +3 -3
- package/dist/{ProfileScreen-DeTQ4Xoo.mjs → ProfileScreen-D-Vo-_yC.mjs} +30 -23
- package/dist/ProfileScreen-D-Vo-_yC.mjs.map +1 -0
- package/dist/{ShopScreen-BGiVyKAO.cjs → ShopScreen-CBZsxycw.cjs} +2 -2
- package/dist/{ShopScreen-KF3dsnFC.mjs → ShopScreen-CC3KbNCc.mjs} +2 -2
- package/dist/{ShopScreen-KF3dsnFC.mjs.map → ShopScreen-CC3KbNCc.mjs.map} +1 -1
- package/dist/{ShopScreen-Cx-iyP99.cjs → ShopScreen-D9I_t5HX.cjs} +2 -2
- package/dist/{ShopScreen-Cx-iyP99.cjs.map → ShopScreen-D9I_t5HX.cjs.map} +1 -1
- package/dist/{ShopScreen-CH3PhvzA.mjs → ShopScreen-Jsj-2scF.mjs} +2 -2
- package/dist/{SubscriptionsScreen-BJ8yW6x3.cjs → SubscriptionsScreen-Bo4cTf0n.cjs} +3 -3
- package/dist/{SubscriptionsScreen-7DGtY49t.cjs → SubscriptionsScreen-CNjeVllB.cjs} +152 -57
- package/dist/SubscriptionsScreen-CNjeVllB.cjs.map +1 -0
- package/dist/{SubscriptionsScreen-DpcL08EP.mjs → SubscriptionsScreen-DcmKn9y1.mjs} +152 -57
- package/dist/SubscriptionsScreen-DcmKn9y1.mjs.map +1 -0
- package/dist/{SubscriptionsScreen-CHdYF4Ga.mjs → SubscriptionsScreen-s9CNAkH9.mjs} +3 -3
- package/dist/{de-5dJcGXHd.mjs → de-CZcaM1mg.mjs} +33 -1
- package/dist/de-CZcaM1mg.mjs.map +1 -0
- package/dist/{de-279qQKkW.cjs → de-DOhr1RUy.cjs} +33 -1
- package/dist/de-DOhr1RUy.cjs.map +1 -0
- package/dist/{el-DXt-pZcE.mjs → el-CFfcOTW0.mjs} +33 -1
- package/dist/el-CFfcOTW0.mjs.map +1 -0
- package/dist/{el-CFPYRWKm.cjs → el-De6RiFnZ.cjs} +33 -1
- package/dist/el-De6RiFnZ.cjs.map +1 -0
- package/dist/{es-DLfWfxCc.cjs → es-BxpjC2GW.cjs} +33 -1
- package/dist/es-BxpjC2GW.cjs.map +1 -0
- package/dist/{es-WB2frRI4.mjs → es-jVAovyyN.mjs} +33 -1
- package/dist/es-jVAovyyN.mjs.map +1 -0
- package/dist/{fr-DgmvSclY.mjs → fr-BS-JXutt.mjs} +33 -1
- package/dist/fr-BS-JXutt.mjs.map +1 -0
- package/dist/{fr-C3IQZmS6.cjs → fr-DErR5mVD.cjs} +33 -1
- package/dist/fr-DErR5mVD.cjs.map +1 -0
- package/dist/{he-XJMTsvul.cjs → he-BCoena1G.cjs} +33 -1
- package/dist/he-BCoena1G.cjs.map +1 -0
- package/dist/{he-w6k-YiLm.mjs → he-Dm3gcP5z.mjs} +33 -1
- package/dist/he-Dm3gcP5z.mjs.map +1 -0
- package/dist/{hu-BydB22cZ.cjs → hu-BzV6oL5x.cjs} +33 -1
- package/dist/hu-BzV6oL5x.cjs.map +1 -0
- package/dist/{hu-tDjFfQ9J.mjs → hu-DrbPFf-v.mjs} +33 -1
- package/dist/hu-DrbPFf-v.mjs.map +1 -0
- package/dist/{id-Dp68FLAc.mjs → id-B8lS0RIT.mjs} +33 -1
- package/dist/id-B8lS0RIT.mjs.map +1 -0
- package/dist/{id-0CifOwIm.cjs → id-BJnQbLNZ.cjs} +33 -1
- package/dist/id-BJnQbLNZ.cjs.map +1 -0
- package/dist/index.cjs +20 -20
- package/dist/index.mjs +20 -20
- package/dist/{it-DngfQciz.mjs → it-Cz92WfRO.mjs} +33 -1
- package/dist/it-Cz92WfRO.mjs.map +1 -0
- package/dist/{it-CBdazuIz.cjs → it-Dij-dYqs.cjs} +33 -1
- package/dist/it-Dij-dYqs.cjs.map +1 -0
- package/dist/{ja-CVtC1kDv.cjs → ja-CrT0URkz.cjs} +33 -1
- package/dist/ja-CrT0URkz.cjs.map +1 -0
- package/dist/{ja-CkMDVPtH.mjs → ja-DI_TV2Zj.mjs} +33 -1
- package/dist/ja-DI_TV2Zj.mjs.map +1 -0
- package/dist/{ko-R-Le9JU8.cjs → ko-Dv4sXcM3.cjs} +33 -1
- package/dist/ko-Dv4sXcM3.cjs.map +1 -0
- package/dist/{ko-B72HbkvY.mjs → ko-E9TdOA9L.mjs} +33 -1
- package/dist/ko-E9TdOA9L.mjs.map +1 -0
- package/dist/{nl-CuaJpFBW.mjs → nl-B_w0JfzN.mjs} +33 -1
- package/dist/nl-B_w0JfzN.mjs.map +1 -0
- package/dist/{nl-dE66DT9d.cjs → nl-CPxJexkh.cjs} +33 -1
- package/dist/nl-CPxJexkh.cjs.map +1 -0
- package/dist/{pl-CNTDY6Ov.mjs → pl-BTmWl6HG.mjs} +33 -1
- package/dist/pl-BTmWl6HG.mjs.map +1 -0
- package/dist/{pl-d7LeUSmm.cjs → pl-ifHwr3rd.cjs} +33 -1
- package/dist/pl-ifHwr3rd.cjs.map +1 -0
- package/dist/{pt-Cu2TCvrS.mjs → pt-C1UtoI8g.mjs} +33 -1
- package/dist/pt-C1UtoI8g.mjs.map +1 -0
- package/dist/{pt-DlWYOQB7.cjs → pt-lMkT_wS4.cjs} +33 -1
- package/dist/pt-lMkT_wS4.cjs.map +1 -0
- package/dist/{ro-IGnNpnPk.mjs → ro-CQ1vwLZl.mjs} +33 -1
- package/dist/ro-CQ1vwLZl.mjs.map +1 -0
- package/dist/{ro-CxRERiJd.cjs → ro-DDUpw1f5.cjs} +33 -1
- package/dist/ro-DDUpw1f5.cjs.map +1 -0
- package/dist/{ru-BaL7GN_2.cjs → ru-BQOLcWNV.cjs} +33 -1
- package/dist/ru-BQOLcWNV.cjs.map +1 -0
- package/dist/{ru-CDda1N4V.mjs → ru-V4rwK1qm.mjs} +33 -1
- package/dist/ru-V4rwK1qm.mjs.map +1 -0
- package/dist/{th-Bmg6T2oO.mjs → th-BBDWFncd.mjs} +33 -1
- package/dist/th-BBDWFncd.mjs.map +1 -0
- package/dist/{th-eBfuOCvu.cjs → th-BCAGq41B.cjs} +33 -1
- package/dist/th-BCAGq41B.cjs.map +1 -0
- package/dist/{tl-yM51nib5.mjs → tl-CKtTJyIH.mjs} +33 -1
- package/dist/tl-CKtTJyIH.mjs.map +1 -0
- package/dist/{tl-DorumJMB.cjs → tl-D-jPdAL3.cjs} +33 -1
- package/dist/tl-D-jPdAL3.cjs.map +1 -0
- package/dist/{tr-q4NrT_MG.mjs → tr-C1fcNn_N.mjs} +33 -1
- package/dist/tr-C1fcNn_N.mjs.map +1 -0
- package/dist/{tr-CPLe40Ae.cjs → tr-DylwTPzx.cjs} +33 -1
- package/dist/tr-DylwTPzx.cjs.map +1 -0
- package/dist/{zh_CN-DELFfbhB.mjs → zh_CN-Ctx0sPwT.mjs} +33 -1
- package/dist/zh_CN-Ctx0sPwT.mjs.map +1 -0
- package/dist/{zh_CN-Bvmrqi_G.cjs → zh_CN-DhRV2h7N.cjs} +33 -1
- package/dist/zh_CN-DhRV2h7N.cjs.map +1 -0
- package/dist/{zh_TW-CryKLufw.mjs → zh_TW-Buj0u5-2.mjs} +33 -1
- package/dist/zh_TW-Buj0u5-2.mjs.map +1 -0
- package/dist/{zh_TW-DVfX_7Is.cjs → zh_TW-N9P2PjhJ.cjs} +33 -1
- package/dist/zh_TW-N9P2PjhJ.cjs.map +1 -0
- package/package.json +14 -14
- package/dist/AddressAutocompleteInput-CmbuVfD5.cjs.map +0 -1
- package/dist/AddressAutocompleteInput-RLaGWKfq.mjs.map +0 -1
- package/dist/ProfileScreen-BBjsjvuj.cjs.map +0 -1
- package/dist/ProfileScreen-DeTQ4Xoo.mjs.map +0 -1
- package/dist/SubscriptionsScreen-7DGtY49t.cjs.map +0 -1
- package/dist/SubscriptionsScreen-DpcL08EP.mjs.map +0 -1
- package/dist/de-279qQKkW.cjs.map +0 -1
- package/dist/de-5dJcGXHd.mjs.map +0 -1
- package/dist/el-CFPYRWKm.cjs.map +0 -1
- package/dist/el-DXt-pZcE.mjs.map +0 -1
- package/dist/es-DLfWfxCc.cjs.map +0 -1
- package/dist/es-WB2frRI4.mjs.map +0 -1
- package/dist/fr-C3IQZmS6.cjs.map +0 -1
- package/dist/fr-DgmvSclY.mjs.map +0 -1
- package/dist/he-XJMTsvul.cjs.map +0 -1
- package/dist/he-w6k-YiLm.mjs.map +0 -1
- package/dist/hu-BydB22cZ.cjs.map +0 -1
- package/dist/hu-tDjFfQ9J.mjs.map +0 -1
- package/dist/id-0CifOwIm.cjs.map +0 -1
- package/dist/id-Dp68FLAc.mjs.map +0 -1
- package/dist/it-CBdazuIz.cjs.map +0 -1
- package/dist/it-DngfQciz.mjs.map +0 -1
- package/dist/ja-CVtC1kDv.cjs.map +0 -1
- package/dist/ja-CkMDVPtH.mjs.map +0 -1
- package/dist/ko-B72HbkvY.mjs.map +0 -1
- package/dist/ko-R-Le9JU8.cjs.map +0 -1
- package/dist/nl-CuaJpFBW.mjs.map +0 -1
- package/dist/nl-dE66DT9d.cjs.map +0 -1
- package/dist/pl-CNTDY6Ov.mjs.map +0 -1
- package/dist/pl-d7LeUSmm.cjs.map +0 -1
- package/dist/pt-Cu2TCvrS.mjs.map +0 -1
- package/dist/pt-DlWYOQB7.cjs.map +0 -1
- package/dist/ro-CxRERiJd.cjs.map +0 -1
- package/dist/ro-IGnNpnPk.mjs.map +0 -1
- package/dist/ru-BaL7GN_2.cjs.map +0 -1
- package/dist/ru-CDda1N4V.mjs.map +0 -1
- package/dist/th-Bmg6T2oO.mjs.map +0 -1
- package/dist/th-eBfuOCvu.cjs.map +0 -1
- package/dist/tl-DorumJMB.cjs.map +0 -1
- package/dist/tl-yM51nib5.mjs.map +0 -1
- package/dist/tr-CPLe40Ae.cjs.map +0 -1
- package/dist/tr-q4NrT_MG.mjs.map +0 -1
- package/dist/zh_CN-Bvmrqi_G.cjs.map +0 -1
- package/dist/zh_CN-DELFfbhB.mjs.map +0 -1
- package/dist/zh_TW-CryKLufw.mjs.map +0 -1
- package/dist/zh_TW-DVfX_7Is.cjs.map +0 -1
package/dist/{AddressAutocompleteInput-CmbuVfD5.cjs → AddressAutocompleteInput-BqZwiUup.cjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require("./chunk-9hOWP6kD.cjs");
|
|
2
|
-
const require_FluidProvider = require("./FluidProvider-
|
|
2
|
+
const require_FluidProvider = require("./FluidProvider-CiMgrTE0.cjs");
|
|
3
3
|
const require_locale_context = require("./locale-context-8CiNKIho.cjs");
|
|
4
4
|
const require_src = require("./src-BYCIOmsD.cjs");
|
|
5
5
|
const require_translation_api_context_factory = require("./translation-api-context-factory-BSuSh5Zg.cjs");
|
|
@@ -76,6 +76,9 @@ const profileDomain = require_static_dict_adapter.createDomainTranslations({
|
|
|
76
76
|
postal_code: "Postal Code",
|
|
77
77
|
select_state: "Select state",
|
|
78
78
|
set_as_default_payment_method: "Set as default payment method",
|
|
79
|
+
same_as_shipping: "Same as shipping address",
|
|
80
|
+
use_a_different_address: "Use a different address",
|
|
81
|
+
add_billing_address: "Add billing address",
|
|
79
82
|
cancel: "Cancel",
|
|
80
83
|
save: "Save",
|
|
81
84
|
close: "Close",
|
|
@@ -1752,14 +1755,9 @@ function useVgsCollect() {
|
|
|
1752
1755
|
}
|
|
1753
1756
|
//#endregion
|
|
1754
1757
|
//#region ../../fluid-pay/ui/src/components/CreditCardFormDialog.tsx
|
|
1755
|
-
const
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
address2: zod.z.string().optional().nullable(),
|
|
1759
|
-
city: zod.z.string().min(1, "City is required"),
|
|
1760
|
-
state: zod.z.string().min(1, "State is required"),
|
|
1761
|
-
zip: zod.z.string().min(1, "Zip code is required"),
|
|
1762
|
-
country_code: zod.z.string().min(1, "Country is required"),
|
|
1758
|
+
const SENTINEL_CREATE_NEW = "__create_new__";
|
|
1759
|
+
const formSchema = zod.z.object({
|
|
1760
|
+
billing_address_selection: zod.z.string().refine((value) => value !== "" && value !== SENTINEL_CREATE_NEW, { message: "Please select a billing address" }),
|
|
1763
1761
|
set_as_default: zod.z.boolean()
|
|
1764
1762
|
});
|
|
1765
1763
|
function VgsInputWrapper({ id, label, fieldState, className }) {
|
|
@@ -1813,68 +1811,140 @@ function VgsCardForm({ vgsFieldState, networkError }) {
|
|
|
1813
1811
|
]
|
|
1814
1812
|
});
|
|
1815
1813
|
}
|
|
1816
|
-
function
|
|
1814
|
+
function formatAddressOneLine(addr) {
|
|
1815
|
+
const cityStateZip = [
|
|
1816
|
+
addr.city,
|
|
1817
|
+
addr.state,
|
|
1818
|
+
addr.postal_code
|
|
1819
|
+
].filter((p) => Boolean(p && p.trim().length > 0)).join(", ");
|
|
1820
|
+
return [
|
|
1821
|
+
addr.address1,
|
|
1822
|
+
addr.address2,
|
|
1823
|
+
cityStateZip,
|
|
1824
|
+
addr.country_code
|
|
1825
|
+
].filter((p) => Boolean(p && p.trim().length > 0)).join(" • ");
|
|
1826
|
+
}
|
|
1827
|
+
function AddressSummaryCard({ address }) {
|
|
1828
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1829
|
+
className: "border-input bg-muted/30 rounded-md border p-3 text-sm break-words",
|
|
1830
|
+
children: [
|
|
1831
|
+
address.name && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1832
|
+
className: "font-medium",
|
|
1833
|
+
children: address.name
|
|
1834
|
+
}),
|
|
1835
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1836
|
+
className: "text-muted-foreground",
|
|
1837
|
+
children: address.address1
|
|
1838
|
+
}),
|
|
1839
|
+
address.address2 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1840
|
+
className: "text-muted-foreground",
|
|
1841
|
+
children: address.address2
|
|
1842
|
+
}),
|
|
1843
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1844
|
+
className: "text-muted-foreground",
|
|
1845
|
+
children: [[address.city, address.state].filter(Boolean).join(", "), address.postal_code ? ` ${address.postal_code}` : ""]
|
|
1846
|
+
}),
|
|
1847
|
+
address.country_code && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1848
|
+
className: "text-muted-foreground",
|
|
1849
|
+
children: address.country_code
|
|
1850
|
+
})
|
|
1851
|
+
]
|
|
1852
|
+
});
|
|
1853
|
+
}
|
|
1854
|
+
function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, error, jwt, shippingAddress, savedAddresses = [], defaultBillingAddressId, renderAddressFormDialog, t }) {
|
|
1817
1855
|
const api = useFluidPayApi();
|
|
1818
1856
|
const [cardError, setCardError] = (0, react.useState)(void 0);
|
|
1819
1857
|
const [isVgsSubmitting, setIsVgsSubmitting] = (0, react.useState)(false);
|
|
1858
|
+
const [createdAddresses, setCreatedAddresses] = (0, react.useState)([]);
|
|
1859
|
+
const [isAddressDialogOpen, setIsAddressDialogOpen] = (0, react.useState)(false);
|
|
1820
1860
|
const { isFormReady, isLoading: isVgsLoading, isScriptLoaded, scriptLoadError, initializeForm, submitCard, vgsFieldState, resetVgs, onSuccessRef, onErrorRef } = useVgsCollect();
|
|
1821
|
-
const
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1861
|
+
const shippingId = shippingAddress?.id ?? null;
|
|
1862
|
+
const dedupedSavedAddresses = (0, react.useMemo)(() => shippingId === null ? savedAddresses : savedAddresses.filter((a) => a.id !== shippingId), [savedAddresses, shippingId]);
|
|
1863
|
+
const allAddresses = (0, react.useMemo)(() => {
|
|
1864
|
+
const list = [];
|
|
1865
|
+
if (shippingAddress) list.push(shippingAddress);
|
|
1866
|
+
list.push(...dedupedSavedAddresses);
|
|
1867
|
+
list.push(...createdAddresses);
|
|
1868
|
+
return list;
|
|
1869
|
+
}, [
|
|
1870
|
+
shippingAddress,
|
|
1871
|
+
dedupedSavedAddresses,
|
|
1872
|
+
createdAddresses
|
|
1873
|
+
]);
|
|
1874
|
+
const hasRealAddresses = allAddresses.length > 0;
|
|
1875
|
+
const initialSelection = (0, react.useMemo)(() => {
|
|
1876
|
+
if (shippingAddress) return shippingAddress.id.toString();
|
|
1877
|
+
if (defaultBillingAddressId && dedupedSavedAddresses.some((a) => a.id === defaultBillingAddressId)) return defaultBillingAddressId.toString();
|
|
1878
|
+
const first = dedupedSavedAddresses[0];
|
|
1879
|
+
if (first) return first.id.toString();
|
|
1880
|
+
return SENTINEL_CREATE_NEW;
|
|
1881
|
+
}, [
|
|
1882
|
+
shippingAddress,
|
|
1883
|
+
defaultBillingAddressId,
|
|
1884
|
+
dedupedSavedAddresses
|
|
1885
|
+
]);
|
|
1886
|
+
const { control, handleSubmit, reset, setValue, watch } = require_src.useZodForm(formSchema, { defaultValues: {
|
|
1887
|
+
billing_address_selection: initialSelection,
|
|
1829
1888
|
set_as_default: false
|
|
1830
1889
|
} });
|
|
1831
|
-
const billingCountry = (0, react_hook_form.useWatch)({
|
|
1832
|
-
control,
|
|
1833
|
-
name: "country_code"
|
|
1834
|
-
});
|
|
1835
|
-
const setAsDefault = (0, react_hook_form.useWatch)({
|
|
1836
|
-
control,
|
|
1837
|
-
name: "set_as_default"
|
|
1838
|
-
});
|
|
1839
|
-
const { stateOptions, config, handleCountryChange } = useCountryStates();
|
|
1840
|
-
const countrySelectOptions = [...countries].map((country) => ({
|
|
1841
|
-
name: country.name,
|
|
1842
|
-
value: country.iso
|
|
1843
|
-
})).sort((a, b) => {
|
|
1844
|
-
if (a.value === billingCountry) return -1;
|
|
1845
|
-
if (b.value === billingCountry) return 1;
|
|
1846
|
-
return a.name.localeCompare(b.name);
|
|
1847
|
-
});
|
|
1848
|
-
const stateSelectOptions = stateOptions.map((state) => ({
|
|
1849
|
-
name: state.name,
|
|
1850
|
-
value: state.isoCode
|
|
1851
|
-
}));
|
|
1852
|
-
(0, react.useEffect)(() => {
|
|
1853
|
-
handleCountryChange(billingCountry);
|
|
1854
|
-
}, [billingCountry, handleCountryChange]);
|
|
1855
1890
|
(0, react.useEffect)(() => {
|
|
1856
|
-
if (
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
console.error("Failed to fetch vault credentials:", err);
|
|
1864
|
-
if (!cancelled) setCardError("Failed to initialize payment form");
|
|
1865
|
-
}
|
|
1866
|
-
};
|
|
1867
|
-
init();
|
|
1868
|
-
return () => {
|
|
1869
|
-
cancelled = true;
|
|
1870
|
-
};
|
|
1891
|
+
if (isOpen) {
|
|
1892
|
+
reset({
|
|
1893
|
+
billing_address_selection: initialSelection,
|
|
1894
|
+
set_as_default: false
|
|
1895
|
+
});
|
|
1896
|
+
setCreatedAddresses([]);
|
|
1897
|
+
}
|
|
1871
1898
|
}, [
|
|
1872
1899
|
isOpen,
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
api,
|
|
1876
|
-
initializeForm
|
|
1900
|
+
initialSelection,
|
|
1901
|
+
reset
|
|
1877
1902
|
]);
|
|
1903
|
+
const currentSelection = watch("billing_address_selection");
|
|
1904
|
+
const setAsDefault = watch("set_as_default");
|
|
1905
|
+
const selectedAddress = (0, react.useMemo)(() => {
|
|
1906
|
+
if (!currentSelection || currentSelection === SENTINEL_CREATE_NEW) return null;
|
|
1907
|
+
const id = Number(currentSelection);
|
|
1908
|
+
if (!Number.isFinite(id)) return null;
|
|
1909
|
+
return allAddresses.find((a) => a.id === id) ?? null;
|
|
1910
|
+
}, [currentSelection, allAddresses]);
|
|
1911
|
+
const selectOptions = (0, react.useMemo)(() => {
|
|
1912
|
+
const options = [];
|
|
1913
|
+
if (shippingAddress) options.push({
|
|
1914
|
+
name: t("same_as_shipping"),
|
|
1915
|
+
value: shippingAddress.id.toString()
|
|
1916
|
+
});
|
|
1917
|
+
for (const addr of dedupedSavedAddresses) options.push({
|
|
1918
|
+
name: formatAddressOneLine(addr),
|
|
1919
|
+
value: addr.id.toString()
|
|
1920
|
+
});
|
|
1921
|
+
for (const addr of createdAddresses) options.push({
|
|
1922
|
+
name: formatAddressOneLine(addr),
|
|
1923
|
+
value: addr.id.toString()
|
|
1924
|
+
});
|
|
1925
|
+
options.push({
|
|
1926
|
+
name: t("use_a_different_address"),
|
|
1927
|
+
value: SENTINEL_CREATE_NEW
|
|
1928
|
+
});
|
|
1929
|
+
return options;
|
|
1930
|
+
}, [
|
|
1931
|
+
shippingAddress,
|
|
1932
|
+
dedupedSavedAddresses,
|
|
1933
|
+
createdAddresses,
|
|
1934
|
+
t
|
|
1935
|
+
]);
|
|
1936
|
+
const handleSelectionChange = (0, react.useCallback)((value) => {
|
|
1937
|
+
if (value === SENTINEL_CREATE_NEW) {
|
|
1938
|
+
setIsAddressDialogOpen(true);
|
|
1939
|
+
return;
|
|
1940
|
+
}
|
|
1941
|
+
setValue("billing_address_selection", value, { shouldValidate: true });
|
|
1942
|
+
}, [setValue]);
|
|
1943
|
+
const handleAddressCreated = (0, react.useCallback)((address) => {
|
|
1944
|
+
setCreatedAddresses((list) => [...list, address]);
|
|
1945
|
+
setValue("billing_address_selection", address.id.toString(), { shouldValidate: true });
|
|
1946
|
+
setIsAddressDialogOpen(false);
|
|
1947
|
+
}, [setValue]);
|
|
1878
1948
|
const handleVgsSuccess = (0, react.useCallback)((response) => {
|
|
1879
1949
|
const expValue = response?.card_exp;
|
|
1880
1950
|
if (!expValue) {
|
|
@@ -1896,31 +1966,26 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
1896
1966
|
return;
|
|
1897
1967
|
}
|
|
1898
1968
|
handleSubmit((formData) => {
|
|
1969
|
+
const billingAddressId = Number(formData.billing_address_selection);
|
|
1970
|
+
if (!Number.isFinite(billingAddressId)) {
|
|
1971
|
+
setCardError("Please select a billing address.");
|
|
1972
|
+
setIsVgsSubmitting(false);
|
|
1973
|
+
return;
|
|
1974
|
+
}
|
|
1899
1975
|
onSubmit({
|
|
1900
|
-
|
|
1901
|
-
country_code: formData.country_code,
|
|
1902
|
-
default_payment_method: formData.set_as_default,
|
|
1976
|
+
set_as_default: formData.set_as_default,
|
|
1903
1977
|
payment_method: {
|
|
1904
1978
|
token: response.card_number,
|
|
1905
1979
|
cvv_token: response.card_cvc,
|
|
1906
1980
|
exp_month: expMonth,
|
|
1907
1981
|
exp_year: expYear,
|
|
1908
|
-
card_holder: cardholderName
|
|
1909
|
-
billing_zip: formData.zip
|
|
1982
|
+
card_holder: cardholderName
|
|
1910
1983
|
},
|
|
1911
|
-
|
|
1912
|
-
name: formData.name,
|
|
1913
|
-
address1: formData.address1,
|
|
1914
|
-
address2: formData.address2 ?? void 0,
|
|
1915
|
-
city: formData.city,
|
|
1916
|
-
state: formData.state,
|
|
1917
|
-
zip: formData.zip,
|
|
1918
|
-
country_code: formData.country_code
|
|
1919
|
-
}
|
|
1984
|
+
billing_address_id: billingAddressId
|
|
1920
1985
|
});
|
|
1921
1986
|
setIsVgsSubmitting(false);
|
|
1922
1987
|
}, () => {
|
|
1923
|
-
setCardError("Please
|
|
1988
|
+
setCardError("Please select a billing address.");
|
|
1924
1989
|
setIsVgsSubmitting(false);
|
|
1925
1990
|
})();
|
|
1926
1991
|
}, [handleSubmit, onSubmit]);
|
|
@@ -1937,11 +2002,35 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
1937
2002
|
onSuccessRef,
|
|
1938
2003
|
onErrorRef
|
|
1939
2004
|
]);
|
|
2005
|
+
(0, react.useEffect)(() => {
|
|
2006
|
+
if (!isOpen || !isScriptLoaded) return;
|
|
2007
|
+
let cancelled = false;
|
|
2008
|
+
const init = async () => {
|
|
2009
|
+
try {
|
|
2010
|
+
const credentials = await api.vault.fetchCredentials(jwt);
|
|
2011
|
+
if (!cancelled) await initializeForm(credentials);
|
|
2012
|
+
} catch (err) {
|
|
2013
|
+
console.error("Failed to fetch vault credentials:", err);
|
|
2014
|
+
if (!cancelled) setCardError("Failed to initialize payment form");
|
|
2015
|
+
}
|
|
2016
|
+
};
|
|
2017
|
+
init();
|
|
2018
|
+
return () => {
|
|
2019
|
+
cancelled = true;
|
|
2020
|
+
};
|
|
2021
|
+
}, [
|
|
2022
|
+
isOpen,
|
|
2023
|
+
isScriptLoaded,
|
|
2024
|
+
jwt,
|
|
2025
|
+
api,
|
|
2026
|
+
initializeForm
|
|
2027
|
+
]);
|
|
1940
2028
|
const handleClose = () => {
|
|
1941
2029
|
resetVgs();
|
|
1942
2030
|
reset();
|
|
1943
2031
|
setCardError(void 0);
|
|
1944
2032
|
setIsVgsSubmitting(false);
|
|
2033
|
+
setIsAddressDialogOpen(false);
|
|
1945
2034
|
onClose();
|
|
1946
2035
|
};
|
|
1947
2036
|
const handleFormSubmit = handleSubmit(() => {
|
|
@@ -1950,13 +2039,13 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
1950
2039
|
submitCard();
|
|
1951
2040
|
});
|
|
1952
2041
|
const isBusy = isSubmitting || isVgsSubmitting;
|
|
1953
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Dialog, {
|
|
2042
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Dialog, {
|
|
1954
2043
|
open: isOpen,
|
|
1955
2044
|
onOpenChange: (open) => !open && handleClose(),
|
|
1956
2045
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DialogContent, {
|
|
1957
2046
|
className: "max-h-[90vh] max-w-md overflow-y-auto p-0 md:max-w-xl",
|
|
1958
2047
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1959
|
-
className: "relative p-6",
|
|
2048
|
+
className: "relative min-w-0 p-6",
|
|
1960
2049
|
children: [
|
|
1961
2050
|
(isVgsLoading || !isFormReady) && !scriptLoadError && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1962
2051
|
className: "bg-background/80 absolute inset-0 z-10 flex items-center justify-center rounded backdrop-blur-[1px]",
|
|
@@ -1981,64 +2070,47 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
1981
2070
|
className: "text-muted-foreground text-sm font-medium",
|
|
1982
2071
|
children: t("billing_address")
|
|
1983
2072
|
}),
|
|
1984
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
1985
|
-
control,
|
|
1986
|
-
name: "country_code",
|
|
1987
|
-
label: t("country"),
|
|
1988
|
-
placeholder: t("select_an_option"),
|
|
1989
|
-
options: countrySelectOptions,
|
|
1990
|
-
disabled: isBusy
|
|
1991
|
-
}),
|
|
1992
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
|
|
1993
|
-
control,
|
|
1994
|
-
name: "name",
|
|
1995
|
-
label: t("name"),
|
|
1996
|
-
disabled: isBusy
|
|
1997
|
-
}),
|
|
1998
|
-
renderAddressAutocomplete ? renderAddressAutocomplete({
|
|
1999
|
-
control,
|
|
2000
|
-
setValue,
|
|
2001
|
-
countryCode: billingCountry
|
|
2002
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
|
|
2073
|
+
hasRealAddresses ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_hook_form.Controller, {
|
|
2003
2074
|
control,
|
|
2004
|
-
name: "
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2075
|
+
name: "billing_address_selection",
|
|
2076
|
+
render: ({ field: { value }, fieldState: { error: fieldError } }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2077
|
+
className: "space-y-1",
|
|
2078
|
+
children: [
|
|
2079
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Label, {
|
|
2080
|
+
htmlFor: "billing-address-selection",
|
|
2081
|
+
className: "mb-1.5 block text-sm font-medium",
|
|
2082
|
+
children: t("billing_address")
|
|
2083
|
+
}),
|
|
2084
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Select, {
|
|
2085
|
+
value,
|
|
2086
|
+
onValueChange: handleSelectionChange,
|
|
2087
|
+
disabled: isBusy,
|
|
2088
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectTrigger, {
|
|
2089
|
+
id: "billing-address-selection",
|
|
2090
|
+
"aria-invalid": !!fieldError,
|
|
2091
|
+
className: "w-full min-w-0 [&>span]:block! [&>span]:min-w-0 [&>span]:truncate",
|
|
2092
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectValue, { placeholder: t("select_an_option") })
|
|
2093
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectContent, { children: selectOptions.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectItem, {
|
|
2094
|
+
value: opt.value,
|
|
2095
|
+
onClick: opt.value === SENTINEL_CREATE_NEW ? () => setIsAddressDialogOpen(true) : void 0,
|
|
2096
|
+
children: opt.name
|
|
2097
|
+
}, opt.value)) })]
|
|
2098
|
+
}),
|
|
2099
|
+
fieldError?.message && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
2100
|
+
className: "text-destructive text-sm",
|
|
2101
|
+
children: fieldError.message
|
|
2102
|
+
})
|
|
2103
|
+
]
|
|
2104
|
+
})
|
|
2105
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
2106
|
+
type: "button",
|
|
2107
|
+
variant: "outline",
|
|
2108
|
+
onClick: () => setIsAddressDialogOpen(true),
|
|
2109
|
+
disabled: isBusy,
|
|
2110
|
+
className: "w-full",
|
|
2111
|
+
children: t("add_billing_address")
|
|
2013
2112
|
}),
|
|
2014
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
2015
|
-
className: "flex gap-3",
|
|
2016
|
-
children: [
|
|
2017
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
|
|
2018
|
-
control,
|
|
2019
|
-
name: "city",
|
|
2020
|
-
label: t("city"),
|
|
2021
|
-
containerClassName: "flex-1",
|
|
2022
|
-
disabled: isBusy
|
|
2023
|
-
}),
|
|
2024
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormSelectField, {
|
|
2025
|
-
control,
|
|
2026
|
-
name: "state",
|
|
2027
|
-
label: config?.regionLabel ? t(config.regionLabel) : t("state"),
|
|
2028
|
-
placeholder: t("select_state"),
|
|
2029
|
-
options: stateSelectOptions,
|
|
2030
|
-
containerClassName: "flex-1",
|
|
2031
|
-
disabled: isBusy
|
|
2032
|
-
}),
|
|
2033
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormTextField, {
|
|
2034
|
-
control,
|
|
2035
|
-
name: "zip",
|
|
2036
|
-
label: config?.postalLabel ? t(config.postalLabel) : t("zip_code"),
|
|
2037
|
-
containerClassName: "flex-1",
|
|
2038
|
-
disabled: isBusy
|
|
2039
|
-
})
|
|
2040
|
-
]
|
|
2041
|
-
})
|
|
2113
|
+
selectedAddress && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AddressSummaryCard, { address: selectedAddress })
|
|
2042
2114
|
]
|
|
2043
2115
|
})]
|
|
2044
2116
|
}),
|
|
@@ -2068,7 +2140,11 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
2068
2140
|
]
|
|
2069
2141
|
})
|
|
2070
2142
|
})
|
|
2071
|
-
})
|
|
2143
|
+
}), renderAddressFormDialog?.({
|
|
2144
|
+
isOpen: isAddressDialogOpen,
|
|
2145
|
+
onClose: () => setIsAddressDialogOpen(false),
|
|
2146
|
+
onAddressCreated: handleAddressCreated
|
|
2147
|
+
})] });
|
|
2072
2148
|
}
|
|
2073
2149
|
//#endregion
|
|
2074
2150
|
//#region src/adapters/fluid-pay-api-adapter.ts
|
|
@@ -2390,4 +2466,4 @@ Object.defineProperty(exports, "useProfileTranslation", {
|
|
|
2390
2466
|
}
|
|
2391
2467
|
});
|
|
2392
2468
|
|
|
2393
|
-
//# sourceMappingURL=AddressAutocompleteInput-
|
|
2469
|
+
//# sourceMappingURL=AddressAutocompleteInput-BqZwiUup.cjs.map
|