@salla.sa/twilight-components 2.14.27 → 2.14.28
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/app-globals-b3827cef.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/salla-add-product-button_48.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-installment.cjs.entry.js +99 -32
- package/dist/cjs/salla-installment.cjs.entry.js.map +1 -1
- package/dist/cjs/twilight.cjs.js +1 -1
- package/dist/collection/components/salla-installment/salla-installment.js +118 -33
- package/dist/collection/components/salla-installment/salla-installment.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/salla-installment.js +101 -33
- package/dist/components/salla-installment.js.map +1 -1
- package/dist/components/salla-quick-buy2.js.map +1 -1
- package/dist/esm/app-globals-c672447c.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/salla-add-product-button_48.entry.js.map +1 -1
- package/dist/esm/salla-installment.entry.js +99 -32
- package/dist/esm/salla-installment.entry.js.map +1 -1
- package/dist/esm/twilight.js +1 -1
- package/dist/esm-es5/app-globals-c672447c.js.map +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/salla-add-product-button_48.entry.js.map +1 -1
- package/dist/esm-es5/salla-installment.entry.js +1 -1
- package/dist/esm-es5/salla-installment.entry.js.map +1 -1
- package/dist/esm-es5/twilight.js +1 -1
- package/dist/esm-es5/twilight.js.map +1 -1
- package/dist/twilight/p-39996533.system.js +1 -1
- package/dist/twilight/p-39996533.system.js.map +1 -1
- package/dist/twilight/p-40f6f722.entry.js.map +1 -1
- package/dist/twilight/p-5e19dec7.system.entry.js +5 -0
- package/dist/twilight/p-5e19dec7.system.entry.js.map +1 -0
- package/dist/twilight/p-bded3619.system.entry.js.map +1 -1
- package/dist/twilight/p-c69ac412.js.map +1 -1
- package/dist/twilight/p-e46cdbcc.system.js.map +1 -1
- package/dist/twilight/p-edac071a.entry.js +5 -0
- package/dist/twilight/p-edac071a.entry.js.map +1 -0
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/twilight/twilight.esm.js.map +1 -1
- package/dist/types/components/salla-installment/salla-installment.d.ts +20 -2
- package/dist/types/components.d.ts +8 -0
- package/dist/types/global.d.ts +20 -0
- package/package.json +5 -5
- package/dist/twilight/p-19b0d8c5.entry.js +0 -5
- package/dist/twilight/p-19b0d8c5.entry.js.map +0 -1
- package/dist/twilight/p-2f50e3dc.system.entry.js +0 -5
- package/dist/twilight/p-2f50e3dc.system.entry.js.map +0 -1
|
@@ -9,13 +9,18 @@ export class SallaInstallment {
|
|
|
9
9
|
this.price = undefined;
|
|
10
10
|
this.language = salla.config.get('user.language_code');
|
|
11
11
|
this.currency = salla.config.get('user.currency_code');
|
|
12
|
-
this.
|
|
12
|
+
this.country = salla.config.get('user.country_code');
|
|
13
13
|
this.tabbyIsActive = undefined;
|
|
14
14
|
this.spotiiIsActive = undefined;
|
|
15
|
+
this.tamaraIsActive = undefined;
|
|
15
16
|
this.mispayActive = undefined;
|
|
16
|
-
this.installment_sheria_text =
|
|
17
|
+
this.installment_sheria_text = replacement => salla.lang.get('pages.products.installments', replacement);
|
|
17
18
|
salla.lang.onLoaded(() => {
|
|
18
|
-
this.installment_sheria_text({
|
|
19
|
+
this.installment_sheria_text({
|
|
20
|
+
payment: salla.money(parseFloat(this.price)),
|
|
21
|
+
amount: salla.money((parseFloat(this.price) / 3).toFixed(2)),
|
|
22
|
+
installments: 3,
|
|
23
|
+
});
|
|
19
24
|
const installment = salla.config.get('store.settings.installments');
|
|
20
25
|
if (installment) {
|
|
21
26
|
this.tamaraIsActive = installment.tamara;
|
|
@@ -34,18 +39,21 @@ export class SallaInstallment {
|
|
|
34
39
|
});
|
|
35
40
|
}
|
|
36
41
|
render() {
|
|
42
|
+
var _a;
|
|
37
43
|
if (!this.isValidPrice(this.price)) {
|
|
38
44
|
return '';
|
|
39
45
|
}
|
|
40
|
-
return (h(Host, null, this.tamaraIsActive
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
h("div", {
|
|
44
|
-
|
|
45
|
-
h("div", { class: "spotii-wrapper" }, h("div", { class: "spotii-promo" }))
|
|
46
|
-
: '', this.
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
return (h(Host, null, this.tamaraIsActive &&
|
|
47
|
+
(((_a = this.tamaraIsActive) === null || _a === void 0 ? void 0 : _a.publicKey) ? (
|
|
48
|
+
// Tamara widget v2
|
|
49
|
+
h("div", { class: "mb-5" }, h("tamara-widget", { type: "tamara-summary", "inline-type": "2", amount: this.price }))) : (
|
|
50
|
+
// Tamara widget v1 fallback
|
|
51
|
+
h("div", { class: "tamara-product-widget", "data-price": this.price, "data-currency": this.currency, "data-lang": this.language, "data-payment-type": "installment" }))), this.tabbyIsActive ? (h("div", { id: "tabbyPromoWrapper" }, h("div", { id: "tabbyPromo" }))) : (''), this.spotiiIsActive ? (h("div", { class: "spotii-wrapper" }, h("div", { class: "spotii-promo" }))) : (''), this.shouldShowMispay() &&
|
|
52
|
+
(this.mispayActive.publicKey ? (h("div", { class: "mb-5" }, h("mispay-widget", { amount: this.price, lang: this.language }))) : (h("div", { class: "s-installment-mispay-wrapper" }, h("div", { class: "s-installment-mispay-content" }, h("img", { src: salla.url.cdn('images/payment/png/mispay.png'), alt: "mispay" }), h("span", { class: "s-installment-mispay-content-text" }, this.installment_sheria_text({
|
|
53
|
+
payment: salla.money(parseFloat(this.price)),
|
|
54
|
+
amount: salla.money((parseFloat(this.price) / 4).toFixed(2)),
|
|
55
|
+
installments: 4,
|
|
56
|
+
}))))))));
|
|
49
57
|
}
|
|
50
58
|
renderInstallments(isUpdating = false) {
|
|
51
59
|
if (!this.isValidPrice(this.price)) {
|
|
@@ -53,21 +61,7 @@ export class SallaInstallment {
|
|
|
53
61
|
}
|
|
54
62
|
// Tamara
|
|
55
63
|
if (this.tamaraIsActive) {
|
|
56
|
-
|
|
57
|
-
var oldTamaraScript = document.querySelector('script[src="https://cdn.tamara.co/widget/product-widget.min.js"]');
|
|
58
|
-
if (oldTamaraScript) {
|
|
59
|
-
oldTamaraScript.remove();
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
var tamaraScript = document.createElement('script');
|
|
63
|
-
tamaraScript.setAttribute('src', 'https://cdn.tamara.co/widget/product-widget.min.js');
|
|
64
|
-
document.head.appendChild(tamaraScript);
|
|
65
|
-
tamaraScript.onload = () => {
|
|
66
|
-
window.TamaraProductWidget.init({ lang: this.language });
|
|
67
|
-
setTimeout(() => {
|
|
68
|
-
window.TamaraProductWidget.render();
|
|
69
|
-
}, 300);
|
|
70
|
-
};
|
|
64
|
+
this.loadTamara({ isUpdating });
|
|
71
65
|
}
|
|
72
66
|
// tabby
|
|
73
67
|
if (this.tabbyIsActive) {
|
|
@@ -133,11 +127,11 @@ export class SallaInstallment {
|
|
|
133
127
|
renderToPath: ['.spotii-promo'],
|
|
134
128
|
numberOfPayment: 3,
|
|
135
129
|
currency: this.currency,
|
|
136
|
-
templateLine:
|
|
130
|
+
templateLine: '${textOne} ${number} ${textTwo} ' + amount + '${logo} ${info}',
|
|
137
131
|
//todo:: translate these
|
|
138
|
-
textOne: isRTL ?
|
|
139
|
-
textTwo: isRTL ?
|
|
140
|
-
textThree:
|
|
132
|
+
textOne: isRTL ? 'جزء الدفع على' : 'Split it into',
|
|
133
|
+
textTwo: isRTL ? 'أقساط متساوية بدون تكاليف اضافية بقيمة' : 'payments of',
|
|
134
|
+
textThree: 'مع',
|
|
141
135
|
price: this.price,
|
|
142
136
|
// forcedShow: false,
|
|
143
137
|
// merchantID: null,
|
|
@@ -149,6 +143,13 @@ export class SallaInstallment {
|
|
|
149
143
|
// // setTimeout()
|
|
150
144
|
// }
|
|
151
145
|
}
|
|
146
|
+
// Mispay
|
|
147
|
+
if (this.shouldShowMispay() && this.mispayActive.publicKey) {
|
|
148
|
+
this.loadExternalScript({
|
|
149
|
+
position: 'head',
|
|
150
|
+
src: `https://widget.mispay.co/v1/sdk.js?authorize=${this.mispayActive.publicKey}`,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
152
153
|
}
|
|
153
154
|
isValidPrice(price) {
|
|
154
155
|
const pricePattern = /^\d+(\.\d{1,2})?$/;
|
|
@@ -156,6 +157,70 @@ export class SallaInstallment {
|
|
|
156
157
|
const isGreaterThanZero = parseFloat(price) > 0;
|
|
157
158
|
return isValid && isGreaterThanZero;
|
|
158
159
|
}
|
|
160
|
+
loadExternalScript({ src, onLoad, position, }) {
|
|
161
|
+
const script = document.createElement('script');
|
|
162
|
+
script.src = src;
|
|
163
|
+
script.onload = onLoad;
|
|
164
|
+
document[position].appendChild(script);
|
|
165
|
+
}
|
|
166
|
+
loadTamara({ isUpdating }) {
|
|
167
|
+
var _a;
|
|
168
|
+
const isV2Enabled = !!((_a = this.tamaraIsActive) === null || _a === void 0 ? void 0 : _a.publicKey);
|
|
169
|
+
if (isUpdating) {
|
|
170
|
+
setTimeout(() => {
|
|
171
|
+
var _a, _b;
|
|
172
|
+
if (isV2Enabled) {
|
|
173
|
+
return (_a = window.TamaraWidgetV2) === null || _a === void 0 ? void 0 : _a.refresh();
|
|
174
|
+
}
|
|
175
|
+
// v1 fallback widget refresh
|
|
176
|
+
(_b = window.TamaraProductWidget) === null || _b === void 0 ? void 0 : _b.render();
|
|
177
|
+
}, 300);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
if (isV2Enabled) {
|
|
181
|
+
const language_code = salla.config.get('user.language_code');
|
|
182
|
+
const lang = ['ar', 'en'].includes(language_code) ? language_code : 'ar';
|
|
183
|
+
// this used in case user change the currency to get the country code
|
|
184
|
+
const countryCodeByCurrency = this.currency.slice(0, -1);
|
|
185
|
+
const country = ['SA', 'AE', 'KW', 'BH', 'OM', 'QA'].includes(countryCodeByCurrency)
|
|
186
|
+
? countryCodeByCurrency
|
|
187
|
+
: null;
|
|
188
|
+
if (!country) {
|
|
189
|
+
console.error('Tamara: Country code is not supported', countryCodeByCurrency);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
window.tamaraWidgetConfig = {
|
|
193
|
+
lang,
|
|
194
|
+
country,
|
|
195
|
+
publicKey: this.tamaraIsActive.publicKey,
|
|
196
|
+
style: {
|
|
197
|
+
fontSize: '14px',
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
this.loadExternalScript({
|
|
201
|
+
position: 'head',
|
|
202
|
+
src: 'https://cdn.tamara.co/widget-v2/tamara-widget.js',
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
// v1 fallback widget
|
|
208
|
+
this.loadExternalScript({
|
|
209
|
+
position: 'head',
|
|
210
|
+
src: 'https://cdn.tamara.co/widget/product-widget.min.js',
|
|
211
|
+
onLoad: () => {
|
|
212
|
+
window.TamaraProductWidget.init({ lang: this.language });
|
|
213
|
+
setTimeout(() => {
|
|
214
|
+
window.TamaraProductWidget.render();
|
|
215
|
+
}, 300);
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
shouldShowMispay() {
|
|
222
|
+
return this.currency === 'SAR' && this.mispayActive && parseInt(this.price) >= 200;
|
|
223
|
+
}
|
|
159
224
|
/**
|
|
160
225
|
* this is workaround to remove the default border and add margin
|
|
161
226
|
* we will try to remove tabby border 5 times for 7.5 seconds
|
|
@@ -167,7 +232,9 @@ export class SallaInstallment {
|
|
|
167
232
|
this.tabbyRemoveBorderTries++;
|
|
168
233
|
setTimeout(() => {
|
|
169
234
|
let promo = document.querySelector('#tabbyPromo>div>div');
|
|
170
|
-
promo = promo
|
|
235
|
+
promo = promo
|
|
236
|
+
? promo.shadowRoot.querySelector('div[class^="styles__tabby-promo-snippet--"]')
|
|
237
|
+
: null;
|
|
171
238
|
if (promo) {
|
|
172
239
|
promo.style = 'border: none; margin: 15px 0!important;';
|
|
173
240
|
this.tabbyBorderRemoved = true;
|
|
@@ -242,14 +309,32 @@ export class SallaInstallment {
|
|
|
242
309
|
"attribute": "currency",
|
|
243
310
|
"reflect": false,
|
|
244
311
|
"defaultValue": "salla.config.get('user.currency_code')"
|
|
312
|
+
},
|
|
313
|
+
"country": {
|
|
314
|
+
"type": "string",
|
|
315
|
+
"mutable": false,
|
|
316
|
+
"complexType": {
|
|
317
|
+
"original": "string",
|
|
318
|
+
"resolved": "string",
|
|
319
|
+
"references": {}
|
|
320
|
+
},
|
|
321
|
+
"required": false,
|
|
322
|
+
"optional": false,
|
|
323
|
+
"docs": {
|
|
324
|
+
"tags": [],
|
|
325
|
+
"text": "Country code"
|
|
326
|
+
},
|
|
327
|
+
"attribute": "country",
|
|
328
|
+
"reflect": false,
|
|
329
|
+
"defaultValue": "salla.config.get('user.country_code')"
|
|
245
330
|
}
|
|
246
331
|
};
|
|
247
332
|
}
|
|
248
333
|
static get states() {
|
|
249
334
|
return {
|
|
250
|
-
"tamaraIsActive": {},
|
|
251
335
|
"tabbyIsActive": {},
|
|
252
336
|
"spotiiIsActive": {},
|
|
337
|
+
"tamaraIsActive": {},
|
|
253
338
|
"mispayActive": {},
|
|
254
339
|
"installment_sheria_text": {}
|
|
255
340
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salla-installment.js","sourceRoot":"","sources":["../../../src/components/salla-installment/salla-installment.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Element } from '@stencil/core';\n\n@Component({\n tag: 'salla-installment',\n styleUrl: 'salla-installment.scss',\n})\n\nexport class SallaInstallment {\n private tabbyBorderRemoved: boolean = false;\n private tabbyRemoveBorderTries: number = 0;\n @Element() host: HTMLElement;\n constructor() {\n salla.lang.onLoaded(() => {\n this.installment_sheria_text({ payment: salla.money(parseFloat(this.price)), amount: salla.money((parseFloat(this.price) / 3).toFixed(2)), installments: 3 })\n const installment = salla.config.get('store.settings.installments');\n if (installment) {\n this.tamaraIsActive = installment.tamara;\n this.tabbyIsActive = installment.tabby;\n this.spotiiIsActive = installment.spotii;\n this.mispayActive = installment.mispay;\n }\n this.renderInstallments();\n });\n\n salla.event.on('product::price.updated', ({ data }) => {\n if (!data.price || data.price == this.price) {\n return;\n }\n this.price = data.price;\n this.renderInstallments(true);\n });\n }\n\n /**\n * Current product price\n */\n @Prop() price: string;\n /**\n * Language code\n */\n @Prop() language: string = salla.config.get('user.language_code');\n /**\n * Currency code\n */\n @Prop() currency: string = salla.config.get('user.currency_code');\n\n @State() tamaraIsActive: boolean;\n @State() tabbyIsActive: boolean;\n @State() spotiiIsActive: boolean;\n @State() mispayActive: boolean;\n\n @State() installment_sheria_text: (replacement: object) => string = (replacement) => salla.lang.get(\"pages.products.installments\", replacement)\n\n render() {\n if (!this.isValidPrice(this.price)) {\n return '';\n }\n return (\n <Host>\n {this.tamaraIsActive ?\n <div class=\"tamara-product-widget\"\n data-price={this.price}\n data-currency={this.currency}\n data-lang={this.language}\n data-payment-type=\"installment\">\n </div>\n : ''}\n\n {this.tabbyIsActive ?\n <div id=\"tabbyPromoWrapper\">\n <div id=\"tabbyPromo\"></div>\n </div>\n : ''}\n\n {this.spotiiIsActive ?\n <div class=\"spotii-wrapper\">\n {/*No need for the price, the price already in the page, and also tammara & tabby doesn't have price */}\n <div class=\"spotii-promo\"></div>\n </div>\n : ''}\n {this.mispayActive ?\n <div class=\"s-installment-mispay-wrapper\">\n <div class=\"s-installment-mispay-content\">\n <img src={salla.url.cdn('images/payment/png/mispay.png')} alt=\"mispay\" />\n <span class=\"s-installment-mispay-content-text\">{this.installment_sheria_text({ payment: salla.money(parseFloat(this.price)), amount: salla.money((parseFloat(this.price) / 4).toFixed(2)), installments: 4 })}</span>\n </div>\n </div>\n : ''}\n </Host>\n );\n }\n\n renderInstallments(isUpdating: boolean = false) {\n if (!this.isValidPrice(this.price)) {\n return\n }\n // Tamara\n if (this.tamaraIsActive) {\n if (isUpdating) {\n var oldTamaraScript = document.querySelector('script[src=\"https://cdn.tamara.co/widget/product-widget.min.js\"]');\n if (oldTamaraScript) {\n oldTamaraScript.remove();\n }\n }\n\n var tamaraScript = document.createElement('script');\n tamaraScript.setAttribute('src', 'https://cdn.tamara.co/widget/product-widget.min.js');\n document.head.appendChild(tamaraScript);\n tamaraScript.onload = () => {\n window.TamaraProductWidget.init({ lang: this.language });\n setTimeout(() => {\n window.TamaraProductWidget.render();\n }, 300);\n };\n }\n\n // tabby\n if (this.tabbyIsActive) {\n if (isUpdating) {\n\n // remove #tabbyPromoWrapper and re append it\n var oldTabbyWrapper = this.host.querySelector('#tabbyPromoWrapper');\n if (oldTabbyWrapper) {\n oldTabbyWrapper.remove();\n }\n\n var tabbyPromoWrapper = document.createElement('div');\n tabbyPromoWrapper.setAttribute('id', 'tabbyPromoWrapper');\n var tabbyPromo = document.createElement('div');\n tabbyPromo.setAttribute('id', 'tabbyPromo');\n tabbyPromoWrapper.appendChild(tabbyPromo);\n this.host.appendChild(tabbyPromoWrapper);\n\n var oldTabbyScript = document.querySelector('script[src=\"https://checkout.tabby.ai/tabby-promo.js\"]');\n if (oldTabbyScript) {\n oldTabbyScript.remove();\n }\n }\n\n var tabbyScript = document.createElement('script');\n tabbyScript.setAttribute('src', 'https://checkout.tabby.ai/tabby-promo.js');\n document.head.appendChild(tabbyScript);\n tabbyScript.onload = () => {\n const TabbyPromo = window.TabbyPromo;\n new TabbyPromo({\n selector: '#tabbyPromo',\n currency: this.currency,\n price: this.price,\n lang: this.language,\n publicKey: salla.config.get('store.settings.installments.tabby.publicKey'),\n merchantCode: salla.config.get('store.settings.installments.tabby.merchantCode'),\n\n });\n document.querySelectorAll('.tabby-promo-snippet__logo').forEach(function (element) {\n element.setAttribute('aria-label', 'Tabby Logo');\n });\n }\n // this is a workaround to remove the default border and add margin\n this.removeTabbyBorder();\n }\n\n // Spotii\n if (this.spotiiIsActive) {\n if (isUpdating) {\n\n var oldSpotiiWrapper = this.host.querySelector('.spotii-wrapper');\n if (oldSpotiiWrapper) {\n oldSpotiiWrapper.remove();\n }\n\n var spotiiPromoWrapper = document.createElement('div');\n spotiiPromoWrapper.classList.add('spotii-wrapper');\n var spotiiPromo = document.createElement('div');\n spotiiPromo.classList.add('spotii-promo');\n spotiiPromoWrapper.appendChild(spotiiPromo);\n this.host.appendChild(spotiiPromoWrapper);\n var oldSpotiiScript = document.querySelector('script[src=\"' + salla.url.cdn('js/price-widget-ar-salla.js') + '\"]');\n if (oldSpotiiScript) {\n oldSpotiiScript.remove();\n }\n }\n\n let amount = salla.money((Number(this.price) / 3).toFixed(2));\n let isRTL = salla.config.get('theme.is_rtl', true);\n window.spotiiConfig = {\n targetXPath: ['.spotii-wrapper'],\n renderToPath: ['.spotii-promo'],\n numberOfPayment: 3,\n currency: this.currency,\n templateLine: \"${textOne} ${number} ${textTwo} \" + amount + \"${logo} ${info}\",\n //todo:: translate these\n textOne: isRTL ? \"جزء الدفع على\" : \"Split it into\",\n textTwo: isRTL ? \"أقساط متساوية بدون تكاليف اضافية بقيمة\" : \"payments of\",\n textThree: \"مع\",\n price: this.price,\n // forcedShow: false,\n // merchantID: null,\n };\n\n var spotiiScript = document.createElement('script');\n spotiiScript.setAttribute('src', salla.url.cdn('js/price-widget-ar-salla.js'));\n document.head.appendChild(spotiiScript);\n // spotiiScript.onload = () => {\n // // setTimeout()\n // }\n }\n }\n\n private isValidPrice(price: string): boolean {\n const pricePattern = /^\\d+(\\.\\d{1,2})?$/;\n const isValid = pricePattern.test(price);\n const isGreaterThanZero = parseFloat(price) > 0;\n\n return isValid && isGreaterThanZero;\n }\n\n /**\n * this is workaround to remove the default border and add margin\n * we will try to remove tabby border 5 times for 7.5 seconds\n */\n removeTabbyBorder() {\n if (this.tabbyBorderRemoved || this.tabbyRemoveBorderTries > 5) {\n return;\n }\n this.tabbyRemoveBorderTries++;\n setTimeout(() => {\n let promo: any = document.querySelector('#tabbyPromo>div>div');\n promo = promo ? promo.shadowRoot.querySelector('div[class^=\"styles__tabby-promo-snippet--\"]') : null;\n if (promo) {\n promo.style = 'border: none; margin: 15px 0!important;';\n this.tabbyBorderRemoved = true;\n } else {\n this.removeTabbyBorder();\n }\n }, this.tabbyRemoveBorderTries * 500)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"salla-installment.js","sourceRoot":"","sources":["../../../src/components/salla-installment/salla-installment.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Element } from '@stencil/core';\n\n@Component({\n tag: 'salla-installment',\n styleUrl: 'salla-installment.scss',\n})\nexport class SallaInstallment {\n private tabbyBorderRemoved: boolean = false;\n private tabbyRemoveBorderTries: number = 0;\n @Element() host: HTMLElement;\n constructor() {\n salla.lang.onLoaded(() => {\n this.installment_sheria_text({\n payment: salla.money(parseFloat(this.price)),\n amount: salla.money((parseFloat(this.price) / 3).toFixed(2)),\n installments: 3,\n });\n const installment = salla.config.get('store.settings.installments');\n if (installment) {\n this.tamaraIsActive = installment.tamara;\n this.tabbyIsActive = installment.tabby;\n this.spotiiIsActive = installment.spotii;\n this.mispayActive = installment.mispay;\n }\n this.renderInstallments();\n });\n\n salla.event.on('product::price.updated', ({ data }) => {\n if (!data.price || data.price == this.price) {\n return;\n }\n this.price = data.price;\n this.renderInstallments(true);\n });\n }\n\n /**\n * Current product price\n */\n @Prop() price: string;\n /**\n * Language code\n */\n @Prop() language: string = salla.config.get('user.language_code');\n /**\n * Currency code\n */\n @Prop() currency: string = salla.config.get('user.currency_code');\n /**\n * Country code\n */\n @Prop() country: string = salla.config.get('user.country_code');\n\n @State() tabbyIsActive: boolean;\n @State() spotiiIsActive: boolean;\n @State() tamaraIsActive: null | { publicKey: string };\n @State() mispayActive: null | { merchantCode: string; publicKey: string };\n\n @State() installment_sheria_text: (replacement: object) => string = replacement =>\n salla.lang.get('pages.products.installments', replacement);\n\n render() {\n if (!this.isValidPrice(this.price)) {\n return '';\n }\n return (\n <Host>\n {this.tamaraIsActive &&\n (this.tamaraIsActive?.publicKey ? (\n // Tamara widget v2\n <div class=\"mb-5\">\n <tamara-widget\n type=\"tamara-summary\"\n inline-type=\"2\"\n amount={this.price}\n ></tamara-widget>\n </div>\n ) : (\n // Tamara widget v1 fallback\n <div\n class=\"tamara-product-widget\"\n data-price={this.price}\n data-currency={this.currency}\n data-lang={this.language}\n data-payment-type=\"installment\"\n ></div>\n ))}\n\n {this.tabbyIsActive ? (\n <div id=\"tabbyPromoWrapper\">\n <div id=\"tabbyPromo\"></div>\n </div>\n ) : (\n ''\n )}\n\n {this.spotiiIsActive ? (\n <div class=\"spotii-wrapper\">\n {/*No need for the price, the price already in the page, and also tammara & tabby doesn't have price */}\n <div class=\"spotii-promo\"></div>\n </div>\n ) : (\n ''\n )}\n\n {this.shouldShowMispay() &&\n (this.mispayActive.publicKey ? (\n <div class=\"mb-5\">\n <mispay-widget amount={this.price} lang={this.language}></mispay-widget>\n </div>\n ) : (\n <div class=\"s-installment-mispay-wrapper\">\n <div class=\"s-installment-mispay-content\">\n <img src={salla.url.cdn('images/payment/png/mispay.png')} alt=\"mispay\" />\n <span class=\"s-installment-mispay-content-text\">\n {this.installment_sheria_text({\n payment: salla.money(parseFloat(this.price)),\n amount: salla.money((parseFloat(this.price) / 4).toFixed(2)),\n installments: 4,\n })}\n </span>\n </div>\n </div>\n ))}\n </Host>\n );\n }\n\n renderInstallments(isUpdating: boolean = false) {\n if (!this.isValidPrice(this.price)) {\n return;\n }\n // Tamara\n if (this.tamaraIsActive) {\n this.loadTamara({ isUpdating });\n }\n\n // tabby\n if (this.tabbyIsActive) {\n if (isUpdating) {\n // remove #tabbyPromoWrapper and re append it\n var oldTabbyWrapper = this.host.querySelector('#tabbyPromoWrapper');\n if (oldTabbyWrapper) {\n oldTabbyWrapper.remove();\n }\n\n var tabbyPromoWrapper = document.createElement('div');\n tabbyPromoWrapper.setAttribute('id', 'tabbyPromoWrapper');\n var tabbyPromo = document.createElement('div');\n tabbyPromo.setAttribute('id', 'tabbyPromo');\n tabbyPromoWrapper.appendChild(tabbyPromo);\n this.host.appendChild(tabbyPromoWrapper);\n\n var oldTabbyScript = document.querySelector(\n 'script[src=\"https://checkout.tabby.ai/tabby-promo.js\"]',\n );\n if (oldTabbyScript) {\n oldTabbyScript.remove();\n }\n }\n\n var tabbyScript = document.createElement('script');\n tabbyScript.setAttribute('src', 'https://checkout.tabby.ai/tabby-promo.js');\n document.head.appendChild(tabbyScript);\n tabbyScript.onload = () => {\n const TabbyPromo = window.TabbyPromo;\n new TabbyPromo({\n selector: '#tabbyPromo',\n currency: this.currency,\n price: this.price,\n lang: this.language,\n publicKey: salla.config.get('store.settings.installments.tabby.publicKey'),\n merchantCode: salla.config.get('store.settings.installments.tabby.merchantCode'),\n });\n document.querySelectorAll('.tabby-promo-snippet__logo').forEach(function (element) {\n element.setAttribute('aria-label', 'Tabby Logo');\n });\n };\n // this is a workaround to remove the default border and add margin\n this.removeTabbyBorder();\n }\n\n // Spotii\n if (this.spotiiIsActive) {\n if (isUpdating) {\n var oldSpotiiWrapper = this.host.querySelector('.spotii-wrapper');\n if (oldSpotiiWrapper) {\n oldSpotiiWrapper.remove();\n }\n\n var spotiiPromoWrapper = document.createElement('div');\n spotiiPromoWrapper.classList.add('spotii-wrapper');\n var spotiiPromo = document.createElement('div');\n spotiiPromo.classList.add('spotii-promo');\n spotiiPromoWrapper.appendChild(spotiiPromo);\n this.host.appendChild(spotiiPromoWrapper);\n var oldSpotiiScript = document.querySelector(\n 'script[src=\"' + salla.url.cdn('js/price-widget-ar-salla.js') + '\"]',\n );\n if (oldSpotiiScript) {\n oldSpotiiScript.remove();\n }\n }\n\n let amount = salla.money((Number(this.price) / 3).toFixed(2));\n let isRTL = salla.config.get('theme.is_rtl', true);\n window.spotiiConfig = {\n targetXPath: ['.spotii-wrapper'],\n renderToPath: ['.spotii-promo'],\n numberOfPayment: 3,\n currency: this.currency,\n templateLine: '${textOne} ${number} ${textTwo} ' + amount + '${logo} ${info}',\n //todo:: translate these\n textOne: isRTL ? 'جزء الدفع على' : 'Split it into',\n textTwo: isRTL ? 'أقساط متساوية بدون تكاليف اضافية بقيمة' : 'payments of',\n textThree: 'مع',\n price: this.price,\n // forcedShow: false,\n // merchantID: null,\n };\n\n var spotiiScript = document.createElement('script');\n spotiiScript.setAttribute('src', salla.url.cdn('js/price-widget-ar-salla.js'));\n document.head.appendChild(spotiiScript);\n // spotiiScript.onload = () => {\n // // setTimeout()\n // }\n }\n\n // Mispay\n if (this.shouldShowMispay() && this.mispayActive.publicKey) {\n this.loadExternalScript({\n position: 'head',\n src: `https://widget.mispay.co/v1/sdk.js?authorize=${this.mispayActive.publicKey}`,\n });\n }\n }\n\n private isValidPrice(price: string): boolean {\n const pricePattern = /^\\d+(\\.\\d{1,2})?$/;\n const isValid = pricePattern.test(price);\n const isGreaterThanZero = parseFloat(price) > 0;\n\n return isValid && isGreaterThanZero;\n }\n\n loadExternalScript({\n src,\n onLoad,\n position,\n }: {\n src: string;\n onLoad?: HTMLScriptElement['onload'];\n position: 'head' | 'body';\n }) {\n const script = document.createElement('script');\n script.src = src;\n script.onload = onLoad;\n document[position].appendChild(script);\n }\n\n loadTamara({ isUpdating }: { isUpdating: boolean }) {\n const isV2Enabled = !!this.tamaraIsActive?.publicKey;\n\n if (isUpdating) {\n setTimeout(() => {\n if (isV2Enabled) {\n return window.TamaraWidgetV2?.refresh();\n }\n\n // v1 fallback widget refresh\n window.TamaraProductWidget?.render();\n }, 300);\n } else {\n if (isV2Enabled) {\n const language_code = salla.config.get('user.language_code');\n const lang = ['ar', 'en'].includes(language_code) ? language_code : 'ar';\n // this used in case user change the currency to get the country code\n const countryCodeByCurrency = this.currency.slice(0, -1);\n const country = ['SA', 'AE', 'KW', 'BH', 'OM', 'QA'].includes(countryCodeByCurrency)\n ? countryCodeByCurrency\n : null;\n\n if (!country) {\n console.error('Tamara: Country code is not supported', countryCodeByCurrency);\n } else {\n window.tamaraWidgetConfig = {\n lang,\n country,\n publicKey: this.tamaraIsActive.publicKey,\n style: {\n fontSize: '14px',\n },\n };\n\n this.loadExternalScript({\n position: 'head',\n src: 'https://cdn.tamara.co/widget-v2/tamara-widget.js',\n });\n }\n } else {\n // v1 fallback widget\n this.loadExternalScript({\n position: 'head',\n src: 'https://cdn.tamara.co/widget/product-widget.min.js',\n onLoad: () => {\n window.TamaraProductWidget.init({ lang: this.language });\n setTimeout(() => {\n window.TamaraProductWidget.render();\n }, 300);\n },\n });\n }\n }\n }\n\n shouldShowMispay() {\n return this.currency === 'SAR' && this.mispayActive && parseInt(this.price) >= 200;\n }\n\n /**\n * this is workaround to remove the default border and add margin\n * we will try to remove tabby border 5 times for 7.5 seconds\n */\n removeTabbyBorder() {\n if (this.tabbyBorderRemoved || this.tabbyRemoveBorderTries > 5) {\n return;\n }\n this.tabbyRemoveBorderTries++;\n setTimeout(() => {\n let promo: any = document.querySelector('#tabbyPromo>div>div');\n promo = promo\n ? promo.shadowRoot.querySelector('div[class^=\"styles__tabby-promo-snippet--\"]')\n : null;\n if (promo) {\n promo.style = 'border: none; margin: 15px 0!important;';\n this.tabbyBorderRemoved = true;\n } else {\n this.removeTabbyBorder();\n }\n }, this.tabbyRemoveBorderTries * 500);\n }\n}\n"]}
|