@zonos/elements 1.3.106 → 1.3.107
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-31e4e866.js → cart-9f3864db.js} +240 -0
- package/dist/cjs/{createCustomEvent-18fbf653.js → createCustomEvent-7a156d77.js} +1 -1
- package/dist/cjs/index.cjs.js +7 -7
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{paypal-a101e3ca.js → paypal-610cccad.js} +1 -1
- package/dist/cjs/zonos-address_7.cjs.entry.js +1 -1
- package/dist/cjs/zonos-cart-items_13.cjs.entry.js +36 -13
- package/dist/cjs/zonos-checkout.cjs.entry.js +89 -5
- package/dist/cjs/zonos-controller.cjs.entry.js +1 -1
- 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 +1 -1
- package/dist/cjs/zonos-hello.cjs.entry.js +1 -1
- package/dist/cjs/zonos-language-select_2.cjs.entry.js +1 -1
- package/dist/cjs/zonos-notification_3.cjs.entry.js +2 -2
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.js +28 -5
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +89 -3
- package/dist/collection/components/common/zonos-confirm-dialog/zonos-confirm-dialog.css +1 -1
- package/dist/collection/components/common/zonos-confirm-dialog/zonos-confirm-dialog.js +26 -3
- package/dist/collection/components/store/translationStore/strings.arabic.js +12 -0
- package/dist/collection/components/store/translationStore/strings.base.js +12 -0
- package/dist/collection/components/store/translationStore/strings.chinese.js +12 -0
- package/dist/collection/components/store/translationStore/strings.danish.js +12 -0
- package/dist/collection/components/store/translationStore/strings.dutch.js +12 -0
- package/dist/collection/components/store/translationStore/strings.french.js +12 -0
- package/dist/collection/components/store/translationStore/strings.german.js +12 -0
- package/dist/collection/components/store/translationStore/strings.hebrew.js +12 -0
- package/dist/collection/components/store/translationStore/strings.indonesian.js +12 -0
- package/dist/collection/components/store/translationStore/strings.italian.js +12 -0
- package/dist/collection/components/store/translationStore/strings.japanese.js +12 -0
- package/dist/collection/components/store/translationStore/strings.korean.js +12 -0
- package/dist/collection/components/store/translationStore/strings.norwegian.js +12 -0
- package/dist/collection/components/store/translationStore/strings.polish.js +12 -0
- package/dist/collection/components/store/translationStore/strings.portuguese.js +12 -0
- package/dist/collection/components/store/translationStore/strings.russian.js +12 -0
- package/dist/collection/components/store/translationStore/strings.spanish.js +12 -0
- package/dist/collection/components/store/translationStore/strings.swedish.js +12 -0
- package/dist/collection/components/store/translationStore/strings.turkish.js +12 -0
- package/dist/collection/components/store/translationStore/strings.vietnamese.js +12 -0
- package/dist/collection/types/checkout/OrderPlacedInfo.js +1 -0
- package/dist/esm/{cart-5621d0fe.js → cart-4ba1878f.js} +240 -0
- package/dist/esm/{createCustomEvent-a9206df5.js → createCustomEvent-5fdd75bf.js} +1 -1
- package/dist/esm/index.js +7 -7
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{paypal-869c30e1.js → paypal-3d7d0148.js} +1 -1
- package/dist/esm/zonos-address_7.entry.js +1 -1
- package/dist/esm/zonos-cart-items_13.entry.js +37 -14
- package/dist/esm/zonos-checkout.entry.js +90 -6
- package/dist/esm/zonos-controller.entry.js +1 -1
- 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 +1 -1
- package/dist/esm/zonos-hello.entry.js +1 -1
- package/dist/esm/zonos-language-select_2.entry.js +1 -1
- package/dist/esm/zonos-notification_3.entry.js +2 -2
- package/dist/esm-es5/cart-4ba1878f.js +1 -0
- package/dist/esm-es5/{createCustomEvent-a9206df5.js → createCustomEvent-5fdd75bf.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/{paypal-869c30e1.js → paypal-3d7d0148.js} +1 -1
- package/dist/esm-es5/zonos-address_7.entry.js +1 -1
- package/dist/esm-es5/zonos-cart-items_13.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.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-language-select_2.entry.js +1 -1
- package/dist/esm-es5/zonos-notification_3.entry.js +1 -1
- package/dist/scripts/index.d.ts +10 -0
- 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.d.ts +10 -0
- package/dist/types/components/common/zonos-confirm-dialog/zonos-confirm-dialog.d.ts +5 -0
- package/dist/types/components/store/translationStore/strings.arabic.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.base.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.chinese.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.danish.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.dutch.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.french.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.german.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.hebrew.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.indonesian.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.italian.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.japanese.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.korean.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.norwegian.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.polish.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.portuguese.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.russian.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.spanish.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.swedish.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.turkish.d.ts +12 -0
- package/dist/types/components/store/translationStore/strings.vietnamese.d.ts +12 -0
- package/dist/types/components/store/translationStore.d.ts +1 -1
- package/dist/types/components.d.ts +10 -0
- package/dist/types/types/checkout/OrderPlacedInfo.d.ts +19 -0
- package/dist/zonos-elements/index.esm.js +1 -1
- package/dist/zonos-elements/{p-062b6df4.system.js → p-09faf6e8.system.js} +1 -1
- package/dist/zonos-elements/p-250f5e67.entry.js +1 -0
- package/dist/zonos-elements/{p-c2e463b7.system.entry.js → p-2a522e2f.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-e3b110c7.system.entry.js → p-43df09ad.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-a8b27301.entry.js → p-5d7606f0.entry.js} +1 -1
- package/dist/zonos-elements/{p-6a310417.js → p-61489a67.js} +1 -1
- package/dist/zonos-elements/{p-7f93ce41.system.entry.js → p-62d88537.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-139e32ba.system.entry.js → p-6b58734c.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-1bb59ce2.system.entry.js → p-6fb1434f.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-2babfaa4.system.js → p-7ef9b1e9.system.js} +1 -1
- package/dist/zonos-elements/{p-21586642.system.entry.js → p-7f543fa7.system.entry.js} +1 -1
- package/dist/zonos-elements/p-99d3ecd4.js +1 -0
- package/dist/zonos-elements/p-9c89dadf.system.js +1 -0
- package/dist/zonos-elements/p-9d7eb65e.system.entry.js +1 -0
- package/dist/zonos-elements/{p-65512b26.entry.js → p-a84da418.entry.js} +1 -1
- package/dist/zonos-elements/{p-82fec811.system.entry.js → p-b0e0271d.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-7562828c.entry.js → p-b2a3e0f0.entry.js} +1 -1
- package/dist/zonos-elements/{p-f5e54692.entry.js → p-b9f595e2.entry.js} +1 -1
- package/dist/zonos-elements/{p-5b6fa002.system.entry.js → p-bac9279b.system.entry.js} +1 -1
- package/dist/zonos-elements/{p-43ef8bf8.entry.js → p-bfab2cf6.entry.js} +1 -1
- package/dist/zonos-elements/{p-1c295409.system.js → p-c3167f3c.system.js} +1 -1
- package/dist/zonos-elements/p-c78dd680.system.js +1 -1
- package/dist/zonos-elements/{p-cfda42ba.entry.js → p-d65d7206.entry.js} +1 -1
- package/dist/zonos-elements/p-d9752dd6.js +1 -0
- package/dist/zonos-elements/{p-7152f8ca.entry.js → p-db0c6041.entry.js} +1 -1
- package/dist/zonos-elements/{p-23b042ad.entry.js → p-db824268.entry.js} +1 -1
- package/dist/zonos-elements/p-ec46325e.entry.js +1 -0
- package/dist/zonos-elements/p-fce4ea2c.system.entry.js +1 -0
- package/dist/zonos-elements/zonos-elements.esm.js +1 -1
- package/package.json +1 -1
- package/dist/esm-es5/cart-5621d0fe.js +0 -1
- package/dist/zonos-elements/p-239331fa.system.js +0 -1
- package/dist/zonos-elements/p-39346436.js +0 -1
- package/dist/zonos-elements/p-523c0f7d.js +0 -1
- package/dist/zonos-elements/p-5a704905.system.entry.js +0 -1
- package/dist/zonos-elements/p-a0c012a5.system.entry.js +0 -1
- package/dist/zonos-elements/p-d002dd35.entry.js +0 -1
- package/dist/zonos-elements/p-fb624d44.entry.js +0 -1
|
@@ -9,9 +9,9 @@ import { getIsTestMode } from "../../../utils/checkout/getIsTestMode";
|
|
|
9
9
|
import { createCustomEvent } from "../../../utils/createCustomEvent";
|
|
10
10
|
import { getBorderRadius } from "../../../utils/getBorderRadius";
|
|
11
11
|
import { handleFetch } from "../../../utils/handleFetch";
|
|
12
|
+
import { jsonParse } from "../../../utils/jsonParse";
|
|
12
13
|
import { sendErrorLog } from "../../../utils/logging/sendErrorLog";
|
|
13
14
|
import { submitGtag } from "../../../utils/submitGtag";
|
|
14
|
-
import { getGraphQlShortId } from "../../../../utils/getGraphQlShort";
|
|
15
15
|
// eslint-disable-next-line no-relative-import-paths/no-relative-import-paths
|
|
16
16
|
import RemoveIcon from "./assets/RemoveIcon.svg";
|
|
17
17
|
/* Need to use relative import because inline-svg-stencil couldn't resolve absolute path */
|
|
@@ -53,6 +53,10 @@ export class ZonosCheckoutFinish {
|
|
|
53
53
|
};
|
|
54
54
|
this.handleSuccessBehavior = () => {
|
|
55
55
|
var _a, _b, _c, _d, _e;
|
|
56
|
+
/**
|
|
57
|
+
* Save placed order info so we can show order info if they try to place the order again
|
|
58
|
+
*/
|
|
59
|
+
this.saveOrderIdForDuplicationIssue();
|
|
56
60
|
const { successBehavior } = zonosStore.checkoutSettings;
|
|
57
61
|
const legacyOrderNumber = ((_c = (_b = (_a = this.order) === null || _a === void 0 ? void 0 : _a.references) === null || _b === void 0 ? void 0 : _b.find(entry => (entry === null || entry === void 0 ? void 0 : entry.key) === 'zonosOrderNumber')) === null || _c === void 0 ? void 0 : _c.value) || null;
|
|
58
62
|
if (cartStore.externalConfirmationPageURL) {
|
|
@@ -138,6 +142,7 @@ export class ZonosCheckoutFinish {
|
|
|
138
142
|
else {
|
|
139
143
|
// Set loading to false to display generic success page and log error
|
|
140
144
|
this.isLoading = false;
|
|
145
|
+
void trackConversionEvent('checkout_orderCompleted');
|
|
141
146
|
const checkoutSessionId = cartStore.checkoutSessionId;
|
|
142
147
|
void sendErrorLog({
|
|
143
148
|
endpoint: `${baseUrl}/api/zonos-elements/get-order?checkoutSessionId=${checkoutSessionId}`,
|
|
@@ -236,6 +241,20 @@ export class ZonosCheckoutFinish {
|
|
|
236
241
|
this.closeClickHandler = () => {
|
|
237
242
|
this.closeClick.emit();
|
|
238
243
|
};
|
|
244
|
+
this.saveOrderIdForDuplicationIssue = () => {
|
|
245
|
+
var _a, _b, _c, _d;
|
|
246
|
+
const existingPlacedOrderInfo = jsonParse(localStorage.getItem('zonos--placed-order-info'));
|
|
247
|
+
const placedOrderTime = {
|
|
248
|
+
cartId: window.Zonos.cartId || null,
|
|
249
|
+
checkoutSessionId: (existingPlacedOrderInfo === null || existingPlacedOrderInfo === void 0 ? void 0 : existingPlacedOrderInfo.checkoutSessionId) ||
|
|
250
|
+
cartStore.checkoutSessionId ||
|
|
251
|
+
'',
|
|
252
|
+
orderId: ((_a = this.order) === null || _a === void 0 ? void 0 : _a.id) || null,
|
|
253
|
+
time: (existingPlacedOrderInfo === null || existingPlacedOrderInfo === void 0 ? void 0 : existingPlacedOrderInfo.time) || Date.now(),
|
|
254
|
+
zonosOrderNumber: ((_d = (_c = (_b = this.order) === null || _b === void 0 ? void 0 : _b.references) === null || _c === void 0 ? void 0 : _c.find(ref => ref.key === 'zonosOrderNumber')) === null || _d === void 0 ? void 0 : _d.value) || null,
|
|
255
|
+
};
|
|
256
|
+
localStorage.setItem('zonos--placed-order-info', JSON.stringify(placedOrderTime));
|
|
257
|
+
};
|
|
239
258
|
this.borderRadius = 'ROUNDED';
|
|
240
259
|
this.storybookForceStatus = undefined;
|
|
241
260
|
this.overrideNotification = undefined;
|
|
@@ -255,6 +274,8 @@ export class ZonosCheckoutFinish {
|
|
|
255
274
|
this.isLoading = false;
|
|
256
275
|
return;
|
|
257
276
|
}
|
|
277
|
+
// Save order info in case the user reloads before we get order info
|
|
278
|
+
this.saveOrderIdForDuplicationIssue();
|
|
258
279
|
if (paypalStore.orderIdCreated) {
|
|
259
280
|
void this.checkPaypalPaymentStatus();
|
|
260
281
|
}
|
|
@@ -263,14 +284,16 @@ export class ZonosCheckoutFinish {
|
|
|
263
284
|
}
|
|
264
285
|
}
|
|
265
286
|
render() {
|
|
266
|
-
var _a, _b;
|
|
267
|
-
const orderId = ((_a = this.order) === null || _a === void 0 ? void 0 : _a.accountOrderNumber) ||
|
|
287
|
+
var _a, _b, _c, _d;
|
|
288
|
+
const orderId = ((_a = this.order) === null || _a === void 0 ? void 0 : _a.accountOrderNumber) ||
|
|
289
|
+
((_d = (_c = (_b = this.order) === null || _b === void 0 ? void 0 : _b.references) === null || _c === void 0 ? void 0 : _c.find(ref => ref.key === 'zonosOrderNumber')) === null || _d === void 0 ? void 0 : _d.value) ||
|
|
290
|
+
null;
|
|
268
291
|
const isTestMode = getIsTestMode();
|
|
269
|
-
return (h(Host, { key: '
|
|
292
|
+
return (h(Host, { key: '60abe11ec6d33ac9f390735b2343dc73ba323e0e', class: "zonos--checkout-finish zonos--elements", style: {
|
|
270
293
|
'--border-radius': getBorderRadius({
|
|
271
294
|
overrideBorderStyle: this.borderRadius,
|
|
272
295
|
}),
|
|
273
|
-
} }, this.isLoading && (h("div", { key: '
|
|
296
|
+
} }, this.isLoading && (h("div", { key: 'f3ca53a787f738a34d376fd48cb880ecd3344073', class: "loading-wrapper" }, h("zonos-spinner", { key: 'bc2ad04b786a98a8a87c4b5317aa88acc9770580' }))), !this.isLoading && (h("div", { key: '6578b0007e35062b11d71a498f78fee56b1175e6', class: "zonos--finish-details" }, h("div", { key: 'f1fc14ffeff3628fa8066e0386c37c66bd3fb8e1', 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: 'a59f4022483e49b6ee9a4f3c0676e2f3d043ccae', class: "zonos--title", type: "semiBoldSubheader" }, this.notificationTitle), orderId && (h("div", { key: '2032bc6031c42463a5896d43f49517489cf38734', class: "zonos--order-number" }, "Order #", orderId)), h("zonos-text", { key: 'da9f7af5b3db16551bd6389c1c92322be8d57aa0', textColor: "gray-600" }, this.notificationMessages.map(message => (h(Fragment, null, message, h("br", null))))), h("zonos-button", { key: '6a8503a7231cb66196919aeb6c6d1f84576e2577', onClick: () => this.closeClickHandler(), size: "md", variant: "primary" }, this.notificationActionText)), isTestMode && cartStore.step === 'finish' && (h("div", { key: '80631312aa8ef98dd36cfda1e62f0274afc48002', class: "zonos--finish-button-wrapper" }, h("zonos-button", { key: 'e1fa412928b1292f09956613f9464e5fc32528e1', backgroundColor: "gray-0", buttonColor: "gray-1000", onClick: () => this.closeClickHandler(), size: "lg", variant: "outline" }, "New test cart"), h("zonos-button", { key: '8d1708a411f334b9cf5a07d142d2d8aa9bddf29b', onClick: () => this.redirectToUrl(`/orders/all`), size: "lg", variant: "primary" }, "View order in Dashboard")))))));
|
|
274
297
|
}
|
|
275
298
|
static get is() { return "zonos-checkout-finish"; }
|
|
276
299
|
static get encapsulation() { return "shadow"; }
|
|
@@ -18,6 +18,7 @@ import { createCustomEvent } from "../../utils/createCustomEvent";
|
|
|
18
18
|
import { getBorderRadius } from "../../utils/getBorderRadius";
|
|
19
19
|
import { getZCountryUrlParam } from "../../utils/hello/getZCountryUrlParam";
|
|
20
20
|
import { isDarkColor } from "../../utils/isDarkColor";
|
|
21
|
+
import { jsonParse } from "../../utils/jsonParse";
|
|
21
22
|
import { allLogs, log } from "../../utils/logging/log";
|
|
22
23
|
import { logError } from "../../utils/logging/logError";
|
|
23
24
|
import { sendErrorLog } from "../../utils/logging/sendErrorLog";
|
|
@@ -33,6 +34,8 @@ import MessageIcon from "./assets/MessageIcon.svg";
|
|
|
33
34
|
import RemoveIcon from "./assets/RemoveIcon.svg";
|
|
34
35
|
// 90 minutes
|
|
35
36
|
const CHECKOUT_SESSION_TIMEOUT = 90 * 60 * 1000;
|
|
37
|
+
// 10 minutes
|
|
38
|
+
const ORDER_DUPLICATION_NOTIFICATION_EXPIRATION = 10 * 60 * 1000;
|
|
36
39
|
export class ZonosCheckout {
|
|
37
40
|
constructor() {
|
|
38
41
|
/**
|
|
@@ -50,6 +53,22 @@ export class ZonosCheckout {
|
|
|
50
53
|
overrideTheme: this.isMobile ? theme : undefined,
|
|
51
54
|
});
|
|
52
55
|
};
|
|
56
|
+
this.formatDate = (timestamp) => {
|
|
57
|
+
if (!timestamp) {
|
|
58
|
+
return '';
|
|
59
|
+
}
|
|
60
|
+
// get date in 24/12/2024 format (without time)
|
|
61
|
+
const date = new Date(timestamp);
|
|
62
|
+
return date.toLocaleDateString();
|
|
63
|
+
};
|
|
64
|
+
this.formatTime = (timestamp) => {
|
|
65
|
+
if (!timestamp) {
|
|
66
|
+
return '';
|
|
67
|
+
}
|
|
68
|
+
// get date in 24/12/2024 format (without time)
|
|
69
|
+
const date = new Date(timestamp);
|
|
70
|
+
return date.toLocaleTimeString();
|
|
71
|
+
};
|
|
53
72
|
this.getCurrentLocalePageEnum = () => {
|
|
54
73
|
switch (cartStore.step) {
|
|
55
74
|
case 'customer-info':
|
|
@@ -78,6 +97,7 @@ export class ZonosCheckout {
|
|
|
78
97
|
this.isLegacyCheckout = window.Zonos.isLegacyCheckout;
|
|
79
98
|
this.confirmDialogOpen = false;
|
|
80
99
|
this.inventoryCheckErrorMessage = null;
|
|
100
|
+
this.placedOrderInfo = null;
|
|
81
101
|
}
|
|
82
102
|
/**
|
|
83
103
|
* Init cart info handler event
|
|
@@ -172,6 +192,50 @@ export class ZonosCheckout {
|
|
|
172
192
|
reloadCheckoutSession() {
|
|
173
193
|
window.location.reload();
|
|
174
194
|
}
|
|
195
|
+
handleOrderDuplication() {
|
|
196
|
+
const existingPlacedOrderInfo = jsonParse(localStorage.getItem('zonos--placed-order-info'));
|
|
197
|
+
if (!existingPlacedOrderInfo) {
|
|
198
|
+
localStorage.removeItem('zonos--placed-order-info');
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const elapsed = Date.now() - existingPlacedOrderInfo.time;
|
|
202
|
+
log(`=== Existing placed order info: ${existingPlacedOrderInfo.orderId} - ${this.formatDate(existingPlacedOrderInfo.time)} - elapsed in hh:ss format: ${new Date(elapsed)
|
|
203
|
+
.toISOString()
|
|
204
|
+
.substring(11, 8)}`, 'warn');
|
|
205
|
+
const overrideExpiredDuplication = parseFloat(new URLSearchParams(window.location.search).get('zonosOverrideExpiredDuplication') || '0') || ORDER_DUPLICATION_NOTIFICATION_EXPIRATION;
|
|
206
|
+
// if the order is placed within 5 minutes, confirm with the user to proceed with the order duplication
|
|
207
|
+
if (elapsed > overrideExpiredDuplication) {
|
|
208
|
+
log(`=== Existing placed order info is older than ${overrideExpiredDuplication}ms, cleaning localStorage`, 'warn');
|
|
209
|
+
// remove the placed order info if it's older than 5 minutes and do nothing.
|
|
210
|
+
localStorage.removeItem('zonos--placed-order-info');
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// Set placed order info to show the confirm notification to the user
|
|
214
|
+
this.placedOrderInfo = existingPlacedOrderInfo;
|
|
215
|
+
log('=== Showing order duplication confirmation', 'warn');
|
|
216
|
+
}
|
|
217
|
+
confirmProceedWithOrderDuplication() {
|
|
218
|
+
// Reset the placed order info
|
|
219
|
+
this.placedOrderInfo = null;
|
|
220
|
+
}
|
|
221
|
+
handleCancelOrderDuplication() {
|
|
222
|
+
var _a;
|
|
223
|
+
// Reset the placed order info
|
|
224
|
+
this.placedOrderInfo = null;
|
|
225
|
+
// Redirect to the vendor store url if this is legacy checkout
|
|
226
|
+
if (this.isLegacyCheckout) {
|
|
227
|
+
const storeBaseUrl = (_a = window.Zonos.cartData) === null || _a === void 0 ? void 0 : _a.storeBaseUrl;
|
|
228
|
+
if (!storeBaseUrl) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (window.parent) {
|
|
232
|
+
window.parent.location.href = storeBaseUrl;
|
|
233
|
+
}
|
|
234
|
+
window.location.href = storeBaseUrl;
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
void this.closeDialogHandler({ confirmed: true });
|
|
238
|
+
}
|
|
175
239
|
attachCheckout() {
|
|
176
240
|
const buttonAnchorSelector = zonosStore.checkoutSettings.placeOrderButtonSelector;
|
|
177
241
|
log(`attach checkout ${buttonAnchorSelector}`);
|
|
@@ -228,6 +292,7 @@ export class ZonosCheckout {
|
|
|
228
292
|
cartStore.shouldHideDiscountInput = !enabled;
|
|
229
293
|
submitGtag('zonos-checkout-start');
|
|
230
294
|
void trackConversionEvent('checkout_open');
|
|
295
|
+
this.handleOrderDuplication();
|
|
231
296
|
if (window.Zonos.isLegacyCheckout) {
|
|
232
297
|
void sendLoadCheckoutFacadeLog();
|
|
233
298
|
}
|
|
@@ -569,7 +634,7 @@ export class ZonosCheckout {
|
|
|
569
634
|
this.onChangeLocaleListener();
|
|
570
635
|
}
|
|
571
636
|
render() {
|
|
572
|
-
var _a;
|
|
637
|
+
var _a, _b, _c, _d;
|
|
573
638
|
const dialogLoading =
|
|
574
639
|
// if it's last step, don't need to check stripe elements
|
|
575
640
|
(cartStore.step !== 'finish' &&
|
|
@@ -643,7 +708,27 @@ export class ZonosCheckout {
|
|
|
643
708
|
this.confirmDialogOpen = false;
|
|
644
709
|
},
|
|
645
710
|
// Mark user selected confirm to close the dialog
|
|
646
|
-
onConfirmClicked: () => this.closeDialogHandler({ confirmed: true }) }), h("zonos-confirm-dialog", { class: "zonos--
|
|
711
|
+
onConfirmClicked: () => this.closeDialogHandler({ confirmed: true }) }), h("zonos-confirm-dialog", { class: "zonos--order-duplication-dialog", dialogCancelBtnText: translate('Return to merchant site'), dialogConfirmBtnText: translate('Proceed with order'), dialogIntent: "warn", dialogOpen: !!this.placedOrderInfo, dialogSubtitle:
|
|
712
|
+
/**
|
|
713
|
+
* Show order number if it's available, otherwise just show the time
|
|
714
|
+
*/
|
|
715
|
+
((_b = this.placedOrderInfo) === null || _b === void 0 ? void 0 : _b.zonosOrderNumber)
|
|
716
|
+
? translate('It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?', {
|
|
717
|
+
date: this.formatDate(this.placedOrderInfo.time),
|
|
718
|
+
orderNumber: this.placedOrderInfo.zonosOrderNumber,
|
|
719
|
+
time: this.formatTime(this.placedOrderInfo.time),
|
|
720
|
+
})
|
|
721
|
+
: translate('It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?', {
|
|
722
|
+
date: this.formatDate(((_c = this.placedOrderInfo) === null || _c === void 0 ? void 0 : _c.time) || null),
|
|
723
|
+
time: this.formatTime(((_d = this.placedOrderInfo) === null || _d === void 0 ? void 0 : _d.time) || null),
|
|
724
|
+
}), dialogTitle: translate('Are you sure?'), dialogWidth: 450, onCancelClicked: () => {
|
|
725
|
+
this.handleCancelOrderDuplication();
|
|
726
|
+
},
|
|
727
|
+
// Mark user selected confirm to close the dialog
|
|
728
|
+
onConfirmClicked: () => {
|
|
729
|
+
// Reset the placed order info and close the dialog
|
|
730
|
+
this.confirmProceedWithOrderDuplication();
|
|
731
|
+
} }), h("zonos-confirm-dialog", { class: "zonos--inventory-check-failure-dialog", dialogConfirmBtnText: translate('Return to cart'), dialogIntent: "danger",
|
|
647
732
|
// Show dialog if inventory check error message is not null
|
|
648
733
|
dialogOpen: !!cartStore.inventoryCheckErrorMessage,
|
|
649
734
|
// If dialog is in open state, the message should not be null
|
|
@@ -783,7 +868,8 @@ export class ZonosCheckout {
|
|
|
783
868
|
"storybookPaymentStatusOverride": {},
|
|
784
869
|
"isLegacyCheckout": {},
|
|
785
870
|
"confirmDialogOpen": {},
|
|
786
|
-
"inventoryCheckErrorMessage": {}
|
|
871
|
+
"inventoryCheckErrorMessage": {},
|
|
872
|
+
"placedOrderInfo": {}
|
|
787
873
|
};
|
|
788
874
|
}
|
|
789
875
|
static get methods() {
|
|
@@ -21,6 +21,7 @@ export class ZonosConfirmDialog {
|
|
|
21
21
|
this.dialogSubtitle = null;
|
|
22
22
|
this.submitBtnColor = undefined;
|
|
23
23
|
this.dialogConfirmBtnText = undefined;
|
|
24
|
+
this.dialogWidth = 350;
|
|
24
25
|
this.dialogCancelBtnText = undefined;
|
|
25
26
|
this.dialogType = 'confirm';
|
|
26
27
|
this.isMobile = false;
|
|
@@ -82,12 +83,13 @@ export class ZonosConfirmDialog {
|
|
|
82
83
|
const borderStyle = getBorderRadius();
|
|
83
84
|
// Get theme for the update dialog, inherit from the theme, no from this component theme
|
|
84
85
|
const theme = getZonosStoreTheme(zonosStore.appearance.theme);
|
|
85
|
-
return (h(Host, { key: '
|
|
86
|
+
return (h(Host, { key: '3ce72ff0cc986ba772ccd376d5619587f14fd3ea', class: classes([this.dialogOpen && 'open', 'zonos--elements']), "data-dialog-type": this.dialogType, "data-theme": theme, style: {
|
|
86
87
|
'--border-radius': borderStyle,
|
|
88
|
+
'--dialog-width': `${this.dialogWidth}px`,
|
|
87
89
|
'--font-family': zonosStoreFontFamily(),
|
|
88
|
-
} }, h("div", { key: '
|
|
90
|
+
} }, h("div", { key: '2963b8604b543e3c36c1079db78fe77dceaed215', class: "zonos--backdrop", tabIndex: -1 }), h("div", { key: '3a5b515ca3d88b7ae78f0d81ad7127c610ab786e', "aria-hidden": "true", class: classes(['zonos--confirm-layout', this.dialogIntent]), onClick: e => this.clickOutsideDialogHandler(e) }, h("div", { key: 'b6070c25fefc396e5303240d58ae809dee4f8548', class: "zonos--confirm-dialog", onBlur: () => {
|
|
89
91
|
this.focusDialog();
|
|
90
|
-
} }, h("div", { key: '
|
|
92
|
+
} }, h("div", { key: 'cd67ad63f17ba734a417ffed3899044c70cfa16c', class: "wrapper" }, h("div", { key: '2801b0ab1e0931c00a103cc9fc2e983a7cb73452', class: "icon-wrapper" }, this.renderIcon()), h("div", { key: '9ab775b2c8fc9e042d92cddbee72cab31ebde7a3', class: "content" }, h("div", { key: '4a884d0d55bc4dde0d24d5d51328c0f27d221dae', class: "title" }, h("zonos-text", { key: '465ccc7a97b7192f1b1c4810627db583c95cd9c0', type: "subheader" }, this.dialogTitle)), this.dialogSubtitle && (h("div", { key: '4ef4d0544128c4a3c87521aa509b28d42e6f2a25', class: "subtitle" }, h("zonos-text", { key: '484e097b9fa41ddabcbb2c8e350c0cdbb232887b', textColor: "gray-800" }, this.dialogSubtitle)))), h("div", { key: '364b576633445f8b58e3824a817ff157950e8505', class: "footer" }, this.dialogType === 'confirm' && (h("zonos-button", { key: 'f483efb2564f687ad664aed0e7f578b7187f9c15', backgroundColor: "gray-0", class: "cancel-button", onClick: () => this.closeDialogHandler(), size: "lg", withBoxShadow: true }, this.dialogCancelBtnText || translate('Cancel'))), h("zonos-button", { key: 'c0329025de32980a7a3478ad32153f9b5e90c16c', class: "confirm-button", onClick: () => this.confirmDialogHandler(), size: "lg", variant: this.getButtonConfirmVariant() }, this.dialogConfirmBtnText)))))));
|
|
91
93
|
}
|
|
92
94
|
static get is() { return "zonos-confirm-dialog"; }
|
|
93
95
|
static get encapsulation() { return "shadow"; }
|
|
@@ -201,6 +203,27 @@ export class ZonosConfirmDialog {
|
|
|
201
203
|
"attribute": "dialog-confirm-btn-text",
|
|
202
204
|
"reflect": false
|
|
203
205
|
},
|
|
206
|
+
"dialogWidth": {
|
|
207
|
+
"type": "number",
|
|
208
|
+
"mutable": false,
|
|
209
|
+
"complexType": {
|
|
210
|
+
"original": "number",
|
|
211
|
+
"resolved": "number",
|
|
212
|
+
"references": {}
|
|
213
|
+
},
|
|
214
|
+
"required": false,
|
|
215
|
+
"optional": false,
|
|
216
|
+
"docs": {
|
|
217
|
+
"tags": [{
|
|
218
|
+
"name": "default",
|
|
219
|
+
"text": "350 px"
|
|
220
|
+
}],
|
|
221
|
+
"text": "Dialog width"
|
|
222
|
+
},
|
|
223
|
+
"attribute": "dialog-width",
|
|
224
|
+
"reflect": false,
|
|
225
|
+
"defaultValue": "350"
|
|
226
|
+
},
|
|
204
227
|
"dialogCancelBtnText": {
|
|
205
228
|
"type": "string",
|
|
206
229
|
"mutable": false,
|
|
@@ -143,6 +143,12 @@ export const stringsArabic = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: 'رمز ترويجي غير صالح',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: 'يبدو أنك قدمت طلبًا قبل بضع دقائق فقط ([date] في [time]) تحت رقم الطلب #[orderNumber]. تحقق من بريدك الإلكتروني لتأكيد الطلب. هل أنت متأكد أنك تريد تقديم طلب آخر؟',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: 'يبدو أنك قدمت طلبًا قبل بضع دقائق فقط ([date] في [time]). تحقق من بريدك الإلكتروني لتأكيد الطلب. هل أنت متأكد أنك تريد تقديم طلب آخر؟',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: 'متابعة التسوق',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsArabic = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: 'دفع الرسوم والضرائب مقدمًا عند الدفع',
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: 'المتابعة مع الطلب',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: 'أسعار المنتجات تشمل بالفعل الرسوم والضرائب. لن يتم إضافة أي رسوم أو ضرائب إضافية عند الدفع، باستثناءات نادرة.',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsArabic = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: 'العودة إلى العربة',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: 'العودة إلى موقع التاجر',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: 'ابحث عن الدول',
|
|
262
274
|
},
|
|
@@ -143,6 +143,12 @@ export const stringsBase = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: 'Invalid promo code',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: 'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: 'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: 'Keep shopping',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsBase = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: 'Prepay duties and taxes at checkout',
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: 'Proceed with order',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: 'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsBase = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: 'Return to cart',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: 'Return to merchant site',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: 'Search countries',
|
|
262
274
|
},
|
|
@@ -143,6 +143,12 @@ export const stringsChinese = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: '无效的促销代码',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: '您似乎在几分钟前下了一个订单([date] [time]),订单号为#[orderNumber]。请检查您的电子邮件以获取订单确认。您确定要下另一个订单吗?',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: '您似乎在几分钟前下了订单([date] [time])。请检查您的电子邮件以获取订单确认。您确定要再下一个订单吗?',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: '继续购物',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsChinese = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: '在结账时预付关税和税款',
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: '继续订单',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: '产品价格已包含关税和费用。结账时不会增加额外的关税或费用,极少数情况除外。',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsChinese = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: '返回购物车',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: '返回商家网站',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: '搜索国家',
|
|
262
274
|
},
|
|
@@ -143,6 +143,12 @@ export const stringsDanish = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: 'Ugyldig kampagnekode',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: 'Det ser ud til, at du afgav en ordre for få minutter siden ([date] kl. [time]) under ordrenummer #[orderNumber]. Tjek din e-mail for ordrebekræftelsen. Er du sikker på, at du vil afgive en ny ordre?',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: 'Det ser ud til, at du har afgivet en ordre for få minutter siden ([date] kl. [time]). Tjek din e-mail for ordrebekræftelsen. Er du sikker på, at du vil afgive en til?',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: 'Fortsæt med at handle',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsDanish = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: 'Betal told og skatter på forhånd ved kassen',
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: 'Fortsæt med ordren',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: 'Produktpriser inkluderer allerede told og gebyrer. Ingen yderligere told eller gebyrer vil blive tilføjet ved kassen, med sjældne undtagelser.',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsDanish = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: 'Tilbage til kurven',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: 'Vend tilbage til forhandlersiden',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: 'Søg lande',
|
|
262
274
|
},
|
|
@@ -143,6 +143,12 @@ export const stringsDutch = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: 'Ongeldige promotiecode',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: 'Het lijkt erop dat je een paar minuten geleden een bestelling hebt geplaatst ([date] om [time]) onder bestelnummer #[orderNumber]. Controleer je e-mail voor de orderbevestiging. Weet je zeker dat je nog een bestelling wilt plaatsen?',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: 'Het lijkt erop dat je een paar minuten geleden een bestelling hebt geplaatst ([date] om [time]). Controleer je e-mail voor de orderbevestiging. Weet je zeker dat je er nog een wilt plaatsen?',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: 'Blijf winkelen',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsDutch = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: 'Heffingen en belastingen vooraf betalen bij het afrekenen',
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: 'Doorgaan met de bestelling',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: 'Productprijzen zijn inclusief belastingen en heffingen. Er worden geen extra belastingen of heffingen toegevoegd bij het afrekenen, met zeldzame uitzonderingen.',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsDutch = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: 'Terug naar winkelwagen',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: 'Terug naar de handelaarssite',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: 'Zoek landen',
|
|
262
274
|
},
|
|
@@ -143,6 +143,12 @@ export const stringsFrench = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: 'Code promo invalide',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: 'Il semble que vous ayez passé une commande il y a quelques minutes ([date] à [time]) sous le numéro de commande #[orderNumber]. Vérifiez votre e-mail pour la confirmation de commande. Êtes-vous sûr de vouloir passer une autre commande?',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: 'Il semble que vous ayez passé une commande il y a quelques minutes ([date] à [time]). Vérifiez votre e-mail pour la confirmation de commande. Êtes-vous sûr de vouloir en passer une autre?',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: 'Continuer à faire du shopping',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsFrench = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: "Payez les droits et taxes à l'avance lors du checkout",
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: 'Procéder à la commande',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: 'Les prix des produits incluent déjà les droits et les frais. Aucun droit ou frais supplémentaire ne sera ajouté lors du paiement, sauf rares exceptions.',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsFrench = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: 'Retour au panier',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: 'Retourner sur le site du marchand',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: 'Rechercher des pays',
|
|
262
274
|
},
|
|
@@ -143,6 +143,12 @@ export const stringsGerman = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: 'Ungültiger Aktionscode',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: 'Es sieht so aus, als hätten Sie vor ein paar Minuten eine Bestellung aufgegeben ([date] um [time]) unter der Bestellnummer #[orderNumber]. Überprüfen Sie Ihre E-Mails auf die Bestellbestätigung. Sind Sie sicher, dass Sie eine weitere Bestellung aufgeben möchten?',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: 'Es sieht so aus, als hätten Sie vor ein paar Minuten eine Bestellung aufgegeben ([date] um [time]). Überprüfen Sie Ihre E-Mails auf die Bestellbestätigung. Sind Sie sicher, dass Sie eine weitere aufgeben möchten?',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: 'Einkauf fortsetzen',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsGerman = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: 'Zölle und Steuern im Voraus bezahlen',
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: 'Mit der Bestellung fortfahren',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: 'Produktpreise beinhalten bereits Zölle und Gebühren. Keine zusätzlichen Zölle oder Gebühren werden beim Checkout hinzugefügt, mit seltenen Ausnahmen.',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsGerman = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: 'Zurück zum Warenkorb',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: 'Zurück zur Händlerseite',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: 'Länder durchsuchen',
|
|
262
274
|
},
|
|
@@ -143,6 +143,12 @@ export const stringsHebrew = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: 'קוד קידום מכירות לא חוקי',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: 'נראה כי ביצעת הזמנה לפני מספר דקות בלבד ([date] בשעה [time]) תחת מספר הזמנה #[orderNumber]. בדוק את הדוא"ל שלך לאישור ההזמנה. האם אתה בטוח שברצונך לבצע הזמנה נוספת?',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: 'נראה שהזמנת לפני כמה דקות בלבד ([date] ב-[time]). בדוק את הדוא"ל שלך לאישור ההזמנה. האם אתה בטוח שברצונך לבצע הזמנה נוספת?',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: 'המשך בקנייה',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsHebrew = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: 'שלם מכסים ומסים מראש בעת התשלום',
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: 'המשך עם ההזמנה',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: 'מחירי המוצרים כוללים כבר מכסים ודמי טיפול. לא יתווספו מכסים או דמי טיפול נוספים בקופה, למעט מקרים נדירים.',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsHebrew = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: 'חזרה לעגלה',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: 'חזור לאתר הסוחר',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: 'חיפוש מדינות',
|
|
262
274
|
},
|
|
@@ -143,6 +143,12 @@ export const stringsIndonesian = {
|
|
|
143
143
|
'Invalid promo code': {
|
|
144
144
|
value: 'Kode promo tidak valid',
|
|
145
145
|
},
|
|
146
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]) under order number #[orderNumber]. Check your email for the order confirmation. Are you sure you want to place another order?': {
|
|
147
|
+
value: 'Sepertinya Anda baru saja melakukan pemesanan beberapa menit yang lalu ([date] pukul [time]) dengan nomor pesanan #[orderNumber]. Periksa email Anda untuk konfirmasi pesanan. Apakah Anda yakin ingin melakukan pemesanan lain?',
|
|
148
|
+
},
|
|
149
|
+
'It looks like you placed an order just a few minutes ago ([date] at [time]). Check your email for the order confirmation. Are you sure you want to place another one?': {
|
|
150
|
+
value: 'Sepertinya Anda baru saja melakukan pemesanan beberapa menit yang lalu ([date] pukul [time]). Periksa email Anda untuk konfirmasi pesanan. Apakah Anda yakin ingin melakukan pemesanan lagi?',
|
|
151
|
+
},
|
|
146
152
|
'Keep shopping': {
|
|
147
153
|
value: 'Lanjut belanja',
|
|
148
154
|
},
|
|
@@ -221,6 +227,9 @@ export const stringsIndonesian = {
|
|
|
221
227
|
'Prepay duties and taxes at checkout': {
|
|
222
228
|
value: 'Pembayaran bea masuk dan pajak di kasir',
|
|
223
229
|
},
|
|
230
|
+
'Proceed with order': {
|
|
231
|
+
value: 'Lanjutkan dengan pesanan',
|
|
232
|
+
},
|
|
224
233
|
'Product prices already include duties and fees. No additional duties or fees will be added at checkout, with rare exceptions.': {
|
|
225
234
|
value: 'Harga produk sudah termasuk bea dan biaya. Tidak ada bea atau biaya tambahan yang akan ditambahkan saat checkout, dengan pengecualian yang jarang terjadi.',
|
|
226
235
|
},
|
|
@@ -257,6 +266,9 @@ export const stringsIndonesian = {
|
|
|
257
266
|
'Return to cart': {
|
|
258
267
|
value: 'Kembali ke keranjang',
|
|
259
268
|
},
|
|
269
|
+
'Return to merchant site': {
|
|
270
|
+
value: 'Kembali ke situs pedagang',
|
|
271
|
+
},
|
|
260
272
|
'Search countries': {
|
|
261
273
|
value: 'Cari negara',
|
|
262
274
|
},
|