@salla.sa/twilight-components 2.12.74 → 2.12.75

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 (114) hide show
  1. package/dist/cjs/{app-globals-36ab7ecf.js → app-globals-6f163c1c.js} +2 -2
  2. package/dist/cjs/app-globals-6f163c1c.js.map +1 -0
  3. package/dist/cjs/index-40f35e63.js +4 -0
  4. package/dist/cjs/{interfaces-56469cd9.js → interfaces-c3b1e489.js} +6 -5
  5. package/dist/cjs/interfaces-c3b1e489.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/salla-app-install-alert.cjs.entry.js +82 -0
  8. package/dist/cjs/salla-app-install-alert.cjs.entry.js.map +1 -0
  9. package/dist/cjs/salla-filters-widget.cjs.entry.js +4 -4
  10. package/dist/cjs/salla-filters-widget.cjs.entry.js.map +1 -1
  11. package/dist/cjs/salla-filters.cjs.entry.js +5 -5
  12. package/dist/cjs/salla-filters.cjs.entry.js.map +1 -1
  13. package/dist/cjs/twilight.cjs.js +2 -2
  14. package/dist/collection/collection-manifest.json +1 -0
  15. package/dist/collection/components/salla-app-install-alert/salla-app-install-alert.css +3 -0
  16. package/dist/collection/components/salla-app-install-alert/salla-app-install-alert.js +89 -0
  17. package/dist/collection/components/salla-app-install-alert/salla-app-install-alert.js.map +1 -0
  18. package/dist/collection/components/salla-app-install-alert/test/salla-app-install-alert.e2e.js +13 -0
  19. package/dist/collection/components/salla-app-install-alert/test/salla-app-install-alert.e2e.js.map +1 -0
  20. package/dist/collection/components/salla-app-install-alert/test/salla-app-install-alert.spec.js +21 -0
  21. package/dist/collection/components/salla-app-install-alert/test/salla-app-install-alert.spec.js.map +1 -0
  22. package/dist/collection/components/salla-filters/interfaces.js +3 -2
  23. package/dist/collection/components/salla-filters/interfaces.js.map +1 -1
  24. package/dist/collection/components/salla-filters/salla-filters.js +5 -5
  25. package/dist/collection/components/salla-filters/salla-filters.js.map +1 -1
  26. package/dist/collection/components/salla-filters-widget/salla-filters-widget.js +4 -4
  27. package/dist/collection/components/salla-filters-widget/salla-filters-widget.js.map +1 -1
  28. package/dist/components/index.js +1 -1
  29. package/dist/components/index.js.map +1 -1
  30. package/dist/components/salla-app-install-alert.d.ts +11 -0
  31. package/dist/components/salla-app-install-alert.js +100 -0
  32. package/dist/components/salla-app-install-alert.js.map +1 -0
  33. package/dist/components/salla-filters-widget2.js +7 -6
  34. package/dist/components/salla-filters-widget2.js.map +1 -1
  35. package/dist/components/salla-filters.js +5 -5
  36. package/dist/components/salla-filters.js.map +1 -1
  37. package/dist/esm/{app-globals-3843d7b4.js → app-globals-efc9607d.js} +2 -2
  38. package/dist/esm/app-globals-efc9607d.js.map +1 -0
  39. package/dist/esm/index-e6c3f002.js +4 -0
  40. package/dist/esm/{interfaces-cb9e8802.js → interfaces-3159d022.js} +5 -4
  41. package/dist/esm/interfaces-3159d022.js.map +1 -0
  42. package/dist/esm/loader.js +2 -2
  43. package/dist/esm/salla-app-install-alert.entry.js +78 -0
  44. package/dist/esm/salla-app-install-alert.entry.js.map +1 -0
  45. package/dist/esm/salla-filters-widget.entry.js +4 -4
  46. package/dist/esm/salla-filters-widget.entry.js.map +1 -1
  47. package/dist/esm/salla-filters.entry.js +5 -5
  48. package/dist/esm/salla-filters.entry.js.map +1 -1
  49. package/dist/esm/twilight.js +2 -2
  50. package/dist/esm-es5/{app-globals-3843d7b4.js → app-globals-efc9607d.js} +3 -3
  51. package/dist/esm-es5/app-globals-efc9607d.js.map +1 -0
  52. package/dist/esm-es5/index-e6c3f002.js +1 -1
  53. package/dist/esm-es5/index-e6c3f002.js.map +1 -1
  54. package/dist/esm-es5/{interfaces-cb9e8802.js → interfaces-3159d022.js} +2 -2
  55. package/dist/esm-es5/interfaces-3159d022.js.map +1 -0
  56. package/dist/esm-es5/loader.js +1 -1
  57. package/dist/esm-es5/loader.js.map +1 -1
  58. package/dist/esm-es5/salla-app-install-alert.entry.js +5 -0
  59. package/dist/esm-es5/salla-app-install-alert.entry.js.map +1 -0
  60. package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
  61. package/dist/esm-es5/salla-filters-widget.entry.js.map +1 -1
  62. package/dist/esm-es5/salla-filters.entry.js +1 -1
  63. package/dist/esm-es5/salla-filters.entry.js.map +1 -1
  64. package/dist/esm-es5/twilight.js +1 -1
  65. package/dist/esm-es5/twilight.js.map +1 -1
  66. package/dist/twilight/{p-75f5e4ac.system.js → p-14ba306c.system.js} +4 -4
  67. package/dist/twilight/p-14ba306c.system.js.map +1 -0
  68. package/dist/twilight/p-2f09d51a.entry.js +5 -0
  69. package/dist/twilight/p-2f09d51a.entry.js.map +1 -0
  70. package/dist/twilight/p-30db60a1.system.entry.js +5 -0
  71. package/dist/twilight/p-30db60a1.system.entry.js.map +1 -0
  72. package/dist/twilight/p-456195ae.system.js +5 -0
  73. package/dist/twilight/{p-2059b78a.system.js.map → p-456195ae.system.js.map} +1 -1
  74. package/dist/twilight/p-6900d691.system.entry.js +5 -0
  75. package/dist/twilight/p-6900d691.system.entry.js.map +1 -0
  76. package/dist/twilight/{p-61ac07f6.js → p-6cf5973f.js} +2 -2
  77. package/dist/twilight/p-6cf5973f.js.map +1 -0
  78. package/dist/twilight/p-82b08e0b.system.js +5 -0
  79. package/dist/twilight/p-82b08e0b.system.js.map +1 -0
  80. package/dist/twilight/p-88169663.entry.js +5 -0
  81. package/dist/twilight/p-88169663.entry.js.map +1 -0
  82. package/dist/twilight/p-9f54aa1e.system.entry.js +5 -0
  83. package/dist/twilight/p-9f54aa1e.system.entry.js.map +1 -0
  84. package/dist/twilight/p-c2c2f116.entry.js +5 -0
  85. package/dist/twilight/p-c2c2f116.entry.js.map +1 -0
  86. package/dist/twilight/{p-66395721.js → p-e6534d30.js} +3 -3
  87. package/dist/twilight/p-e6534d30.js.map +1 -0
  88. package/dist/twilight/twilight.esm.js +1 -1
  89. package/dist/twilight/twilight.esm.js.map +1 -1
  90. package/dist/twilight/twilight.js +1 -1
  91. package/dist/types/components/salla-app-install-alert/salla-app-install-alert.d.ts +22 -0
  92. package/dist/types/components/salla-filters/interfaces.d.ts +11 -11
  93. package/dist/types/components.d.ts +13 -0
  94. package/package.json +5 -5
  95. package/dist/cjs/app-globals-36ab7ecf.js.map +0 -1
  96. package/dist/cjs/interfaces-56469cd9.js.map +0 -1
  97. package/dist/esm/app-globals-3843d7b4.js.map +0 -1
  98. package/dist/esm/interfaces-cb9e8802.js.map +0 -1
  99. package/dist/esm-es5/app-globals-3843d7b4.js.map +0 -1
  100. package/dist/esm-es5/interfaces-cb9e8802.js.map +0 -1
  101. package/dist/twilight/p-2059b78a.system.js +0 -5
  102. package/dist/twilight/p-4de34318.entry.js +0 -5
  103. package/dist/twilight/p-4de34318.entry.js.map +0 -1
  104. package/dist/twilight/p-61ac07f6.js.map +0 -1
  105. package/dist/twilight/p-65b34312.system.entry.js +0 -5
  106. package/dist/twilight/p-65b34312.system.entry.js.map +0 -1
  107. package/dist/twilight/p-66395721.js.map +0 -1
  108. package/dist/twilight/p-75f5e4ac.system.js.map +0 -1
  109. package/dist/twilight/p-89c5b834.system.entry.js +0 -5
  110. package/dist/twilight/p-89c5b834.system.entry.js.map +0 -1
  111. package/dist/twilight/p-8f18fe08.system.js +0 -5
  112. package/dist/twilight/p-8f18fe08.system.js.map +0 -1
  113. package/dist/twilight/p-c868470b.entry.js +0 -5
  114. package/dist/twilight/p-c868470b.entry.js.map +0 -1
