@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-RLaGWKfq.mjs → AddressAutocompleteInput-DY0ZFQOs.mjs}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as useAddressAutocompleteApi } from "./FluidProvider-
|
|
1
|
+
import { R as useAddressAutocompleteApi } from "./FluidProvider-BdjVFM6g.mjs";
|
|
2
2
|
import { n as useActiveLocale } from "./locale-context-DGCebJhw.mjs";
|
|
3
3
|
import { B as DropdownMenuContent, C as SelectContent, Cn as cn, E as SelectValue, G as DropdownMenuSeparator, Q as DialogContent, R as Label, S as Select, Sn as useZodForm, T as SelectTrigger, V as DropdownMenuItem, X as Dialog, Y as DropdownMenuTrigger, Z as DialogClose, a as Textarea, et as DialogFooter, it as DialogTitle, k as Input, tt as DialogHeader, vn as Button, w as SelectItem, z as DropdownMenu } from "./src-CKQLslxB.mjs";
|
|
4
4
|
import { t as createTranslationContext } from "./translation-api-context-factory-BYNOdpnp.mjs";
|
|
@@ -75,6 +75,9 @@ const profileDomain = createDomainTranslations({
|
|
|
75
75
|
postal_code: "Postal Code",
|
|
76
76
|
select_state: "Select state",
|
|
77
77
|
set_as_default_payment_method: "Set as default payment method",
|
|
78
|
+
same_as_shipping: "Same as shipping address",
|
|
79
|
+
use_a_different_address: "Use a different address",
|
|
80
|
+
add_billing_address: "Add billing address",
|
|
78
81
|
cancel: "Cancel",
|
|
79
82
|
save: "Save",
|
|
80
83
|
close: "Close",
|
|
@@ -1751,14 +1754,9 @@ function useVgsCollect() {
|
|
|
1751
1754
|
}
|
|
1752
1755
|
//#endregion
|
|
1753
1756
|
//#region ../../fluid-pay/ui/src/components/CreditCardFormDialog.tsx
|
|
1754
|
-
const
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
address2: z.string().optional().nullable(),
|
|
1758
|
-
city: z.string().min(1, "City is required"),
|
|
1759
|
-
state: z.string().min(1, "State is required"),
|
|
1760
|
-
zip: z.string().min(1, "Zip code is required"),
|
|
1761
|
-
country_code: z.string().min(1, "Country is required"),
|
|
1757
|
+
const SENTINEL_CREATE_NEW = "__create_new__";
|
|
1758
|
+
const formSchema = z.object({
|
|
1759
|
+
billing_address_selection: z.string().refine((value) => value !== "" && value !== SENTINEL_CREATE_NEW, { message: "Please select a billing address" }),
|
|
1762
1760
|
set_as_default: z.boolean()
|
|
1763
1761
|
});
|
|
1764
1762
|
function VgsInputWrapper({ id, label, fieldState, className }) {
|
|
@@ -1812,68 +1810,140 @@ function VgsCardForm({ vgsFieldState, networkError }) {
|
|
|
1812
1810
|
]
|
|
1813
1811
|
});
|
|
1814
1812
|
}
|
|
1815
|
-
function
|
|
1813
|
+
function formatAddressOneLine(addr) {
|
|
1814
|
+
const cityStateZip = [
|
|
1815
|
+
addr.city,
|
|
1816
|
+
addr.state,
|
|
1817
|
+
addr.postal_code
|
|
1818
|
+
].filter((p) => Boolean(p && p.trim().length > 0)).join(", ");
|
|
1819
|
+
return [
|
|
1820
|
+
addr.address1,
|
|
1821
|
+
addr.address2,
|
|
1822
|
+
cityStateZip,
|
|
1823
|
+
addr.country_code
|
|
1824
|
+
].filter((p) => Boolean(p && p.trim().length > 0)).join(" • ");
|
|
1825
|
+
}
|
|
1826
|
+
function AddressSummaryCard({ address }) {
|
|
1827
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1828
|
+
className: "border-input bg-muted/30 rounded-md border p-3 text-sm break-words",
|
|
1829
|
+
children: [
|
|
1830
|
+
address.name && /* @__PURE__ */ jsx("div", {
|
|
1831
|
+
className: "font-medium",
|
|
1832
|
+
children: address.name
|
|
1833
|
+
}),
|
|
1834
|
+
/* @__PURE__ */ jsx("div", {
|
|
1835
|
+
className: "text-muted-foreground",
|
|
1836
|
+
children: address.address1
|
|
1837
|
+
}),
|
|
1838
|
+
address.address2 && /* @__PURE__ */ jsx("div", {
|
|
1839
|
+
className: "text-muted-foreground",
|
|
1840
|
+
children: address.address2
|
|
1841
|
+
}),
|
|
1842
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1843
|
+
className: "text-muted-foreground",
|
|
1844
|
+
children: [[address.city, address.state].filter(Boolean).join(", "), address.postal_code ? ` ${address.postal_code}` : ""]
|
|
1845
|
+
}),
|
|
1846
|
+
address.country_code && /* @__PURE__ */ jsx("div", {
|
|
1847
|
+
className: "text-muted-foreground",
|
|
1848
|
+
children: address.country_code
|
|
1849
|
+
})
|
|
1850
|
+
]
|
|
1851
|
+
});
|
|
1852
|
+
}
|
|
1853
|
+
function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, error, jwt, shippingAddress, savedAddresses = [], defaultBillingAddressId, renderAddressFormDialog, t }) {
|
|
1816
1854
|
const api = useFluidPayApi();
|
|
1817
1855
|
const [cardError, setCardError] = useState(void 0);
|
|
1818
1856
|
const [isVgsSubmitting, setIsVgsSubmitting] = useState(false);
|
|
1857
|
+
const [createdAddresses, setCreatedAddresses] = useState([]);
|
|
1858
|
+
const [isAddressDialogOpen, setIsAddressDialogOpen] = useState(false);
|
|
1819
1859
|
const { isFormReady, isLoading: isVgsLoading, isScriptLoaded, scriptLoadError, initializeForm, submitCard, vgsFieldState, resetVgs, onSuccessRef, onErrorRef } = useVgsCollect();
|
|
1820
|
-
const
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1860
|
+
const shippingId = shippingAddress?.id ?? null;
|
|
1861
|
+
const dedupedSavedAddresses = useMemo(() => shippingId === null ? savedAddresses : savedAddresses.filter((a) => a.id !== shippingId), [savedAddresses, shippingId]);
|
|
1862
|
+
const allAddresses = useMemo(() => {
|
|
1863
|
+
const list = [];
|
|
1864
|
+
if (shippingAddress) list.push(shippingAddress);
|
|
1865
|
+
list.push(...dedupedSavedAddresses);
|
|
1866
|
+
list.push(...createdAddresses);
|
|
1867
|
+
return list;
|
|
1868
|
+
}, [
|
|
1869
|
+
shippingAddress,
|
|
1870
|
+
dedupedSavedAddresses,
|
|
1871
|
+
createdAddresses
|
|
1872
|
+
]);
|
|
1873
|
+
const hasRealAddresses = allAddresses.length > 0;
|
|
1874
|
+
const initialSelection = useMemo(() => {
|
|
1875
|
+
if (shippingAddress) return shippingAddress.id.toString();
|
|
1876
|
+
if (defaultBillingAddressId && dedupedSavedAddresses.some((a) => a.id === defaultBillingAddressId)) return defaultBillingAddressId.toString();
|
|
1877
|
+
const first = dedupedSavedAddresses[0];
|
|
1878
|
+
if (first) return first.id.toString();
|
|
1879
|
+
return SENTINEL_CREATE_NEW;
|
|
1880
|
+
}, [
|
|
1881
|
+
shippingAddress,
|
|
1882
|
+
defaultBillingAddressId,
|
|
1883
|
+
dedupedSavedAddresses
|
|
1884
|
+
]);
|
|
1885
|
+
const { control, handleSubmit, reset, setValue, watch } = useZodForm(formSchema, { defaultValues: {
|
|
1886
|
+
billing_address_selection: initialSelection,
|
|
1828
1887
|
set_as_default: false
|
|
1829
1888
|
} });
|
|
1830
|
-
const billingCountry = useWatch({
|
|
1831
|
-
control,
|
|
1832
|
-
name: "country_code"
|
|
1833
|
-
});
|
|
1834
|
-
const setAsDefault = useWatch({
|
|
1835
|
-
control,
|
|
1836
|
-
name: "set_as_default"
|
|
1837
|
-
});
|
|
1838
|
-
const { stateOptions, config, handleCountryChange } = useCountryStates();
|
|
1839
|
-
const countrySelectOptions = [...countries].map((country) => ({
|
|
1840
|
-
name: country.name,
|
|
1841
|
-
value: country.iso
|
|
1842
|
-
})).sort((a, b) => {
|
|
1843
|
-
if (a.value === billingCountry) return -1;
|
|
1844
|
-
if (b.value === billingCountry) return 1;
|
|
1845
|
-
return a.name.localeCompare(b.name);
|
|
1846
|
-
});
|
|
1847
|
-
const stateSelectOptions = stateOptions.map((state) => ({
|
|
1848
|
-
name: state.name,
|
|
1849
|
-
value: state.isoCode
|
|
1850
|
-
}));
|
|
1851
|
-
useEffect(() => {
|
|
1852
|
-
handleCountryChange(billingCountry);
|
|
1853
|
-
}, [billingCountry, handleCountryChange]);
|
|
1854
1889
|
useEffect(() => {
|
|
1855
|
-
if (
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
console.error("Failed to fetch vault credentials:", err);
|
|
1863
|
-
if (!cancelled) setCardError("Failed to initialize payment form");
|
|
1864
|
-
}
|
|
1865
|
-
};
|
|
1866
|
-
init();
|
|
1867
|
-
return () => {
|
|
1868
|
-
cancelled = true;
|
|
1869
|
-
};
|
|
1890
|
+
if (isOpen) {
|
|
1891
|
+
reset({
|
|
1892
|
+
billing_address_selection: initialSelection,
|
|
1893
|
+
set_as_default: false
|
|
1894
|
+
});
|
|
1895
|
+
setCreatedAddresses([]);
|
|
1896
|
+
}
|
|
1870
1897
|
}, [
|
|
1871
1898
|
isOpen,
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
api,
|
|
1875
|
-
initializeForm
|
|
1899
|
+
initialSelection,
|
|
1900
|
+
reset
|
|
1876
1901
|
]);
|
|
1902
|
+
const currentSelection = watch("billing_address_selection");
|
|
1903
|
+
const setAsDefault = watch("set_as_default");
|
|
1904
|
+
const selectedAddress = useMemo(() => {
|
|
1905
|
+
if (!currentSelection || currentSelection === SENTINEL_CREATE_NEW) return null;
|
|
1906
|
+
const id = Number(currentSelection);
|
|
1907
|
+
if (!Number.isFinite(id)) return null;
|
|
1908
|
+
return allAddresses.find((a) => a.id === id) ?? null;
|
|
1909
|
+
}, [currentSelection, allAddresses]);
|
|
1910
|
+
const selectOptions = useMemo(() => {
|
|
1911
|
+
const options = [];
|
|
1912
|
+
if (shippingAddress) options.push({
|
|
1913
|
+
name: t("same_as_shipping"),
|
|
1914
|
+
value: shippingAddress.id.toString()
|
|
1915
|
+
});
|
|
1916
|
+
for (const addr of dedupedSavedAddresses) options.push({
|
|
1917
|
+
name: formatAddressOneLine(addr),
|
|
1918
|
+
value: addr.id.toString()
|
|
1919
|
+
});
|
|
1920
|
+
for (const addr of createdAddresses) options.push({
|
|
1921
|
+
name: formatAddressOneLine(addr),
|
|
1922
|
+
value: addr.id.toString()
|
|
1923
|
+
});
|
|
1924
|
+
options.push({
|
|
1925
|
+
name: t("use_a_different_address"),
|
|
1926
|
+
value: SENTINEL_CREATE_NEW
|
|
1927
|
+
});
|
|
1928
|
+
return options;
|
|
1929
|
+
}, [
|
|
1930
|
+
shippingAddress,
|
|
1931
|
+
dedupedSavedAddresses,
|
|
1932
|
+
createdAddresses,
|
|
1933
|
+
t
|
|
1934
|
+
]);
|
|
1935
|
+
const handleSelectionChange = useCallback((value) => {
|
|
1936
|
+
if (value === SENTINEL_CREATE_NEW) {
|
|
1937
|
+
setIsAddressDialogOpen(true);
|
|
1938
|
+
return;
|
|
1939
|
+
}
|
|
1940
|
+
setValue("billing_address_selection", value, { shouldValidate: true });
|
|
1941
|
+
}, [setValue]);
|
|
1942
|
+
const handleAddressCreated = useCallback((address) => {
|
|
1943
|
+
setCreatedAddresses((list) => [...list, address]);
|
|
1944
|
+
setValue("billing_address_selection", address.id.toString(), { shouldValidate: true });
|
|
1945
|
+
setIsAddressDialogOpen(false);
|
|
1946
|
+
}, [setValue]);
|
|
1877
1947
|
const handleVgsSuccess = useCallback((response) => {
|
|
1878
1948
|
const expValue = response?.card_exp;
|
|
1879
1949
|
if (!expValue) {
|
|
@@ -1895,31 +1965,26 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
1895
1965
|
return;
|
|
1896
1966
|
}
|
|
1897
1967
|
handleSubmit((formData) => {
|
|
1968
|
+
const billingAddressId = Number(formData.billing_address_selection);
|
|
1969
|
+
if (!Number.isFinite(billingAddressId)) {
|
|
1970
|
+
setCardError("Please select a billing address.");
|
|
1971
|
+
setIsVgsSubmitting(false);
|
|
1972
|
+
return;
|
|
1973
|
+
}
|
|
1898
1974
|
onSubmit({
|
|
1899
|
-
|
|
1900
|
-
country_code: formData.country_code,
|
|
1901
|
-
default_payment_method: formData.set_as_default,
|
|
1975
|
+
set_as_default: formData.set_as_default,
|
|
1902
1976
|
payment_method: {
|
|
1903
1977
|
token: response.card_number,
|
|
1904
1978
|
cvv_token: response.card_cvc,
|
|
1905
1979
|
exp_month: expMonth,
|
|
1906
1980
|
exp_year: expYear,
|
|
1907
|
-
card_holder: cardholderName
|
|
1908
|
-
billing_zip: formData.zip
|
|
1981
|
+
card_holder: cardholderName
|
|
1909
1982
|
},
|
|
1910
|
-
|
|
1911
|
-
name: formData.name,
|
|
1912
|
-
address1: formData.address1,
|
|
1913
|
-
address2: formData.address2 ?? void 0,
|
|
1914
|
-
city: formData.city,
|
|
1915
|
-
state: formData.state,
|
|
1916
|
-
zip: formData.zip,
|
|
1917
|
-
country_code: formData.country_code
|
|
1918
|
-
}
|
|
1983
|
+
billing_address_id: billingAddressId
|
|
1919
1984
|
});
|
|
1920
1985
|
setIsVgsSubmitting(false);
|
|
1921
1986
|
}, () => {
|
|
1922
|
-
setCardError("Please
|
|
1987
|
+
setCardError("Please select a billing address.");
|
|
1923
1988
|
setIsVgsSubmitting(false);
|
|
1924
1989
|
})();
|
|
1925
1990
|
}, [handleSubmit, onSubmit]);
|
|
@@ -1936,11 +2001,35 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
1936
2001
|
onSuccessRef,
|
|
1937
2002
|
onErrorRef
|
|
1938
2003
|
]);
|
|
2004
|
+
useEffect(() => {
|
|
2005
|
+
if (!isOpen || !isScriptLoaded) return;
|
|
2006
|
+
let cancelled = false;
|
|
2007
|
+
const init = async () => {
|
|
2008
|
+
try {
|
|
2009
|
+
const credentials = await api.vault.fetchCredentials(jwt);
|
|
2010
|
+
if (!cancelled) await initializeForm(credentials);
|
|
2011
|
+
} catch (err) {
|
|
2012
|
+
console.error("Failed to fetch vault credentials:", err);
|
|
2013
|
+
if (!cancelled) setCardError("Failed to initialize payment form");
|
|
2014
|
+
}
|
|
2015
|
+
};
|
|
2016
|
+
init();
|
|
2017
|
+
return () => {
|
|
2018
|
+
cancelled = true;
|
|
2019
|
+
};
|
|
2020
|
+
}, [
|
|
2021
|
+
isOpen,
|
|
2022
|
+
isScriptLoaded,
|
|
2023
|
+
jwt,
|
|
2024
|
+
api,
|
|
2025
|
+
initializeForm
|
|
2026
|
+
]);
|
|
1939
2027
|
const handleClose = () => {
|
|
1940
2028
|
resetVgs();
|
|
1941
2029
|
reset();
|
|
1942
2030
|
setCardError(void 0);
|
|
1943
2031
|
setIsVgsSubmitting(false);
|
|
2032
|
+
setIsAddressDialogOpen(false);
|
|
1944
2033
|
onClose();
|
|
1945
2034
|
};
|
|
1946
2035
|
const handleFormSubmit = handleSubmit(() => {
|
|
@@ -1949,13 +2038,13 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
1949
2038
|
submitCard();
|
|
1950
2039
|
});
|
|
1951
2040
|
const isBusy = isSubmitting || isVgsSubmitting;
|
|
1952
|
-
return /* @__PURE__ */ jsx(Dialog, {
|
|
2041
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Dialog, {
|
|
1953
2042
|
open: isOpen,
|
|
1954
2043
|
onOpenChange: (open) => !open && handleClose(),
|
|
1955
2044
|
children: /* @__PURE__ */ jsx(DialogContent, {
|
|
1956
2045
|
className: "max-h-[90vh] max-w-md overflow-y-auto p-0 md:max-w-xl",
|
|
1957
2046
|
children: /* @__PURE__ */ jsxs("div", {
|
|
1958
|
-
className: "relative p-6",
|
|
2047
|
+
className: "relative min-w-0 p-6",
|
|
1959
2048
|
children: [
|
|
1960
2049
|
(isVgsLoading || !isFormReady) && !scriptLoadError && /* @__PURE__ */ jsx("div", {
|
|
1961
2050
|
className: "bg-background/80 absolute inset-0 z-10 flex items-center justify-center rounded backdrop-blur-[1px]",
|
|
@@ -1980,64 +2069,47 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
1980
2069
|
className: "text-muted-foreground text-sm font-medium",
|
|
1981
2070
|
children: t("billing_address")
|
|
1982
2071
|
}),
|
|
1983
|
-
/* @__PURE__ */ jsx(
|
|
1984
|
-
control,
|
|
1985
|
-
name: "country_code",
|
|
1986
|
-
label: t("country"),
|
|
1987
|
-
placeholder: t("select_an_option"),
|
|
1988
|
-
options: countrySelectOptions,
|
|
1989
|
-
disabled: isBusy
|
|
1990
|
-
}),
|
|
1991
|
-
/* @__PURE__ */ jsx(FormTextField, {
|
|
1992
|
-
control,
|
|
1993
|
-
name: "name",
|
|
1994
|
-
label: t("name"),
|
|
1995
|
-
disabled: isBusy
|
|
1996
|
-
}),
|
|
1997
|
-
renderAddressAutocomplete ? renderAddressAutocomplete({
|
|
1998
|
-
control,
|
|
1999
|
-
setValue,
|
|
2000
|
-
countryCode: billingCountry
|
|
2001
|
-
}) : /* @__PURE__ */ jsx(FormTextField, {
|
|
2072
|
+
hasRealAddresses ? /* @__PURE__ */ jsx(Controller, {
|
|
2002
2073
|
control,
|
|
2003
|
-
name: "
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2074
|
+
name: "billing_address_selection",
|
|
2075
|
+
render: ({ field: { value }, fieldState: { error: fieldError } }) => /* @__PURE__ */ jsxs("div", {
|
|
2076
|
+
className: "space-y-1",
|
|
2077
|
+
children: [
|
|
2078
|
+
/* @__PURE__ */ jsx(Label, {
|
|
2079
|
+
htmlFor: "billing-address-selection",
|
|
2080
|
+
className: "mb-1.5 block text-sm font-medium",
|
|
2081
|
+
children: t("billing_address")
|
|
2082
|
+
}),
|
|
2083
|
+
/* @__PURE__ */ jsxs(Select, {
|
|
2084
|
+
value,
|
|
2085
|
+
onValueChange: handleSelectionChange,
|
|
2086
|
+
disabled: isBusy,
|
|
2087
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
2088
|
+
id: "billing-address-selection",
|
|
2089
|
+
"aria-invalid": !!fieldError,
|
|
2090
|
+
className: "w-full min-w-0 [&>span]:block! [&>span]:min-w-0 [&>span]:truncate",
|
|
2091
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: t("select_an_option") })
|
|
2092
|
+
}), /* @__PURE__ */ jsx(SelectContent, { children: selectOptions.map((opt) => /* @__PURE__ */ jsx(SelectItem, {
|
|
2093
|
+
value: opt.value,
|
|
2094
|
+
onClick: opt.value === SENTINEL_CREATE_NEW ? () => setIsAddressDialogOpen(true) : void 0,
|
|
2095
|
+
children: opt.name
|
|
2096
|
+
}, opt.value)) })]
|
|
2097
|
+
}),
|
|
2098
|
+
fieldError?.message && /* @__PURE__ */ jsx("p", {
|
|
2099
|
+
className: "text-destructive text-sm",
|
|
2100
|
+
children: fieldError.message
|
|
2101
|
+
})
|
|
2102
|
+
]
|
|
2103
|
+
})
|
|
2104
|
+
}) : /* @__PURE__ */ jsx(Button, {
|
|
2105
|
+
type: "button",
|
|
2106
|
+
variant: "outline",
|
|
2107
|
+
onClick: () => setIsAddressDialogOpen(true),
|
|
2108
|
+
disabled: isBusy,
|
|
2109
|
+
className: "w-full",
|
|
2110
|
+
children: t("add_billing_address")
|
|
2012
2111
|
}),
|
|
2013
|
-
/* @__PURE__ */
|
|
2014
|
-
className: "flex gap-3",
|
|
2015
|
-
children: [
|
|
2016
|
-
/* @__PURE__ */ jsx(FormTextField, {
|
|
2017
|
-
control,
|
|
2018
|
-
name: "city",
|
|
2019
|
-
label: t("city"),
|
|
2020
|
-
containerClassName: "flex-1",
|
|
2021
|
-
disabled: isBusy
|
|
2022
|
-
}),
|
|
2023
|
-
/* @__PURE__ */ jsx(FormSelectField, {
|
|
2024
|
-
control,
|
|
2025
|
-
name: "state",
|
|
2026
|
-
label: config?.regionLabel ? t(config.regionLabel) : t("state"),
|
|
2027
|
-
placeholder: t("select_state"),
|
|
2028
|
-
options: stateSelectOptions,
|
|
2029
|
-
containerClassName: "flex-1",
|
|
2030
|
-
disabled: isBusy
|
|
2031
|
-
}),
|
|
2032
|
-
/* @__PURE__ */ jsx(FormTextField, {
|
|
2033
|
-
control,
|
|
2034
|
-
name: "zip",
|
|
2035
|
-
label: config?.postalLabel ? t(config.postalLabel) : t("zip_code"),
|
|
2036
|
-
containerClassName: "flex-1",
|
|
2037
|
-
disabled: isBusy
|
|
2038
|
-
})
|
|
2039
|
-
]
|
|
2040
|
-
})
|
|
2112
|
+
selectedAddress && /* @__PURE__ */ jsx(AddressSummaryCard, { address: selectedAddress })
|
|
2041
2113
|
]
|
|
2042
2114
|
})]
|
|
2043
2115
|
}),
|
|
@@ -2067,7 +2139,11 @@ function CreditCardFormDialog({ isOpen, onClose, onSubmit, isSubmitting, countri
|
|
|
2067
2139
|
]
|
|
2068
2140
|
})
|
|
2069
2141
|
})
|
|
2070
|
-
})
|
|
2142
|
+
}), renderAddressFormDialog?.({
|
|
2143
|
+
isOpen: isAddressDialogOpen,
|
|
2144
|
+
onClose: () => setIsAddressDialogOpen(false),
|
|
2145
|
+
onAddressCreated: handleAddressCreated
|
|
2146
|
+
})] });
|
|
2071
2147
|
}
|
|
2072
2148
|
//#endregion
|
|
2073
2149
|
//#region src/adapters/fluid-pay-api-adapter.ts
|
|
@@ -2300,4 +2376,4 @@ function AddressAutocompleteInput({ control, setValue, countryIso, addressLineFi
|
|
|
2300
2376
|
//#endregion
|
|
2301
2377
|
export { AddressFormDialog as a, PaymentIcon as c, UserInfoDialog as d, ConfirmActionDialog as f, useProfileTranslation as h, CreditCardFormDialog as i, getCardDisplayName as l, ProfileTranslationBridge as m, createFluidPayApiAdapter as n, EditPaymentMethodDialog as o, EllipsesDropdown as p, mapToFluidPayPaymentMethod as r, FluidPayCoreProvider as s, AddressAutocompleteInput as t, getCardExpiry as u };
|
|
2302
2378
|
|
|
2303
|
-
//# sourceMappingURL=AddressAutocompleteInput-
|
|
2379
|
+
//# sourceMappingURL=AddressAutocompleteInput-DY0ZFQOs.mjs.map
|