@salla.sa/twilight-components 2.12.68 → 2.12.71
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-537a7062.js → app-globals-36ab7ecf.js} +2 -2
- package/dist/cjs/{app-globals-537a7062.js.map → app-globals-36ab7ecf.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-add-product-button_47.cjs.entry.js +20 -5
- package/dist/cjs/salla-add-product-button_47.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-contacts.cjs.entry.js +2 -0
- package/dist/cjs/salla-contacts.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js +96 -3
- package/dist/cjs/salla-filters.cjs.entry.js.map +1 -1
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/collection/components/salla-bottom-alert/salla-bottom-alert.js +25 -6
- package/dist/collection/components/salla-bottom-alert/salla-bottom-alert.js.map +1 -1
- package/dist/collection/components/salla-contacts/salla-contacts.js +2 -0
- package/dist/collection/components/salla-contacts/salla-contacts.js.map +1 -1
- package/dist/collection/components/salla-filters/salla-filters.js +96 -3
- package/dist/collection/components/salla-filters/salla-filters.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/salla-bottom-alert.js +25 -6
- package/dist/components/salla-bottom-alert.js.map +1 -1
- package/dist/components/salla-contacts.js +2 -0
- package/dist/components/salla-contacts.js.map +1 -1
- package/dist/components/salla-filters.js +96 -3
- package/dist/components/salla-filters.js.map +1 -1
- package/dist/esm/{app-globals-7795aa55.js → app-globals-3843d7b4.js} +2 -2
- package/dist/esm/{app-globals-7795aa55.js.map → app-globals-3843d7b4.js.map} +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/salla-add-product-button_47.entry.js +20 -5
- package/dist/esm/salla-add-product-button_47.entry.js.map +1 -1
- package/dist/esm/salla-contacts.entry.js +2 -0
- package/dist/esm/salla-contacts.entry.js.map +1 -1
- package/dist/esm/salla-filters.entry.js +96 -3
- package/dist/esm/salla-filters.entry.js.map +1 -1
- package/dist/esm/twilight.js +2 -2
- package/dist/esm-es5/{app-globals-7795aa55.js → app-globals-3843d7b4.js} +2 -2
- package/dist/{twilight/p-14c42ca3.system.js.map → esm-es5/app-globals-3843d7b4.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_47.entry.js +1 -1
- package/dist/esm-es5/salla-add-product-button_47.entry.js.map +1 -1
- package/dist/esm-es5/salla-contacts.entry.js +1 -1
- package/dist/esm-es5/salla-contacts.entry.js.map +1 -1
- package/dist/esm-es5/salla-filters.entry.js +2 -2
- package/dist/esm-es5/salla-filters.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-0b684f2a.system.entry.js → p-0a6b09fa.system.entry.js} +2 -2
- package/dist/twilight/p-0a6b09fa.system.entry.js.map +1 -0
- package/dist/twilight/p-2059b78a.system.js +5 -0
- package/dist/twilight/{p-a8240d5d.system.js.map → p-2059b78a.system.js.map} +1 -1
- package/dist/twilight/{p-bd831e45.entry.js → p-29f9af2d.entry.js} +2 -2
- package/dist/twilight/p-29f9af2d.entry.js.map +1 -0
- package/dist/twilight/p-412d8d1c.entry.js +5 -0
- package/dist/twilight/p-412d8d1c.entry.js.map +1 -0
- package/dist/twilight/{p-688e0ccc.system.entry.js → p-5bf1cc00.system.entry.js} +2 -2
- package/dist/twilight/p-5bf1cc00.system.entry.js.map +1 -0
- package/dist/twilight/{p-da02effc.js → p-66395721.js} +2 -2
- package/dist/twilight/{p-da02effc.js.map → p-66395721.js.map} +1 -1
- package/dist/twilight/{p-14c42ca3.system.js → p-75f5e4ac.system.js} +2 -2
- package/dist/{esm-es5/app-globals-7795aa55.js.map → twilight/p-75f5e4ac.system.js.map} +1 -1
- package/dist/twilight/{p-8defc948.entry.js → p-902f747a.entry.js} +2 -2
- package/dist/twilight/p-902f747a.entry.js.map +1 -0
- package/dist/twilight/p-d3520da5.system.entry.js +5 -0
- package/dist/twilight/p-d3520da5.system.entry.js.map +1 -0
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/twilight/twilight.esm.js.map +1 -1
- package/dist/twilight/twilight.js +1 -1
- package/dist/types/components/salla-bottom-alert/salla-bottom-alert.d.ts +5 -0
- package/dist/types/components/salla-filters/salla-filters.d.ts +4 -0
- package/package.json +5 -5
- package/dist/twilight/p-0b684f2a.system.entry.js.map +0 -1
- package/dist/twilight/p-2ad1baef.entry.js +0 -5
- package/dist/twilight/p-2ad1baef.entry.js.map +0 -1
- package/dist/twilight/p-688e0ccc.system.entry.js.map +0 -1
- package/dist/twilight/p-8defc948.entry.js.map +0 -1
- package/dist/twilight/p-a8240d5d.system.js +0 -5
- package/dist/twilight/p-bd831e45.entry.js.map +0 -1
- package/dist/twilight/p-d236e332.system.entry.js +0 -5
- package/dist/twilight/p-d236e332.system.entry.js.map +0 -1
|
@@ -28,14 +28,18 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
|
|
|
28
28
|
super();
|
|
29
29
|
this.__registerHost();
|
|
30
30
|
this.storeId = salla.config.get('store.id');
|
|
31
|
+
this.template = salla.config.get('store.template');
|
|
31
32
|
this.loading = false;
|
|
32
33
|
this.templateData = {};
|
|
33
34
|
this.defaultMessage = salla.lang.get('common.elements.experimental_and_available_store');
|
|
34
35
|
this.defaultActionLabel = salla.lang.get('common.elements.know_more');
|
|
35
36
|
this.storeFeatures = salla.lang.get('common.elements.store_features');
|
|
36
37
|
this.storeDetails = salla.lang.get('common.elements.store_details');
|
|
38
|
+
this.storePrice = salla.lang.get('common.elements.store_price');
|
|
39
|
+
this.theDeveloper = salla.lang.get('common.elements.the_developer');
|
|
37
40
|
this.templateInformation = salla.lang.get('common.elements.template_information');
|
|
38
41
|
this.buyTheTemplate = salla.lang.get('common.elements.buy_the_template');
|
|
42
|
+
this.isRtl = salla.config.get('theme.is_rtl', true);
|
|
39
43
|
this.type = 'popup';
|
|
40
44
|
this.icon = undefined;
|
|
41
45
|
this.message = undefined;
|
|
@@ -48,12 +52,23 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
|
|
|
48
52
|
this.storeDetails = salla.lang.get('common.elements.store_details');
|
|
49
53
|
this.templateInformation = salla.lang.get('common.elements.template_information');
|
|
50
54
|
this.buyTheTemplate = salla.lang.get('common.elements.buy_the_template');
|
|
55
|
+
salla.helpers.setNested(salla.lang.messages['ar.trans'], 'common.elements.store_price', 'سعر المتجر');
|
|
56
|
+
salla.helpers.setNested(salla.lang.messages['en.trans'], 'common.elements.store_price', 'Store Price');
|
|
57
|
+
salla.helpers.setNested(salla.lang.messages['ar.trans'], 'common.elements.the_developer', 'المطور');
|
|
58
|
+
salla.helpers.setNested(salla.lang.messages['en.trans'], 'common.elements.the_developer', 'the developer');
|
|
59
|
+
setTimeout(() => {
|
|
60
|
+
this.storePrice = salla.lang.get('common.elements.store_price');
|
|
61
|
+
this.theDeveloper = salla.lang.get('common.elements.the_developer');
|
|
62
|
+
});
|
|
51
63
|
});
|
|
52
64
|
}
|
|
53
65
|
open() {
|
|
54
66
|
return this.modal.open()
|
|
55
67
|
.then(() => this.handleTemplateRequest());
|
|
56
68
|
}
|
|
69
|
+
getDefaultMessage() {
|
|
70
|
+
return this.isRtl ? this.defaultMessage.substring(0, this.defaultMessage.lastIndexOf(" ")) : this.defaultMessage.split(" ").slice(0, -2).join(" ");
|
|
71
|
+
}
|
|
57
72
|
handleTemplateRequest() {
|
|
58
73
|
if (Object.keys(this.templateData).length) {
|
|
59
74
|
return;
|
|
@@ -78,9 +93,9 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
|
|
|
78
93
|
}
|
|
79
94
|
}
|
|
80
95
|
popup() {
|
|
81
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
96
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
82
97
|
return (h("salla-modal", { class: "s-bottom-alert-modal", ref: modal => this.modal = modal, "no-padding": true }, Object.keys(this.templateData).length ?
|
|
83
|
-
[h("div", { class: "s-bottom-alert-modal-inner s-scrollbar" }, Array.isArray((_a = this.templateData) === null || _a === void 0 ? void 0 : _a.screenshots) && ((_c = (_b = this.templateData) === null || _b === void 0 ? void 0 : _b.screenshots) === null || _c === void 0 ? void 0 : _c.length) ? h("div", { class: "s-bottom-alert-modal-cover" }, h("img", { src: (_d = this.templateData) === null || _d === void 0 ? void 0 : _d.screenshots[0], alt: "" })) : '', h("div", { class: "s-bottom-alert-modal-content" }, ((_e = this.templateData) === null || _e === void 0 ? void 0 : _e.description) ?
|
|
98
|
+
[h("div", { class: "s-bottom-alert-modal-inner s-scrollbar" }, Array.isArray((_a = this.templateData) === null || _a === void 0 ? void 0 : _a.screenshots) && ((_c = (_b = this.templateData) === null || _b === void 0 ? void 0 : _b.screenshots) === null || _c === void 0 ? void 0 : _c.length) ? h("div", { class: "s-bottom-alert-modal-cover" }, h("img", { src: (_d = this.templateData) === null || _d === void 0 ? void 0 : _d.screenshots[0], alt: "" })) : '', h("div", { class: { "s-bottom-alert-modal-content": true, "s-bottom-alert-modal-content-extra-padding": this.templateData.price } }, ((_e = this.templateData) === null || _e === void 0 ? void 0 : _e.description) ?
|
|
84
99
|
[h("div", { class: "s-bottom-alert-modal-content-title" }, this.storeDetails), h("div", { class: "s-bottom-alert-modal-content-description", innerHTML: (_f = this.templateData) === null || _f === void 0 ? void 0 : _f.description }), h("hr", null)
|
|
85
100
|
] : '', ((_g = this.templateData) === null || _g === void 0 ? void 0 : _g.features) ? [h("div", { class: "s-bottom-alert-modal-content-title" }, this.storeFeatures), h("div", { class: "s-bottom-alert-modal-content-features", innerHTML: (_h = this.templateData) === null || _h === void 0 ? void 0 : _h.features })
|
|
86
101
|
] : '', Array.isArray((_j = this.templateData) === null || _j === void 0 ? void 0 : _j.screenshots) && ((_l = (_k = this.templateData) === null || _k === void 0 ? void 0 : _k.screenshots) === null || _l === void 0 ? void 0 : _l.length) > 1 ?
|
|
@@ -89,11 +104,11 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
|
|
|
89
104
|
})))
|
|
90
105
|
: '', ((_o = this.templateData) === null || _o === void 0 ? void 0 : _o.extra_info) ?
|
|
91
106
|
h("div", { class: "s-bottom-alert-modal-content-description", innerHTML: (_p = this.templateData) === null || _p === void 0 ? void 0 : _p.description })
|
|
92
|
-
: '', ((_q = this.templateData) === null || _q === void 0 ? void 0 : _q.link) ?
|
|
93
|
-
h("div", { class: "s-bottom-alert-modal-content-footer" }, h("salla-button", { color: 'primary', size: "medium", width: 'wide', href: (
|
|
107
|
+
: ''), ((_q = this.templateData) === null || _q === void 0 ? void 0 : _q.link) ?
|
|
108
|
+
h("div", { class: "s-bottom-alert-modal-content-footer" }, this.templateData.price && h("div", { class: "s-bottom-alert-modal-price-wrapper" }, h("div", null, this.storePrice), h("div", { class: "s-bottom-alert-modal-price-wrapper-amount" }, salla.money((_r = this.templateData) === null || _r === void 0 ? void 0 : _r.price))), h("salla-button", { color: 'primary', size: "medium", width: 'wide', href: (_s = this.templateData) === null || _s === void 0 ? void 0 : _s.link }, h("i", { innerHTML: shoppingBag }), this.buyTheTemplate)) : '')] : ''));
|
|
94
109
|
}
|
|
95
110
|
render() {
|
|
96
|
-
return (h(Host, { class: "s-bottom-alert-wrapper" }, h("div", { class: "s-bottom-alert-content" }, h("div", { class: "s-bottom-alert-icon" }, this.icon ? h("i", { class: this.icon }) : h("i", { innerHTML: infoIcon })), h("div", { class: "s-bottom-alert-message" }, this.message ? this.message : this.defaultMessage), this.type !== 'banner' ? (h("div", { class: "s-bottom-alert-action" }, h("salla-button", { href: this.actionUrl, size: "medium", onClick: () => this.handleAction(), width: "normal" }, this.actionLabel ? this.actionLabel : this.defaultActionLabel))) : null, this.type === 'popup' ? this.popup() : null)));
|
|
111
|
+
return (h(Host, { class: "s-bottom-alert-wrapper" }, h("div", { class: "s-bottom-alert-content" }, h("div", { class: "s-bottom-alert-icon" }, this.icon ? h("i", { class: this.icon }) : h("i", { innerHTML: infoIcon })), h("div", { class: "s-bottom-alert-message" }, this.message ? (this.message) : typeof this.template == 'object' && Object.keys(this.template).length ? (h("span", null, this.getDefaultMessage(), " ", h("span", { class: "s-bottom-alert-message-highlight" }, this.template.developer && this.template.developer.name ? this.template.developer.name : this.theDeveloper), " ", h("span", { class: "s-bottom-alert-message-splitter" }, "|"), " ", this.storePrice, ":", " ", h("span", { class: "s-bottom-alert-message-highlight" }, salla.money(this.template.price)))) : (this.defaultMessage)), this.type !== 'banner' ? (h("div", { class: "s-bottom-alert-action" }, h("salla-button", { href: this.actionUrl, size: "medium", onClick: () => this.handleAction(), width: "normal" }, this.actionLabel ? this.actionLabel : this.defaultActionLabel))) : null, this.type === 'popup' ? this.popup() : null)));
|
|
97
112
|
}
|
|
98
113
|
get host() { return this; }
|
|
99
114
|
static get style() { return sallaBottomAlertCss; }
|
|
@@ -104,14 +119,18 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
|
|
|
104
119
|
"actionUrl": [513, "action-url"],
|
|
105
120
|
"actionLabel": [513, "action-label"],
|
|
106
121
|
"storeId": [32],
|
|
122
|
+
"template": [32],
|
|
107
123
|
"loading": [32],
|
|
108
124
|
"templateData": [32],
|
|
109
125
|
"defaultMessage": [32],
|
|
110
126
|
"defaultActionLabel": [32],
|
|
111
127
|
"storeFeatures": [32],
|
|
112
128
|
"storeDetails": [32],
|
|
129
|
+
"storePrice": [32],
|
|
130
|
+
"theDeveloper": [32],
|
|
113
131
|
"templateInformation": [32],
|
|
114
|
-
"buyTheTemplate": [32]
|
|
132
|
+
"buyTheTemplate": [32],
|
|
133
|
+
"isRtl": [32]
|
|
115
134
|
}]);
|
|
116
135
|
function defineCustomElement$1() {
|
|
117
136
|
if (typeof customElements === "undefined") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"salla-bottom-alert.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAM,mBAAmB,GAAG,sBAAsB;;MCOrCA,kBAAgB;EAC3B;;;mBAc2B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;mBAC3B,KAAK;wBACJ,EAAE;0BACG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC;8BAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC;yBAChD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC;wBACjD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC;+BACxC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC;0BAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC;gBAIvB,OAAO;;;;;IAzBlE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;MAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;MACzF,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;MACtE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;MACtE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;MACpE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;MAClF,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;KAC1E,CAAC,CAAC;GACJ;EAuCO,IAAI;IACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;OACrB,IAAI,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAA;GAC5C;EAEO,qBAAqB;IAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;MACzC,OAAO;KACR;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IACpB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;OACzF,IAAI,CAAC,CAAC,GAAG;MACR,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;MAC7C,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAA;MAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;KACzB,CAAC;OACD,KAAK,CAAC;MACL,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;KACnB,CAAC,CAAA;GACL;EAEO,YAAY;IAClB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;MACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;KACvC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;MACzB,IAAI,CAAC,IAAI,EAAE,CAAA;KACZ;GACF;EAED,KAAK;;IACH,QACE,mBAAa,KAAK,EAAC,sBAAsB,EAAC,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,wBACvE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM;MACpC,CAAC,WAAK,KAAK,EAAC,wCAAwC,IACjD,KAAK,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,CAAC,KAAI,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,0CAAE,MAAM,CAAA,GAAG,WAAK,KAAK,EAAC,4BAA4B,IAChI,WAAK,GAAG,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAC,EAAE,GAAG,CAClD,GAAG,EAAE,EACX,WAAK,KAAK,EAAC,8BAA8B,IACtC,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW;UAC7B,CAAC,WAAK,KAAK,EAAC,oCAAoC,IAC7C,IAAI,CAAC,YAAY,CACd,EACN,WAAK,KAAK,EAAC,0CAA0C,EAAC,SAAS,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,GAAQ,EACvG,aAAM;WACL,GAAG,EAAE,EACP,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ,IAAG,CAAC,WAAK,KAAK,EAAC,oCAAoC,IAC5E,IAAI,CAAC,aAAa,CACf,EACN,WAAK,KAAK,EAAC,uCAAuC,EAAC,SAAS,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ,GAAQ;SAChG,GAAG,EAAE,EACL,KAAK,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,CAAC,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,0CAAE,MAAM,IAAG,CAAC;UAC1F,oBAAc,EAAE,EAAC,sBAAsB,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,0CAA0C,IACtG,WAAK,IAAI,EAAC,OAAO,IACd,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU;YAC7C,OAAO,WAAK,KAAK,EAAC,yCAAyC,IACzD,WAAK,GAAG,EAAE,UAAU,EAAE,GAAG,EAAC,EAAE,GAAG,CAC3B,CAAA;WACP,CAAC,CACE,CACO;YACb,EAAE,EAEL,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,UAAU;UAC5B,WAAK,KAAK,EAAC,0CAA0C,EAAC,SAAS,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,GAAQ;YACrG,EAAE,EAEL,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI;UACtB,WAAK,KAAK,EAAC,qCAAqC,IAC9C,oBACE,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,MAAM,EACZ,IAAI,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI,IAE7B,SAAG,SAAS,EAAE,WAAW,GAAM,EAC9B,IAAI,CAAC,cAAc,CACP,CACX,GAAG,EAAE,CAGT,CACF,CAAC,GAAG,EAAE,CAGF,EACf;GACF;EACD,MAAM;IACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,wBAAwB,IAClC,WAAK,KAAK,EAAC,wBAAwB,IACjC,WAAK,KAAK,EAAC,qBAAqB,IAC7B,IAAI,CAAC,IAAI,GAAG,SAAG,KAAK,EAAE,IAAI,CAAC,IAAI,GAAM,GAAG,SAAG,SAAS,EAAE,QAAQ,GAAM,CACjE,EACN,WAAK,KAAK,EAAC,wBAAwB,IAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAC9C,EACL,IAAI,CAAC,IAAI,KAAK,QAAQ,IACrB,WAAK,KAAK,EAAC,uBAAuB,IAChC,oBACE,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,EAClC,KAAK,EAAC,QAAQ,IAEb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CACjD,CACX,IACJ,IAAI,EAEN,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAEzC,CACD,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["SallaBottomAlert"],"sources":["src/components/salla-bottom-alert/salla-bottom-alert.scss?tag=salla-bottom-alert","src/components/salla-bottom-alert/salla-bottom-alert.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, h, Element, Prop, State } from '@stencil/core';\nimport infoIcon from '../../assets/svg/info.svg';\nimport shoppingBag from '../../assets/svg/shopping-bag2.svg';\n@Component({\n tag: 'salla-bottom-alert',\n styleUrl: 'salla-bottom-alert.scss',\n})\nexport class SallaBottomAlert {\n constructor() {\n salla.lang.onLoaded(() => {\n this.defaultMessage = salla.lang.get('common.elements.experimental_and_available_store');\n this.defaultActionLabel = salla.lang.get('common.elements.know_more');\n this.storeFeatures = salla.lang.get('common.elements.store_features');\n this.storeDetails = salla.lang.get('common.elements.store_details');\n this.templateInformation = salla.lang.get('common.elements.template_information');\n this.buyTheTemplate = salla.lang.get('common.elements.buy_the_template');\n });\n }\n\n private modal: HTMLSallaModalElement;\n @Element() host: HTMLElement;\n\n @State() storeId: string = salla.config.get('store.id')\n @State() loading: boolean = false\n @State() templateData: any = {}\n @State() defaultMessage: string = salla.lang.get('common.elements.experimental_and_available_store');\n @State() defaultActionLabel: string = salla.lang.get('common.elements.know_more');\n @State() storeFeatures: string = salla.lang.get('common.elements.store_features');\n @State() storeDetails: string = salla.lang.get('common.elements.store_details');\n @State() templateInformation: string = salla.lang.get('common.elements.template_information');\n @State() buyTheTemplate: string = salla.lang.get('common.elements.buy_the_template');\n /**\n * Alert Type\n * */\n @Prop({ reflect: true }) type: 'link' | 'popup' | 'banner' = 'popup';\n\n /**\n * Alert Icon class from salla icons library - ex: sicon-user\n * */\n @Prop({ reflect: true }) icon: string;\n\n /**\n * Alert Message\n * */\n @Prop({ reflect: true }) message: string;\n\n /**\n * Button url - used when type is link\n * */\n @Prop({ reflect: true }) actionUrl: string;\n\n /**\n * Button label - used when type is link and popup\n * */\n @Prop({ reflect: true }) actionLabel: string;\n\n private open() {\n return this.modal.open()\n .then(() => this.handleTemplateRequest())\n }\n\n private handleTemplateRequest() {\n if (Object.keys(this.templateData).length) {\n return;\n }\n this.modal.loading()\n return salla.api.request(`/store/template`, {}, 'get', { 'Store-Identifier': this.storeId })\n .then((res) => {\n this.modal.setTitle(this.templateInformation)\n this.templateData = res.data\n this.modal.stopLoading()\n })\n .catch(() => {\n this.modal.close()\n })\n }\n\n private handleAction() {\n if (this.type === 'link') {\n window.location.href = this.actionUrl;\n }\n\n if (this.type === 'popup') {\n this.open()\n }\n }\n\n popup() {\n return (\n <salla-modal class=\"s-bottom-alert-modal\" ref={modal => this.modal = modal} no-padding>\n {Object.keys(this.templateData).length ?\n [<div class=\"s-bottom-alert-modal-inner s-scrollbar\">\n {Array.isArray(this.templateData?.screenshots) && this.templateData?.screenshots?.length ? <div class=\"s-bottom-alert-modal-cover\">\n <img src={this.templateData?.screenshots[0]} alt=\"\" />\n </div> : ''}\n <div class=\"s-bottom-alert-modal-content\">\n {this.templateData?.description ?\n [<div class=\"s-bottom-alert-modal-content-title\">\n {this.storeDetails}\n </div>,\n <div class=\"s-bottom-alert-modal-content-description\" innerHTML={this.templateData?.description}></div>,\n <hr />\n ] : ''}\n {this.templateData?.features ? [<div class=\"s-bottom-alert-modal-content-title\">\n {this.storeFeatures}\n </div>,\n <div class=\"s-bottom-alert-modal-content-features\" innerHTML={this.templateData?.features}></div>\n ] : ''}\n {Array.isArray(this.templateData?.screenshots) && this.templateData?.screenshots?.length > 1 ?\n <salla-slider id='template-screenshots' type='carousel' class=\"s-bottom-alert-modal-content-screenshots\">\n <div slot='items'>\n {this.templateData?.screenshots.map((screenshot) => {\n return <div class=\"s-bottom-alert-modal-content-screenshot\">\n <img src={screenshot} alt=\"\" />\n </div>\n })}\n </div>\n </salla-slider>\n : ''}\n\n {this.templateData?.extra_info ?\n <div class=\"s-bottom-alert-modal-content-description\" innerHTML={this.templateData?.description}></div>\n : ''}\n\n {this.templateData?.link ?\n <div class=\"s-bottom-alert-modal-content-footer\">\n <salla-button\n color='primary'\n size=\"medium\"\n width='wide'\n href={this.templateData?.link}\n >\n <i innerHTML={shoppingBag}></i>\n {this.buyTheTemplate} \n </salla-button>\n </div> : ''\n }\n\n </div>\n </div>] : ''\n }\n\n </salla-modal>\n )\n }\n render() {\n return (\n <Host class=\"s-bottom-alert-wrapper\">\n <div class=\"s-bottom-alert-content\">\n <div class=\"s-bottom-alert-icon\">\n {this.icon ? <i class={this.icon}></i> : <i innerHTML={infoIcon}></i>}\n </div>\n <div class=\"s-bottom-alert-message\">\n {this.message ? this.message : this.defaultMessage}\n </div>\n {this.type !== 'banner' ? (\n <div class=\"s-bottom-alert-action\">\n <salla-button\n href={this.actionUrl}\n size=\"medium\"\n onClick={() => this.handleAction()}\n width=\"normal\"\n >\n {this.actionLabel ? this.actionLabel : this.defaultActionLabel}\n </salla-button>\n </div>\n ) : null}\n {\n this.type === 'popup' ? this.popup() : null\n }\n </div>\n </Host>\n );\n }\n\n}\n"],"version":3}
|
|
1
|
+
{"file":"salla-bottom-alert.js","mappings":"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","names":["SallaBottomAlert"],"sources":["src/components/salla-bottom-alert/salla-bottom-alert.scss?tag=salla-bottom-alert","src/components/salla-bottom-alert/salla-bottom-alert.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, h, Element, Prop, State } from '@stencil/core';\nimport infoIcon from '../../assets/svg/info.svg';\nimport shoppingBag from '../../assets/svg/shopping-bag2.svg';\n@Component({\n tag: 'salla-bottom-alert',\n styleUrl: 'salla-bottom-alert.scss',\n})\nexport class SallaBottomAlert {\n constructor() {\n salla.lang.onLoaded(() => {\n this.defaultMessage = salla.lang.get('common.elements.experimental_and_available_store');\n this.defaultActionLabel = salla.lang.get('common.elements.know_more');\n this.storeFeatures = salla.lang.get('common.elements.store_features');\n this.storeDetails = salla.lang.get('common.elements.store_details');\n this.templateInformation = salla.lang.get('common.elements.template_information');\n this.buyTheTemplate = salla.lang.get('common.elements.buy_the_template');\n salla.helpers.setNested(salla.lang.messages['ar.trans'], 'common.elements.store_price', 'سعر المتجر');\n salla.helpers.setNested(salla.lang.messages['en.trans'], 'common.elements.store_price', 'Store Price');\n salla.helpers.setNested(salla.lang.messages['ar.trans'], 'common.elements.the_developer', 'المطور');\n salla.helpers.setNested(salla.lang.messages['en.trans'], 'common.elements.the_developer', 'the developer');\n setTimeout(() => {\n this.storePrice = salla.lang.get('common.elements.store_price');\n this.theDeveloper = salla.lang.get('common.elements.the_developer');\n });\n });\n }\n\n private modal: HTMLSallaModalElement;\n @Element() host: HTMLElement;\n\n @State() storeId: string = salla.config.get('store.id')\n @State() template: any = salla.config.get('store.template')\n @State() loading: boolean = false\n @State() templateData: any = {}\n @State() defaultMessage: string = salla.lang.get('common.elements.experimental_and_available_store');\n @State() defaultActionLabel: string = salla.lang.get('common.elements.know_more');\n @State() storeFeatures: string = salla.lang.get('common.elements.store_features');\n @State() storeDetails: string = salla.lang.get('common.elements.store_details');\n @State() storePrice: string = salla.lang.get('common.elements.store_price');\n @State() theDeveloper: string = salla.lang.get('common.elements.the_developer');\n @State() templateInformation: string = salla.lang.get('common.elements.template_information');\n @State() buyTheTemplate: string = salla.lang.get('common.elements.buy_the_template');\n @State() isRtl: boolean = salla.config.get('theme.is_rtl', true);\n /**\n * Alert Type\n * */\n @Prop({ reflect: true }) type: 'link' | 'popup' | 'banner' = 'popup';\n\n /**\n * Alert Icon class from salla icons library - ex: sicon-user\n * */\n @Prop({ reflect: true }) icon: string;\n\n /**\n * Alert Message\n * */\n @Prop({ reflect: true }) message: string;\n\n /**\n * Button url - used when type is link\n * */\n @Prop({ reflect: true }) actionUrl: string;\n\n /**\n * Button label - used when type is link and popup\n * */\n @Prop({ reflect: true }) actionLabel: string;\n\n private open() {\n return this.modal.open()\n .then(() => this.handleTemplateRequest())\n }\n private getDefaultMessage(){\n return this.isRtl ? this.defaultMessage.substring(0, this.defaultMessage.lastIndexOf(\" \")) : this.defaultMessage.split(\" \").slice(0, -2).join(\" \");\n }\n private handleTemplateRequest() {\n if (Object.keys(this.templateData).length) {\n return;\n }\n this.modal.loading()\n return salla.api.request(`/store/template`, {}, 'get', { 'Store-Identifier': this.storeId })\n .then((res) => {\n this.modal.setTitle(this.templateInformation)\n this.templateData = res.data\n this.modal.stopLoading()\n })\n .catch(() => {\n this.modal.close()\n })\n }\n\n private handleAction() {\n if (this.type === 'link') {\n window.location.href = this.actionUrl;\n }\n\n if (this.type === 'popup') {\n this.open()\n }\n }\n\n popup() {\n return (\n <salla-modal class=\"s-bottom-alert-modal\" ref={modal => this.modal = modal} no-padding>\n {Object.keys(this.templateData).length ?\n [<div class=\"s-bottom-alert-modal-inner s-scrollbar\">\n {Array.isArray(this.templateData?.screenshots) && this.templateData?.screenshots?.length ? <div class=\"s-bottom-alert-modal-cover\">\n <img src={this.templateData?.screenshots[0]} alt=\"\" />\n </div> : ''}\n <div class={{\"s-bottom-alert-modal-content\": true, \"s-bottom-alert-modal-content-extra-padding\":this.templateData.price}} >\n {this.templateData?.description ?\n [<div class=\"s-bottom-alert-modal-content-title\">\n {this.storeDetails}\n </div>,\n <div class=\"s-bottom-alert-modal-content-description\" innerHTML={this.templateData?.description}></div>,\n <hr />\n ] : ''}\n {this.templateData?.features ? [<div class=\"s-bottom-alert-modal-content-title\">\n {this.storeFeatures}\n </div>,\n <div class=\"s-bottom-alert-modal-content-features\" innerHTML={this.templateData?.features}></div>\n ] : ''}\n {Array.isArray(this.templateData?.screenshots) && this.templateData?.screenshots?.length > 1 ?\n <salla-slider id='template-screenshots' type='carousel' class=\"s-bottom-alert-modal-content-screenshots\">\n <div slot='items'>\n {this.templateData?.screenshots.map((screenshot) => {\n return <div class=\"s-bottom-alert-modal-content-screenshot\">\n <img src={screenshot} alt=\"\" />\n </div>\n })}\n </div>\n </salla-slider>\n : ''}\n\n {this.templateData?.extra_info ?\n <div class=\"s-bottom-alert-modal-content-description\" innerHTML={this.templateData?.description}></div>\n : ''}\n </div>\n {this.templateData?.link ?\n <div class=\"s-bottom-alert-modal-content-footer\">\n {this.templateData.price && <div class=\"s-bottom-alert-modal-price-wrapper\">\n <div>\n {this.storePrice}\n </div>\n <div class=\"s-bottom-alert-modal-price-wrapper-amount\">\n {salla.money(this.templateData?.price)}\n </div>\n </div>}\n <salla-button\n color='primary'\n size=\"medium\"\n width='wide'\n href={this.templateData?.link}\n >\n <i innerHTML={shoppingBag}></i>\n {this.buyTheTemplate}\n </salla-button>\n </div> : ''\n }\n </div>] : ''\n }\n\n </salla-modal>\n )\n }\n render() {\n return (\n <Host class=\"s-bottom-alert-wrapper\">\n <div class=\"s-bottom-alert-content\">\n <div class=\"s-bottom-alert-icon\">\n {this.icon ? <i class={this.icon}></i> : <i innerHTML={infoIcon}></i>}\n </div>\n <div class=\"s-bottom-alert-message\">\n {this.message ? ( this.message ) : typeof this.template == 'object' && Object.keys(this.template).length ? (\n <span>\n {this.getDefaultMessage()}{\" \"}\n <span class=\"s-bottom-alert-message-highlight\">\n {this.template.developer && this.template.developer.name ? this.template.developer.name : this.theDeveloper}\n </span>{\" \"}\n <span class=\"s-bottom-alert-message-splitter\">|</span> {this.storePrice}:{\" \"}\n <span class=\"s-bottom-alert-message-highlight\">\n {salla.money(this.template.price)}\n </span>\n </span>\n ) : (\n this.defaultMessage\n )}\n </div>\n {this.type !== 'banner' ? (\n <div class=\"s-bottom-alert-action\">\n <salla-button\n href={this.actionUrl}\n size=\"medium\"\n onClick={() => this.handleAction()}\n width=\"normal\"\n >\n {this.actionLabel ? this.actionLabel : this.defaultActionLabel}\n </salla-button>\n </div>\n ) : null}\n {\n this.type === 'popup' ? this.popup() : null\n }\n </div>\n </Host>\n );\n }\n\n}\n"],"version":3}
|
|
@@ -65,6 +65,8 @@ const SallaContacts$1 = /*@__PURE__*/ proxyCustomElement(class SallaContacts ext
|
|
|
65
65
|
return `tel:${this.contacts[type]}`;
|
|
66
66
|
case 'mobile':
|
|
67
67
|
return `tel:${this.contacts[type]}`;
|
|
68
|
+
case 'whatsapp':
|
|
69
|
+
return salla.url.get('whatsapp/send');
|
|
68
70
|
case 'email':
|
|
69
71
|
return `mailto:${this.contacts[type]}`;
|
|
70
72
|
case 'telegram':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"salla-contacts.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAM,gBAAgB,GAAG,iEAAiE;;MCa7EA,eAAa;EACxB;;;;;;;;;oBAkByB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;qBACjC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;IAlBpE,IAAI,CAAC,WAAW,GAAG,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,0CAAE,SAAS,KAAI,qFAAqF,CAAC,IAAI,CAAC,SAAS,IAAI,sCAAsC,MAAM,CAAC;IAElO,KAAK,CAAC,OAAO,CAAC;MACZ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;KACpD,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;MAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;KAC7D,CAAC,CAAC;GACJ;EAWO,gBAAgB;IACtB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;OACjC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;OACvC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;GAC9C;EAEO,cAAc,CAAC,IAAI;IACzB,QAAQ,IAAI;MACV,KAAK,OAAO;QACV,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;
|
|
1
|
+
{"file":"salla-contacts.js","mappings":"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","names":["SallaContacts"],"sources":["src/components/salla-contacts/salla-contacts.scss?tag=salla-contacts","src/components/salla-contacts/salla-contacts.tsx"],"sourcesContent":[".unicode {\n unicode-bidi: plaintext;\n}","import { Component, Host, h, Prop, State, Element } from '@stencil/core';\nimport mobile from '../../assets/svg/iphone.svg';\nimport whatsapp from '../../assets/svg/whatsapp2.svg';\nimport phone from '../../assets/svg/phone.svg';\nimport telegram from '../../assets/svg/paper-plane-o.svg';\nimport email from '../../assets/svg/mail.svg';\n/**\n * @slot contact - Replaces contact item, has replaceable props `{icon}`, `{value}`.\n */\n@Component({\n tag: 'salla-contacts',\n styleUrl: 'salla-contacts.scss',\n})\nexport class SallaContacts {\n constructor() {\n this.contactSlot = this.host.querySelector('[slot=\"contact\"]')?.innerHTML || `<a href={link} class=\"s-contacts-item\"><span class=\"s-contacts-icon\">{icon}</span>${!this.iconsOnly && \"<span class='unicode'>{value}</span>\"}</a>`;\n\n salla.onReady(() => {\n this.contacts = salla.config.get('store.contacts');\n });\n\n salla.lang.onLoaded(() => {\n this.contactsTitle = salla.lang.get('blocks.footer.social');\n });\n }\n private readonly contactSlot: string;\n @Prop() contactsTitle: string;\n @Prop() hideTitle: boolean;\n @Prop() isHeader: boolean;\n @Prop() horizontal: boolean;\n @Prop() iconsOnly: boolean;\n @Element() host: HTMLElement;\n @State() contacts: any = salla.config.get('store.contacts');\n @State() iconsList: any = { mobile, whatsapp, phone, telegram, email }\n\n private getContactsArray() {\n return Object.entries(this.contacts)\n .filter(([_key, value]) => value !== '')\n .map(([type, value]) => ({ type, value }));\n }\n\n private getContactLink(type) {\n switch (type) {\n case 'phone':\n return `tel:${this.contacts[type]}`; \n case 'mobile':\n return `tel:${this.contacts[type]}`;\n case 'whatsapp':\n return salla.url.get('whatsapp/send');\n case 'email':\n return `mailto:${this.contacts[type]}`;\n case 'telegram':\n return `https://t.me/${this.contacts[type]}`;\n default:\n return this.contacts[type];\n }\n }\n\n private getContactIcon(type) {\n return this.iconsList[type];\n }\n render() {\n const contactsArray = this.getContactsArray();\n if (this.isHeader && contactsArray && contactsArray.length > 0) {\n return (\n <Host class=\"s-contacts s-contacts-header\">\n {contactsArray.filter((contact) => contact.type == 'phone' || contact.type == 'email').map((contact, index) => (\n <a href={this.getContactLink(contact.type)} key={index} class=\"s-contacts-topnav-link\">\n {contact.type === 'email' ? (\n contact.value\n ) : (\n [\n <span>{this.contactsTitle}: </span>,\n <a class=\"unicode\" href={this.iconsList[contact.type]}>{contact.value}</a>\n ]\n )}\n </a>\n ))}\n </Host>\n );\n }\n return (\n <Host class=\"s-contacts\">\n {!this.hideTitle && <h3 class=\"s-contacts-title\">{this.contactsTitle}</h3>}\n <div class={{\n 's-contacts-list': true,\n 's-contacts-list-horizontal': this.horizontal,\n 's-contacts-list-vertical': !this.horizontal,\n 's-contacts-list-icons-only': this.iconsOnly\n }\n }>\n {contactsArray.map((contact, index) => (\n <div key={index} id=\"contact-slot\" innerHTML={this.contactSlot\n .replace(/\\{icon\\}/g, this.getContactIcon(contact.type))\n .replace(/\\{value\\}/g, contact.value.toString())\n .replace(/\\{link\\}/g, this.getContactLink(contact.type))}>\n </div>\n ))}\n </div>\n </Host>\n );\n }\n componentDidRender() {\n // this.host.querySelectorAll('#contact-slot').forEach(el => el.replaceWith(el.firstChild));\n this.host.querySelector('[slot=\"contact\"]')?.remove();\n }\n}\n\n"],"version":3}
|
|
@@ -56,13 +56,63 @@ const SallaFilters$1 = /*@__PURE__*/ proxyCustomElement(class SallaFilters exten
|
|
|
56
56
|
}
|
|
57
57
|
connectedCallback() {
|
|
58
58
|
try {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
const searchParams = new URLSearchParams(window.location.search);
|
|
60
|
+
const filterObject = {};
|
|
61
|
+
for (const [key, value] of searchParams.entries()) {
|
|
62
|
+
const keys = key.replace(/\]/g, '').split('[');
|
|
63
|
+
keys.reduce((obj, keyPart, index, array) => {
|
|
64
|
+
const isLastKey = index === array.length - 1;
|
|
65
|
+
const finalKey = /^\d+$/.test(keyPart) ? parseInt(keyPart, 10) : keyPart;
|
|
66
|
+
if (isLastKey) {
|
|
67
|
+
if (/^\d+$/.test(keyPart)) {
|
|
68
|
+
this.addObjectValue(obj, array[index - 1], value);
|
|
69
|
+
return obj[array[index - 1]];
|
|
70
|
+
}
|
|
71
|
+
else if (obj[finalKey]) {
|
|
72
|
+
obj[finalKey] = [obj[finalKey], value];
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
obj[finalKey] = value;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
obj[finalKey] = obj[finalKey] || {};
|
|
80
|
+
}
|
|
81
|
+
return obj[finalKey];
|
|
82
|
+
}, filterObject);
|
|
83
|
+
}
|
|
84
|
+
this.filtersData = this.flattenObject(filterObject["filters"]) || {};
|
|
61
85
|
}
|
|
62
86
|
catch (e) {
|
|
63
87
|
salla.logger.warn('failed to get filters from url', e.message);
|
|
64
88
|
}
|
|
65
89
|
}
|
|
90
|
+
flattenObject(obj) {
|
|
91
|
+
for (const key in obj) {
|
|
92
|
+
if (typeof obj[key] === 'object') {
|
|
93
|
+
if (obj[key][key] && Array.isArray(obj[key][key])) {
|
|
94
|
+
obj[key] = obj[key][key];
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.flattenObject(obj[key]);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return obj;
|
|
102
|
+
}
|
|
103
|
+
addObjectValue(obj, key, value) {
|
|
104
|
+
if (obj.hasOwnProperty(key)) {
|
|
105
|
+
if (Array.isArray(obj[key])) {
|
|
106
|
+
obj[key].push(value);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
obj[key] = [obj[key], value];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
obj[key] = [value];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
66
116
|
/**
|
|
67
117
|
* Method to get filter data.
|
|
68
118
|
*/
|
|
@@ -80,7 +130,15 @@ const SallaFilters$1 = /*@__PURE__*/ proxyCustomElement(class SallaFilters exten
|
|
|
80
130
|
setTimeout(() => {
|
|
81
131
|
var _a;
|
|
82
132
|
if (hasFilters) {
|
|
83
|
-
|
|
133
|
+
let url = new URL(window.location.href);
|
|
134
|
+
for (const [key] of url.searchParams.entries()) {
|
|
135
|
+
if (key.startsWith("filters")) {
|
|
136
|
+
url.searchParams.delete(key);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
let encodedFilterValues = this.encodeFilters(this.filtersData);
|
|
140
|
+
url.search = url.search ? url.search.split("&filters")[0] + "&" + encodedFilterValues : `?${encodedFilterValues}`;
|
|
141
|
+
window.history.pushState({}, '', url.href);
|
|
84
142
|
}
|
|
85
143
|
else {
|
|
86
144
|
let url = new URL(window.location.href);
|
|
@@ -91,15 +149,50 @@ const SallaFilters$1 = /*@__PURE__*/ proxyCustomElement(class SallaFilters exten
|
|
|
91
149
|
this.changed.emit(this.filtersData);
|
|
92
150
|
}, 300);
|
|
93
151
|
}
|
|
152
|
+
encodeFilters(filters, parentKey = 'filters') {
|
|
153
|
+
const encodedFilters = [];
|
|
154
|
+
for (const key in filters) {
|
|
155
|
+
if (Object.prototype.hasOwnProperty.call(filters, key)) {
|
|
156
|
+
const value = filters[key];
|
|
157
|
+
const fullKey = parentKey ? `${parentKey}[${key}]` : key;
|
|
158
|
+
if (Array.isArray(value)) {
|
|
159
|
+
for (let i = 0; i < value.length; i++) {
|
|
160
|
+
encodedFilters.push(`${fullKey}[${i}]=${value[i]}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else if (typeof value === 'object' && value !== null) {
|
|
164
|
+
encodedFilters.push(this.encodeFilters(value, fullKey));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
// const encodedKey = encodeURIComponent(fullKey);
|
|
168
|
+
// const encodedValue = encodeURIComponent(value);
|
|
169
|
+
let result = `${fullKey}=${value}`;
|
|
170
|
+
encodedFilters.push(result);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return encodedFilters.join('&');
|
|
175
|
+
}
|
|
176
|
+
;
|
|
94
177
|
/**
|
|
95
178
|
* Reset selected filters.
|
|
96
179
|
*/
|
|
97
180
|
async resetFilters() {
|
|
181
|
+
this.removeFiltersQueryParams();
|
|
98
182
|
this.filtersData = {};
|
|
99
183
|
this.host.childNodes.forEach((widget) => widget.reset && widget.reset());
|
|
100
184
|
salla.event.emit('salla-filters::reset');
|
|
101
185
|
return this.applyFilters();
|
|
102
186
|
}
|
|
187
|
+
removeFiltersQueryParams() {
|
|
188
|
+
const searchParams = new URLSearchParams(window.location.search);
|
|
189
|
+
const newUrl = Array.from(searchParams.keys())
|
|
190
|
+
.filter(key => !key.startsWith('filters['))
|
|
191
|
+
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(searchParams.get(key))}`)
|
|
192
|
+
.join('&');
|
|
193
|
+
const finalUrl = newUrl ? `${window.location.pathname}?${newUrl}` : window.location.pathname;
|
|
194
|
+
window.history.pushState({}, '', finalUrl);
|
|
195
|
+
}
|
|
103
196
|
/**
|
|
104
197
|
* @param {{target:HTMLInputElement}} event
|
|
105
198
|
* @param option
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"salla-filters.js","mappings":";;;;;;;;;AAAA,MAAM,eAAe,GAAG,+GAA+G;;MCO1HA,cAAY;EAEvB;;;;IAwDQ,YAAO,GAAG,KAAK,CAAC;;;uBAGa,EAAE;;;IA1DrC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;IAE1E,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;MAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;MACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;KAC/D,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE;MAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;MAC7B,IAAI,eAAe,GAAG,EAAE,CAAC;MACzB,IAAI,CAAC,OAAO,GAAG,OAAO;SACnB,GAAG,CAAC,CAAC,MAAc;QAClB,MAAM,CAAC,KAAK,GAAG;UACb,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;UACvD,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC;UAChD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC;UACxD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC;SACvD,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;QAC9B,MAAM,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC/C,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE;UAC1B,MAAM,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;UAE/C,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;;UAEjC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,CAAA;SAC9E;;QAGD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;UAChC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC5D;QAED,OAAO,MAAM,CAAC;OACf,CAAC,CAAC;MACL,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;MACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,MAAqC,KAAK,MAAM,CAAC,eAAe,IAAI,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,CAAA;KACxI,CAAC,CAAC;GACJ;EAED,iBAAiB;IACf,IAAI;MACF,IAAI,OAAO,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;MAC1E,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;KAC3E;IAAC,OAAO,CAAC,EAAE;MACV,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;KAChE;GACF;;;;EAyBD,MAAM,UAAU;IACd,OAAO,IAAI,CAAC,WAAW,CAAC;GACzB;;;;EAMD,MAAM,YAAY;IAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;MACjB,OAAO;KACR;IACD,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,UAAU,CAAC;;MACT,IAAI,UAAU,EAAE;QACd,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;OAC5H;WAAM;QACL,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAA,GAAG,CAAC,YAAY,0CAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;OAClD;MACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;MAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrC,EAAE,GAAG,CAAC,CAAC;GACT;;;;EAMD,MAAM,YAAY;IAChB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAqC,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACvG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;GAC5B;;;;;;;EASO,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,KAAK;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK,EAAE;MAC3C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KAEtC;IACD,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IAErC,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,QAAQ,EAAE;MAC9C,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC;MAC5D,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;MAC7D,SAAS,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;KAE7D;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,qBAAqB,CAAC,KAAK,EAAE;MACpD,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;MACpD,SAAS,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;KACpD;;;IAID,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,qBAAqB,CAAC,QAAQ,EAAE;MACvD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;MAClE,IAAI,SAAS,EAAE;QACb,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAE1C;MACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;KACzF;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;GACrB;EAED,MAAM;;IACJ,OAAO,EAAC,IAAI,QACT,MAAA,IAAI,CAAC,OAAO;SAAE,GAAG,CAAC,MAAM,IAAI,4BAC3B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAI,CAAC,EAExG,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,IAAG,WAAK,KAAK,EAAC,kBAAkB,IAEnD,oBAAc,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,IAAG,IAAI,CAAC,KAAK,CAAgB,CACrG,GAAG,EAAE,CACN,CAAC;GACT;EAED,gBAAgB;IACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;GACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["SallaFilters"],"sources":["src/components/salla-filters/salla-filters.scss?tag=salla-filters","src/components/salla-filters/salla-filters.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.s-rating-stars-small {\n line-height: 12px;\n}\n.s-filters-radio{\n background-image: none !important;\n}","import { Component, Element, h, Event, EventEmitter, Host, Method, Prop, State } from '@stencil/core';\nimport { Filter, FilterOptionInputType, FilterOptionTypes } from \"./interfaces\";\n\n@Component({\n tag: 'salla-filters',\n styleUrl: 'salla-filters.scss',\n})\nexport class SallaFilters {\n\n constructor() {\n salla.event.on('filters::hidden', () => this.host.style.display = 'none');\n\n salla.lang.onLoaded(() => {\n this.apply = salla.lang.get('pages.checkout.apply');\n this.reset = salla.lang.get('pages.categories.filters_reset');\n });\n\n salla.event.on('filters::fetched', ({ filters }) => {\n this.host.style.display = '';\n let freshFilterData = {};\n this.filters = filters\n .map((filter: Filter) => {\n filter.label = {\n category_id: salla.lang.get('common.titles.categories'),\n brand_id: salla.lang.get('common.titles.brands'),\n rating: salla.lang.get('pages.categories.filter_rating'),\n price: salla.lang.get('pages.categories.filter_price'),\n }[filter.key] || filter.label;\n filter.inputType = FilterOptionInputType.RADIO;//todo:: support FilterOptionInputType.CHECKBOX\n if (filter.key == 'rating') {\n filter.inputType = FilterOptionInputType.RADIO;\n //@ts-ignore\n let { max, min } = filter.values;\n //@ts-ignore\n filter.values = [5, 4, 3, 2, 1].filter(stars => stars >= min || stars <= max)\n }\n\n //when getting new filters, maybe less than we had, so let's get from the old one, only what is existed now.\n if (this.filtersData[filter.key]) {\n freshFilterData[filter.key] = this.filtersData[filter.key];\n }\n\n return filter;\n });\n this.filtersData = freshFilterData;\n this.host.childNodes.forEach(async (widget: HTMLSallaFiltersWidgetElement) => widget.setWidgetHeight && await widget.setWidgetHeight())\n });\n }\n\n connectedCallback() {\n try {\n let filters = (new URLSearchParams(window.location.search)).get('filters')\n this.filtersData = filters ? JSON.parse(decodeURIComponent(filters)) : {};\n } catch (e) {\n salla.logger.warn('failed to get filters from url', e.message);\n }\n }\n\n @Element() host: HTMLElement;\n\n /**\n * Array of filter options\n */\n @Prop({ reflect: true, mutable: true }) filters?: Filter[];\n\n private isReady = false;//to avoid triggering the changed event\n\n @State() isSidebarOpen: boolean;\n @State() filtersData: object | any = {}\n @State() apply: string;\n @State() reset: string;\n\n /**\n * Custom event fired when the selected filters are changed.\n */\n @Event() changed: EventEmitter;\n\n /**\n * Method to get filter data.\n */\n @Method()\n async getFilters() {\n return this.filtersData;\n }\n\n /**\n * Apply filter action.\n */\n @Method()\n async applyFilters() {\n if (!this.isReady) {\n return;\n }\n let hasFilters = Object.keys(this.filtersData).length > 0;\n setTimeout(() => {\n if (hasFilters) {\n window.history.pushState({}, '', salla.url.addParamToUrl('filters', encodeURIComponent(JSON.stringify(this.filtersData))));\n } else {\n let url = new URL(window.location.href);\n url.searchParams?.delete('filters');\n window.history.pushState({}, '', url.toString());\n }\n salla.event.emit('salla-filters::changed', this.filtersData);\n this.changed.emit(this.filtersData);\n }, 300);\n }\n\n /**\n * Reset selected filters.\n */\n @Method()\n async resetFilters() {\n this.filtersData = {};\n this.host.childNodes.forEach((widget: HTMLSallaFiltersWidgetElement) => widget.reset && widget.reset())\n salla.event.emit('salla-filters::reset');\n return this.applyFilters();\n }\n\n\n /**\n * @param {{target:HTMLInputElement}} event\n * @param option\n * @param value\n * @private\n */\n private handleOptionChange(event, option: Filter, value) {\n if (option.type === FilterOptionTypes.RANGE) {\n this.filtersData[option.key] = value;\n\n }\n let isChecked = event.target.checked;\n\n if (option.type === FilterOptionTypes.VARIANTS) {\n this.filtersData.variants = this.filtersData.variants || {};\n isChecked && (this.filtersData.variants[option.key] = value);\n isChecked || (delete this.filtersData.variants[option.key]);\n\n }\n\n if (event.target.type == FilterOptionInputType.RADIO) {\n isChecked && (this.filtersData[option.key] = value);\n isChecked || (delete this.filtersData[option.key]);\n }\n\n //it's checkbox\n // add if condition to avoid error when the filter is not existed in the filtersData\n if (event.target.type == FilterOptionInputType.CHECKBOX) {\n this.filtersData[option.key] = this.filtersData[option.key] || [];\n if (isChecked) {\n this.filtersData[option.key].push(value);\n\n }\n this.filtersData[option.key] = this.filtersData[option.key].filter(val => val != value);\n }\n this.applyFilters();\n }\n\n render() {\n return <Host>\n {this.filters?.map(option => <salla-filters-widget\n option={option}\n filtersData={this.filtersData}\n onChanged={({ detail: { event, option, value } }) => this.handleOptionChange(event, option, value)} />)}\n\n {this.filters?.length ? <div class=\"s-filters-footer\">\n {/* <salla-button color='primary' onClick={() => this.applyFilters()}>{this.apply}</salla-button> */}\n <salla-button color='gray' fill='outline' onClick={() => this.resetFilters()}>{this.reset}</salla-button>\n </div> : ''}\n </Host>;\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n\n"],"version":3}
|
|
1
|
+
{"file":"salla-filters.js","mappings":"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","names":["SallaFilters"],"sources":["src/components/salla-filters/salla-filters.scss?tag=salla-filters","src/components/salla-filters/salla-filters.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.s-rating-stars-small {\n line-height: 12px;\n}\n.s-filters-radio{\n background-image: none !important;\n}","import { Component, Element, h, Event, EventEmitter, Host, Method, Prop, State } from '@stencil/core';\nimport { Filter, FilterOptionInputType, FilterOptionTypes } from \"./interfaces\";\n\n@Component({\n tag: 'salla-filters',\n styleUrl: 'salla-filters.scss',\n})\nexport class SallaFilters {\n\n constructor() {\n salla.event.on('filters::hidden', () => this.host.style.display = 'none');\n\n salla.lang.onLoaded(() => {\n this.apply = salla.lang.get('pages.checkout.apply');\n this.reset = salla.lang.get('pages.categories.filters_reset');\n });\n\n salla.event.on('filters::fetched', ({ filters }) => {\n this.host.style.display = '';\n let freshFilterData = {};\n this.filters = filters\n .map((filter: Filter) => {\n filter.label = {\n category_id: salla.lang.get('common.titles.categories'),\n brand_id: salla.lang.get('common.titles.brands'),\n rating: salla.lang.get('pages.categories.filter_rating'),\n price: salla.lang.get('pages.categories.filter_price'),\n }[filter.key] || filter.label;\n filter.inputType = FilterOptionInputType.RADIO;//todo:: support FilterOptionInputType.CHECKBOX\n if (filter.key == 'rating') {\n filter.inputType = FilterOptionInputType.RADIO;\n //@ts-ignore\n let { max, min } = filter.values;\n //@ts-ignore\n filter.values = [5, 4, 3, 2, 1].filter(stars => stars >= min || stars <= max)\n }\n\n //when getting new filters, maybe less than we had, so let's get from the old one, only what is existed now.\n if (this.filtersData[filter.key]) {\n freshFilterData[filter.key] = this.filtersData[filter.key];\n }\n\n return filter;\n });\n this.filtersData = freshFilterData;\n this.host.childNodes.forEach(async (widget: HTMLSallaFiltersWidgetElement) => widget.setWidgetHeight && await widget.setWidgetHeight())\n });\n }\n\n connectedCallback() {\n try {\n const searchParams = new URLSearchParams(window.location.search);\n const filterObject = {};\n\n for (const [key, value] of searchParams.entries()) {\n const keys = key.replace(/\\]/g, '').split('[');\n keys.reduce((obj, keyPart, index, array) => {\n const isLastKey = index === array.length - 1;\n const finalKey = /^\\d+$/.test(keyPart) ? parseInt(keyPart, 10) : keyPart;\n if (isLastKey) {\n if (/^\\d+$/.test(keyPart)) {\n this.addObjectValue(obj, array[index - 1], value)\n return obj[array[index - 1]];\n } else if (obj[finalKey]) {\n obj[finalKey] = [obj[finalKey], value];\n } else {\n obj[finalKey] = value;\n }\n } else {\n obj[finalKey] = obj[finalKey] || {};\n }\n\n return obj[finalKey];\n }, filterObject);\n }\n\n this.filtersData = this.flattenObject(filterObject[\"filters\"]) || {};\n } catch (e) {\n salla.logger.warn('failed to get filters from url', e.message);\n }\n\n }\n\n private flattenObject(obj: any) {\n for (const key in obj) {\n if (typeof obj[key] === 'object') {\n if (obj[key][key] && Array.isArray(obj[key][key])) {\n obj[key] = obj[key][key];\n } else {\n this.flattenObject(obj[key]);\n }\n }\n }\n return obj;\n }\n\n\n private addObjectValue(obj, key, value) {\n if (obj.hasOwnProperty(key)) {\n if (Array.isArray(obj[key])) {\n obj[key].push(value);\n } else {\n obj[key] = [obj[key], value];\n }\n } else {\n obj[key] = [value];\n }\n }\n\n\n @Element() host: HTMLElement;\n\n /**\n * Array of filter options\n */\n @Prop({ reflect: true, mutable: true }) filters?: Filter[];\n\n private isReady = false;//to avoid triggering the changed event\n\n @State() isSidebarOpen: boolean;\n @State() filtersData: object | any = {}\n @State() apply: string;\n @State() reset: string;\n\n /**\n * Custom event fired when the selected filters are changed.\n */\n @Event() changed: EventEmitter;\n\n /**\n * Method to get filter data.\n */\n @Method()\n async getFilters() {\n return this.filtersData;\n }\n\n /**\n * Apply filter action.\n */\n @Method()\n async applyFilters() {\n if (!this.isReady) {\n return;\n }\n let hasFilters = Object.keys(this.filtersData).length > 0;\n setTimeout(() => {\n if (hasFilters) {\n let url = new URL(window.location.href);\n for (const [key] of url.searchParams.entries()) {\n if (key.startsWith(\"filters\")) {\n url.searchParams.delete(key);\n }\n }\n let encodedFilterValues = this.encodeFilters(this.filtersData)\n url.search = url.search ? url.search.split(\"&filters\")[0] + \"&\" + encodedFilterValues : `?${encodedFilterValues}`;\n window.history.pushState({}, '', url.href);\n } else {\n let url = new URL(window.location.href);\n url.searchParams?.delete('filters');\n window.history.pushState({}, '', url.toString());\n }\n salla.event.emit('salla-filters::changed', this.filtersData);\n this.changed.emit(this.filtersData);\n }, 300);\n }\n\n private encodeFilters(filters, parentKey = 'filters') {\n const encodedFilters = [];\n\n for (const key in filters) {\n if (Object.prototype.hasOwnProperty.call(filters, key)) {\n const value = filters[key];\n\n const fullKey = parentKey ? `${parentKey}[${key}]` : key;\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n encodedFilters.push(`${fullKey}[${i}]=${value[i]}`)\n }\n }\n else if (typeof value === 'object' && value !== null) {\n encodedFilters.push(this.encodeFilters(value, fullKey));\n } else {\n // const encodedKey = encodeURIComponent(fullKey);\n // const encodedValue = encodeURIComponent(value);\n let result = `${fullKey}=${value}`\n encodedFilters.push(result);\n }\n }\n }\n return encodedFilters.join('&');\n };\n\n /**\n * Reset selected filters.\n */\n @Method()\n async resetFilters() {\n this.removeFiltersQueryParams()\n this.filtersData = {};\n this.host.childNodes.forEach((widget: HTMLSallaFiltersWidgetElement) => widget.reset && widget.reset())\n salla.event.emit('salla-filters::reset');\n return this.applyFilters();\n }\n\n private removeFiltersQueryParams() {\n const searchParams = new URLSearchParams(window.location.search);\n\n const newUrl = Array.from(searchParams.keys())\n .filter(key => !key.startsWith('filters['))\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(searchParams.get(key))}`)\n .join('&');\n\n const finalUrl = newUrl ? `${window.location.pathname}?${newUrl}` : window.location.pathname;\n window.history.pushState({}, '', finalUrl);\n }\n\n /**\n * @param {{target:HTMLInputElement}} event\n * @param option\n * @param value\n * @private\n */\n private handleOptionChange(event, option: Filter, value) {\n if (option.type === FilterOptionTypes.RANGE) {\n this.filtersData[option.key] = value;\n\n }\n let isChecked = event.target.checked;\n\n if (option.type === FilterOptionTypes.VARIANTS) {\n this.filtersData.variants = this.filtersData.variants || {};\n isChecked && (this.filtersData.variants[option.key] = value);\n isChecked || (delete this.filtersData.variants[option.key]);\n\n }\n\n if (event.target.type == FilterOptionInputType.RADIO) {\n isChecked && (this.filtersData[option.key] = value);\n isChecked || (delete this.filtersData[option.key]);\n }\n\n //it's checkbox\n // add if condition to avoid error when the filter is not existed in the filtersData\n if (event.target.type == FilterOptionInputType.CHECKBOX) {\n this.filtersData[option.key] = this.filtersData[option.key] || [];\n if (isChecked) {\n this.filtersData[option.key].push(value);\n\n }\n this.filtersData[option.key] = this.filtersData[option.key].filter(val => val != value);\n }\n this.applyFilters();\n }\n\n render() {\n return <Host>\n {this.filters?.map(option => <salla-filters-widget\n option={option}\n filtersData={this.filtersData}\n onChanged={({ detail: { event, option, value } }) => this.handleOptionChange(event, option, value)} />)}\n\n {this.filters?.length ? <div class=\"s-filters-footer\">\n {/* <salla-button color='primary' onClick={() => this.applyFilters()}>{this.apply}</salla-button> */}\n <salla-button color='gray' fill='outline' onClick={() => this.resetFilters()}>{this.reset}</salla-button>\n </div> : ''}\n </Host>;\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n\n"],"version":3}
|