@jumpgroup/jump-design-system 0.3.47 → 0.3.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/cjs/jump-card-ecommerce.cjs.entry.js +22 -19
  2. package/dist/cjs/jump-card-ecommerce.cjs.entry.js.map +1 -1
  3. package/dist/cjs/jump-design-system.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.css +2 -0
  6. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.js +70 -28
  7. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.js.map +1 -1
  8. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.stories.js +51 -26
  9. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.stories.js.map +1 -1
  10. package/dist/components/jump-card-ecommerce.js +25 -20
  11. package/dist/components/jump-card-ecommerce.js.map +1 -1
  12. package/dist/esm/jump-card-ecommerce.entry.js +22 -19
  13. package/dist/esm/jump-card-ecommerce.entry.js.map +1 -1
  14. package/dist/esm/jump-design-system.js +1 -1
  15. package/dist/esm/loader.js +1 -1
  16. package/dist/jump-design-system/jump-design-system.esm.js +1 -1
  17. package/dist/jump-design-system/jump-design-system.esm.js.map +1 -1
  18. package/dist/jump-design-system/p-316526ed.entry.js +2 -0
  19. package/dist/jump-design-system/p-316526ed.entry.js.map +1 -0
  20. package/dist/jump-design-system-elements.json +46 -4
  21. package/dist/types/components/jump-card-ecommerce/jump-card-ecommerce.d.ts +6 -2
  22. package/dist/types/components/jump-card-ecommerce/jump-card-ecommerce.stories.d.ts +21 -8
  23. package/dist/types/components.d.ts +24 -8
  24. package/package.json +1 -1
  25. package/dist/jump-design-system/p-24cac36a.entry.js +0 -2
  26. package/dist/jump-design-system/p-24cac36a.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["patchBrowser","importMeta","url","opts","resourcesUrl","URL","href","promiseResolve","then","async","options","globalScripts","bootstrapLazy","disabled","variant","outline","size","full","pill","text","onlyIcon","target","type","name","value","ariaLabel","class","buttonId","library","category","label","src","onlyIconButton","hasBackground","badge","favorite","hasFavorite","hasSlotForFavorite","favoriteHref","link","img","imgAlt","hoverImg","hoverImgAlt","videoSrc","notificationUrl","notificationText","productName","subtitle","productId","price","salePrice","currency","outOfStock","outOfStockText","addToCartText","waitingListText","addToWaitingList","isMini","addedToCart","endAddedToCart","variations","selectedVariation","priceFormatted","salePriceFormatted","setPrice","direction","filterHeading","filterButtonLabel","filterButtonIcon","mobileThreshold","filters","showCount","offCanvasOverlay","activeFilters","showMobileFilters","isMobile","offCanvasClasses","getFilters","heading","otherLabel","lessLabel","maxElements","values","slotItems","inputs","showMore","getValues","getActiveAmount","getInputs","getName","logo","navItems","secondaryNavItems","navPosition","megaMenuAlignment","sticky","stickyThreshold","mobileLogo","user","pagLabel","last","showFirstAndLast","current","elementsRanges","elPerPage","labelElementsPerPage","total","first","elementsRangesArray","min","max","step","showButtons","currentValue","getValue","reset","placeholder","identifier","debounceTime","searchType","summary","open","icon","iconName","iconPosition","active","groupIdentifier","horizontal","dark","shadow","border","borderRadius","topBorderContentRadius","boxed","roundedMedia","imgSrc","code","imgUrl","sku","taxonomy","checked","count","isChecked","alignment","fullBorder","tabGroupName","dimension","soft"],"sources":["node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.18.2 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, doc, H, promiseResolve } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? Array.from(doc.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["patchBrowser","importMeta","url","opts","resourcesUrl","URL","href","promiseResolve","then","async","options","globalScripts","bootstrapLazy","disabled","variant","outline","size","full","pill","text","onlyIcon","target","type","name","value","ariaLabel","class","buttonId","library","category","label","src","onlyIconButton","hasBackground","badge","favorite","hasFavorite","hasSlotForFavorite","hasSlotAddToCart","link","img","imgAlt","hoverImg","hoverImgAlt","videoSrc","notificationUrl","notificationText","productName","subtitle","productId","price","salePrice","currency","addToCartColor","badgeColor","outOfStock","outOfStockText","addToCartText","waitingListText","addToWaitingList","isMini","addedToCart","endAddedToCart","variations","selectedVariation","priceFormatted","salePriceFormatted","setPrice","direction","filterHeading","filterButtonLabel","filterButtonIcon","mobileThreshold","filters","showCount","offCanvasOverlay","activeFilters","showMobileFilters","isMobile","offCanvasClasses","getFilters","heading","otherLabel","lessLabel","maxElements","values","slotItems","inputs","showMore","getValues","getActiveAmount","getInputs","getName","logo","navItems","secondaryNavItems","navPosition","megaMenuAlignment","sticky","stickyThreshold","mobileLogo","user","pagLabel","last","showFirstAndLast","current","elementsRanges","elPerPage","labelElementsPerPage","total","first","elementsRangesArray","min","max","step","showButtons","currentValue","getValue","reset","placeholder","identifier","debounceTime","searchType","summary","open","icon","iconName","iconPosition","active","groupIdentifier","horizontal","dark","shadow","border","borderRadius","topBorderContentRadius","boxed","roundedMedia","imgSrc","code","imgUrl","sku","taxonomy","checked","count","isChecked","alignment","fullBorder","tabGroupName","dimension","soft"],"sources":["node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.18.2 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, doc, H, promiseResolve } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? Array.from(doc.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as i,h as s,H as e,g as a}from"./p-1c5db8d3.js";const o=":host{--card-max-width:450px;--jump-card-max-width-horizontal:100%;--jump-card-color:var(--neutral-grey-primary);--jump-card-background:transparent;--jump-card-border-color:var(--neutral-grey-background);--jump-card-padding:0.5rem;max-width:var(--card-max-width);overflow:hidden;display:flex;flex-direction:column;position:relative;width:100%;font-family:var(--ff-primary, \"Arial\"), sans-serif;line-height:var(--lh-400, 1.3);background-color:var(--jump-card-background);color:var(--jump-card-color)}:host .Footer,:host .Body{display:flex;width:100%}:host jump-badge{position:absolute;top:1rem;left:1rem;z-index:2}:host jump-badge.hasBackground.iconOnly{top:calc(1rem + 8px);left:calc(1rem + 8px)}:host .Favorite{position:absolute;top:1rem;right:1rem;z-index:2}:host .Favorite.hasBackground.iconOnly{top:calc(1rem + 8px);right:calc(1rem + 8px)}:host .Media{overflow:hidden;position:relative;border-radius:3px;aspect-ratio:1/1}:host .Media .Images{height:100%;margin:0;position:relative}:host .Media .Images img{height:100%;width:100%;object-fit:cover;position:absolute;top:0;left:0;overflow:hidden}:host .Media .Images__Front{z-index:1;transition:opacity 0.5s linear;cursor:pointer}:host .Media .Images.has-hover-image:hover .Images__Front{opacity:0}:host .Media.hasBackground{background-color:var(--neutral-white)}:host .Media.hasBackground.iconOnly{border-top-left-radius:6px;border-top-right-radius:6px;padding:var(--jump-card-padding) var(--jump-card-padding) 0}:host .Media.hasBackground.iconOnly img{border-radius:6px}:host .Media.iconOnly{border-bottom-right-radius:0}:host .Media.is-mini{max-width:180px}:host .NotificationCart{display:none;position:absolute;bottom:0px;width:100%;padding:2rem 1rem;background-color:hsla(0, 0%, 0%, 0.35);box-sizing:border-box;z-index:2;transform:translate3d(0, 0, 0)}:host .NotificationCart.is-active{display:flex;align-items:center;justify-content:center}:host .Content.hasBackground{background-color:var(--neutral-white);padding:calc(var(--jump-card-padding) * 2)}:host .Content.iconOnly{padding:calc(var(--jump-card-padding) * 2) var(--jump-card-padding)}:host .Content.is-mini{max-width:180px}:host .Body{display:flex;flex-direction:column;gap:0.75rem;padding:var(--jump-card-padding) 0}:host .Body>*{display:flex;flex-direction:row;justify-content:space-between}:host .Body>*>*{flex:0 1 auto}:host .Body.hasBackground{padding:0 0 var(--jump-card-padding)}:host .Body.iconOnly{padding:0}:host .Body.is-mini{padding:calc(var(--jump-card-padding) / 2) 0}:host .Body.is-mini>*{flex-direction:column}:host .Product{font-size:var(--fs-400);color:var(--neutral-grey-primary);text-decoration:none}:host .Subtitle{font-size:var(--fs-300);color:var(--neutral-grey-secondary);line-height:1.2}:host .Footer{line-height:var(--lh-400);justify-content:end;padding:var(--jump-card-padding) 0;align-items:flex-end}:host .Footer.justify-between{justify-content:space-between}:host .Footer.hasBackground{padding-bottom:0}:host .Footer.iconOnly{padding:0}:host .Footer.is-mini{padding:calc(var(--jump-card-padding) / 2) 0}:host .OutOfStock{justify-items:start;font-size:var(--fs-300);font-weight:var(--fw-900);color:var(--status-danger-standard)}:host .OnlyIconButton{position:absolute;bottom:0;right:0;background:var(--neutral-white);border-top-left-radius:20px;padding:8px 8px 0px 8px;z-index:2}:host .Price{position:relative;display:grid;grid-template-columns:auto auto;grid-template-rows:1.5rem 1.5rem auto;justify-items:end;align-items:end;column-gap:0.5rem;font-size:var(--fs-500);font-weight:var(--fw-900);line-height:var(--lh-400)}:host .Price>*{display:inline-flex}:host .Price__Regular{text-align:right}:host .Price__Regular.sale{text-decoration:line-through;color:var(--neutral-grey-secondary);font-weight:var(--fw-400);font-size:var(--fs-400);grid-column:2;grid-row:1}:host .Price__Sale{grid-column:2;grid-row:2}:host .Price__Discount{color:var(--status-danger-standard);font-weight:var(--fw-400);font-size:var(--fs-300);grid-column:1;grid-row:1}:host .Price.is-mini{display:flex;font-size:var(--fs-400)}:host .SelectVariations select{appearance:none;background-color:transparent;border:1px solid var(--neutral-grey-secondary);border-radius:3px;color:var(--neutral-grey-secondary);font-size:var(--fs-300);padding:0.5rem 0.75rem;max-width:100%;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");background-position:right 0.5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact}.slide-in-bottom{animation:slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both}.slide-out-bottom{animation:slide-out-bottom 0.5s cubic-bezier(0.55, 0.085, 0.68, 0.53) both}.fade-in-out{animation-name:fade-in-out;animation-duration:6s;animation-timing-function:ease-in-out}@keyframes fade-in-out{from{opacity:0;transform:translateY(100px)}50%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100px)}}";const r=o;const n=class{constructor(s){t(this,s);this.toggleFavorite=i(this,"jump-toggle-favorite",7);this.productAddToCart=i(this,"jump-add-to-cart",7);this.productWaitingList=i(this,"jump-add-to-waiting-list",7);this.variationSelected=i(this,"jump-variation-selected",7);this.onlyIconButton=false;this.hasBackground=false;this.badge=undefined;this.favorite=false;this.hasFavorite=false;this.hasSlotForFavorite=false;this.hasSlotAddToCart=false;this.link=undefined;this.img=undefined;this.imgAlt=undefined;this.hoverImg=undefined;this.hoverImgAlt=undefined;this.videoSrc=undefined;this.notificationUrl=undefined;this.notificationText="Aggiunto al carrello";this.productName=undefined;this.subtitle=undefined;this.productId=undefined;this.price=undefined;this.salePrice=undefined;this.currency="€";this.addToCartColor="secondary";this.badgeColor="secondary";this.outOfStock=false;this.outOfStockText=undefined;this.addToCartText="Aggiungi al carrello";this.waitingListText="Notifica disponibilità";this.addToWaitingList=false;this.isMini=false;this.addedToCart=false;this.endAddedToCart=false;this.variations=[];this.selectedVariation=undefined;this.priceFormatted=undefined;this.salePriceFormatted=undefined}async setPrice(t,i){let s=false;if(t&&t>0){s=true;this.price=t}if(i&&i>0){this.salePrice=i}if(s){this.formatPrices()}}addOption(t){let i=t.detail;this.variations=[...this.variations,Object.assign({},i)]}onVariationSelected(){let t=this.variationSelectEl.value;let i=this.variations.find((i=>i.code==t));this.selectedVariation=i;this.variationSelected.emit(i)}componentWillLoad(){}componentDidLoad(){this.jumpQuantityEl=this.JumpCardEcommerce.querySelector("jump-quantity");if(this.jumpQuantityEl){this.jumpQuantityEl.addEventListener("jump-change",this.onQuantityChange.bind(this));this.quantity=this.jumpQuantityEl.getValue().then((t=>{this.quantity=t}))}this.formatPrices()}disconnectedCallback(){this.jumpQuantityEl=this.JumpCardEcommerce.querySelector("jump-quantity");if(this.jumpQuantityEl){this.jumpQuantityEl.removeEventListener("jump-change",this.onQuantityChange)}}onQuantityChange(t){var i;this.quantity=(i=t.detail.value)!==null&&i!==void 0?i:false}onToggleFavorite(){this.favorite=!this.favorite;this.toggleFavorite.emit({productId:this.productId,favorite:this.favorite})}addProductToCart(){var t;this.addedToCart=true;let i=this.selectedVariation;if(!i&&this.variations.length>0){i=this.variations[0]}const s={productId:this.productId,addedToCart:this.addedToCart,quantity:(t=this.quantity)!==null&&t!==void 0?t:null,variation:i!==null&&i!==void 0?i:null};this.productAddToCart.emit(s);setTimeout((()=>{this.addedToCart=false}),6e3)}waitingList(){this.addToWaitingList=true;this.productWaitingList.emit({productId:this.productId,addToWaitingList:this.addToWaitingList})}formatPrices(){var t;let i=(t=document.documentElement.lang)!==null&&t!==void 0?t:"it-IT";if(i.length==2){i=`${i}-${i.toUpperCase()}`}this.priceFormatted=this.price.toLocaleString(i,{minimumFractionDigits:2,maximumFractionDigits:2});this.salePriceFormatted=this.salePrice.toLocaleString(i,{minimumFractionDigits:2,maximumFractionDigits:2})}render(){const t=this.hasBackground&&!this.isMini?"hasBackground":"";const i=this.onlyIconButton&&!this.isMini?"iconOnly":"";const a=this.outOfStock?"justify-between":"";const o=this.hoverImg?"has-hover-image":"";const r=this.isMini?"is-mini":"";function n(t,i){const s=(t-i)/t*100;return s.toFixed(0)}return s(e,null,!this.isMini&&this.badge?s("jump-badge",{class:`${t} ${i}`,variant:this.badgeColor,dimension:"small",label:this.badge}):"",!this.isMini&&this.hasFavorite?s("jump-button",{onClick:()=>this.onToggleFavorite(),class:`Favorite ${t} ${i}`,variant:this.favorite?"primary":"neutral",size:"small",text:true,onlyIcon:true},s("jump-icon",{slot:"prefix",name:"heart",category:this.favorite?"solid":"light",size:"medium"})):this.hasSlotForFavorite?s("div",{class:"Favorite"},s("slot",{name:"favorite"})):null,s("div",{class:`Media ${i} ${t} ${r}`},s("a",{href:this.link},s("figure",{class:`Images ${o} `},this.img&&!this.videoSrc?s("img",{class:"Images__Front",src:this.img,alt:this.imgAlt}):"",this.hoverImg&&!this.videoSrc?s("img",{class:"Images__OnHover",src:this.hoverImg,alt:this.hoverImgAlt}):""),this.videoSrc&&!this.img?s("video",{autoplay:true},s("source",{src:this.videoSrc,type:"video/mp4"}),s("source",{src:this.videoSrc,type:"video/mov"}),s("source",{src:this.videoSrc,type:"video/webm"})):""),!this.isMini?s("div",{class:`NotificationCart ${this.addedToCart==true?"is-active fade-in-out":""}`},s("jump-button",{href:this.notificationUrl,variant:"white",text:true},s("jump-icon",{slot:"prefix",name:"check"}),s("span",null," ",this.notificationText," "))):null,!this.isMini&&this.onlyIconButton&&!this.hasSlotAddToCart?s("div",{class:"OnlyIconButton"},s("jump-button",{variant:"secondary",size:"large",pill:true,onlyIcon:true,onClick:()=>this.addProductToCart()},s("jump-icon",{slot:"prefix",name:"cart-shopping",category:"regular"}))):"",!this.isMini&&this.onlyIconButton&&this.hasSlotAddToCart?s("div",{class:"OnlyIconButton"},s("slot",{name:"add-to-cart"})):""),s("div",{class:`Content ${t} ${i} ${r}`},s("div",{class:`Body ${t} ${i} ${r}`},s("div",null,s("div",{class:"Info"},s("a",{href:this.link,class:"Product"},this.productName),!this.isMini&&this.subtitle?s("div",{class:"Subtitle"},this.subtitle):null),this.price?s("div",{class:`Price ${r}`},!this.isMini&&this.salePrice&&this.salePrice<this.price?s("div",{class:"Price__Discount"}," ",n(this.price,this.salePrice),"% "):null,!this.isMini?s("div",{class:`Price__Regular ${this.salePrice&&this.salePrice<this.price?"sale":""}`},this.currency,this.priceFormatted):s("div",{class:`Price__Regular`},this.currency,this.salePrice&&this.salePrice<this.price?this.salePriceFormatted:this.priceFormatted),!this.isMini&&this.salePrice&&this.salePrice<this.price?s("div",{class:"Price__Sale"},this.currency,this.salePriceFormatted):null):null),!this.isMini?s("div",null,this.variations.length!=0?s("div",{class:"SelectVariations"},s("select",{ref:t=>this.variationSelectEl=t,onChange:()=>{this.onVariationSelected()}},this.variations.filter((t=>!t.imgUrl)).map((t=>s("option",{value:t.code},t.label))))):null,s("slot",{name:"quantity"})):null),s("div",{class:`Footer ${a} ${t} ${i} ${r}`},this.outOfStock&&!this.isMini?s("div",{class:"OutOfStock"},this.outOfStockText?this.outOfStockText:"Esaurito"):"",this.outOfStock?s("jump-button",{variant:this.addToCartColor,size:"small",text:true,onClick:()=>this.waitingList()},s("jump-icon",{slot:"prefix",name:"bell",category:"regular",size:"small"}),this.waitingListText):"",!this.outOfStock&&!this.onlyIconButton&&!this.hasSlotAddToCart?s("jump-button",{variant:this.addToCartColor,size:"small",text:true,onClick:()=>this.addProductToCart()},s("jump-icon",{slot:"prefix",name:"cart-shopping",category:"regular",size:"small"}),this.addToCartText):"",!this.outOfStock&&!this.onlyIconButton&&this.hasSlotAddToCart?s("slot",{name:"add-to-cart"}):null)))}get JumpCardEcommerce(){return a(this)}};n.style=r;export{n as jump_card_ecommerce};
