@zonos/elements 1.2.1 → 1.2.3
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-7b70853c.js → cart-55512e32.js} +12 -2
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/{localization-387a8a65.js → localization-d7fe7290.js} +40 -13
- package/dist/cjs/{submitGtag-bf6e7c5e.js → submitGtag-d65003f9.js} +1 -1
- package/dist/cjs/zonos-address_2.cjs.entry.js +7 -2
- package/dist/cjs/zonos-cart-items_10.cjs.entry.js +6 -7
- package/dist/cjs/zonos-checkout.cjs.entry.js +8 -4
- package/dist/cjs/zonos-controller.cjs.entry.js +49 -3
- package/dist/cjs/zonos-country-flag_4.cjs.entry.js +1 -1
- package/dist/cjs/zonos-hello-dialog.cjs.entry.js +15 -7
- package/dist/cjs/zonos-hello.cjs.entry.js +1 -1
- package/dist/cjs/zonos-payment.cjs.entry.js +2 -2
- package/dist/cjs/zonos-shipping-rich-radio.cjs.entry.js +1 -1
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.css +2 -2
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +4 -0
- package/dist/collection/components/checkout/zonos-checkout/zonos-shipping/zonos-shipping.js +3 -5
- package/dist/collection/components/common/zonos-shipping-rich-radio/zonos-shipping-rich-radio.css +1 -0
- package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog.js +15 -7
- package/dist/collection/components/main/zonos-controller.js +46 -0
- package/dist/collection/components/store/checkout/stripe.js +11 -1
- package/dist/collection/components/store/hello/localization.js +31 -9
- package/dist/collection/components/stripe/zonos-address/zonos-address.js +5 -0
- package/dist/collection/components/utils/api/getExchangeRate.js +9 -4
- package/dist/collection/components/utils/checkout/initCheckout.js +1 -1
- package/dist/collection/environment.js +22 -13
- package/dist/collection/scripts/zonos.js +84 -3
- package/dist/collection/utils/generateVercelDeployUrl.js +3 -2
- package/dist/components/cart.js +11 -1
- package/dist/components/localization.js +40 -13
- package/dist/components/zonos-address2.js +5 -0
- package/dist/components/zonos-checkout.js +5 -1
- package/dist/components/zonos-controller.js +47 -1
- package/dist/components/zonos-hello-dialog2.js +15 -7
- package/dist/components/zonos-shipping-rich-radio2.js +1 -1
- package/dist/components/zonos-shipping2.js +4 -5
- package/dist/esm/{cart-07091d2a.js → cart-17650017.js} +12 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/{localization-b3c2a9a9.js → localization-f3828793.js} +40 -13
- package/dist/esm/{submitGtag-c0b655ad.js → submitGtag-a901ece5.js} +1 -1
- package/dist/esm/zonos-address_2.entry.js +7 -2
- package/dist/esm/zonos-cart-items_10.entry.js +6 -7
- package/dist/esm/zonos-checkout.entry.js +8 -4
- package/dist/esm/zonos-controller.entry.js +49 -3
- package/dist/esm/zonos-country-flag_4.entry.js +1 -1
- package/dist/esm/zonos-hello-dialog.entry.js +15 -7
- package/dist/esm/zonos-hello.entry.js +1 -1
- package/dist/esm/zonos-payment.entry.js +2 -2
- package/dist/esm/zonos-shipping-rich-radio.entry.js +1 -1
- package/dist/esm-es5/cart-17650017.js +1 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{localization-b3c2a9a9.js → localization-f3828793.js} +1 -1
- package/dist/esm-es5/{submitGtag-c0b655ad.js → submitGtag-a901ece5.js} +1 -1
- package/dist/esm-es5/zonos-address_2.entry.js +1 -1
- package/dist/esm-es5/zonos-cart-items_10.entry.js +1 -1
- package/dist/esm-es5/zonos-checkout.entry.js +1 -1
- package/dist/esm-es5/zonos-controller.entry.js +1 -1
- package/dist/esm-es5/zonos-country-flag_4.entry.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-payment.entry.js +1 -1
- package/dist/esm-es5/zonos-shipping-rich-radio.entry.js +1 -1
- package/dist/scripts/loadZonos.js +86 -5
- package/dist/scripts/zonos.js +86 -5
- package/dist/types/components/main/zonos-controller.d.ts +1 -0
- package/dist/types/components/store/checkout/stripe.d.ts +2 -1
- package/dist/types/components/store/hello/localization.d.ts +2 -0
- package/dist/types/components/utils/api/getExchangeRate.d.ts +9 -3
- package/dist/types/components/utils/changeDeepProperty.d.ts +1 -1
- package/dist/types/components/utils/changeDeepPropertyAtIndex.d.ts +1 -1
- package/dist/types/components/utils/checkout/initCheckout.d.ts +1 -1
- package/dist/types/environment.d.ts +6 -1
- package/dist/types/scripts/zonos.d.ts +3 -0
- package/dist/types/types/generated/graphql.customer.types.d.ts +1 -0
- package/dist/types/types/generated/graphql.customer.types.ts +1 -0
- package/dist/zonos-elements/assets/RemoveIcon.svg +1 -1
- package/dist/zonos-elements/index.esm.js +1 -1
- package/dist/zonos-elements/p-0ed3bb9f.system.entry.js +1 -0
- package/dist/zonos-elements/{p-42ba069d.system.js → p-164fae93.system.js} +1 -1
- package/dist/zonos-elements/{p-9b86e655.system.entry.js → p-224125da.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-9dc9cbc8.entry.js → p-28681677.entry.js} +1 -1
- package/dist/zonos-elements/p-3a56c240.entry.js +1 -0
- package/dist/zonos-elements/p-3f3fbcea.entry.js +1 -0
- package/dist/zonos-elements/{p-bb36a9f8.js → p-770c959e.js} +1 -1
- package/dist/zonos-elements/p-8378d94e.js +1 -0
- package/dist/zonos-elements/{p-37db3842.system.entry.js → p-84b00605.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-f23749e4.system.js → p-8aabbb9b.system.js} +1 -1
- package/dist/zonos-elements/p-8b415737.system.entry.js +1 -0
- package/dist/zonos-elements/{p-98105ede.entry.js → p-9202375f.entry.js} +1 -1
- package/dist/zonos-elements/p-a1fa50fb.entry.js +1 -0
- package/dist/zonos-elements/{p-a20b97e9.system.entry.js → p-aca66238.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-87f324c5.entry.js → p-bc2c42f5.entry.js} +1 -1
- package/dist/zonos-elements/{p-c28157ec.system.entry.js → p-c8ad044e.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-343071d5.entry.js → p-cc070c1c.entry.js} +1 -1
- package/dist/zonos-elements/{p-4524a84f.system.entry.js → p-cc1c785c.system.entry.js} +1 -1
- package/dist/zonos-elements/p-cd71e41e.entry.js +1 -0
- package/dist/zonos-elements/{p-0f7233fd.system.entry.js → p-cf97cc68.system.entry.js} +1 -1
- package/dist/zonos-elements/p-d6b8563b.system.entry.js +1 -0
- package/dist/zonos-elements/{p-96a3c767.entry.js → p-e5908de2.entry.js} +1 -1
- package/dist/zonos-elements/p-f6add79c.system.js +1 -0
- package/dist/zonos-elements/{p-6df1eaee.js → p-f7875c40.js} +1 -1
- package/dist/zonos-elements/p-f8491335.system.js +1 -1
- package/dist/zonos-elements/{p-b64bbf38.system.js → p-f95ac9ec.system.js} +1 -1
- package/dist/zonos-elements/zonos-elements.esm.js +1 -1
- package/package.json +3 -3
- package/dist/esm-es5/cart-07091d2a.js +0 -1
- package/dist/zonos-elements/p-0a788f68.entry.js +0 -1
- package/dist/zonos-elements/p-23b0b4a2.system.entry.js +0 -1
- package/dist/zonos-elements/p-2c20c082.entry.js +0 -1
- package/dist/zonos-elements/p-30fd29fb.js +0 -1
- package/dist/zonos-elements/p-37fc9f6b.entry.js +0 -1
- package/dist/zonos-elements/p-79f9e330.system.js +0 -1
- package/dist/zonos-elements/p-914ce305.system.entry.js +0 -1
- package/dist/zonos-elements/p-9adf546f.system.entry.js +0 -1
- package/dist/zonos-elements/p-d43749bd.entry.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const zonosStore = require('./zonosStore-a430ec5b.js');
|
|
4
|
-
const localization = require('./localization-
|
|
4
|
+
const localization = require('./localization-d7fe7290.js');
|
|
5
5
|
const isDarkColor = require('./isDarkColor-f3446afd.js');
|
|
6
6
|
const getBorderRadius = require('./getBorderRadius-fdd605c6.js');
|
|
7
7
|
|
|
@@ -92,6 +92,7 @@ const { onChange: onChange$1, reset: reset$1, state: stripeStore, } = zonosStore
|
|
|
92
92
|
stripeAddressEventData: null,
|
|
93
93
|
stripeAddressUsedWhenFetchingLC: null,
|
|
94
94
|
stripeElements: null,
|
|
95
|
+
stripeElementsOptions: null,
|
|
95
96
|
stripeLinkElement: null,
|
|
96
97
|
stripeLinkEventData: null,
|
|
97
98
|
stripeLinkUsedWhenFetchingLC: null,
|
|
@@ -132,13 +133,22 @@ const initStripeElements = async (props) => {
|
|
|
132
133
|
overridePrimaryColor: props === null || props === void 0 ? void 0 : props.overridePrimaryColor,
|
|
133
134
|
overrideTheme: props === null || props === void 0 ? void 0 : props.overrideTheme,
|
|
134
135
|
});
|
|
136
|
+
// compare with the previous options to see if we need to update
|
|
137
|
+
const isSameOptions = JSON.stringify(stripeOptions) ===
|
|
138
|
+
JSON.stringify(stripeStore.stripeElementsOptions);
|
|
135
139
|
if (!stripeStore.stripeElements) {
|
|
136
140
|
// init stripe elements if it doesn't exist
|
|
137
141
|
stripeStore.stripeElements = (_a = stripeStore.stripe) === null || _a === void 0 ? void 0 : _a.elements(stripeOptions);
|
|
142
|
+
// save stripe elements options for later comparison
|
|
143
|
+
stripeStore.stripeElementsOptions = stripeOptions;
|
|
144
|
+
localization.log('Stripe elements initialized');
|
|
145
|
+
return;
|
|
138
146
|
}
|
|
139
|
-
|
|
147
|
+
if (!isSameOptions) {
|
|
140
148
|
// update elements with new option if it already exists
|
|
141
149
|
stripeStore.stripeElements.update(stripeOptions);
|
|
150
|
+
// save stripe elements options for later comparison
|
|
151
|
+
stripeStore.stripeElementsOptions = stripeOptions;
|
|
142
152
|
}
|
|
143
153
|
localization.log('Stripe elements initialized');
|
|
144
154
|
}
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const cart = require('./cart-
|
|
5
|
+
const cart = require('./cart-55512e32.js');
|
|
6
6
|
require('./zonosStore-a430ec5b.js');
|
|
7
7
|
require('./index-9542d2e7.js');
|
|
8
|
-
require('./localization-
|
|
8
|
+
require('./localization-d7fe7290.js');
|
|
9
9
|
require('./isDarkColor-f3446afd.js');
|
|
10
10
|
require('./getBorderRadius-fdd605c6.js');
|
|
11
11
|
|
|
@@ -3198,18 +3198,23 @@ const getCountryLandedCost = async (countryCode) => {
|
|
|
3198
3198
|
|
|
3199
3199
|
const getExchangeRate = async ({ country, isGuaranteed, sourceCurrency, targetCurrency, }) => {
|
|
3200
3200
|
var _a;
|
|
3201
|
+
// If source currency matches target currency (US -> US) and is not a guaranteed rate, return null
|
|
3202
|
+
if (sourceCurrency === targetCurrency && !isGuaranteed) {
|
|
3203
|
+
return { exchangeRate: null, maxAge: null };
|
|
3204
|
+
}
|
|
3201
3205
|
const url = `${"https://v1.route.js.zonos.com"}/api/exchange-rates?sourceCurrency=${sourceCurrency}&targetCurrency=${targetCurrency}&isGuaranteed=${isGuaranteed}&country=${country}}`;
|
|
3202
3206
|
const { errors, json } = await handleFetch(url);
|
|
3203
3207
|
if (errors.length || !json) {
|
|
3204
3208
|
logError(`Error fetching country landed cost: ${(_a = errors.find(Boolean)) === null || _a === void 0 ? void 0 : _a.message}`);
|
|
3205
|
-
return null;
|
|
3209
|
+
return { exchangeRate: null, maxAge: null };
|
|
3206
3210
|
}
|
|
3207
|
-
const { rate, targetFormat } = json.exchangeRateCreate;
|
|
3211
|
+
const { maxAge, rate, targetFormat } = json.exchangeRateCreate;
|
|
3208
3212
|
if (rate) {
|
|
3209
3213
|
sessionStorage.setItem(country + '_rate', JSON.stringify(rate));
|
|
3210
|
-
|
|
3214
|
+
const exchangeRate = { rate, targetFormat };
|
|
3215
|
+
return { exchangeRate, maxAge };
|
|
3211
3216
|
}
|
|
3212
|
-
return null;
|
|
3217
|
+
return { exchangeRate: null, maxAge: null };
|
|
3213
3218
|
};
|
|
3214
3219
|
|
|
3215
3220
|
const getLocaleMessages = async ({ countryCode, localeTo, storeId, }) => {
|
|
@@ -3467,23 +3472,45 @@ const { state: localizationStore } = zonosStore.createStore({
|
|
|
3467
3472
|
shippingZoneCountries: null,
|
|
3468
3473
|
targetCurrency: 'USD',
|
|
3469
3474
|
});
|
|
3475
|
+
const triggerGetExchangeRate = async (isGuaranteed) => {
|
|
3476
|
+
const { exchangeRate, maxAge } = await getExchangeRate({
|
|
3477
|
+
country: localizationStore.selectedCountryCode,
|
|
3478
|
+
isGuaranteed,
|
|
3479
|
+
sourceCurrency: zonosStore.zonosStore.sourceCurrency,
|
|
3480
|
+
targetCurrency: localizationStore.targetCurrency,
|
|
3481
|
+
});
|
|
3482
|
+
if (exchangeRate) {
|
|
3483
|
+
localizationStore.exchangeRate = exchangeRate;
|
|
3484
|
+
currencyDisplay();
|
|
3485
|
+
}
|
|
3486
|
+
return { maxAge };
|
|
3487
|
+
};
|
|
3488
|
+
// This recursive function is for users who step away from their computer and come back needing a new exchange rate
|
|
3489
|
+
const startExchangeRateTimeout = ({ isGuaranteed, maxAge, }) => {
|
|
3490
|
+
if (localizationStore.exchangeRateTimeout) {
|
|
3491
|
+
clearTimeout(localizationStore.exchangeRateTimeout);
|
|
3492
|
+
}
|
|
3493
|
+
// maxAge comes in seconds, convert to milliseconds
|
|
3494
|
+
const defaultMaxAge = 5 * 60;
|
|
3495
|
+
const maxAgeToUse = maxAge || defaultMaxAge;
|
|
3496
|
+
// Recursively set timeouts to get new exchange rates when the current one expires
|
|
3497
|
+
localizationStore.exchangeRateTimeout = setTimeout(async () => {
|
|
3498
|
+
const { maxAge: newMaxAge } = await triggerGetExchangeRate(isGuaranteed);
|
|
3499
|
+
startExchangeRateTimeout({ isGuaranteed, maxAge: newMaxAge });
|
|
3500
|
+
}, maxAgeToUse * 1000);
|
|
3501
|
+
};
|
|
3470
3502
|
const getNewLocalization = async () => {
|
|
3471
3503
|
log('get new localization store');
|
|
3472
3504
|
const { isShippableCountry, selectedCountryCode } = localizationStore;
|
|
3473
|
-
const isGuaranteed = zonosStore.zonosStore.checkoutSettings.visibilityStatus === 'ENABLED';
|
|
3474
3505
|
if (zonosStore.zonosStore.helloSettings.currencyBehavior === 'DISABLED' ||
|
|
3475
3506
|
!isShippableCountry ||
|
|
3476
3507
|
!selectedCountryCode) {
|
|
3477
3508
|
return;
|
|
3478
3509
|
}
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
isGuaranteed
|
|
3482
|
-
|
|
3483
|
-
targetCurrency: localizationStore.targetCurrency,
|
|
3484
|
-
});
|
|
3485
|
-
if (localizationStore.exchangeRate) {
|
|
3486
|
-
currencyDisplay();
|
|
3510
|
+
if (zonosStore.zonosStore.sourceCurrency !== localizationStore.targetCurrency) {
|
|
3511
|
+
const isGuaranteed = zonosStore.zonosStore.checkoutSettings.visibilityStatus === 'ENABLED';
|
|
3512
|
+
const { maxAge } = await triggerGetExchangeRate(isGuaranteed);
|
|
3513
|
+
startExchangeRateTimeout({ isGuaranteed, maxAge });
|
|
3487
3514
|
}
|
|
3488
3515
|
localizationStore.countryLandedCost = await getCountryLandedCost(localizationStore.selectedCountryCode);
|
|
3489
3516
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const zonosStore = require('./zonosStore-a430ec5b.js');
|
|
4
|
-
const localization = require('./localization-
|
|
4
|
+
const localization = require('./localization-d7fe7290.js');
|
|
5
5
|
|
|
6
6
|
const checkoutBreakpoint = 890;
|
|
7
7
|
const isCheckoutMobile = (isMobile) => {
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-9542d2e7.js');
|
|
6
|
-
const cart = require('./cart-
|
|
7
|
-
const localization = require('./localization-
|
|
6
|
+
const cart = require('./cart-55512e32.js');
|
|
7
|
+
const localization = require('./localization-d7fe7290.js');
|
|
8
8
|
require('./zonosStore-a430ec5b.js');
|
|
9
9
|
require('./isDarkColor-f3446afd.js');
|
|
10
10
|
require('./getBorderRadius-fdd605c6.js');
|
|
@@ -39,6 +39,11 @@ const ZonosAddress = class {
|
|
|
39
39
|
? Object.values(shippableCountries).map(country => country.code)
|
|
40
40
|
: [],
|
|
41
41
|
contacts: this.defaultAddress ? [this.defaultAddress] : undefined,
|
|
42
|
+
defaultValues: {
|
|
43
|
+
address: {
|
|
44
|
+
country: localization.localizationStore.selectedCountryCode || 'AL',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
42
47
|
display: {
|
|
43
48
|
name: 'split',
|
|
44
49
|
},
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-9542d2e7.js');
|
|
6
|
-
const cart = require('./cart-
|
|
7
|
-
const localization = require('./localization-
|
|
6
|
+
const cart = require('./cart-55512e32.js');
|
|
7
|
+
const localization = require('./localization-d7fe7290.js');
|
|
8
8
|
const getBorderRadius = require('./getBorderRadius-fdd605c6.js');
|
|
9
|
-
const submitGtag = require('./submitGtag-
|
|
9
|
+
const submitGtag = require('./submitGtag-d65003f9.js');
|
|
10
10
|
const classes = require('./classes-b7918f56.js');
|
|
11
11
|
const zonosStore = require('./zonosStore-a430ec5b.js');
|
|
12
12
|
require('./isDarkColor-f3446afd.js');
|
|
@@ -468,9 +468,8 @@ const ZonosShipping = class {
|
|
|
468
468
|
}
|
|
469
469
|
}
|
|
470
470
|
render() {
|
|
471
|
-
var _a
|
|
472
|
-
const
|
|
473
|
-
const serviceLevels = (_b = cart.cartStore.shippingData) === null || _b === void 0 ? void 0 : _b.flatMap((item) => {
|
|
471
|
+
var _a;
|
|
472
|
+
const serviceLevels = (_a = cart.cartStore.shippingData) === null || _a === void 0 ? void 0 : _a.flatMap((item) => {
|
|
474
473
|
var _a, _b;
|
|
475
474
|
const { expectedDate, maxTransit, minTransit } = cart.cartStoreGetShippingTransitInfo(item);
|
|
476
475
|
const sublabel = expectedDate
|
|
@@ -491,7 +490,7 @@ const ZonosShipping = class {
|
|
|
491
490
|
value: item.id,
|
|
492
491
|
};
|
|
493
492
|
});
|
|
494
|
-
return (index.h(index.Host, { class: "zonos--shipping zonos--elements" }, index.h("div", { class: "zonos--group" }, index.h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, localization.translate('Shipping information')), index.h("zonos-text", { class: "zonos--shipping-method-title", type: "semiBoldLabel" }, localization.translate('Shipping method')), !(serviceLevels === null || serviceLevels === void 0 ? void 0 : serviceLevels.length) ? (index.h("zonos-banner", { bannerTitle: "No shipping methods found - try editing your address or contacting support if the error persists", intent: "error" })) : (index.h("zonos-shipping-rich-radio", { items: serviceLevels || [], onRadioSelected: e => this.handleRadioSelected(e) }))
|
|
493
|
+
return (index.h(index.Host, { class: "zonos--shipping zonos--elements" }, index.h("div", { class: "zonos--group" }, index.h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, localization.translate('Shipping information')), index.h("zonos-text", { class: "zonos--shipping-method-title", type: "semiBoldLabel" }, localization.translate('Shipping method')), !(serviceLevels === null || serviceLevels === void 0 ? void 0 : serviceLevels.length) ? (index.h("zonos-banner", { bannerTitle: "No shipping methods found - try editing your address or contacting support if the error persists", intent: "error" })) : (index.h("zonos-shipping-rich-radio", { items: serviceLevels || [], onRadioSelected: e => this.handleRadioSelected(e) }))), index.h("zonos-button", { backgroundColor: this.submitBtnColor, "is-disabled": this.disabled, loading: this.continueLoading, onClick: () => this.continueClickHandler(), size: "lg",
|
|
495
494
|
// use primary type when on mobile mode
|
|
496
495
|
variant: this.submitBtnType }, localization.translate('Go to payment'))));
|
|
497
496
|
}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-9542d2e7.js');
|
|
6
|
-
const cart = require('./cart-
|
|
7
|
-
const localization = require('./localization-
|
|
6
|
+
const cart = require('./cart-55512e32.js');
|
|
7
|
+
const localization = require('./localization-d7fe7290.js');
|
|
8
8
|
const zonosStore = require('./zonosStore-a430ec5b.js');
|
|
9
|
-
const submitGtag = require('./submitGtag-
|
|
9
|
+
const submitGtag = require('./submitGtag-d65003f9.js');
|
|
10
10
|
const classes = require('./classes-b7918f56.js');
|
|
11
11
|
const getBorderRadius = require('./getBorderRadius-fdd605c6.js');
|
|
12
12
|
const isDarkColor = require('./isDarkColor-f3446afd.js');
|
|
@@ -20,7 +20,7 @@ const MessageIcon = `<svg width="18" height="18" viewBox="0 0 18 18" fill="none"
|
|
|
20
20
|
|
|
21
21
|
const RemoveIcon = `<svg color="var(--amino-gray-800)" fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="https://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z" data-is-secondary-color="true" fill="var(--amino-gray-200)" fill-rule="evenodd"></path><path clip-rule="evenodd" d="M8.293 8.293a1 1 0 0 1 1.414 0L12 10.586l2.293-2.293a1 1 0 1 1 1.414 1.414L13.414 12l2.293 2.293a1 1 0 0 1-1.414 1.414L12 13.414l-2.293 2.293a1 1 0 0 1-1.414-1.414L10.586 12 8.293 9.707a1 1 0 0 1 0-1.414Z" fill="currentColor" fill-rule="evenodd"></path></svg>`;
|
|
22
22
|
|
|
23
|
-
const zonosCheckoutCss = ".sc-zonos-checkout-h{font-family:Inter;display:block}.sc-zonos-checkout-h img.sc-zonos-checkout{max-width:100%}.sc-zonos-checkout-h dl.sc-zonos-checkout,.sc-zonos-checkout-h dd.sc-zonos-checkout,.sc-zonos-checkout-h h1.sc-zonos-checkout,.sc-zonos-checkout-h h2.sc-zonos-checkout,.sc-zonos-checkout-h h3.sc-zonos-checkout,.sc-zonos-checkout-h h4.sc-zonos-checkout,.sc-zonos-checkout-h h5.sc-zonos-checkout,.sc-zonos-checkout-h h6.sc-zonos-checkout,.sc-zonos-checkout-h hr.sc-zonos-checkout,.sc-zonos-checkout-h figure.sc-zonos-checkout,.sc-zonos-checkout-h p.sc-zonos-checkout,.sc-zonos-checkout-h pre.sc-zonos-checkout{margin:0}.sc-zonos-checkout-h{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar{width:10px}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-track{background:var(--amino-gray-50)}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-thumb{border-radius:10px;background:#cccccc;border:3px solid transparent;background-clip:content-box}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-thumb:hover{background:#d6d6d6}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{display:-ms-flexbox;display:flex;height:100%;overflow:hidden;border-radius:var(--border-radius, var(--amino-radius-10))}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout,.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{-ms-flex:1;flex:1;padding:var(--amino-space-48) var(--amino-space-56)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout{background-color:var(--primary-color, var(--amino-gray-0));border-right:1px solid var(--amino-gray-200)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{background-color:var(--amino-gray-0);padding-bottom:var(--amino-space-80)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{width:100%;max-height:100%;height:100%;overflow:auto;-ms-flex-direction:column;flex-direction:column;background-color:var(--amino-gray-0);-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:var(--amino-space-24);padding-bottom:50px}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--header.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;width:100%}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--header.sc-zonos-checkout img.sc-zonos-checkout{width:150px;min-width:150px}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--logo.sc-zonos-checkout{margin-bottom:0}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout zonos-checkout-finish.sc-zonos-checkout{-ms-flex:1;flex:1}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--back-button.sc-zonos-checkout{margin-bottom:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{padding:0 var(--amino-space-8) var(--amino-space-8)}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--payment-error-banner.sc-zonos-checkout{margin-top:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--right.sc-zonos-checkout{position:relative}.sc-zonos-checkout-h .zonos--right.sc-zonos-checkout .zonos--close-button.sc-zonos-checkout{position:absolute;right:var(--amino-space-
|
|
23
|
+
const zonosCheckoutCss = ".sc-zonos-checkout-h{font-family:Inter;display:block}.sc-zonos-checkout-h img.sc-zonos-checkout{max-width:100%}.sc-zonos-checkout-h dl.sc-zonos-checkout,.sc-zonos-checkout-h dd.sc-zonos-checkout,.sc-zonos-checkout-h h1.sc-zonos-checkout,.sc-zonos-checkout-h h2.sc-zonos-checkout,.sc-zonos-checkout-h h3.sc-zonos-checkout,.sc-zonos-checkout-h h4.sc-zonos-checkout,.sc-zonos-checkout-h h5.sc-zonos-checkout,.sc-zonos-checkout-h h6.sc-zonos-checkout,.sc-zonos-checkout-h hr.sc-zonos-checkout,.sc-zonos-checkout-h figure.sc-zonos-checkout,.sc-zonos-checkout-h p.sc-zonos-checkout,.sc-zonos-checkout-h pre.sc-zonos-checkout{margin:0}.sc-zonos-checkout-h{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar{width:10px}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-track{background:var(--amino-gray-50)}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-thumb{border-radius:10px;background:#cccccc;border:3px solid transparent;background-clip:content-box}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-thumb:hover{background:#d6d6d6}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{display:-ms-flexbox;display:flex;height:100%;overflow:hidden;border-radius:var(--border-radius, var(--amino-radius-10))}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout,.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{-ms-flex:1;flex:1;padding:var(--amino-space-48) var(--amino-space-56)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout{background-color:var(--primary-color, var(--amino-gray-0));border-right:1px solid var(--amino-gray-200)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{background-color:var(--amino-gray-0);padding-bottom:var(--amino-space-80)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{width:100%;max-height:100%;height:100%;overflow:auto;-ms-flex-direction:column;flex-direction:column;background-color:var(--amino-gray-0);-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:var(--amino-space-24);padding-bottom:50px}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--header.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;width:100%}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--header.sc-zonos-checkout img.sc-zonos-checkout{width:150px;min-width:150px}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--logo.sc-zonos-checkout{margin-bottom:0}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout zonos-checkout-finish.sc-zonos-checkout{-ms-flex:1;flex:1}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--back-button.sc-zonos-checkout{margin-bottom:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{padding:0 var(--amino-space-8) var(--amino-space-8)}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--payment-error-banner.sc-zonos-checkout{margin-top:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--right.sc-zonos-checkout{position:relative}.sc-zonos-checkout-h .zonos--right.sc-zonos-checkout .zonos--close-button.sc-zonos-checkout{position:absolute;right:var(--amino-space-24);top:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--footer.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;-ms-flex-align:center;align-items:center;position:absolute;bottom:var(--amino-space-32);right:var(--amino-space-56);gap:var(--amino-space-8)}.sc-zonos-checkout-h .zonos--wrapper.sc-zonos-checkout{overflow:auto;max-height:100%;position:relative}.sc-zonos-checkout-h .flex--wrapper.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:100%}.sc-zonos-checkout-h .zonos--logo.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.sc-zonos-checkout-h .zonos--checkout-default-message.sc-zonos-checkout{margin-left:var(--amino-space-76);margin-bottom:var(--amino-space-8)}.preview.sc-zonos-checkout-h{min-width:500px;margin:auto}.preview.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{border:var(--amino-border)}.preview.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{padding:var(--amino-space-32)}.mobile.sc-zonos-checkout-h{min-width:auto}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:auto;border-radius:0;max-height:100%;height:100%;border:0}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout,.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{padding:var(--amino-space-12)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout{-ms-flex-order:2;order:2}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{-ms-flex-order:1;order:1;padding-top:var(--amino-space-16)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--amino-space-16);margin-top:var(--amino-space-24);border:var(--amino-border);border-radius:var(--border-radius, var(--amino-radius-10));background-color:var(--amino-gray-50);padding:var(--amino-space-12);margin-top:var(--amino-space-32)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{max-height:100%}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--footer.sc-zonos-checkout{-ms-flex-order:3;order:3}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{width:auto}.mobile.sc-zonos-checkout-h .zonos--cart-subtotal.sc-zonos-checkout{margin:0}.mobile.sc-zonos-checkout-h .zonos--footer.sc-zonos-checkout{bottom:0;left:0;padding:var(--amino-space-12);position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background-color:var(--amino-gray-0)}";
|
|
24
24
|
|
|
25
25
|
const ZonosCheckout = class {
|
|
26
26
|
constructor(hostRef) {
|
|
@@ -135,6 +135,8 @@ const ZonosCheckout = class {
|
|
|
135
135
|
e.preventDefault();
|
|
136
136
|
e.stopPropagation();
|
|
137
137
|
localization.log('zonos checkout button clicked');
|
|
138
|
+
// start loading
|
|
139
|
+
cart.stripeStore.isFetchingSession = true;
|
|
138
140
|
this.open = true;
|
|
139
141
|
try {
|
|
140
142
|
// buildCartDetail need to be catch since it may throw error
|
|
@@ -145,6 +147,8 @@ const ZonosCheckout = class {
|
|
|
145
147
|
submitGtag.submitGtag('zonos-checkout-start');
|
|
146
148
|
}
|
|
147
149
|
catch (err) {
|
|
150
|
+
// stop loading
|
|
151
|
+
cart.stripeStore.isFetchingSession = false;
|
|
148
152
|
cart.cartStoreUpdateToErrorState({
|
|
149
153
|
messages: [
|
|
150
154
|
localization.translate("There's been an error creating your checkout session. Please reload and try again or contact support if the error persists"),
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-9542d2e7.js');
|
|
6
|
-
const cart = require('./cart-
|
|
7
|
-
const localization = require('./localization-
|
|
6
|
+
const cart = require('./cart-55512e32.js');
|
|
7
|
+
const localization = require('./localization-d7fe7290.js');
|
|
8
8
|
const zonosStore = require('./zonosStore-a430ec5b.js');
|
|
9
9
|
require('./isDarkColor-f3446afd.js');
|
|
10
10
|
require('./getBorderRadius-fdd605c6.js');
|
|
@@ -27,7 +27,7 @@ const injectCheckoutElement = () => {
|
|
|
27
27
|
document.body.appendChild(newCheckoutElement);
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
|
-
const initCheckout =
|
|
30
|
+
const initCheckout = (config) => {
|
|
31
31
|
if (!config.placeOrderButtonSelector) {
|
|
32
32
|
// do nothing if checkout button anchor is not set
|
|
33
33
|
return;
|
|
@@ -66,6 +66,44 @@ const ZonosController = class {
|
|
|
66
66
|
constructor(hostRef) {
|
|
67
67
|
index.registerInstance(this, hostRef);
|
|
68
68
|
this.stripeInitEvent = index.createEvent(this, "stripeInitEvent", 7);
|
|
69
|
+
this.disablePlaceOrderButtons = ({ disable }) => {
|
|
70
|
+
const placeOrderButtonSelector = zonosStore.zonosStore.checkoutSettings.placeOrderButtonSelector;
|
|
71
|
+
if (!placeOrderButtonSelector) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const disableEvent = (e) => {
|
|
75
|
+
const target = e.target;
|
|
76
|
+
// prevent default and propagation when the item has disabled attribute
|
|
77
|
+
if (target.getAttribute('disabled')) {
|
|
78
|
+
e.preventDefault();
|
|
79
|
+
e.stopPropagation();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const placeOrderButton = document.querySelectorAll(placeOrderButtonSelector);
|
|
83
|
+
placeOrderButton.forEach(button => {
|
|
84
|
+
if (disable) {
|
|
85
|
+
button.setAttribute('disabled', 'true');
|
|
86
|
+
// prevent the selector to perform default action when it's disabled
|
|
87
|
+
button.addEventListener('click', disableEvent);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
button.removeAttribute('disabled');
|
|
91
|
+
// clean up the event listener
|
|
92
|
+
button.removeEventListener('click', disableEvent);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
// only auto enable if autoEnable is true and the state is enable
|
|
96
|
+
if (disable) {
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
// release it if zonos is not initialized after 5 seconds (this is to prevent the place order button from being disabled forever due to api)
|
|
99
|
+
placeOrderButton.forEach(button => {
|
|
100
|
+
button.removeAttribute('disabled');
|
|
101
|
+
// clean up the event listener if exists
|
|
102
|
+
button.removeEventListener('click', disableEvent);
|
|
103
|
+
});
|
|
104
|
+
}, 5000);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
69
107
|
this.config = undefined;
|
|
70
108
|
this.zonosApiKey = undefined;
|
|
71
109
|
}
|
|
@@ -81,6 +119,10 @@ const ZonosController = class {
|
|
|
81
119
|
cart.stripeStore.stripe = stripe;
|
|
82
120
|
void initCheckout(zonosStore.zonosStore.checkoutSettings);
|
|
83
121
|
localization.log('init checkout element');
|
|
122
|
+
// enable place order button after checkout is loaded
|
|
123
|
+
this.disablePlaceOrderButtons({
|
|
124
|
+
disable: false,
|
|
125
|
+
});
|
|
84
126
|
}
|
|
85
127
|
/**
|
|
86
128
|
* Init zonos notification
|
|
@@ -103,6 +145,10 @@ const ZonosController = class {
|
|
|
103
145
|
localization.log('Failed to load zonos settings. This domain may not have access', 'warn');
|
|
104
146
|
return;
|
|
105
147
|
}
|
|
148
|
+
// disable place order button until checkout is loaded
|
|
149
|
+
this.disablePlaceOrderButtons({
|
|
150
|
+
disable: true,
|
|
151
|
+
});
|
|
106
152
|
// init zonos notification
|
|
107
153
|
this.initZonosNotification();
|
|
108
154
|
// load default setting if fail to load user setting
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-9542d2e7.js');
|
|
6
|
-
const localization = require('./localization-
|
|
6
|
+
const localization = require('./localization-d7fe7290.js');
|
|
7
7
|
const classes = require('./classes-b7918f56.js');
|
|
8
8
|
const isDarkColor = require('./isDarkColor-f3446afd.js');
|
|
9
9
|
require('./zonosStore-a430ec5b.js');
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-9542d2e7.js');
|
|
6
|
-
const localization = require('./localization-
|
|
6
|
+
const localization = require('./localization-d7fe7290.js');
|
|
7
7
|
const zonosStore = require('./zonosStore-a430ec5b.js');
|
|
8
8
|
const classes = require('./classes-b7918f56.js');
|
|
9
9
|
const getHasMoreSpaceOnRight = require('./getHasMoreSpaceOnRight-2855491b.js');
|
|
@@ -82,18 +82,26 @@ const ZonosHelloDialog = class {
|
|
|
82
82
|
const { countryLandedCost, selectedCountryCode } = localization.localizationStore;
|
|
83
83
|
// Our Robby API spells deminimis wrong here
|
|
84
84
|
const dutyDeminimis = (countryLandedCost === null || countryLandedCost === void 0 ? void 0 : countryLandedCost.dutyDeminimus)
|
|
85
|
-
? localization.
|
|
85
|
+
? localization.currencyFormat(countryLandedCost.dutyDeminimus)
|
|
86
86
|
: null;
|
|
87
|
+
// If Canada, use 40 CAD (courier duty de minimis)
|
|
88
|
+
const dutyDeminimisToUse = localization.localizationStore.selectedCountryCode === 'CA'
|
|
89
|
+
? localization.currencyFormat(40)
|
|
90
|
+
: dutyDeminimis;
|
|
87
91
|
// If deminimis is undefined or null, assume it's $0
|
|
88
|
-
const dutyDeMinimisMessage =
|
|
89
|
-
? `${localization.translate('Spend')} ${
|
|
92
|
+
const dutyDeMinimisMessage = dutyDeminimisToUse
|
|
93
|
+
? `${localization.translate('Spend')} ${dutyDeminimisToUse} ${localization.translate('duty free')}`
|
|
90
94
|
: localization.translate('Duties will apply to all orders');
|
|
91
95
|
// Our Robby API spells deminimis wrong here
|
|
92
96
|
const taxDeminimis = (countryLandedCost === null || countryLandedCost === void 0 ? void 0 : countryLandedCost.vatTaxDeminimus)
|
|
93
|
-
? localization.
|
|
97
|
+
? localization.currencyFormat(countryLandedCost.vatTaxDeminimus)
|
|
94
98
|
: null;
|
|
95
|
-
|
|
96
|
-
|
|
99
|
+
// If Canada, use 150 CAD (courier tax de minimis)
|
|
100
|
+
const taxDeminimisToUse = localization.localizationStore.selectedCountryCode === 'CA'
|
|
101
|
+
? localization.currencyFormat(150)
|
|
102
|
+
: taxDeminimis;
|
|
103
|
+
const taxDeMinimisMessage = taxDeminimisToUse
|
|
104
|
+
? `${localization.translate('Spend')} ${taxDeminimisToUse} ${localization.translate('tax free')}`
|
|
97
105
|
: localization.translate('Taxes will apply to all orders');
|
|
98
106
|
const animateLeft = this.animateFromLeftOverride ||
|
|
99
107
|
(this.dialogRef && getHasMoreSpaceOnRight.getHasMoreSpaceOnRight(this.dialogRef));
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
const index = require('./index-9542d2e7.js');
|
|
6
6
|
const zonosStore = require('./zonosStore-a430ec5b.js');
|
|
7
|
-
const localization = require('./localization-
|
|
7
|
+
const localization = require('./localization-d7fe7290.js');
|
|
8
8
|
const classes = require('./classes-b7918f56.js');
|
|
9
9
|
const getHasMoreSpaceOnRight = require('./getHasMoreSpaceOnRight-2855491b.js');
|
|
10
10
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-9542d2e7.js');
|
|
6
|
-
const cart = require('./cart-
|
|
6
|
+
const cart = require('./cart-55512e32.js');
|
|
7
7
|
require('./zonosStore-a430ec5b.js');
|
|
8
|
-
require('./localization-
|
|
8
|
+
require('./localization-d7fe7290.js');
|
|
9
9
|
require('./isDarkColor-f3446afd.js');
|
|
10
10
|
require('./getBorderRadius-fdd605c6.js');
|
|
11
11
|
|
|
@@ -8,7 +8,7 @@ const classes = require('./classes-b7918f56.js');
|
|
|
8
8
|
const getBorderRadius = require('./getBorderRadius-fdd605c6.js');
|
|
9
9
|
const isColorVariable = require('./isColorVariable-c1ed7303.js');
|
|
10
10
|
|
|
11
|
-
const zonosShippingRichRadioCss = ":host{font-family:Inter;display:block}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host input{margin:0;accent-color:var(--selected-border-color, var(--amino-blue-600))}:host .zonos--shipping-rich-radio-item{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding:var(--amino-space-16);-ms-flex-align:center;align-items:center;gap:var(--amino-space-16);cursor:pointer;border:1px solid var(--amino-gray-200)}:host .zonos--shipping-rich-radio-item:first-child{border-top-left-radius:var(--border-radius, var(--amino-radius-10));border-top-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:last-child{border-bottom-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:not(:last-child){border-bottom:none}:host .zonos--shipping-rich-radio-item.selected{outline:1px solid var(--selected-border-color, var(--amino-blue-600));outline-offset:-1px}:host .zonos--shipping-info{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex:1;flex:1}:host .zonos--shipping-detail{-ms-flex:1;flex:1}:host .zonos--sub-detail{display:-ms-inline-flexbox;display:inline-flex;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}";
|
|
11
|
+
const zonosShippingRichRadioCss = ":host{font-family:Inter;display:block}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host input{margin:0;accent-color:var(--selected-border-color, var(--amino-blue-600))}:host .zonos--shipping-rich-radio-item{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding:var(--amino-space-16);-ms-flex-align:center;align-items:center;gap:var(--amino-space-16);cursor:pointer;border:1px solid var(--amino-gray-200)}:host .zonos--shipping-rich-radio-item:first-child{border-top-left-radius:var(--border-radius, var(--amino-radius-10));border-top-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:last-child{border-bottom-right-radius:var(--border-radius, var(--amino-radius-10));border-bottom-left-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:not(:last-child){border-bottom:none}:host .zonos--shipping-rich-radio-item.selected{outline:1px solid var(--selected-border-color, var(--amino-blue-600));outline-offset:-1px}:host .zonos--shipping-info{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex:1;flex:1}:host .zonos--shipping-detail{-ms-flex:1;flex:1}:host .zonos--sub-detail{display:-ms-inline-flexbox;display:inline-flex;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}";
|
|
12
12
|
|
|
13
13
|
const ZonosShippingRichRadio = class {
|
|
14
14
|
constructor(hostRef) {
|
|
@@ -107,8 +107,8 @@
|
|
|
107
107
|
}
|
|
108
108
|
:host .zonos--right .zonos--close-button {
|
|
109
109
|
position: absolute;
|
|
110
|
-
right: var(--amino-space-
|
|
111
|
-
top: var(--amino-space-
|
|
110
|
+
right: var(--amino-space-24);
|
|
111
|
+
top: var(--amino-space-24);
|
|
112
112
|
}
|
|
113
113
|
:host .zonos--footer {
|
|
114
114
|
display: flex;
|
|
@@ -130,6 +130,8 @@ export class ZonosCheckout {
|
|
|
130
130
|
e.preventDefault();
|
|
131
131
|
e.stopPropagation();
|
|
132
132
|
log('zonos checkout button clicked');
|
|
133
|
+
// start loading
|
|
134
|
+
stripeStore.isFetchingSession = true;
|
|
133
135
|
this.open = true;
|
|
134
136
|
try {
|
|
135
137
|
// buildCartDetail need to be catch since it may throw error
|
|
@@ -140,6 +142,8 @@ export class ZonosCheckout {
|
|
|
140
142
|
submitGtag('zonos-checkout-start');
|
|
141
143
|
}
|
|
142
144
|
catch (err) {
|
|
145
|
+
// stop loading
|
|
146
|
+
stripeStore.isFetchingSession = false;
|
|
143
147
|
cartStoreUpdateToErrorState({
|
|
144
148
|
messages: [
|
|
145
149
|
translate("There's been an error creating your checkout session. Please reload and try again or contact support if the error persists"),
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { h, Host, } from "@stencil/core";
|
|
2
2
|
import { cartStore, cartStoreGetShippingTransitInfo, cartStoreUpdateSelectedShippingOption, } from "../../../store/checkout/cart";
|
|
3
|
-
import { stripeStore } from "../../../store/checkout/stripe";
|
|
4
3
|
import { translate } from "../../../store/translationStore";
|
|
5
4
|
import { formatCurrency } from "../../../utils/formatCurrency";
|
|
6
5
|
import { submitGtag } from "../../../utils/submitGtag";
|
|
@@ -42,9 +41,8 @@ export class ZonosShipping {
|
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
43
|
render() {
|
|
45
|
-
var _a
|
|
46
|
-
const
|
|
47
|
-
const serviceLevels = (_b = cartStore.shippingData) === null || _b === void 0 ? void 0 : _b.flatMap((item) => {
|
|
44
|
+
var _a;
|
|
45
|
+
const serviceLevels = (_a = cartStore.shippingData) === null || _a === void 0 ? void 0 : _a.flatMap((item) => {
|
|
48
46
|
var _a, _b;
|
|
49
47
|
const { expectedDate, maxTransit, minTransit } = cartStoreGetShippingTransitInfo(item);
|
|
50
48
|
const sublabel = expectedDate
|
|
@@ -65,7 +63,7 @@ export class ZonosShipping {
|
|
|
65
63
|
value: item.id,
|
|
66
64
|
};
|
|
67
65
|
});
|
|
68
|
-
return (h(Host, { class: "zonos--shipping zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Shipping information')), h("zonos-text", { class: "zonos--shipping-method-title", type: "semiBoldLabel" }, translate('Shipping method')), !(serviceLevels === null || serviceLevels === void 0 ? void 0 : serviceLevels.length) ? (h("zonos-banner", { bannerTitle: "No shipping methods found - try editing your address or contacting support if the error persists", intent: "error" })) : (h("zonos-shipping-rich-radio", { items: serviceLevels || [], onRadioSelected: e => this.handleRadioSelected(e) }))
|
|
66
|
+
return (h(Host, { class: "zonos--shipping zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Shipping information')), h("zonos-text", { class: "zonos--shipping-method-title", type: "semiBoldLabel" }, translate('Shipping method')), !(serviceLevels === null || serviceLevels === void 0 ? void 0 : serviceLevels.length) ? (h("zonos-banner", { bannerTitle: "No shipping methods found - try editing your address or contacting support if the error persists", intent: "error" })) : (h("zonos-shipping-rich-radio", { items: serviceLevels || [], onRadioSelected: e => this.handleRadioSelected(e) }))), h("zonos-button", { backgroundColor: this.submitBtnColor, "is-disabled": this.disabled, loading: this.continueLoading, onClick: () => this.continueClickHandler(), size: "lg",
|
|
69
67
|
// use primary type when on mobile mode
|
|
70
68
|
variant: this.submitBtnType }, translate('Go to payment'))));
|
|
71
69
|
}
|
package/dist/collection/components/common/zonos-shipping-rich-radio/zonos-shipping-rich-radio.css
CHANGED
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
}
|
|
51
51
|
:host .zonos--shipping-rich-radio-item:last-child {
|
|
52
52
|
border-bottom-right-radius: var(--border-radius, var(--amino-radius-10));
|
|
53
|
+
border-bottom-left-radius: var(--border-radius, var(--amino-radius-10));
|
|
53
54
|
}
|
|
54
55
|
:host .zonos--shipping-rich-radio-item:not(:last-child) {
|
|
55
56
|
border-bottom: none;
|
|
@@ -3,7 +3,7 @@ import { localizationStore } from "../../store/hello/localization";
|
|
|
3
3
|
import { translate } from "../../store/translationStore";
|
|
4
4
|
import { zonosStore } from "../../store/zonosStore";
|
|
5
5
|
import { classes } from "../../utils/classes";
|
|
6
|
-
import {
|
|
6
|
+
import { currencyFormat } from "../../utils/hello/currencyConversion/currencyFormat";
|
|
7
7
|
import { getHasMoreSpaceAbove } from "../../utils/hello/getHasMoreSpaceAbove";
|
|
8
8
|
import { getHasMoreSpaceOnRight } from "../../utils/hello/getHasMoreSpaceOnRight";
|
|
9
9
|
// eslint-disable-next-line no-relative-import-paths/no-relative-import-paths
|
|
@@ -60,18 +60,26 @@ export class ZonosHelloDialog {
|
|
|
60
60
|
const { countryLandedCost, selectedCountryCode } = localizationStore;
|
|
61
61
|
// Our Robby API spells deminimis wrong here
|
|
62
62
|
const dutyDeminimis = (countryLandedCost === null || countryLandedCost === void 0 ? void 0 : countryLandedCost.dutyDeminimus)
|
|
63
|
-
?
|
|
63
|
+
? currencyFormat(countryLandedCost.dutyDeminimus)
|
|
64
64
|
: null;
|
|
65
|
+
// If Canada, use 40 CAD (courier duty de minimis)
|
|
66
|
+
const dutyDeminimisToUse = localizationStore.selectedCountryCode === 'CA'
|
|
67
|
+
? currencyFormat(40)
|
|
68
|
+
: dutyDeminimis;
|
|
65
69
|
// If deminimis is undefined or null, assume it's $0
|
|
66
|
-
const dutyDeMinimisMessage =
|
|
67
|
-
? `${translate('Spend')} ${
|
|
70
|
+
const dutyDeMinimisMessage = dutyDeminimisToUse
|
|
71
|
+
? `${translate('Spend')} ${dutyDeminimisToUse} ${translate('duty free')}`
|
|
68
72
|
: translate('Duties will apply to all orders');
|
|
69
73
|
// Our Robby API spells deminimis wrong here
|
|
70
74
|
const taxDeminimis = (countryLandedCost === null || countryLandedCost === void 0 ? void 0 : countryLandedCost.vatTaxDeminimus)
|
|
71
|
-
?
|
|
75
|
+
? currencyFormat(countryLandedCost.vatTaxDeminimus)
|
|
72
76
|
: null;
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
// If Canada, use 150 CAD (courier tax de minimis)
|
|
78
|
+
const taxDeminimisToUse = localizationStore.selectedCountryCode === 'CA'
|
|
79
|
+
? currencyFormat(150)
|
|
80
|
+
: taxDeminimis;
|
|
81
|
+
const taxDeMinimisMessage = taxDeminimisToUse
|
|
82
|
+
? `${translate('Spend')} ${taxDeminimisToUse} ${translate('tax free')}`
|
|
75
83
|
: translate('Taxes will apply to all orders');
|
|
76
84
|
const animateLeft = this.animateFromLeftOverride ||
|
|
77
85
|
(this.dialogRef && getHasMoreSpaceOnRight(this.dialogRef));
|
|
@@ -8,6 +8,44 @@ import { initHello } from "../utils/hello/initHello";
|
|
|
8
8
|
import { log } from "../utils/logging/log";
|
|
9
9
|
export class ZonosController {
|
|
10
10
|
constructor() {
|
|
11
|
+
this.disablePlaceOrderButtons = ({ disable }) => {
|
|
12
|
+
const placeOrderButtonSelector = zonosStore.checkoutSettings.placeOrderButtonSelector;
|
|
13
|
+
if (!placeOrderButtonSelector) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const disableEvent = (e) => {
|
|
17
|
+
const target = e.target;
|
|
18
|
+
// prevent default and propagation when the item has disabled attribute
|
|
19
|
+
if (target.getAttribute('disabled')) {
|
|
20
|
+
e.preventDefault();
|
|
21
|
+
e.stopPropagation();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const placeOrderButton = document.querySelectorAll(placeOrderButtonSelector);
|
|
25
|
+
placeOrderButton.forEach(button => {
|
|
26
|
+
if (disable) {
|
|
27
|
+
button.setAttribute('disabled', 'true');
|
|
28
|
+
// prevent the selector to perform default action when it's disabled
|
|
29
|
+
button.addEventListener('click', disableEvent);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
button.removeAttribute('disabled');
|
|
33
|
+
// clean up the event listener
|
|
34
|
+
button.removeEventListener('click', disableEvent);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
// only auto enable if autoEnable is true and the state is enable
|
|
38
|
+
if (disable) {
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
// release it if zonos is not initialized after 5 seconds (this is to prevent the place order button from being disabled forever due to api)
|
|
41
|
+
placeOrderButton.forEach(button => {
|
|
42
|
+
button.removeAttribute('disabled');
|
|
43
|
+
// clean up the event listener if exists
|
|
44
|
+
button.removeEventListener('click', disableEvent);
|
|
45
|
+
});
|
|
46
|
+
}, 5000);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
11
49
|
this.config = undefined;
|
|
12
50
|
this.zonosApiKey = undefined;
|
|
13
51
|
}
|
|
@@ -23,6 +61,10 @@ export class ZonosController {
|
|
|
23
61
|
stripeStore.stripe = stripe;
|
|
24
62
|
void initCheckout(zonosStore.checkoutSettings);
|
|
25
63
|
log('init checkout element');
|
|
64
|
+
// enable place order button after checkout is loaded
|
|
65
|
+
this.disablePlaceOrderButtons({
|
|
66
|
+
disable: false,
|
|
67
|
+
});
|
|
26
68
|
}
|
|
27
69
|
/**
|
|
28
70
|
* Init zonos notification
|
|
@@ -45,6 +87,10 @@ export class ZonosController {
|
|
|
45
87
|
log('Failed to load zonos settings. This domain may not have access', 'warn');
|
|
46
88
|
return;
|
|
47
89
|
}
|
|
90
|
+
// disable place order button until checkout is loaded
|
|
91
|
+
this.disablePlaceOrderButtons({
|
|
92
|
+
disable: true,
|
|
93
|
+
});
|
|
48
94
|
// init zonos notification
|
|
49
95
|
this.initZonosNotification();
|
|
50
96
|
// load default setting if fail to load user setting
|