@zonos/elements 1.3.249 → 1.3.251
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/cjs/{cart-eca56521.js → cart-77640463.js} +318 -19
- package/dist/cjs/{hasInclusivePrice-e7d67b45.js → hasInclusivePrice-e93c64fd.js} +1 -1
- package/dist/cjs/index.cjs.js +7 -7
- package/dist/cjs/{invoice-918f2c2b.js → invoice-211ef96c.js} +2 -2
- package/dist/cjs/{isCollectMobileTablet-89911215.js → isCollectMobileTablet-14fb5ab4.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{localization-878ef681.js → localization-be7afc1b.js} +780 -0
- package/dist/cjs/{paypal-6acca678.js → paypal-c61ef042.js} +29 -2
- package/dist/cjs/{placeTestOrder-f1c1e939.js → placeTestOrder-0f7477c8.js} +2 -2
- package/dist/cjs/{renderCheckoutCurrency-d9590e81.js → renderCheckoutCurrency-1ac02803.js} +2 -2
- package/dist/cjs/{zonos-address-display_9.cjs.entry.js → zonos-address-display_8.cjs.entry.js} +3 -79
- package/dist/cjs/zonos-address_4.cjs.entry.js +2 -2
- package/dist/cjs/zonos-card_5.cjs.entry.js +3 -3
- package/dist/cjs/zonos-cart-items_12.cjs.entry.js +74 -20
- package/dist/cjs/zonos-checkbox_2.cjs.entry.js +113 -0
- package/dist/cjs/zonos-checkout.cjs.entry.js +79 -4
- package/dist/cjs/zonos-collect-cart-items_3.cjs.entry.js +2 -2
- package/dist/cjs/zonos-collect-finish_6.cjs.entry.js +6 -6
- package/dist/cjs/zonos-collect.cjs.entry.js +4 -4
- package/dist/cjs/zonos-controller.cjs.entry.js +2 -2
- package/dist/cjs/zonos-country-flag.cjs.entry.js +1 -1
- package/dist/cjs/zonos-country-select_4.cjs.entry.js +1 -1
- package/dist/cjs/zonos-elements.cjs.js +1 -1
- package/dist/cjs/zonos-hello-dialog.cjs.entry.js +2 -2
- package/dist/cjs/zonos-hello.cjs.entry.js +1 -1
- package/dist/cjs/zonos-invoice-cart-items_2.cjs.entry.js +4 -4
- package/dist/cjs/zonos-invoice-finish_5.cjs.entry.js +6 -6
- package/dist/cjs/zonos-invoice.cjs.entry.js +4 -4
- package/dist/cjs/zonos-language-select_2.cjs.entry.js +1 -1
- package/dist/cjs/zonos-store-credit.cjs.entry.js +113 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.js +3 -0
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.js +49 -4
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-checkout-payment.js +18 -10
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-store-credit/assets/StoreCreditIcon.svg +3 -0
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-store-credit/zonos-store-credit.css +139 -0
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-store-credit/zonos-store-credit.js +137 -0
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +81 -3
- package/dist/collection/components/common/zonos-stripe-phone-input/zonos-stripe-phone-input.js +1 -1
- package/dist/collection/components/main/zonos-controller.js +1 -1
- package/dist/collection/components/store/checkout/cart.js +62 -4
- package/dist/collection/components/store/checkout/paypal.js +28 -0
- package/dist/collection/components/store/checkout/storeCredit.js +237 -0
- package/dist/collection/components/store/checkout/stripe.js +2 -1
- package/dist/collection/components/store/translationStore/strings.arabic.js +39 -0
- package/dist/collection/components/store/translationStore/strings.base.js +39 -0
- package/dist/collection/components/store/translationStore/strings.chinese.js +39 -0
- package/dist/collection/components/store/translationStore/strings.danish.js +39 -0
- package/dist/collection/components/store/translationStore/strings.dutch.js +39 -0
- package/dist/collection/components/store/translationStore/strings.french.js +39 -0
- package/dist/collection/components/store/translationStore/strings.german.js +39 -0
- package/dist/collection/components/store/translationStore/strings.hebrew.js +39 -0
- package/dist/collection/components/store/translationStore/strings.indonesian.js +39 -0
- package/dist/collection/components/store/translationStore/strings.italian.js +39 -0
- package/dist/collection/components/store/translationStore/strings.japanese.js +39 -0
- package/dist/collection/components/store/translationStore/strings.korean.js +39 -0
- package/dist/collection/components/store/translationStore/strings.norwegian.js +39 -0
- package/dist/collection/components/store/translationStore/strings.polish.js +39 -0
- package/dist/collection/components/store/translationStore/strings.portuguese.js +39 -0
- package/dist/collection/components/store/translationStore/strings.russian.js +39 -0
- package/dist/collection/components/store/translationStore/strings.spanish.js +39 -0
- package/dist/collection/components/store/translationStore/strings.swedish.js +39 -0
- package/dist/collection/components/store/translationStore/strings.turkish.js +39 -0
- package/dist/collection/components/store/translationStore/strings.vietnamese.js +39 -0
- package/dist/collection/types/generated/graphql.internal.types.js +589 -0
- package/dist/esm/{cart-efb30253.js → cart-394c9ddb.js} +309 -21
- package/dist/esm/{hasInclusivePrice-565ddbe5.js → hasInclusivePrice-f0322e1c.js} +1 -1
- package/dist/esm/index.js +7 -7
- package/dist/esm/{invoice-0e462fcc.js → invoice-5ae81ae5.js} +2 -2
- package/dist/esm/{isCollectMobileTablet-0bcba25a.js → isCollectMobileTablet-15b668d6.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{localization-c1aff677.js → localization-0ebc8356.js} +780 -0
- package/dist/esm/{paypal-06b67be0.js → paypal-b6fa3ec3.js} +29 -2
- package/dist/esm/{placeTestOrder-6c9a6c8a.js → placeTestOrder-5756cbc3.js} +2 -2
- package/dist/esm/{renderCheckoutCurrency-910fea67.js → renderCheckoutCurrency-5f3e06ea.js} +2 -2
- package/dist/esm/{zonos-address-display_9.entry.js → zonos-address-display_8.entry.js} +4 -79
- package/dist/esm/zonos-address_4.entry.js +2 -2
- package/dist/esm/zonos-card_5.entry.js +3 -3
- package/dist/esm/zonos-cart-items_12.entry.js +74 -20
- package/dist/esm/zonos-checkbox_2.entry.js +108 -0
- package/dist/esm/zonos-checkout.entry.js +79 -4
- package/dist/esm/zonos-collect-cart-items_3.entry.js +2 -2
- package/dist/esm/zonos-collect-finish_6.entry.js +6 -6
- package/dist/esm/zonos-collect.entry.js +4 -4
- package/dist/esm/zonos-controller.entry.js +2 -2
- package/dist/esm/zonos-country-flag.entry.js +1 -1
- package/dist/esm/zonos-country-select_4.entry.js +1 -1
- package/dist/esm/zonos-elements.js +1 -1
- package/dist/esm/zonos-hello-dialog.entry.js +2 -2
- package/dist/esm/zonos-hello.entry.js +1 -1
- package/dist/esm/zonos-invoice-cart-items_2.entry.js +4 -4
- package/dist/esm/zonos-invoice-finish_5.entry.js +6 -6
- package/dist/esm/zonos-invoice.entry.js +4 -4
- package/dist/esm/zonos-language-select_2.entry.js +1 -1
- package/dist/esm/zonos-store-credit.entry.js +109 -0
- package/dist/esm-es5/cart-394c9ddb.js +1 -0
- package/dist/esm-es5/{hasInclusivePrice-565ddbe5.js → hasInclusivePrice-f0322e1c.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{invoice-0e462fcc.js → invoice-5ae81ae5.js} +1 -1
- package/dist/esm-es5/{isCollectMobileTablet-0bcba25a.js → isCollectMobileTablet-15b668d6.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/localization-0ebc8356.js +1 -0
- package/dist/esm-es5/{paypal-06b67be0.js → paypal-b6fa3ec3.js} +2 -2
- package/dist/esm-es5/{placeTestOrder-6c9a6c8a.js → placeTestOrder-5756cbc3.js} +1 -1
- package/dist/esm-es5/{renderCheckoutCurrency-910fea67.js → renderCheckoutCurrency-5f3e06ea.js} +1 -1
- package/dist/esm-es5/zonos-address-display_8.entry.js +1 -0
- package/dist/esm-es5/zonos-address_4.entry.js +1 -1
- package/dist/esm-es5/zonos-card_5.entry.js +1 -1
- package/dist/esm-es5/zonos-cart-items_12.entry.js +1 -1
- package/dist/esm-es5/zonos-checkbox_2.entry.js +1 -0
- package/dist/esm-es5/zonos-checkout.entry.js +1 -1
- package/dist/esm-es5/zonos-collect-cart-items_3.entry.js +1 -1
- package/dist/esm-es5/zonos-collect-finish_6.entry.js +1 -1
- package/dist/esm-es5/zonos-collect.entry.js +1 -1
- package/dist/esm-es5/zonos-controller.entry.js +1 -1
- package/dist/esm-es5/zonos-country-flag.entry.js +1 -1
- package/dist/esm-es5/zonos-country-select_4.entry.js +1 -1
- package/dist/esm-es5/zonos-elements.js +1 -1
- package/dist/esm-es5/zonos-hello-dialog.entry.js +1 -1
- package/dist/esm-es5/zonos-hello.entry.js +1 -1
- package/dist/esm-es5/zonos-invoice-cart-items_2.entry.js +1 -1
- package/dist/esm-es5/zonos-invoice-finish_5.entry.js +1 -1
- package/dist/esm-es5/zonos-invoice.entry.js +1 -1
- package/dist/esm-es5/zonos-language-select_2.entry.js +1 -1
- package/dist/esm-es5/zonos-store-credit.entry.js +1 -0
- package/dist/scripts/index.d.ts +68 -1
- package/dist/scripts/index.js +1 -1
- package/dist/scripts/loadZonos.js +1 -1
- package/dist/scripts/zonos.js +1 -1
- package/dist/types/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.d.ts +1 -0
- package/dist/types/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-store-credit/zonos-store-credit.d.ts +17 -0
- package/dist/types/components/checkout/zonos-checkout/zonos-checkout.d.ts +5 -0
- package/dist/types/components/store/checkout/cart.d.ts +8 -1
- package/dist/types/components/store/checkout/storeCredit.d.ts +111 -0
- package/dist/types/components/store/checkout/stripe.d.ts +1 -1
- package/dist/types/components/store/translationStore/strings.arabic.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.base.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.chinese.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.danish.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.dutch.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.french.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.german.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.hebrew.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.indonesian.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.italian.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.japanese.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.korean.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.norwegian.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.polish.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.portuguese.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.russian.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.spanish.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.swedish.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.turkish.d.ts +39 -0
- package/dist/types/components/store/translationStore/strings.vietnamese.d.ts +39 -0
- package/dist/types/components.d.ts +21 -0
- package/dist/types/types/checkout/api/CheckoutSession.d.ts +9 -1
- package/dist/types/types/generated/graphql.internal.types.d.ts +713 -4
- package/dist/types/types/generated/graphql.internal.types.ts +956 -4
- package/dist/types/types/utils/ZonosSettings.d.ts +4 -0
- package/dist/zonos-elements/index.esm.js +1 -1
- package/dist/zonos-elements/{p-1f1bf95c.system.entry.js → p-07ca3347.system.entry.js} +1 -1
- package/dist/zonos-elements/p-09d7a5cb.system.js +18 -0
- package/dist/zonos-elements/p-0af96b5b.system.entry.js +1 -0
- package/dist/zonos-elements/{p-9c64ca98.system.entry.js → p-0da3cc62.system.entry.js} +1 -1
- package/dist/zonos-elements/p-0dd5a4b8.system.js +1 -0
- package/dist/zonos-elements/{p-4d4b7faa.entry.js → p-1162b685.entry.js} +1 -1
- package/dist/zonos-elements/{p-4d081ce8.entry.js → p-11d6de1a.entry.js} +1 -1
- package/dist/zonos-elements/p-1282495f.system.js +1 -0
- package/dist/zonos-elements/p-13041752.js +1 -0
- package/dist/zonos-elements/{p-1b5f89d5.system.js → p-27fad55a.system.js} +1 -1
- package/dist/zonos-elements/p-29b60bf3.system.js +1 -1
- package/dist/zonos-elements/p-29f7950c.js +17 -0
- package/dist/zonos-elements/p-2b118454.js +1 -0
- package/dist/zonos-elements/{p-26718a78.entry.js → p-2bdc2206.entry.js} +1 -1
- package/dist/zonos-elements/{p-b360ee5b.entry.js → p-2c2e5ee6.entry.js} +1 -1
- package/dist/zonos-elements/{p-bd004403.system.js → p-2c9c750e.system.js} +1 -1
- package/dist/zonos-elements/{p-c9e3bc98.system.js → p-321e7920.system.js} +1 -1
- package/dist/zonos-elements/p-3d757163.entry.js +1 -0
- package/dist/zonos-elements/{p-456c0e52.js → p-4f23732f.js} +1 -1
- package/dist/zonos-elements/{p-321d2963.js → p-57b27c60.js} +1 -1
- package/dist/zonos-elements/{p-6d37f669.entry.js → p-615b5d13.entry.js} +1 -1
- package/dist/zonos-elements/p-620ba943.js +1 -0
- package/dist/zonos-elements/p-785111e7.entry.js +1 -0
- package/dist/zonos-elements/p-7b294762.system.entry.js +1 -0
- package/dist/zonos-elements/p-7fde2d8a.entry.js +1 -0
- package/dist/zonos-elements/p-8abeab5a.entry.js +1 -0
- package/dist/zonos-elements/{p-4a395eea.system.entry.js → p-8dfa0bb8.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-06e2bc14.entry.js → p-8efb79ab.entry.js} +1 -1
- package/dist/zonos-elements/p-8f1ab25c.system.entry.js +1 -0
- package/dist/zonos-elements/{p-358dfb9e.entry.js → p-920d9189.entry.js} +1 -1
- package/dist/zonos-elements/p-92d91395.system.entry.js +1 -0
- package/dist/zonos-elements/{p-b9a4430c.entry.js → p-95f7f2a0.entry.js} +1 -1
- package/dist/zonos-elements/{p-f31fbbf0.entry.js → p-97fb5ad5.entry.js} +1 -1
- package/dist/zonos-elements/{p-bc6b33fa.entry.js → p-9ff90151.entry.js} +1 -1
- package/dist/zonos-elements/{p-4c087a8e.system.entry.js → p-a0ac3ca2.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-09110bb7.system.entry.js → p-a1e23675.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-36bea5d5.system.entry.js → p-a5adc047.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-101226f3.system.entry.js → p-a5fb864a.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-54c95926.entry.js → p-a95ac160.entry.js} +1 -1
- package/dist/zonos-elements/p-ac353826.js +1 -0
- package/dist/zonos-elements/{p-b589f621.system.entry.js → p-b37a85f0.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-302b7105.system.entry.js → p-b49b8da4.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-8d1efd7b.entry.js → p-bdaf2a38.entry.js} +1 -1
- package/dist/zonos-elements/{p-3ad2a9a3.system.entry.js → p-c1ae7391.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-a75b3efc.system.entry.js → p-c2121663.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-c87d3d50.system.js → p-c52b917b.system.js} +1 -1
- package/dist/zonos-elements/{p-0a2abbab.system.entry.js → p-c6047442.system.entry.js} +1 -1
- package/dist/zonos-elements/p-ca19a10a.js +1 -0
- package/dist/zonos-elements/p-cf69bcc4.system.js +1 -0
- package/dist/zonos-elements/{p-3ece0f96.system.entry.js → p-d65cfa9b.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-5eaa0de1.entry.js → p-d8610393.entry.js} +1 -1
- package/dist/zonos-elements/p-daaaa8f1.system.entry.js +1 -0
- package/dist/zonos-elements/{p-8a424412.entry.js → p-efa69c89.entry.js} +1 -1
- package/dist/zonos-elements/p-fbccfa3e.system.js +1 -0
- package/dist/zonos-elements/{p-079bc009.system.entry.js → p-fce715f1.system.entry.js} +1 -1
- package/dist/zonos-elements/p-fe6cc354.entry.js +1 -0
- package/dist/zonos-elements/zonos-elements.esm.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/zonos-toggle.cjs.entry.js +0 -35
- package/dist/esm/zonos-toggle.entry.js +0 -31
- package/dist/esm-es5/cart-efb30253.js +0 -1
- package/dist/esm-es5/localization-c1aff677.js +0 -1
- package/dist/esm-es5/zonos-address-display_9.entry.js +0 -1
- package/dist/esm-es5/zonos-toggle.entry.js +0 -1
- package/dist/zonos-elements/p-096182f0.system.js +0 -1
- package/dist/zonos-elements/p-0aeba2c7.system.js +0 -1
- package/dist/zonos-elements/p-127e0395.js +0 -17
- package/dist/zonos-elements/p-197d9b23.system.entry.js +0 -1
- package/dist/zonos-elements/p-25dd58f8.system.entry.js +0 -1
- package/dist/zonos-elements/p-445072f8.js +0 -1
- package/dist/zonos-elements/p-507f00d2.js +0 -1
- package/dist/zonos-elements/p-5fd0cd66.system.js +0 -1
- package/dist/zonos-elements/p-661cd4ce.system.entry.js +0 -1
- package/dist/zonos-elements/p-777e0a81.entry.js +0 -1
- package/dist/zonos-elements/p-7e77b055.system.entry.js +0 -1
- package/dist/zonos-elements/p-80524eac.entry.js +0 -1
- package/dist/zonos-elements/p-8b206982.system.js +0 -1
- package/dist/zonos-elements/p-9eea270b.entry.js +0 -1
- package/dist/zonos-elements/p-c4e358f2.js +0 -1
- package/dist/zonos-elements/p-cda52300.js +0 -1
- package/dist/zonos-elements/p-d233ef0d.entry.js +0 -1
- package/dist/zonos-elements/p-f8f7d491.js +0 -1
- package/dist/zonos-elements/p-fc0aa91e.system.js +0 -18
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Fragment, h, Host, } from "@stencil/core";
|
|
2
2
|
import { cartStore } from "../../../store/checkout/cart";
|
|
3
3
|
import { paypalStore, paypalStoreReset, } from "../../../store/checkout/paypal";
|
|
4
|
+
import { storeCreditStore, storeCreditStoreReset, } from "../../../store/checkout/storeCredit";
|
|
4
5
|
import { stripeStore, stripeStoreMessageBasedOnStatus, stripeStoreReset, stripeStoreResetPromoCode, stripeStoreRetrievePayment, } from "../../../store/checkout/stripe";
|
|
5
6
|
import { storageStore } from "../../../store/storageStore";
|
|
6
7
|
import { translate } from "../../../store/translationStore";
|
|
@@ -431,6 +432,47 @@ export class ZonosCheckoutFinish {
|
|
|
431
432
|
paypalStoreReset();
|
|
432
433
|
storageStore.checkoutSessionId = null;
|
|
433
434
|
};
|
|
435
|
+
this.checkStoreCreditOrderStatus = async () => {
|
|
436
|
+
// show success message right away when order id is already created
|
|
437
|
+
this.isLoading = false;
|
|
438
|
+
if (storeCreditStore.orderIdCreated) {
|
|
439
|
+
const checkoutSessionId = storageStore.checkoutSessionId;
|
|
440
|
+
submitGtag({
|
|
441
|
+
event: 'zonos-checkout-success',
|
|
442
|
+
metadata: this.buildPurchaseMetadata({
|
|
443
|
+
checkoutSessionId: checkoutSessionId || '',
|
|
444
|
+
}),
|
|
445
|
+
});
|
|
446
|
+
submitGtag({
|
|
447
|
+
event: 'purchase',
|
|
448
|
+
metadata: this.buildPurchaseMetadata({
|
|
449
|
+
checkoutSessionId: checkoutSessionId || '',
|
|
450
|
+
}),
|
|
451
|
+
});
|
|
452
|
+
void trackConversionEvent({
|
|
453
|
+
checkoutSessionId,
|
|
454
|
+
eventName: 'checkout_orderCompleted',
|
|
455
|
+
});
|
|
456
|
+
this.notificationType = 'success';
|
|
457
|
+
this.notificationTitle = translate("You're all set!");
|
|
458
|
+
this.notificationMessages =
|
|
459
|
+
stripeStoreMessageBasedOnStatus('succeeded').messages;
|
|
460
|
+
// override title if notification type is success
|
|
461
|
+
this.useOverrideSuccessNotification();
|
|
462
|
+
const successEvent = createCustomEvent('zonos-checkout-success', {
|
|
463
|
+
message: 'Zonos Checkout successfully processed order',
|
|
464
|
+
});
|
|
465
|
+
document.dispatchEvent(successEvent);
|
|
466
|
+
// wait this to finish before resetting store and checkout session id
|
|
467
|
+
await this.handleSuccessBehavior();
|
|
468
|
+
}
|
|
469
|
+
// reset stores when checkout is finished
|
|
470
|
+
stripeStoreResetPromoCode();
|
|
471
|
+
stripeStoreReset();
|
|
472
|
+
paypalStoreReset();
|
|
473
|
+
storeCreditStoreReset();
|
|
474
|
+
storageStore.checkoutSessionId = null;
|
|
475
|
+
};
|
|
434
476
|
this.closeClickHandler = () => {
|
|
435
477
|
this.closeClick.emit();
|
|
436
478
|
};
|
|
@@ -463,6 +505,9 @@ export class ZonosCheckoutFinish {
|
|
|
463
505
|
if (cartStore.isStagingMode) {
|
|
464
506
|
void this.checkStagingOrderStatus();
|
|
465
507
|
}
|
|
508
|
+
else if (storeCreditStore.orderIdCreated) {
|
|
509
|
+
void this.checkStoreCreditOrderStatus();
|
|
510
|
+
}
|
|
466
511
|
else if (paypalStore.orderIdCreated) {
|
|
467
512
|
void this.checkPaypalPaymentStatus();
|
|
468
513
|
}
|
|
@@ -472,11 +517,11 @@ export class ZonosCheckoutFinish {
|
|
|
472
517
|
}
|
|
473
518
|
render() {
|
|
474
519
|
const isTestMode = getIsTestMode();
|
|
475
|
-
return (h(Host, { key: '
|
|
520
|
+
return (h(Host, { key: 'c74f250bac797f8c000bac4892bc5ab56c0867bb', class: "zonos--checkout-finish zonos--elements", style: {
|
|
476
521
|
'--zonos--border-radius': getBorderRadius({
|
|
477
522
|
overrideBorderStyle: this.borderRadius,
|
|
478
523
|
}),
|
|
479
|
-
} }, !this.isLoading && (h("div", { key: '
|
|
524
|
+
} }, !this.isLoading && (h("div", { key: '5ee705381b0246f5035f512c9d19beba6dc33d4f', class: "zonos--finish-details" }, h("div", { key: '1d1a54d8f73535aaada32601c5e771c9fd381104', class: "zonos--group" }, this.notificationType === 'success' ? (h("zonos-icon", { "aria-label": "Order success", content: SuccessIcon, iconColor: 'blue-800', size: 50 })) : (h("zonos-icon", { "aria-label": "Order failed", content: RemoveIcon, iconColor: 'red-800', size: 50 })), h("zonos-text", { key: '68c898ee87166d08bd52702ae8f9bfe51c393076', class: "zonos--title", type: "semiBoldSubheader" }, this.notificationTitle), h("zonos-text", { key: '98b6eaff782fe34a8dbd258e4c7d0c81c3577bcc', class: "zonos--subtitle", textColor: "gray-600" }, this.notificationMessages.map(message => (h(Fragment, null, message, h("br", null))))), this.shouldRenderCloseButtonForRedirectBehavior() && (h("zonos-button", { key: 'ccc5e7973b2e962e22ac56dcad6e33b048621036',
|
|
480
525
|
// Only show loading spinner if it's not an error notification
|
|
481
526
|
loading: this.isWaitingToRedirect &&
|
|
482
527
|
this.notificationType !== 'error', onClick: () => {
|
|
@@ -488,9 +533,9 @@ export class ZonosCheckoutFinish {
|
|
|
488
533
|
}
|
|
489
534
|
this.closeClickHandler();
|
|
490
535
|
}, size: "md", variant: "primary" }, translate('Close'))), !window.Zonos.isLegacyCheckout &&
|
|
491
|
-
this.shouldRenderKeepShoppingButton() && (h("zonos-button", { key: '
|
|
536
|
+
this.shouldRenderKeepShoppingButton() && (h("zonos-button", { key: 'cd30bc010f2a3e935d9b80e56389581a9150b021', onClick: () => this.closeClickHandler(), size: "md", variant: "primary" }, this.notificationActionText))), isTestMode &&
|
|
492
537
|
cartStore.step === 'finish' &&
|
|
493
|
-
this.notificationType === 'success' && (h("div", { key: '
|
|
538
|
+
this.notificationType === 'success' && (h("div", { key: '458809f316ac5129efbc7fe90d1549c042d477af', class: "zonos--finish-button-wrapper" }, h("zonos-button", { key: 'dcf0c595cb119a731c34c1aff09960db8a1fb251', backgroundColor: "gray-0", buttonColor: "gray-1000", onClick: () => this.closeClickHandler(), size: "lg", variant: "outline" }, "New test cart"), h("zonos-button", { key: '76d55870370b4906970b3e2109617ba2230eee7e', onClick: () => {
|
|
494
539
|
const isZonosDashboard = window.location.hostname.includes('dashboard.zonos.com');
|
|
495
540
|
this.redirectToUrl(isZonosDashboard
|
|
496
541
|
? '/orders/all'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Fragment, h, Host, } from "@stencil/core";
|
|
2
2
|
import { cartStore, cartStoreNextStep, } from "../../../store/checkout/cart";
|
|
3
3
|
import { paypalStore } from "../../../store/checkout/paypal";
|
|
4
|
+
import { storeCreditStore, storeCreditStoreCoversFullAmount, } from "../../../store/checkout/storeCredit";
|
|
4
5
|
import { stripeStore } from "../../../store/checkout/stripe";
|
|
5
6
|
import { storageStore } from "../../../store/storageStore";
|
|
6
7
|
import { translate } from "../../../store/translationStore";
|
|
@@ -52,7 +53,8 @@ export class ZonosCheckoutPayment {
|
|
|
52
53
|
*/
|
|
53
54
|
this.continueClickHandler = async ({ currencyCode, }) => {
|
|
54
55
|
var _a, _b;
|
|
55
|
-
|
|
56
|
+
// Skip Stripe payment validation when store credit covers the full order
|
|
57
|
+
if (!storeCreditStoreCoversFullAmount() && !this.handleValidate()) {
|
|
56
58
|
this.showErrorBanner = true;
|
|
57
59
|
// Attempt to submit the form so the missing input error will be shown in Stripe
|
|
58
60
|
void ((_a = stripeStore.stripeElements) === null || _a === void 0 ? void 0 : _a.submit());
|
|
@@ -143,6 +145,7 @@ export class ZonosCheckoutPayment {
|
|
|
143
145
|
const isTestMode = getIsTestMode();
|
|
144
146
|
const isStagingMode = cartStore.isStagingMode || getIsStagingMode();
|
|
145
147
|
const isPaypalTabSelected = ((_a = stripeStore.stripePaymentEventData) === null || _a === void 0 ? void 0 : _a.value.type) === 'external_paypal';
|
|
148
|
+
const storeCreditCoversFullOrder = storeCreditStoreCoversFullAmount();
|
|
146
149
|
const renderPayment = () => {
|
|
147
150
|
if (isStagingMode) {
|
|
148
151
|
const { colorPrimary } = zonosStore.appearance;
|
|
@@ -158,7 +161,9 @@ export class ZonosCheckoutPayment {
|
|
|
158
161
|
variant: this.submitBtnType }, translate('Place test order')))));
|
|
159
162
|
}
|
|
160
163
|
return (h(Fragment, null, this.showErrorBanner && (h("zonos-banner", { class: "zonos--error-banner", intent: "error" }, translate('Missing required fields. Make sure all fields are completed.'))), this.hasStripePaymentError && (h("zonos-banner", { class: "zonos--payment-error-banner", intent: "error" }, stripeStore.customErrorMessage ||
|
|
161
|
-
translate("We couldn't complete your payment. Please verify the payment details and try again."))), paypalStore.paypalErrorMessage && (h("zonos-banner", { class: "zonos--payment-error-banner", intent: "error" }, paypalStore.paypalErrorMessage)),
|
|
164
|
+
translate("We couldn't complete your payment. Please verify the payment details and try again."))), paypalStore.paypalErrorMessage && (h("zonos-banner", { class: "zonos--payment-error-banner", intent: "error" }, paypalStore.paypalErrorMessage)), cartStore.customerAuthenticationToken &&
|
|
165
|
+
storeCreditStore.availableBalance != null &&
|
|
166
|
+
storeCreditStore.availableBalance > 0 && (h("zonos-store-credit", null)), storeCreditCoversFullOrder ? (h("zonos-banner", { intent: "info" }, translate('Store credit covers your full order'))) : (h("zonos-payment", null)), h("div", { class: "zonos--group-btn" }, (!isPaypalTabSelected || storeCreditCoversFullOrder) && (h(Fragment, null, h("zonos-button", { backgroundColor: this.submitBtnColor, bold: true, isDisabled: this.continueLoading &&
|
|
162
167
|
stripeStore.checkoutSettlementCurrency === 'USD', loading: this.continueLoading &&
|
|
163
168
|
stripeStore.checkoutSettlementCurrency !== 'USD', onClick: async () => {
|
|
164
169
|
if (!cartStore.checkoutSession) {
|
|
@@ -171,22 +176,25 @@ export class ZonosCheckoutPayment {
|
|
|
171
176
|
});
|
|
172
177
|
}, size: "lg",
|
|
173
178
|
// use primary type when on mobile mode
|
|
174
|
-
variant: this.submitBtnType },
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
179
|
+
variant: this.submitBtnType }, storeCreditCoversFullOrder
|
|
180
|
+
? translate('Place order')
|
|
181
|
+
: translate('Pay [orderTotal]', {
|
|
182
|
+
orderTotal: renderCheckoutCurrency({
|
|
183
|
+
amount: cartStore.total,
|
|
184
|
+
isForeign: true,
|
|
185
|
+
}),
|
|
186
|
+
})), !storeCreditCoversFullOrder &&
|
|
187
|
+
stripeStore.shouldRenderPayInUsdButton && (h("zonos-button", { class: "zonos--pay-in-base-currency-btn", isDisabled: this.continueLoading &&
|
|
180
188
|
stripeStore.checkoutSettlementCurrency !== 'USD', loading: this.continueLoading &&
|
|
181
189
|
stripeStore.checkoutSettlementCurrency === 'USD', onClick: async () => {
|
|
182
190
|
await this.continueClickHandler({
|
|
183
191
|
currencyCode: 'USD',
|
|
184
192
|
});
|
|
185
|
-
}, size: "lg", variant: "subtle" }, translate('Click to pay in USD'))))), h("zonos-paypal-payment", { onPaypalSessionDone: ({ detail: { orderId } }) => {
|
|
193
|
+
}, size: "lg", variant: "subtle" }, translate('Click to pay in USD'))))), !storeCreditCoversFullOrder && (h("zonos-paypal-payment", { onPaypalSessionDone: ({ detail: { orderId } }) => {
|
|
186
194
|
this.paypalSessionDone.emit(orderId);
|
|
187
195
|
}, onPaypalSessionFail: () => this.paypalSessionFailed.emit(), style: {
|
|
188
196
|
display: isPaypalTabSelected ? 'block' : 'none',
|
|
189
|
-
} })), isTestMode && (h("zonos-card", { backgroundColor: "gray-100", borderRadius: 12, class: "zonos--test-cards" }, h("zonos-v-stack", { spacing: 16 }, h("div", null, h("zonos-text", { type: "semiBoldLabel" }, translate('Test cards')), h("zonos-text", { textColor: "gray-700" }, translate('Click to copy the card number. Use any future expiration date and three number CVC.'))), h("zonos-button", { icon: h("zonos-icon", { content: CheckmarkLineIcon }), justifyContent: "flex-start", onClick: () => this.copyCardToClipboard('4242424242424242') }, translate('Success'), " (****4242)"), h("zonos-button", { icon: h("zonos-icon", { content: RemoveLineIcon }), justifyContent: "flex-start", onClick: () => this.copyCardToClipboard('4000000000000002') }, translate('Failure'), " (****0002)")), h("zonos-notification", null)))));
|
|
197
|
+
} }))), isTestMode && (h("zonos-card", { backgroundColor: "gray-100", borderRadius: 12, class: "zonos--test-cards" }, h("zonos-v-stack", { spacing: 16 }, h("div", null, h("zonos-text", { type: "semiBoldLabel" }, translate('Test cards')), h("zonos-text", { textColor: "gray-700" }, translate('Click to copy the card number. Use any future expiration date and three number CVC.'))), h("zonos-button", { icon: h("zonos-icon", { content: CheckmarkLineIcon }), justifyContent: "flex-start", onClick: () => this.copyCardToClipboard('4242424242424242') }, translate('Success'), " (****4242)"), h("zonos-button", { icon: h("zonos-icon", { content: RemoveLineIcon }), justifyContent: "flex-start", onClick: () => this.copyCardToClipboard('4000000000000002') }, translate('Failure'), " (****0002)")), h("zonos-notification", null)))));
|
|
190
198
|
};
|
|
191
199
|
return (h(Host, { class: "zonos--checkout-payment zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Payment method')), renderPayment())));
|
|
192
200
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
|
2
|
+
<path fill="currentColor" fill-rule="evenodd" d="M4 5a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V8a3 3 0 0 0-3-3H4Zm16 2H4a1 1 0 0 0-1 1v1h18V8a1 1 0 0 0-1-1ZM2 11h20v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-3Zm6 4.5a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2H9a1 1 0 0 1-1-1Z" clip-rule="evenodd"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
font-family: var(--zonos--font-family, Inter), Inter;
|
|
3
|
+
display: block;
|
|
4
|
+
white-space: normal;
|
|
5
|
+
}
|
|
6
|
+
:host * {
|
|
7
|
+
font-family: var(--zonos--font-family, Inter), Inter;
|
|
8
|
+
}
|
|
9
|
+
:host img {
|
|
10
|
+
max-width: 100%;
|
|
11
|
+
}
|
|
12
|
+
:host dl,
|
|
13
|
+
:host dd,
|
|
14
|
+
:host h1,
|
|
15
|
+
:host h2,
|
|
16
|
+
:host h3,
|
|
17
|
+
:host h4,
|
|
18
|
+
:host h5,
|
|
19
|
+
:host h6,
|
|
20
|
+
:host hr,
|
|
21
|
+
:host figure,
|
|
22
|
+
:host p,
|
|
23
|
+
:host pre {
|
|
24
|
+
margin: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* All sets of variable are here */
|
|
28
|
+
/* smooth font rendering */
|
|
29
|
+
:host {
|
|
30
|
+
-moz-osx-font-smoothing: grayscale;
|
|
31
|
+
-webkit-font-smoothing: antialiased;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:host {
|
|
35
|
+
display: block;
|
|
36
|
+
margin-bottom: var(--zonos-elements-font-size-xl);
|
|
37
|
+
}
|
|
38
|
+
:host .zonos--store-credit-container {
|
|
39
|
+
background: linear-gradient(180deg, var(--zonos-elements-gray-0) 0%, var(--zonos-elements-gray-50) 100%);
|
|
40
|
+
border: 1px solid var(--zonos-elements-gray-200);
|
|
41
|
+
border-radius: var(--zonos--border-radius, var(--zonos-elements-radius-8));
|
|
42
|
+
box-shadow: var(--zonos-elements-v3-shadow-base);
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
padding: 0;
|
|
45
|
+
position: relative;
|
|
46
|
+
}
|
|
47
|
+
:host .zonos--store-credit-container::before {
|
|
48
|
+
background: var(--zonos--primary-color, var(--zonos-elements-gray-400));
|
|
49
|
+
content: "";
|
|
50
|
+
height: 3px;
|
|
51
|
+
left: 0;
|
|
52
|
+
position: absolute;
|
|
53
|
+
right: 0;
|
|
54
|
+
top: 0;
|
|
55
|
+
}
|
|
56
|
+
:host .zonos--store-credit-header {
|
|
57
|
+
padding: var(--zonos-elements-radius-12) var(--zonos-elements-font-size-l) 0;
|
|
58
|
+
}
|
|
59
|
+
:host .zonos--store-credit-title-row {
|
|
60
|
+
align-items: center;
|
|
61
|
+
display: flex;
|
|
62
|
+
justify-content: space-between;
|
|
63
|
+
}
|
|
64
|
+
:host .zonos--store-credit-title-left {
|
|
65
|
+
align-items: center;
|
|
66
|
+
display: flex;
|
|
67
|
+
gap: var(--zonos-elements-font-size-s);
|
|
68
|
+
}
|
|
69
|
+
:host .zonos--store-credit-title-icon {
|
|
70
|
+
align-items: center;
|
|
71
|
+
background: color-mix(in srgb, var(--zonos--primary-color, var(--zonos-elements-gray-400)) 14%, transparent);
|
|
72
|
+
border-radius: calc(var(--zonos--border-radius, var(--zonos-elements-radius-8)) * 0.75);
|
|
73
|
+
display: flex;
|
|
74
|
+
flex-shrink: 0;
|
|
75
|
+
height: 22px;
|
|
76
|
+
justify-content: center;
|
|
77
|
+
width: 22px;
|
|
78
|
+
}
|
|
79
|
+
:host .zonos--store-credit-balance-badge {
|
|
80
|
+
background: color-mix(in srgb, var(--zonos--primary-color, var(--zonos-elements-gray-400)) 8%, var(--zonos-elements-gray-50));
|
|
81
|
+
border: 1px solid color-mix(in srgb, var(--zonos--primary-color, var(--zonos-elements-gray-400)) 22%, var(--zonos-elements-gray-200));
|
|
82
|
+
border-radius: calc(var(--zonos--border-radius, var(--zonos-elements-radius-8)) * 0.65);
|
|
83
|
+
padding: 2px var(--zonos-elements-font-size-s);
|
|
84
|
+
}
|
|
85
|
+
:host .zonos--store-credit-content {
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: column;
|
|
88
|
+
gap: var(--zonos-elements-font-size-s);
|
|
89
|
+
padding: var(--zonos-elements-font-size-s) var(--zonos-elements-font-size-l) var(--zonos-elements-radius-12);
|
|
90
|
+
}
|
|
91
|
+
:host .zonos--store-credit-checkbox {
|
|
92
|
+
align-items: center;
|
|
93
|
+
display: flex;
|
|
94
|
+
}
|
|
95
|
+
:host .zonos--store-credit-options {
|
|
96
|
+
display: flex;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
gap: var(--zonos-elements-font-size-s);
|
|
99
|
+
}
|
|
100
|
+
:host .zonos--store-credit-toggle-row {
|
|
101
|
+
display: flex;
|
|
102
|
+
}
|
|
103
|
+
:host .zonos--store-credit-custom-amount {
|
|
104
|
+
max-width: 240px;
|
|
105
|
+
}
|
|
106
|
+
:host .zonos--store-credit-custom-amount-row {
|
|
107
|
+
align-items: flex-end;
|
|
108
|
+
display: flex;
|
|
109
|
+
gap: var(--zonos-elements-font-size-s);
|
|
110
|
+
}
|
|
111
|
+
:host .zonos--store-credit-custom-amount-row zonos-input {
|
|
112
|
+
flex: 1;
|
|
113
|
+
}
|
|
114
|
+
:host .zonos--store-credit-error {
|
|
115
|
+
margin-top: 2px;
|
|
116
|
+
}
|
|
117
|
+
:host .zonos--store-credit-summary {
|
|
118
|
+
background: color-mix(in srgb, var(--zonos--primary-color, var(--zonos-elements-gray-400)) 6%, var(--zonos-elements-gray-50));
|
|
119
|
+
border-radius: calc(var(--zonos--border-radius, var(--zonos-elements-radius-8)) * 0.65);
|
|
120
|
+
padding: var(--zonos-elements-radius-10) var(--zonos-elements-font-size-s);
|
|
121
|
+
}
|
|
122
|
+
:host .zonos--store-credit-empty {
|
|
123
|
+
align-items: center;
|
|
124
|
+
display: flex;
|
|
125
|
+
flex-direction: column;
|
|
126
|
+
gap: var(--zonos-elements-font-size-s);
|
|
127
|
+
padding: var(--zonos-elements-font-size-xl) var(--zonos-elements-font-size-l) 22px;
|
|
128
|
+
text-align: center;
|
|
129
|
+
}
|
|
130
|
+
:host .zonos--store-credit-empty-icon {
|
|
131
|
+
align-items: center;
|
|
132
|
+
background: var(--zonos-elements-gray-100);
|
|
133
|
+
border-radius: 50%;
|
|
134
|
+
display: flex;
|
|
135
|
+
height: 52px;
|
|
136
|
+
justify-content: center;
|
|
137
|
+
opacity: 0.95;
|
|
138
|
+
width: 52px;
|
|
139
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { Fragment, h, Host, } from "@stencil/core";
|
|
2
|
+
import { cartStoreUpdateStoreCredit } from "../../../../store/checkout/cart";
|
|
3
|
+
import { storeCreditStore, storeCreditStoreGetEffectiveAmount, storeCreditStoreRefreshBalance, storeCreditStoreSetAmount, storeCreditStoreSetEnabled, storeCreditStoreSetUseFullBalance, } from "../../../../store/checkout/storeCredit";
|
|
4
|
+
import { translate } from "../../../../store/translationStore";
|
|
5
|
+
import { zonosStore, zonosStoreFontFamily, } from "../../../../store/zonosStore";
|
|
6
|
+
import { renderCheckoutCurrency } from "../../../../utils/checkout/renderCheckoutCurrency";
|
|
7
|
+
import { getBorderRadius } from "../../../../utils/getBorderRadius";
|
|
8
|
+
// eslint-disable-next-line no-relative-import-paths/no-relative-import-paths
|
|
9
|
+
import StoreCreditIcon from "./assets/StoreCreditIcon.svg";
|
|
10
|
+
const AMOUNT_MODE_FULL = 'full';
|
|
11
|
+
const AMOUNT_MODE_CUSTOM = 'custom';
|
|
12
|
+
export class ZonosStoreCredit {
|
|
13
|
+
constructor() {
|
|
14
|
+
/**
|
|
15
|
+
* Whether the component is enabled
|
|
16
|
+
*/
|
|
17
|
+
this.enabled = true;
|
|
18
|
+
/**
|
|
19
|
+
* Local state for custom amount input
|
|
20
|
+
*/
|
|
21
|
+
this.customAmountInput = '';
|
|
22
|
+
this.handleUseStoreCreditChange = (checked) => {
|
|
23
|
+
storeCreditStoreSetEnabled(checked);
|
|
24
|
+
if (checked) {
|
|
25
|
+
// Enable store credit usage with full balance by default
|
|
26
|
+
storeCreditStoreSetUseFullBalance(true);
|
|
27
|
+
}
|
|
28
|
+
void cartStoreUpdateStoreCredit();
|
|
29
|
+
};
|
|
30
|
+
this.handleAmountModeChange = (mode) => {
|
|
31
|
+
const isFullBalance = mode === AMOUNT_MODE_FULL;
|
|
32
|
+
storeCreditStoreSetUseFullBalance(isFullBalance);
|
|
33
|
+
if (!isFullBalance) {
|
|
34
|
+
this.customAmountInput = '';
|
|
35
|
+
}
|
|
36
|
+
void cartStoreUpdateStoreCredit();
|
|
37
|
+
};
|
|
38
|
+
this.handleCustomAmountChange = (value) => {
|
|
39
|
+
this.customAmountInput = value;
|
|
40
|
+
// Clear error when user types
|
|
41
|
+
storeCreditStore.error = null;
|
|
42
|
+
};
|
|
43
|
+
this.handleApplyCustomAmount = () => {
|
|
44
|
+
const amount = parseFloat(this.customAmountInput);
|
|
45
|
+
if (!isNaN(amount) && amount > 0) {
|
|
46
|
+
storeCreditStoreSetAmount(amount);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
storeCreditStoreSetAmount(null);
|
|
50
|
+
}
|
|
51
|
+
if (!storeCreditStore.error) {
|
|
52
|
+
void cartStoreUpdateStoreCredit();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async componentWillLoad() {
|
|
57
|
+
await storeCreditStoreRefreshBalance();
|
|
58
|
+
}
|
|
59
|
+
render() {
|
|
60
|
+
if (!this.enabled) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const { colorPrimary } = zonosStore.appearance;
|
|
64
|
+
const borderRadius = getBorderRadius({});
|
|
65
|
+
const availableBalance = storeCreditStore.availableBalance;
|
|
66
|
+
const hasBalance = availableBalance !== null && availableBalance > 0;
|
|
67
|
+
const isUsingStoreCredit = storeCreditStore.isEnabled;
|
|
68
|
+
const useFullBalance = storeCreditStore.useFullBalance;
|
|
69
|
+
const error = storeCreditStore.error;
|
|
70
|
+
const effectiveAmount = storeCreditStoreGetEffectiveAmount();
|
|
71
|
+
const formattedBalance = renderCheckoutCurrency({
|
|
72
|
+
amount: availableBalance !== null && availableBalance !== void 0 ? availableBalance : 0,
|
|
73
|
+
isForeign: true,
|
|
74
|
+
});
|
|
75
|
+
return (h(Host, { class: "zonos--elements zonos--store-credit", style: {
|
|
76
|
+
'--zonos--border-radius': borderRadius,
|
|
77
|
+
'--zonos--font-family': zonosStoreFontFamily(),
|
|
78
|
+
'--zonos--primary-color': colorPrimary,
|
|
79
|
+
} }, h("div", { class: "zonos--store-credit-container" }, h("div", { class: "zonos--store-credit-header" }, h("div", { class: "zonos--store-credit-title-row" }, h("div", { class: "zonos--store-credit-title-left" }, h("div", { "aria-hidden": "true", class: "zonos--store-credit-title-icon" }, h("zonos-icon", { content: StoreCreditIcon, iconColor: 'gray-500', size: 22 })), h("zonos-text", { type: "semiBoldLabel" }, translate('Store credit'))), hasBalance && (h("div", { class: "zonos--store-credit-balance-badge" }, h("zonos-text", { textColor: "gray-600", type: "caption" }, formattedBalance))))), h(Fragment, null, hasBalance ? (h("div", { class: "zonos--store-credit-content" }, h("div", { class: "zonos--store-credit-checkbox" }, h("zonos-checkbox", { isChecked: isUsingStoreCredit, label: translate('Use store credit'), onCheckboxSelected: e => this.handleUseStoreCreditChange(e.detail), size: 16 })), isUsingStoreCredit && (h("div", { class: "zonos--store-credit-options" }, h("div", { class: "zonos--store-credit-toggle-row" }, h("zonos-toggle", { onToggleChanged: e => this.handleAmountModeChange(e.detail), options: [
|
|
80
|
+
{
|
|
81
|
+
label: translate('Apply full balance'),
|
|
82
|
+
value: AMOUNT_MODE_FULL,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
label: translate('Enter amount'),
|
|
86
|
+
value: AMOUNT_MODE_CUSTOM,
|
|
87
|
+
},
|
|
88
|
+
], value: useFullBalance ? AMOUNT_MODE_FULL : AMOUNT_MODE_CUSTOM })), !useFullBalance && (h("div", { class: "zonos--store-credit-custom-amount" }, h("div", { class: "zonos--store-credit-custom-amount-row" }, h("zonos-input", { inputLabel: translate('Enter amount'), inputValue: this.customAmountInput, isError: !!error, onInputChange: e => this.handleCustomAmountChange(e.detail) }), h("zonos-button", { onClick: this.handleApplyCustomAmount, size: "sm", variant: "primary" }, translate('Apply'))))), error && (h("div", { class: "zonos--store-credit-error" }, h("zonos-text", { textColor: "red-600", type: "caption" }, error))), h("div", { class: "zonos--store-credit-summary" }, h("zonos-text", { textColor: "gray-800", type: "semiBoldLabel" }, translate('Amount to apply: [amount]', {
|
|
89
|
+
amount: renderCheckoutCurrency({
|
|
90
|
+
amount: effectiveAmount,
|
|
91
|
+
isForeign: true,
|
|
92
|
+
}),
|
|
93
|
+
}))))))) : (h("div", { class: "zonos--store-credit-empty" }, h("div", { "aria-hidden": "true", class: "zonos--store-credit-empty-icon" }, h("zonos-icon", { content: StoreCreditIcon, iconColor: "gray-500", size: 28 })), h("zonos-text", { textColor: "gray-600", type: "caption" }, translate('No store credit available'))))))));
|
|
94
|
+
}
|
|
95
|
+
static get is() { return "zonos-store-credit"; }
|
|
96
|
+
static get encapsulation() { return "shadow"; }
|
|
97
|
+
static get originalStyleUrls() {
|
|
98
|
+
return {
|
|
99
|
+
"$": ["zonos-store-credit.scss"]
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
static get styleUrls() {
|
|
103
|
+
return {
|
|
104
|
+
"$": ["zonos-store-credit.css"]
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
static get properties() {
|
|
108
|
+
return {
|
|
109
|
+
"enabled": {
|
|
110
|
+
"type": "boolean",
|
|
111
|
+
"mutable": false,
|
|
112
|
+
"complexType": {
|
|
113
|
+
"original": "boolean",
|
|
114
|
+
"resolved": "boolean",
|
|
115
|
+
"references": {}
|
|
116
|
+
},
|
|
117
|
+
"required": false,
|
|
118
|
+
"optional": false,
|
|
119
|
+
"docs": {
|
|
120
|
+
"tags": [],
|
|
121
|
+
"text": "Whether the component is enabled"
|
|
122
|
+
},
|
|
123
|
+
"getter": false,
|
|
124
|
+
"setter": false,
|
|
125
|
+
"attribute": "enabled",
|
|
126
|
+
"reflect": false,
|
|
127
|
+
"defaultValue": "true"
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
static get states() {
|
|
132
|
+
return {
|
|
133
|
+
"customAmountInput": {}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
static get elementRef() { return "el"; }
|
|
137
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Fragment, h, Host, } from "@stencil/core";
|
|
2
2
|
import { cartStore, cartStoreClearCheckoutInterval, cartStoreNextStep, cartStoreOnChange, cartStoreReset, cartStoreResetTabItems, cartStoreSetCheckoutSession, cartStoreStartCheckoutInterval, cartStoreUpdateItems, cartStoreUpdateToErrorState, } from "../../store/checkout/cart";
|
|
3
3
|
import { paypalInitScript, paypalStore, paypalStoreHasPaypalEnabled, } from "../../store/checkout/paypal";
|
|
4
|
-
import {
|
|
4
|
+
import { storeCreditStoreApplyCredit, storeCreditStoreCoversFullAmount, storeCreditStoreCreateOrder, storeCreditStoreGetEffectiveAmount, } from "../../store/checkout/storeCredit";
|
|
5
|
+
import { getCheckoutSessionBody, initStripeElements, stripeStore, stripeStoreCleanupDomesticShippingSession, stripeStoreConfirmPayment, stripeStoreGetPaymentIntent, stripeStoreHandleInventoryCheck, stripeStoreHandleInventoryRefund, stripeStoreInitCheckoutSession, stripeStoreOnChange, stripeStorePrefetchLandedCost, stripeStoreReset, stripeStoreRetrievePayment, stripeStoreUpdateCheckoutSessionBaseCurrency, } from "../../store/checkout/stripe";
|
|
5
6
|
import { localizationStore, localizationStoreOnChange, } from "../../store/hello/localization";
|
|
6
7
|
import { storageStore, storageStoreSetEnabledVariantTestKeys, VARIANT_TEST_KEY_EXPIRATION, } from "../../store/storageStore";
|
|
7
8
|
import { translate } from "../../store/translationStore";
|
|
@@ -36,6 +37,7 @@ import { sendLoadNativeCheckoutLog } from "../../utils/logging/sendLoadNativeChe
|
|
|
36
37
|
import { mergeConfig } from "../../utils/mergeConfig";
|
|
37
38
|
import { styles } from "../../utils/styles";
|
|
38
39
|
import { submitGtag } from "../../utils/submitGtag";
|
|
40
|
+
import { validateCheckoutSession } from "../../utils/validateCheckoutSession";
|
|
39
41
|
import { filterExpiredTests } from "../../utils/varianceTest/filterExpiredTests";
|
|
40
42
|
import { getSelectedTestVariant } from "../../utils/varianceTest/getSelectedTestVariant";
|
|
41
43
|
import { isTestEnabled } from "../../utils/varianceTest/isTestEnabl";
|
|
@@ -138,6 +140,11 @@ export class ZonosCheckout {
|
|
|
138
140
|
* Whether or not the domestic checkout dialog should be shown
|
|
139
141
|
*/
|
|
140
142
|
this.detectedDomesticCheckoutDialogOpen = false;
|
|
143
|
+
/**
|
|
144
|
+
* Whether or not the redirect to domestic checkout dialog should be shown.
|
|
145
|
+
* This is for BigCommerce stores when the user selects a domestic country in the international checkout.
|
|
146
|
+
*/
|
|
147
|
+
this.redirectToDomesticCheckoutDialogOpen = false;
|
|
141
148
|
/**
|
|
142
149
|
* Client secret value
|
|
143
150
|
*/
|
|
@@ -1232,6 +1239,55 @@ export class ZonosCheckout {
|
|
|
1232
1239
|
this.submitLoading = false;
|
|
1233
1240
|
return;
|
|
1234
1241
|
}
|
|
1242
|
+
// Apply store credit if customer has selected an amount
|
|
1243
|
+
const storeCreditAmount = storeCreditStoreGetEffectiveAmount();
|
|
1244
|
+
if (storeCreditAmount > 0) {
|
|
1245
|
+
const storeCreditResult = await storeCreditStoreApplyCredit();
|
|
1246
|
+
if (!storeCreditResult.success) {
|
|
1247
|
+
stripeStore.hasPaymentError = true;
|
|
1248
|
+
stripeStore.customErrorMessage =
|
|
1249
|
+
storeCreditResult.error ||
|
|
1250
|
+
translate('Unable to apply store credit. Please try again.');
|
|
1251
|
+
this.submitLoading = false;
|
|
1252
|
+
return;
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
// If store credit covers the full order, create order directly without payment
|
|
1256
|
+
if (storeCreditStoreCoversFullAmount()) {
|
|
1257
|
+
try {
|
|
1258
|
+
// Validate checkout session (landed cost ID, etc.) before creating order
|
|
1259
|
+
const checkoutSessionStatus = await validateCheckoutSession();
|
|
1260
|
+
if (!checkoutSessionStatus.valid) {
|
|
1261
|
+
stripeStore.hasPaymentError = true;
|
|
1262
|
+
stripeStore.customErrorMessage = checkoutSessionStatus.errorMessage;
|
|
1263
|
+
this.submitLoading = false;
|
|
1264
|
+
return;
|
|
1265
|
+
}
|
|
1266
|
+
const orderResult = await storeCreditStoreCreateOrder();
|
|
1267
|
+
if (!orderResult.success) {
|
|
1268
|
+
stripeStore.hasPaymentError = true;
|
|
1269
|
+
stripeStore.customErrorMessage =
|
|
1270
|
+
orderResult.error ||
|
|
1271
|
+
translate('Unable to place order with store credit. Please try again.');
|
|
1272
|
+
this.submitLoading = false;
|
|
1273
|
+
return;
|
|
1274
|
+
}
|
|
1275
|
+
cartStoreNextStep();
|
|
1276
|
+
cartStoreClearCheckoutInterval();
|
|
1277
|
+
}
|
|
1278
|
+
catch (err) {
|
|
1279
|
+
logError(err);
|
|
1280
|
+
submitGtag({
|
|
1281
|
+
event: 'zonos-checkout-payment-fail',
|
|
1282
|
+
metadata: {
|
|
1283
|
+
checkoutSessionId: storageStore.checkoutSessionId,
|
|
1284
|
+
},
|
|
1285
|
+
});
|
|
1286
|
+
stripeStore.hasPaymentError = true;
|
|
1287
|
+
}
|
|
1288
|
+
this.submitLoading = false;
|
|
1289
|
+
return;
|
|
1290
|
+
}
|
|
1235
1291
|
try {
|
|
1236
1292
|
await stripeStoreConfirmPayment();
|
|
1237
1293
|
cartStoreNextStep();
|
|
@@ -1423,6 +1479,27 @@ export class ZonosCheckout {
|
|
|
1423
1479
|
this.shouldShowFedexShippingConsentDialog = true;
|
|
1424
1480
|
}
|
|
1425
1481
|
}),
|
|
1482
|
+
stripeStoreOnChange('stripeAddressEventData', addressEventData => {
|
|
1483
|
+
var _a;
|
|
1484
|
+
// For BigCommerce stores: redirect to domestic checkout when user selects a domestic country
|
|
1485
|
+
// Only redirect when the store's native currency is USD and the feature is enabled
|
|
1486
|
+
if (!window.Zonos.isBigCommerce ||
|
|
1487
|
+
!addressEventData ||
|
|
1488
|
+
this.redirectToDomesticCheckoutDialogOpen ||
|
|
1489
|
+
!((_a = zonosStore.genericSettings) === null || _a === void 0 ? void 0 : _a.isBigcommerceDomesticCheckoutRedirectEnabled) ||
|
|
1490
|
+
zonosStore.sourceCurrency !== 'USD') {
|
|
1491
|
+
return;
|
|
1492
|
+
}
|
|
1493
|
+
const shippingCountry = addressEventData.value.address.country;
|
|
1494
|
+
if (shippingCountry &&
|
|
1495
|
+
zonosStore.disabledCountries.includes(shippingCountry)) {
|
|
1496
|
+
this.redirectToDomesticCheckoutDialogOpen = true;
|
|
1497
|
+
log(`Domestic country ${shippingCountry} selected in international checkout, redirecting to BigCommerce domestic checkout`, 'info');
|
|
1498
|
+
setTimeout(() => {
|
|
1499
|
+
window.location.href = '/checkout';
|
|
1500
|
+
}, 2000);
|
|
1501
|
+
}
|
|
1502
|
+
}),
|
|
1426
1503
|
];
|
|
1427
1504
|
// Initialize test keys
|
|
1428
1505
|
this.initializeTestKeys();
|
|
@@ -1530,7 +1607,7 @@ export class ZonosCheckout {
|
|
|
1530
1607
|
this.isMobile && 'mobile',
|
|
1531
1608
|
this.isIframed && 'iframed',
|
|
1532
1609
|
this.hiddenMode && 'hidden-mode',
|
|
1533
|
-
]) }, this.preview ? (renderContent()) : (h("zonos-dialog", { borderStyle: style, class: "zonos--checkout-dialog", "data-theme": rightSideTheme, height: "980px", isLoading: dialogLoading, mobile: this.isMobile, noBodyPadding: true, noBorder: true, noClickOutside: true, noCloseButton: true, onCloseDialog: () => this.closeDialogHandler(), open: this.open, width: "1200px" }, renderContent())), h("zonos-dialog", { isLoading: true, loadingText: translate('You will be redirected to international checkout shortly.'), loadingTitle: translate('We detected that you are shipping to an international address.'), noClickOutside: true, noCloseButton: true, open: this.detectedDomesticCheckoutDialogOpen, width: "450px" }), h("zonos-confirm-dialog", { class: "zonos--close-confirm-dialog", dialogCancelBtnText: translate("Don't close"), dialogConfirmBtnText: translate('Close'), dialogIntent: "warn", dialogOpen: this.confirmDialogOpen, dialogSubtitle: translate('Would you like to close checkout and return to the site?'), dialogTitle: translate('Are you sure?'), onCancelClicked: () => {
|
|
1610
|
+
]) }, this.preview ? (renderContent()) : (h("zonos-dialog", { borderStyle: style, class: "zonos--checkout-dialog", "data-theme": rightSideTheme, height: "980px", isLoading: dialogLoading, mobile: this.isMobile, noBodyPadding: true, noBorder: true, noClickOutside: true, noCloseButton: true, onCloseDialog: () => this.closeDialogHandler(), open: this.open, width: "1200px" }, renderContent())), h("zonos-dialog", { isLoading: true, loadingText: translate('You will be redirected to international checkout shortly.'), loadingTitle: translate('We detected that you are shipping to an international address.'), noClickOutside: true, noCloseButton: true, open: this.detectedDomesticCheckoutDialogOpen, width: "450px" }), h("zonos-dialog", { isLoading: true, loadingText: translate('You will be redirected to domestic checkout shortly.'), loadingTitle: translate('We detected that you are shipping to a domestic address.'), noClickOutside: true, noCloseButton: true, open: this.redirectToDomesticCheckoutDialogOpen, width: "450px" }), h("zonos-confirm-dialog", { class: "zonos--close-confirm-dialog", dialogCancelBtnText: translate("Don't close"), dialogConfirmBtnText: translate('Close'), dialogIntent: "warn", dialogOpen: this.confirmDialogOpen, dialogSubtitle: translate('Would you like to close checkout and return to the site?'), dialogTitle: translate('Are you sure?'), onCancelClicked: () => {
|
|
1534
1611
|
this.confirmDialogOpen = false;
|
|
1535
1612
|
},
|
|
1536
1613
|
// Mark user selected confirm to close the dialog
|
|
@@ -1767,6 +1844,7 @@ export class ZonosCheckout {
|
|
|
1767
1844
|
"placedOrderInfo": {},
|
|
1768
1845
|
"shouldShowFedexShippingConsentDialog": {},
|
|
1769
1846
|
"detectedDomesticCheckoutDialogOpen": {},
|
|
1847
|
+
"redirectToDomesticCheckoutDialogOpen": {},
|
|
1770
1848
|
"clientSecret": {},
|
|
1771
1849
|
"stripeCustomerSessionClientSecret": {}
|
|
1772
1850
|
};
|
|
@@ -1842,7 +1920,7 @@ export class ZonosCheckout {
|
|
|
1842
1920
|
"signature": "(session: CheckoutSessionDetailsFragment) => Promise<void>",
|
|
1843
1921
|
"parameters": [{
|
|
1844
1922
|
"name": "session",
|
|
1845
|
-
"type": "{ cartId: string | null; clientSecret: string; completedAt: string | null; customerProfile: { email: string | null; locations: { administrativeArea: string; countryCode: CountryCode; email: string | null; line1: string; line2: string | null;
|
|
1923
|
+
"type": "{ cartId: string | null; clientSecret: string; completedAt: string | null; customerProfile: { email: string | null; locations: { administrativeArea: string; countryCode: CountryCode; email: string | null; line1: string; line2: string | null; name: string | null; phone: string | null; locality: string; postalCode: string; }[] | null; name: string | null; storeCreditBalance: number | null; } | null; customerSessionClientSecret: string | null; id: string; landedCost: { amountSubtotals: { discounts: number | null; duties: number; fees: number; items: number; landedCostTotal: number; shipping: number; taxes: number; } | null; appliedAdjustments: { adjustment: { name: string | null; source: AdjustmentSource | null; } | null; amount: number; type: LandedCostAdjustmentType | null; item: { amount: number; } | null; }[] | null; currencyCode: CurrencyCode; deMinimis: { type: DeMinimisType; threshold: DeMinimisThreshold; method: IncotermCode; note: string; formula: string; }[]; duties: { amount: number; currencyCode: CurrencyCode; }[]; fees: { amount: number; currencyCode: CurrencyCode; }[]; landedCostGuaranteeCode: LandedCostGuaranteeCode; id: string; method: IncotermCode; remittance: { amount: number; description: string; }[]; rootId: string; shipmentRating: { amount: number; currencyCode: CurrencyCode; displayName: string; id: string; shippingProfile: { serviceLevel: { code: string; }; transitTime: { guaranteedDelivery: string | null; max: number | null; min: number | null; type: TransitTypeCode | null; } | null; } | null; }; taxes: { amount: number; currencyCode: CurrencyCode; }[]; } | null; metadata: ({ key: string; value: string; } | null)[] | null; organizationId: string; references: { inclusivePriceConfigurationId: string | null; } | null; subtotals: { adjustments: number; duties: number; exchangeRate: { id: string; rate: number; sourceCurrencyCode: CurrencyCode; targetCurrencyCode: CurrencyCode; type: ExchangeRateType; }; fees: number; items: number; landedCostTotal: number; presentmentCurrencyCode: CurrencyCode; shipping: number; storeCredit: number; taxes: number; total: number; }; varianceTestResults: { selectedVariantKey: string; testKey: string; }[] | null; }",
|
|
1846
1924
|
"docs": ""
|
|
1847
1925
|
}],
|
|
1848
1926
|
"references": {
|
package/dist/collection/components/common/zonos-stripe-phone-input/zonos-stripe-phone-input.js
CHANGED
|
@@ -259,7 +259,7 @@ export class ZonosStripePhoneInput {
|
|
|
259
259
|
"mutable": false,
|
|
260
260
|
"complexType": {
|
|
261
261
|
"original": "GenericZonosSettings['countryFields'] | null",
|
|
262
|
-
"resolved": "null | undefined | { AD: CountryFields; AE: CountryFields; AF: CountryFields; AG: CountryFields; AI: CountryFields; AL: CountryFields; AM: CountryFields; AO: CountryFields; AQ: CountryFields; AR: CountryFields; AS: CountryFields; AT: CountryFields; AU: CountryFields; AW: CountryFields; AX: CountryFields; AZ: CountryFields; BA: CountryFields; BB: CountryFields; BD: CountryFields; BE: CountryFields; BF: CountryFields; BG: CountryFields; BH: CountryFields; BI: CountryFields; BJ: CountryFields; BL: CountryFields; BM: CountryFields; BN: CountryFields; BO: CountryFields; BQ: CountryFields; BR: CountryFields; BS: CountryFields; BT: CountryFields; BV: CountryFields; BW: CountryFields; BY: CountryFields; BZ: CountryFields; CA: CountryFields;
|
|
262
|
+
"resolved": "null | undefined | { CC: CountryFields; TO: CountryFields; AD: CountryFields; AE: CountryFields; AF: CountryFields; AG: CountryFields; AI: CountryFields; AL: CountryFields; AM: CountryFields; AO: CountryFields; AQ: CountryFields; AR: CountryFields; AS: CountryFields; AT: CountryFields; AU: CountryFields; AW: CountryFields; AX: CountryFields; AZ: CountryFields; BA: CountryFields; BB: CountryFields; BD: CountryFields; BE: CountryFields; BF: CountryFields; BG: CountryFields; BH: CountryFields; BI: CountryFields; BJ: CountryFields; BL: CountryFields; BM: CountryFields; BN: CountryFields; BO: CountryFields; BQ: CountryFields; BR: CountryFields; BS: CountryFields; BT: CountryFields; BV: CountryFields; BW: CountryFields; BY: CountryFields; BZ: CountryFields; CA: CountryFields; CD: CountryFields; CF: CountryFields; CG: CountryFields; CH: CountryFields; CI: CountryFields; CK: CountryFields; CL: CountryFields; CM: CountryFields; CN: CountryFields; CO: CountryFields; CR: CountryFields; CU: CountryFields; CV: CountryFields; CW: CountryFields; CX: CountryFields; CY: CountryFields; CZ: CountryFields; DE: CountryFields; DJ: CountryFields; DK: CountryFields; DM: CountryFields; DO: CountryFields; DZ: CountryFields; EC: CountryFields; EE: CountryFields; EG: CountryFields; EH: CountryFields; ER: CountryFields; ES: CountryFields; ET: CountryFields; FI: CountryFields; FJ: CountryFields; FK: CountryFields; FM: CountryFields; FO: CountryFields; FR: CountryFields; GA: CountryFields; GB: CountryFields; GD: CountryFields; GE: CountryFields; GF: CountryFields; GG: CountryFields; GH: CountryFields; GI: CountryFields; GL: CountryFields; GM: CountryFields; GN: CountryFields; GP: CountryFields; GQ: CountryFields; GR: CountryFields; GS: CountryFields; GT: CountryFields; GU: CountryFields; GW: CountryFields; GY: CountryFields; HK: CountryFields; HM: CountryFields; HN: CountryFields; HR: CountryFields; HT: CountryFields; HU: CountryFields; IC: CountryFields; ID: CountryFields; IE: CountryFields; IL: CountryFields; IM: CountryFields; IN: CountryFields; IO: CountryFields; IQ: CountryFields; IR: CountryFields; IS: CountryFields; IT: CountryFields; JE: CountryFields; JM: CountryFields; JO: CountryFields; JP: CountryFields; KE: CountryFields; KG: CountryFields; KH: CountryFields; KI: CountryFields; KM: CountryFields; KN: CountryFields; KP: CountryFields; KR: CountryFields; KW: CountryFields; KY: CountryFields; KZ: CountryFields; LA: CountryFields; LB: CountryFields; LC: CountryFields; LI: CountryFields; LK: CountryFields; LR: CountryFields; LS: CountryFields; LT: CountryFields; LU: CountryFields; LV: CountryFields; LY: CountryFields; MA: CountryFields; MC: CountryFields; MD: CountryFields; ME: CountryFields; MF: CountryFields; MG: CountryFields; MH: CountryFields; MK: CountryFields; ML: CountryFields; MM: CountryFields; MN: CountryFields; MO: CountryFields; MP: CountryFields; MQ: CountryFields; MR: CountryFields; MS: CountryFields; MT: CountryFields; MU: CountryFields; MV: CountryFields; MW: CountryFields; MX: CountryFields; MY: CountryFields; MZ: CountryFields; NA: CountryFields; NC: CountryFields; NE: CountryFields; NF: CountryFields; NG: CountryFields; NI: CountryFields; NL: CountryFields; NO: CountryFields; NP: CountryFields; NR: CountryFields; NU: CountryFields; NZ: CountryFields; OM: CountryFields; PA: CountryFields; PE: CountryFields; PF: CountryFields; PG: CountryFields; PH: CountryFields; PK: CountryFields; PL: CountryFields; PM: CountryFields; PN: CountryFields; PR: CountryFields; PS: CountryFields; PT: CountryFields; PW: CountryFields; PY: CountryFields; QA: CountryFields; RE: CountryFields; RO: CountryFields; RS: CountryFields; RU: CountryFields; RW: CountryFields; SA: CountryFields; SB: CountryFields; SC: CountryFields; SD: CountryFields; SE: CountryFields; SG: CountryFields; SH: CountryFields; SI: CountryFields; SJ: CountryFields; SK: CountryFields; SL: CountryFields; SM: CountryFields; SN: CountryFields; SO: CountryFields; SR: CountryFields; SS: CountryFields; ST: CountryFields; SV: CountryFields; SX: CountryFields; SY: CountryFields; SZ: CountryFields; TC: CountryFields; TD: CountryFields; TF: CountryFields; TG: CountryFields; TH: CountryFields; TJ: CountryFields; TK: CountryFields; TL: CountryFields; TM: CountryFields; TN: CountryFields; TR: CountryFields; TT: CountryFields; TV: CountryFields; TW: CountryFields; TZ: CountryFields; UA: CountryFields; UG: CountryFields; UM: CountryFields; US: CountryFields; UY: CountryFields; UZ: CountryFields; VA: CountryFields; VC: CountryFields; VE: CountryFields; VG: CountryFields; VI: CountryFields; VN: CountryFields; VU: CountryFields; WF: CountryFields; WS: CountryFields; YE: CountryFields; YT: CountryFields; ZA: CountryFields; ZM: CountryFields; ZW: CountryFields; }",
|
|
263
263
|
"references": {
|
|
264
264
|
"GenericZonosSettings": {
|
|
265
265
|
"location": "import",
|