@salla.sa/twilight-components
Version:
Salla Web Component
4 lines • 3.32 kB
JavaScript
/*!
* Crafted with ❤ by Salla
*/
import{r as s,h as t,H as i,a as r}from"./p-BQQ2x3w_.js";import{H as e}from"./p-CHf8XdiS.js";import"./p-CgtvEd63.js";const l=class{constructor(t){s(this,t),this.productCardComponent="custom-salla-product-card",this.apiUrl=""}componentWillLoad(){return salla.onReady().then((()=>{if(this.includes=e.parseJson(this.includes||this.host.getAttribute("includes")),Array.isArray(this.includes)||(this.includes=null),e.setIncludes(this.includes),this.sourceValueIsValid=!(!this.getSourceValue()&&!this.isSourceWithoutValue()),this.sourceValueIsValid){if(this.hasCustomComponent=!!customElements.get(this.productCardComponent),"json"===this.source)return this.productsData=this.getSourceValue(),void(this.isReady=!0);if("related"!=this.getSource()||salla.config.get("store.settings.product.related_products_enabled"))return salla.api.withoutNotifier((()=>salla.product.api.fetch({source:e.getApiSource(this.getSource()),source_value:this.getSourceValue(),limit:this.limit}))).then((s=>e.injectExtraFieldsToResponse(s))).then((s=>{this.productsData=s.data,this.isReady=!0,s.source=this.getSource(),s.sourceValue=this.getSourceValue(),salla.event.emit("salla-products-slider::products.fetched",s.data)}));this.isReady=!1}else salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`)}))}componentDidRender(){let s=0;const t=setInterval((()=>{this.host.querySelectorAll('[loading="lazy"]')?.forEach((s=>s.removeAttribute("loading"))),s++,s>=10&&clearInterval(t)}),1e3)}async componentDidLoad(){await Salla.hooks.registerComponent("salla-products-slider",this)}isSourceWithoutValue(){return["offers","latest","sales","top-rated"].includes(this.getSource())}getItemHTML(s){const i="landing-page"===this.getSource();i&&(s.url="");const r=i?void 0:()=>{e.saveProductSource(this.getSource())};if(this.hasCustomComponent&&"custom-salla-product-card"==this.productCardComponent.toLowerCase())return t("div",{class:"s-products-slider-card",onClick:r},t("custom-salla-product-card",{product:s,source:this.getSource(),"source-value":this.getSourceValue()}));if(this.hasCustomComponent){const i=document.createElement(this.productCardComponent);return i.setAttribute("product",JSON.stringify(s)),i.setAttribute("source",this.getSource()),i.setAttribute("source-value",this.getSourceValue()),t("div",{class:"s-products-slider-card",onClick:r,innerHTML:i.outerHTML})}return t("div",{class:"s-products-slider-card",onClick:r},t("salla-product-card",{"show-quantity":i,"hide-add-btn":i,"shadow-on-hover":!0,product:s}))}canRender(){return this.sourceValueIsValid&&this.isReady}getSource(){return e.getProductsSource(this.source)}getSourceValue(){return e.getProductsSourceValue(this.source,this.sourceValue)}render(){if(this.canRender())return t(i,{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)}`,...this.sliderProps||{},"auto-play":this.autoplay,type:"carousel","block-title":this.blockTitle,"block-subTitle":this.subTitle,"display-all-url":this.displayAllUrl,sliderConfig:this.sliderConfig?this.sliderConfig:null},t("div",{slot:"items"},this.productsData?.map((s=>this.getItemHTML(s))))))}get host(){return r(this)}};l.style="";export{l as salla_products_slider}