@salla.sa/twilight-components 2.12.69 → 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.
Files changed (55) hide show
  1. package/dist/cjs/app-globals-36ab7ecf.js.map +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/salla-add-product-button_47.cjs.entry.js +9 -1
  4. package/dist/cjs/salla-add-product-button_47.cjs.entry.js.map +1 -1
  5. package/dist/cjs/salla-filters.cjs.entry.js +96 -3
  6. package/dist/cjs/salla-filters.cjs.entry.js.map +1 -1
  7. package/dist/cjs/twilight.cjs.js +1 -1
  8. package/dist/collection/components/salla-bottom-alert/salla-bottom-alert.js +12 -2
  9. package/dist/collection/components/salla-bottom-alert/salla-bottom-alert.js.map +1 -1
  10. package/dist/collection/components/salla-filters/salla-filters.js +96 -3
  11. package/dist/collection/components/salla-filters/salla-filters.js.map +1 -1
  12. package/dist/components/index.js.map +1 -1
  13. package/dist/components/salla-bottom-alert.js +12 -2
  14. package/dist/components/salla-bottom-alert.js.map +1 -1
  15. package/dist/components/salla-filters.js +96 -3
  16. package/dist/components/salla-filters.js.map +1 -1
  17. package/dist/esm/app-globals-3843d7b4.js.map +1 -1
  18. package/dist/esm/loader.js +1 -1
  19. package/dist/esm/salla-add-product-button_47.entry.js +9 -1
  20. package/dist/esm/salla-add-product-button_47.entry.js.map +1 -1
  21. package/dist/esm/salla-filters.entry.js +96 -3
  22. package/dist/esm/salla-filters.entry.js.map +1 -1
  23. package/dist/esm/twilight.js +1 -1
  24. package/dist/esm-es5/app-globals-3843d7b4.js.map +1 -1
  25. package/dist/esm-es5/loader.js +1 -1
  26. package/dist/esm-es5/loader.js.map +1 -1
  27. package/dist/esm-es5/salla-add-product-button_47.entry.js +1 -1
  28. package/dist/esm-es5/salla-add-product-button_47.entry.js.map +1 -1
  29. package/dist/esm-es5/salla-filters.entry.js +2 -2
  30. package/dist/esm-es5/salla-filters.entry.js.map +1 -1
  31. package/dist/esm-es5/twilight.js +1 -1
  32. package/dist/esm-es5/twilight.js.map +1 -1
  33. package/dist/twilight/p-2059b78a.system.js +1 -1
  34. package/dist/twilight/p-2059b78a.system.js.map +1 -1
  35. package/dist/twilight/{p-ce2fd4cc.entry.js → p-29f9af2d.entry.js} +2 -2
  36. package/dist/twilight/p-29f9af2d.entry.js.map +1 -0
  37. package/dist/twilight/p-412d8d1c.entry.js +5 -0
  38. package/dist/twilight/p-412d8d1c.entry.js.map +1 -0
  39. package/dist/twilight/{p-17637111.system.entry.js → p-5bf1cc00.system.entry.js} +2 -2
  40. package/dist/twilight/p-5bf1cc00.system.entry.js.map +1 -0
  41. package/dist/twilight/p-66395721.js.map +1 -1
  42. package/dist/twilight/p-75f5e4ac.system.js.map +1 -1
  43. package/dist/twilight/p-d3520da5.system.entry.js +5 -0
  44. package/dist/twilight/p-d3520da5.system.entry.js.map +1 -0
  45. package/dist/twilight/twilight.esm.js +1 -1
  46. package/dist/twilight/twilight.esm.js.map +1 -1
  47. package/dist/types/components/salla-bottom-alert/salla-bottom-alert.d.ts +3 -0
  48. package/dist/types/components/salla-filters/salla-filters.d.ts +4 -0
  49. package/package.json +5 -5
  50. package/dist/twilight/p-17637111.system.entry.js.map +0 -1
  51. package/dist/twilight/p-2ad1baef.entry.js +0 -5
  52. package/dist/twilight/p-2ad1baef.entry.js.map +0 -1
  53. package/dist/twilight/p-ce2fd4cc.entry.js.map +0 -1
  54. package/dist/twilight/p-d236e332.system.entry.js +0 -5
  55. package/dist/twilight/p-d236e332.system.entry.js.map +0 -1
@@ -36,8 +36,10 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
36
36
  this.storeFeatures = salla.lang.get('common.elements.store_features');
37
37
  this.storeDetails = salla.lang.get('common.elements.store_details');
38
38
  this.storePrice = salla.lang.get('common.elements.store_price');
39
+ this.theDeveloper = salla.lang.get('common.elements.the_developer');
39
40
  this.templateInformation = salla.lang.get('common.elements.template_information');
40
41
  this.buyTheTemplate = salla.lang.get('common.elements.buy_the_template');
42
+ this.isRtl = salla.config.get('theme.is_rtl', true);
41
43
  this.type = 'popup';
42
44
  this.icon = undefined;
43
45
  this.message = undefined;