@@ -1,5 +0,0 @@
1
- var __awaiter=this&&this.__awaiter||function(t,e,r,a){function i(t){return t instanceof r?t:new r((function(e){e(t)}))}return new(r||(r=Promise))((function(r,n){function s(t){try{l(a.next(t))}catch(t){n(t)}}function o(t){try{l(a["throw"](t))}catch(t){n(t)}}function l(t){t.done?r(t.value):i(t.value).then(s,o)}l((a=a.apply(t,e||[])).next())}))};var __generator=this&&this.__generator||function(t,e){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},a,i,n,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol==="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(t){return function(e){return l([t,e])}}function l(o){if(a)throw new TypeError("Generator is already executing.");while(s&&(s=0,o[0]&&(r=0)),r)try{if(a=1,i&&(n=o[0]&2?i["return"]:o[0]?i["throw"]||((n=i["return"])&&n.call(i),0):i.next)&&!(n=n.call(i,o[1])).done)return n;if(i=0,n)o=[o[0]&2,n.value];switch(o[0]){case 0:case 1:n=o;break;case 4:r.label++;return{value:o[1],done:false};case 5:r.label++;i=o[1];o=[0];continue;case 7:o=r.ops.pop();r.trys.pop();continue;default:if(!(n=r.trys,n=n.length>0&&n[n.length-1])&&(o[0]===6||o[0]===2)){r=0;continue}if(o[0]===3&&(!n||o[1]>n[0]&&o[1]<n[3])){r.label=o[1];break}if(o[0]===6&&r.label<n[1]){r.label=n[1];n=o;break}if(n&&r.label<n[2]){r.label=n[2];r.ops.push(o);break}if(n[2])r.ops.pop();r.trys.pop();continue}o=e.call(t,r)}catch(t){o=[6,t];i=0}finally{a=n=0}if(o[0]&5)throw o[1];return{value:o[0]?o[1]:void 0,done:true}}};
2
- /*!
3
- * Crafted with ❤ by Salla
4
- */System.register(["./p-548cb28d.system.js","./p-8f18fe08.system.js"],(function(t){"use strict";var e,r,a,i,n,s,o;return{setters:[function(t){e=t.r;r=t.c;a=t.h;i=t.H;n=t.g},function(t){s=t.F;o=t.a}],execute:function(){var l=":host{display:block}.s-rating-stars-small{line-height:12px}.s-filters-radio{background-image:none !important}";var c=t("salla_filters",function(){function t(t){var a=this;e(this,t);this.changed=r(this,"changed",7);this.isReady=false;this.filters=undefined;this.isSidebarOpen=undefined;this.filtersData={};this.apply=undefined;this.reset=undefined;salla.event.on("filters::hidden",(function(){return a.host.style.display="none"}));salla.lang.onLoaded((function(){a.apply=salla.lang.get("pages.checkout.apply");a.reset=salla.lang.get("pages.categories.filters_reset")}));salla.event.on("filters::fetched",(function(t){var e=t.filters;a.host.style.display="";var r={};a.filters=e.map((function(t){t.label={category_id:salla.lang.get("common.titles.categories"),brand_id:salla.lang.get("common.titles.brands"),rating:salla.lang.get("pages.categories.filter_rating"),price:salla.lang.get("pages.categories.filter_price")}[t.key]||t.label;t.inputType=s.RADIO;if(t.key=="rating"){t.inputType=s.RADIO;var e=t.values,i=e.max,n=e.min;t.values=[5,4,3,2,1].filter((function(t){return t>=n||t<=i}))}if(a.filtersData[t.key]){r[t.key]=a.filtersData[t.key]}return t}));a.filtersData=r;a.host.childNodes.forEach((function(t){return __awaiter(a,void 0,void 0,(function(){var e;return __generator(this,(function(r){switch(r.label){case 0:e=t.setWidgetHeight;if(!e)return[3,2];return[4,t.setWidgetHeight()];case 1:e=r.sent();r.label=2;case 2:return[2,e]}}))}))}))}))}t.prototype.connectedCallback=function(){var t=this;try{var e=new URLSearchParams(window.location.search);var r={};var a=function(e,a){var i=e.replace(/\]/g,"").split("[");i.reduce((function(e,r,i,n){var s=i===n.length-1;var o=/^\d+$/.test(r)?parseInt(r,10):r;if(s){if(/^\d+$/.test(r)){t.addObjectValue(e,n[i-1],a);return e[n[i-1]]}else if(e[o]){e[o]=[e[o],a]}else{e[o]=a}}else{e[o]=e[o]||{}}return e[o]}),r)};for(var i=0,n=e.entries();i<n.length;i++){var s=n[i],o=s[0],l=s[1];a(o,l)}this.filtersData=this.flattenObject(r["filters"])||{}}catch(t){salla.logger.warn("failed to get filters from url",t.message)}};t.prototype.flattenObject=function(t){for(var e in t){if(typeof t[e]==="object"){if(t[e][e]&&Array.isArray(t[e][e])){t[e]=t[e][e]}else{this.flattenObject(t[e])}}}return t};t.prototype.addObjectValue=function(t,e,r){if(t.hasOwnProperty(e)){if(Array.isArray(t[e])){t[e].push(r)}else{t[e]=[t[e],r]}}else{t[e]=[r]}};t.prototype.getFilters=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){return[2,this.filtersData]}))}))};t.prototype.applyFilters=function(){return __awaiter(this,void 0,void 0,(function(){var t;var e=this;return __generator(this,(function(r){if(!this.isReady){return[2]}t=Object.keys(this.filtersData).length>0;setTimeout((function(){var r;if(t){var a=new URL(window.location.href);for(var i=0,n=a.searchParams.entries();i<n.length;i++){var s=n[i][0];if(s.startsWith("filters")){a.searchParams.delete(s)}}var o=e.encodeFilters(e.filtersData);var l=a.search.split("&").filter((function(t){return!t.includes("filters")})).join("&");if(!!l){a.search=a.search.split("&filters")[0]+"&"+o}else{a.search="?".concat(o)}window.history.pushState({},"",a.href)}else{var a=new URL(window.location.href);(r=a.searchParams)===null||r===void 0?void 0:r.delete("filters");window.history.pushState({},"",a.toString())}salla.event.emit("salla-filters::changed",e.filtersData);e.changed.emit(e.filtersData)}),300);return[2]}))}))};t.prototype.encodeFilters=function(t,e){if(e===void 0){e="filters"}var r=[];for(var a in t){if(Object.prototype.hasOwnProperty.call(t,a)){var i=t[a];var n=e?"".concat(e,"[").concat(a,"]"):a;if(Array.isArray(i)){for(var s=0;s<i.length;s++){r.push("".concat(n,"[").concat(s,"]=").concat(i[s]))}}else if(typeof i==="object"&&i!==null){r.push(this.encodeFilters(i,n))}else{var o="".concat(n,"=").concat(i);r.push(o)}}}return r.join("&")};t.prototype.resetFilters=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){this.removeFiltersQueryParams();this.filtersData={};this.host.childNodes.forEach((function(t){return t.reset&&t.reset()}));salla.event.emit("salla-filters::reset");return[2,this.applyFilters()]}))}))};t.prototype.removeFiltersQueryParams=function(){var t=new URLSearchParams(window.location.search);var e=Array.from(t.keys()).filter((function(t){return!t.startsWith("filters[")})).map((function(e){return"".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(t.get(e)))})).join("&");var r=e?"".concat(window.location.pathname,"?").concat(e):window.location.pathname;window.history.pushState({},"",r)};t.prototype.handleOptionChange=function(t,e,r){if(e.type===o.RANGE){this.filtersData[e.key]=r}var a=t.target.checked;if(e.type===o.VARIANTS){this.filtersData.variants=this.filtersData.variants||{};a&&(this.filtersData.variants[e.key]=r);a||delete this.filtersData.variants[e.key]}if(t.target.type==s.RADIO){a&&(this.filtersData[e.key]=r);a||delete this.filtersData[e.key]}if(t.target.type==s.CHECKBOX){this.filtersData[e.key]=this.filtersData[e.key]||[];if(a){this.filtersData[e.key].push(r)}this.filtersData[e.key]=this.filtersData[e.key].filter((function(t){return t!=r}))}this.applyFilters()};t.prototype.render=function(){var t=this;var e,r;return a(i,null,(e=this.filters)===null||e===void 0?void 0:e.map((function(e){return a("salla-filters-widget",{option:e,filtersData:t.filtersData,onChanged:function(e){var r=e.detail,a=r.event,i=r.option,n=r.value;return t.handleOptionChange(a,i,n)}})})),((r=this.filters)===null||r===void 0?void 0:r.length)?a("div",{class:"s-filters-footer"},a("salla-button",{color:"gray",fill:"outline",onClick:function(){return t.resetFilters()}},this.reset)):"")};t.prototype.componentDidLoad=function(){this.isReady=true};Object.defineProperty(t.prototype,"host",{get:function(){return n(this)},enumerable:false,configurable:true});return t}());c.style=l}}}));
5
- //# sourceMappingURL=p-89c5b834.system.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["sallaFiltersCss","SallaFilters","exports","class_1","hostRef","_this","this","isReady","salla","event","on","host","style","display","lang","onLoaded","apply","get","reset","_c","filters","freshFilterData","map","filter","label","category_id","brand_id","rating","price","key","inputType","FilterOptionInputType","RADIO","values","max_1","max","min_1","min","stars","filtersData","childNodes","forEach","widget","__awaiter","__generator","_d","setWidgetHeight","sent","prototype","connectedCallback","searchParams","URLSearchParams","window","location","search","filterObject","value","keys","replace","split","reduce","obj","keyPart","index","array","isLastKey","length","finalKey","test","parseInt","addObjectValue","_i","entries","flattenObject","e","logger","warn","message","Array","isArray","hasOwnProperty","push","getFilters","applyFilters","hasFilters","Object","setTimeout","url","URL","href","startsWith","delete","encodedFilterValues","encodeFilters","sanitizedFilterValues","item","includes","join","concat","history","pushState","_a","toString","emit","changed","parentKey","encodedFilters","call","fullKey","i","result","resetFilters","removeFiltersQueryParams","newUrl","from","encodeURIComponent","finalUrl","pathname","handleOptionChange","option","type","FilterOptionTypes","RANGE","isChecked","target","checked","VARIANTS","variants","CHECKBOX","val","render","h","Host","onChanged","detail","_b","class","color","fill","onClick","componentDidLoad"],"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 let sanitizedFilterValues = url.search.split(\"&\").filter(item => !item.includes('filters')).join(\"&\")\n if (!!sanitizedFilterValues) {\n url.search = url.search.split(\"&filters\")[0] + \"&\" + encodedFilterValues\n }else {\n url.search = `?${encodedFilterValues}`\n }\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"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /*!
2
- * Crafted with ❤ by Salla
3
- */
4
- System.register([],(function(i){"use strict";return{execute:function(){i({F:void 0,a:void 0});var n;(function(i){i["VALUES"]="values";i["VARIANTS"]="variants";i["MINIMUM"]="minimum";i["RANGE"]="range"})(n||(n=i("a",{})));var e;(function(i){i["CHECKBOX"]="checkbox";i["RADIO"]="radio"})(e||(e=i("F",{})))}}}));
5
- //# sourceMappingURL=p-8f18fe08.system.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["FilterOptionTypes","exports","FilterOptionInputType"],"sources":["src/components/salla-filters/interfaces.ts"],"sourcesContent":["export enum FilterOptionTypes {\n // CATEGORIES = \"categories\",\n // BRANDs = \"brands\",\n // RATING = \"rating\",\n // PRICE = \"price\",\n // RADIO = \"radio\",\n VALUES = \"values\",\n VARIANTS = \"variants\",\n MINIMUM = \"minimum\",\n RANGE = \"range\",\n}\n\nexport enum FilterOptionInputType {\n CHECKBOX = \"checkbox\",\n RADIO = \"radio\",\n}\n\nexport interface FilterValue {\n key: string,\n count: string,\n value: string,\n from?: number| \"*\",\n to?: number | \"*\"\n}\n\nexport interface Filter {\n label: string,\n key: \"categories\" | string,//todo:: add possible values\n inputType: FilterOptionInputType,\n type: FilterOptionTypes,\n min?: number,\n max?: number,\n values: Array<FilterValue>\n}\n"],"mappings":";;;kGAAYA,GAAZ,SAAYA,GAMVA,EAAA,mBACAA,EAAA,uBACAA,EAAA,qBACAA,EAAA,gBACD,EAVD,CAAYA,MAAiBC,EAAA,U,IAYjBC,GAAZ,SAAYA,GACVA,EAAA,uBACAA,EAAA,gBACD,EAHD,CAAYA,MAAqBD,EAAA,S"}
@@ -1,5 +0,0 @@
1
- /*!
2
- * Crafted with ❤ by Salla
3
- */
4
- import{r as s,c as t,h as i,H as e,g as h}from"./p-dd9b5ccb.js";import{H as l}from"./p-5ce4c61e.js";import{a,F as n}from"./p-61ac07f6.js";const r=":host{display:block}";const o=class{constructor(i){s(this,i);this.changed=t(this,"changed",7);this.initHeight=195;this.withLoadMore=undefined;this.filtersData=undefined;this.option=undefined;this.isOpen=true;this.isShowMore=false;this.showMoreLabel="عرض المزيد";this.showLessLabel="عرض أقل";this.page=salla.config.get("page")}connectedCallback(){this.withLoadMore=this.option.key!="price"&&Array.isArray(this.option.values)&&this.option.values.length>8;salla.onReady((()=>{this.page=salla.config.get("page")}));salla.lang.onLoaded((()=>{this.showMoreLabel=salla.lang.getWithDefault("common.titles.more",this.showMoreLabel);this.showLessLabel=salla.lang.getWithDefault("common.elements.show_less",this.showLessLabel)}))}componentDidLoad(){this.widgetValues.scrollHeight<this.initHeight&&(this.withLoadMore=false);this.withLoadMore&&this.widgetValues&&(this.widgetValues.style.maxHeight=`${this.initHeight}px`);this.widgetContent.style.height=`${this.widgetContent.scrollHeight}px`}async setWidgetHeight(s=250){this.widgetContent.removeAttribute("style");setTimeout((()=>{let s=this.widgetContent.offsetHeight;this.widgetContent.style.height=s+"px"}),s)}async reset(){if(this.option.type===a.RANGE){this.priceRange.reset()}Array.from(this.host.querySelectorAll("input")).forEach((s=>s.checked=false))}async showMore(){this.isShowMore=!this.isShowMore;this.widgetContent.style.height="auto";this.widgetValues.style.maxHeight=this.isShowMore?`${this.widgetValues.scrollHeight}px`:`${this.initHeight}px`;setTimeout((()=>{this.widgetContent.style.height=`${this.widgetContent.scrollHeight}px`}),400)}async toggleWidget(){this.isOpen=!this.isOpen;l.toggleElementClassIf(this.widgetContent,"s-filters-widget-opened","s-filters-widget-closed",(()=>this.isOpen))}renderFilterOption(s){if(![a.VALUES,a.MINIMUM,a.VARIANTS].includes(s.type)){return""}const t=[];const e=[];s.values.forEach(((h,l)=>{let a=typeof h=="number"?h:h.key||h.value;const n=this.page.slug=="product.index"&&Number(h.key)==this.page.id;const r=i("label",{class:"s-filters-label",htmlFor:`${s.key}-option-${l}`,style:{opacity:n?"0.6":"1"}},i("input",{id:`${s.key}-option-${l}`,name:n?"current-category":s.key,type:n?"checkbox":s.inputType,checked:n||this.isSelectedOption(s,a),disabled:n,class:`s-filters-${n?"checkbox":s.inputType}`,onChange:t=>!n?this.changed.emit({event:t,option:s,value:a}):null}),this.getOptionLabel(s,h));if(n){t.unshift(r)}else{e.push(r)}}));return t.concat(e)}isSelectedOption(s,t){if(!this.filtersData||!this.filtersData[s.key]){return false}return s.inputType===n.CHECKBOX?this.filtersData[s.key].includes(t):this.filtersData[s.key]==t}getOptionLabel(s,t){if(s.key=="rating"){return i("salla-rating-stars",{size:"small",value:t})}let e=t.value||"null";return i("span",{class:"s-filters-option-name"},e)}render(){return i(e,{class:"s-filters-widget-container"},i("h3",{class:"s-filters-widget-title",onClick:()=>this.toggleWidget()},i("span",null,this.option.label),i("span",{class:`s-filters-widget-plusminus ${this.isOpen?"s-filters-widget-plusminus-active":""}`})),i("div",{class:"s-filters-widget-content",ref:s=>this.widgetContent=s},i("div",{class:"s-filters-widget-values",ref:s=>this.widgetValues=s},i("slot",null),this.option.type!==a.RANGE?this.renderFilterOption(this.option):i("salla-price-range",{onChanged:s=>this.changed.emit(s.detail),ref:s=>this.priceRange=s,filtersData:this.filtersData,option:this.option})),this.withLoadMore&&i("a",{class:"s-filters-widget-more",onClick:()=>this.showMore()},!this.isShowMore?this.showMoreLabel:this.showLessLabel)))}get host(){return h(this)}};o.style=r;export{o as salla_filters_widget};
5
- //# sourceMappingURL=p-c868470b.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["sallaFiltersWidgetCss","SallaFiltersWidget","this","initHeight","salla","config","get","connectedCallback","withLoadMore","option","key","Array","isArray","values","length","onReady","page","lang","onLoaded","showMoreLabel","getWithDefault","showLessLabel","componentDidLoad","widgetValues","scrollHeight","style","maxHeight","widgetContent","height","setWidgetHeight","delay","removeAttribute","setTimeout","currentWidgetHeight","offsetHeight","reset","type","FilterOptionTypes","RANGE","priceRange","from","host","querySelectorAll","forEach","input","checked","showMore","isShowMore","toggleWidget","isOpen","Helper","toggleElementClassIf","renderFilterOption","VALUES","MINIMUM","VARIANTS","includes","disabledAndSelectedOption","otherOptions","filterOption","index","value","isDisabledAndSelected","slug","Number","id","label","h","class","htmlFor","opacity","name","inputType","isSelectedOption","disabled","onChange","e","changed","emit","event","getOptionLabel","unshift","push","concat","filtersData","FilterOptionInputType","CHECKBOX","size","render","Host","onClick","ref","el","onChanged","detail","price"],"sources":["src/components/salla-filters-widget/salla-filters-widget.scss?tag=salla-filters-widget","src/components/salla-filters-widget/salla-filters-widget.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, h, Method, State, Prop, Event, Element } from '@stencil/core';\nimport Helper from '../../Helpers/Helper';\nimport { Filter, FilterOptionInputType, FilterOptionTypes } from \"../salla-filters/interfaces\";\n\n@Component({\n tag: 'salla-filters-widget',\n styleUrl: 'salla-filters-widget.scss',\n})\nexport class SallaFiltersWidget {\n @Element() host: HTMLElement;\n\n /**\n * Show more or less filter options.\n */\n @Prop({ mutable: true }) withLoadMore: boolean;\n\n /**\n * Selected filter options value.\n */\n @Prop({ reflect: true }) filtersData: object;\n\n /**\n * Filter option along with possible values.\n */\n @Prop({ reflect: true }) option: Filter;\n\n\n priceRange: HTMLSallaPriceRangeElement\n\n\n private widgetValues: HTMLElement;\n private widgetContent: HTMLDivElement;\n private initHeight: number = 195;\n\n @State() isOpen: boolean = true;\n @State() isShowMore: boolean = false;\n @State() showMoreLabel: string = \"عرض المزيد\";\n @State() showLessLabel: string = \"عرض أقل\";\n @State() page: any = salla.config.get('page');\n\n /**\n * Custom event emitted up on filter option selection changes.\n */\n @Event() changed: any;\n\n connectedCallback() {\n //lets be smart and don't show 5 and more link for 8 options\n this.withLoadMore = this.option.key != 'price' && Array.isArray(this.option.values) && this.option.values.length > 8;\n salla.onReady(() => {\n this.page = salla.config.get('page');\n })\n salla.lang.onLoaded(() => {\n this.showMoreLabel = salla.lang.getWithDefault('common.titles.more', this.showMoreLabel)\n this.showLessLabel = salla.lang.getWithDefault('common.elements.show_less', this.showLessLabel)\n })\n }\n\n componentDidLoad() {\n this.widgetValues.scrollHeight < this.initHeight && (this.withLoadMore = false);\n (this.withLoadMore && this.widgetValues) && (this.widgetValues.style.maxHeight = `${this.initHeight}px`);\n this.widgetContent.style.height = `${this.widgetContent.scrollHeight}px`;\n }\n\n @Method()\n async setWidgetHeight(delay = 250) {\n this.widgetContent.removeAttribute('style');\n setTimeout(() => {\n let currentWidgetHeight: number = this.widgetContent.offsetHeight;\n this.widgetContent.style.height = currentWidgetHeight + 'px';\n }, delay)\n }\n\n /**\n * Reset selected filter options.\n */\n @Method()\n async reset() {\n if (this.option.type === FilterOptionTypes.RANGE) {\n this.priceRange.reset()\n }\n Array.from(this.host.querySelectorAll('input')).forEach(input => input.checked = false);\n }\n\n\n /**\n * Action to show more or less filter options.\n */\n @Method()\n async showMore() {\n this.isShowMore = !this.isShowMore\n this.widgetContent.style.height = 'auto';\n this.widgetValues.style.maxHeight = this.isShowMore ? `${this.widgetValues.scrollHeight}px` : `${this.initHeight}px`;\n setTimeout(() => {\n this.widgetContent.style.height = `${this.widgetContent.scrollHeight}px`;\n }, 400); // get height after time of collapse animtion (duration-300)\n }\n\n /**\n * Action to toggle widget open or closed (expand/ collapse).\n */\n @Method()\n async toggleWidget() {\n this.isOpen = !this.isOpen;\n Helper.toggleElementClassIf(this.widgetContent, 's-filters-widget-opened', 's-filters-widget-closed', () => this.isOpen);\n }\n\n renderFilterOption(option: Filter) {\n if (![FilterOptionTypes.VALUES, FilterOptionTypes.MINIMUM, FilterOptionTypes.VARIANTS].includes(option.type)) {\n return '';\n }\n \n const disabledAndSelectedOption = [];\n const otherOptions = [];\n \n option.values.forEach((filterOption, index) => {\n let value = typeof filterOption == 'number' ? filterOption : (filterOption.key || filterOption.value);\n \n const isDisabledAndSelected = this.page.slug == 'product.index' && Number(filterOption.key) == this.page.id;\n \n const label = (\n <label class=\"s-filters-label\" htmlFor={`${option.key}-option-${index}`} style={{\"opacity\" : isDisabledAndSelected ? \"0.6\" : \"1\"}}>\n <input\n id={`${option.key}-option-${index}`}\n name={isDisabledAndSelected ? \"current-category\" : option.key}\n type={isDisabledAndSelected ? \"checkbox\" : option.inputType}\n checked={isDisabledAndSelected || this.isSelectedOption(option, value)}\n disabled={isDisabledAndSelected}\n class={`s-filters-${isDisabledAndSelected ? \"checkbox\" : option.inputType}`}\n onChange={e => !isDisabledAndSelected ? this.changed.emit({ event: e, option: option, value: value }) : null}\n />\n {this.getOptionLabel(option, filterOption)}\n </label>\n );\n \n if (isDisabledAndSelected) {\n disabledAndSelectedOption.unshift(label); // Add to the beginning of the disabledAndSelectedOption array\n } else {\n otherOptions.push(label); // Add to the end of the otherOptions array\n }\n });\n \n return disabledAndSelectedOption.concat(otherOptions);\n }\n \n \n \n\n private isSelectedOption(option: Filter, value) {\n\n \n if (!this.filtersData || !this.filtersData[option.key]) {\n return false\n }\n\n return option.inputType === FilterOptionInputType.CHECKBOX\n ? this.filtersData[option.key].includes(value)\n : this.filtersData[option.key] == value;\n }\n\n private getOptionLabel(option: Filter, filterOption) {\n if (option.key == 'rating') {\n //in amazon has stars & up, should we add it, to avoid those people who will come to say I selected 4 why I see 5 sars products\n return <salla-rating-stars size=\"small\" value={filterOption} />;\n }\n let label = filterOption.value || 'null';\n //label+=filterOption.count ? ` (${salla.helpers.number(filterOption.count)})` : '';\n return <span class=\"s-filters-option-name\">{label}</span>;\n }\n\n render() {\n return (\n <Host class=\"s-filters-widget-container\">\n <h3 class=\"s-filters-widget-title\" onClick={() => this.toggleWidget()}>\n <span>{this.option.label}</span>\n <span class={`s-filters-widget-plusminus ${this.isOpen ? 's-filters-widget-plusminus-active' : ''}`} />\n </h3>\n <div class=\"s-filters-widget-content\" ref={(el) => this.widgetContent = el}>\n <div class=\"s-filters-widget-values\" ref={(el) => this.widgetValues = el}>\n <slot />\n {\n this.option.type !== FilterOptionTypes.RANGE\n ? this.renderFilterOption(this.option)\n : <salla-price-range onChanged={(event) => this.changed.emit(event.detail)}\n ref={price => this.priceRange = price}\n filtersData={this.filtersData}\n option={this.option} />\n }\n </div>\n {this.withLoadMore &&\n <a class=\"s-filters-widget-more\"\n onClick={() => this.showMore()}>{!this.isShowMore ? this.showMoreLabel : this.showLessLabel}</a>\n }\n </div>\n </Host>\n );\n }\n\n}\n"],"mappings":"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"}