2
+ //# sourceMappingURL=p-316526ed.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jumpCardEcommerceCss","JumpCardEcommerceStyle0","JumpCardEcommerce","setPrice","price","salePrice","shouldFormat","this","formatPrices","addOption","e","props","detail","variations","Object","assign","onVariationSelected","currentValue","variationSelectEl","value","variation","find","code","selectedVariation","variationSelected","emit","componentWillLoad","componentDidLoad","jumpQuantityEl","querySelector","addEventListener","onQuantityChange","bind","quantity","getValue","then","disconnectedCallback","removeEventListener","_a","onToggleFavorite","favorite","toggleFavorite","productId","addProductToCart","addedToCart","length","payload","productAddToCart","setTimeout","waitingList","addToWaitingList","productWaitingList","locale","document","documentElement","lang","toUpperCase","priceFormatted","toLocaleString","minimumFractionDigits","maximumFractionDigits","salePriceFormatted","render","backgroundClass","hasBackground","isMini","iconOnlyClass","onlyIconButton","justifyClass","outOfStock","hasImageOnHover","hoverImg","miniCard","calculateDiscount","discount","toFixed","h","Host","badge","class","variant","badgeColor","dimension","label","hasFavorite","onClick","size","text","onlyIcon","slot","name","category","hasSlotForFavorite","href","link","img","videoSrc","src","alt","imgAlt","hoverImgAlt","autoplay","type","notificationUrl","notificationText","hasSlotAddToCart","pill","productName","subtitle","currency","ref","el","onChange","filter","imgUrl","map","outOfStockText","addToCartColor","waitingListText","addToCartText"],"sources":["src/components/jump-card-ecommerce/jump-card-ecommerce.scss?tag=jump-card-ecommerce&encapsulation=shadow","src/components/jump-card-ecommerce/jump-card-ecommerce.tsx"],"sourcesContent":[":host {\n --card-max-width: 450px;\n --jump-card-max-width-horizontal: 100%;\n --jump-card-color: var(--neutral-grey-primary);\n --jump-card-background: transparent;\n --jump-card-border-color: var(--neutral-grey-background);\n --jump-card-padding: 0.5rem;\n\n max-width: var(--card-max-width);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n font-family: var(--ff-primary, 'Arial'), sans-serif;\n line-height: var(--lh-400, 1.3);\n background-color: var(--jump-card-background);\n color: var(--jump-card-color);\n\n .Footer,\n .Body {\n display: flex;\n width: 100%;\n }\n\n jump-badge {\n position: absolute;\n top: 1rem;\n left: 1rem;\n z-index: 2;\n\n &.hasBackground.iconOnly {\n top: calc(1rem + 8px);\n left: calc(1rem + 8px);\n }\n }\n\n .Favorite {\n position: absolute;\n top: 1rem;\n right: 1rem;\n z-index: 2;\n\n &.hasBackground.iconOnly {\n top: calc(1rem + 8px);\n right: calc(1rem + 8px);\n }\n }\n\n .Media {\n // aspect-ratio: 3/4;\n overflow: hidden;\n position: relative;\n border-radius: 3px;\n aspect-ratio: 1/1;\n\n .Images {\n height: 100%;\n margin: 0;\n position: relative;\n\n img {\n height: 100%;\n width: 100%;\n object-fit: cover;\n position: absolute;\n top: 0;\n left: 0;\n overflow: hidden;\n }\n\n &__Front {\n z-index: 1;\n transition: opacity 0.5s linear;\n cursor: pointer;\n }\n\n &.has-hover-image {\n &:hover .Images__Front {\n opacity: 0;\n }\n }\n }\n\n &.hasBackground {\n background-color: var(--neutral-white);\n\n &.iconOnly {\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n padding: var(--jump-card-padding) var(--jump-card-padding) 0;\n\n img {\n border-radius: 6px;\n }\n }\n }\n\n &.iconOnly {\n border-bottom-right-radius: 0;\n }\n\n &.is-mini {\n max-width: 180px;\n }\n }\n\n .NotificationCart {\n display: none;\n position: absolute;\n bottom: 0px;\n width: 100%;\n padding: 2rem 1rem;\n background-color: hsl(0 0% 0% / 35%);\n box-sizing: border-box;\n z-index: 2;\n transform: translate3d(0, 0, 0);\n\n &.is-active {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n .Content {\n &.hasBackground {\n background-color: var(--neutral-white);\n padding: calc(var(--jump-card-padding) * 2);\n }\n\n &.iconOnly {\n padding: calc(var(--jump-card-padding) * 2) var(--jump-card-padding);\n }\n\n &.is-mini {\n max-width: 180px;\n }\n }\n\n .Body {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: var(--jump-card-padding) 0;\n\n & > * {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n & > * {\n flex: 0 1 auto;\n }\n }\n\n &.hasBackground {\n padding: 0 0 var(--jump-card-padding);\n }\n\n &.iconOnly {\n padding: 0;\n }\n\n &.is-mini {\n & > * {\n flex-direction: column;\n }\n\n padding: calc(var(--jump-card-padding) / 2) 0;\n }\n }\n\n .Product {\n font-size: var(--fs-400);\n color: var(--neutral-grey-primary);\n text-decoration: none;\n }\n\n .Subtitle {\n font-size: var(--fs-300);\n color: var(--neutral-grey-secondary);\n line-height: 1.2;\n }\n\n .Footer {\n line-height: var(--lh-400);\n justify-content: end;\n padding: var(--jump-card-padding) 0;\n align-items: flex-end;\n\n &.justify-between {\n justify-content: space-between;\n }\n\n &.hasBackground {\n padding-bottom: 0;\n }\n\n &.iconOnly {\n padding: 0;\n }\n\n &.is-mini {\n padding: calc(var(--jump-card-padding) / 2) 0;\n }\n }\n\n .OutOfStock {\n justify-items: start;\n font-size: var(--fs-300);\n font-weight: var(--fw-900);\n color: var(--status-danger-standard);\n }\n\n .OnlyIconButton {\n position: absolute;\n bottom: 0;\n right: 0;\n background: var(--neutral-white);\n border-top-left-radius: 20px;\n padding: 8px 8px 0px 8px;\n z-index: 2;\n }\n\n .Price {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n grid-template-rows: 1.5rem 1.5rem auto;\n justify-items: end;\n align-items: end;\n column-gap: 0.5rem;\n\n font-size: var(--fs-500);\n font-weight: var(--fw-900);\n line-height: var(--lh-400);\n\n & > * {\n display: inline-flex;\n }\n\n &__Regular {\n text-align: right;\n\n &.sale {\n text-decoration: line-through;\n color: var(--neutral-grey-secondary);\n font-weight: var(--fw-400);\n font-size: var(--fs-400);\n grid-column: 2;\n grid-row: 1;\n }\n }\n\n &__Sale {\n grid-column: 2;\n grid-row: 2;\n }\n\n &__Discount {\n color: var(--status-danger-standard);\n font-weight: var(--fw-400);\n font-size: var(--fs-300);\n grid-column: 1;\n grid-row: 1;\n }\n\n &.is-mini {\n display: flex;\n font-size: var(--fs-400);\n }\n }\n\n .SelectVariations {\n select {\n appearance: none;\n background-color: transparent;\n border: 1px solid var(--neutral-grey-secondary);\n border-radius: 3px;\n color: var(--neutral-grey-secondary);\n font-size: var(--fs-300);\n padding: 0.5rem 0.75rem;\n max-width: 100%;\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n padding-right: 2.5rem;\n -webkit-print-color-adjust: exact;\n }\n }\n}\n\n.slide-in-bottom {\n animation: slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;\n}\n\n.slide-out-bottom {\n animation: slide-out-bottom 0.5s cubic-bezier(0.55, 0.085, 0.68, 0.53) both;\n}\n\n.fade-in-out {\n animation-name: fade-in-out;\n animation-duration: 6s;\n animation-timing-function: ease-in-out;\n}\n\n@keyframes fade-in-out {\n from {\n opacity: 0;\n transform: translateY(100px);\n }\n\n 50% {\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n opacity: 0;\n transform: translateY(100px);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, Element, State, Listen, Method } from '@stencil/core';\n\ninterface Variation {\n code: string;\n imgUrl: string;\n label: string;\n taxonomy: string;\n // Add more keys as needed\n}\n\n@Component({\n tag: 'jump-card-ecommerce',\n styleUrl: 'jump-card-ecommerce.scss',\n shadow: true,\n})\nexport class JumpCardEcommerce {\n\n @Element() JumpCardEcommerce: HTMLElement;\n jumpQuantityEl;\n\n /* ---------------------- @PROPERTIES ------------------------- */\n\n /** Indicate if card has only icon button*/\n @Prop() onlyIconButton: boolean = false;\n\n /** Indicate if card has background*/\n @Prop() hasBackground: boolean = false;\n\n /** Indicates the badge of the card*/\n @Prop() badge: string;\n\n /** Indicates if the product is favorite */\n @Prop({ mutable: true, reflect: true }) favorite: boolean = false;\n\n /** Indicate if the whislist is active in shop*/\n @Prop() hasFavorite: boolean = false;\n\n /** Indicate if the whislist will be slotted*/\n @Prop() hasSlotForFavorite: boolean = false;\n\n /** Indicate if the add to cart btn will be slotted*/\n @Prop() hasSlotAddToCart: boolean = false;\n\n /** Indicates the link of the card*/\n @Prop() link: string;\n\n /** Indicates the image's src of the card*/\n @Prop() img: string;\n\n /** Indicates the img's alt of the card*/\n @Prop() imgAlt: string;\n\n /** Indicates the over image's src of the card*/\n @Prop() hoverImg: string;\n\n /** Indicates the hover img's alt of the card*/\n @Prop() hoverImgAlt: string;\n\n /** Indicates the videoSrc of the card*/\n @Prop() videoSrc: string;\n\n /** Indicates the notificationUrl of the card*/\n @Prop() notificationUrl: string;\n\n /** Indicates the notificationText of the card*/\n @Prop() notificationText: string = 'Aggiunto al carrello';\n\n /** Indicates the title of the card*/\n @Prop() productName: string;\n\n /** Indicates the subtitle of the card*/\n @Prop() subtitle: string;\n\n /** Indicates the ID of the product, can be also a SKU*/\n @Prop() productId: string;\n\n /** Indicates the price of the card */\n @Prop() price: number;\n\n /** Indicates the sale price of the card */\n @Prop() salePrice: number;\n\n /** Indicates the currency of the card */\n @Prop() currency: string = '€';\n\n /** Indicates the variant of the button */\n @Prop() addToCartColor: 'primary' | 'secondary'|'white'|'neutral' = 'secondary';\n\n /** Indicates the variant of the button */\n @Prop() badgeColor: 'primary' | 'secondary' | 'neutral' | 'warning' | 'success' | 'danger' = 'secondary';\n\n /** Indicates if the product is outOfStock */\n @Prop({ mutable: true, reflect: true }) outOfStock: boolean = false;\n\n /** Indicates the outOfStockText of the product*/\n @Prop() outOfStockText: string;\n\n /** Indicates the button class of the add to cart / notification button */\n @Prop() addToCartText: string = 'Aggiungi al carrello';\n\n /** Indicates the button class of the add to cart / notification button */\n @Prop() waitingListText: string = 'Notifica disponibilità';\n\n /** Indicate if the user request to be notified when te product is avaible*/\n @Prop() addToWaitingList: boolean = false;\n\n /** Indicate if the card is Mini Card*/\n @Prop() isMini: boolean = false;\n\n /* ---------------------- @STATE ------------------------- */\n\n /** Indicate if the product is added to cart --> non deve esserci nelle storie! */\n @Prop() addedToCart: boolean = false;\n\n @Prop() endAddedToCart: boolean = false;\n\n @State() variations: Variation[] = [];\n\n @State() selectedVariation: Variation;\n\n @State() priceFormatted: string;\n\n @State() salePriceFormatted: string;\n\n // è una proprietà che viene cambiata solo da dentro\n quantity: number;\n\n variationSelectEl: HTMLSelectElement;\n\n /* ---------------------- @EVENTS ------------------------- */\n\n @Event({ eventName: 'jump-toggle-favorite' }) toggleFavorite: EventEmitter;\n\n @Event({ eventName: 'jump-add-to-cart' }) productAddToCart: EventEmitter;\n\n @Event({ eventName: 'jump-add-to-waiting-list' }) productWaitingList: EventEmitter;\n\n @Event({ eventName: 'jump-variation-selected' }) variationSelected: EventEmitter; // verificare se corretto: aggiungo un evento\n\n /**\n * Set the price of the product\n * @param price\n * @param salePrice\n */\n @Method()\n async setPrice(price: number, salePrice: number) {\n let shouldFormat = false;\n if (price && price > 0) {\n shouldFormat = true;\n this.price = price;\n }\n\n if (salePrice && salePrice > 0) {\n this.salePrice = salePrice;\n }\n\n if (shouldFormat) {\n this.formatPrices();\n }\n }\n\n @Listen('jump-card-ecommerce-option-connected')\n addOption(e) {\n let props = e.detail; // es {code: 'sku1', imageUrl: 'https://google.com/'}\n this.variations = [...this.variations, { ...props }];\n }\n\n onVariationSelected() {\n let currentValue = this.variationSelectEl.value;\n let variation = this.variations.find(\n (variation) => variation.code == currentValue,\n );\n this.selectedVariation = variation;\n this.variationSelected.emit(variation); // verificare se corretto: emetto l'evento\n }\n\n /* ---------------------- @LIFECYCLE ------------------------- */\n\n componentWillLoad() {\n }\n\n componentDidLoad() {\n this.jumpQuantityEl = this.JumpCardEcommerce.querySelector('jump-quantity');\n\n if (this.jumpQuantityEl) {\n this.jumpQuantityEl.addEventListener('jump-change', this.onQuantityChange.bind(this));\n this.quantity = this.jumpQuantityEl.getValue().then((quantity) => {\n this.quantity = quantity;\n });\n }\n\n this.formatPrices();\n }\n\n disconnectedCallback() {\n this.jumpQuantityEl = this.JumpCardEcommerce.querySelector('jump-quantity');\n if (this.jumpQuantityEl) {\n this.jumpQuantityEl.removeEventListener('jump-change', this.onQuantityChange);\n }\n }\n\n /* ---------------------- @METHODS ------------------------- */\n onQuantityChange(e) {\n this.quantity = e.detail.value ?? false;\n }\n\n onToggleFavorite() {\n this.favorite = !this.favorite;\n this.toggleFavorite.emit(\n {\n productId: this.productId,\n favorite: this.favorite,\n },\n );\n }\n\n addProductToCart() {\n this.addedToCart = true;\n let variations = this.selectedVariation;\n if (!variations && this.variations.length > 0) {\n variations = this.variations[0];\n }\n\n const payload = {\n productId: this.productId,\n addedToCart: this.addedToCart,\n quantity: this.quantity ?? null,\n variation: variations ?? null,\n };\n this.productAddToCart.emit(payload);\n\n setTimeout(() => {\n this.addedToCart = false;\n }, 6000);\n }\n\n waitingList() {\n this.addToWaitingList = true;\n this.productWaitingList.emit(\n {\n productId: this.productId,\n addToWaitingList: this.addToWaitingList,\n },\n );\n }\n\n formatPrices() {\n let locale = document.documentElement.lang ?? 'it-IT';\n if (locale.length == 2) {\n locale = `${locale}-${locale.toUpperCase()}`;\n }\n\n // Format price with 2 decimal digits and in locale\n this.priceFormatted = this.price.toLocaleString(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n this.salePriceFormatted = this.salePrice.toLocaleString(locale, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n }\n\n render() {\n const backgroundClass = this.hasBackground && !this.isMini ? 'hasBackground' : '';\n const iconOnlyClass = this.onlyIconButton && !this.isMini ? 'iconOnly' : '';\n const justifyClass = this.outOfStock ? 'justify-between' : '';\n const hasImageOnHover = this.hoverImg ? 'has-hover-image' : '';\n const miniCard = this.isMini ? 'is-mini' : '';\n\n function calculateDiscount(price: number, salePrice: number): string {\n const discount = ((price - salePrice) / price) * 100;\n return discount.toFixed(0);\n };\n\n return (\n <Host>\n {!this.isMini && this.badge ?\n <jump-badge class={`${backgroundClass} ${iconOnlyClass}`} variant={this.badgeColor} dimension=\"small\"\n label={this.badge}></jump-badge> : ''}\n\n {!this.isMini && this.hasFavorite ?\n <jump-button onClick={() => this.onToggleFavorite()} class={`Favorite ${backgroundClass} ${iconOnlyClass}`}\n variant={this.favorite ? 'primary' : 'neutral'} size=\"small\" text onlyIcon>\n <jump-icon slot=\"prefix\" name=\"heart\" category={this.favorite ? 'solid' : 'light'}\n size=\"medium\"></jump-icon>\n </jump-button>\n :\n this.hasSlotForFavorite ? <div class=\"Favorite\">\n <slot name=\"favorite\"></slot>\n </div> : null\n }\n\n <div class={`Media ${iconOnlyClass} ${backgroundClass} ${miniCard}`}>\n <a href={this.link}>\n <figure class={`Images ${hasImageOnHover} `}>\n {this.img && !this.videoSrc ? <img class=\"Images__Front\" src={this.img} alt={this.imgAlt}></img> : ''}\n {this.hoverImg && !this.videoSrc ?\n <img class=\"Images__OnHover\" src={this.hoverImg} alt={this.hoverImgAlt}></img> : ''}\n </figure>\n {this.videoSrc && !this.img ?\n <video autoplay>\n <source src={this.videoSrc} type=\"video/mp4\" />\n <source src={this.videoSrc} type=\"video/mov\" />\n <source src={this.videoSrc} type=\"video/webm\" />\n </video> : ''}\n </a>\n {!this.isMini ?\n <div class={`NotificationCart ${this.addedToCart == true ? 'is-active fade-in-out' : ''}`}>\n <jump-button href={this.notificationUrl} variant=\"white\" text>\n <jump-icon slot=\"prefix\" name=\"check\"></jump-icon>\n <span> {this.notificationText} </span>\n </jump-button>\n </div>\n : null\n }\n\n {!this.isMini && this.onlyIconButton && !this.hasSlotAddToCart ?\n <div class=\"OnlyIconButton\">\n <jump-button variant=\"secondary\" size=\"large\" pill onlyIcon onClick={() => this.addProductToCart()}>\n <jump-icon slot=\"prefix\" name=\"cart-shopping\" category=\"regular\"></jump-icon>\n </jump-button>\n </div>\n : ''\n }\n\n {!this.isMini && this.onlyIconButton && this.hasSlotAddToCart ?\n <div class=\"OnlyIconButton\">\n <slot name=\"add-to-cart\"></slot>\n </div>\n : ''\n }\n </div>\n\n <div class={`Content ${backgroundClass} ${iconOnlyClass} ${miniCard}`}>\n <div class={`Body ${backgroundClass} ${iconOnlyClass} ${miniCard}`}>\n <div>\n <div class=\"Info\">\n <a href={this.link} class=\"Product\">{this.productName}</a>\n {!this.isMini && this.subtitle ? <div class=\"Subtitle\">{this.subtitle}</div> : null}\n </div>\n\n {this.price ?\n <div class={`Price ${miniCard}`}>\n {!this.isMini && this.salePrice && this.salePrice < this.price ?\n <div class=\"Price__Discount\"> {calculateDiscount(this.price, this.salePrice)}% </div>\n : null}\n\n {!this.isMini ?\n <div class={`Price__Regular ${this.salePrice && this.salePrice < this.price ? 'sale' : ''}`}>\n {this.currency}{this.priceFormatted}\n </div>\n :\n <div class={`Price__Regular`}>\n {this.currency}{this.salePrice && this.salePrice < this.price ? this.salePriceFormatted : this.priceFormatted}\n </div>\n }\n\n {!this.isMini && this.salePrice && this.salePrice < this.price ?\n <div class=\"Price__Sale\">{this.currency}{this.salePriceFormatted}</div>\n : null}\n </div>\n : null}\n </div>\n\n {!this.isMini ?\n <div>\n {this.variations.length != 0 ?\n <div class=\"SelectVariations\">\n <select\n ref={(el) => (this.variationSelectEl = el)} //salvo questo elemento in this.variationSelectEl\n onChange={() => {\n this.onVariationSelected();\n }}\n >\n {this.variations\n .filter((variation) => !variation.imgUrl)\n .map((variation) => (\n <option value={variation.code}>{variation.label}</option>\n ))}\n </select>\n </div>\n : null}\n <slot name=\"quantity\"></slot>\n </div>\n : null}\n\n </div>\n\n <div class={`Footer ${justifyClass} ${backgroundClass} ${iconOnlyClass} ${miniCard}`}>\n\n {this.outOfStock && !this.isMini?\n <div class=\"OutOfStock\">{this.outOfStockText ? this.outOfStockText : 'Esaurito'}</div> : ''}\n\n {this.outOfStock ?\n <jump-button variant={this.addToCartColor} size=\"small\" text onClick={() => this.waitingList()}>\n <jump-icon slot=\"prefix\" name=\"bell\" category=\"regular\" size=\"small\"></jump-icon>\n {this.waitingListText}\n </jump-button> : ''\n }\n\n {!this.outOfStock && !this.onlyIconButton && !this.hasSlotAddToCart ?\n <jump-button variant={this.addToCartColor} size=\"small\" text onClick={() => this.addProductToCart()}>\n <jump-icon slot=\"prefix\" name=\"cart-shopping\" category=\"regular\" size=\"small\"></jump-icon>\n {this.addToCartText}\n </jump-button> : ''\n }\n\n {!this.outOfStock && !this.onlyIconButton && this.hasSlotAddToCart ?\n <slot name=\"add-to-cart\"></slot>\n : null\n }\n </div>\n </div>\n </Host>\n );\n }\n\n}\n"],"mappings":"gEAAA,MAAMA,EAAuB,ogKAC7B,MAAAC,EAAeD,E,MCcFE,EAAiB,M,6QAQM,M,mBAGD,M,mCAM2B,M,iBAG7B,M,wBAGO,M,sBAGF,M,6LAwBD,uB,wIAkBR,I,oBAGyC,Y,gBAGyB,Y,gBAG/B,M,iDAM9B,uB,qBAGE,yB,sBAGE,M,YAGV,M,iBAKK,M,oBAEG,M,gBAEC,G,iGA6BnC,cAAMC,CAASC,EAAeC,GAC5B,IAAIC,EAAe,MACnB,GAAIF,GAASA,EAAQ,EAAG,CACtBE,EAAe,KACfC,KAAKH,MAAQA,C,CAGf,GAAIC,GAAaA,EAAY,EAAG,CAC9BE,KAAKF,UAAYA,C,CAGnB,GAAIC,EAAc,CAChBC,KAAKC,c,EAKT,SAAAC,CAAUC,GACR,IAAIC,EAAQD,EAAEE,OACdL,KAAKM,WAAa,IAAIN,KAAKM,WAAUC,OAAAC,OAAA,GAAOJ,G,CAG9C,mBAAAK,GACE,IAAIC,EAAeV,KAAKW,kBAAkBC,MAC1C,IAAIC,EAAYb,KAAKM,WAAWQ,MAC7BD,GAAcA,EAAUE,MAAQL,IAEnCV,KAAKgB,kBAAoBH,EACzBb,KAAKiB,kBAAkBC,KAAKL,E,CAK9B,iBAAAM,G,CAGA,gBAAAC,GACEpB,KAAKqB,eAAiBrB,KAAKL,kBAAkB2B,cAAc,iBAE3D,GAAItB,KAAKqB,eAAgB,CACvBrB,KAAKqB,eAAeE,iBAAiB,cAAevB,KAAKwB,iBAAiBC,KAAKzB,OAC/EA,KAAK0B,SAAW1B,KAAKqB,eAAeM,WAAWC,MAAMF,IACnD1B,KAAK0B,SAAWA,CAAQ,G,CAI5B1B,KAAKC,c,CAGP,oBAAA4B,GACE7B,KAAKqB,eAAiBrB,KAAKL,kBAAkB2B,cAAc,iBAC3D,GAAItB,KAAKqB,eAAgB,CACvBrB,KAAKqB,eAAeS,oBAAoB,cAAe9B,KAAKwB,iB,EAKhE,gBAAAA,CAAiBrB,G,MACfH,KAAK0B,UAAWK,EAAA5B,EAAEE,OAAOO,SAAK,MAAAmB,SAAA,EAAAA,EAAI,K,CAGpC,gBAAAC,GACEhC,KAAKiC,UAAYjC,KAAKiC,SACtBjC,KAAKkC,eAAehB,KAClB,CACEiB,UAAWnC,KAAKmC,UAChBF,SAAUjC,KAAKiC,U,CAKrB,gBAAAG,G,MACEpC,KAAKqC,YAAc,KACnB,IAAI/B,EAAaN,KAAKgB,kBACtB,IAAKV,GAAcN,KAAKM,WAAWgC,OAAS,EAAG,CAC7ChC,EAAaN,KAAKM,WAAW,E,CAG/B,MAAMiC,EAAU,CACdJ,UAAWnC,KAAKmC,UAChBE,YAAarC,KAAKqC,YAClBX,UAAUK,EAAA/B,KAAK0B,YAAQ,MAAAK,SAAA,EAAAA,EAAI,KAC3BlB,UAAWP,IAAU,MAAVA,SAAU,EAAVA,EAAc,MAE3BN,KAAKwC,iBAAiBtB,KAAKqB,GAE3BE,YAAW,KACTzC,KAAKqC,YAAc,KAAK,GACvB,I,CAGL,WAAAK,GACE1C,KAAK2C,iBAAmB,KACxB3C,KAAK4C,mBAAmB1B,KACtB,CACEiB,UAAWnC,KAAKmC,UAChBQ,iBAAkB3C,KAAK2C,kB,CAK7B,YAAA1C,G,MACE,IAAI4C,GAASd,EAAAe,SAASC,gBAAgBC,QAAI,MAAAjB,SAAA,EAAAA,EAAI,QAC9C,GAAIc,EAAOP,QAAU,EAAG,CACtBO,EAAS,GAAGA,KAAUA,EAAOI,e,CAI/BjD,KAAKkD,eAAiBlD,KAAKH,MAAMsD,eAAeN,EAAQ,CAAEO,sBAAuB,EAAGC,sBAAuB,IAC3GrD,KAAKsD,mBAAqBtD,KAAKF,UAAUqD,eAAeN,EAAQ,CAC9DO,sBAAuB,EACvBC,sBAAuB,G,CAI3B,MAAAE,GACE,MAAMC,EAAkBxD,KAAKyD,gBAAkBzD,KAAK0D,OAAS,gBAAkB,GAC/E,MAAMC,EAAgB3D,KAAK4D,iBAAmB5D,KAAK0D,OAAS,WAAa,GACzE,MAAMG,EAAe7D,KAAK8D,WAAa,kBAAoB,GAC3D,MAAMC,EAAkB/D,KAAKgE,SAAW,kBAAoB,GAC5D,MAAMC,EAAWjE,KAAK0D,OAAS,UAAY,GAE3C,SAASQ,EAAkBrE,EAAeC,GACxC,MAAMqE,GAAatE,EAAQC,GAAaD,EAAS,IACjD,OAAOsE,EAASC,QAAQ,E,CAG1B,OACEC,EAACC,EAAI,MACDtE,KAAK0D,QAAU1D,KAAKuE,MACpBF,EAAA,cAAYG,MAAO,GAAGhB,KAAmBG,IAAiBc,QAASzE,KAAK0E,WAAYC,UAAU,QAClFC,MAAO5E,KAAKuE,QAAuB,IAE/CvE,KAAK0D,QAAU1D,KAAK6E,YACpBR,EAAA,eAAaS,QAAS,IAAM9E,KAAKgC,mBAAoBwC,MAAO,YAAYhB,KAAmBG,IACjFc,QAASzE,KAAKiC,SAAW,UAAY,UAAW8C,KAAK,QAAQC,KAAI,KAACC,SAAQ,MACpFZ,EAAA,aAAWa,KAAK,SAASC,KAAK,QAAQC,SAAUpF,KAAKiC,SAAW,QAAU,QAChE8C,KAAK,YAGf/E,KAAKqF,mBAAqBhB,EAAA,OAAKG,MAAM,YACnCH,EAAA,QAAMc,KAAK,cACJ,KAGXd,EAAA,OAAKG,MAAO,SAASb,KAAiBH,KAAmBS,KACvDI,EAAA,KAAGiB,KAAMtF,KAAKuF,MACZlB,EAAA,UAAQG,MAAO,UAAUT,MACtB/D,KAAKwF,MAAQxF,KAAKyF,SAAWpB,EAAA,OAAKG,MAAM,gBAAgBkB,IAAK1F,KAAKwF,IAAKG,IAAK3F,KAAK4F,SAAiB,GAClG5F,KAAKgE,WAAahE,KAAKyF,SACtBpB,EAAA,OAAKG,MAAM,kBAAkBkB,IAAK1F,KAAKgE,SAAU2B,IAAK3F,KAAK6F,cAAsB,IAEpF7F,KAAKyF,WAAazF,KAAKwF,IACtBnB,EAAA,SAAOyB,SAAQ,MACbzB,EAAA,UAAQqB,IAAK1F,KAAKyF,SAAUM,KAAK,cACjC1B,EAAA,UAAQqB,IAAK1F,KAAKyF,SAAUM,KAAK,cACjC1B,EAAA,UAAQqB,IAAK1F,KAAKyF,SAAUM,KAAK,gBACxB,KAEb/F,KAAK0D,OACLW,EAAA,OAAKG,MAAO,oBAAoBxE,KAAKqC,aAAe,KAAO,wBAA0B,MACnFgC,EAAA,eAAaiB,KAAMtF,KAAKgG,gBAAiBvB,QAAQ,QAAQO,KAAI,MAC3DX,EAAA,aAAWa,KAAK,SAASC,KAAK,UAC9Bd,EAAA,gBAAQrE,KAAKiG,iBAAgB,OAG/B,MAGFjG,KAAK0D,QAAU1D,KAAK4D,iBAAmB5D,KAAKkG,iBAC5C7B,EAAA,OAAKG,MAAM,kBACTH,EAAA,eAAaI,QAAQ,YAAYM,KAAK,QAAQoB,KAAI,KAAClB,SAAQ,KAACH,QAAS,IAAM9E,KAAKoC,oBAC9EiC,EAAA,aAAWa,KAAK,SAASC,KAAK,gBAAgBC,SAAS,cAGzD,IAGFpF,KAAK0D,QAAU1D,KAAK4D,gBAAkB5D,KAAKkG,iBAC3C7B,EAAA,OAAKG,MAAM,kBACPH,EAAA,QAAMc,KAAK,iBAEb,IAINd,EAAA,OAAKG,MAAO,WAAWhB,KAAmBG,KAAiBM,KACzDI,EAAA,OAAKG,MAAO,QAAQhB,KAAmBG,KAAiBM,KACtDI,EAAA,WACEA,EAAA,OAAKG,MAAM,QACTH,EAAA,KAAGiB,KAAMtF,KAAKuF,KAAMf,MAAM,WAAWxE,KAAKoG,cACxCpG,KAAK0D,QAAU1D,KAAKqG,SAAWhC,EAAA,OAAKG,MAAM,YAAYxE,KAAKqG,UAAkB,MAGhFrG,KAAKH,MACJwE,EAAA,OAAKG,MAAO,SAASP,MACjBjE,KAAK0D,QAAU1D,KAAKF,WAAaE,KAAKF,UAAYE,KAAKH,MACvDwE,EAAA,OAAKG,MAAM,mBAAiB,IAAGN,EAAkBlE,KAAKH,MAAOG,KAAKF,WAAU,MAC1E,MAEFE,KAAK0D,OACLW,EAAA,OAAKG,MAAO,kBAAkBxE,KAAKF,WAAaE,KAAKF,UAAYE,KAAKH,MAAQ,OAAS,MACpFG,KAAKsG,SAAUtG,KAAKkD,gBAGvBmB,EAAA,OAAKG,MAAO,kBACTxE,KAAKsG,SAAUtG,KAAKF,WAAaE,KAAKF,UAAYE,KAAKH,MAAQG,KAAKsD,mBAAqBtD,KAAKkD,iBAIjGlD,KAAK0D,QAAU1D,KAAKF,WAAaE,KAAKF,UAAYE,KAAKH,MACvDwE,EAAA,OAAKG,MAAM,eAAexE,KAAKsG,SAAUtG,KAAKsD,oBAC5C,MAEJ,OAGJtD,KAAK0D,OACLW,EAAA,WACGrE,KAAKM,WAAWgC,QAAU,EACzB+B,EAAA,OAAKG,MAAM,oBACPH,EAAA,UACEkC,IAAMC,GAAQxG,KAAKW,kBAAoB6F,EACvCC,SAAU,KACRzG,KAAKS,qBAAqB,GAG3BT,KAAKM,WACHoG,QAAQ7F,IAAeA,EAAU8F,SACjCC,KAAK/F,GACJwD,EAAA,UAAQzD,MAAOC,EAAUE,MAAOF,EAAU+D,WAIpD,KACFP,EAAA,QAAMc,KAAK,cAEb,MAIJd,EAAA,OAAKG,MAAO,UAAUX,KAAgBL,KAAmBG,KAAiBM,KAEvEjE,KAAK8D,aAAe9D,KAAK0D,OACxBW,EAAA,OAAKG,MAAM,cAAcxE,KAAK6G,eAAiB7G,KAAK6G,eAAiB,YAAoB,GAE1F7G,KAAK8D,WACJO,EAAA,eAAaI,QAASzE,KAAK8G,eAAgB/B,KAAK,QAAQC,KAAI,KAACF,QAAS,IAAM9E,KAAK0C,eAC/E2B,EAAA,aAAWa,KAAK,SAASC,KAAK,OAAOC,SAAS,UAAUL,KAAK,UAC5D/E,KAAK+G,iBACS,IAGjB/G,KAAK8D,aAAe9D,KAAK4D,iBAAmB5D,KAAKkG,iBACjD7B,EAAA,eAAaI,QAASzE,KAAK8G,eAAgB/B,KAAK,QAAQC,KAAI,KAACF,QAAS,IAAM9E,KAAKoC,oBAC/EiC,EAAA,aAAWa,KAAK,SAASC,KAAK,gBAAgBC,SAAS,UAAUL,KAAK,UACrE/E,KAAKgH,eACS,IAGjBhH,KAAK8D,aAAe9D,KAAK4D,gBAAkB5D,KAAKkG,iBAC9C7B,EAAA,QAAMc,KAAK,gBACX,O"}
@@ -322,6 +322,24 @@
322
322
  "value": ""
