UNPKG

ca-web-components

Version:

web components for Clínica Alemana

156 lines (150 loc) 5.87 kB
var w=Object.defineProperty;var _=(c,n,e)=>n in c?w(c,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):c[n]=e;var r=(c,n,e)=>_(c,typeof n!="symbol"?n+"":n,e);import{i as k,r as b,x as f}from"../assets/unsafe-html-DS3AO1W7.js";const S=k` .container { padding: 32px 0 24px; } .card { scroll-snap-align: center; display: grid; grid-template-columns: 177px 1fr; border-radius: 20px; width: 487px; min-width: 487px; border: 1px solid #F2F5F9; background: #FFF; box-shadow: 0px 30px 40px 0px rgba(200, 200, 200, 0.25); } .card__image { position: relative; border-radius: 20px 0 0 20px; height: 248px; overflow: hidden; } .card__image img { width: 100%; height: 100%; object-fit: cover; } .card__content { display: flex; flex-direction: column; gap: 4px; padding: 32px 24px; color: #364855; } .card__link { margin-top: 8px; display: flex; justify-content: start; } .card__link .button { display: flex; border-radius: 20px; border: 1px solid #203442; background: #FFF; padding: 4px 16px; } a { text-decoration: none; color: currentColor; } .list { display: flex; gap: 16px; //padding: 32px 32px 86px; padding: 0 32px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; //width: calc(100vw - 32px); } .actions { display: none; justify-content: end; gap: 12px; padding: 0 16px; margin-top: 12px; } .actions button { background-color: #4DBFB8; width: 40px; height: 40px; border-radius: 50%; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; --eloisa-ds-icon-color: currentColor; color: #FFF; } .actions button:disabled { background-color: #E9EBEC; color: #909AA1; cursor: initial; } @media (max-width: 768px) { .list { padding: 32px 16px; } .card { display: flex; width: 315px; min-width: 315px; flex-direction: column; } .card__image { border-radius: 20px 20px 0 0; height: 149px; } .card__content { padding: 16px 16px 32px 16px; } } `;class p extends b{constructor(){super();r(this,"handleScroll",(e,a,i)=>{const t=e.target.scrollLeft,o=e.target.scrollWidth,d=e.target.clientWidth,x=o-t-d;t>0?a.disabled=!1:a.disabled=!0,x>0?i.disabled=!1:i.disabled=!0});r(this,"handlePrev",()=>{const e=this.shadowRoot.querySelector(".list");e.scrollLeft-=480});r(this,"handleNext",()=>{const e=this.shadowRoot.querySelector(".list");e.scrollLeft+=480});this.name="",this.value="",this.data=[]}updated(e){if(e.has("data")){const a=this.shadowRoot.querySelector(".list"),i=this.shadowRoot.querySelector(".actions");a.scrollWidth>a.clientWidth&&(i.style.display="flex")}}firstUpdated(){this.data=this.data.map(t=>{var o,d;return{subtitle:t.Subtitulo,title:t.Identifier,description:t.Bajada,images:{desktop:(o=t.imagenes[0])==null?void 0:o.imagen,mobile:(d=t.imagenes[1])==null?void 0:d.imagen},link_button:t.LinkBoton,name_button:t.TextoBoton,analytics:{categoria:(t==null?void 0:t.EventoInteractivoCategoria)||"",etiqueta:(t==null?void 0:t.EventoInteractivoEtiqueta)||"",accion:(t==null?void 0:t.EventoInteractivoAccion)||""}}}),this.requestUpdate();const e=this.shadowRoot.querySelector(".list"),a=this.shadowRoot.querySelector(".prev"),i=this.shadowRoot.querySelector(".next");e.addEventListener("scroll",t=>this.handleScroll(t,a,i)),a.addEventListener("click",this.handlePrev),i.addEventListener("click",this.handleNext)}render(){const e=({subtitle:a,title:i,description:t,images:o,name_button:d="Ver más",link_button:x,analytics:{categoria:u,etiqueta:v,accion:g}={}})=>{const h=({text:s,length:l=100})=>(s==null?void 0:s.length)>l?`${s.substring(0,l)}...`:s,y=()=>{var s;if(u&&v&&g){let l={event:"evento-interactivo","evento-interactivo-categoria":u,"evento-interactivo-accion":g,"evento-interactivo-etiqueta":v};console.log("event triggered",l),(s=window==null?void 0:window.dataLayer)==null||s.push(l)}};return f` <article class="card"> <div class="card__image"> <picture> <source media="(min-width: 600px)" srcset="${o==null?void 0:o.desktop}"> <img src="${o==null?void 0:o.mobile}" alt="${i}"> </picture> </div> <div class="card__content"> <cas-text variant="body2" >${h({text:a,length:38})}</cas-text > <cas-text variant="headline2" >${h({text:i,length:38})}</cas-text > <cas-text variant="caption2" >${h({text:t,length:83})}</cas-text > <div class="card__link"> <a href="${x}" target="_blank" class="button" @click="${y}"> <cas-text variant="footnote1">${d}</cas-text> </a> </div> </div> </article> `};return f` <section class="container"> <div class="list">${this.data.map(a=>e(a))}</div> <div class="actions"> <button class="prev" disabled> <cas-icon disabled variant="flat" name="flat-arrowLeft" size="16" ></cas-icon> </button> <button class="next"> <cas-icon disabled variant="flat" name="flat-arrowRight" size="16" ></cas-icon> </button> </div> </section> `}}r(p,"styles",S),r(p,"shadowRootOptions",{...b.shadowRootOptions,mode:"open"}),r(p,"properties",{name:{type:String},value:{type:String},data:{type:Array}});customElements.get("ca-banners-cta")||customElements.define("ca-banners-cta",p);