@jumpgroup/jump-design-system 1.0.20 → 1.0.22

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 (51) hide show
  1. package/dist/cjs/jump-badge.cjs.entry.js +6 -2
  2. package/dist/cjs/jump-badge.cjs.entry.js.map +1 -1
  3. package/dist/cjs/jump-card-ecommerce.cjs.entry.js +2 -1
  4. package/dist/cjs/jump-card-ecommerce.cjs.entry.js.map +1 -1
  5. package/dist/cjs/jump-design-system.cjs.js +1 -1
  6. package/dist/cjs/jump-filter.cjs.entry.js +1 -1
  7. package/dist/cjs/jump-filter.cjs.entry.js.map +1 -1
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/collection/components/jump-badge/jump-badge.css +11 -0
  10. package/dist/collection/components/jump-badge/jump-badge.js +25 -3
  11. package/dist/collection/components/jump-badge/jump-badge.js.map +1 -1
  12. package/dist/collection/components/jump-badge/jump-badge.stories.js +7 -0
  13. package/dist/collection/components/jump-badge/jump-badge.stories.js.map +1 -1
  14. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.js +22 -3
  15. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.js.map +1 -1
  16. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.stories.js +8 -0
  17. package/dist/collection/components/jump-card-ecommerce/jump-card-ecommerce.stories.js.map +1 -1
  18. package/dist/collection/components/jump-filter/jump-filter.css +2 -0
  19. package/dist/components/jump-badge2.js +8 -3
  20. package/dist/components/jump-badge2.js.map +1 -1
  21. package/dist/components/jump-card-ecommerce.js +3 -1
  22. package/dist/components/jump-card-ecommerce.js.map +1 -1
  23. package/dist/components/jump-filter.js +1 -1
  24. package/dist/components/jump-filter.js.map +1 -1
  25. package/dist/esm/jump-badge.entry.js +6 -2
  26. package/dist/esm/jump-badge.entry.js.map +1 -1
  27. package/dist/esm/jump-card-ecommerce.entry.js +2 -1
  28. package/dist/esm/jump-card-ecommerce.entry.js.map +1 -1
  29. package/dist/esm/jump-design-system.js +1 -1
  30. package/dist/esm/jump-filter.entry.js +1 -1
  31. package/dist/esm/jump-filter.entry.js.map +1 -1
  32. package/dist/esm/loader.js +1 -1
  33. package/dist/jump-design-system/jump-design-system.esm.js +1 -1
  34. package/dist/jump-design-system/jump-design-system.esm.js.map +1 -1
  35. package/dist/jump-design-system/p-14141071.entry.js +2 -0
  36. package/dist/jump-design-system/p-14141071.entry.js.map +1 -0
  37. package/dist/jump-design-system/{p-6ce30870.entry.js → p-be188dd4.entry.js} +2 -2
  38. package/dist/jump-design-system/p-be188dd4.entry.js.map +1 -0
  39. package/dist/jump-design-system/{p-6d82feb3.entry.js → p-d663236e.entry.js} +2 -2
  40. package/dist/jump-design-system/p-d663236e.entry.js.map +1 -0
  41. package/dist/jump-design-system-elements.json +14 -0
  42. package/dist/types/components/jump-badge/jump-badge.d.ts +5 -1
  43. package/dist/types/components/jump-badge/jump-badge.stories.d.ts +9 -0
  44. package/dist/types/components/jump-card-ecommerce/jump-card-ecommerce.d.ts +3 -1
  45. package/dist/types/components/jump-card-ecommerce/jump-card-ecommerce.stories.d.ts +10 -0
  46. package/dist/types/components.d.ts +20 -4
  47. package/package.json +1 -1
  48. package/dist/jump-design-system/p-5def5339.entry.js +0 -2
  49. package/dist/jump-design-system/p-5def5339.entry.js.map +0 -1
  50. package/dist/jump-design-system/p-6ce30870.entry.js.map +0 -1
  51. package/dist/jump-design-system/p-6d82feb3.entry.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{r as e,h as a,H as i}from"./p-98d5dd1f.js";const r=":host{--primary-standard:var(--secondary-hard, #435171);--jump-button-background-hover:red;--jump-filter-close-btn-bg:white;--bg-drawer:var(--bg-drawer, #fff);--header-height:var(--header-height, 80px);--drawer-width:var(--drawer-width, 240px);--overlay-bg-color:var(--overlay-bg-color, rgba(0, 0, 0, 0.35))}:host h3{margin:0}.filtersDrawer__overlay{position:fixed;top:50%;left:50%;transform:translate(-50%, -50%);background-color:var(--overlay-bg-color, rgba(0, 0, 0, 0.35));z-index:1;width:100vw;height:100vh;display:none;opacity:0;transition:opacity 0.3s ease-in-out}.filtersDrawer__overlay.filtersDrawer__overlay--active{display:block}.filtersDrawer__overlay.filtersDrawer__overlay--active{opacity:1}.filtersDrawer{position:fixed;display:flex;flex-direction:column;gap:2.5rem;left:-100vw;top:0;height:-webkit-fill-available;max-height:calc(100vh - var(--header-height));transition:0.3s all ease-in-out;background-color:var(--bg-drawer, #fff);padding:1rem;width:100%;max-width:var(--drawer-width);box-shadow:8px 0 15px 0 rgba(0, 0, 0, 0.1490196078);z-index:2;overflow:auto}.filtersDrawer[aria-hidden=false]{left:0;right:0;width:auto;transition:0.3s all ease-in-out}.filtersDrawer[aria-hidden=false] .filtersDrawer__close{position:fixed;top:calc(var(--header-height) + 0rem);left:calc(var(--drawer-width) + 2rem);background-color:var(--jump-filter-close-btn-bg, white);padding:0.5rem;box-shadow:8px 0 15px 0 rgba(0, 0, 0, 0.1490196078)}@media (min-width: 768px){.filtersDrawer{position:relative;left:0;height:auto;max-width:initial;max-height:initial;box-shadow:none}}@media (max-width: 767px){.filtersDrawer{top:var(--header-height)}}.filtersDrawer .filtersDrawer__header{display:flex;justify-content:flex-start;align-items:center;gap:0.5rem}";const t=r;const s=class{constructor(a){e(this,a);this.direction="vertical";this.filterHeading="Filtra per";this.filterButtonLabel="Filtri";this.filterButtonIcon="sliders";this.mobileThreshold=768;this.filters=undefined;this.showCount=false;this.offCanvasOverlay=false;this.activeFilters=0;this.showMobileFilters=false;this.isMobile=false;this.offCanvasClasses="filtersDrawer__overlay"}filterChangeHandler(e){this.filters=Object.assign(Object.assign({},this.filters),{[e.detail.name]:e.detail.values});console.log("Received the custom filterChange event: ",this.filters)}handleResize(){this.isMobile=window.innerWidth<this.mobileThreshold}watchHandler(e,a){var i,r,t,s;if(e!==a){if(e){(i=this.mobileToggle)===null||i===void 0?void 0:i.setAttribute("aria-expanded","true");(r=this.filtersDrawer)===null||r===void 0?void 0:r.setAttribute("aria-hidden","false");this.offCanvasClasses="filtersDrawer__overlay filtersDrawer__overlay--active"}else{(t=this.mobileToggle)===null||t===void 0?void 0:t.setAttribute("aria-expanded","false");(s=this.filtersDrawer)===null||s===void 0?void 0:s.setAttribute("aria-hidden","true");this.offCanvasClasses="filtersDrawer__overlay"}}}async getFilters(){return this.filters}componentDidLoad(){this.handleResize()}render(){return a(i,{key:"a6887d6f754cdba0e3ec854c0e553d4805c62c63",mobileFilters:this.showMobileFilters},this.isMobile&&a("jump-button",{key:"0194221f6ba4be2f547d8b6495f94c9d716e8be1",ref:e=>{this.mobileToggle=e},buttonId:this.filterButtonIcon,variant:"primary",outline:true,onClick:()=>this.showMobileFilters=!this.showMobileFilters},a("slot",{key:"5b60281b75d958d605c97b69be6576f177538740",name:"prefix"},this.filterButtonIcon&&a("jump-icon",{key:"c85beb03fd5132192bfa5f2d83c1e5cec64c4f4e",library:"fa",category:"regular",name:this.filterButtonIcon,size:"small"}),this.filterButtonLabel),a("slot",{key:"9bf612b73c9c0d69172ed6caff94e1f34541c539",name:"suffix"},this.activeFilters>0&&a("jump-badge",{key:"8c01c39288672210dc546ecb72fa7ef4d9c60bef",label:this.activeFilters.toString(),variant:"success",soft:true,dimension:"dot"},"1"))),this.offCanvasOverlay&&a("div",{key:"b588e7ab489541c92a04df32ad40a5c31238451a",class:this.offCanvasClasses,onClick:()=>this.showMobileFilters=false}),a("div",{key:"af8c4b52c7a87461e98a63d2040999b179c6c372",ref:e=>{this.filtersDrawer=e},class:"filtersDrawer","data-variant":this.direction},!this.isMobile&&a("div",{key:"fde6a476ff39c470b91030a2ea00c73392a7644d",class:"filtersDrawer__header"},a("jump-icon",{key:"4173961bcb0943d9de12c853968e503917bf6063",class:"small",name:this.filterButtonIcon}),a("h3",{key:"c7e1982a2805e714acab2d9ca5ba3a3c8b925e6e"},this.filterHeading)),this.isMobile&&a("jump-icon",{key:"c4cf8592159c2168ef96a38863f11f3ff9becdfd",library:"lucide",name:"x",size:"medium",label:"",class:"filtersDrawer__close",onClick:()=>this.showMobileFilters=false}),a("slot",{key:"e78555090e26aab2ea4d72f3db0c3175062796f8"})))}static get watchers(){return{showMobileFilters:["watchHandler"]}}};s.style=t;export{s as jump_filter};