323
323
  },
324
324
  "attributes": [
325
+ {
326
+ "name": "add-to-cart-color",
327
+ "description": "Indicates the variant of the button",
328
+ "values": [
329
+ {
330
+ "name": "neutral"
331
+ },
332
+ {
333
+ "name": "primary"
334
+ },
335
+ {
336
+ "name": "secondary"
337
+ },
338
+ {
339
+ "name": "white"
340
+ }
341
+ ]
342
+ },
325
343
  {
326
344
  "name": "add-to-cart-text",
327
345
  "description": "Indicates the button class of the add to cart / notification button"
@@ -338,6 +356,30 @@
338
356
  "name": "badge",
339
357
  "description": "Indicates the badge of the card"
340
358
  },
359
+ {
360
+ "name": "badge-color",
361
+ "description": "Indicates the variant of the button",
362
+ "values": [
363
+ {
364
+ "name": "danger"
365
+ },
366
+ {
367
+ "name": "neutral"
368
+ },
369
+ {
370
+ "name": "primary"
371
+ },
372
+ {
373
+ "name": "secondary"
374
+ },
375
+ {
376
+ "name": "success"
377
+ },
378
+ {
379
+ "name": "warning"
380
+ }
381
+ ]
382
+ },
341
383
  {
342
384
  "name": "currency",
343
385
  "description": "Indicates the currency of the card"
@@ -350,10 +392,6 @@
350
392
  "name": "favorite",
351
393
  "description": "Indicates if the product is favorite"
352
394
  },
353
- {
354
- "name": "favorite-href",
355
- "description": "Indicates if the favorite button is render as an anchor, and define the url"
356
- },
357
395
  {
358
396
  "name": "has-background",
359
397
  "description": "Indicate if card has background"
@@ -362,6 +400,10 @@
362
400
  "name": "has-favorite",
363
401
  "description": "Indicate if the whislist is active in shop"
364
402
  },
403
+ {
404
+ "name": "has-slot-add-to-cart",
405
+ "description": "Indicate if the add to cart btn will be slotted"
406
+ },
365
407
  {
366
408
  "name": "has-slot-for-favorite",
367
409
  "description": "Indicate if the whislist will be slotted"
@@ -20,8 +20,8 @@ export declare class JumpCardEcommerce {
20
20
  hasFavorite: boolean;
21
21
  /** Indicate if the whislist will be slotted*/
22
22
  hasSlotForFavorite: boolean;
23
- /** Indicates if the favorite button is render as an anchor, and define the url*/
24
- favoriteHref: string;
23
+ /** Indicate if the add to cart btn will be slotted*/
24
+ hasSlotAddToCart: boolean;
25
25
  /** Indicates the link of the card*/
26
26
  link: string;
27
27
  /** Indicates the image's src of the card*/
@@ -50,6 +50,10 @@ export declare class JumpCardEcommerce {
50
50
  salePrice: number;
51
51
  /** Indicates the currency of the card */
52
52
  currency: string;
53
+ /** Indicates the variant of the button */
54
+ addToCartColor: 'primary' | 'secondary' | 'white' | 'neutral';
55
+ /** Indicates the variant of the button */
56
+ badgeColor: 'primary' | 'secondary' | 'neutral' | 'warning' | 'success' | 'danger';
53
57
  /** Indicates if the product is outOfStock */
54
58
  outOfStock: boolean;
55
59
  /** Indicates the outOfStockText of the product*/
@@ -27,11 +27,6 @@ declare const _default: {
27
27
  description: string;
28
28
  control: string;
29
29
  };
30
- favoriteHref: {
31
- name: string;
32
- description: string;
33
- control: string;
34
- };
35
30
  hasSlotForFavorite: {
36
31
  name: string;
37
32
  description: string;
@@ -125,18 +120,36 @@ declare const _default: {
125
120
  description: string;
126
121
  control: string;
127
122
  };
128
- outOfStock: {
123
+ addToCartText: {
124
+ name: string;
125
+ description: string;
126
+ control: string;
127
+ };
128
+ addToCartColor: {
129
+ name: string;
130
+ description: string;
131
+ control: string;
132
+ options: string[];
133
+ };
134
+ hasSlotAddToCart: {
129
135
  name: string;
130
136
  description: string;
131
137
  control: string;
132
138
  defaultValue: boolean;
133
139
  };
134
- outOfStockText: {
140
+ badgeColor: {
135
141
  name: string;
136
142
  description: string;
137
143
  control: string;
144
+ options: string[];
138
145
  };
139
- addToCartText: {
146
+ outOfStock: {
147
+ name: string;
148
+ description: string;
149
+ control: string;
150
+ defaultValue: boolean;
151
+ };
152
+ outOfStockText: {
140
153
  name: string;
141
154
  description: string;
142
155
  control: string;
@@ -153,6 +153,10 @@ export namespace Components {
153
153
  "videoSrc": string;
154
154
  }
155
155
  interface JumpCardEcommerce {
156
+ /**
157
+ * Indicates the variant of the button
158
+ */
159
+ "addToCartColor": 'primary' | 'secondary'|'white'|'neutral';
156
160
  /**
157
161
  * Indicates the button class of the add to cart / notification button
158
162
  */
@@ -169,6 +173,10 @@ export namespace Components {
169
173
  * Indicates the badge of the card
170
174
  */
171
175
  "badge": string;
176
+ /**
177
+ * Indicates the variant of the button
178
+ */
179
+ "badgeColor": 'primary' | 'secondary' | 'neutral' | 'warning' | 'success' | 'danger';
172
180
  /**
173
181
  * Indicates the currency of the card
174
182
  */
@@ -178,10 +186,6 @@ export namespace Components {
178
186
  * Indicates if the product is favorite
179
187
  */
180
188
  "favorite": boolean;
181
- /**
182
- * Indicates if the favorite button is render as an anchor, and define the url
183
- */
184
- "favoriteHref": string;
185
189
  /**
186
190
  * Indicate if card has background
187
191
  */
@@ -190,6 +194,10 @@ export namespace Components {
190
194
  * Indicate if the whislist is active in shop
191
195
  */
192
196
  "hasFavorite": boolean;
197
+ /**
198
+ * Indicate if the add to cart btn will be slotted
199
+ */
200
+ "hasSlotAddToCart": boolean;
193
201
  /**
194
202
  * Indicate if the whislist will be slotted
195
203
  */
@@ -943,6 +951,10 @@ declare namespace LocalJSX {
943
951
  "videoSrc"?: string;
944
952
  }
945
953
  interface JumpCardEcommerce {
954
+ /**
955
+ * Indicates the variant of the button
956
+ */
957
+ "addToCartColor"?: 'primary' | 'secondary'|'white'|'neutral';
946
958
  /**
947
959
  * Indicates the button class of the add to cart / notification button
948
960
  */
@@ -959,6 +971,10 @@ declare namespace LocalJSX {
959
971
  * Indicates the badge of the card
960
972
  */
961
973
  "badge"?: string;
974
+ /**
975
+ * Indicates the variant of the button
976
+ */
977
+ "badgeColor"?: 'primary' | 'secondary' | 'neutral' | 'warning' | 'success' | 'danger';
962
978
  /**
963
979
  * Indicates the currency of the card
964
980
  */
@@ -968,10 +984,6 @@ declare namespace LocalJSX {
968
984
  * Indicates if the product is favorite
969
985
  */
970
986
  "favorite"?: boolean;
971
- /**
972
- * Indicates if the favorite button is render as an anchor, and define the url
973
- */
974
- "favoriteHref"?: string;
975
987
  /**
976
988
  * Indicate if card has background
977
989
  */
@@ -980,6 +992,10 @@ declare namespace LocalJSX {
980
992
  * Indicate if the whislist is active in shop
981
993
  */
982
994
  "hasFavorite"?: boolean;
995
+ /**
996
+ * Indicate if the add to cart btn will be slotted
997
+ */
998
+ "hasSlotAddToCart"?: boolean;
983
999
  /**
984
1000
  * Indicate if the whislist will be slotted
985
1001
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jumpgroup/jump-design-system",
3
- "version": "0.3.47",
3
+ "version": "0.3.50",
4
4
  "description": "Stencil Component Starter",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1,2 +0,0 @@
1
- import{r as t,c as i,h as s,H as e,g as a}from"./p-1c5db8d3.js";const o=":host{--card-max-width:450px;--jump-card-max-width-horizontal:100%;--jump-card-color:var(--neutral-grey-primary);--jump-card-background:transparent;--jump-card-border-color:var(--neutral-grey-background);--jump-card-padding:0.5rem;max-width:var(--card-max-width);overflow:hidden;display:flex;flex-direction:column;position:relative;width:100%;font-family:var(--ff-primary, \"Arial\"), sans-serif;line-height:var(--lh-400, 1.3);background-color:var(--jump-card-background);color:var(--jump-card-color)}:host .Footer,:host .Body{display:flex;width:100%}:host jump-badge{position:absolute;top:1rem;left:1rem;z-index:2}:host jump-badge.hasBackground.iconOnly{top:calc(1rem + 8px);left:calc(1rem + 8px)}:host .Favorite{position:absolute;top:1rem;right:1rem;z-index:2}:host .Favorite.hasBackground.iconOnly{top:calc(1rem + 8px);right:calc(1rem + 8px)}:host .Media{overflow:hidden;position:relative;border-radius:3px;aspect-ratio:1/1}:host .Media .Images{height:100%;margin:0;position:relative}:host .Media .Images img{height:100%;width:100%;object-fit:cover;position:absolute;top:0;left:0;overflow:hidden}:host .Media .Images__Front{z-index:1;transition:opacity 0.5s linear;cursor:pointer}:host .Media .Images.has-hover-image:hover .Images__Front{opacity:0}:host .Media.hasBackground{background-color:var(--neutral-white)}:host .Media.hasBackground.iconOnly{border-top-left-radius:6px;border-top-right-radius:6px;padding:var(--jump-card-padding) var(--jump-card-padding) 0}:host .Media.hasBackground.iconOnly img{border-radius:6px}:host .Media.iconOnly{border-bottom-right-radius:0}:host .Media.is-mini{max-width:180px}:host .NotificationCart{display:none;position:absolute;bottom:0px;width:100%;padding:2rem 1rem;background-color:hsla(0, 0%, 0%, 0.35);box-sizing:border-box;z-index:2;transform:translate3d(0, 0, 0)}:host .NotificationCart.is-active{display:flex;align-items:center;justify-content:center}:host .Content.hasBackground{background-color:var(--neutral-white);padding:calc(var(--jump-card-padding) * 2)}:host .Content.iconOnly{padding:calc(var(--jump-card-padding) * 2) var(--jump-card-padding)}:host .Content.is-mini{max-width:180px}:host .Body{display:flex;flex-direction:column;gap:0.75rem;padding:var(--jump-card-padding) 0}:host .Body>*{display:flex;flex-direction:row;justify-content:space-between}:host .Body>*>*{flex:0 1 auto}:host .Body.hasBackground{padding:0 0 var(--jump-card-padding)}:host .Body.iconOnly{padding:0}:host .Body.is-mini{padding:calc(var(--jump-card-padding) / 2) 0}:host .Body.is-mini>*{flex-direction:column}:host .Product{font-size:var(--fs-400)}:host .Subtitle{font-size:var(--fs-300);color:var(--neutral-grey-secondary);line-height:1.2}:host .Footer{line-height:var(--lh-400);justify-content:end;padding:var(--jump-card-padding) 0;align-items:flex-end}:host .Footer.justify-between{justify-content:space-between}:host .Footer.hasBackground{padding-bottom:0}:host .Footer.iconOnly{padding:0}:host .Footer.is-mini{padding:calc(var(--jump-card-padding) / 2) 0}:host .OutOfStock{justify-items:start;font-size:var(--fs-300);font-weight:var(--fw-900);color:var(--status-danger-standard)}:host .OnlyIconButton{position:absolute;bottom:0;right:0;background:var(--neutral-white);border-top-left-radius:20px;padding:8px 8px 0px 8px;z-index:2}:host .Price{position:relative;display:grid;grid-template-columns:auto auto;grid-template-rows:1.5rem 1.5rem auto;justify-items:end;align-items:end;column-gap:0.5rem;font-size:var(--fs-500);font-weight:var(--fw-900);line-height:var(--lh-400)}:host .Price>*{display:inline-flex}:host .Price__Regular{text-align:right}:host .Price__Regular.sale{text-decoration:line-through;color:var(--neutral-grey-secondary);font-weight:var(--fw-400);font-size:var(--fs-400);grid-column:2;grid-row:1}:host .Price__Sale{grid-column:2;grid-row:2}:host .Price__Discount{color:var(--status-danger-standard);font-weight:var(--fw-400);font-size:var(--fs-300);grid-column:1;grid-row:1}:host .Price.is-mini{display:flex;font-size:var(--fs-400)}:host .SelectVariations select{appearance:none;background-color:transparent;border:1px solid var(--neutral-grey-secondary);border-radius:3px;color:var(--neutral-grey-secondary);font-size:var(--fs-300);padding:0.5rem 0.75rem;max-width:100%;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");background-position:right 0.5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact}.slide-in-bottom{animation:slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both}.slide-out-bottom{animation:slide-out-bottom 0.5s cubic-bezier(0.55, 0.085, 0.68, 0.53) both}.fade-in-out{animation-name:fade-in-out;animation-duration:6s;animation-timing-function:ease-in-out}@keyframes fade-in-out{from{opacity:0;transform:translateY(100px)}50%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100px)}}";const n=o;const r=class{constructor(s){t(this,s);this.toggleFavorite=i(this,"jump-toggle-favorite",7);this.productAddToCart=i(this,"jump-add-to-cart",7);this.productWaitingList=i(this,"jump-add-to-waiting-list",7);this.variationSelected=i(this,"jump-variation-selected",7);this.onlyIconButton=false;this.hasBackground=false;this.badge=undefined;this.favorite=false;this.hasFavorite=false;this.hasSlotForFavorite=false;this.favoriteHref=undefined;this.link=undefined;this.img=undefined;this.imgAlt=undefined;this.hoverImg=undefined;this.hoverImgAlt=undefined;this.videoSrc=undefined;this.notificationUrl=undefined;this.notificationText="";this.productName=undefined;this.subtitle=undefined;this.productId=undefined;this.price=undefined;this.salePrice=undefined;this.currency="€";this.outOfStock=false;this.outOfStockText=undefined;this.addToCartText=undefined;this.waitingListText=undefined;this.addToWaitingList=false;this.isMini=false;this.addedToCart=false;this.endAddedToCart=false;this.variations=[];this.selectedVariation=undefined;this.priceFormatted=undefined;this.salePriceFormatted=undefined}async setPrice(t,i){let s=false;if(t&&t>0){s=true;this.price=t}if(i&&i>0){this.salePrice=i}if(s){this.formatPrices()}}addOption(t){let i=t.detail;this.variations=[...this.variations,Object.assign({},i)]}onVariationSelected(){let t=this.variationSelectEl.value;let i=this.variations.find((i=>i.code==t));this.selectedVariation=i;this.variationSelected.emit(i)}componentWillLoad(){}componentDidLoad(){this.jumpQuantityEl=this.JumpCardEcommerce.querySelector("jump-quantity");if(this.jumpQuantityEl){this.jumpQuantityEl.addEventListener("jump-change",this.onQuantityChange.bind(this));this.quantity=this.jumpQuantityEl.getValue().then((t=>{this.quantity=t}))}this.formatPrices()}disconnectedCallback(){this.jumpQuantityEl=this.JumpCardEcommerce.querySelector("jump-quantity");if(this.jumpQuantityEl){this.jumpQuantityEl.removeEventListener("jump-change",this.onQuantityChange)}}onQuantityChange(t){var i;this.quantity=(i=t.detail.value)!==null&&i!==void 0?i:false}onToggleFavorite(){this.favorite=!this.favorite;this.toggleFavorite.emit({productId:this.productId,favorite:this.favorite})}addProductToCart(){var t;this.addedToCart=true;let i=this.selectedVariation;if(!i&&this.variations.length>0){i=this.variations[0]}const s={productId:this.productId,addedToCart:this.addedToCart,quantity:(t=this.quantity)!==null&&t!==void 0?t:null,variation:i!==null&&i!==void 0?i:null};this.productAddToCart.emit(s);setTimeout((()=>{this.addedToCart=false}),6e3)}waitingList(){this.addToWaitingList=true;this.productWaitingList.emit({productId:this.productId,addToWaitingList:this.addToWaitingList})}formatPrices(){var t;let i=(t=document.documentElement.lang)!==null&&t!==void 0?t:"it-IT";if(i.length==2){i=`${i}-${i.toUpperCase()}`}this.priceFormatted=this.price.toLocaleString(i,{minimumFractionDigits:2,maximumFractionDigits:2});this.salePriceFormatted=this.salePrice.toLocaleString(i,{minimumFractionDigits:2,maximumFractionDigits:2})}render(){const t=this.hasBackground&&!this.isMini?"hasBackground":"";const i=this.onlyIconButton&&!this.isMini?"iconOnly":"";const a=this.outOfStock?"justify-between":"";const o=this.hoverImg?"has-hover-image":"";const n=this.isMini?"is-mini":"";function r(t,i){const s=(t-i)/t*100;return s.toFixed(0)}return s(e,null,!this.isMini&&this.badge?s("jump-badge",{class:`${t} ${i}`,variant:"secondary",dimension:"small",label:this.badge}):"",!this.isMini&&this.hasFavorite?this.favoriteHref!=""?s("jump-button",{href:this.favoriteHref,onClick:()=>this.onToggleFavorite(),class:`Favorite ${t} ${i}`,variant:this.favorite?"primary":"neutral",size:"small",text:true,onlyIcon:true},s("jump-icon",{slot:"prefix",name:"heart",category:this.favorite?"solid":"light",size:"medium"})):s("jump-button",{onClick:()=>this.onToggleFavorite(),class:`Favorite ${t} ${i}`,variant:this.favorite?"primary":"neutral",size:"small",text:true,onlyIcon:true},s("jump-icon",{slot:"prefix",name:"heart",category:this.favorite?"solid":"light",size:"medium"})):this.hasSlotForFavorite?s("div",{class:"Favorite"},s("slot",{name:"favorite"})):null,s("div",{class:`Media ${i} ${t} ${n}`},s("a",{href:this.link},s("figure",{class:`Images ${o} `},this.img&&!this.videoSrc?s("img",{class:"Images__Front",src:this.img,alt:this.imgAlt}):"",this.hoverImg&&!this.videoSrc?s("img",{class:"Images__OnHover",src:this.hoverImg,alt:this.hoverImgAlt}):""),this.videoSrc&&!this.img?s("video",{autoplay:true},s("source",{src:this.videoSrc,type:"video/mp4"}),s("source",{src:this.videoSrc,type:"video/mov"}),s("source",{src:this.videoSrc,type:"video/webm"})):""),!this.isMini?s("div",{class:`NotificationCart ${this.addedToCart==true?"is-active fade-in-out":""}`},s("jump-button",{href:this.notificationUrl,variant:"white",text:true},s("jump-icon",{slot:"prefix",name:"check"}),s("span",null," ",this.notificationText," "))):null,!this.isMini&&this.onlyIconButton?s("div",{class:"OnlyIconButton"},s("jump-button",{variant:"secondary",size:"large",pill:true,onlyIcon:true,onClick:()=>this.addProductToCart()},s("jump-icon",{slot:"prefix",name:"cart-shopping",category:"regular"}))):""),s("div",{class:`Content ${t} ${i} ${n}`},s("div",{class:`Body ${t} ${i} ${n}`},s("div",null,s("div",{class:"Info"},s("div",{class:"Product"},this.productName),!this.isMini&&this.subtitle?s("div",{class:"Subtitle"},this.subtitle):null),this.price?s("div",{class:`Price ${n}`},!this.isMini&&this.salePrice&&this.salePrice<this.price?s("div",{class:"Price__Discount"}," ",r(this.price,this.salePrice),"% "):null,!this.isMini?s("div",{class:`Price__Regular ${this.salePrice&&this.salePrice<this.price?"sale":""}`},this.currency,this.priceFormatted):s("div",{class:`Price__Regular`},this.currency,this.salePrice&&this.salePrice<this.price?this.salePriceFormatted:this.priceFormatted),!this.isMini&&this.salePrice&&this.salePrice<this.price?s("div",{class:"Price__Sale"},this.currency,this.salePriceFormatted):null):null),!this.isMini?s("div",{class:"SelectVariations"},this.variations.length!=0?s("select",{ref:t=>this.variationSelectEl=t,onChange:()=>{this.onVariationSelected()}},this.variations.filter((t=>!t.imgUrl)).map((t=>s("option",{value:t.code},t.label)))):null):null,!this.isMini?s("slot",{name:"quantity"}):null),s("div",{class:`Footer ${a} ${t} ${i} ${n}`},this.outOfStock?s("div",{class:"OutOfStock"},this.outOfStockText?this.outOfStockText:"Esaurito"):"",this.outOfStock?s("jump-button",{variant:"secondary",size:"small",text:true,onClick:()=>this.waitingList()},s("jump-icon",{slot:"prefix",name:!this.outOfStock?"cart-shopping":"bell",category:"regular",size:"small"}),this.waitingListText?this.waitingListText:"Notifica disponibilità"):"",!this.outOfStock&&!this.onlyIconButton?s("jump-button",{variant:"secondary",size:"small",text:true,onClick:()=>this.addProductToCart()},s("jump-icon",{slot:"prefix",name:!this.outOfStock?"cart-shopping":"bell",category:"regular",size:"small"}),this.addToCartText?this.addToCartText:"Aggiungi al carrello"):"")))}get JumpCardEcommerce(){return a(this)}};r.style=n;export{r as jump_card_ecommerce};
2
- //# sourceMappingURL=p-24cac36a.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["jumpCardEcommerceCss","JumpCardEcommerceStyle0","JumpCardEcommerce","setPrice","price","salePrice","shouldFormat","this","formatPrices","addOption","e","props","detail","variations","Object","assign","onVariationSelected","currentValue","variationSelectEl","value","variation","find","code","selectedVariation","variationSelected","emit","componentWillLoad","componentDidLoad","jumpQuantityEl","querySelector","addEventListener","onQuantityChange","bind","quantity","getValue","then","disconnectedCallback","removeEventListener","_a","onToggleFavorite","favorite","toggleFavorite","productId","addProductToCart","addedToCart","length","payload","productAddToCart","setTimeout","waitingList","addToWaitingList","productWaitingList","locale","document","documentElement","lang","toUpperCase","priceFormatted","toLocaleString","minimumFractionDigits","maximumFractionDigits","salePriceFormatted","render","backgroundClass","hasBackground","isMini","iconOnlyClass","onlyIconButton","justifyClass","outOfStock","hasImageOnHover","hoverImg","miniCard","calculateDiscount","discount","toFixed","h","Host","badge","class","variant","dimension","label","hasFavorite","favoriteHref","href","onClick","size","text","onlyIcon","slot","name","category","hasSlotForFavorite","link","img","videoSrc","src","alt","imgAlt","hoverImgAlt","autoplay","type","notificationUrl","notificationText","pill","productName","subtitle","currency","ref","el","onChange","filter","imgUrl","map","outOfStockText","waitingListText","addToCartText"],"sources":["src/components/jump-card-ecommerce/jump-card-ecommerce.scss?tag=jump-card-ecommerce&encapsulation=shadow","src/components/jump-card-ecommerce/jump-card-ecommerce.tsx"],"sourcesContent":[":host {\n --card-max-width: 450px;\n --jump-card-max-width-horizontal: 100%;\n --jump-card-color: var(--neutral-grey-primary);\n --jump-card-background: transparent;\n --jump-card-border-color: var(--neutral-grey-background);\n --jump-card-padding: 0.5rem;\n\n max-width: var(--card-max-width);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n font-family: var(--ff-primary, 'Arial'), sans-serif;\n line-height: var(--lh-400, 1.3);\n background-color: var(--jump-card-background);\n color: var(--jump-card-color);\n\n .Footer,\n .Body {\n display: flex;\n width: 100%;\n }\n\n jump-badge {\n position: absolute;\n top: 1rem;\n left: 1rem;\n z-index: 2;\n\n &.hasBackground.iconOnly {\n top: calc(1rem + 8px);\n left: calc(1rem + 8px);\n }\n }\n\n .Favorite {\n position: absolute;\n top: 1rem;\n right: 1rem;\n z-index: 2;\n\n &.hasBackground.iconOnly {\n top: calc(1rem + 8px);\n right: calc(1rem + 8px);\n }\n }\n\n .Media {\n // aspect-ratio: 3/4;\n overflow: hidden;\n position: relative;\n border-radius: 3px;\n aspect-ratio: 1/1;\n\n .Images {\n height: 100%;\n margin: 0;\n position: relative;\n\n img {\n height: 100%;\n width: 100%;\n object-fit: cover;\n position: absolute;\n top: 0;\n left: 0;\n overflow: hidden;\n }\n\n &__Front {\n z-index: 1;\n transition: opacity 0.5s linear;\n cursor: pointer;\n }\n\n &.has-hover-image {\n &:hover .Images__Front {\n opacity: 0;\n }\n }\n }\n\n &.hasBackground {\n background-color: var(--neutral-white);\n\n &.iconOnly {\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n padding: var(--jump-card-padding) var(--jump-card-padding) 0;\n\n img {\n border-radius: 6px;\n }\n }\n }\n\n &.iconOnly {\n border-bottom-right-radius: 0;\n }\n\n &.is-mini {\n max-width: 180px;\n }\n }\n\n .NotificationCart {\n display: none;\n position: absolute;\n bottom: 0px;\n width: 100%;\n padding: 2rem 1rem;\n background-color: hsl(0 0% 0% / 35%);\n box-sizing: border-box;\n z-index: 2;\n transform: translate3d(0, 0, 0);\n\n &.is-active {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n .Content {\n &.hasBackground {\n background-color: var(--neutral-white);\n padding: calc(var(--jump-card-padding) * 2);\n }\n\n &.iconOnly {\n padding: calc(var(--jump-card-padding) * 2) var(--jump-card-padding);\n }\n\n &.is-mini {\n max-width: 180px;\n }\n }\n\n .Body {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: var(--jump-card-padding) 0;\n\n & > * {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n & > * {\n flex: 0 1 auto;\n }\n }\n\n &.hasBackground {\n padding: 0 0 var(--jump-card-padding);\n }\n\n &.iconOnly {\n padding: 0;\n }\n\n &.is-mini {\n & > * {\n flex-direction: column;\n }\n\n padding: calc(var(--jump-card-padding) / 2) 0;\n }\n }\n\n .Product {\n font-size: var(--fs-400);\n }\n\n .Subtitle {\n font-size: var(--fs-300);\n color: var(--neutral-grey-secondary);\n line-height: 1.2;\n }\n\n .Footer {\n line-height: var(--lh-400);\n justify-content: end;\n padding: var(--jump-card-padding) 0;\n align-items: flex-end;\n\n &.justify-between {\n justify-content: space-between;\n }\n\n &.hasBackground {\n padding-bottom: 0;\n }\n\n &.iconOnly {\n padding: 0;\n }\n\n &.is-mini {\n padding: calc(var(--jump-card-padding) / 2) 0;\n }\n }\n\n .OutOfStock {\n justify-items: start;\n font-size: var(--fs-300);\n font-weight: var(--fw-900);\n color: var(--status-danger-standard);\n }\n\n .OnlyIconButton {\n position: absolute;\n bottom: 0;\n right: 0;\n background: var(--neutral-white);\n border-top-left-radius: 20px;\n padding: 8px 8px 0px 8px;\n z-index: 2;\n }\n\n .Price {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n grid-template-rows: 1.5rem 1.5rem auto;\n justify-items: end;\n align-items: end;\n column-gap: 0.5rem;\n\n font-size: var(--fs-500);\n font-weight: var(--fw-900);\n line-height: var(--lh-400);\n\n & > * {\n display: inline-flex;\n }\n\n &__Regular {\n text-align: right;\n\n &.sale {\n text-decoration: line-through;\n color: var(--neutral-grey-secondary);\n font-weight: var(--fw-400);\n font-size: var(--fs-400);\n grid-column: 2;\n grid-row: 1;\n }\n }\n\n &__Sale {\n grid-column: 2;\n grid-row: 2;\n }\n\n &__Discount {\n color: var(--status-danger-standard);\n font-weight: var(--fw-400);\n font-size: var(--fs-300);\n grid-column: 1;\n grid-row: 1;\n }\n\n &.is-mini {\n display: flex;\n font-size: var(--fs-400);\n }\n }\n\n .SelectVariations {\n select {\n appearance: none;\n background-color: transparent;\n border: 1px solid var(--neutral-grey-secondary);\n border-radius: 3px;\n color: var(--neutral-grey-secondary);\n font-size: var(--fs-300);\n padding: 0.5rem 0.75rem;\n max-width: 100%;\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n padding-right: 2.5rem;\n -webkit-print-color-adjust: exact;\n }\n }\n}\n\n.slide-in-bottom {\n animation: slide-in-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;\n}\n\n.slide-out-bottom {\n animation: slide-out-bottom 0.5s cubic-bezier(0.55, 0.085, 0.68, 0.53) both;\n}\n\n.fade-in-out {\n animation-name: fade-in-out;\n animation-duration: 6s;\n animation-timing-function: ease-in-out;\n}\n\n@keyframes fade-in-out {\n from {\n opacity: 0;\n transform: translateY(100px);\n }\n\n 50% {\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n opacity: 0;\n transform: translateY(100px);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, Element, State, Listen, Method } from '@stencil/core';\n\ninterface Variation {\n code: string;\n imgUrl: string;\n label: string;\n taxonomy: string;\n // Add more keys as needed\n}\n\n@Component({\n tag: 'jump-card-ecommerce',\n styleUrl: 'jump-card-ecommerce.scss',\n shadow: true,\n})\nexport class JumpCardEcommerce {\n\n @Element() JumpCardEcommerce: HTMLElement;\n jumpQuantityEl;\n\n /* ---------------------- @PROPERTIES ------------------------- */\n\n /** Indicate if card has only icon button*/\n @Prop() onlyIconButton: boolean = false;\n\n /** Indicate if card has background*/\n @Prop() hasBackground: boolean = false;\n\n /** Indicates the badge of the card*/\n @Prop() badge: string;\n\n /** Indicates if the product is favorite */\n\n @Prop({ mutable: true, reflect: true }) favorite: boolean = false;\n\n /** Indicate if the whislist is active in shop*/\n @Prop() hasFavorite: boolean = false;\n\n /** Indicate if the whislist will be slotted*/\n @Prop() hasSlotForFavorite: boolean = false;\n\n /** Indicates if the favorite button is render as an anchor, and define the url*/\n @Prop() favoriteHref: string;\n\n /** Indicates the link of the card*/\n @Prop() link: string;\n\n /** Indicates the image's src of the card*/\n @Prop() img: string;\n\n /** Indicates the img's alt of the card*/\n @Prop() imgAlt: string;\n\n /** Indicates the over image's src of the card*/\n @Prop() hoverImg: string;\n\n /** Indicates the hover img's alt of the card*/\n @Prop() hoverImgAlt: string;\n\n /** Indicates the videoSrc of the card*/\n @Prop() videoSrc: string;\n\n /** Indicates the notificationUrl of the card*/\n @Prop() notificationUrl: string;\n\n /** Indicates the notificationText of the card*/\n @Prop() notificationText: string = '';\n\n /** Indicates the title of the card*/\n @Prop() productName: string;\n\n /** Indicates the subtitle of the card*/\n @Prop() subtitle: string;\n\n /** Indicates the ID of the product, can be also a SKU*/\n @Prop() productId: string;\n\n /** Indicates the price of the card */\n @Prop() price: number;\n\n /** Indicates the sale price of the card */\n @Prop() salePrice: number;\n\n /** Indicates the currency of the card */\n @Prop() currency: string = '€';\n\n /** Indicates if the product is outOfStock */\n @Prop({ mutable: true, reflect: true }) outOfStock: boolean = false;\n\n /** Indicates the outOfStockText of the product*/\n @Prop() outOfStockText: string;\n\n /** Indicates the button class of the add to cart / notification button */\n @Prop() addToCartText: string;\n\n /** Indicates the button class of the add to cart / notification button */\n @Prop() waitingListText: string;\n\n /** Indicate if the user request to be notified when te product is avaible*/\n @Prop() addToWaitingList: boolean = false;\n\n /** Indicate if the card is Mini Card*/\n @Prop() isMini: boolean = false;\n\n /* ---------------------- @STATE ------------------------- */\n\n /** Indicate if the product is added to cart --> non deve esserci nelle storie! */\n @Prop() addedToCart: boolean = false;\n\n @Prop() endAddedToCart: boolean = false;\n\n @State() variations: Variation[] = [];\n\n @State() selectedVariation: Variation;\n\n @State() priceFormatted: string;\n\n @State() salePriceFormatted: string;\n\n // è una proprietà che viene cambiata solo da dentro\n quantity: number;\n\n variationSelectEl: HTMLSelectElement;\n\n /* ---------------------- @EVENTS ------------------------- */\n\n @Event({ eventName: 'jump-toggle-favorite' }) toggleFavorite: EventEmitter;\n\n @Event({ eventName: 'jump-add-to-cart' }) productAddToCart: EventEmitter;\n\n @Event({ eventName: 'jump-add-to-waiting-list' }) productWaitingList: EventEmitter;\n\n @Event({ eventName: 'jump-variation-selected' }) variationSelected: EventEmitter; // verificare se corretto: aggiungo un evento\n\n /**\n * Set the price of the product\n * @param price\n * @param salePrice\n */\n @Method()\n async setPrice(price: number, salePrice: number) {\n let shouldFormat = false;\n if (price && price > 0) {\n shouldFormat = true;\n this.price = price;\n }\n\n if (salePrice && salePrice > 0) {\n this.salePrice = salePrice;\n }\n\n if (shouldFormat) {\n this.formatPrices();\n }\n }\n\n @Listen('jump-card-ecommerce-option-connected')\n addOption(e) {\n let props = e.detail; // es {code: 'sku1', imageUrl: 'https://google.com/'}\n this.variations = [...this.variations, { ...props }];\n }\n\n onVariationSelected() {\n let currentValue = this.variationSelectEl.value;\n let variation = this.variations.find(\n (variation) => variation.code == currentValue,\n );\n this.selectedVariation = variation;\n this.variationSelected.emit(variation); // verificare se corretto: emetto l'evento\n }\n\n\n /* ---------------------- @LIFECYCLE ------------------------- */\n\n componentWillLoad() {\n }\n\n componentDidLoad() {\n this.jumpQuantityEl = this.JumpCardEcommerce.querySelector('jump-quantity');\n\n if (this.jumpQuantityEl) {\n this.jumpQuantityEl.addEventListener('jump-change', this.onQuantityChange.bind(this));\n this.quantity = this.jumpQuantityEl.getValue().then((quantity) => {\n this.quantity = quantity;\n });\n }\n\n this.formatPrices();\n }\n\n disconnectedCallback() {\n this.jumpQuantityEl = this.JumpCardEcommerce.querySelector('jump-quantity');\n if (this.jumpQuantityEl) {\n this.jumpQuantityEl.removeEventListener('jump-change', this.onQuantityChange);\n }\n }\n\n /* ---------------------- @METHODS ------------------------- */\n onQuantityChange(e) {\n this.quantity = e.detail.value ?? false;\n }\n\n onToggleFavorite() {\n this.favorite = !this.favorite;\n this.toggleFavorite.emit(\n {\n productId: this.productId,\n favorite: this.favorite,\n },\n );\n }\n\n addProductToCart() {\n this.addedToCart = true;\n let variations = this.selectedVariation;\n if (!variations && this.variations.length > 0) {\n variations = this.variations[0];\n }\n\n const payload = {\n productId: this.productId,\n addedToCart: this.addedToCart,\n quantity: this.quantity ?? null,\n variation: variations ?? null,\n };\n this.productAddToCart.emit(payload);\n\n setTimeout(() => {\n this.addedToCart = false;\n }, 6000);\n }\n\n waitingList() {\n this.addToWaitingList = true;\n this.productWaitingList.emit(\n {\n productId: this.productId,\n addToWaitingList: this.addToWaitingList,\n },\n );\n }\n\n formatPrices() {\n let locale = document.documentElement.lang ?? 'it-IT';\n if (locale.length == 2) {\n locale = `${locale}-${locale.toUpperCase()}`;\n }\n\n // Format price with 2 decimal digits and in locale\n this.priceFormatted = this.price.toLocaleString(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n this.salePriceFormatted = this.salePrice.toLocaleString(locale, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n }\n\n render() {\n const backgroundClass = this.hasBackground && !this.isMini ? 'hasBackground' : '';\n const iconOnlyClass = this.onlyIconButton && !this.isMini ? 'iconOnly' : '';\n const justifyClass = this.outOfStock ? 'justify-between' : '';\n const hasImageOnHover = this.hoverImg ? 'has-hover-image' : '';\n const miniCard = this.isMini ? 'is-mini' : '';\n\n function calculateDiscount(price: number, salePrice: number): string {\n const discount = ((price - salePrice) / price) * 100;\n return discount.toFixed(0);\n };\n\n return (\n <Host>\n {!this.isMini && this.badge ?\n <jump-badge class={`${backgroundClass} ${iconOnlyClass}`} variant=\"secondary\" dimension=\"small\"\n label={this.badge}></jump-badge> : ''}\n\n {!this.isMini && this.hasFavorite ?\n this.favoriteHref != '' ?\n <jump-button href={this.favoriteHref} onClick={() => this.onToggleFavorite()}\n class={`Favorite ${backgroundClass} ${iconOnlyClass}`}\n variant={this.favorite ? 'primary' : 'neutral'} size=\"small\" text onlyIcon>\n <jump-icon slot=\"prefix\" name=\"heart\" category={this.favorite ? 'solid' : 'light'}\n size=\"medium\"></jump-icon>\n </jump-button>\n :\n <jump-button onClick={() => this.onToggleFavorite()} class={`Favorite ${backgroundClass} ${iconOnlyClass}`}\n variant={this.favorite ? 'primary' : 'neutral'} size=\"small\" text onlyIcon>\n <jump-icon slot=\"prefix\" name=\"heart\" category={this.favorite ? 'solid' : 'light'}\n size=\"medium\"></jump-icon>\n </jump-button>\n :\n this.hasSlotForFavorite ? <div class=\"Favorite\">\n <slot name=\"favorite\"></slot>\n </div> : null\n }\n\n <div class={`Media ${iconOnlyClass} ${backgroundClass} ${miniCard}`}>\n <a href={this.link}>\n <figure class={`Images ${hasImageOnHover} `}>\n {this.img && !this.videoSrc ? <img class=\"Images__Front\" src={this.img} alt={this.imgAlt}></img> : ''}\n {this.hoverImg && !this.videoSrc ?\n <img class=\"Images__OnHover\" src={this.hoverImg} alt={this.hoverImgAlt}></img> : ''}\n </figure>\n {this.videoSrc && !this.img ?\n <video autoplay>\n <source src={this.videoSrc} type=\"video/mp4\" />\n <source src={this.videoSrc} type=\"video/mov\" />\n <source src={this.videoSrc} type=\"video/webm\" />\n </video> : ''}\n </a>\n {!this.isMini ?\n <div class={`NotificationCart ${this.addedToCart == true ? 'is-active fade-in-out' : ''}`}>\n <jump-button href={this.notificationUrl} variant=\"white\" text>\n <jump-icon slot=\"prefix\" name=\"check\"></jump-icon>\n <span> {this.notificationText} </span>\n </jump-button>\n </div>\n : null}\n {!this.isMini && this.onlyIconButton ?\n <div class=\"OnlyIconButton\">\n <jump-button variant=\"secondary\" size=\"large\" pill onlyIcon onClick={() => this.addProductToCart()}>\n <jump-icon slot=\"prefix\" name=\"cart-shopping\" category=\"regular\"></jump-icon>\n </jump-button>\n </div>\n : ''\n }\n </div>\n\n <div class={`Content ${backgroundClass} ${iconOnlyClass} ${miniCard}`}>\n <div class={`Body ${backgroundClass} ${iconOnlyClass} ${miniCard}`}>\n <div>\n <div class=\"Info\">\n <div class=\"Product\">{this.productName}</div>\n {!this.isMini && this.subtitle ? <div class=\"Subtitle\">{this.subtitle}</div> : null}\n </div>\n\n {this.price ?\n <div class={`Price ${miniCard}`}>\n {!this.isMini && this.salePrice && this.salePrice < this.price ?\n <div class=\"Price__Discount\"> {calculateDiscount(this.price, this.salePrice)}% </div>\n : null}\n\n {!this.isMini ?\n <div class={`Price__Regular ${this.salePrice && this.salePrice < this.price ? 'sale' : ''}`}>\n {this.currency}{this.priceFormatted}\n </div>\n :\n <div class={`Price__Regular`}>\n {this.currency}{this.salePrice && this.salePrice < this.price ? this.salePriceFormatted : this.priceFormatted}\n </div>\n }\n\n {!this.isMini && this.salePrice && this.salePrice < this.price ?\n <div class=\"Price__Sale\">{this.currency}{this.salePriceFormatted}</div>\n : null}\n </div>\n : null}\n </div>\n\n {!this.isMini ?\n <div class=\"SelectVariations\">\n {this.variations.length != 0 ?\n <select\n ref={(el) => (this.variationSelectEl = el)} //salvo questo elemento in this.variationSelectEl\n onChange={() => {\n this.onVariationSelected();\n }}\n >\n {this.variations\n .filter((variation) => !variation.imgUrl)\n .map((variation) => (\n <option value={variation.code}>{variation.label}</option>\n ))}\n </select>\n : null}\n </div>\n : null}\n\n {!this.isMini ? <slot name=\"quantity\"></slot> : null}\n </div>\n\n <div class={`Footer ${justifyClass} ${backgroundClass} ${iconOnlyClass} ${miniCard}`}>\n\n {this.outOfStock ?\n <div class=\"OutOfStock\">{this.outOfStockText ? this.outOfStockText : 'Esaurito'}</div> : ''}\n\n {this.outOfStock ?\n <jump-button variant=\"secondary\" size=\"small\" text onClick={() => this.waitingList()}>\n <jump-icon slot=\"prefix\" name={!this.outOfStock ? 'cart-shopping' : 'bell'} category=\"regular\"\n size=\"small\"></jump-icon>\n {this.waitingListText ? this.waitingListText : 'Notifica disponibilità'}\n </jump-button> : ''\n }\n\n {!this.outOfStock && !this.onlyIconButton ?\n <jump-button variant=\"secondary\" size=\"small\" text onClick={() => this.addProductToCart()}>\n <jump-icon slot=\"prefix\" name={!this.outOfStock ? 'cart-shopping' : 'bell'} category=\"regular\"\n size=\"small\"></jump-icon>\n {this.addToCartText ? this.addToCartText : 'Aggiungi al carrello'}\n </jump-button> : ''\n }\n\n </div>\n\n </div>\n </Host>\n );\n }\n\n}\n"],"mappings":"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"}