@@ -52,8 +54,11 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
52
54
  this.buyTheTemplate = salla.lang.get('common.elements.buy_the_template');
53
55
  salla.helpers.setNested(salla.lang.messages['ar.trans'], 'common.elements.store_price', 'سعر المتجر');
54
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');
55
59
  setTimeout(() => {
56
60
  this.storePrice = salla.lang.get('common.elements.store_price');
61
+ this.theDeveloper = salla.lang.get('common.elements.the_developer');
57
62
  });
58
63
  });
59
64
  }
@@ -61,6 +66,9 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
61
66
  return this.modal.open()
62
67
  .then(() => this.handleTemplateRequest());
63
68
  }
69
+ getDefaultMessage() {
70
+ return this.isRtl ? this.defaultMessage.substring(0, this.defaultMessage.lastIndexOf(" ")) : this.defaultMessage.split(" ").slice(0, -2).join(" ");
71
+ }
64
72
  handleTemplateRequest() {
65
73
  if (Object.keys(this.templateData).length) {
66
74
  return;
@@ -100,7 +108,7 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
100
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)) : '')] : ''));
101
109
  }
102
110
  render() {
103
- 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.defaultMessage.substring(0, this.defaultMessage.lastIndexOf(" ")), " ", h("span", { class: "s-bottom-alert-message-highlight" }, this.template.developer), " ", 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)));
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)));
104
112
  }
105
113
  get host() { return this; }
106
114
  static get style() { return sallaBottomAlertCss; }
@@ -119,8 +127,10 @@ const SallaBottomAlert$1 = /*@__PURE__*/ proxyCustomElement(class SallaBottomAle
119
127
  "storeFeatures": [32],
120
128
  "storeDetails": [32],
121
129
  "storePrice": [32],
130
+ "theDeveloper": [32],
122
131
  "templateInformation": [32],
123
- "buyTheTemplate": [32]
132
+ "buyTheTemplate": [32],
133
+ "isRtl": [32]
124
134
  }]);
125
135
  function defineCustomElement$1() {
126
136
  if (typeof customElements === "undefined") {
@@ -1 +1 @@
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 setTimeout(() => {\n this.storePrice = salla.lang.get('common.elements.store_price');\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() 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\": 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.defaultMessage.substring(0, this.defaultMessage.lastIndexOf(\" \"))}{\" \"}\n <span class=\"s-bottom-alert-message-highlight\">\n {this.template.developer}\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}
1
+ {"file":"salla-bottom-alert.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAM,mBAAmB,GAAG,sBAAsB;;MCOrCA,kBAAgB;EAC3B;;;mBAsB2B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;oBAC9B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;mBAC/B,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;sBACjD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC;wBAC3C,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;iBAC1D,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC;gBAIH,OAAO;;;;;IArClE,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;MACzE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,6BAA6B,EAAE,YAAY,CAAC,CAAC;MACtG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,6BAA6B,EAAE,aAAa,CAAC,CAAC;MACvG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,+BAA+B,EAAE,QAAQ,CAAC,CAAC;MACpG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,+BAA+B,EAAE,eAAe,CAAC,CAAC;MAC3G,UAAU,CAAC;QACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;OACrE,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ;EA2CO,IAAI;IACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;OACrB,IAAI,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAA;GAC5C;EACO,iBAAiB;IACvB,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GACpJ;EACO,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,EAAE,EAAC,8BAA8B,EAAE,IAAI,EAAE,4CAA4C,EAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAC,IACrH,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,CACF,EACL,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI;UACpB,WAAK,KAAK,EAAC,qCAAqC,IAC7C,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,WAAK,KAAK,EAAC,oCAAoC,IACzE,eACG,IAAI,CAAC,UAAU,CACZ,EACN,WAAK,KAAK,EAAC,2CAA2C,IACnD,KAAK,CAAC,KAAK,CAAC,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,CAAC,CAClC,CACF,EACN,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,CAEX,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,IAAK,IAAI,CAAC,OAAO,IAAK,OAAO,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,IACtG,gBACG,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAC9B,YAAM,KAAK,EAAC,kCAAkC,IAC3C,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CACtG,EAAC,GAAG,EACX,YAAM,KAAK,EAAC,iCAAiC,QAAS,QAAG,IAAI,CAAC,UAAU,OAAG,GAAG,EAC9E,YAAM,KAAK,EAAC,kCAAkC,IAC3C,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC5B,CACF,KAEP,IAAI,CAAC,cAAc,CACpB,CACG,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 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}
@@ -56,13 +56,63 @@ const SallaFilters$1 = /*@__PURE__*/ proxyCustomElement(class SallaFilters exten
56
56
  }
57
57
  connectedCallback() {
58
58
  try {
59
- let filters = (new URLSearchParams(window.location.search)).get('filters');
60
- this.filtersData = filters ? JSON.parse(decodeURIComponent(filters)) : {};
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
- window.history.pushState({}, '', salla.url.addParamToUrl('filters', encodeURIComponent(JSON.stringify(this.filtersData))));
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":"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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 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}