2
- //# sourceMappingURL=p-5def5339.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["jumpFilterCss","JumpFilterStyle0","JumpFilter","filterChangeHandler","event","this","filters","Object","assign","detail","name","values","console","log","handleResize","isMobile","window","innerWidth","mobileThreshold","watchHandler","newValue","oldValue","_a","mobileToggle","setAttribute","_b","filtersDrawer","offCanvasClasses","_c","_d","getFilters","componentDidLoad","render","h","Host","key","mobileFilters","showMobileFilters","ref","el","buttonId","filterButtonIcon","variant","outline","onClick","library","category","size","filterButtonLabel","activeFilters","label","toString","soft","dimension","offCanvasOverlay","class","direction","filterHeading"],"sources":["src/components/jump-filter/jump-filter.scss?tag=jump-filter&encapsulation=shadow","src/components/jump-filter/jump-filter.tsx"],"sourcesContent":[":host {\n --primary-standard: var(--secondary-hard, #435171);\n //--jump-button-background-hover: var(--secondary-hard, #435171);\n --jump-button-background-hover: red;\n --jump-filter-close-btn-bg: white;\n --bg-drawer: var(--bg-drawer, #fff);\n --header-height: var(--header-height, 80px);\n --drawer-width: var(--drawer-width, 240px);\n --overlay-bg-color: var(--overlay-bg-color, rgba(0, 0, 0, 0.35));\n\n h3 {\n margin: 0;\n }\n}\n\n@mixin fade-in-out($duration: 0.3s, $ease: ease-in-out) {\n opacity: 0;\n transition: opacity $duration $ease;\n\n &.filtersDrawer__overlay--active {\n opacity: 1;\n }\n}\n\n.filtersDrawer__overlay {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--overlay-bg-color, rgba(0, 0, 0, 0.35));\n z-index: 1;\n width: 100vw;\n height: 100vh;\n display: none;\n\n &.filtersDrawer__overlay--active {\n display: block;\n }\n\n @include fade-in-out();\n}\n\n.filtersDrawer {\n position: fixed;\n display: flex;\n flex-direction: column;\n gap: 2.5rem;\n left: -100vw;\n top: 0;\n height: -webkit-fill-available;\n max-height: calc(100vh - var(--header-height));\n transition: 0.3s all ease-in-out;\n background-color: var(--bg-drawer, #fff);\n padding: 1rem;\n width: 100%;\n max-width: var(--drawer-width);\n box-shadow: 8px 0 15px 0 #00000026;\n z-index: 2;\n overflow: auto;\n\n &[aria-hidden=\"false\"] {\n left: 0;\n right: 0;\n width: auto;\n transition: 0.3s all ease-in-out;\n\n .filtersDrawer__close {\n position: fixed;\n top: calc(var(--header-height) + 0rem);\n left: calc(var(--drawer-width) + 2rem);\n background-color: var(--jump-filter-close-btn-bg, white);\n padding: 0.5rem;\n box-shadow: 8px 0 15px 0 #00000026;\n }\n }\n\n @media (min-width: 768px) { //md breakpoint tailwind\n position: relative;\n left: 0;\n height: auto;\n max-width: initial;\n max-height: initial;\n box-shadow: none;\n }\n\n @media (max-width: 767px) {\n top: var(--header-height);\n }\n\n .filtersDrawer__header {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n gap: 0.5rem;\n }\n}\n","import { Component, Host, Prop, h, State, Listen, Method, Watch } from '@stencil/core';\n\n@Component({\n tag: 'jump-filter',\n styleUrl: 'jump-filter.scss',\n shadow: true,\n})\nexport class JumpFilter {\n\n @Prop() direction: 'horizontal' | 'vertical' = 'vertical';\n @Prop() filterHeading: string = 'Filtra per';\n @Prop() filterButtonLabel: string = 'Filtri';\n @Prop() filterButtonIcon: string = 'sliders';\n @Prop() mobileThreshold: number = 768;\n @Prop() filters: any;\n @Prop() showCount: boolean = false;\n @Prop() offCanvasOverlay: boolean = false;\n\n @State() activeFilters: number = 0;\n @State() showMobileFilters: boolean = false;\n @State() isMobile: boolean = false;\n @State() offCanvasClasses: string = 'filtersDrawer__overlay';\n\n mobileToggle: HTMLElement | null;\n filtersDrawer: HTMLElement;\n\n @Listen('jump-filterchange')\n filterChangeHandler(event: CustomEvent) {\n //set this.filter as this.filters[event.detail.name] = event.detail.value; even if not present\n this.filters = { ...this.filters, [event.detail.name]: event.detail.values };\n console.log('Received the custom filterChange event: ', this.filters);\n\n\n //TODO: increment this.activeFilters\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n this.isMobile = window.innerWidth < this.mobileThreshold;\n }\n\n @Watch('showMobileFilters')\n watchHandler(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n if (newValue) {\n this.mobileToggle?.setAttribute('aria-expanded', 'true');\n this.filtersDrawer?.setAttribute('aria-hidden', 'false');\n this.offCanvasClasses = 'filtersDrawer__overlay filtersDrawer__overlay--active';\n } else {\n this.mobileToggle?.setAttribute('aria-expanded', 'false');\n this.filtersDrawer?.setAttribute('aria-hidden', 'true');\n this.offCanvasClasses = 'filtersDrawer__overlay';\n }\n }\n }\n\n /**\n * Get the active filters from the component\n */\n @Method()\n async getFilters() {\n return this.filters;\n }\n\n componentDidLoad() {\n this.handleResize();\n }\n\n render() {\n return (\n <Host mobileFilters={this.showMobileFilters}>\n {this.isMobile && <jump-button\n ref={(el) => {\n this.mobileToggle = el;\n }}\n buttonId={this.filterButtonIcon} variant={'primary'} outline\n onClick={() => this.showMobileFilters = !this.showMobileFilters}>\n <slot name=\"prefix\">\n {this.filterButtonIcon &&\n <jump-icon library=\"fa\" category=\"regular\" name={this.filterButtonIcon} size=\"small\"></jump-icon>}\n {this.filterButtonLabel}\n </slot>\n <slot name=\"suffix\">\n {this.activeFilters > 0 &&\n <jump-badge label={this.activeFilters.toString()} variant=\"success\" soft dimension=\"dot\">1</jump-badge>}\n </slot>\n </jump-button>}\n\n {this.offCanvasOverlay &&\n <div class={this.offCanvasClasses}\n onClick={() => this.showMobileFilters = false}></div>}\n\n {<div\n ref={(el) => {\n this.filtersDrawer = el;\n }}\n class=\"filtersDrawer\" data-variant={this.direction}>\n {!this.isMobile &&\n <div class={'filtersDrawer__header'}>\n <jump-icon class=\"small\" name={this.filterButtonIcon}></jump-icon>\n <h3>{this.filterHeading}</h3>\n </div>}\n {this.isMobile && <jump-icon library=\"lucide\" name=\"x\" size=\"medium\" label=\"\" class={'filtersDrawer__close'}\n onClick={() => this.showMobileFilters = false}></jump-icon>}\n <slot></slot>\n </div>}\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAgB,otDACtB,MAAAC,EAAeD,E,MCMFE,EAAU,M,wCAE0B,W,mBACf,a,uBACI,S,sBACD,U,qBACD,I,sCAEL,M,sBACO,M,mBAEH,E,uBACK,M,cACT,M,sBACO,wB,CAMpC,mBAAAC,CAAoBC,GAElBC,KAAKC,QAAOC,OAAAC,OAAAD,OAAAC,OAAA,GAAQH,KAAKC,SAAO,CAAE,CAACF,EAAMK,OAAOC,MAAON,EAAMK,OAAOE,SACpEC,QAAQC,IAAI,2CAA4CR,KAAKC,Q,CAO/D,YAAAQ,GACET,KAAKU,SAAWC,OAAOC,WAAaZ,KAAKa,e,CAI3C,YAAAC,CAAaC,EAAmBC,G,YAC9B,GAAID,IAAaC,EAAU,CACzB,GAAID,EAAU,EACZE,EAAAjB,KAAKkB,gBAAY,MAAAD,SAAA,SAAAA,EAAEE,aAAa,gBAAiB,SACjDC,EAAApB,KAAKqB,iBAAa,MAAAD,SAAA,SAAAA,EAAED,aAAa,cAAe,SAChDnB,KAAKsB,iBAAmB,uD,KACnB,EACLC,EAAAvB,KAAKkB,gBAAY,MAAAK,SAAA,SAAAA,EAAEJ,aAAa,gBAAiB,UACjDK,EAAAxB,KAAKqB,iBAAa,MAAAG,SAAA,SAAAA,EAAEL,aAAa,cAAe,QAChDnB,KAAKsB,iBAAmB,wB,GAS9B,gBAAMG,GACJ,OAAOzB,KAAKC,O,CAGd,gBAAAyB,GACE1B,KAAKS,c,CAGP,MAAAkB,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,cAAe/B,KAAKgC,mBACvBhC,KAAKU,UAAYkB,EAAA,eAAAE,IAAA,2CAChBG,IAAMC,IACJlC,KAAKkB,aAAegB,CAAE,EAExBC,SAAUnC,KAAKoC,iBAAkBC,QAAS,UAAWC,QAAO,KAC5DC,QAAS,IAAMvC,KAAKgC,mBAAqBhC,KAAKgC,mBAC9CJ,EAAA,QAAAE,IAAA,2CAAMzB,KAAK,UACRL,KAAKoC,kBACJR,EAAA,aAAAE,IAAA,2CAAWU,QAAQ,KAAKC,SAAS,UAAUpC,KAAML,KAAKoC,iBAAkBM,KAAK,UAC9E1C,KAAK2C,mBAERf,EAAA,QAAAE,IAAA,2CAAMzB,KAAK,UACRL,KAAK4C,cAAgB,GACpBhB,EAAA,cAAAE,IAAA,2CAAYe,MAAO7C,KAAK4C,cAAcE,WAAYT,QAAQ,UAAUU,KAAI,KAACC,UAAU,OAAK,OAI7FhD,KAAKiD,kBACJrB,EAAA,OAAAE,IAAA,2CAAKoB,MAAOlD,KAAKsB,iBACZiB,QAAS,IAAMvC,KAAKgC,kBAAoB,QAE9CJ,EAAA,OAAAE,IAAA,2CACCG,IAAMC,IACJlC,KAAKqB,cAAgBa,CAAE,EAEzBgB,MAAM,gBAAe,eAAelD,KAAKmD,YACvCnD,KAAKU,UACLkB,EAAA,OAAAE,IAAA,2CAAKoB,MAAO,yBACVtB,EAAA,aAAAE,IAAA,2CAAWoB,MAAM,QAAQ7C,KAAML,KAAKoC,mBACpCR,EAAA,MAAAE,IAAA,4CAAK9B,KAAKoD,gBAEbpD,KAAKU,UAAYkB,EAAA,aAAAE,IAAA,2CAAWU,QAAQ,SAASnC,KAAK,IAAIqC,KAAK,SAASG,MAAM,GAAGK,MAAO,uBACxDX,QAAS,IAAMvC,KAAKgC,kBAAoB,QACrEJ,EAAA,QAAAE,IAAA,8C"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["jumpCardEcommerceCss","JumpCardEcommerceStyle0","JumpCardEcommerce","this","handleMouseMove","e","enableZoom","imageEl","left","top","width","height","currentTarget","getBoundingClientRect","x","clientX","y","clientY","moveX","moveY","style","transform","handleMouseLeave","undefined","setPrice","price","salePrice","shouldFormat","formatPrices","forceVariationsOrder","optionsOrdered","setTimeout","selectFirstVariationIfEnabled","autoSelectFirstVariation","selectedVariation","variations","length","sortedVariations","sort","a","b","orderA","order","orderB","code","localeCompare","firstVariation","variationSelectEl","value","variationSelected","emit","selectVariation","variationCode","variation","find","v","selectFirstVariation","getSelectedVariation","addOption","props","detail","existingIndex","findIndex","Object","assign","map","i","onVariationSelected","currentValue","componentWillLoad","componentDidLoad","jumpQuantityEl","querySelector","addEventListener","onQuantityChange","bind","quantity","getValue","then","disconnectedCallback","removeEventListener","_a","onToggleFavorite","favorite","toggleFavorite","productId","goToProduct","goToProductPage","link","addProductToCart","addedToCart","payload","productAddToCart","waitingList","addToWaitingList","productWaitingList","locale","document","documentElement","lang","toUpperCase","priceFormatted","toLocaleString","minimumFractionDigits","maximumFractionDigits","salePriceFormatted","render","backgroundClass","hasBackground","isMini","iconOnlyClass","onlyIconButton","justifyClass","outOfStock","disallowAddToCart","hasImageOnHover","hoverImg","miniCard","verticalCardClass","verticalCard","enableZoomClass","calculateDiscount","discount","toFixed","h","Host","imageObjectFit","hasFavorite","onClick","class","variant","size","text","onlyIcon","slot","name","category","hasSlotForFavorite","onMouseMove","onMouseLeave","badge","badgeColor","dimension","label","showDiscountBadge","hideDiscountIfLessThreshold","parseFloat","href","img","videoSrc","src","alt","imgAlt","ref","el","hoverImgAlt","autoplay","type","notificationUrl","notificationText","hasSlotAddToCart","pill","productName","subtitle","currency","onChange","filter","imgUrl","index","key","selected","outOfStockText","waitingListButtonShow","addToCartColor","waitingListText","addToCartText","disallowAddToCartLabel"],"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 --jump-card-commerce-out-of-stock-color: var(--status-danger-standard);\n --jump-card-ecommerce-discount-color: var(--status-danger-standard);\n --image-object-fit: cover;\n --jump-card-ecommerce-hide-discover-button-visibility: block;\n --jump-card-ecommerce-discount-badge-bg-color: var(--neutral-white);\n --jump-card-ecommerce-discount-badge-text-color: var(--primary-standard);\n --jump-card-ecommerce-discount-badge-padding: 4px 12px;\n --jump-card-ecommerce-discount-badge-border-radius: 50px;\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 .DiscountBadge {\n position: absolute;\n bottom: 1rem;\n right: 0.2rem;\n z-index: 2;\n border: 2px solid var(--jump-card-ecommerce-discount-badge-text-color);\n color: var(--jump-card-ecommerce-discount-badge-text-color);\n background-color: var(--jump-card-ecommerce-discount-badge-bg-color);\n font-size: var(--fs-300);\n font-weight: var(--fw-900);\n padding: var(--jump-card-ecommerce-discount-badge-padding);\n border-radius: var(--jump-card-ecommerce-discount-badge-border-radius);\n line-height: 1.2;\n }\n\n .Footer,\n .Body {\n display: flex;\n width: 100%;\n }\n\n .Footer {\n container-type: inline-size;\n flex-direction: row;\n\n @container (max-width: 239px) {\n flex-direction: column;\n\n .OutOfStock {\n margin-bottom: 0.25rem;\n }\n\n }\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 .Media {\n container-type: inline-size;\n\n @container (max-width: 239px) {\n jump-badge {\n top: auto;\n bottom: 1rem;\n left: 0.2rem;\n right: auto;\n }\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 position: absolute;\n top: 0;\n left: 0;\n overflow: hidden;\n object-fit: var(--image-object-fit, cover);\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 &.enable-zoom {\n overflow: hidden;\n\n .Images__Front {\n transition: transform 0s ease-out;\n cursor: zoom-in;\n }\n\n &:hover {\n .Images__Front {\n transform: scale(1.5);\n }\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 container-type: inline-size;\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n\n @container (max-width: 239px) {\n flex-direction: row;\n }\n\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 container-type: inline-size;\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 .Body__Top {\n display: flex;\n flex-direction: row;\n }\n\n .Body__Bottom {\n display: flex;\n flex-direction: row;\n }\n \n &.is-vertical {\n .Body__Top {\n flex-direction: column;\n align-items: flex-start;\n \n .Subtitle {\n min-height: 3.5rem;\n }\n\n @container (max-width: 239px) {\n .Subtitle {\n min-height: 3.2rem;\n }\n }\n }\n\n .Price {\n justify-items: start;\n margin-top: 0.5rem;\n column-gap: 0;\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-start;\n }\n\n }\n\n @container (max-width: 239px) {\n .Body__Top {\n flex-direction: column;\n }\n\n .Body__Bottom {\n flex-direction: column;\n }\n\n .SelectVariations {\n max-width: 100%;\n margin-bottom: 0.5rem;\n\n select {\n width: 100%;\n }\n }\n\n .Price {\n display: flex;\n flex-direction: column-reverse;\n margin-top: 0.5rem;\n align-items: start;\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 .Subtitle:hover {\n cursor: pointer;\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 flex-grow: 1;\n display: flex;\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 &__AddToCart {\n --jump-button-color: var(--jump-card-ecommerce-add-to-cart-color);\n --jump-button-background: var(--jump-card-ecommerce-add-to-cart-background);\n --jump-button-color-hover: var(--jump-card-ecommerce-add-to-cart-color-hover);\n --jump-button-background-hover: var(--jump-card-ecommerce-add-to-cart-background-hover);\n\n &--Disallow { \n display: var(--jump-card-ecommerce-hide-discover-button-visibility);\n }\n }\n }\n\n .OutOfStock {\n justify-items: start;\n font-size: var(--fs-300);\n font-weight: var(--fw-900);\n color: var(--jump-card-commerce-out-of-stock-color);\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 margin-top: 0;\n \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(--jump-card-ecommerce-discount-color);\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 display: flex;\n align-items: flex-end;\n max-width: calc(50% - 1rem);\n margin-bottom: 0;\n\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}","import { Component, Host, h, Prop, Event, EventEmitter, Element, State, Listen, Method } from '@stencil/core';\n\nexport interface Variation {\n code: string;\n imgUrl: string;\n label: string;\n taxonomy: string;\n order?: number; // Aggiunta proprietà order\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 private imageEl: HTMLImageElement;\n\n /* ---------------------- @PROPERTIES ------------------------- */\n\n /** Indicates the threshold below which the discount will be hidden */\n @Prop() hideDiscountIfLessThreshold: number = undefined;\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 if the button to waiting list need to be shown */\n @Prop({ mutable: true, reflect: true }) waitingListButtonShow: boolean = false;\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 /** Indica se si tratta di un prodotto che può essere aggiunto al carrello solo dalla pagina prodotto */\n @Prop() disallowAddToCart: boolean = false;\n\n /** Label del pulsante che appare quando il prodotto non può essere aggiunto al carrello */\n @Prop() disallowAddToCartLabel: string = 'Scopri';\n\n /** Indica se è attivo lo zoom all'hover */\n @Prop() enableZoom: boolean = false;\n\n /** Controlla il comportamento dell'object-fit delle immagini */\n @Prop() imageObjectFit: 'cover' | 'scale-down' | 'contain' | 'fill' | 'none' = 'cover';\n\n /** Indica se selezionare automaticamente la prima variazione */\n @Prop() autoSelectFirstVariation: boolean = true;\n\n @Prop() showDiscountBadge: boolean = false;\n\n @Prop() verticalCard: 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 /** Flag per tracciare se le opzioni sono state ordinate */\n @State() optionsOrdered: boolean = false;\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 @Event({ eventName: 'jump-card-go-to-product-page' }) goToProductPage: EventEmitter;\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 /**\n * Forza l'ordinamento delle variazioni (utile per debugging o situazioni edge-case)\n */\n @Method()\n async forceVariationsOrder() {\n this.optionsOrdered = false;\n setTimeout(() => {\n this.optionsOrdered = true;\n }, 1);\n }\n\n /**\n * Seleziona automaticamente la prima variazione se abilitato e se nessuna è già selezionata\n */\n private selectFirstVariationIfEnabled() {\n if (this.autoSelectFirstVariation && !this.selectedVariation && this.variations.length > 0) {\n // Ordiniamo le variazioni per ottenere la prima\n const sortedVariations = [...this.variations].sort((a, b) => {\n const orderA = a.order || 999;\n const orderB = b.order || 999;\n \n if (orderA !== orderB) {\n return orderA - orderB;\n }\n \n return a.code.localeCompare(b.code);\n });\n \n // Selezioniamo la prima variazione\n const firstVariation = sortedVariations[0];\n this.selectedVariation = firstVariation;\n \n // Aggiorniamo anche la select se esiste\n setTimeout(() => {\n if (this.variationSelectEl) {\n this.variationSelectEl.value = firstVariation.code;\n }\n }, 50);\n \n // Emettiamo l'evento di selezione\n this.variationSelected.emit(firstVariation);\n }\n }\n\n /**\n * Seleziona una variazione specifica tramite code\n */\n @Method()\n async selectVariation(variationCode: string) {\n const variation = this.variations.find(v => v.code === variationCode);\n if (variation) {\n this.selectedVariation = variation;\n \n if (this.variationSelectEl) {\n this.variationSelectEl.value = variationCode;\n }\n \n this.variationSelected.emit(variation);\n return true;\n }\n return false;\n }\n\n /**\n * Seleziona la prima variazione disponibile\n */\n @Method()\n async selectFirstVariation() {\n if (this.variations.length > 0) {\n const sortedVariations = [...this.variations].sort((a, b) => {\n const orderA = a.order || 999;\n const orderB = b.order || 999;\n \n if (orderA !== orderB) {\n return orderA - orderB;\n }\n \n return a.code.localeCompare(b.code);\n });\n \n return await this.selectVariation(sortedVariations[0].code);\n }\n return false;\n }\n\n /**\n * Ottiene la variazione attualmente selezionata\n */\n @Method()\n async getSelectedVariation(): Promise<Variation | null> {\n return this.selectedVariation || null;\n }\n\n @Listen('jump-card-ecommerce-option-connected')\n addOption(e) {\n let props = e.detail; // es {code: 'sku1', imageUrl: 'https://google.com/', order: 1}\n \n // Aggiungiamo la nuova variazione solo se non esiste già\n const existingIndex = this.variations.findIndex(v => v.code === props.code);\n if (existingIndex === -1) {\n this.variations = [...this.variations, { ...props }];\n } else {\n // Se esiste già, la aggiorniamo\n this.variations = this.variations.map((v, i) => i === existingIndex ? { ...props } : v);\n }\n \n // Resettiamo il flag di ordinamento\n this.optionsOrdered = false;\n \n // Forziamo il re-render per applicare l'ordinamento dopo un brevissimo delay\n setTimeout(() => {\n this.optionsOrdered = true;\n // Selezioniamo automaticamente la prima variazione se abilitato\n this.selectFirstVariationIfEnabled();\n }, 10);\n }\n\n onVariationSelected() {\n let currentValue = this.variationSelectEl.value;\n \n // Ordiniamo sempre le variazioni prima di cercare quella selezionata\n const sortedVariations = [...this.variations].sort((a, b) => {\n const orderA = a.order || 999;\n const orderB = b.order || 999;\n \n if (orderA !== orderB) {\n return orderA - orderB;\n }\n \n return a.code.localeCompare(b.code);\n });\n \n let variation = sortedVariations.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\n private handleMouseMove = (e: MouseEvent) => {\n if (!this.enableZoom || !this.imageEl) return;\n\n const { left, top, width, height } = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const x = e.clientX - left;\n const y = e.clientY - top;\n\n const moveX = (x / width - 0.5) * -80; // Controlla l'ampiezza del movimento\n const moveY = (y / height - 0.5) * -80; // Controlla l'ampiezza del movimento\n\n this.imageEl.style.transform = `scale(1.5) translate(${moveX}px, ${moveY}px)`;\n };\n\n private handleMouseLeave = () => {\n if (!this.enableZoom || !this.imageEl) return;\n this.imageEl.style.transform = 'scale(1) translate(0, 0)';\n };\n\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 goToProduct(){\n this.goToProductPage.emit({\n productId: this.productId,\n link: this.link,\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\n let justifyClass;\n\n // Se outofstock è true e disallowAddToCart è true, giustifichiamo a destra\n if (this.outOfStock && this.disallowAddToCart) {\n justifyClass = 'justify-end';\n } else if (this.outOfStock) {\n justifyClass = 'justify-between';\n } else if (this.disallowAddToCart) {\n justifyClass = 'justify-end';\n } else {\n justifyClass = 'justify-end';\n }\n\n const hasImageOnHover = this.hoverImg ? 'has-hover-image' : '';\n const miniCard = this.isMini ? 'is-mini' : '';\n const verticalCardClass = this.verticalCard ? 'is-vertical' : '';\n const enableZoomClass = this.enableZoom ? 'enable-zoom' : '';\n\n // Ordiniamo sempre le variazioni al momento del render per garantire consistenza\n const sortedVariations = [...this.variations].sort((a, b) => {\n const orderA = a.order || 999;\n const orderB = b.order || 999;\n \n if (orderA !== orderB) {\n return orderA - orderB;\n }\n \n // Se order è uguale, ordina per codice alfanumericamente\n return a.code.localeCompare(b.code);\n });\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 style={{'--image-object-fit': this.imageObjectFit}}>\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\n class={`Media ${iconOnlyClass} ${backgroundClass} ${miniCard}`}\n onMouseMove={this.handleMouseMove}\n onMouseLeave={this.handleMouseLeave}\n >\n {!this.isMini && this.badge ?\n <jump-badge class={`${backgroundClass} ${iconOnlyClass}`} variant={this.badgeColor} dimension=\"small\"\n label={this.badge}></jump-badge> : ''}\n \n {/* INIZIO CODICE AGGIUNTO */}\n {this.showDiscountBadge && !this.isMini && this.salePrice && (this.salePrice < this.price) && (this.hideDiscountIfLessThreshold === undefined || parseFloat(calculateDiscount(this.price, this.salePrice)) > this.hideDiscountIfLessThreshold) ?\n <div class=\"DiscountBadge\">-{calculateDiscount(this.price, this.salePrice)}%</div>\n : null}\n {/* FINE CODICE AGGIUNTO */}\n\n <a href={this.link}>\n <figure class={`Images ${hasImageOnHover} ${enableZoomClass}`}>\n {this.img && !this.videoSrc ? <img class=\"Images__Front\" src={this.img} alt={this.imgAlt} ref={el => this.imageEl = el as HTMLImageElement}></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} ${verticalCardClass}`}>\n <div class={`Body ${backgroundClass} ${iconOnlyClass} ${miniCard} ${verticalCardClass}`}>\n <div class=\"Body__Top\">\n <div class=\"Info\">\n <a href={this.link} class=\"Product\">{this.productName}</a>\n {this.subtitle ? <div class=\"Subtitle\" onClick={() => this.goToProduct()}>{this.subtitle}</div> : null}\n </div>\n\n {this.price ?\n <div class={`Price ${miniCard}`}>\n {!this.isMini && !this.showDiscountBadge && this.salePrice && (this.salePrice < this.price) && (this.hideDiscountIfLessThreshold === undefined || parseFloat(calculateDiscount(this.price, this.salePrice)) > this.hideDiscountIfLessThreshold) ?\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 || sortedVariations.length != 0 ?\n <div class=\"Body__Bottom\">\n {(sortedVariations.length != 0 && !this.disallowAddToCart) ?\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 {sortedVariations\n .filter((variation) => !variation.imgUrl)\n .map((variation, index) => (\n <option \n key={`${variation.code}-${variation.order || 999}-${index}`} \n value={variation.code}\n selected={this.selectedVariation?.code === variation.code}\n >\n {variation.label}\n </option>\n ))}\n </select>\n </div>\n : null}\n {!this.disallowAddToCart &&\n <slot name=\"quantity\"></slot>\n }\n </div>\n : null}\n </div>\n\n <div class={`Footer ${justifyClass} ${backgroundClass} ${iconOnlyClass} ${miniCard}`}>\n\n {this.outOfStock && !this.isMini && !this.disallowAddToCart ?\n <div class=\"OutOfStock\">{this.outOfStockText ? this.outOfStockText : 'Esaurito'}</div> : ''}\n\n {this.outOfStock && this.waitingListButtonShow ?\n <jump-button class=\"Footer__AddToCart\" 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 && !this.disallowAddToCart ?\n <jump-button class=\"Footer__AddToCart\" 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\n {this.disallowAddToCart ?\n <jump-button class=\"Footer__AddToCart Footer__AddToCart--Disallow\" variant={this.addToCartColor} size=\"small\" text onClick={() => this.goToProduct()}>\n <jump-icon slot=\"suffix\" name=\"arrow-right\"></jump-icon> {this.disallowAddToCartLabel}\n </jump-button> : ''\n }\n </div>\n </div>\n </Host>\n );\n }\n\n}"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["jumpBadgeCss","JumpBadgeStyle0","AppBadge","render","h","Host","key","name","this","label"],"sources":["src/components/jump-badge/jump-badge.scss?tag=jump-badge&encapsulation=shadow","src/components/jump-badge/jump-badge.tsx"],"sourcesContent":[":host {\n --jump-badge-background: var(--primary-standard);\n --badge-color: var(--jump-badge-color, var(--neutral-white));\n --jump-badge-border-radius: 50px;\n --jump-badge-border: var(--primary-standard);\n --jump-badge-padding: 4px 12px;\n\n display: flex;\n width: fit-content;\n gap: 0.5rem;\n color: var(--badge-color);\n background-color: var(--jump-badge-background);\n align-items: center;\n justify-content: center;\n font-family: var(--ff-primary, 'Arial'), sans-serif;\n font-size: var(--fs-500);\n font-weight: var(--fw-900);\n line-height: 1.2;\n border-radius: var(--jump-badge-border-radius);\n border: solid 1px var(--jump-badge-border);\n white-space: nowrap;\n padding: var(--jump-badge-padding);\n user-select: none;\n cursor: inherit;\n}\n\n:host([variant='primary']) {\n &:host([soft]) {\n --jump-badge-background: var(--primary-soft);\n --badge-color: var(--primary-standard);\n --jump-badge-border: var(--primary-soft);\n }\n}\n\n:host([variant='secondary']) {\n --jump-badge-background: var(--secondary-standard);\n --jump-badge-border: var(--secondary-standard);\n\n &:host([soft]) {\n --jump-badge-background: var(--secondary-soft);\n --badge-color: var(--secondary-standard);\n --jump-badge-border: var(--secondary-soft);\n }\n}\n\n:host([variant='neutral']) {\n --jump-badge-background: var(--neutral-grey-secondary);\n --jump-badge-border: var(--neutral-grey-secondary);\n\n &:host([soft]) {\n --jump-badge-background: var(--neutral-grey-disabled);\n --badge-color: var(--neutral-grey-secondary);\n --jump-badge-border: var(--neutral-grey-disabled);\n }\n}\n\n:host([variant='danger']) {\n --jump-badge-background: var(--status-danger-standard);\n --jump-badge-border: var(--status-danger-standard);\n\n &:host([soft]) {\n --jump-badge-background: var(--status-danger-soft);\n --badge-color: var(--status-danger-standard);\n --jump-badge-border: var(--status-danger-soft);\n }\n}\n\n:host([variant='success']) {\n --jump-badge-background: var(--status-success-standard);\n --jump-badge-border: var(--status-success-standard);\n\n &:host([soft]) {\n --jump-badge-background: var(--status-success-soft);\n --badge-color: var(--status-success-standard);\n --jump-badge-border: var(--status-success-soft);\n }\n}\n\n:host([variant='warning']) {\n --jump-badge-background: var(--status-warning-standard);\n --jump-badge-border: var(--status-warning-standard);\n\n &:host([soft]) {\n --jump-badge-background: var(--status-warning-soft);\n --badge-color: var(--status-warning-standard);\n --jump-badge-border: var(--status-warning-soft);\n }\n}\n\n:host([dimension='small']) {\n font-size: var(--fs-300);\n}\n\n:host([dimension='dot']) {\n font-size: var(--fs-300);\n --jump-badge-padding: 0 5px;\n --jump-badge-border-radius: 50%;\n}\n\n:host([dimension='microdot']) {\n width: 0.5rem;\n height: 0.5rem;\n padding: 0;\n --jump-badge-border-radius: 50%;\n}\n\n:host([outline]) {\n background-color: var(--jump-badge-background-outline);\n border: 1px solid var(--jump-badge-background);\n color: var(--jump-badge-background);\n background-color: transparent;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'jump-badge',\n styleUrl: 'jump-badge.scss',\n shadow: true,\n})\nexport class AppBadge {\n /**\n * Indicates the label of the badge\n */\n @Prop() label: string = '';\n\n /**\n * Indicates the variant of the badge\n */\n @Prop({reflect: true}) variant: 'primary'|'secondary'|'neutral'|'warning'|'success'|'danger' = 'primary';\n\n /**\n * Indicates the variant of the badge\n */\n @Prop({reflect: true}) dimension: 'large'|'small'|'dot'|'microdot' = 'large';\n\n /**\n * Indicates the variant of the badge\n */\n @Prop({reflect: true}) soft: boolean = false;\n\n /**\n * Indicates the variant of the badge\n */\n @Prop({reflect: true}) outline: boolean = false;\n\n render() {\n return (\n <Host>\n <slot name=\"prefix\"></slot>\n {this.label}\n </Host>\n );\n }\n\n}\n"],"mappings":"kDAAA,MAAMA,EAAe,wuFACrB,MAAAC,EAAeD,E,MCMFE,EAAQ,M,oCAIK,G,aAKuE,U,eAK1B,Q,UAK9B,M,aAKG,K,CAE1C,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,QAAAE,IAAA,2CAAMC,KAAK,WACVC,KAAKC,M"}