mealz-components 2.5.0 → 2.5.1

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.
@@ -1 +1 @@
1
- .mealz-catalog-home-header{position:relative;height:124px;overflow:hidden}.mealz-catalog-home-header__image{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;object-fit:cover}.mealz-catalog-home-header__image:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:linear-gradient(90deg,#0009,#0000 60%);z-index:2;pointer-events:none}.mealz-catalog-home-header__image img{width:100%;height:100%;object-fit:cover;object-position:center}.mealz-catalog-home-header__image-desktop{display:block}.mealz-catalog-home-header__image-mobile{display:none}.mealz-catalog-home-header__content{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:center;height:100%;padding:0 80px}.mealz-catalog-home-header__title{display:flex;justify-content:center;align-items:center;max-width:548px}.mealz-catalog-home-header__title-text{color:#fff;text-shadow:0px 2px 6px rgba(0,0,0,.4)}.mealz-catalog-home-header__banner{display:flex;justify-content:center;height:fit-content;align-items:center;padding:12px;background-color:#fff6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;max-width:224px;text-align:center;border:1px solid rgba(255,255,255,.4);box-sizing:border-box}.mealz-catalog-home-header__banner-content{display:flex;flex-direction:column}.mealz-catalog-home-header__banner-content .mealz-catalog-home-header__banner-subtitle{text-align:left;margin-bottom:8px;overflow:hidden;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal}.mealz-catalog-home-header__banner-content .mealz-catalog-home-header__banner-button{padding:8px 16px;text-decoration:none}@media (max-width: 1023px){.mealz-catalog-home-header__content{padding:0 24px}}@media (max-width: 767px){.mealz-catalog-home-header{height:168px}.mealz-catalog-home-header__image-desktop{display:none}.mealz-catalog-home-header__image-mobile{display:block}.mealz-catalog-home-header__image:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:linear-gradient(to top,#0009,#0000);z-index:2;pointer-events:none}.mealz-catalog-home-header__content{display:flex;flex-direction:column;justify-content:end;height:100%;box-sizing:border-box;padding:8px}.mealz-catalog-home-header__title{width:100%;max-width:100%;justify-content:left;margin-bottom:8px}.mealz-catalog-home-header__title .mealz-catalog-home-header__title-text{font-size:28px;line-height:32px}.mealz-catalog-home-header__title.center{align-items:center;height:100%}.mealz-catalog-home-header__banner{max-width:100%;width:100%;padding:8px}.mealz-catalog-home-header__banner-content{flex-direction:row;justify-content:space-between;align-items:center;width:100%}.mealz-catalog-home-header__banner-content .mealz-catalog-home-header__banner-subtitle{margin-bottom:0;margin-right:8px}.mealz-catalog-home-header__banner-button{min-width:fit-content}}
1
+ .mealz-catalog-home-header{position:relative;height:124px;overflow:hidden}.mealz-catalog-home-header__image{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;object-fit:cover}.mealz-catalog-home-header__image:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:linear-gradient(90deg,#0009,#0000 60%);z-index:2;pointer-events:none}.mealz-catalog-home-header__image img{width:100%;height:100%;object-fit:cover;object-position:center}.mealz-catalog-home-header--custom-image{height:200px}.mealz-catalog-home-header__image-desktop{display:block}.mealz-catalog-home-header__image-mobile{display:none}.mealz-catalog-home-header__content{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:center;height:100%;padding:0 80px}.mealz-catalog-home-header__title{display:flex;justify-content:center;align-items:center;max-width:548px}.mealz-catalog-home-header__title-text{color:#fff;text-shadow:0px 2px 6px rgba(0,0,0,.4)}.mealz-catalog-home-header__banner{display:flex;justify-content:center;height:fit-content;align-items:center;padding:12px;background-color:#fff6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;max-width:224px;text-align:center;border:1px solid rgba(255,255,255,.4);box-sizing:border-box}.mealz-catalog-home-header__banner-content{display:flex;flex-direction:column}.mealz-catalog-home-header__banner-content .mealz-catalog-home-header__banner-subtitle{text-align:left;margin-bottom:8px;overflow:hidden;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal}.mealz-catalog-home-header__banner-content .mealz-catalog-home-header__banner-button{padding:8px 16px;text-decoration:none}@media (max-width: 1023px){.mealz-catalog-home-header__content{padding:0 24px}}@media (max-width: 767px){.mealz-catalog-home-header{height:168px}.mealz-catalog-home-header__image-desktop{display:none}.mealz-catalog-home-header__image-mobile{display:block}.mealz-catalog-home-header__image:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:linear-gradient(to top,#0009,#0000);z-index:2;pointer-events:none}.mealz-catalog-home-header__content{display:flex;flex-direction:column;justify-content:end;height:100%;box-sizing:border-box;padding:8px}.mealz-catalog-home-header__title{width:100%;max-width:100%;justify-content:left;margin-bottom:8px}.mealz-catalog-home-header__title .mealz-catalog-home-header__title-text{font-size:28px;line-height:32px}.mealz-catalog-home-header__title.center{align-items:center;height:100%}.mealz-catalog-home-header__banner{max-width:100%;width:100%;padding:8px}.mealz-catalog-home-header__banner-content{flex-direction:row;justify-content:space-between;align-items:center;width:100%}.mealz-catalog-home-header__banner-content .mealz-catalog-home-header__banner-subtitle{margin-bottom:0;margin-right:8px}.mealz-catalog-home-header__banner-button{min-width:fit-content}}
@@ -1 +1 @@
1
- import{N as m}from"../../assets/no-shadow-element-YPHUv5PR.js";import{t as d}from"../../assets/custom-element-BhZVzxrc.js";import{m as p}from"../../assets/mealz-sdk-E_fNZM-c.js";var h=Object.getOwnPropertyDescriptor,b=(e,t,s,n)=>{for(var i=n>1?void 0:n?h(t,s):t,r=e.length-1,c;r>=0;r--)(c=e[r])&&(i=c(i)||i);return i};let u=class extends m{constructor(){super(...arguments),this.pendingSyncRaf=null,this.previousRecipeCount=0,this.onSeeMenuClick=()=>{const e=this.closest("mealz-planner-current-menu"),t=e,s=t==null?void 0:t.showMenu;if(typeof s=="function"){s.call(e);return}const n=e==null?void 0:e.querySelector(".mealz-planner-current-menu__mobile-menu-button");n==null||n.click()},this.onAddClick=()=>{const e=document.querySelector(".mealz-planner-recipe-list__add-to-menu");if(e){e.click();return}const t=this.closest("mealz-planner-current-menu");if(!t)return;const n=t.openCatalogModal;typeof n=="function"&&n.call(t)},this.onThumbClick=e=>{var a;const t=e.target,s=(a=t==null?void 0:t.closest)==null?void 0:a.call(t,".mealz-planner-quick-menu__thumb--recipe");if(!s)return;const n=s.getAttribute("data-recipe-id")||"",i=Number(s.getAttribute("data-guests")||"4"),r=Number(s.getAttribute("data-recipe-index")||"0");if(!n)return;p.recipes.openDetails(n,i),this.updateDisplayedRecipe(r)}}get selectors(){return{seeMenuButton:".mealz-planner-quick-menu__see-menu",addButton:".mealz-planner-quick-menu__thumb--add",thumbsContainer:".mealz-planner-quick-menu__thumbs-scroll",title:".mealz-planner-quick-menu__title",titleCount:".mealz-planner-quick-menu__count",titleMealsLabel:".mealz-planner-quick-menu__meals-label"}}connectedCallback(){super.connectedCallback(),this.initSelectors(),this.addEventListeners(),this.startObservingMenuChanges(),this.scheduleThumbsSync()}disconnectedCallback(){this.removeEventListeners(),this.stopObservingMenuChanges(),super.disconnectedCallback()}addEventListeners(){const{seeMenuButton:e,addButton:t,thumbsContainer:s}=this.elements;e==null||e.addEventListener("click",this.onSeeMenuClick),t==null||t.addEventListener("click",this.onAddClick),s==null||s.addEventListener("click",this.onThumbClick)}removeEventListeners(){const{seeMenuButton:e,addButton:t,thumbsContainer:s}=this.elements;e==null||e.removeEventListener("click",this.onSeeMenuClick),t==null||t.removeEventListener("click",this.onAddClick),s==null||s.removeEventListener("click",this.onThumbClick)}startObservingMenuChanges(){const e=this.getMenuRecipeCardsContainer();if(e){this.menuObserver=new MutationObserver(()=>this.scheduleThumbsSync()),this.menuObserver.observe(e,{childList:!0});return}this.bootstrapObserver=new MutationObserver(()=>{this.getMenuRecipeCardsContainer()&&(this.stopObservingMenuChanges(),this.startObservingMenuChanges(),this.scheduleThumbsSync())}),this.bootstrapObserver.observe(document.body,{childList:!0,subtree:!0})}stopObservingMenuChanges(){this.menuObserver&&(this.menuObserver.disconnect(),this.menuObserver=void 0),this.bootstrapObserver&&(this.bootstrapObserver.disconnect(),this.bootstrapObserver=void 0),this.pendingSyncRaf!==null&&(cancelAnimationFrame(this.pendingSyncRaf),this.pendingSyncRaf=null)}scheduleThumbsSync(){this.pendingSyncRaf===null&&(this.pendingSyncRaf=requestAnimationFrame(()=>{this.pendingSyncRaf=null,this.syncThumbsFromMenu()}))}getMenuRecipeCardsContainer(){return(this.closest("mealz-planner-current-menu")??document).querySelector(".mealz-planner-recipe-list__in-menu")}getMenuRecipeCards(){const t=this.closest("mealz-planner-current-menu")??document;return Array.from(t.querySelectorAll("mealz-planner-recipe-card")).map((n,i)=>{const r=n,c=r.recipeId||"",a=typeof r.guests=="number"?r.guests:4,l=n.querySelector(".mealz-planner-recipe-card__picture img"),o=(l==null?void 0:l.getAttribute("src"))||"";return{recipeId:c,guests:a,recipeIndex:i,imgSrc:o}}).filter(n=>!!n.recipeId&&!!n.imgSrc)}syncThumbsFromMenu(){const{thumbsContainer:e}=this.elements;if(!e)return;const t=this.getMenuRecipeCards(),s=this.calculateTotalSlots(t.length);e.textContent="";const n=document.createDocumentFragment();this.buildRecipeThumbButtons(t,n),this.addPlaceholderSlots(t.length,s,n),e.appendChild(n),this.handleNewRecipeAnimation(t.length,e),this.updateTitleWithCount(t.length)}calculateTotalSlots(e){return Math.min(12,Math.max(4,e))}buildRecipeThumbButtons(e,t){e.slice(0,12).forEach(n=>{const i=document.createElement("button");i.type="button",i.className="mealz-planner-quick-menu__thumb mealz-planner-quick-menu__thumb--recipe",i.setAttribute("data-recipe-id",n.recipeId),i.setAttribute("data-recipe-index",String(n.recipeIndex)),i.setAttribute("data-guests",String(n.guests)),i.setAttribute("aria-label","Voir la recette");const r=document.createElement("img");r.src=n.imgSrc,r.alt="",i.appendChild(r),t.appendChild(i)})}addPlaceholderSlots(e,t,s){for(let n=e;n<t;n++){const i=document.createElement("div");i.className="mealz-planner-quick-menu__thumb",s.appendChild(i)}}handleNewRecipeAnimation(e,t){const s=e>this.previousRecipeCount;if(this.previousRecipeCount=e,!s)return;const n=t.querySelector(".mealz-planner-quick-menu__thumb--recipe");if(!n)return;const i=n.querySelector("img");i&&requestAnimationFrame(()=>{i.classList.add("mealz-planner-quick-menu__image--animate"),i.addEventListener("animationend",()=>{i.classList.remove("mealz-planner-quick-menu__image--animate")},{once:!0})})}updateTitleWithCount(e){const{title:t,titleCount:s,titleMealsLabel:n}=this.elements;if(s&&(s.textContent=String(e)),n){const i=n.getAttribute("data-meal-singular")||"",r=n.getAttribute("data-meal-plural")||"";i&&r&&(n.textContent=e===1?i:r)}if(t&&!s){const i=t.textContent||"";t.textContent=i.replace(/\d+/,String(e))}}updateDisplayedRecipe(e){if(e==null||Number.isNaN(e))return;const t=document.querySelectorAll(".mealz-planner-recipe-suggestion__meals-count-button");if(!t.length)return;const s=t[e];s==null||s.click()}};u=b([d("mealz-planner-quick-menu")],u);customElements.get("mealz-planner-quick-menu")||customElements.define("mealz-planner-quick-menu",u);
1
+ import{N as m}from"../../assets/no-shadow-element-YPHUv5PR.js";import{t as d}from"../../assets/custom-element-BhZVzxrc.js";import{m as p}from"../../assets/mealz-sdk-E_fNZM-c.js";var h=Object.getOwnPropertyDescriptor,b=(e,t,n,s)=>{for(var i=s>1?void 0:s?h(t,n):t,r=e.length-1,a;r>=0;r--)(a=e[r])&&(i=a(i)||i);return i};let u=class extends m{constructor(){super(...arguments),this.pendingSyncRaf=null,this.previousRecipeCount=0,this.onSeeMenuClick=()=>{const e=this.closest("mealz-planner-current-menu"),t=e,n=t==null?void 0:t.showMenu;if(typeof n=="function"){n.call(e);return}const s=e==null?void 0:e.querySelector(".mealz-planner-current-menu__mobile-menu-button");s==null||s.click()},this.onAddClick=()=>{const e=document.querySelector(".mealz-planner-recipe-list__add-to-menu");if(e){e.click();return}const t=this.closest("mealz-planner-current-menu");if(!t)return;const s=t.openCatalogModal;typeof s=="function"&&s.call(t)},this.onThumbClick=e=>{var c;const t=e.target,n=(c=t==null?void 0:t.closest)==null?void 0:c.call(t,".mealz-planner-quick-menu__thumb--recipe");if(!n)return;const s=n.getAttribute("data-recipe-id")||"",i=Number(n.getAttribute("data-guests")||"4"),r=Number(n.getAttribute("data-recipe-index")||"0");if(!s)return;p.recipes.openDetails(s,i),this.updateDisplayedRecipe(r)}}get selectors(){return{seeMenuButton:".mealz-planner-quick-menu__see-menu",addButton:".mealz-planner-quick-menu__thumb--add",thumbsContainer:".mealz-planner-quick-menu__thumbs-scroll",title:".mealz-planner-quick-menu__title",titleCount:".mealz-planner-quick-menu__count",titleMealsLabel:".mealz-planner-quick-menu__meals-label"}}connectedCallback(){super.connectedCallback(),this.initSelectors(),this.addEventListeners(),this.startObservingMenuChanges(),this.scheduleThumbsSync()}disconnectedCallback(){this.removeEventListeners(),this.stopObservingMenuChanges(),super.disconnectedCallback()}addEventListeners(){const{seeMenuButton:e,addButton:t,thumbsContainer:n}=this.elements;e==null||e.addEventListener("click",this.onSeeMenuClick),t==null||t.addEventListener("click",this.onAddClick),n==null||n.addEventListener("click",this.onThumbClick)}removeEventListeners(){const{seeMenuButton:e,addButton:t,thumbsContainer:n}=this.elements;e==null||e.removeEventListener("click",this.onSeeMenuClick),t==null||t.removeEventListener("click",this.onAddClick),n==null||n.removeEventListener("click",this.onThumbClick)}startObservingMenuChanges(){const e=this.getMenuRecipeCardsContainer();if(e){this.menuObserver=new MutationObserver(()=>this.scheduleThumbsSync()),this.menuObserver.observe(e,{childList:!0});return}this.bootstrapObserver=new MutationObserver(()=>{this.getMenuRecipeCardsContainer()&&(this.stopObservingMenuChanges(),this.startObservingMenuChanges(),this.scheduleThumbsSync())}),this.bootstrapObserver.observe(document.body,{childList:!0,subtree:!0})}stopObservingMenuChanges(){this.menuObserver&&(this.menuObserver.disconnect(),this.menuObserver=void 0),this.bootstrapObserver&&(this.bootstrapObserver.disconnect(),this.bootstrapObserver=void 0),this.pendingSyncRaf!==null&&(cancelAnimationFrame(this.pendingSyncRaf),this.pendingSyncRaf=null)}scheduleThumbsSync(){this.pendingSyncRaf===null&&(this.pendingSyncRaf=requestAnimationFrame(()=>{this.pendingSyncRaf=null,this.syncThumbsFromMenu()}))}getMenuRecipeCardsContainer(){return(this.closest("mealz-planner-current-menu")??document).querySelector(".mealz-planner-recipe-list__in-menu")}getRecipeDataFromCard(e,t){const n=e,s=e;let i=s.recipeId??"",r=typeof s.guests=="number"?s.guests:4;if(!i){const o=n.getAttribute("starting-data");if(o)try{const l=JSON.parse(o);i=l.recipeId??"",r=typeof l.guests=="number"?l.guests:4}catch{return null}}if(!i)return null;const a=n.querySelector(".mealz-planner-recipe-card__picture img"),c=(a==null?void 0:a.getAttribute("src"))??"";return c?{recipeId:i,guests:r,recipeIndex:t,imgSrc:c}:null}getMenuRecipeCards(){const t=this.closest("mealz-planner-current-menu")??document,n=Array.from(t.querySelectorAll("mealz-planner-recipe-card")),s=[];for(let i=0;i<n.length;i++){const r=this.getRecipeDataFromCard(n[i],i);r&&s.push(r)}return s}syncThumbsFromMenu(){const{thumbsContainer:e}=this.elements;if(!e)return;const t=this.getMenuRecipeCards(),n=this.calculateTotalSlots(t.length);e.textContent="";const s=document.createDocumentFragment();this.buildRecipeThumbButtons(t,s),this.addPlaceholderSlots(t.length,n,s),e.appendChild(s),this.handleNewRecipeAnimation(t.length,e),this.updateTitleWithCount(t.length)}calculateTotalSlots(e){return Math.min(12,Math.max(4,e))}buildRecipeThumbButtons(e,t){e.slice(0,12).forEach(s=>{const i=document.createElement("button");i.type="button",i.className="mealz-planner-quick-menu__thumb mealz-planner-quick-menu__thumb--recipe",i.setAttribute("data-recipe-id",s.recipeId),i.setAttribute("data-recipe-index",String(s.recipeIndex)),i.setAttribute("data-guests",String(s.guests)),i.setAttribute("aria-label","Voir la recette");const r=document.createElement("img");r.src=s.imgSrc,r.alt="",i.appendChild(r),t.appendChild(i)})}addPlaceholderSlots(e,t,n){for(let s=e;s<t;s++){const i=document.createElement("div");i.className="mealz-planner-quick-menu__thumb",n.appendChild(i)}}handleNewRecipeAnimation(e,t){const n=e>this.previousRecipeCount;if(this.previousRecipeCount=e,!n)return;const s=t.querySelector(".mealz-planner-quick-menu__thumb--recipe");if(!s)return;const i=s.querySelector("img");i&&requestAnimationFrame(()=>{i.classList.add("mealz-planner-quick-menu__image--animate"),i.addEventListener("animationend",()=>{i.classList.remove("mealz-planner-quick-menu__image--animate")},{once:!0})})}updateTitleWithCount(e){const{title:t,titleCount:n,titleMealsLabel:s}=this.elements;if(n&&(n.textContent=String(e)),s){const i=s.getAttribute("data-meal-singular")||"",r=s.getAttribute("data-meal-plural")||"";i&&r&&(s.textContent=e===1?i:r)}if(t&&!n){const i=t.textContent||"";t.textContent=i.replace(/\d+/,String(e))}}updateDisplayedRecipe(e){if(e==null||Number.isNaN(e))return;const t=document.querySelectorAll(".mealz-planner-recipe-suggestion__meals-count-button");if(!t.length)return;const n=t[e];n==null||n.click()}};u=b([d("mealz-planner-quick-menu")],u);customElements.get("mealz-planner-quick-menu")||customElements.define("mealz-planner-quick-menu",u);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mealz-components",
3
3
  "type": "module",
4
- "version": "2.5.0",
4
+ "version": "2.5.1",
5
5
  "main": "./dist/mealz-components.js",
6
6
  "module": "./dist/mealz-components.js",
7
7
  "scripts": {