@salla.sa/twilight-components 2.12.2 → 2.12.3
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/{Helper-f14223e6.js → Helper-9f7c98a8.js} +14 -1
- package/dist/cjs/Helper-9f7c98a8.js.map +1 -0
- package/dist/cjs/app-globals-33911fba.js +65 -0
- package/dist/cjs/app-globals-33911fba.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/salla-add-product-button_40.cjs.entry.js +1 -1
- package/dist/cjs/salla-add-product-button_40.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js +6 -0
- package/dist/cjs/salla-filters.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-price-range.cjs.entry.js +3 -0
- package/dist/cjs/salla-price-range.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-products-list.cjs.entry.js +28 -3
- package/dist/cjs/salla-products-list.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-products-slider.cjs.entry.js +1 -1
- package/dist/cjs/twilight.cjs.js +1 -1
- package/dist/collection/Helpers/Helper.js +13 -0
- package/dist/collection/Helpers/Helper.js.map +1 -1
- package/dist/collection/components/salla-add-product-button/salla-add-product-button.js.map +1 -1
- package/dist/collection/components/salla-filters/salla-filters.js +8 -2
- package/dist/collection/components/salla-filters/salla-filters.js.map +1 -1
- package/dist/collection/components/salla-price-range/salla-price-range.js +4 -1
- package/dist/collection/components/salla-price-range/salla-price-range.js.map +1 -1
- package/dist/collection/components/salla-products-list/salla-products-list.js +44 -2
- package/dist/collection/components/salla-products-list/salla-products-list.js.map +1 -1
- package/dist/collection/global/app.js +3 -5
- package/dist/collection/global/app.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/components/Helper.js +13 -0
- package/dist/components/Helper.js.map +1 -1
- package/dist/components/index.js +20 -4170
- package/dist/components/index.js.map +1 -1
- package/dist/components/salla-add-product-button2.js.map +1 -1
- package/dist/components/salla-filters.js +6 -0
- package/dist/components/salla-filters.js.map +1 -1
- package/dist/components/salla-price-range2.js +3 -0
- package/dist/components/salla-price-range2.js.map +1 -1
- package/dist/components/salla-products-list.js +28 -3
- package/dist/components/salla-products-list.js.map +1 -1
- package/dist/esm/{Helper-a7971963.js → Helper-e4611a7c.js} +14 -1
- package/dist/esm/Helper-e4611a7c.js.map +1 -0
- package/dist/esm/app-globals-6b360973.js +63 -0
- package/dist/esm/app-globals-6b360973.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/salla-add-product-button_40.entry.js +1 -1
- package/dist/esm/salla-add-product-button_40.entry.js.map +1 -1
- package/dist/esm/salla-filters-widget.entry.js +1 -1
- package/dist/esm/salla-filters.entry.js +6 -0
- package/dist/esm/salla-filters.entry.js.map +1 -1
- package/dist/esm/salla-price-range.entry.js +3 -0
- package/dist/esm/salla-price-range.entry.js.map +1 -1
- package/dist/esm/salla-products-list.entry.js +29 -4
- package/dist/esm/salla-products-list.entry.js.map +1 -1
- package/dist/esm/salla-products-slider.entry.js +1 -1
- package/dist/esm/twilight.js +1 -1
- package/dist/esm-es5/Helper-e4611a7c.js +5 -0
- package/dist/esm-es5/Helper-e4611a7c.js.map +1 -0
- package/dist/esm-es5/app-globals-6b360973.js +23 -0
- package/dist/esm-es5/app-globals-6b360973.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/salla-add-product-button_40.entry.js +1 -1
- package/dist/esm-es5/salla-add-product-button_40.entry.js.map +1 -1
- package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
- package/dist/esm-es5/salla-filters.entry.js +1 -1
- package/dist/esm-es5/salla-filters.entry.js.map +1 -1
- package/dist/esm-es5/salla-price-range.entry.js.map +1 -1
- package/dist/esm-es5/salla-products-list.entry.js +1 -1
- package/dist/esm-es5/salla-products-list.entry.js.map +1 -1
- package/dist/esm-es5/salla-products-slider.entry.js +1 -1
- package/dist/esm-es5/twilight.js +1 -1
- package/dist/twilight/{p-a378c3be.entry.js → p-1342a68f.entry.js} +2 -2
- package/dist/twilight/p-15b4fb7a.js +23 -0
- package/dist/twilight/p-15b4fb7a.js.map +1 -0
- package/dist/twilight/{p-0e716419.entry.js → p-23215851.entry.js} +2 -2
- package/dist/twilight/p-23215851.entry.js.map +1 -0
- package/dist/twilight/p-2d334c27.system.js +5 -0
- package/dist/twilight/p-2d334c27.system.js.map +1 -0
- package/dist/twilight/{p-9ab303f5.system.entry.js → p-3671b683.system.entry.js} +2 -2
- package/dist/twilight/{p-5ffffea6.js → p-431fcc73.js} +2 -2
- package/dist/twilight/p-431fcc73.js.map +1 -0
- package/dist/twilight/{p-671591bd.system.js → p-5f400dc8.system.js} +2 -2
- package/dist/twilight/{p-0bab8332.entry.js → p-61d1ce2d.entry.js} +2 -2
- package/dist/twilight/p-61d1ce2d.entry.js.map +1 -0
- package/dist/twilight/p-8891fdc9.system.js +23 -0
- package/dist/twilight/p-8891fdc9.system.js.map +1 -0
- package/dist/twilight/p-8e3f85c5.system.entry.js.map +1 -1
- package/dist/twilight/p-90f60c35.system.entry.js +5 -0
- package/dist/twilight/p-90f60c35.system.entry.js.map +1 -0
- package/dist/twilight/{p-ee9a8735.system.entry.js → p-b4d2ecf1.system.entry.js} +2 -2
- package/dist/twilight/p-b4d2ecf1.system.entry.js.map +1 -0
- package/dist/twilight/p-c0a87009.system.entry.js +5 -0
- package/dist/twilight/p-c0a87009.system.entry.js.map +1 -0
- package/dist/twilight/p-ce042888.entry.js.map +1 -1
- package/dist/twilight/p-e0cb00aa.entry.js +5 -0
- package/dist/twilight/p-e0cb00aa.entry.js.map +1 -0
- package/dist/twilight/{p-3d027624.entry.js → p-ea65d3c9.entry.js} +2 -2
- package/dist/twilight/{p-37264cdf.system.entry.js → p-ffec6e8f.system.entry.js} +2 -2
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/twilight/twilight.js +1 -1
- package/dist/types/Helpers/Helper.d.ts +1 -0
- package/dist/types/components/salla-filters/salla-filters.d.ts +2 -2
- package/dist/types/components/salla-price-range/salla-price-range.d.ts +3 -0
- package/dist/types/components/salla-products-list/salla-products-list.d.ts +5 -0
- package/dist/types/components.d.ts +12 -1
- package/dist/types/global/app.d.ts +1 -5
- package/dist/types/index.d.ts +1 -0
- package/package.json +3 -3
- package/dist/cjs/Helper-f14223e6.js.map +0 -1
- package/dist/cjs/app-globals-9ad08b7a.js +0 -4215
- package/dist/cjs/app-globals-9ad08b7a.js.map +0 -1
- package/dist/esm/Helper-a7971963.js.map +0 -1
- package/dist/esm/app-globals-d0d32791.js +0 -4213
- package/dist/esm/app-globals-d0d32791.js.map +0 -1
- package/dist/esm-es5/Helper-a7971963.js +0 -5
- package/dist/esm-es5/Helper-a7971963.js.map +0 -1
- package/dist/esm-es5/app-globals-d0d32791.js +0 -25
- package/dist/esm-es5/app-globals-d0d32791.js.map +0 -1
- package/dist/twilight/p-0bab8332.entry.js.map +0 -1
- package/dist/twilight/p-0e716419.entry.js.map +0 -1
- package/dist/twilight/p-2042f370.system.js +0 -5
- package/dist/twilight/p-2042f370.system.js.map +0 -1
- package/dist/twilight/p-5ffffea6.js.map +0 -1
- package/dist/twilight/p-aa8e58b9.js +0 -25
- package/dist/twilight/p-aa8e58b9.js.map +0 -1
- package/dist/twilight/p-bd2b7381.system.js +0 -25
- package/dist/twilight/p-bd2b7381.system.js.map +0 -1
- package/dist/twilight/p-be148f43.system.entry.js +0 -5
- package/dist/twilight/p-be148f43.system.entry.js.map +0 -1
- package/dist/twilight/p-c4a4b584.system.entry.js +0 -5
- package/dist/twilight/p-c4a4b584.system.entry.js.map +0 -1
- package/dist/twilight/p-dd290c58.entry.js +0 -5
- package/dist/twilight/p-dd290c58.entry.js.map +0 -1
- package/dist/twilight/p-ee9a8735.system.entry.js.map +0 -1
- /package/dist/twilight/{p-a378c3be.entry.js.map → p-1342a68f.entry.js.map} +0 -0
- /package/dist/twilight/{p-9ab303f5.system.entry.js.map → p-3671b683.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-671591bd.system.js.map → p-5f400dc8.system.js.map} +0 -0
- /package/dist/twilight/{p-3d027624.entry.js.map → p-ea65d3c9.entry.js.map} +0 -0
- /package/dist/twilight/{p-37264cdf.system.entry.js.map → p-ffec6e8f.system.entry.js.map} +0 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(t,e,i,r){function n(t){return t instanceof i?t:new i((function(e){e(t)}))}return new(i||(i=Promise))((function(i,s){function o(t){try{l(r.next(t))}catch(t){s(t)}}function a(t){try{l(r["throw"](t))}catch(t){s(t)}}function l(t){t.done?i(t.value):n(t.value).then(o,a)}l((r=r.apply(t,e||[])).next())}))};var __generator=this&&this.__generator||function(t,e){var i={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},r,n,s,o;return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol==="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(t){return function(e){return l([t,e])}}function l(a){if(r)throw new TypeError("Generator is already executing.");while(o&&(o=0,a[0]&&(i=0)),i)try{if(r=1,n&&(s=a[0]&2?n["return"]:a[0]?n["throw"]||((s=n["return"])&&s.call(n),0):n.next)&&!(s=s.call(n,a[1])).done)return s;if(n=0,s)a=[a[0]&2,s.value];switch(a[0]){case 0:case 1:s=a;break;case 4:i.label++;return{value:a[1],done:false};case 5:i.label++;n=a[1];a=[0];continue;case 7:a=i.ops.pop();i.trys.pop();continue;default:if(!(s=i.trys,s=s.length>0&&s[s.length-1])&&(a[0]===6||a[0]===2)){i=0;continue}if(a[0]===3&&(!s||a[1]>s[0]&&a[1]<s[3])){i.label=a[1];break}if(a[0]===6&&i.label<s[1]){i.label=s[1];s=a;break}if(s&&i.label<s[2]){i.label=s[2];i.ops.push(a);break}if(s[2])i.ops.pop();i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t];n=0}finally{r=s=0}if(a[0]&5)throw a[1];return{value:a[0]?a[1]:void 0,done:true}}};
|
|
2
|
+
/*!
|
|
3
|
+
* Crafted with ❤ by Salla
|
|
4
|
+
*/System.register(["./p-9fcca94b.system.js","./p-f6803599.system.js","./p-2d334c27.system.js"],(function(t){"use strict";var e,i,r,n,s,o,a;return{setters:[function(t){e=t.r;i=t.c;r=t.h;n=t.H;s=t.g},function(t){o=t.a},function(t){a=t.H}],execute:function(){var l='\x3c!-- Generated by IcoMoon.io --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n<title>shopping-bag</title>\n<path d="M28 10.667h-4v-2.667c0-4.412-3.588-8-8-8s-8 3.588-8 8v2.667h-4c-0.736 0-1.333 0.596-1.333 1.333v13.333c0 3.676 2.991 6.667 6.667 6.667h13.333c3.676 0 6.667-2.991 6.667-6.667v-13.333c0-0.737-0.597-1.333-1.333-1.333zM10.667 8c0-2.941 2.392-5.333 5.333-5.333s5.333 2.392 5.333 5.333v2.667h-10.667zM26.667 25.333c0 2.205-1.795 4-4 4h-13.333c-2.205 0-4-1.795-4-4v-12h2.667v2.667c0 0.737 0.597 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667h10.667v2.667c0 0.737 0.597 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667h2.667z"></path>\n</svg>\n';var c="";var u=t("salla_products_list",function(){function t(t){e(this,t);this.productsFetched=i(this,"productsFetched",7);this.source=undefined;this.sourceValue=undefined;this.limit=undefined;this.sortBy=undefined;this.filtersResults=undefined;this.horizontalCards=undefined;this.page=1;this.nextPage=undefined;this.hasInfiniteScroll=undefined;this.hasCustomComponent=undefined;this.sourceValueIsValid=undefined;this.placeholderText=undefined;this.isReady=undefined;this.showPlaceholder=undefined;this.parsedFilters=undefined}t.prototype.connectedCallback=function(){var t=this;salla.onReady((function(){t.hasCustomComponent=!!customElements.get("custom-salla-product-card");t.sourceValueIsValid=!!(t.getSourceValue()||t.isSourceWithoutValue());t.hasInfiniteScroll=!["json","selected","related","landing-page"].includes(t.getSource());try{var e=new URLSearchParams(window.location.search);t.sortBy=t.sortBy||e.get("sort")||e.get("by");var i=e.get("filters");t.parsedFilters=i?JSON.parse(decodeURIComponent(i)):{}}catch(t){salla.logger.warn("failed to get filters from url",t.message)}t.buildNextPageUrl();t.createStatusDom();t.isReady=true}));if(!this.sourceValueIsValid){salla.logger.warn("source-value prop is required for source [".concat(this.getSource(),"]"));return}salla.event.on("salla-filters::changed",(function(e){return t.setFilters(e)}))};t.prototype.setFilters=function(t){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){if(!!t&&JSON.stringify(this.parsedFilters)===JSON.stringify(t)){return[2]}window.scrollTo({top:0,behavior:"smooth"});this.parsedFilters=t;return[2,this.reload()]}))}))};t.prototype.reload=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){salla.infiniteScroll.destroy(this.infiniteScroll);this.buildNextPageUrl();this.wrapper.innerHTML="";this.init();return[2]}))}))};t.prototype.isFilterable=function(){return salla.config.get("store.settings.product.filters")&&this.filtersResults};t.prototype.isSourceWithoutValue=function(){return["offers","latest","sales"].includes(this.getSource())};t.prototype.animateItems=function(){o({targets:"salla-products-list salla-product-card",opacity:[0,1],duration:1200,translateY:[20,0],delay:function(t,e){return e*100}})};t.prototype.createStatusDom=function(){var t=this;this.status=document.createElement("div");this.status.className="s-infinite-scroll-wrapper";this.status.innerHTML='<div class="s-infinite-scroll-status">\n <p class="s-infinite-scroll-last infinite-scroll-last s-hidden" >'.concat(salla.lang.get("common.elements.end_of_content"),'</p>\n <p class="s-infinite-scroll-error infinite-scroll-error s-hidden">').concat(salla.lang.get("common.elements.failed_to_load_more"),'</p>\n </div>\n <a href="#" class="s-infinite-scroll-btn s-button-btn">\n <span class="s-button-loader s-button-loader-center s-infinite-scroll-btn-loader" style="display: none"></span>\n </a>');this.btnLoader=this.status.querySelector(".s-button-loader");salla.lang.onLoaded((function(){t.status.querySelector(".s-infinite-scroll-last").innerHTML=salla.lang.get("common.elements.end_of_content");t.status.querySelector(".s-infinite-scroll-error").innerHTML=salla.lang.get("common.elements.failed_to_load_more");t.placeholderText=salla.lang.get("pages.categories.no_products")}))};t.prototype.initBaseNextPageUrl=function(t){var e=this;this.nextPage=salla.url.api("products?source=".concat(t));if(this.limit){this.nextPage+="&per_page=".concat(this.limit>32?32:this.limit)}if(this.sortBy){this.nextPage+="&sort=".concat(this.sortBy)}this.nextPage+="&filterable=1";var i=function(t,i){if(["string","number"].includes(typeof i)){r.nextPage+="&filters[".concat(t,"]=").concat(i)}else if(Array.isArray(i)){i.forEach((function(i){return e.nextPage+="&filters[".concat(t,"][]=").concat(i)}))}else if(typeof i==="object"){for(var n=0,s=Object.entries(i);n<s.length;n++){var o=s[n],a=o[0],l=o[1];r.nextPage+="&filters[".concat(t,"][").concat(a,"]=").concat(l)}}};var r=this;for(var n=0,s=Object.entries(this.parsedFilters||{});n<s.length;n++){var o=s[n],a=o[0],l=o[1];i(a,l)}};t.prototype.buildNextPageUrl=function(){var t=this.getSource();if(t==="json"){return}this.initBaseNextPageUrl(t);if(this.isSourceWithoutValue()){return}if(["search","related","landing-page"].includes(t)){this.nextPage+="&source_value=".concat(this.getSourceValue());return}try{this.nextPage+="&source_value[]=".concat(this.getSourceValue().join("&source_value[]="))}catch(e){salla.logger.warn('source-value prop should be array of ids ex source-value="[1,2,3]" for the source ['.concat(t,"]"));this.sourceValueIsValid=false}};t.prototype.loading=function(t){if(t===void 0){t=true}this.btnLoader.style.display=t?"inherit":"none"};t.prototype.getItemHTML=function(t){var e=this.hasCustomComponent?"custom-salla-product-card":"salla-product-card";var i=document.createElement(e);i.product=t;this.applyLandingPageStyles(i);this.applyHorizontalCardStyles(i);return i};t.prototype.applyLandingPageStyles=function(t){if(this.getSource()==="landing-page"&&!this.hasCustomComponent){t.toggleAttribute("hide-add-btn",true);t.classList.add("s-product-card-fit-height")}};t.prototype.applyHorizontalCardStyles=function(t){if(!this.horizontalCards){return}t.setAttribute("horizontal",true);if(!this.hasCustomComponent){t.setAttribute("shadow-on-hover",true)}};t.prototype.getSource=function(){return a.getProductsSource(this.source)};t.prototype.getSourceValue=function(){return a.getProductsSourceValue(this.source,this.sourceValue)};t.prototype.fetchProducts=function(){var t=this;salla.product.api.fetch({source:this.getSource(),source_value:this.getSourceValue(),limit:this.limit}).then((function(e){if(!e.data.length){t.showPlaceholder=true;t.loading(false);return}t.handleResponse(e).forEach((function(e){return t.wrapper.append(e)}))}))};t.prototype.initiateInfiniteScroll=function(){var t=this;var e,i,r;if(!this.hasInfiniteScroll){return}this.host.insertAdjacentElement("beforeend",this.status);this.infiniteScroll=salla.infiniteScroll.initiate(this.wrapper,this.wrapper,{path:function(){return t.nextPage},history:false,nextPage:this.nextPage,scrollThreshold:100},true);(e=this.infiniteScroll)===null||e===void 0?void 0:e.on("request",(function(){return t.loading()}));(i=this.infiniteScroll)===null||i===void 0?void 0:i.on("load",(function(e){var i;if(!((i=e.data)===null||i===void 0?void 0:i.length)&&t.infiniteScroll.pageIndex==2){t.showPlaceholder=true;salla.infiniteScroll.destroy(t.infiniteScroll);t.loading(false);return}else{t.showPlaceholder=false}t.infiniteScroll.appendItems(t.handleResponse(e));if(t.infiniteScroll.pageIndex==2){t.animateItems()}}));(r=this.infiniteScroll)===null||r===void 0?void 0:r.on("error",(function(){t.status.querySelector(".s-infinite-scroll-error").classList.remove("s-hidden");t.loading(false)}));salla.onReady((function(){return salla.infiniteScroll.loadNextPage(t.infiniteScroll)}))};t.prototype.canRender=function(){return this.sourceValueIsValid&&this.isReady};t.prototype.render=function(){var t=this;if(!this.canRender()){return""}if(this.showPlaceholder){return r("div",{class:"s-products-list-placeholder"},r("span",{innerHTML:l}),r("p",null,this.placeholderText))}return r(n,{class:"s-products-list"},r("div",{class:{"s-products-list-wrapper":true,"s-products-list-horizontal-cards":this.horizontalCards&&!this.filtersResults,"s-products-list-vertical-cards":!this.horizontalCards&&!this.filtersResults,"s-products-list-filters-results":this.filtersResults},ref:function(e){return t.wrapper=e}}))};t.prototype.componentDidLoad=function(){var t=this;if(!this.canRender()){return}if(this.getSource()==="json"){if(!this.getSourceValue().length){this.showPlaceholder=true;return}this.getSourceValue().map((function(e){return t.wrapper.append(t.getItemHTML(e))}));return}if(this.getSource()==="selected"||this.getSource()==="landing-page"){if(this.getSource()==="selected"&&!this.getSourceValue().length){this.showPlaceholder=true;return}this.fetchProducts();return}this.init()};t.prototype.init=function(){this.initiateInfiniteScroll();this.loading()};t.prototype.handleResponse=function(t){var e=this;var i,r,n,s,o,l;var c=this.getSource();var u="";if(((i=t.cursor)===null||i===void 0?void 0:i.current)===1){u=a.getPageTitleForSource(c);try{if(this.getSource()==="search"){u=salla.lang.get("common.elements.search_about",{word:this.getSourceValue()})}else if(!u){var h=this.parsedFilters.category_id||this.getSourceValue()[0];u=((s=(n=(r=t.filters.find((function(t){return t.key=="category_id"})))===null||r===void 0?void 0:r.values)===null||n===void 0?void 0:n.find((function(t){return t.key==h})))===null||s===void 0?void 0:s.value)||""}u+=(u?" - ":"")+salla.lang.choice("blocks.header.products_count",(o=t.data)===null||o===void 0?void 0:o.length);if(t.data.length===20){u=u.replace(t.data.length,salla.lang.get("common.elements.more_than")+" "+t.data.length)}t.title=u}catch(t){}}salla.event.emit("salla-products-list::products.fetched",t);this.productsFetched.emit(t);if(t.filters&&this.isFilterable()){this.filtersResults=true;salla.event.emit("filters::fetched",{filters:t.filters})}else if(this.isFilterable()){salla.event.emit("filters::hidden")}this.nextPage=t.cursor?t.cursor.next:this.nextPage;this.loading(false);if(this.hasInfiniteScroll&&!this.nextPage){this.infiniteScroll.option({scrollThreshold:false,loadOnScroll:false});this.status.querySelector(".s-infinite-scroll-last").classList.remove("s-hidden")}return((l=t.data)===null||l===void 0?void 0:l.map((function(t){return e.getItemHTML(t)})))||[]};Object.defineProperty(t.prototype,"host",{get:function(){return s(this)},enumerable:false,configurable:true});return t}());u.style=c}}}));
|
|
5
|
+
//# sourceMappingURL=p-c0a87009.system.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sallaProductsListCss","SallaProductsList","exports","class_1","prototype","connectedCallback","_this","this","salla","onReady","hasCustomComponent","customElements","get","sourceValueIsValid","getSourceValue","isSourceWithoutValue","hasInfiniteScroll","includes","getSource","searchParams","URLSearchParams","window","location","search","sortBy","filters","parsedFilters","JSON","parse","decodeURIComponent","e","logger","warn","message","buildNextPageUrl","createStatusDom","isReady","concat","event","on","setFilters","stringify","scrollTo","top","behavior","reload","infiniteScroll","destroy","wrapper","innerHTML","init","isFilterable","config","filtersResults","animateItems","anime","targets","opacity","duration","translateY","delay","_el","i","status","document","createElement","className","lang","btnLoader","querySelector","onLoaded","placeholderText","initBaseNextPageUrl","source","nextPage","url","api","limit","key","value","this_1","Array","isArray","forEach","item","_j","_k","Object","entries","length","_l","k","v","_i","_g","_h","join","loading","isLoading","style","display","getItemHTML","product","customComponentTag","productCard","applyLandingPageStyles","applyHorizontalCardStyles","toggleAttribute","classList","add","horizontalCards","setAttribute","Helper","getProductsSource","getProductsSourceValue","sourceValue","fetchProducts","fetch","source_value","then","res","data","showPlaceholder","handleResponse","card","append","initiateInfiniteScroll","host","insertAdjacentElement","initiate","path","history","scrollThreshold","_a","_b","response","pageIndex","appendItems","_c","remove","loadNextPage","canRender","render","h","class","ShoppingBag","Host","ref","componentDidLoad","map","title","cursor","current","getPageTitleForSource","word","catId_1","category_id","_d","find","filter","values","cat","choice","_e","replace","emit","productsFetched","next","option","loadOnScroll","_f"],"sources":["src/components/salla-products-list/salla-products-list.scss?tag=salla-products-list","src/components/salla-products-list/salla-products-list.tsx"],"sourcesContent":["\n","import { Component, Host, h, Prop, State, Element, Method, Event, EventEmitter } from '@stencil/core';\nimport anime from 'animejs';\nimport ShoppingBag from '../../assets/svg/shopping-bag.svg';\nimport Helper from '../../Helpers/Helper';\n@Component({\n tag: 'salla-products-list',\n styleUrl: 'salla-products-list.scss'\n})\nexport class SallaProductsList {\n connectedCallback() {\n salla.onReady(() => {\n this.hasCustomComponent = !!customElements.get('custom-salla-product-card');\n this.sourceValueIsValid = !!(this.getSourceValue() || this.isSourceWithoutValue());\n this.hasInfiniteScroll = !['json', 'selected', 'related', 'landing-page'].includes(this.getSource());\n try {\n let searchParams = new URLSearchParams(window.location.search);\n this.sortBy = this.sortBy || searchParams.get('sort') || searchParams.get('by');\n let filters = searchParams.get('filters')\n this.parsedFilters = filters ? JSON.parse(decodeURIComponent(filters)) : {};\n } catch (e) {\n salla.logger.warn('failed to get filters from url', e.message);\n }\n this.buildNextPageUrl();\n this.createStatusDom();\n\n this.isReady = true;\n });\n\n if (!this.sourceValueIsValid) {\n salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);\n return;\n }\n salla.event.on('salla-filters::changed', filters => this.setFilters(filters))\n\n\n }\n\n /**\n * Set parsed filters data from URI\n * @param filters\n */\n @Method()\n async setFilters(filters) {\n if (!!filters && JSON.stringify(this.parsedFilters) === JSON.stringify(filters)) {\n return;\n }\n window.scrollTo({ top: 0, behavior: 'smooth' });\n this.parsedFilters = filters;\n return this.reload();\n }\n\n /**\n * Reload the list of products (entire content of the component).\n */\n @Method()\n async reload() {\n salla.infiniteScroll.destroy(this.infiniteScroll);\n this.buildNextPageUrl();\n // TODO: this is problematic in testing, for the time being it's been resolved like this\n this.wrapper.innerHTML = '';\n this.init();\n }\n\n\n private status: HTMLDivElement;\n private btnLoader: HTMLAnchorElement;\n @Element() host: HTMLElement;\n private wrapper: any;\n private infiniteScroll: any;\n /**\n * The source of the products list\n * @type {string}\n * */\n @Prop({\n reflect: true,\n mutable: true\n }) source: 'categories' | 'latest' | 'related' | 'brands' | 'json' | 'search' | 'tags' | 'selected' | 'offers' | 'landing-page' | 'sales';\n\n /**\n * The source value, cloud be different values as following:\n * - array of ids when `source` in ['categories', 'brands', 'tags', 'selected']\n * - keyword when `source` = 'search'\n * - products payload when `source` = 'json'\n * - product_id when `source` = 'related'\n *\n * @type {string}\n * */\n @Prop({ mutable: true }) sourceValue: any;\n\n /**\n * Limit for number of products in the list.\n */\n @Prop({ mutable: true }) limit: number;\n\n /**\n * Sorting the list of products\n */\n @Prop({ mutable: true }) sortBy?: string | 'ourSuggest' | 'bestSell' | 'topRated' | 'priceFromTopToLow' | 'priceFromLowToTop';\n\n /**\n * should listen to filters events `salla-filters::changed` and re-render\n */\n @Prop({ reflect: true, mutable: true }) filtersResults: boolean;\n\n /**\n * Horizontal cards\n */\n @Prop({ reflect: true }) horizontalCards: boolean\n\n // State\n @State() page: number = 1;\n @State() nextPage: string;\n @State() hasInfiniteScroll: boolean;\n @State() hasCustomComponent: boolean;\n @State() sourceValueIsValid: boolean;\n @State() placeholderText: string;\n @State() isReady: boolean;\n @State() showPlaceholder: boolean;\n @State() parsedFilters: any;\n\n /**\n * Custom event fired when the the products fetched.\n */\n @Event() productsFetched: EventEmitter;\n\n private isFilterable() {\n return salla.config.get('store.settings.product.filters') && this.filtersResults;\n }\n\n private isSourceWithoutValue() {\n return ['offers', 'latest', 'sales'].includes(this.getSource());\n }\n\n private animateItems() {\n anime({\n targets: 'salla-products-list salla-product-card',\n opacity: [0, 1],\n duration: 1200,\n translateY: [20, 0],\n delay: function (_el, i) {\n return i * 100;\n },\n })\n }\n\n private createStatusDom() {\n this.status = document.createElement('div');\n this.status.className = 's-infinite-scroll-wrapper';\n this.status.innerHTML = `<div class=\"s-infinite-scroll-status\">\n <p class=\"s-infinite-scroll-last infinite-scroll-last s-hidden\" >${salla.lang.get('common.elements.end_of_content')}</p>\n <p class=\"s-infinite-scroll-error infinite-scroll-error s-hidden\">${salla.lang.get('common.elements.failed_to_load_more')}</p>\n </div>\n <a href=\"#\" class=\"s-infinite-scroll-btn s-button-btn\">\n <span class=\"s-button-loader s-button-loader-center s-infinite-scroll-btn-loader\" style=\"display: none\"></span>\n </a>`;\n this.btnLoader = this.status.querySelector('.s-button-loader');\n salla.lang.onLoaded(() => {\n this.status.querySelector('.s-infinite-scroll-last').innerHTML = salla.lang.get('common.elements.end_of_content');\n this.status.querySelector('.s-infinite-scroll-error').innerHTML = salla.lang.get('common.elements.failed_to_load_more');\n this.placeholderText = salla.lang.get('pages.categories.no_products');\n });\n }\n\n private initBaseNextPageUrl(source: string) {\n\n this.nextPage = salla.url.api(`products?source=${source}`);\n\n if (this.limit) {\n this.nextPage += `&per_page=${this.limit > 32 ? 32 : this.limit}`;\n }\n if (this.sortBy) {\n this.nextPage += `&sort=${this.sortBy}`;\n }\n // if (!this.isFilterable()) {\n // return this.nextPage;\n // }\n this.nextPage += '&filterable=1';\n for (const [key, value] of Object.entries(this.parsedFilters || {})) {\n if ([\"string\", \"number\"].includes(typeof value)) {\n this.nextPage += `&filters[${key}]=${value}`;\n } else if (Array.isArray(value)) {\n (value as any).forEach(item => this.nextPage += `&filters[${key}][]=${item}`)\n } else if (typeof value === 'object') {\n for (const [k, v] of Object.entries(value)) {\n this.nextPage += `&filters[${key}][${k}]=${v}`;\n }\n }\n }\n }\n\n private buildNextPageUrl() {\n let source = this.getSource();\n if (source === 'json') {\n return;\n }\n this.initBaseNextPageUrl(source);\n if (this.isSourceWithoutValue()) {\n return;\n }\n\n if (['search', 'related', 'landing-page'].includes(source)) {\n this.nextPage += `&source_value=${this.getSourceValue()}`;\n return;\n }\n\n try {\n this.nextPage += `&source_value[]=${this.getSourceValue().join('&source_value[]=')}`;\n } catch (e) {\n salla.logger.warn(`source-value prop should be array of ids ex source-value=\"[1,2,3]\" for the source [${source}]`);\n this.sourceValueIsValid = false;\n }\n }\n\n\n private loading(isLoading = true) {\n this.btnLoader.style.display = isLoading ? 'inherit' : 'none';\n }\n\n private getItemHTML(product) {\n const customComponentTag = this.hasCustomComponent ? 'custom-salla-product-card' : 'salla-product-card';\n const productCard = document.createElement(customComponentTag) as HTMLSallaProductCardElement;\n productCard.product = product;\n\n this.applyLandingPageStyles(productCard);\n this.applyHorizontalCardStyles(productCard);\n\n return productCard;\n }\n\n private applyLandingPageStyles(productCard) {\n if (this.getSource() === 'landing-page' && !this.hasCustomComponent) {\n productCard.toggleAttribute('hide-add-btn', true);\n productCard.classList.add('s-product-card-fit-height');\n }\n }\n\n private applyHorizontalCardStyles(productCard) {\n if (!this.horizontalCards) {\n return;\n }\n productCard.setAttribute('horizontal', true);\n if (!this.hasCustomComponent) {\n productCard.setAttribute('shadow-on-hover', true);\n }\n\n }\n\n private getSource() {\n return Helper.getProductsSource(this.source);\n }\n\n private getSourceValue() {\n return Helper.getProductsSourceValue(this.source, this.sourceValue);\n }\n\n private fetchProducts() {\n salla.product.api.fetch({\n source: this.getSource(),\n source_value: this.getSourceValue(),\n limit: this.limit\n })\n .then(res => {\n if (!res.data.length) {\n this.showPlaceholder = true;\n this.loading(false);\n return;\n }\n this.handleResponse(res).forEach(card => this.wrapper.append(card));\n })\n }\n\n private initiateInfiniteScroll() {\n if (!this.hasInfiniteScroll) {\n return;\n }\n\n this.host.insertAdjacentElement('beforeend', this.status);\n this.infiniteScroll = salla.infiniteScroll.initiate(this.wrapper, this.wrapper, {\n path: () => this.nextPage,\n history: false,\n nextPage: this.nextPage,\n scrollThreshold: 100,\n }, /* infinite via api*/true);\n this.infiniteScroll?.on('request', () => this.loading())\n this.infiniteScroll?.on('load', response => {\n if (!response.data?.length && this.infiniteScroll.pageIndex == 2) {\n this.showPlaceholder = true;\n salla.infiniteScroll.destroy(this.infiniteScroll);\n this.loading(false);\n return;\n } else {\n this.showPlaceholder = false;\n\n }\n this.infiniteScroll.appendItems(this.handleResponse(response))\n if (this.infiniteScroll.pageIndex == 2) {\n this.animateItems();\n }\n })\n this.infiniteScroll?.on('error', () => {\n this.status.querySelector('.s-infinite-scroll-error').classList.remove('s-hidden')\n this.loading(false);\n });\n salla.onReady(() => salla.infiniteScroll.loadNextPage(this.infiniteScroll))\n }\n\n private canRender() {\n return this.sourceValueIsValid && this.isReady;\n }\n\n render() {\n if (!this.canRender()) {\n return '';\n }\n if (this.showPlaceholder) {\n return <div class=\"s-products-list-placeholder\">\n <span innerHTML={ShoppingBag} />\n <p>{this.placeholderText}</p>\n </div>;\n }\n return (\n <Host class=\"s-products-list\">\n <div class={{\n \"s-products-list-wrapper\": true,\n 's-products-list-horizontal-cards': this.horizontalCards && !this.filtersResults,\n 's-products-list-vertical-cards': !this.horizontalCards && !this.filtersResults,\n 's-products-list-filters-results': this.filtersResults,\n }}\n ref={wrapper => this.wrapper = wrapper} />\n </Host>\n );\n }\n\n componentDidLoad() {\n if (!this.canRender()) {\n return;\n }\n\n // Handle json source\n if (this.getSource() === 'json') {\n if (!this.getSourceValue().length) {\n this.showPlaceholder = true;\n return;\n }\n this.getSourceValue().map(product => this.wrapper.append(this.getItemHTML(product)));\n return;\n }\n // Handle selected source\n if (this.getSource() === 'selected' || this.getSource() === 'landing-page') {\n if (this.getSource() === 'selected' && !this.getSourceValue().length) {\n this.showPlaceholder = true;\n return;\n }\n this.fetchProducts()\n return;\n }\n this.init();\n }\n\n private init() {\n this.initiateInfiniteScroll();\n this.loading();\n }\n\n private handleResponse(response): Array<HTMLElement> {\n let source=this.getSource();\n let title = '';\n //help the developer to know the current page title\n if (response.cursor?.current === 1) {\n title = Helper.getPageTitleForSource(source);\n try {\n if (this.getSource() === 'search') {\n title = salla.lang.get('common.elements.search_about', {'word': this.getSourceValue()});\n } else if (!title) {\n let catId = this.parsedFilters.category_id || this.getSourceValue()[0];\n // get the first filter that its key is category_id, then get the value when filter.value.*.key==catId\n title = response.filters.find(filter => filter.key == 'category_id') ?. values ?. find(cat => cat.key == catId) ?. value || '';\n }\n title += (title ? ' - ' : '') + salla.lang.choice('blocks.header.products_count', response.data ?. length);\n if (response.data.length === 20) {\n title = title.replace(response.data.length, salla.lang.get('common.elements.more_than') + ' ' + response.data.length)\n }\n response.title = title;\n } catch (e) {}\n }\n\n salla.event.emit('salla-products-list::products.fetched', response);\n this.productsFetched.emit(response);\n //💡 when source is related, cursor will not be existed\n if (response.filters && this.isFilterable()) {\n this.filtersResults = true;\n salla.event.emit('filters::fetched', { filters: response.filters });\n } else if (this.isFilterable()) {\n salla.event.emit('filters::hidden');\n }\n this.nextPage = response.cursor ? response.cursor.next : this.nextPage;\n this.loading(false);\n if (this.hasInfiniteScroll && !this.nextPage) {\n this.infiniteScroll.option({ scrollThreshold: false, loadOnScroll: false });\n this.status.querySelector('.s-infinite-scroll-last').classList.remove('s-hidden');\n }\n return response.data?.map(product => this.getItemHTML(product)) || [];\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sallaPriceRangeCss","SallaPriceRange","this","filterValues","connectedCallback","filtersData","_a","price","minPrice","min","maxPrice","max","salla","lang","onLoaded","moreThanLabel","getWithDefault","lessThanLabel","toLabel","fromLabel","option","values","length","chunkSize","Math","ceil","i","push","slice","reduce","final","currentValue","to","count","async","minInput","value","maxInput","getPriceLabel","filterValue","isNaN","from","money","handleMinMaxPrice","event","changedEventHandler","isMin","helpers","inputDigitsOnly","target","minInputValidation","maxInputValidation","isReady","changed","emit","isChecked","isMinEqual","isMaxEqual","render","h","Host","map","index","class","htmlFor","key","id","name","type","checked","onChange","e","config","currency","symbol","maxlength","ref","el","onInput","placeholder","componentDidLoad"],"sources":["./src/components/salla-price-range/salla-price-range.scss?tag=salla-price-range","./src/components/salla-price-range/salla-price-range.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n\n.rtl, [dir=\"rtl\"] {\n .rtl-range-slider {\n transform: rotateY(180deg);\n }\n\n .rtl-range-numbers{\n flex-direction: row-reverse;\n }\n\n .form-select, select{\n background-position: left 0.5rem center;\n padding-right: 12px;\n } \n\n // divide\n.menu-divide {\n li {\n &:not(:last-child) {\n &:after {\n left: 0;\n right: auto;\n }\n }\n }\n}\n}\n\ninput[type=range]::-webkit-slider-thumb {\n pointer-events: all;\n width: 24px;\n height: 24px;\n -webkit-appearance: none;\n}\n\n[type='checkbox']:checked{\n background-size: 80%;\n}","import {Component, Host, h, State, Prop, Event, Method} from '@stencil/core';\nimport {Filter, FilterValue} from \"../salla-filters/interfaces\";\n\n@Component({\n tag: 'salla-price-range',\n styleUrl: 'salla-price-range.scss',\n})\nexport class SallaPriceRange {\n /**\n * Minimum price threshold value\n */\n @Prop({mutable: true}) minPrice;\n\n /**\n * Maximum price threshold value\n */\n @Prop({mutable: true}) maxPrice;\n\n /**\n * Product price range filter option object instance\n */\n @Prop({reflect: true}) option: Filter;\n\n /**\n * Currently selected price filter data\n */\n @Prop({reflect: true}) filtersData: any;\n\n\n @State() min = 0;\n @State() max = 10000;\n @State() priceOptions: any;\n @State() moreThanLabel: string=\"أكثر من\";\n @State() lessThanLabel: string=\"أقل من\";\n @State() toLabel: string=\"الى\";\n @State() fromLabel: string=\"من\";\n\n /**\n * Custome event emitted when there is a change in price input.\n */\n @Event() changed: any;\n\n isReady: Boolean;\n minInput: HTMLInputElement;\n maxInput: HTMLInputElement;\n filterValues: Array<FilterValue> = [];\n\n\n connectedCallback() {\n if (this.filtersData && this.filtersData?.price) {\n this.minPrice = this.filtersData.price.min;\n this.maxPrice = this.filtersData.price.max;\n }\n salla.lang.onLoaded(() => {\n this.moreThanLabel=salla.lang.getWithDefault('common.elements.more_than', this.moreThanLabel)\n this.lessThanLabel=salla.lang.getWithDefault('common.elements.less_than', this.lessThanLabel)\n this.toLabel=salla.lang.getWithDefault('common.elements.to', this.toLabel)\n this.fromLabel=salla.lang.getWithDefault('common.elements.from', this.fromLabel)\n })\n\n //no need to show one option only\n if (this.option.values.length == 1) {\n return;\n }\n //here we may receive too many prices, we will group all inputs to\n if (this.option.values.length <= 5) {\n this.filterValues = this.option.values;\n return;\n }\n const chunkSize = Math.ceil(this.option.values.length / 5);\n for (let i = 0; i < this.option.values.length; i += chunkSize) {\n this.filterValues.push(\n this.option.values\n .slice(i, i + chunkSize)\n .reduce((final: FilterValue, currentValue: FilterValue) => {\n final.to = currentValue.to;\n final.count += currentValue.count;\n return final;\n })\n );\n // do whatever\n }\n }\n\n @Method()\n async reset() {\n //@ts-ignore\n this.minInput.value = null;\n this.maxInput.value = null;\n }\n\n private getPriceLabel(filterValue: FilterValue) {\n // @ts-ignore\n if (isNaN(filterValue.from) || filterValue.from < 1) {\n return `${this.lessThanLabel} ${salla.money(filterValue.to)}`;\n }\n // @ts-ignore\n if (isNaN(filterValue.to) || filterValue.to < 1) {\n return `${this.moreThanLabel} ${salla.money(filterValue.from)}`;\n }\n\n return `${salla.money(filterValue.from)} ${this.toLabel} ${salla.money(filterValue.to)}`;\n }\n\n private handleMinMaxPrice(event: Event, value: FilterValue): void {\n\n //todo:: cover when from is star\n this.minPrice = value.from;\n this.maxPrice = value.to != '*' ? value.to : null;\n\n this.changedEventHandler(event);\n }\n\n private async changedEventHandler(event, isMin = false) {\n salla.helpers.inputDigitsOnly(event.target)\n let value = event ? event.target.value * 1 : null\n if (isMin) {\n this.minInputValidation(value);\n } else {\n this.maxInputValidation(value)\n }\n\n\n this.isReady && this.changed.emit({\n event: event,\n option: this.option,\n value: {max: this.maxPrice, min: this.minPrice}\n })\n }\n\n\n minInputValidation(value) {\n if (value && (value > this.max || value > this.maxPrice)) {\n // this.minPrice = this.maxPrice;\n return;\n }\n\n if (value < this.min) {\n this.minPrice = this.min;\n return;\n }\n\n if (value) {\n this.minPrice = value;\n }\n }\n\n maxInputValidation(value) {\n if (value && (value < this.min || value < this.minPrice)) {\n // this.maxPrice = this.minPrice;\n return;\n }\n if (value > this.max) {\n this.maxPrice = this.max;\n return;\n }\n\n if (value) {\n this.maxPrice = value;\n }\n }\n\n private isChecked(filterValue: FilterValue) {\n if (!this.minPrice && !this.maxPrice) {\n return false;\n }\n\n //1 filterValue.from zero or * and this.minPrice not set or zero\n //2 filterValue.from == this.minPrice\n //@ts-ignore\n let isMinEqual = ((filterValue.from < 1 || filterValue.from == '*') && this.minPrice == 0) || filterValue.from == this.minPrice;\n\n //1 filterValue.to == \"*\" or null\n //2 filterValue.to == this.max\n let isMaxEqual = filterValue.to == '*' || !filterValue.to || filterValue.to == this.maxPrice;\n return isMinEqual && isMaxEqual;\n }\n\n\n render() {\n return (\n <Host>\n {\n this.filterValues.map((filterValue: FilterValue, index: number) => {\n return <label class=\"s-filters-label\" htmlFor={`${this.option.key}-${index}`}>\n <input\n id={`${this.option.key}-${index}`}\n name=\"price\"\n type=\"radio\"\n checked={this.isChecked(filterValue)}\n class=\"s-filters-radio\"\n onChange={e => this.handleMinMaxPrice(e, filterValue)}\n />\n {this.getPriceLabel(filterValue)}\n </label>\n })\n }\n\n\n <div class=\"flex justify-center items-center\">\n <div class=\"relative max-w-xl w-full\">\n <div class=\"s-price-range-inputs\">\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input\n type=\"number\"\n maxlength=\"5\"\n ref={el => this.minInput = el}\n onInput={(event) => this.changedEventHandler(event, true)}\n value={this.minPrice}\n placeholder={this.fromLabel}\n class=\"s-price-range-number-input\"\n />\n </div>\n\n <div class=\"s-price-range-gray-text\"> -</div>\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input type=\"number\" maxlength=\"5\"\n placeholder={this.toLabel}\n ref={el => this.maxInput = el}\n onInput={(event) => this.changedEventHandler(event)}\n value={this.maxPrice}\n class=\"s-price-range-number-input\" aria-describedby=\"price-currency\"/>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["sallaPriceRangeCss","SallaPriceRange","this","filterValues","connectedCallback","filtersData","_a","price","minPrice","min","maxPrice","max","salla","lang","onLoaded","moreThanLabel","getWithDefault","lessThanLabel","toLabel","fromLabel","option","values","length","chunkSize","Math","ceil","i","push","slice","reduce","final","currentValue","to","count","async","minInput","value","maxInput","getPriceLabel","filterValue","isNaN","from","money","handleMinMaxPrice","event","changedEventHandler","isMin","helpers","inputDigitsOnly","target","minInputValidation","maxInputValidation","isReady","changed","emit","isChecked","isMinEqual","isMaxEqual","render","h","Host","map","index","class","htmlFor","key","id","name","type","checked","onChange","e","config","currency","symbol","maxlength","ref","el","onInput","placeholder","componentDidLoad"],"sources":["./src/components/salla-price-range/salla-price-range.scss?tag=salla-price-range","./src/components/salla-price-range/salla-price-range.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n\n.rtl, [dir=\"rtl\"] {\n .rtl-range-slider {\n transform: rotateY(180deg);\n }\n\n .rtl-range-numbers{\n flex-direction: row-reverse;\n }\n\n .form-select, select{\n background-position: left 0.5rem center;\n padding-right: 12px;\n } \n\n // divide\n.menu-divide {\n li {\n &:not(:last-child) {\n &:after {\n left: 0;\n right: auto;\n }\n }\n }\n}\n}\n\ninput[type=range]::-webkit-slider-thumb {\n pointer-events: all;\n width: 24px;\n height: 24px;\n -webkit-appearance: none;\n}\n\n[type='checkbox']:checked{\n background-size: 80%;\n}","import {Component, Host, h, State, Prop, Event, Method} from '@stencil/core';\nimport {Filter, FilterValue} from \"../salla-filters/interfaces\";\n\n@Component({\n tag: 'salla-price-range',\n styleUrl: 'salla-price-range.scss',\n})\nexport class SallaPriceRange {\n /**\n * Minimum price threshold value\n */\n @Prop({mutable: true}) minPrice;\n\n /**\n * Maximum price threshold value\n */\n @Prop({mutable: true}) maxPrice;\n\n /**\n * Product price range filter option object instance\n */\n @Prop({reflect: true}) option: Filter;\n\n /**\n * Currently selected price filter data\n */\n @Prop({reflect: true}) filtersData: any;\n\n\n @State() min = 0;\n @State() max = 10000;\n @State() priceOptions: any;\n @State() moreThanLabel: string=\"أكثر من\";\n @State() lessThanLabel: string=\"أقل من\";\n @State() toLabel: string=\"الى\";\n @State() fromLabel: string=\"من\";\n\n /**\n * Custome event emitted when there is a change in price input.\n */\n @Event() changed: any;\n\n isReady: Boolean;\n minInput: HTMLInputElement;\n maxInput: HTMLInputElement;\n filterValues: Array<FilterValue> = [];\n\n\n connectedCallback() {\n if (this.filtersData && this.filtersData?.price) {\n this.minPrice = this.filtersData.price.min;\n this.maxPrice = this.filtersData.price.max;\n }\n salla.lang.onLoaded(() => {\n this.moreThanLabel=salla.lang.getWithDefault('common.elements.more_than', this.moreThanLabel)\n this.lessThanLabel=salla.lang.getWithDefault('common.elements.less_than', this.lessThanLabel)\n this.toLabel=salla.lang.getWithDefault('common.elements.to', this.toLabel)\n this.fromLabel=salla.lang.getWithDefault('common.elements.from', this.fromLabel)\n })\n\n //no need to show one option only\n if (this.option.values.length == 1) {\n return;\n }\n //here we may receive too many prices, we will group all inputs to\n if (this.option.values.length <= 5) {\n this.filterValues = this.option.values;\n return;\n }\n const chunkSize = Math.ceil(this.option.values.length / 5);\n for (let i = 0; i < this.option.values.length; i += chunkSize) {\n this.filterValues.push(\n this.option.values\n .slice(i, i + chunkSize)\n .reduce((final: FilterValue, currentValue: FilterValue) => {\n final.to = currentValue.to;\n final.count += currentValue.count;\n return final;\n })\n );\n // do whatever\n }\n }\n\n /**\n * reset the price range inputs\n */\n @Method()\n async reset() {\n //@ts-ignore\n this.minInput.value = null;\n this.maxInput.value = null;\n }\n\n private getPriceLabel(filterValue: FilterValue) {\n // @ts-ignore\n if (isNaN(filterValue.from) || filterValue.from < 1) {\n return `${this.lessThanLabel} ${salla.money(filterValue.to)}`;\n }\n // @ts-ignore\n if (isNaN(filterValue.to) || filterValue.to < 1) {\n return `${this.moreThanLabel} ${salla.money(filterValue.from)}`;\n }\n\n return `${salla.money(filterValue.from)} ${this.toLabel} ${salla.money(filterValue.to)}`;\n }\n\n private handleMinMaxPrice(event: Event, value: FilterValue): void {\n\n //todo:: cover when from is star\n this.minPrice = value.from;\n this.maxPrice = value.to != '*' ? value.to : null;\n\n this.changedEventHandler(event);\n }\n\n private async changedEventHandler(event, isMin = false) {\n salla.helpers.inputDigitsOnly(event.target)\n let value = event ? event.target.value * 1 : null\n if (isMin) {\n this.minInputValidation(value);\n } else {\n this.maxInputValidation(value)\n }\n\n\n this.isReady && this.changed.emit({\n event: event,\n option: this.option,\n value: {max: this.maxPrice, min: this.minPrice}\n })\n }\n\n\n minInputValidation(value) {\n if (value && (value > this.max || value > this.maxPrice)) {\n // this.minPrice = this.maxPrice;\n return;\n }\n\n if (value < this.min) {\n this.minPrice = this.min;\n return;\n }\n\n if (value) {\n this.minPrice = value;\n }\n }\n\n maxInputValidation(value) {\n if (value && (value < this.min || value < this.minPrice)) {\n // this.maxPrice = this.minPrice;\n return;\n }\n if (value > this.max) {\n this.maxPrice = this.max;\n return;\n }\n\n if (value) {\n this.maxPrice = value;\n }\n }\n\n private isChecked(filterValue: FilterValue) {\n if (!this.minPrice && !this.maxPrice) {\n return false;\n }\n\n //1 filterValue.from zero or * and this.minPrice not set or zero\n //2 filterValue.from == this.minPrice\n //@ts-ignore\n let isMinEqual = ((filterValue.from < 1 || filterValue.from == '*') && this.minPrice == 0) || filterValue.from == this.minPrice;\n\n //1 filterValue.to == \"*\" or null\n //2 filterValue.to == this.max\n let isMaxEqual = filterValue.to == '*' || !filterValue.to || filterValue.to == this.maxPrice;\n return isMinEqual && isMaxEqual;\n }\n\n\n render() {\n return (\n <Host>\n {\n this.filterValues.map((filterValue: FilterValue, index: number) => {\n return <label class=\"s-filters-label\" htmlFor={`${this.option.key}-${index}`}>\n <input\n id={`${this.option.key}-${index}`}\n name=\"price\"\n type=\"radio\"\n checked={this.isChecked(filterValue)}\n class=\"s-filters-radio\"\n onChange={e => this.handleMinMaxPrice(e, filterValue)}\n />\n {this.getPriceLabel(filterValue)}\n </label>\n })\n }\n\n\n <div class=\"flex justify-center items-center\">\n <div class=\"relative max-w-xl w-full\">\n <div class=\"s-price-range-inputs\">\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input\n type=\"number\"\n maxlength=\"5\"\n ref={el => this.minInput = el}\n onInput={(event) => this.changedEventHandler(event, true)}\n value={this.minPrice}\n placeholder={this.fromLabel}\n class=\"s-price-range-number-input\"\n />\n </div>\n\n <div class=\"s-price-range-gray-text\"> -</div>\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input type=\"number\" maxlength=\"5\"\n placeholder={this.toLabel}\n ref={el => this.maxInput = el}\n onInput={(event) => this.changedEventHandler(event)}\n value={this.maxPrice}\n class=\"s-price-range-number-input\" aria-describedby=\"price-currency\"/>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Crafted with ❤ by Salla
|
|
3
|
+
*/
|
|
4
|
+
import{r as s,c as t,h as i,H as e,g as l}from"./p-c76c4ed2.js";import{a as r}from"./p-201c8085.js";import{H as h}from"./p-431fcc73.js";const n=`\x3c!-- Generated by IcoMoon.io --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n<title>shopping-bag</title>\n<path d="M28 10.667h-4v-2.667c0-4.412-3.588-8-8-8s-8 3.588-8 8v2.667h-4c-0.736 0-1.333 0.596-1.333 1.333v13.333c0 3.676 2.991 6.667 6.667 6.667h13.333c3.676 0 6.667-2.991 6.667-6.667v-13.333c0-0.737-0.597-1.333-1.333-1.333zM10.667 8c0-2.941 2.392-5.333 5.333-5.333s5.333 2.392 5.333 5.333v2.667h-10.667zM26.667 25.333c0 2.205-1.795 4-4 4h-13.333c-2.205 0-4-1.795-4-4v-12h2.667v2.667c0 0.737 0.597 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667h10.667v2.667c0 0.737 0.597 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667h2.667z"></path>\n</svg>\n`;const a="";const o=class{constructor(i){s(this,i);this.productsFetched=t(this,"productsFetched",7);this.source=undefined;this.sourceValue=undefined;this.limit=undefined;this.sortBy=undefined;this.filtersResults=undefined;this.horizontalCards=undefined;this.page=1;this.nextPage=undefined;this.hasInfiniteScroll=undefined;this.hasCustomComponent=undefined;this.sourceValueIsValid=undefined;this.placeholderText=undefined;this.isReady=undefined;this.showPlaceholder=undefined;this.parsedFilters=undefined}connectedCallback(){salla.onReady((()=>{this.hasCustomComponent=!!customElements.get("custom-salla-product-card");this.sourceValueIsValid=!!(this.getSourceValue()||this.isSourceWithoutValue());this.hasInfiniteScroll=!["json","selected","related","landing-page"].includes(this.getSource());try{let s=new URLSearchParams(window.location.search);this.sortBy=this.sortBy||s.get("sort")||s.get("by");let t=s.get("filters");this.parsedFilters=t?JSON.parse(decodeURIComponent(t)):{}}catch(s){salla.logger.warn("failed to get filters from url",s.message)}this.buildNextPageUrl();this.createStatusDom();this.isReady=true}));if(!this.sourceValueIsValid){salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);return}salla.event.on("salla-filters::changed",(s=>this.setFilters(s)))}async setFilters(s){if(!!s&&JSON.stringify(this.parsedFilters)===JSON.stringify(s)){return}window.scrollTo({top:0,behavior:"smooth"});this.parsedFilters=s;return this.reload()}async reload(){salla.infiniteScroll.destroy(this.infiniteScroll);this.buildNextPageUrl();this.wrapper.innerHTML="";this.init()}isFilterable(){return salla.config.get("store.settings.product.filters")&&this.filtersResults}isSourceWithoutValue(){return["offers","latest","sales"].includes(this.getSource())}animateItems(){r({targets:"salla-products-list salla-product-card",opacity:[0,1],duration:1200,translateY:[20,0],delay:function(s,t){return t*100}})}createStatusDom(){this.status=document.createElement("div");this.status.className="s-infinite-scroll-wrapper";this.status.innerHTML=`<div class="s-infinite-scroll-status">\n <p class="s-infinite-scroll-last infinite-scroll-last s-hidden" >${salla.lang.get("common.elements.end_of_content")}</p>\n <p class="s-infinite-scroll-error infinite-scroll-error s-hidden">${salla.lang.get("common.elements.failed_to_load_more")}</p>\n </div>\n <a href="#" class="s-infinite-scroll-btn s-button-btn">\n <span class="s-button-loader s-button-loader-center s-infinite-scroll-btn-loader" style="display: none"></span>\n </a>`;this.btnLoader=this.status.querySelector(".s-button-loader");salla.lang.onLoaded((()=>{this.status.querySelector(".s-infinite-scroll-last").innerHTML=salla.lang.get("common.elements.end_of_content");this.status.querySelector(".s-infinite-scroll-error").innerHTML=salla.lang.get("common.elements.failed_to_load_more");this.placeholderText=salla.lang.get("pages.categories.no_products")}))}initBaseNextPageUrl(s){this.nextPage=salla.url.api(`products?source=${s}`);if(this.limit){this.nextPage+=`&per_page=${this.limit>32?32:this.limit}`}if(this.sortBy){this.nextPage+=`&sort=${this.sortBy}`}this.nextPage+="&filterable=1";for(const[s,t]of Object.entries(this.parsedFilters||{})){if(["string","number"].includes(typeof t)){this.nextPage+=`&filters[${s}]=${t}`}else if(Array.isArray(t)){t.forEach((t=>this.nextPage+=`&filters[${s}][]=${t}`))}else if(typeof t==="object"){for(const[i,e]of Object.entries(t)){this.nextPage+=`&filters[${s}][${i}]=${e}`}}}}buildNextPageUrl(){let s=this.getSource();if(s==="json"){return}this.initBaseNextPageUrl(s);if(this.isSourceWithoutValue()){return}if(["search","related","landing-page"].includes(s)){this.nextPage+=`&source_value=${this.getSourceValue()}`;return}try{this.nextPage+=`&source_value[]=${this.getSourceValue().join("&source_value[]=")}`}catch(t){salla.logger.warn(`source-value prop should be array of ids ex source-value="[1,2,3]" for the source [${s}]`);this.sourceValueIsValid=false}}loading(s=true){this.btnLoader.style.display=s?"inherit":"none"}getItemHTML(s){const t=this.hasCustomComponent?"custom-salla-product-card":"salla-product-card";const i=document.createElement(t);i.product=s;this.applyLandingPageStyles(i);this.applyHorizontalCardStyles(i);return i}applyLandingPageStyles(s){if(this.getSource()==="landing-page"&&!this.hasCustomComponent){s.toggleAttribute("hide-add-btn",true);s.classList.add("s-product-card-fit-height")}}applyHorizontalCardStyles(s){if(!this.horizontalCards){return}s.setAttribute("horizontal",true);if(!this.hasCustomComponent){s.setAttribute("shadow-on-hover",true)}}getSource(){return h.getProductsSource(this.source)}getSourceValue(){return h.getProductsSourceValue(this.source,this.sourceValue)}fetchProducts(){salla.product.api.fetch({source:this.getSource(),source_value:this.getSourceValue(),limit:this.limit}).then((s=>{if(!s.data.length){this.showPlaceholder=true;this.loading(false);return}this.handleResponse(s).forEach((s=>this.wrapper.append(s)))}))}initiateInfiniteScroll(){var s,t,i;if(!this.hasInfiniteScroll){return}this.host.insertAdjacentElement("beforeend",this.status);this.infiniteScroll=salla.infiniteScroll.initiate(this.wrapper,this.wrapper,{path:()=>this.nextPage,history:false,nextPage:this.nextPage,scrollThreshold:100},true);(s=this.infiniteScroll)===null||s===void 0?void 0:s.on("request",(()=>this.loading()));(t=this.infiniteScroll)===null||t===void 0?void 0:t.on("load",(s=>{var t;if(!((t=s.data)===null||t===void 0?void 0:t.length)&&this.infiniteScroll.pageIndex==2){this.showPlaceholder=true;salla.infiniteScroll.destroy(this.infiniteScroll);this.loading(false);return}else{this.showPlaceholder=false}this.infiniteScroll.appendItems(this.handleResponse(s));if(this.infiniteScroll.pageIndex==2){this.animateItems()}}));(i=this.infiniteScroll)===null||i===void 0?void 0:i.on("error",(()=>{this.status.querySelector(".s-infinite-scroll-error").classList.remove("s-hidden");this.loading(false)}));salla.onReady((()=>salla.infiniteScroll.loadNextPage(this.infiniteScroll)))}canRender(){return this.sourceValueIsValid&&this.isReady}render(){if(!this.canRender()){return""}if(this.showPlaceholder){return i("div",{class:"s-products-list-placeholder"},i("span",{innerHTML:n}),i("p",null,this.placeholderText))}return i(e,{class:"s-products-list"},i("div",{class:{"s-products-list-wrapper":true,"s-products-list-horizontal-cards":this.horizontalCards&&!this.filtersResults,"s-products-list-vertical-cards":!this.horizontalCards&&!this.filtersResults,"s-products-list-filters-results":this.filtersResults},ref:s=>this.wrapper=s}))}componentDidLoad(){if(!this.canRender()){return}if(this.getSource()==="json"){if(!this.getSourceValue().length){this.showPlaceholder=true;return}this.getSourceValue().map((s=>this.wrapper.append(this.getItemHTML(s))));return}if(this.getSource()==="selected"||this.getSource()==="landing-page"){if(this.getSource()==="selected"&&!this.getSourceValue().length){this.showPlaceholder=true;return}this.fetchProducts();return}this.init()}init(){this.initiateInfiniteScroll();this.loading()}handleResponse(s){var t,i,e,l,r,n;let a=this.getSource();let o="";if(((t=s.cursor)===null||t===void 0?void 0:t.current)===1){o=h.getPageTitleForSource(a);try{if(this.getSource()==="search"){o=salla.lang.get("common.elements.search_about",{word:this.getSourceValue()})}else if(!o){let t=this.parsedFilters.category_id||this.getSourceValue()[0];o=((l=(e=(i=s.filters.find((s=>s.key=="category_id")))===null||i===void 0?void 0:i.values)===null||e===void 0?void 0:e.find((s=>s.key==t)))===null||l===void 0?void 0:l.value)||""}o+=(o?" - ":"")+salla.lang.choice("blocks.header.products_count",(r=s.data)===null||r===void 0?void 0:r.length);if(s.data.length===20){o=o.replace(s.data.length,salla.lang.get("common.elements.more_than")+" "+s.data.length)}s.title=o}catch(s){}}salla.event.emit("salla-products-list::products.fetched",s);this.productsFetched.emit(s);if(s.filters&&this.isFilterable()){this.filtersResults=true;salla.event.emit("filters::fetched",{filters:s.filters})}else if(this.isFilterable()){salla.event.emit("filters::hidden")}this.nextPage=s.cursor?s.cursor.next:this.nextPage;this.loading(false);if(this.hasInfiniteScroll&&!this.nextPage){this.infiniteScroll.option({scrollThreshold:false,loadOnScroll:false});this.status.querySelector(".s-infinite-scroll-last").classList.remove("s-hidden")}return((n=s.data)===null||n===void 0?void 0:n.map((s=>this.getItemHTML(s))))||[]}get host(){return l(this)}};o.style=a;export{o as salla_products_list};
|
|
5
|
+
//# sourceMappingURL=p-e0cb00aa.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sallaProductsListCss","SallaProductsList","connectedCallback","salla","onReady","this","hasCustomComponent","customElements","get","sourceValueIsValid","getSourceValue","isSourceWithoutValue","hasInfiniteScroll","includes","getSource","searchParams","URLSearchParams","window","location","search","sortBy","filters","parsedFilters","JSON","parse","decodeURIComponent","e","logger","warn","message","buildNextPageUrl","createStatusDom","isReady","event","on","setFilters","async","stringify","scrollTo","top","behavior","reload","infiniteScroll","destroy","wrapper","innerHTML","init","isFilterable","config","filtersResults","animateItems","anime","targets","opacity","duration","translateY","delay","_el","i","status","document","createElement","className","lang","btnLoader","querySelector","onLoaded","placeholderText","initBaseNextPageUrl","source","nextPage","url","api","limit","key","value","Object","entries","Array","isArray","forEach","item","k","v","join","loading","isLoading","style","display","getItemHTML","product","customComponentTag","productCard","applyLandingPageStyles","applyHorizontalCardStyles","toggleAttribute","classList","add","horizontalCards","setAttribute","Helper","getProductsSource","getProductsSourceValue","sourceValue","fetchProducts","fetch","source_value","then","res","data","length","showPlaceholder","handleResponse","card","append","initiateInfiniteScroll","host","insertAdjacentElement","initiate","path","history","scrollThreshold","_a","_b","response","pageIndex","appendItems","_c","remove","loadNextPage","canRender","render","h","class","ShoppingBag","Host","ref","componentDidLoad","map","title","cursor","current","getPageTitleForSource","word","catId","category_id","_d","find","filter","values","cat","choice","_e","replace","emit","productsFetched","next","option","loadOnScroll","_f"],"sources":["./src/components/salla-products-list/salla-products-list.scss?tag=salla-products-list","./src/components/salla-products-list/salla-products-list.tsx"],"sourcesContent":["\n","import { Component, Host, h, Prop, State, Element, Method, Event, EventEmitter } from '@stencil/core';\nimport anime from 'animejs';\nimport ShoppingBag from '../../assets/svg/shopping-bag.svg';\nimport Helper from '../../Helpers/Helper';\n@Component({\n tag: 'salla-products-list',\n styleUrl: 'salla-products-list.scss'\n})\nexport class SallaProductsList {\n connectedCallback() {\n salla.onReady(() => {\n this.hasCustomComponent = !!customElements.get('custom-salla-product-card');\n this.sourceValueIsValid = !!(this.getSourceValue() || this.isSourceWithoutValue());\n this.hasInfiniteScroll = !['json', 'selected', 'related', 'landing-page'].includes(this.getSource());\n try {\n let searchParams = new URLSearchParams(window.location.search);\n this.sortBy = this.sortBy || searchParams.get('sort') || searchParams.get('by');\n let filters = searchParams.get('filters')\n this.parsedFilters = filters ? JSON.parse(decodeURIComponent(filters)) : {};\n } catch (e) {\n salla.logger.warn('failed to get filters from url', e.message);\n }\n this.buildNextPageUrl();\n this.createStatusDom();\n\n this.isReady = true;\n });\n\n if (!this.sourceValueIsValid) {\n salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);\n return;\n }\n salla.event.on('salla-filters::changed', filters => this.setFilters(filters))\n\n\n }\n\n /**\n * Set parsed filters data from URI\n * @param filters\n */\n @Method()\n async setFilters(filters) {\n if (!!filters && JSON.stringify(this.parsedFilters) === JSON.stringify(filters)) {\n return;\n }\n window.scrollTo({ top: 0, behavior: 'smooth' });\n this.parsedFilters = filters;\n return this.reload();\n }\n\n /**\n * Reload the list of products (entire content of the component).\n */\n @Method()\n async reload() {\n salla.infiniteScroll.destroy(this.infiniteScroll);\n this.buildNextPageUrl();\n // TODO: this is problematic in testing, for the time being it's been resolved like this\n this.wrapper.innerHTML = '';\n this.init();\n }\n\n\n private status: HTMLDivElement;\n private btnLoader: HTMLAnchorElement;\n @Element() host: HTMLElement;\n private wrapper: any;\n private infiniteScroll: any;\n /**\n * The source of the products list\n * @type {string}\n * */\n @Prop({\n reflect: true,\n mutable: true\n }) source: 'categories' | 'latest' | 'related' | 'brands' | 'json' | 'search' | 'tags' | 'selected' | 'offers' | 'landing-page' | 'sales';\n\n /**\n * The source value, cloud be different values as following:\n * - array of ids when `source` in ['categories', 'brands', 'tags', 'selected']\n * - keyword when `source` = 'search'\n * - products payload when `source` = 'json'\n * - product_id when `source` = 'related'\n *\n * @type {string}\n * */\n @Prop({ mutable: true }) sourceValue: any;\n\n /**\n * Limit for number of products in the list.\n */\n @Prop({ mutable: true }) limit: number;\n\n /**\n * Sorting the list of products\n */\n @Prop({ mutable: true }) sortBy?: string | 'ourSuggest' | 'bestSell' | 'topRated' | 'priceFromTopToLow' | 'priceFromLowToTop';\n\n /**\n * should listen to filters events `salla-filters::changed` and re-render\n */\n @Prop({ reflect: true, mutable: true }) filtersResults: boolean;\n\n /**\n * Horizontal cards\n */\n @Prop({ reflect: true }) horizontalCards: boolean\n\n // State\n @State() page: number = 1;\n @State() nextPage: string;\n @State() hasInfiniteScroll: boolean;\n @State() hasCustomComponent: boolean;\n @State() sourceValueIsValid: boolean;\n @State() placeholderText: string;\n @State() isReady: boolean;\n @State() showPlaceholder: boolean;\n @State() parsedFilters: any;\n\n /**\n * Custom event fired when the the products fetched.\n */\n @Event() productsFetched: EventEmitter;\n\n private isFilterable() {\n return salla.config.get('store.settings.product.filters') && this.filtersResults;\n }\n\n private isSourceWithoutValue() {\n return ['offers', 'latest', 'sales'].includes(this.getSource());\n }\n\n private animateItems() {\n anime({\n targets: 'salla-products-list salla-product-card',\n opacity: [0, 1],\n duration: 1200,\n translateY: [20, 0],\n delay: function (_el, i) {\n return i * 100;\n },\n })\n }\n\n private createStatusDom() {\n this.status = document.createElement('div');\n this.status.className = 's-infinite-scroll-wrapper';\n this.status.innerHTML = `<div class=\"s-infinite-scroll-status\">\n <p class=\"s-infinite-scroll-last infinite-scroll-last s-hidden\" >${salla.lang.get('common.elements.end_of_content')}</p>\n <p class=\"s-infinite-scroll-error infinite-scroll-error s-hidden\">${salla.lang.get('common.elements.failed_to_load_more')}</p>\n </div>\n <a href=\"#\" class=\"s-infinite-scroll-btn s-button-btn\">\n <span class=\"s-button-loader s-button-loader-center s-infinite-scroll-btn-loader\" style=\"display: none\"></span>\n </a>`;\n this.btnLoader = this.status.querySelector('.s-button-loader');\n salla.lang.onLoaded(() => {\n this.status.querySelector('.s-infinite-scroll-last').innerHTML = salla.lang.get('common.elements.end_of_content');\n this.status.querySelector('.s-infinite-scroll-error').innerHTML = salla.lang.get('common.elements.failed_to_load_more');\n this.placeholderText = salla.lang.get('pages.categories.no_products');\n });\n }\n\n private initBaseNextPageUrl(source: string) {\n\n this.nextPage = salla.url.api(`products?source=${source}`);\n\n if (this.limit) {\n this.nextPage += `&per_page=${this.limit > 32 ? 32 : this.limit}`;\n }\n if (this.sortBy) {\n this.nextPage += `&sort=${this.sortBy}`;\n }\n // if (!this.isFilterable()) {\n // return this.nextPage;\n // }\n this.nextPage += '&filterable=1';\n for (const [key, value] of Object.entries(this.parsedFilters || {})) {\n if ([\"string\", \"number\"].includes(typeof value)) {\n this.nextPage += `&filters[${key}]=${value}`;\n } else if (Array.isArray(value)) {\n (value as any).forEach(item => this.nextPage += `&filters[${key}][]=${item}`)\n } else if (typeof value === 'object') {\n for (const [k, v] of Object.entries(value)) {\n this.nextPage += `&filters[${key}][${k}]=${v}`;\n }\n }\n }\n }\n\n private buildNextPageUrl() {\n let source = this.getSource();\n if (source === 'json') {\n return;\n }\n this.initBaseNextPageUrl(source);\n if (this.isSourceWithoutValue()) {\n return;\n }\n\n if (['search', 'related', 'landing-page'].includes(source)) {\n this.nextPage += `&source_value=${this.getSourceValue()}`;\n return;\n }\n\n try {\n this.nextPage += `&source_value[]=${this.getSourceValue().join('&source_value[]=')}`;\n } catch (e) {\n salla.logger.warn(`source-value prop should be array of ids ex source-value=\"[1,2,3]\" for the source [${source}]`);\n this.sourceValueIsValid = false;\n }\n }\n\n\n private loading(isLoading = true) {\n this.btnLoader.style.display = isLoading ? 'inherit' : 'none';\n }\n\n private getItemHTML(product) {\n const customComponentTag = this.hasCustomComponent ? 'custom-salla-product-card' : 'salla-product-card';\n const productCard = document.createElement(customComponentTag) as HTMLSallaProductCardElement;\n productCard.product = product;\n\n this.applyLandingPageStyles(productCard);\n this.applyHorizontalCardStyles(productCard);\n\n return productCard;\n }\n\n private applyLandingPageStyles(productCard) {\n if (this.getSource() === 'landing-page' && !this.hasCustomComponent) {\n productCard.toggleAttribute('hide-add-btn', true);\n productCard.classList.add('s-product-card-fit-height');\n }\n }\n\n private applyHorizontalCardStyles(productCard) {\n if (!this.horizontalCards) {\n return;\n }\n productCard.setAttribute('horizontal', true);\n if (!this.hasCustomComponent) {\n productCard.setAttribute('shadow-on-hover', true);\n }\n\n }\n\n private getSource() {\n return Helper.getProductsSource(this.source);\n }\n\n private getSourceValue() {\n return Helper.getProductsSourceValue(this.source, this.sourceValue);\n }\n\n private fetchProducts() {\n salla.product.api.fetch({\n source: this.getSource(),\n source_value: this.getSourceValue(),\n limit: this.limit\n })\n .then(res => {\n if (!res.data.length) {\n this.showPlaceholder = true;\n this.loading(false);\n return;\n }\n this.handleResponse(res).forEach(card => this.wrapper.append(card));\n })\n }\n\n private initiateInfiniteScroll() {\n if (!this.hasInfiniteScroll) {\n return;\n }\n\n this.host.insertAdjacentElement('beforeend', this.status);\n this.infiniteScroll = salla.infiniteScroll.initiate(this.wrapper, this.wrapper, {\n path: () => this.nextPage,\n history: false,\n nextPage: this.nextPage,\n scrollThreshold: 100,\n }, /* infinite via api*/true);\n this.infiniteScroll?.on('request', () => this.loading())\n this.infiniteScroll?.on('load', response => {\n if (!response.data?.length && this.infiniteScroll.pageIndex == 2) {\n this.showPlaceholder = true;\n salla.infiniteScroll.destroy(this.infiniteScroll);\n this.loading(false);\n return;\n } else {\n this.showPlaceholder = false;\n\n }\n this.infiniteScroll.appendItems(this.handleResponse(response))\n if (this.infiniteScroll.pageIndex == 2) {\n this.animateItems();\n }\n })\n this.infiniteScroll?.on('error', () => {\n this.status.querySelector('.s-infinite-scroll-error').classList.remove('s-hidden')\n this.loading(false);\n });\n salla.onReady(() => salla.infiniteScroll.loadNextPage(this.infiniteScroll))\n }\n\n private canRender() {\n return this.sourceValueIsValid && this.isReady;\n }\n\n render() {\n if (!this.canRender()) {\n return '';\n }\n if (this.showPlaceholder) {\n return <div class=\"s-products-list-placeholder\">\n <span innerHTML={ShoppingBag} />\n <p>{this.placeholderText}</p>\n </div>;\n }\n return (\n <Host class=\"s-products-list\">\n <div class={{\n \"s-products-list-wrapper\": true,\n 's-products-list-horizontal-cards': this.horizontalCards && !this.filtersResults,\n 's-products-list-vertical-cards': !this.horizontalCards && !this.filtersResults,\n 's-products-list-filters-results': this.filtersResults,\n }}\n ref={wrapper => this.wrapper = wrapper} />\n </Host>\n );\n }\n\n componentDidLoad() {\n if (!this.canRender()) {\n return;\n }\n\n // Handle json source\n if (this.getSource() === 'json') {\n if (!this.getSourceValue().length) {\n this.showPlaceholder = true;\n return;\n }\n this.getSourceValue().map(product => this.wrapper.append(this.getItemHTML(product)));\n return;\n }\n // Handle selected source\n if (this.getSource() === 'selected' || this.getSource() === 'landing-page') {\n if (this.getSource() === 'selected' && !this.getSourceValue().length) {\n this.showPlaceholder = true;\n return;\n }\n this.fetchProducts()\n return;\n }\n this.init();\n }\n\n private init() {\n this.initiateInfiniteScroll();\n this.loading();\n }\n\n private handleResponse(response): Array<HTMLElement> {\n let source=this.getSource();\n let title = '';\n //help the developer to know the current page title\n if (response.cursor?.current === 1) {\n title = Helper.getPageTitleForSource(source);\n try {\n if (this.getSource() === 'search') {\n title = salla.lang.get('common.elements.search_about', {'word': this.getSourceValue()});\n } else if (!title) {\n let catId = this.parsedFilters.category_id || this.getSourceValue()[0];\n // get the first filter that its key is category_id, then get the value when filter.value.*.key==catId\n title = response.filters.find(filter => filter.key == 'category_id') ?. values ?. find(cat => cat.key == catId) ?. value || '';\n }\n title += (title ? ' - ' : '') + salla.lang.choice('blocks.header.products_count', response.data ?. length);\n if (response.data.length === 20) {\n title = title.replace(response.data.length, salla.lang.get('common.elements.more_than') + ' ' + response.data.length)\n }\n response.title = title;\n } catch (e) {}\n }\n\n salla.event.emit('salla-products-list::products.fetched', response);\n this.productsFetched.emit(response);\n //💡 when source is related, cursor will not be existed\n if (response.filters && this.isFilterable()) {\n this.filtersResults = true;\n salla.event.emit('filters::fetched', { filters: response.filters });\n } else if (this.isFilterable()) {\n salla.event.emit('filters::hidden');\n }\n this.nextPage = response.cursor ? response.cursor.next : this.nextPage;\n this.loading(false);\n if (this.hasInfiniteScroll && !this.nextPage) {\n this.infiniteScroll.option({ scrollThreshold: false, loadOnScroll: false });\n this.status.querySelector('.s-infinite-scroll-last').classList.remove('s-hidden');\n }\n return response.data?.map(product => this.getItemHTML(product)) || [];\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Crafted with ❤ by Salla
|
|
3
3
|
*/
|
|
4
|
-
import{r as s,h as t,H as e,g as i}from"./p-c76c4ed2.js";import{H as r}from"./p-
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{r as s,h as t,H as e,g as i}from"./p-c76c4ed2.js";import{H as r}from"./p-431fcc73.js";const d="";const u=class{constructor(t){s(this,t);this.blockTitle=undefined;this.subTitle=undefined;this.sliderId=undefined;this.displayAllUrl=undefined;this.autoplay=undefined;this.source=undefined;this.sourceValue=undefined;this.limit=undefined;this.productsData=undefined;this.isReady=undefined;this.sourceValueIsValid=undefined;this.hasCustomComponent=undefined;this.apiUrl="";this.parsedSourceValue=undefined;salla.onReady((()=>{this.sourceValueIsValid=!!(this.getSource()||this.isSourceWithoutValue());if(!this.sourceValueIsValid){salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);return}this.hasCustomComponent=!!customElements.get("custom-salla-product-card")}))}isSourceWithoutValue(){return["offers","latest","sales"].includes(this.getSource())}getItemHTML(s){if(this.hasCustomComponent){return t("div",{class:"s-products-slider-card"},t("custom-salla-product-card",{product:s,source:this.getSource(),"source-value":this.getSourceValue()}))}return t("div",{class:"s-products-slider-card"},t("salla-product-card",{"show-quantity":this.getSource()=="landing-page","hide-add-btn":this.getSource()=="landing-page","shadow-on-hover":true,product:s}))}canRender(){return this.sourceValueIsValid&&this.isReady}componentWillLoad(){if(this.source==="json"){this.productsData=this.getSourceValue();this.isReady=true;return}return salla.product.api.fetch({source:this.getSource(),source_value:this.getSourceValue(),limit:this.limit}).then((s=>{this.productsData=s.data;this.isReady=true}))}getSource(){return r.getProductsSource(this.source)}getSourceValue(){return r.getProductsSourceValue(this.source,this.sourceValue)}render(){var s;if(this.getSource()=="related"&&!salla.config.get("store.settings.product.related_products_enabled")||!this.canRender()){return}return t(e,{class:"s-products-slider-wrapper"},t("salla-slider",{class:"s-products-slider-slider",id:this.sliderId||`s-products-slider-${Math.random().toString(36).substr(2,9)}`,"auto-play":this.autoplay,type:"carousel","block-title":this.blockTitle,"block-subTitle":this.subTitle,"display-all-url":this.displayAllUrl},t("div",{slot:"items"},(s=this.productsData)===null||s===void 0?void 0:s.map((s=>this.getItemHTML(s))))))}get host(){return i(this)}};u.style=d;export{u as salla_products_slider};
|
|
5
|
+
//# sourceMappingURL=p-ea65d3c9.entry.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var __awaiter=this&&this.__awaiter||function(t,e,i,n){function s(t){return t instanceof i?t:new i((function(e){e(t)}))}return new(i||(i=Promise))((function(i,o){function r(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n["throw"](t))}catch(t){o(t)}}function l(t){t.done?i(t.value):s(t.value).then(r,a)}l((n=n.apply(t,e||[])).next())}))};var __generator=this&&this.__generator||function(t,e){var i={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,s,o,r;return r={next:a(0),throw:a(1),return:a(2)},typeof Symbol==="function"&&(r[Symbol.iterator]=function(){return this}),r;function a(t){return function(e){return l([t,e])}}function l(a){if(n)throw new TypeError("Generator is already executing.");while(r&&(r=0,a[0]&&(i=0)),i)try{if(n=1,s&&(o=a[0]&2?s["return"]:a[0]?s["throw"]||((o=s["return"])&&o.call(s),0):s.next)&&!(o=o.call(s,a[1])).done)return o;if(s=0,o)a=[a[0]&2,o.value];switch(a[0]){case 0:case 1:o=a;break;case 4:i.label++;return{value:a[1],done:false};case 5:i.label++;s=a[1];a=[0];continue;case 7:a=i.ops.pop();i.trys.pop();continue;default:if(!(o=i.trys,o=o.length>0&&o[o.length-1])&&(a[0]===6||a[0]===2)){i=0;continue}if(a[0]===3&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(a[0]===6&&i.label<o[1]){i.label=o[1];o=a;break}if(o&&i.label<o[2]){i.label=o[2];i.ops.push(a);break}if(o[2])i.ops.pop();i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t];s=0}finally{n=o=0}if(a[0]&5)throw a[1];return{value:a[0]?a[1]:void 0,done:true}}};
|
|
2
2
|
/*!
|
|
3
3
|
* Crafted with ❤ by Salla
|
|
4
|
-
*/System.register(["./p-9fcca94b.system.js","./p-
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
*/System.register(["./p-9fcca94b.system.js","./p-2d334c27.system.js","./p-01a0d85b.system.js"],(function(t){"use strict";var e,i,n,s,o,r,a,l;return{setters:[function(t){e=t.r;i=t.c;n=t.h;s=t.H;o=t.g},function(t){r=t.H},function(t){a=t.a;l=t.F}],execute:function(){var u=":host{display:block}";var c=t("salla_filters_widget",function(){function t(t){e(this,t);this.changed=i(this,"changed",7);this.initHeight=195;this.widgetTitle=undefined;this.withLoadMore=undefined;this.filtersData=undefined;this.option=undefined;this.isOpen=true;this.isShowMore=false;this.showMoreLabel="عرض المزيد";this.showLessLabel="عرض أقل"}t.prototype.connectedCallback=function(){var t=this;this.withLoadMore=this.option.key!="price"&&Array.isArray(this.option.values)&&this.option.values.length>8;this.widgetTitle=this.option.label;salla.lang.onLoaded((function(){t.showMoreLabel=salla.lang.getWithDefault("common.titles.more",t.showMoreLabel);t.showLessLabel=salla.lang.getWithDefault("common.elements.show_less",t.showLessLabel)}))};t.prototype.componentDidLoad=function(){this.widgetValues.scrollHeight<this.initHeight&&(this.withLoadMore=false);this.withLoadMore&&this.widgetValues&&(this.widgetValues.style.maxHeight="".concat(this.initHeight,"px"));this.widgetContent.style.height="".concat(this.widgetContent.scrollHeight,"px")};t.prototype.reset=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){if(this.option.type===a.RANGE){this.priceRange.reset()}Array.from(this.host.querySelectorAll("input")).forEach((function(t){return t.checked=false}));return[2]}))}))};t.prototype.showMore=function(){return __awaiter(this,void 0,void 0,(function(){var t=this;return __generator(this,(function(e){this.isShowMore=!this.isShowMore;this.widgetContent.style.height="auto";this.widgetValues.style.maxHeight=this.isShowMore?"".concat(this.widgetValues.scrollHeight,"px"):"".concat(this.initHeight,"px");setTimeout((function(){t.widgetContent.style.height="".concat(t.widgetContent.scrollHeight,"px")}),400);return[2]}))}))};t.prototype.toggleWidget=function(){return __awaiter(this,void 0,void 0,(function(){var t=this;return __generator(this,(function(e){this.isOpen=!this.isOpen;r.toggleElementClassIf(this.widgetContent,"s-filters-widget-opened","s-filters-widget-closed",(function(){return t.isOpen}));return[2]}))}))};t.prototype.renderFilterOption=function(t){var e=this;if(![a.VALUES,a.MINIMUM,a.VARIANTS].includes(t.type)){return""}return t.values.map((function(i,s){var o=typeof i=="number"?i:i.key||i.value;return n("label",{class:"s-filters-label",htmlFor:"".concat(t.key,"-option-").concat(s)},n("input",{id:"".concat(t.key,"-option-").concat(s),name:t.key,type:t.inputType,checked:e.isSelectedOption(t,o),class:"s-filters-".concat(t.inputType),onChange:function(i){return e.changed.emit({event:i,option:t,value:o})}}),e.getOptionLabel(t,i))}))};t.prototype.isSelectedOption=function(t,e){if(!this.filtersData||!this.filtersData[t.key]){return false}return t.inputType===l.CHECKBOX?this.filtersData[t.key].includes(e):this.filtersData[t.key]==e};t.prototype.getOptionLabel=function(t,e){if(t.key=="rating"){return n("salla-rating-stars",{size:"small",value:e})}var i=e.value||"null";return n("span",{class:"s-filters-option-name"},i)};t.prototype.render=function(){var t=this;return n(s,{class:"s-filters-widget-container"},n("h3",{class:"s-filters-widget-title",onClick:function(){return t.toggleWidget()}},n("span",null,this.widgetTitle),n("span",{class:"s-filters-widget-plusminus ".concat(this.isOpen?"s-filters-widget-plusminus-active":"")})),n("div",{class:"s-filters-widget-content",ref:function(e){return t.widgetContent=e}},n("div",{class:"s-filters-widget-values",ref:function(e){return t.widgetValues=e}},n("slot",null),this.option.type!==a.RANGE?this.renderFilterOption(this.option):n("salla-price-range",{onChanged:function(e){return t.changed.emit(e.detail)},ref:function(e){return t.priceRange=e},filtersData:this.filtersData,option:this.option})),this.withLoadMore&&n("a",{class:"s-filters-widget-more",onClick:function(){return t.showMore()}},!this.isShowMore?this.showMoreLabel:this.showLessLabel)))};Object.defineProperty(t.prototype,"host",{get:function(){return o(this)},enumerable:false,configurable:true});return t}());c.style=u}}}));
|
|
5
|
+
//# sourceMappingURL=p-ffec6e8f.system.entry.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Crafted with ❤ by Salla
|
|
3
3
|
*/
|
|
4
|
-
import{p as e,b as a}from"./p-c76c4ed2.js";export{s as setNonce}from"./p-c76c4ed2.js";import{g as t}from"./p-aa8e58b9.js";import"./p-eed6da4c.js";const l=()=>{const a=import.meta.url;const t={};if(a!==""){t.resourcesUrl=new URL(".",a).href}return e(t)};l().then((e=>{t();return a(JSON.parse('[["p-0e716419",[[4,"salla-gifting",{"productId":[2,"product-id"],"widgetSubtitle":[1,"widget-subtitle"],"sectionTitle":[32],"sectionSubtitle":[32],"sectionBtnText":[32],"giftDetails":[32],"selectImageForYourGift":[32],"selectImageOrUpload":[32],"selectGiftMessage":[32],"giftCustomText":[32],"textId":[32],"incorrectGiftText":[32],"nextStep":[32],"senderNameLabel":[32],"receiverNameFieldLabel":[32],"receiverMobileFieldLabel":[32],"receiverEmailFieldLabel":[32],"emailPlaceholder":[32],"sendLater":[32],"selectSendDateAndTime":[32],"canNotEditOrderAfterSelectDate":[32],"sendGift":[32],"donationRequired":[32],"currentStep":[32],"showCalendar":[32],"showGiftText":[32],"currentLang":[32],"parentClass":[32],"errors":[32],"gift":[32],"selectedGiftTextOption":[32],"showTextArea":[32],"selectedImage":[32],"uploadedImage":[32],"selectedText":[32],"senderName":[32],"errorMessage":[32],"hasError":[32],"quantity":[32],"deliveryDate":[32],"timeZone":[32],"receiverName":[32],"receiverMobile":[32],"receiverCountryCode":[32],"receiverEmail":[32],"open":[64],"close":[64],"goToStep2":[64]}],[4,"salla-loyalty",{"prizePoints":[1544,"prize-points"],"customerPoints":[1538,"customer-points"],"prizeTitle":[1537,"prize-title"],"allowEmail":[4,"allow-email"],"allowMobile":[4,"allow-mobile"],"requireEmail":[4,"require-email"],"guestMessage":[1025,"guest-message"],"loyaltyProgram":[32],"buttonLoading":[32],"selectedItem":[32],"askConfirmation":[32],"is_loggedin":[32],"hasError":[32],"errorMessage":[32],"translationLoaded":[32],"open":[64],"close":[64],"resetExchange":[64],"exchangeLoyaltyPoint":[64]}],[4,"salla-product-size-guide",{"guides":[32],"productId":[32],"placeholder_title":[32],"placeholder_description":[32],"modal_title":[32],"hasError":[32],"open":[64],"close":[64]}],[4,"salla-login-modal",{"isEmailAllowed":[1028,"is-email-allowed"],"isMobileAllowed":[1028,"is-mobile-allowed"],"isEmailRequired":[1028,"is-email-required"],"supportWebAuth":[516,"support-web-auth"],"currentTabName":[32],"regType":[32],"translationLoaded":[32],"currentPhone":[32],"currentEmail":[32],"title":[32],"emailErrorMsg":[32],"firstNameErrorMsg":[32],"lastNameErrorMsg":[32],"dragAndDrop":[32],"browseFromFiles":[32],"customFields":[32],"uploadedImage":[32],"open":[64]},[[8,"verified","onVerified"]]],[0,"salla-offer-modal",{"offer":[32],"offer_name":[32],"offer_message":[32],"hasError":[32],"errorMessage":[32],"productID":[32],"offer_type":[32],"translationLoaded":[32],"addToCartLabel":[32],"open":[64],"showOffer":[64]}],[0,"salla-rating-modal",{"orderId":[2,"order-id"],"order":[32],"hasError":[32],"errorMessage":[32],"translationLoaded":[32],"open":[64],"close":[64]}],[4,"salla-scopes",{"selection":[1],"searchDisplayLimit":[2,"search-display-limit"],"translationLoaded":[32],"mode":[32],"current_scope":[32],"scopes":[32],"originalScopesList":[32],"selected_scope":[32],"isOpenedBefore":[32],"hasError":[32],"loading":[32],"close":[64],"open":[64],"handleSubmit":[64]}],[0,"salla-localization-modal",{"language":[1537],"currency":[1537],"translationLoaded":[32],"languages":[32],"currencies":[32],"hasError":[32],"errorMessage":[32],"open":[64],"close":[64],"submit":[64]}],[0,"salla-quick-order",{"quickOrderTitle":[1025,"quick-order-title"],"subTitle":[1025,"sub-title"],"payButtonTitle":[1025,"pay-button-title"],"confirmPayButtonTitle":[1025,"confirm-pay-button-title"],"agreementText":[1025,"agreement-text"],"isEmailRequired":[1028,"is-email-required"],"productId":[1025,"product-id"],"thanksMessage":[1025,"thanks-message"],"quickOrderStyle":[1025,"quick-order-style"],"user":[32],"isAvailable":[32],"oneClick":[32],"expanded":[32],"isTermsRequired":[32],"countryCode":[32],"submitSucess":[32],"placeHolderEmail":[32],"emailOptional":[32],"agreementShowText":[32],"agreementModalHead":[32],"userNameLabel":[32],"termsChecked":[32]}],[0,"salla-user-settings",{"isNotifiable":[516,"is-notifiable"],"deactivateAccount":[32],"promotionalMsgs":[32],"deactivateDesc":[32],"promotionalMsgsDesc":[32],"sorryForLeavingText":[32],"warningText":[32],"keepAccount":[32],"buttonLoading":[32]}],[0,"salla-search",{"inline":[4],"oval":[4],"height":[2],"translationLoaded":[32],"results":[32],"loading":[32],"typing":[32],"debounce":[32],"search_term":[32]},[[0,"keydown","handleKeyDown"]]],[4,"salla-social-share",{"url":[513],"urlName":[513,"url-name"],"platforms":[513],"opened":[32],"allPlatforms":[32],"platformIcons":[32],"convertedPlatforms":[32],"open":[64]}],[4,"salla-cart-summary",{"showCartLabel":[4,"show-cart-label"],"cartSummaryCount":[32],"cartSummaryTotal":[32],"cartLabel":[32],"animateToCart":[64]}],[4,"salla-infinite-scroll",{"nextPage":[1,"next-page"],"autoload":[1028],"container":[1],"item":[1],"loadMore":[32],"noMore":[32],"failedToLoad":[32]}],[0,"salla-maintenance-alert",{"title":[32],"message":[32],"buttonTitle":[32]}],[4,"salla-quantity-input",{"cartItemId":[8,"cart-item-id"],"quantity":[32],"fireChangeEvent":[32],"decrease":[64],"increase":[64],"setValue":[64]}],[4,"salla-user-menu",{"inline":[516],"avatarOnly":[516,"avatar-only"],"showHeader":[516,"show-header"],"relativeDropdown":[516,"relative-dropdown"],"accountLoading":[32],"opened":[32],"notifications":[32],"orders":[32],"pending_orders":[32],"wishlist":[32],"profile":[32],"rating":[32],"logout":[32],"hello":[32],"first_name":[32],"last_name":[32],"avatar":[32],"is_loggedIn":[32],"badges":[32],"hasBadges":[32],"OrderUpdate":[32]}],[4,"salla-product-card",{"product":[1],"horizontal":[4],"shadowOnHover":[4,"shadow-on-hover"],"hideAddBtn":[4,"hide-add-btn"],"fullImage":[4,"full-image"],"minimal":[4],"isSpecial":[4,"is-special"],"showQuantity":[4,"show-quantity"],"productData":[32],"fitImageHeight":[32],"remained":[32],"outOfStock":[32],"donationAmount":[32],"startingPrice":[32],"addToCart":[32],"placeholder":[32]}],[4,"salla-map",{"name":[1],"required":[4],"readonly":[4],"searchable":[1028],"lat":[1026],"lng":[1026],"apiKey":[1025,"api-key"],"modalTitle":[1,"modal-title"],"zoom":[1026],"theme":[1025],"modalActivityTitle":[32],"confirmButtonTitle":[32],"locateButtonTitle":[32],"locateButtonEdit":[32],"searchPlaceholder":[32],"searchInputValue":[32],"formattedAddress":[32],"geolocationError":[32],"searchInput":[32],"mapInput":[32],"mapElement":[32],"selectedLat":[32],"selectedLng":[32],"open":[64]}],[4,"salla-verify",{"display":[1],"type":[1025],"autoReload":[4,"auto-reload"],"supportWebAuth":[4,"support-web-auth"],"translationLoaded":[32],"title":[32],"resendAfter":[32],"isProfileVerify":[32],"getCode":[64],"open":[64]}],[4,"salla-color-picker",{"name":[1],"required":[4],"color":[1537],"format":[1],"showCancelButton":[4,"show-cancel-button"],"showTextField":[4,"show-text-field"],"enableAlpha":[4,"enable-alpha"],"widgetColor":[32],"setPickerOption":[64],"movePopUp":[64],"setColorValue":[64],"openPicker":[64],"closePicker":[64],"destroyPicker":[64]}],[4,"salla-add-product-button",{"channels":[513],"subscribedOptions":[1,"subscribed-options"],"quickBuy":[1540,"quick-buy"],"quantity":[514],"donatingAmount":[514,"donating-amount"],"notifyOptionsAvailability":[516,"notify-options-availability"],"productId":[520,"product-id"],"supportStickyBar":[516,"support-sticky-bar"],"productStatus":[513,"product-status"],"productType":[513,"product-type"],"hasOutOfStockOption":[32],"hasSubscribedOptions":[32],"selectedOptions":[32],"showQuickBuy":[32]}],[0,"salla-count-down",{"date":[1],"boxed":[4],"size":[1],"color":[1],"labeled":[4],"endText":[1,"end-text"],"digits":[1],"endOfDay":[4,"end-of-day"],"daysLabel":[32],"hoursLabel":[32],"minutesLabel":[32],"secondsLabel":[32],"endLabel":[32],"invalidDate":[32],"offerEnded":[32],"countInterval":[32],"days":[32],"hours":[32],"minutes":[32],"seconds":[32],"endCountDown":[64]}],[0,"salla-datetime-picker",{"value":[1537],"required":[4],"name":[513],"placeholder":[1],"allowInput":[4,"allow-input"],"allowInvalidPreload":[4,"allow-invalid-preload"],"altFormat":[1,"alt-format"],"altInput":[4,"alt-input"],"altInputClass":[1,"alt-input-class"],"appendTo":[16],"ariaDateFormat":[1,"aria-date-format"],"autoFillDefaultTime":[4,"auto-fill-default-time"],"clickOpens":[4,"click-opens"],"closeOnSelect":[4,"close-on-select"],"conjunction":[1],"dateFormat":[1,"date-format"],"defaultDate":[8,"default-date"],"defaultHour":[2,"default-hour"],"defaultMinute":[2,"default-minute"],"defaultSeconds":[2,"default-seconds"],"disable":[16],"disableMobile":[4,"disable-mobile"],"enable":[16],"enableSeconds":[4,"enable-seconds"],"enableTime":[4,"enable-time"],"formatDate":[16],"hourIncrement":[2,"hour-increment"],"inline":[4],"locale":[1],"maxDate":[8,"max-date"],"maxTime":[8,"max-time"],"minDate":[8,"min-date"],"minTime":[8,"min-time"],"minuteIncrement":[2,"minute-increment"],"mode":[1],"monthSelectorType":[1,"month-selector-type"],"nextArrow":[1,"next-arrow"],"noCalendar":[4,"no-calendar"],"dateParser":[16],"position":[1],"positionElement":[16],"prevArrow":[1,"prev-arrow"],"shorthandCurrentMonth":[4,"shorthand-current-month"],"static":[4],"showMonths":[2,"show-months"],"time_24hr":[4,"time_-2-4hr"],"weekNumbers":[4,"week-numbers"],"wrap":[4]}],[4,"salla-tab-content",{"name":[1],"isSelected":[32],"getChild":[64]}],[4,"salla-tab-header",{"name":[1],"activeClass":[1,"active-class"],"height":[8],"centered":[4],"isSelected":[32],"getChild":[64]}],[4,"salla-tabs",{"backgroundColor":[1,"background-color"],"vertical":[4]},[[0,"tabSelected","onSelectedTab"]]],[0,"salla-product-availability",{"channels":[1],"notifyOptionsAvailability":[4,"notify-options-availability"],"productId":[2,"product-id"],"isSubscribed":[1028,"is-subscribed"],"translationLoaded":[32],"title_":[32],"isVisitorSubscribed":[32]}],[0,"salla-quick-buy",{"type":[1025],"productId":[1025,"product-id"],"amount":[1538],"currency":[1025],"options":[16],"isRequireShipping":[1028,"is-require-shipping"],"isApplePayActive":[32],"quickBuy":[32]}],[0,"salla-file-upload",{"value":[1537],"files":[513],"height":[513],"cartItemId":[1,"cart-item-id"],"profileImage":[516,"profile-image"],"name":[1537],"payloadName":[1,"payload-name"],"accept":[1537],"fileId":[2,"file-id"],"url":[1025],"method":[1],"formData":[1,"form-data"],"required":[4],"maxFileSize":[1,"max-file-size"],"disabled":[4],"allowDrop":[4,"allow-drop"],"allowBrowse":[4,"allow-browse"],"allowPaste":[4,"allow-paste"],"allowMultiple":[4,"allow-multiple"],"allowReplace":[4,"allow-replace"],"allowRevert":[4,"allow-revert"],"allowRemove":[4,"allow-remove"],"allowProcess":[4,"allow-process"],"allowReorder":[4,"allow-reorder"],"storeAsFile":[4,"store-as-file"],"forceRevert":[4,"force-revert"],"maxFilesCount":[2,"max-files-count"],"maxParallelUploads":[2,"max-parallel-uploads"],"checkValidity":[4,"check-validity"],"itemInsertLocation":[1,"item-insert-location"],"itemInsertInterval":[2,"item-insert-interval"],"credits":[4],"dropOnPage":[4,"drop-on-page"],"dropOnElement":[4,"drop-on-element"],"dropValidation":[4,"drop-validation"],"ignoredFiles":[16],"instantUpload":[1028,"instant-upload"],"chunkUploads":[4,"chunk-uploads"],"chunkForce":[4,"chunk-force"],"chunkSize":[2,"chunk-size"],"chunkRetryDelays":[16],"labelDecimalSeparator":[1,"label-decimal-separator"],"labelThousandsSeparator":[1,"label-thousands-separator"],"labelIdle":[1025,"label-idle"],"iconRemove":[1,"icon-remove"],"iconProcess":[1,"icon-process"],"iconRetry":[1,"icon-retry"],"iconUndo":[1,"icon-undo"],"setOption":[64]}],[0,"salla-progress-bar",{"donation":[1],"target":[1026],"value":[1026],"height":[1025],"header":[1025],"stripped":[1028],"message":[1025],"unit":[1025],"color":[1025]}],[0,"salla-rating-stars",{"name":[1],"size":[1],"value":[2],"reviews":[2]}],[4,"salla-list-tile",{"href":[1],"target":[1]}],[4,"salla-slider",{"blockTitle":[513,"block-title"],"listenToThumbnailsOption":[516,"listen-to-thumbnails-option"],"blockSubtitle":[513,"block-subtitle"],"displayAllUrl":[513,"display-all-url"],"arrowsCentered":[516,"arrows-centered"],"verticalThumbs":[516,"vertical-thumbs"],"gridThumbs":[516,"grid-thumbs"],"vertical":[516],"autoHeight":[516,"auto-height"],"showControls":[516,"show-controls"],"controlsOuter":[516,"controls-outer"],"showThumbsControls":[4,"show-thumbs-controls"],"autoPlay":[4,"auto-play"],"slidesPerView":[1,"slides-per-view"],"pagination":[4],"centered":[4],"loop":[4],"direction":[1537],"type":[1],"sliderConfig":[520,"slider-config"],"thumbsConfig":[520,"thumbs-config"],"currentIndex":[32],"isEnd":[32],"isBeginning":[32],"swiperScript":[32],"displayAllTitle":[32],"slideTo":[64],"slideNext":[64],"slidePrev":[64],"slideToLoop":[64],"slideNextLoop":[64],"slidePrevLoop":[64],"slideReset":[64],"slideToClosest":[64],"update":[64],"updateAutoHeight":[64],"updateSlides":[64],"updateProgress":[64],"updateSlidesClasses":[64],"getSlides":[64]}],[4,"salla-placeholder",{"icon":[1],"alignment":[1],"iconSize":[1,"icon-size"],"translationLoaded":[32]}],[0,"salla-skeleton",{"type":[1],"width":[1],"height":[1]}],[0,"salla-tel-input",{"phone":[1025],"name":[1],"countryCode":[1025,"country-code"],"mobileRequired":[32],"countryCodeLabel":[32],"mobileLabel":[32],"tooShort":[32],"tooLong":[32],"invalidCountryCode":[32],"invalidNumber":[32],"errorMap":[32],"getValues":[64],"isValid":[64]}],[4,"salla-modal",{"isClosable":[1028,"is-closable"],"width":[513],"position":[513],"visible":[516],"hasSkeleton":[516,"has-skeleton"],"isLoading":[1540,"is-loading"],"subTitleFirst":[4,"sub-title-first"],"noPadding":[4,"no-padding"],"subTitle":[1,"sub-title"],"centered":[4],"iconStyle":[1,"icon-style"],"modalTitle":[32],"open":[64],"close":[64],"setTitle":[64],"loading":[64],"stopLoading":[64]},[[0,"keyup","handleKeyUp"]]],[0,"salla-loading",{"size":[8],"width":[8],"color":[1],"bgColor":[1,"bg-color"]}],[4,"salla-button",{"shape":[513],"color":[513],"fill":[513],"size":[513],"width":[513],"loading":[516],"disabled":[516],"loaderPosition":[1,"loader-position"],"href":[1],"load":[64],"stop":[64],"setText":[64],"disable":[64],"enable":[64]}]]],["p-3d027624",[[0,"salla-products-slider",{"blockTitle":[1,"block-title"],"subTitle":[1,"sub-title"],"sliderId":[1,"slider-id"],"displayAllUrl":[1,"display-all-url"],"autoplay":[1028],"source":[1537],"sourceValue":[1,"source-value"],"limit":[1026],"productsData":[32],"isReady":[32],"sourceValueIsValid":[32],"hasCustomComponent":[32],"apiUrl":[32],"parsedSourceValue":[32]}]]],["p-d9dd6370",[[0,"salla-product-options",{"productId":[2,"product-id"],"options":[1],"optionsData":[32],"outOfStockText":[32],"donationAmount":[32],"selectedOptions":[32],"canDisabled":[32],"selectedSkus":[32],"selectedOutSkus":[32],"getSelectedOptionsData":[64],"reportValidity":[64],"hasOutOfStockOption":[64],"getSelectedOptions":[64],"getOption":[64]}]]],["p-0bab8332",[[0,"salla-filters",{"filters":[1040],"isSidebarOpen":[32],"filtersData":[32],"apply":[32],"reset":[32],"getFilters":[64],"applyFilters":[64],"resetFilters":[64]}]]],["p-d933f9ce",[[0,"salla-comment-form",{"type":[1537],"showAvatar":[4,"show-avatar"],"itemId":[1544,"item-id"],"placeholder":[32],"submitText":[32],"canComment":[32]}]]],["p-5f0dffdf",[[0,"salla-installment",{"price":[1],"language":[1],"currency":[1],"tamaraIsActive":[32],"tabbyIsActive":[32],"spotiiIsActive":[32]}]]],["p-1fb9268c",[[0,"salla-loyalty-prize-item",{"item":[16]}]]],["p-dd290c58",[[0,"salla-products-list",{"source":[1537],"sourceValue":[1032,"source-value"],"limit":[1026],"sortBy":[1025,"sort-by"],"filtersResults":[1540,"filters-results"],"horizontalCards":[516,"horizontal-cards"],"page":[32],"nextPage":[32],"hasInfiniteScroll":[32],"hasCustomComponent":[32],"sourceValueIsValid":[32],"placeholderText":[32],"isReady":[32],"showPlaceholder":[32],"parsedFilters":[32],"setFilters":[64],"reload":[64]}]]],["p-ce042888",[[0,"salla-price-range",{"minPrice":[1032,"min-price"],"maxPrice":[1032,"max-price"],"option":[16],"filtersData":[520,"filters-data"],"min":[32],"max":[32],"priceOptions":[32],"moreThanLabel":[32],"lessThanLabel":[32],"toLabel":[32],"fromLabel":[32],"reset":[64]}]]],["p-a378c3be",[[4,"salla-filters-widget",{"widgetTitle":[1025,"widget-title"],"withLoadMore":[1028,"with-load-more"],"filtersData":[16],"option":[16],"isOpen":[32],"isShowMore":[32],"showMoreLabel":[32],"showLessLabel":[32],"reset":[64],"showMore":[64],"toggleWidget":[64]}]]],["p-81e2622b",[[4,"salla-conditional-fields",null,[[0,"change","changeHandler"]]]]]]'),e)}));
|
|
4
|
+
import{p as e,b as a}from"./p-c76c4ed2.js";export{s as setNonce}from"./p-c76c4ed2.js";import{g as t}from"./p-15b4fb7a.js";import"./p-eed6da4c.js";const l=()=>{const a=import.meta.url;const t={};if(a!==""){t.resourcesUrl=new URL(".",a).href}return e(t)};l().then((e=>{t();return a(JSON.parse('[["p-23215851",[[4,"salla-gifting",{"productId":[2,"product-id"],"widgetSubtitle":[1,"widget-subtitle"],"sectionTitle":[32],"sectionSubtitle":[32],"sectionBtnText":[32],"giftDetails":[32],"selectImageForYourGift":[32],"selectImageOrUpload":[32],"selectGiftMessage":[32],"giftCustomText":[32],"textId":[32],"incorrectGiftText":[32],"nextStep":[32],"senderNameLabel":[32],"receiverNameFieldLabel":[32],"receiverMobileFieldLabel":[32],"receiverEmailFieldLabel":[32],"emailPlaceholder":[32],"sendLater":[32],"selectSendDateAndTime":[32],"canNotEditOrderAfterSelectDate":[32],"sendGift":[32],"donationRequired":[32],"currentStep":[32],"showCalendar":[32],"showGiftText":[32],"currentLang":[32],"parentClass":[32],"errors":[32],"gift":[32],"selectedGiftTextOption":[32],"showTextArea":[32],"selectedImage":[32],"uploadedImage":[32],"selectedText":[32],"senderName":[32],"errorMessage":[32],"hasError":[32],"quantity":[32],"deliveryDate":[32],"timeZone":[32],"receiverName":[32],"receiverMobile":[32],"receiverCountryCode":[32],"receiverEmail":[32],"open":[64],"close":[64],"goToStep2":[64]}],[4,"salla-loyalty",{"prizePoints":[1544,"prize-points"],"customerPoints":[1538,"customer-points"],"prizeTitle":[1537,"prize-title"],"allowEmail":[4,"allow-email"],"allowMobile":[4,"allow-mobile"],"requireEmail":[4,"require-email"],"guestMessage":[1025,"guest-message"],"loyaltyProgram":[32],"buttonLoading":[32],"selectedItem":[32],"askConfirmation":[32],"is_loggedin":[32],"hasError":[32],"errorMessage":[32],"translationLoaded":[32],"open":[64],"close":[64],"resetExchange":[64],"exchangeLoyaltyPoint":[64]}],[4,"salla-product-size-guide",{"guides":[32],"productId":[32],"placeholder_title":[32],"placeholder_description":[32],"modal_title":[32],"hasError":[32],"open":[64],"close":[64]}],[4,"salla-login-modal",{"isEmailAllowed":[1028,"is-email-allowed"],"isMobileAllowed":[1028,"is-mobile-allowed"],"isEmailRequired":[1028,"is-email-required"],"supportWebAuth":[516,"support-web-auth"],"currentTabName":[32],"regType":[32],"translationLoaded":[32],"currentPhone":[32],"currentEmail":[32],"title":[32],"emailErrorMsg":[32],"firstNameErrorMsg":[32],"lastNameErrorMsg":[32],"dragAndDrop":[32],"browseFromFiles":[32],"customFields":[32],"uploadedImage":[32],"open":[64]},[[8,"verified","onVerified"]]],[0,"salla-offer-modal",{"offer":[32],"offer_name":[32],"offer_message":[32],"hasError":[32],"errorMessage":[32],"productID":[32],"offer_type":[32],"translationLoaded":[32],"addToCartLabel":[32],"open":[64],"showOffer":[64]}],[0,"salla-rating-modal",{"orderId":[2,"order-id"],"order":[32],"hasError":[32],"errorMessage":[32],"translationLoaded":[32],"open":[64],"close":[64]}],[4,"salla-scopes",{"selection":[1],"searchDisplayLimit":[2,"search-display-limit"],"translationLoaded":[32],"mode":[32],"current_scope":[32],"scopes":[32],"originalScopesList":[32],"selected_scope":[32],"isOpenedBefore":[32],"hasError":[32],"loading":[32],"close":[64],"open":[64],"handleSubmit":[64]}],[0,"salla-localization-modal",{"language":[1537],"currency":[1537],"translationLoaded":[32],"languages":[32],"currencies":[32],"hasError":[32],"errorMessage":[32],"open":[64],"close":[64],"submit":[64]}],[0,"salla-quick-order",{"quickOrderTitle":[1025,"quick-order-title"],"subTitle":[1025,"sub-title"],"payButtonTitle":[1025,"pay-button-title"],"confirmPayButtonTitle":[1025,"confirm-pay-button-title"],"agreementText":[1025,"agreement-text"],"isEmailRequired":[1028,"is-email-required"],"productId":[1025,"product-id"],"thanksMessage":[1025,"thanks-message"],"quickOrderStyle":[1025,"quick-order-style"],"user":[32],"isAvailable":[32],"oneClick":[32],"expanded":[32],"isTermsRequired":[32],"countryCode":[32],"submitSucess":[32],"placeHolderEmail":[32],"emailOptional":[32],"agreementShowText":[32],"agreementModalHead":[32],"userNameLabel":[32],"termsChecked":[32]}],[0,"salla-user-settings",{"isNotifiable":[516,"is-notifiable"],"deactivateAccount":[32],"promotionalMsgs":[32],"deactivateDesc":[32],"promotionalMsgsDesc":[32],"sorryForLeavingText":[32],"warningText":[32],"keepAccount":[32],"buttonLoading":[32]}],[0,"salla-search",{"inline":[4],"oval":[4],"height":[2],"translationLoaded":[32],"results":[32],"loading":[32],"typing":[32],"debounce":[32],"search_term":[32]},[[0,"keydown","handleKeyDown"]]],[4,"salla-social-share",{"url":[513],"urlName":[513,"url-name"],"platforms":[513],"opened":[32],"allPlatforms":[32],"platformIcons":[32],"convertedPlatforms":[32],"open":[64]}],[4,"salla-cart-summary",{"showCartLabel":[4,"show-cart-label"],"cartSummaryCount":[32],"cartSummaryTotal":[32],"cartLabel":[32],"animateToCart":[64]}],[4,"salla-infinite-scroll",{"nextPage":[1,"next-page"],"autoload":[1028],"container":[1],"item":[1],"loadMore":[32],"noMore":[32],"failedToLoad":[32]}],[0,"salla-maintenance-alert",{"title":[32],"message":[32],"buttonTitle":[32]}],[4,"salla-quantity-input",{"cartItemId":[8,"cart-item-id"],"quantity":[32],"fireChangeEvent":[32],"decrease":[64],"increase":[64],"setValue":[64]}],[4,"salla-user-menu",{"inline":[516],"avatarOnly":[516,"avatar-only"],"showHeader":[516,"show-header"],"relativeDropdown":[516,"relative-dropdown"],"accountLoading":[32],"opened":[32],"notifications":[32],"orders":[32],"pending_orders":[32],"wishlist":[32],"profile":[32],"rating":[32],"logout":[32],"hello":[32],"first_name":[32],"last_name":[32],"avatar":[32],"is_loggedIn":[32],"badges":[32],"hasBadges":[32],"OrderUpdate":[32]}],[4,"salla-product-card",{"product":[1],"horizontal":[4],"shadowOnHover":[4,"shadow-on-hover"],"hideAddBtn":[4,"hide-add-btn"],"fullImage":[4,"full-image"],"minimal":[4],"isSpecial":[4,"is-special"],"showQuantity":[4,"show-quantity"],"productData":[32],"fitImageHeight":[32],"remained":[32],"outOfStock":[32],"donationAmount":[32],"startingPrice":[32],"addToCart":[32],"placeholder":[32]}],[4,"salla-map",{"name":[1],"required":[4],"readonly":[4],"searchable":[1028],"lat":[1026],"lng":[1026],"apiKey":[1025,"api-key"],"modalTitle":[1,"modal-title"],"zoom":[1026],"theme":[1025],"modalActivityTitle":[32],"confirmButtonTitle":[32],"locateButtonTitle":[32],"locateButtonEdit":[32],"searchPlaceholder":[32],"searchInputValue":[32],"formattedAddress":[32],"geolocationError":[32],"searchInput":[32],"mapInput":[32],"mapElement":[32],"selectedLat":[32],"selectedLng":[32],"open":[64]}],[4,"salla-verify",{"display":[1],"type":[1025],"autoReload":[4,"auto-reload"],"supportWebAuth":[4,"support-web-auth"],"translationLoaded":[32],"title":[32],"resendAfter":[32],"isProfileVerify":[32],"getCode":[64],"open":[64]}],[4,"salla-color-picker",{"name":[1],"required":[4],"color":[1537],"format":[1],"showCancelButton":[4,"show-cancel-button"],"showTextField":[4,"show-text-field"],"enableAlpha":[4,"enable-alpha"],"widgetColor":[32],"setPickerOption":[64],"movePopUp":[64],"setColorValue":[64],"openPicker":[64],"closePicker":[64],"destroyPicker":[64]}],[4,"salla-add-product-button",{"channels":[513],"subscribedOptions":[1,"subscribed-options"],"quickBuy":[1540,"quick-buy"],"quantity":[514],"donatingAmount":[514,"donating-amount"],"notifyOptionsAvailability":[516,"notify-options-availability"],"productId":[520,"product-id"],"supportStickyBar":[516,"support-sticky-bar"],"productStatus":[513,"product-status"],"productType":[513,"product-type"],"hasOutOfStockOption":[32],"hasSubscribedOptions":[32],"selectedOptions":[32],"showQuickBuy":[32]}],[0,"salla-count-down",{"date":[1],"boxed":[4],"size":[1],"color":[1],"labeled":[4],"endText":[1,"end-text"],"digits":[1],"endOfDay":[4,"end-of-day"],"daysLabel":[32],"hoursLabel":[32],"minutesLabel":[32],"secondsLabel":[32],"endLabel":[32],"invalidDate":[32],"offerEnded":[32],"countInterval":[32],"days":[32],"hours":[32],"minutes":[32],"seconds":[32],"endCountDown":[64]}],[0,"salla-datetime-picker",{"value":[1537],"required":[4],"name":[513],"placeholder":[1],"allowInput":[4,"allow-input"],"allowInvalidPreload":[4,"allow-invalid-preload"],"altFormat":[1,"alt-format"],"altInput":[4,"alt-input"],"altInputClass":[1,"alt-input-class"],"appendTo":[16],"ariaDateFormat":[1,"aria-date-format"],"autoFillDefaultTime":[4,"auto-fill-default-time"],"clickOpens":[4,"click-opens"],"closeOnSelect":[4,"close-on-select"],"conjunction":[1],"dateFormat":[1,"date-format"],"defaultDate":[8,"default-date"],"defaultHour":[2,"default-hour"],"defaultMinute":[2,"default-minute"],"defaultSeconds":[2,"default-seconds"],"disable":[16],"disableMobile":[4,"disable-mobile"],"enable":[16],"enableSeconds":[4,"enable-seconds"],"enableTime":[4,"enable-time"],"formatDate":[16],"hourIncrement":[2,"hour-increment"],"inline":[4],"locale":[1],"maxDate":[8,"max-date"],"maxTime":[8,"max-time"],"minDate":[8,"min-date"],"minTime":[8,"min-time"],"minuteIncrement":[2,"minute-increment"],"mode":[1],"monthSelectorType":[1,"month-selector-type"],"nextArrow":[1,"next-arrow"],"noCalendar":[4,"no-calendar"],"dateParser":[16],"position":[1],"positionElement":[16],"prevArrow":[1,"prev-arrow"],"shorthandCurrentMonth":[4,"shorthand-current-month"],"static":[4],"showMonths":[2,"show-months"],"time_24hr":[4,"time_-2-4hr"],"weekNumbers":[4,"week-numbers"],"wrap":[4]}],[4,"salla-tab-content",{"name":[1],"isSelected":[32],"getChild":[64]}],[4,"salla-tab-header",{"name":[1],"activeClass":[1,"active-class"],"height":[8],"centered":[4],"isSelected":[32],"getChild":[64]}],[4,"salla-tabs",{"backgroundColor":[1,"background-color"],"vertical":[4]},[[0,"tabSelected","onSelectedTab"]]],[0,"salla-product-availability",{"channels":[1],"notifyOptionsAvailability":[4,"notify-options-availability"],"productId":[2,"product-id"],"isSubscribed":[1028,"is-subscribed"],"translationLoaded":[32],"title_":[32],"isVisitorSubscribed":[32]}],[0,"salla-quick-buy",{"type":[1025],"productId":[1025,"product-id"],"amount":[1538],"currency":[1025],"options":[16],"isRequireShipping":[1028,"is-require-shipping"],"isApplePayActive":[32],"quickBuy":[32]}],[0,"salla-file-upload",{"value":[1537],"files":[513],"height":[513],"cartItemId":[1,"cart-item-id"],"profileImage":[516,"profile-image"],"name":[1537],"payloadName":[1,"payload-name"],"accept":[1537],"fileId":[2,"file-id"],"url":[1025],"method":[1],"formData":[1,"form-data"],"required":[4],"maxFileSize":[1,"max-file-size"],"disabled":[4],"allowDrop":[4,"allow-drop"],"allowBrowse":[4,"allow-browse"],"allowPaste":[4,"allow-paste"],"allowMultiple":[4,"allow-multiple"],"allowReplace":[4,"allow-replace"],"allowRevert":[4,"allow-revert"],"allowRemove":[4,"allow-remove"],"allowProcess":[4,"allow-process"],"allowReorder":[4,"allow-reorder"],"storeAsFile":[4,"store-as-file"],"forceRevert":[4,"force-revert"],"maxFilesCount":[2,"max-files-count"],"maxParallelUploads":[2,"max-parallel-uploads"],"checkValidity":[4,"check-validity"],"itemInsertLocation":[1,"item-insert-location"],"itemInsertInterval":[2,"item-insert-interval"],"credits":[4],"dropOnPage":[4,"drop-on-page"],"dropOnElement":[4,"drop-on-element"],"dropValidation":[4,"drop-validation"],"ignoredFiles":[16],"instantUpload":[1028,"instant-upload"],"chunkUploads":[4,"chunk-uploads"],"chunkForce":[4,"chunk-force"],"chunkSize":[2,"chunk-size"],"chunkRetryDelays":[16],"labelDecimalSeparator":[1,"label-decimal-separator"],"labelThousandsSeparator":[1,"label-thousands-separator"],"labelIdle":[1025,"label-idle"],"iconRemove":[1,"icon-remove"],"iconProcess":[1,"icon-process"],"iconRetry":[1,"icon-retry"],"iconUndo":[1,"icon-undo"],"setOption":[64]}],[0,"salla-progress-bar",{"donation":[1],"target":[1026],"value":[1026],"height":[1025],"header":[1025],"stripped":[1028],"message":[1025],"unit":[1025],"color":[1025]}],[0,"salla-rating-stars",{"name":[1],"size":[1],"value":[2],"reviews":[2]}],[4,"salla-list-tile",{"href":[1],"target":[1]}],[4,"salla-slider",{"blockTitle":[513,"block-title"],"listenToThumbnailsOption":[516,"listen-to-thumbnails-option"],"blockSubtitle":[513,"block-subtitle"],"displayAllUrl":[513,"display-all-url"],"arrowsCentered":[516,"arrows-centered"],"verticalThumbs":[516,"vertical-thumbs"],"gridThumbs":[516,"grid-thumbs"],"vertical":[516],"autoHeight":[516,"auto-height"],"showControls":[516,"show-controls"],"controlsOuter":[516,"controls-outer"],"showThumbsControls":[4,"show-thumbs-controls"],"autoPlay":[4,"auto-play"],"slidesPerView":[1,"slides-per-view"],"pagination":[4],"centered":[4],"loop":[4],"direction":[1537],"type":[1],"sliderConfig":[520,"slider-config"],"thumbsConfig":[520,"thumbs-config"],"currentIndex":[32],"isEnd":[32],"isBeginning":[32],"swiperScript":[32],"displayAllTitle":[32],"slideTo":[64],"slideNext":[64],"slidePrev":[64],"slideToLoop":[64],"slideNextLoop":[64],"slidePrevLoop":[64],"slideReset":[64],"slideToClosest":[64],"update":[64],"updateAutoHeight":[64],"updateSlides":[64],"updateProgress":[64],"updateSlidesClasses":[64],"getSlides":[64]}],[4,"salla-placeholder",{"icon":[1],"alignment":[1],"iconSize":[1,"icon-size"],"translationLoaded":[32]}],[0,"salla-skeleton",{"type":[1],"width":[1],"height":[1]}],[0,"salla-tel-input",{"phone":[1025],"name":[1],"countryCode":[1025,"country-code"],"mobileRequired":[32],"countryCodeLabel":[32],"mobileLabel":[32],"tooShort":[32],"tooLong":[32],"invalidCountryCode":[32],"invalidNumber":[32],"errorMap":[32],"getValues":[64],"isValid":[64]}],[4,"salla-modal",{"isClosable":[1028,"is-closable"],"width":[513],"position":[513],"visible":[516],"hasSkeleton":[516,"has-skeleton"],"isLoading":[1540,"is-loading"],"subTitleFirst":[4,"sub-title-first"],"noPadding":[4,"no-padding"],"subTitle":[1,"sub-title"],"centered":[4],"iconStyle":[1,"icon-style"],"modalTitle":[32],"open":[64],"close":[64],"setTitle":[64],"loading":[64],"stopLoading":[64]},[[0,"keyup","handleKeyUp"]]],[0,"salla-loading",{"size":[8],"width":[8],"color":[1],"bgColor":[1,"bg-color"]}],[4,"salla-button",{"shape":[513],"color":[513],"fill":[513],"size":[513],"width":[513],"loading":[516],"disabled":[516],"loaderPosition":[1,"loader-position"],"href":[1],"load":[64],"stop":[64],"setText":[64],"disable":[64],"enable":[64]}]]],["p-ea65d3c9",[[0,"salla-products-slider",{"blockTitle":[1,"block-title"],"subTitle":[1,"sub-title"],"sliderId":[1,"slider-id"],"displayAllUrl":[1,"display-all-url"],"autoplay":[1028],"source":[1537],"sourceValue":[1,"source-value"],"limit":[1026],"productsData":[32],"isReady":[32],"sourceValueIsValid":[32],"hasCustomComponent":[32],"apiUrl":[32],"parsedSourceValue":[32]}]]],["p-d9dd6370",[[0,"salla-product-options",{"productId":[2,"product-id"],"options":[1],"optionsData":[32],"outOfStockText":[32],"donationAmount":[32],"selectedOptions":[32],"canDisabled":[32],"selectedSkus":[32],"selectedOutSkus":[32],"getSelectedOptionsData":[64],"reportValidity":[64],"hasOutOfStockOption":[64],"getSelectedOptions":[64],"getOption":[64]}]]],["p-61d1ce2d",[[0,"salla-filters",{"filters":[1040],"isSidebarOpen":[32],"filtersData":[32],"apply":[32],"reset":[32],"getFilters":[64],"applyFilters":[64],"resetFilters":[64]}]]],["p-d933f9ce",[[0,"salla-comment-form",{"type":[1537],"showAvatar":[4,"show-avatar"],"itemId":[1544,"item-id"],"placeholder":[32],"submitText":[32],"canComment":[32]}]]],["p-5f0dffdf",[[0,"salla-installment",{"price":[1],"language":[1],"currency":[1],"tamaraIsActive":[32],"tabbyIsActive":[32],"spotiiIsActive":[32]}]]],["p-1fb9268c",[[0,"salla-loyalty-prize-item",{"item":[16]}]]],["p-e0cb00aa",[[0,"salla-products-list",{"source":[1537],"sourceValue":[1032,"source-value"],"limit":[1026],"sortBy":[1025,"sort-by"],"filtersResults":[1540,"filters-results"],"horizontalCards":[516,"horizontal-cards"],"page":[32],"nextPage":[32],"hasInfiniteScroll":[32],"hasCustomComponent":[32],"sourceValueIsValid":[32],"placeholderText":[32],"isReady":[32],"showPlaceholder":[32],"parsedFilters":[32],"setFilters":[64],"reload":[64]}]]],["p-ce042888",[[0,"salla-price-range",{"minPrice":[1032,"min-price"],"maxPrice":[1032,"max-price"],"option":[16],"filtersData":[520,"filters-data"],"min":[32],"max":[32],"priceOptions":[32],"moreThanLabel":[32],"lessThanLabel":[32],"toLabel":[32],"fromLabel":[32],"reset":[64]}]]],["p-1342a68f",[[4,"salla-filters-widget",{"widgetTitle":[1025,"widget-title"],"withLoadMore":[1028,"with-load-more"],"filtersData":[16],"option":[16],"isOpen":[32],"isShowMore":[32],"showMoreLabel":[32],"showLessLabel":[32],"reset":[64],"showMore":[64],"toggleWidget":[64]}]]],["p-81e2622b",[[4,"salla-conditional-fields",null,[[0,"change","changeHandler"]]]]]]'),e)}));
|
|
5
5
|
//# sourceMappingURL=twilight.esm.js.map
|
|
@@ -115,7 +115,7 @@ DOMTokenList
|
|
|
115
115
|
var resourcesUrl = scriptElm ? scriptElm.getAttribute('data-resources-url') || scriptElm.src : '';
|
|
116
116
|
var start = function() {
|
|
117
117
|
// if src is not present then origin is "null", and new URL() throws TypeError: Failed to construct 'URL': Invalid base URL
|
|
118
|
-
var url = new URL('./p-
|
|
118
|
+
var url = new URL('./p-5f400dc8.system.js', new URL(resourcesUrl, window.location.origin !== 'null' ? window.location.origin : undefined));
|
|
119
119
|
System.import(url.href);
|
|
120
120
|
};
|
|
121
121
|
|
|
@@ -6,6 +6,7 @@ declare class Helper {
|
|
|
6
6
|
filterEmojies(text: any): any;
|
|
7
7
|
debounce(fn: any, ...data: any[]): any;
|
|
8
8
|
getProductsSource(source: any): any;
|
|
9
|
+
getPageTitleForSource(source: any): any;
|
|
9
10
|
getProductsSourceValue(source: any, sourceValue: any): any;
|
|
10
11
|
}
|
|
11
12
|
declare const _default: Helper;
|
|
@@ -10,7 +10,7 @@ export declare class SallaFilters {
|
|
|
10
10
|
filters?: Filter[];
|
|
11
11
|
private isReady;
|
|
12
12
|
isSidebarOpen: boolean;
|
|
13
|
-
filtersData: object;
|
|
13
|
+
filtersData: object | any;
|
|
14
14
|
apply: string;
|
|
15
15
|
reset: string;
|
|
16
16
|
/**
|
|
@@ -20,7 +20,7 @@ export declare class SallaFilters {
|
|
|
20
20
|
/**
|
|
21
21
|
* Method to get filter data.
|
|
22
22
|
*/
|
|
23
|
-
getFilters(): Promise<
|
|
23
|
+
getFilters(): Promise<any>;
|
|
24
24
|
/**
|
|
25
25
|
* Apply filter action.
|
|
26
26
|
*/
|
|
@@ -32,6 +32,9 @@ export declare class SallaPriceRange {
|
|
|
32
32
|
maxInput: HTMLInputElement;
|
|
33
33
|
filterValues: Array<FilterValue>;
|
|
34
34
|
connectedCallback(): void;
|
|
35
|
+
/**
|
|
36
|
+
* reset the price range inputs
|
|
37
|
+
*/
|
|
35
38
|
reset(): Promise<void>;
|
|
36
39
|
private getPriceLabel;
|
|
37
40
|
private handleMinMaxPrice;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EventEmitter } from '../../stencil-public-runtime';
|
|
1
2
|
export declare class SallaProductsList {
|
|
2
3
|
connectedCallback(): void;
|
|
3
4
|
/**
|
|
@@ -54,6 +55,10 @@ export declare class SallaProductsList {
|
|
|
54
55
|
isReady: boolean;
|
|
55
56
|
showPlaceholder: boolean;
|
|
56
57
|
parsedFilters: any;
|
|
58
|
+
/**
|
|
59
|
+
* Custom event fired when the the products fetched.
|
|
60
|
+
*/
|
|
61
|
+
productsFetched: EventEmitter;
|
|
57
62
|
private isFilterable;
|
|
58
63
|
private isSourceWithoutValue;
|
|
59
64
|
private animateItems;
|
|
@@ -656,7 +656,7 @@ export namespace Components {
|
|
|
656
656
|
/**
|
|
657
657
|
* Method to get filter data.
|
|
658
658
|
*/
|
|
659
|
-
"getFilters": () => Promise<
|
|
659
|
+
"getFilters": () => Promise<any>;
|
|
660
660
|
/**
|
|
661
661
|
* Reset selected filters.
|
|
662
662
|
*/
|
|
@@ -1029,6 +1029,9 @@ export namespace Components {
|
|
|
1029
1029
|
* Product price range filter option object instance
|
|
1030
1030
|
*/
|
|
1031
1031
|
"option": Filter;
|
|
1032
|
+
/**
|
|
1033
|
+
* reset the price range inputs
|
|
1034
|
+
*/
|
|
1032
1035
|
"reset": () => Promise<void>;
|
|
1033
1036
|
}
|
|
1034
1037
|
interface SallaProductAvailability {
|
|
@@ -1763,6 +1766,10 @@ export interface SallaProductOptionsCustomEvent<T> extends CustomEvent<T> {
|
|
|
1763
1766
|
detail: T;
|
|
1764
1767
|
target: HTMLSallaProductOptionsElement;
|
|
1765
1768
|
}
|
|
1769
|
+
export interface SallaProductsListCustomEvent<T> extends CustomEvent<T> {
|
|
1770
|
+
detail: T;
|
|
1771
|
+
target: HTMLSallaProductsListElement;
|
|
1772
|
+
}
|
|
1766
1773
|
export interface SallaQuickOrderCustomEvent<T> extends CustomEvent<T> {
|
|
1767
1774
|
detail: T;
|
|
1768
1775
|
target: HTMLSallaQuickOrderElement;
|
|
@@ -3152,6 +3159,10 @@ declare namespace LocalJSX {
|
|
|
3152
3159
|
* Limit for number of products in the list.
|
|
3153
3160
|
*/
|
|
3154
3161
|
"limit"?: number;
|
|
3162
|
+
/**
|
|
3163
|
+
* Custom event fired when the the products fetched.
|
|
3164
|
+
*/
|
|
3165
|
+
"onProductsFetched"?: (event: SallaProductsListCustomEvent<any>) => void;
|
|
3155
3166
|
/**
|
|
3156
3167
|
* Sorting the list of products
|
|
3157
3168
|
*/
|
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* if there are a failed with ts build because twilight use the final bundle temporary
|
|
3
|
-
* import '@salla.sa/twilight/dist/@salla.sa/twilight.min'
|
|
4
|
-
*/
|
|
5
|
-
import '@salla.sa/twilight';
|
|
1
|
+
import '@salla.sa/twilight/dist/@salla.sa/twilight.min';
|
|
6
2
|
export default function (): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Components, JSX } from './components';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salla.sa/twilight-components",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.3",
|
|
4
4
|
"license": "GPL-3.0",
|
|
5
5
|
"author": "Salla Team <support@salla.dev> (https://salla.dev)",
|
|
6
6
|
"bugs": {
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
81
|
"@salla.sa/applepay": "^2.11.127",
|
|
82
|
-
"@salla.sa/twilight": "^2.12.
|
|
82
|
+
"@salla.sa/twilight": "^2.12.3",
|
|
83
83
|
"@salla.sa/twilight-tailwind-theme": "^2.12.0",
|
|
84
84
|
"@types/node": "^18.15.3",
|
|
85
85
|
"animejs": "^3.2.1",
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"vanilla-lazyload": "^17.8.3",
|
|
98
98
|
"vanilla-picker": "^2.12.1"
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "f3566bd1af00917ac1fddeabdb9c5c779ec65b3a"
|
|
101
101
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"Helper-f14223e6.js","mappings":"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","names":[],"sources":["./src/Helpers/Helper.ts"],"sourcesContent":["//TODO::reduce it to 10\nsalla.event.setMaxListeners(100);\n\nclass Helper {\n private debounce_: Boolean;\n\n toggleElementClassIf(element, classes1, classes2, callback) {\n classes1 = Array.isArray(classes1) ? classes1 : classes1.split(' ');\n classes2 = Array.isArray(classes2) ? classes2 : classes2.split(' ');\n let isClasses1 = callback(element);\n element?.classList.remove(...(isClasses1 ? classes2 : classes1));\n element?.classList.add(...(isClasses1 ? classes1 : classes2));\n return this;\n }\n\n toggleClassIf(selector, classes1, classes2, callback) {\n document.querySelectorAll(selector).forEach(element => this.toggleElementClassIf(element, classes1, classes2, callback));\n return this;\n }\n\n isValidEmail(email) {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n }\n\n filterEmojies(text) {\n var characterFilter = /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|\\ud83c[\\udd70-\\udd71]|\\ud83c[\\udd7e-\\udd7f]|\\ud83c\\udd8e|\\ud83c[\\udd91-\\udd9a]|\\ud83c[\\udde6-\\uddff]|\\ud83c[\\ude01-\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|\\ud83c[\\ude32-\\ude3a]|\\ud83c[\\ude50-\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff])/g;\n return text.replace(characterFilter, \"\");\n }\n\n debounce(fn, ...data) {\n if (!this.debounce_) {\n this.debounce_ = salla.helpers.debounce((callback, ...innerData) => callback(...innerData), 500);\n }\n //@ts-ignore\n return this.debounce_(fn, ...data);\n }\n\n getProductsSource(source) {\n return {\n 'brands.single': 'brands',\n 'product.index': 'categories',\n 'product.index.latest': 'latest',\n 'product.index.offers': 'offers',\n 'product.index.search': 'search',\n 'landing-page': 'landing-page',\n 'product.index.tag': 'tags',\n 'product.index.sales': 'sales',\n 'components.most_sales_products': 'sales',//temporary, delete it after two days from now\n }[source || salla.config.get('page.slug')] || source || 'latest';\n }\n\n getProductsSourceValue(source, sourceValue) {\n const parsedSource = this.getProductsSource(source);\n\n // Validate if the source value is a valid JSON string\n let parsedSourceValue: any = null;\n if (sourceValue) {\n try {\n parsedSourceValue = JSON.parse(sourceValue);\n } catch (error) {\n console.error('Invalid JSON string in sourceValue:', error);\n }\n }\n\n // Handle different source types\n if (!['search', 'json', 'offers', 'latest', 'sales', 'related'].includes(parsedSource)) {\n\n if (Array.isArray(parsedSourceValue) && parsedSourceValue.length) {\n return parsedSourceValue;\n }\n\n if (typeof parsedSourceValue === 'number') {\n return [parsedSourceValue];\n }\n\n if (!sourceValue && ['categories', 'tags', 'brands'].includes(source)) {\n return [salla.config.get('page.id')];\n }\n }\n\n // Return sourceValue if it exists and is a valid JSON object/array\n if (parsedSourceValue || sourceValue) {\n return parsedSourceValue || sourceValue;\n }\n\n if (parsedSource === 'search') {\n return new URLSearchParams(window.location.search).get('q') || '';\n }\n\n // Return page id as default value\n return salla.config.get('page.id');\n }\n}\n\nexport default new Helper;\n"],"version":3}
|