@salla.sa/twilight-components
Version:
Salla Web Component
5 lines • 9.39 kB
JavaScript
/*!
* Crafted with ❤ by Salla
*/
System.register(["./p-CsnFTjdf.system.js"],(function(s){"use strict";var e,r,t;return{setters:[function(s){e=s.r;r=s.h;t=s.g}],execute:function(){var a;(function(s){s["ProductDetail"]="product.single";s["Cart"]="cart"})(a||(a={}));var n;(function(s){s["Conditional"]="conditional";s["PercentageOrFixed"]="fixed";s["DiscountsTable"]="discounts_table";s["Bank"]="bank";s["BuyXGetY"]="buy_x_get_y"})(n||(n={}));var i='.s-offer-wrapper .s-slider-block__title h2{font-size:1.125rem;line-height:1.75rem;color:#f87171}.s-offer-wrapper .s-slider-block__title h2::before{font-family:"sallaicons";content:"\\ee30" !important;position:absolute;top:1rem;font-size:3rem;font-weight:400;line-height:1;color:#fef2f2}.s-offer-bank-wrapper-sinlge-item{display:-ms-flexbox;display:flex;-ms-flex-align:center !important;align-items:center !important;gap:14px}.s-offer-bank-wrapper{display:-ms-flexbox !important;display:flex !important;width:100% !important}';var l=s("salla_offer",function(){function s(s){var r=this;e(this,s);var t;this.productCardComponent="custom-salla-product-card";this.offersList=[];this.isMultipleBank=false;this.isBankOffer=false;this.canRender=false;this.showOffer=salla.config.get("store.settings.product.show_special_offers");this.offer_with_price_text=salla.lang.get("pages.offer.with_price",{price:""});this.with_discount_text=salla.lang.get("pages.products.with_a_discount");this.product_discount_text=salla.lang.get("pages.products.discount");this.special_offer_text=salla.lang.get("pages.products.special_offer");this.multipleBankOfferTitleText=salla.lang.get("pages.offer.multiple_bank_offers_title");this.multipleBankOfferTitleDescription=salla.lang.get("pages.offer.multiple_bank_offers_message");this.buy_quantity_text=function(s){return salla.lang.get("pages.offer.buy_quantity",{quantity:s})};salla.lang.onLoaded((function(){r.offer_with_price_text=salla.lang.get("pages.offer.with_price");r.with_discount_text=salla.lang.get("pages.products.with_a_discount");r.product_discount_text=salla.lang.get("pages.products.discount");r.special_offer_text=salla.lang.get("pages.products.special_offer");r.multipleBankOfferTitleText=salla.lang.get("pages.offer.multiple_bank_offers_title");r.multipleBankOfferTitleDescription=salla.lang.get("pages.offer.multiple_bank_offers_message");r.buy_quantity_text(0)}));salla.onReady((function(){r.currentPage=salla.config.get("page.slug");r.userCurrency=salla.config.get("currencies")[salla.config.get("user.currency_code")].symbol}));this.categorySlot=((t=this.host.querySelector('[slot="category"]'))===null||t===void 0?void 0:t.innerHTML)||'<a href={url} class="s-offer-slide-cat-entry"><i class={icon}></i><h4>{name}</h4></a>'}s.prototype.getEndpointByPageName=function(){var s;return(s={},s[a.Cart]="offers/cart/".concat(salla.storage.get("cart.id")),s[a.ProductDetail]="offers/product/".concat(salla.config.get("page.id")),s)[this.currentPage]||"offers"};s.prototype.componentWillLoad=function(){var s=this;this.hasCustomComponent=!!customElements.get(this.productCardComponent);return new Promise((function(s){return salla.onReady(s)})).then((function(){s.showOffer=!salla.url.is_page("product.single")||salla.config.get("store.settings.product.show_special_offers");if(s.showOffer){return}throw new Error("Merchant disabled showing the offers on product page")})).then((function(){return salla.api.request(s.getEndpointByPageName())})).then((function(e){if(!(s.offersList=e.data).length){throw new Error("salla-offers:: There is no offers!")}var r=s.offersList.find((function(s){return[n.Bank,n.BuyXGetY,n.DiscountsTable].includes(s.type)}));if(!r){throw new Error("salla-offers:: Offer type not supported yet!")}if(r.type===n.DiscountsTable){return s.offersList=[r]}if(s.isBankOffer=r.type===n.Bank){s.offersList=s.offersList.filter((function(s){return s.type===n.Bank}));s.isMultipleBank=s.offersList.length>1;return s.offersList}var t=r.details.get;return t.source==="products"?salla.product.api.fetch({source:"selected",source_value:t.source_value}).then((function(e){t.products=e.data;r.details.get=t;return s.offersList=[r]})):salla.product.api.categories().then((function(e){t.categories=s.findCategories(e.data,t.source_value);r.details.get=t;return s.offersList=[r]}))})).then((function(e){salla.storage.set(s.getStorageKey(),{offers:e,stored_at:(new Date).getTime()});s.canRender=true})).catch((function(s){salla.logger.warn(s)}))};s.prototype.componentDidLoad=function(){var s=this.host.querySelector(".s-slider-block__title-nav");s===null||s===void 0?void 0:s.classList.add("s-offer-bank-payment-nav")};s.prototype.findCategories=function(s,e){var r;var t=[];for(var a=0,n=s;a<n.length;a++){var i=n[a];if(e.includes(i.id_||i.id)){t.push(i)}if(((r=i.sub_categories)===null||r===void 0?void 0:r.length)>0){t=t.concat(this.findCategories(i.sub_categories,e))}}return t};s.prototype.getStorageKey=function(){try{var s=salla.config.get("page.slug").replace(".","_");var e=salla.lang.getLocale();var r=salla.config.currency().code;if(!s||!e||!r){throw new Error("Unable to get the storage key.")}return"s-offers-".concat(s,"-").concat(salla.config.get("page.id"),"-").concat(e,"-").concat(r)}catch(s){return""}};s.prototype.getOffersFromStorage=function(){var s=salla.storage.get(this.getStorageKey());if(!s||s.stored_at<(new Date).getTime()-10*60*1e3){salla.storage.remove(this.getStorageKey());return null}this.canRender=true;return Promise.resolve(s.offers)};s.prototype.render=function(){if(!this.offersList.length||!this.canRender||!this.showOffer)return null;var s=this.offersList[0];var e=this.isBankOffer?this.isMultipleBank?this.multipleBankOfferTitleText:null:s.title;var t=this.isBankOffer?this.isMultipleBank?this.multipleBankOfferTitleDescription:null:s.description;var a={"block-title":e,"block-subTitle":t,"show-controls":this.isMultipleBank};return r("div",{class:"s-offer-wrapper"},r("p",{class:"s-offer-corner-badge"},this.special_offer_text),r("salla-slider",Object.assign({type:"carousel",id:"offer-slider"},a),r("div",{slot:"items"},this.renderSectionForOfferType(s.type))))};s.prototype.renderSectionForOfferType=function(s){if(this.isBankOffer){return this.renderBankSection()}if(s==n.BuyXGetY){return this.renderBuyXGetYSection()}return this.renderDiscountTableSection()};s.prototype.getCategoriesSection=function(s){return r("div",{class:"s-offer-slide-one-sixth swiper-slide",innerHTML:this.categorySlot.replace(/\{url\}/g,s.url).replace(/\{icon\}/g,s.icon||"sicon-store").replace(/\{name\}/g,s.name)})};s.prototype.renderBuyXGetYSection=function(){var s=this;var e,t;var a=this.offersList[0].details;return[(e=a.get.products)===null||e===void 0?void 0:e.map((function(e){return r("div",{class:"s-offer-slide-one-fourth"},s.hasCustomComponent?r(s.productCardComponent,{product:e}):r("salla-product-card",{"shadow-on-hover":true,product:e}))})),(t=a.get.categories)===null||t===void 0?void 0:t.map((function(e){return s.getCategoriesSection(e)}))]};s.prototype.renderBankSection=function(){var s=this;return this.offersList.map((function(e){return r("div",{class:{"s-offer-slide-one-sixth":s.isMultipleBank,"s-offer-bank-wrapper-sinlge-item":!s.isMultipleBank}},r("div",{class:{"s-offer-bank-wrapper":true,"s-offer-slide-one-sixth":!s.isMultipleBank,"s-offer-bank-wrapper-multi-spacer":s.isMultipleBank}},r("div",{class:"s-offer-bank-logo"},r("img",{src:e.details.logo||salla.url.cdn("images/s-empty.png"),"data-src":e.details.logo,alt:e.title+" offer"})),r("ul",{class:"s-offer-bank-payment-wrapper"},e.details.payments.map((function(s){return r("li",{class:"s-offer-bank-payment-single"},r("img",{src:salla.url.cdn("images/payment/"+s+".png")||salla.url.cdn("images/s-empty.png"),"data-src":salla.url.cdn("images/payment/"+s+".png"),alt:"payment"}))}))),s.isMultipleBank?r("p",{class:"s-offer-bank-payment-discount-percent"},"".concat(s.product_discount_text," ").concat(e.details.discount_value).concat(e.details.discount_type==="percentage"&&"%")):""),!s.isMultipleBank?r("div",{class:"s-offer-bank-message s-offer-slide-one-fourth"},r("h2",null,s.offersList[0].title),r("p",{innerHTML:s.generateBankDescription(s.offersList[0].description,e.details.discount_value)})):"")}))};s.prototype.generateBankDescription=function(s,e){return s.replace(new RegExp("".concat(e," %")),'<span class="s-offer-bank-message-amount">'.concat(e," %</span>"))};s.prototype.renderDiscountTableSection=function(){var s=this;var e;var t=this.offersList[0];var a=t.details.show_price_after_discount;return(e=this.offersList[0].details.discounts)===null||e===void 0?void 0:e.map((function(e){return r("div",{class:"s-offer-slide-one-fourth"},r("div",{class:"s-offer-slide-offer-entry"},r("div",{class:"s-offer-slide-offer-entry-price-quantity-container"},r("p",{class:"s-offer-slide-offer-entry-quantity"},s.buy_quantity_text(e.quantity)),a?r("div",{class:"s-offer-slide-offer-entry-price"},r("span",null,s.offer_with_price_text),r("span",{class:"s-offer-slide-offer-entry-price-amount"},e.discounted_amount)," ",r("span",null,s.userCurrency)):""),r("p",{class:"s-offer-slide-offer-entry-price-amount-percent"},s.with_discount_text,"(",r("span",null,e.percentage,!!e.percentage&&"%"),")")))}))};Object.defineProperty(s.prototype,"host",{get:function(){return t(this)},enumerable:false,configurable:true});return s}());l.style=i}}}));
//# sourceMappingURL=p-95548f79.system.entry.js.map