@dropins/storefront-cart 3.0.1-alpha001 → 3.1.0-beta1
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.
- package/api.js +1 -1
- package/chunks/CartSummaryGrid.js +1 -1
- package/chunks/CartSummaryList.js +2 -2
- package/chunks/CartSummaryList.js.map +1 -1
- package/chunks/CartSummaryTable2.js +1 -1
- package/chunks/ChevronDown.js +1 -1
- package/chunks/ChevronUp.js +1 -1
- package/chunks/Close.js +1 -1
- package/chunks/Coupon.js +1 -1
- package/chunks/Coupons.js +1 -1
- package/chunks/EmptyCart.js +1 -1
- package/chunks/EmptyCart2.js +1 -1
- package/chunks/GiftCard.js +1 -1
- package/chunks/OrderSummary.js +1 -1
- package/chunks/OrderSummaryLine.js +1 -1
- package/chunks/WarningWithCircle.js +1 -1
- package/chunks/acdl.js +1 -1
- package/chunks/applyCouponsToCart.js +1 -1
- package/chunks/createGuestCart.js +1 -1
- package/chunks/getEstimateShipping.js +1 -1
- package/chunks/getEstimatedTotals.js +1 -1
- package/chunks/persisted-data.js +1 -1
- package/chunks/refreshCart.js +1 -1
- package/chunks/removeGiftCardFromCart.js +1 -1
- package/chunks/resetCart.js +1 -1
- package/chunks/setGiftOptionsOnCart.js +1 -1
- package/chunks/updateProductsFromCart.js +1 -1
- package/containers/CartSummaryGrid.js +1 -1
- package/containers/CartSummaryList/CartSummaryList.d.ts +3 -0
- package/containers/CartSummaryList.js +1 -1
- package/containers/CartSummaryTable.js +1 -1
- package/containers/Coupons.js +1 -1
- package/containers/EmptyCart.js +1 -1
- package/containers/EstimateShipping.js +1 -1
- package/containers/GiftCards.js +1 -1
- package/containers/GiftOptions.js +1 -1
- package/containers/MiniCart/MiniCart.d.ts +3 -0
- package/containers/MiniCart.js +2 -2
- package/containers/MiniCart.js.map +1 -1
- package/containers/OrderSummary.js +1 -1
- package/containers/OrderSummaryLine.js +1 -1
- package/fragments.js +1 -1
- package/lib/decodeHTMLEntities.d.ts +2 -0
- package/package.json +1 -1
- package/render.js +1 -1
package/api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
3
|
import{a as d,c as h}from"./chunks/createGuestCart.js";import{c as x,g as G,b as y,d as F,e as S,i as b,a as E,r as P}from"./chunks/refreshCart.js";import{u as D}from"./chunks/updateProductsFromCart.js";import{s as r}from"./chunks/resetCart.js";import{f as T,g as H,r as w,d as z,a as A,b as O,c as V}from"./chunks/resetCart.js";import{a as U,g as $,b as j}from"./chunks/getEstimateShipping.js";import{g as q}from"./chunks/getEstimatedTotals.js";import{g as e}from"./chunks/persisted-data.js";import{A as I,a as J}from"./chunks/applyCouponsToCart.js";import{p as o}from"./chunks/acdl.js";import{a as L,r as M}from"./chunks/removeGiftCardFromCart.js";import{s as W}from"./chunks/setGiftOptionsOnCart.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/lib.js";import"./fragments.js";import"@dropins/tools/fetch-graphql.js";const f=()=>{const t=r.locale??"en-US",a=e();a&&o(a,t)};export{I as ApplyCouponsStrategy,d as addProductsToCart,J as applyCouponsToCart,L as applyGiftCardToCart,x as config,h as createGuestCart,T as fetchGraphQl,G as getCartData,e as getCartDataFromCache,H as getConfig,U as getCountries,y as getCustomerCartPayload,$ as getEstimateShipping,q as getEstimatedTotals,F as getGuestCartPayload,j as getRegions,S as getStoreConfig,b as initialize,E as initializeCart,f as publishShoppingCartViewEvent,P as refreshCart,w as removeFetchGraphQlHeader,M as removeGiftCardFromCart,z as resetCart,A as setEndpoint,O as setFetchGraphQlHeader,V as setFetchGraphQlHeaders,W as setGiftOptionsOnCart,D as updateProductsFromCart};
|
|
4
4
|
//# sourceMappingURL=api.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
3
|
import{jsx as a,Fragment as g}from"@dropins/tools/preact-jsx-runtime.js";import{useState as _,useEffect as C}from"@dropins/tools/preact-compat.js";import{E as b}from"./EmptyCart2.js";import{classes as l,VComponent as v,Slot as I}from"@dropins/tools/lib.js";/* empty css */import{Image as N}from"@dropins/tools/components.js";import"@dropins/tools/preact-hooks.js";import{events as S}from"@dropins/tools/event-bus.js";import{g as j}from"./persisted-data.js";const D=({className:c,children:i,emptyCart:m,products:e,...n})=>a("div",{...n,className:l(["cart-cart-summary-grid",c]),children:a(g,{children:a("div",{className:l(["cart-cart-summary-grid__content",["cart-cart-summary-grid__content--empty",!e]]),children:e||a(v,{node:m,className:"cart-cart-summary-grid__empty-cart"})})})}),L=({children:c,initialData:i=null,routeProduct:m,routeEmptyCartCTA:e,slots:n,...p})=>{const[o,u]=_(i);C(()=>{const r=S.on("cart/data",t=>{u(t)},{eager:!0});return()=>{r==null||r.off()}},[]);const f=(r,t)=>{const y=r.selectedOptions?`${r.name}: ${Object.entries(r.selectedOptions).join("; ")}`:r.name,s={loading:t<4?"eager":"lazy",src:r.image.src,alt:r.image.alt},d=a(N,{"data-testid":"cart-grid-item-image","aria-label":y,width:"100%",...s});return a("div",{className:"cart-cart-summary-grid__item-container",children:a(I,{name:"Thumbnail",slot:n==null?void 0:n.Thumbnail,context:{item:r,defaultImageProps:s},children:m?a("a",{href:m(r),children:d}):d})},t)},h=o&&a(g,{children:o.items.map((r,t)=>f(r,t))});return a(D,{...p,emptyCart:a(b,{ctaLinkURL:e?e():void 0}),products:h})};L.getInitialData=async function(){return j()};export{L as C};
|
|
4
4
|
//# sourceMappingURL=CartSummaryGrid.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as r,jsxs as _,Fragment as W}from"@dropins/tools/preact-jsx-runtime.js";import*as z from"@dropins/tools/preact-compat.js";import{forwardRef as re,useState as $,useEffect as K,useCallback as Bt,useImperativeHandle as ae}from"@dropins/tools/preact-compat.js";import{classes as P,VComponent as Y,Slot as m}from"@dropins/tools/lib.js";import{E as ie}from"./EmptyCart2.js";/* empty css */import{Divider as $t,Skeleton as ce,SkeletonRow as oe,InLineAlert as qt,CartList as Z,Icon as M,Button as H,Accordion as se,AccordionSection as ue,CartItem as le,Price as F,Incrementer as de,Image as me}from"@dropins/tools/components.js";import"@dropins/tools/preact-hooks.js";import{g as Xt}from"./persisted-data.js";import{events as Gt}from"@dropins/tools/event-bus.js";import{s as ge}from"./resetCart.js";import{a as fe}from"./createGuestCart.js";import{u as Rt}from"./updateProductsFromCart.js";import{S as Tt,a as he,b as ve}from"./WarningWithCircle.js";import{S as ye}from"./ChevronDown.js";import{useText as pe}from"@dropins/tools/i18n.js";const Ce=I=>z.createElement("svg",{id:"Icon_Chevron_right_Base","data-name":"Icon \\u2013 Chevron right \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...I},z.createElement("g",{id:"Large"},z.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),z.createElement("g",{id:"Chevron_right_icon","data-name":"Chevron right icon"},z.createElement("path",{vectorEffect:"non-scaling-stroke",id:"chevron",d:"M199.75,367.5l4.255,-4.255-4.255,-4.255",transform:"translate(-189.25 -351.0)",fill:"none",stroke:"currentColor"})))),Ut=({className:I,children:q,heading:L,footer:w,emptyCart:G,products:h,outOfStockMessage:y,variant:R="primary",loading:g=!0,...a})=>r("div",{...a,className:P(["cart-cart-summary-list",I,`cart-cart-summary-list__background--${R}`]),children:g?r(Ie,{}):_(W,{children:[(L||y)&&_("div",{"data-testid":"cart-summary-list-heading-wrapper",className:P(["cart-cart-summary-list__heading",["cart-cart-summary-list__heading--full-width",!h]]),children:[L&&_(W,{children:[r(Y,{node:L,className:"cart-cart-summary-list__heading-text"}),r($t,{variant:"primary",className:P(["cart-cart-summary-list__heading-divider"])})]}),y&&r(Y,{node:y,className:"cart-cart-summary-list__out-of-stock-message"})]}),r("div",{className:P(["cart-cart-summary-list__content",["cart-cart-summary-list__content--empty",!h]]),children:h||r(Y,{node:G,className:"cart-cart-summary-list__empty-cart"})}),w&&_(W,{children:[r($t,{variant:"primary",className:P(["cart-cart-summary-list__footer-divider"])}),r(Y,{node:w,className:"cart-cart-summary-list__footer-text"})]})]})}),Ie=()=>r(ce,{"data-testid":"cart-summary-list-skeleton",className:"cart-cart-summary-list__skeleton",rowGap:"medium",children:r(oe,{variant:"row",size:"xlarge",fullWidth:!0,lines:3,multilineGap:"small"})}),N=I=>{if(typeof document>"u")return I.replace(/"/g,'"').replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/'/g,"'");const q=document.createElement("textarea");return q.innerHTML=I,q.value},ke=re(({initialData:I=null,hideHeading:q,hideFooter:L,routeProduct:w,routeEmptyCartCTA:G,routeCart:h,onItemUpdate:y,onItemRemove:R,maxItems:g,slots:a,attributesToHide:l=[],enableRemoveItem:b,enableUpdateItemQuantity:T,onItemsErrorsChange:tt,accordion:zt=!1,variant:et="primary",isLoading:Ft,showMaxItems:nt,showDiscount:rt,showSavings:at,quantityType:it,dropdownOptions:ct,undo:E=!1,__testRecentlyRemovedItems:ot,...st},Wt)=>{var bt;const[U,jt]=$(!I),[i,Vt]=$(I),[f,Dt]=$(new Set),[j,ut]=$(new Map),[A,x]=$(ot||[]);K(()=>{},[ot,A]);const d=(bt=ge.config)==null?void 0:bt.shoppingCartDisplaySetting,[Q,Jt]=$(nt?!0:!g&&!nt),c=pe({file:"Cart.CartItem.file",files:"Cart.CartItem.files",heading:"Cart.Cart.heading",message:"Cart.CartItem.message",recipient:"Cart.CartItem.recipient",regularPrice:"Cart.CartItem.regularPrice",discountedPrice:"Cart.CartItem.discountedPrice",sender:"Cart.CartItem.sender",lowInventory:"Cart.CartItem.lowInventory",insufficientQuantity:"Cart.CartItem.insufficientQuantity",insufficientQuantityGeneral:"Cart.CartItem.insufficientQuantityGeneral",outOfStockHeading:"Cart.OutOfStockMessage.heading",outOfStockDescription:"Cart.OutOfStockMessage.message",outOfStockAlert:"Cart.OutOfStockMessage.alert",removeAction:"Cart.OutOfStockMessage.action",notAvailableMessage:"Cart.CartItem.notAvailableMessage",viewMore:"Cart.Cart.viewMore",viewAll:"Cart.Cart.viewAll",discountPercent:"Cart.CartItem.discountPercentage",savingsAmount:"Cart.CartItem.savingsAmount",itemBeingRemoved:"Cart.CartItem.itemBeingRemoved",itemRemoved:"Cart.CartItem.itemRemoved",itemRemovedDescription:"Cart.CartItem.itemRemovedDescription",undoAction:"Cart.CartItem.undoAction",dismissAction:"Cart.CartItem.dismissAction",remove:"Dropin.CartItem.remove.label",removeDefault:"Dropin.CartItem.removeDefault.label",quantity:"Dropin.CartItem.quantity.label"}),B=(t,e)=>{Dt(n=>(e?n.add(t):n.delete(t),new Set(n)))},V=(t,e)=>{ut(n=>(e?n.set(t,e):n.delete(t),new Map(n)))};function Kt(t){const e=Xt(),n=e==null?void 0:e.items.find(o=>o.uid===t);n&&x(o=>{const s=e.items.findIndex(u=>u.uid===t);return s!==-1&&!o.some(u=>u.item.uid===t)?(Gt.emit("cart/product/removed",{item:n,index:s}),[...o,{item:n,index:s,error:void 0,beingRemoved:!0}]):o})}const O=(t,e)=>{B(t.uid,!0),ut(new Map),b&&e===0?(Kt(t.uid),Rt([{uid:t.uid,quantity:e}]).then(()=>{R==null||R({item:t})}).finally(()=>{B(t.uid,!1),x(n=>n.map(o=>o.item.uid===t.uid?{...o,beingRemoved:!1}:o))}).catch(n=>{console.warn(n)})):T&&Rt([{uid:t.uid,quantity:e}]).then(()=>{y==null||y({item:t})}).finally(()=>{B(t.uid,!1)}).catch(n=>{V(t.uid,n.message)})},lt=t=>{x(e=>e.filter(n=>n.item.uid!==t))},Yt=Bt(()=>{Jt(t=>!t)},[]);K(()=>{const t=Gt.on("cart/data",e=>{Vt(e),jt(!!Ft)},{eager:!0});return()=>{t==null||t.off()}},[]),K(()=>{E||x([])},[E]),K(()=>{tt&&tt(j)},[j,tt]);const dt=(t,e)=>{if(l.includes("image"))return;const n={loading:e<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}},o=r(me,{"data-testid":"cart-list-item-image",...n});return r(m,{name:"Thumbnail",slot:a==null?void 0:a.Thumbnail,context:{item:t,defaultImageProps:n},children:w?r("a",{href:w(t),children:o}):o})},mt=t=>{if(!l.includes("name"))return r("span",{"data-testid":"cart-list-item-title",children:w?r("a",{href:w(t),children:N(t.name)}):N(t.name)})},gt=t=>{if(l.includes("configurations"))return;const e={...t.bundleOptions,...t.selectedOptions,...t.customizableOptions,...t.recipient?{[c.recipient]:t.recipient}:null,...t.recipientEmail&&t.recipient?{[c.recipient]:`${t.recipient} (${t.recipientEmail})`}:null,...t.sender?{[c.sender]:t.sender}:null,...t.senderEmail&&t.sender?{[c.sender]:`${t.sender} (${t.senderEmail})`}:{},...t.message?{[c.message]:t.message}:null,...t.links&&t.links.count?t.links.count>1?{[c.files.replace("{count}",t.links.count.toString())]:t.links.result}:{[c.file.replace("{count}",t.links.count.toString())]:t.links.result}:null};if(Object.keys(e).length!==0)return e},ft=t=>{var e,n,o,s;return(d==null?void 0:d.price)==="INCLUDING_TAX"?t.discounted?{amount:t.regularPrice.value,currency:t.regularPrice.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(e=t.taxedPrice)==null?void 0:e.value,currency:(n=t.taxedPrice)==null?void 0:n.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(o=t.regularPrice)==null?void 0:o.value,currency:(s=t.regularPrice)==null?void 0:s.currency,style:{font:"inherit"},"data-testid":"regular-item-price"}},ht=t=>{var e,n;return{amount:(e=t.savingsAmount)==null?void 0:e.value,currency:(n=t.savingsAmount)==null?void 0:n.currency,style:{font:"inherit"},"data-testid":"item-savings-amount"}},vt=t=>(d==null?void 0:d.price)==="INCLUDING_EXCLUDING_TAX"?r(F,{amount:t.rowTotal.value,currency:t.rowTotal.currency,"data-testid":"excluding-tax-total","aria-label":c.regularPrice}):void 0,yt=t=>{var o,s,u,v,C,k,S,X,Et,Qt;const e={"aria-label":c.regularPrice},n=t.discounted?{}:null;return["INCLUDING_TAX","INCLUDING_EXCLUDING_TAX"].includes(d==null?void 0:d.price)?(e.amount=(o=t.rowTotalIncludingTax)==null?void 0:o.value,e.currency=(s=t.rowTotalIncludingTax)==null?void 0:s.currency,e.variant=t.discounted?"strikethrough":"default",e["data-testid"]="including-tax-item-total",n&&(e.amount=(u=t.total)==null?void 0:u.value,e.currency=(v=t.total)==null?void 0:v.currency,n.amount=(C=t.rowTotalIncludingTax)==null?void 0:C.value,n.currency=(k=t.rowTotalIncludingTax)==null?void 0:k.currency,n.sale=!0,n["aria-label"]=c.discountedPrice,n["data-testid"]="discount-total")):(e.amount=(S=t.total)==null?void 0:S.value,e.currency=(X=t.total)==null?void 0:X.currency,e.variant=t.discounted?"strikethrough":"default",e["data-testid"]="regular-item-total",n&&(n.amount=(Et=t.discountedTotal)==null?void 0:Et.value,n.currency=(Qt=t.discountedTotal)==null?void 0:Qt.currency,n.sale=!0,n["aria-label"]=c.regularPrice,n["data-testid"]="discount-total")),{totalProps:e,discountProps:n}},pt=t=>{var C,k,S;if(l.includes("warning"))return;const e=j.get(t.uid),n=(C=j.get(t.uid))==null?void 0:C.includes("The requested qty is not available"),o=f.has(t.uid),s=t.insufficientQuantity&&t.stockLevel?t.stockLevel==="noNumber"?c.insufficientQuantityGeneral:c.insufficientQuantity.replace("{inventory}",(k=t.stockLevel)==null?void 0:k.toString()).replace("{count}",t.quantity.toString()):"",u=t.lowInventory&&t.onlyXLeftInStock&&c.lowInventory.replace("{count}",(S=t.onlyXLeftInStock)==null?void 0:S.toString()),v=!t.outOfStock&&e&&n?c.notAvailableMessage:e;return!o&&(e||t.insufficientQuantity||t.lowInventory)?_("span",{"data-testid":"item-warning",children:[r(M,{source:he,size:"16"}),v||s||u]}):void 0},Ct=t=>l!=null&&l.includes("alert")?void 0:!f.has(t.uid)&&t.outOfStock?_("span",{"data-testid":"item-alert",children:[r(M,{source:Tt,size:"16"}),c.outOfStockAlert]}):void 0,It=t=>r(m,{name:"ProductAttributes",slot:a==null?void 0:a.ProductAttributes,context:{item:t}}),kt=t=>{if(!l.includes("sku"))return r("span",{"data-testid":"cart-list-item-sku",children:t.sku})},St=t=>r(m,{name:"Footer",slot:a==null?void 0:a.Footer,context:{item:t,handleItemsLoading:B,handleItemsError:V,onItemUpdate:y}}),Zt=t=>{var e;if(b)return r(m,{name:"ItemRemoveAction",slot:a==null?void 0:a.ItemRemoveAction,context:{item:t,enableRemoveItem:b,handleItemQuantityUpdate:O,handleItemsError:V,handleItemsLoading:B,onItemUpdate:y,itemsLoading:f},children:r(H,{"data-testid":"cart-item-remove-button",className:P(["dropin-cart-item__remove"]),variant:"tertiary",onClick:()=>O(t,0),disabled:f.has(t.uid),icon:r(M,{"data-testid":"cart-item-remove-icon",source:ve,size:"24",stroke:"2",viewBox:"0 0 24 24","aria-label":((e=c.remove)==null?void 0:e.replace("{product}",N(t.name)))||c.removeDefault})})})},Mt=t=>{if(!l.includes("quantity")&&T)return r(m,{name:"ItemQuantity",slot:a==null?void 0:a.ItemQuantity,context:{item:t,enableUpdateItemQuantity:T,handleItemQuantityUpdate:O,itemsLoading:f,handleItemsError:V,handleItemsLoading:B,onItemUpdate:y},children:r(de,{value:t.quantity,min:1,onValue:e=>O(t,Number(e)),name:"quantity",disabled:f.has(t.uid),"aria-label":c.quantity})})},_t=t=>i!=null&&i.totalQuantity?i.items.filter(t).map((e,n)=>{var v;const{totalProps:o,discountProps:s}=yt(e),u=r(le,{updating:f==null?void 0:f.has(e.uid),loading:U,"data-testid":`cart-list-item-entry-${e.uid}`,image:dt(e,n),title:r(m,{name:"ItemTitle",slot:a==null?void 0:a.ItemTitle,context:{item:e},children:mt(e)}),sku:l.includes("sku")?void 0:r(m,{name:"ItemSku",slot:a==null?void 0:a.ItemSku,context:{item:e},children:kt(e)}),price:l.includes("price")?void 0:r(m,{name:"ItemPrice",slot:a==null?void 0:a.ItemPrice,context:{item:e},slotTag:"span",children:r(F,{...ft(e)})}),quantity:l.includes("quantity")?void 0:e.quantity,quantityContent:Mt(e),total:_(W,{children:[l.includes("total")?void 0:r(m,{name:"ItemTotal",slot:a==null?void 0:a.ItemTotal,context:{item:e},children:r(F,{...o})}),l.includes("totalDiscount")?void 0:s&&r(m,{name:"ItemTotal",slot:a==null?void 0:a.ItemTotal,context:{item:e},children:r(F,{...s})})]}),attributes:It(e),configurations:gt(e),totalExcludingTax:l.includes("totalExcludingTax")?void 0:vt(e),taxIncluded:(d==null?void 0:d.price)==="INCLUDING_TAX",taxExcluded:!l.includes("totalExcludingTax")&&(d==null?void 0:d.price)==="INCLUDING_EXCLUDING_TAX",warning:pt(e),alert:Ct(e),quantityType:it,dropdownOptions:ct,onQuantity:T&&!f.has(e.uid)?C=>{O(e,C)}:void 0,onRemove:b&&!f.has(e.uid)?()=>O(e,0):void 0,discount:rt&&e.discounted&&e.discountPercentage?r("div",{"data-testid":"item-discount-percent",children:c.discountPercent.replace("{discount}",((v=e.discountPercentage)==null?void 0:v.toString())??"")}):void 0,savings:at&&e.discounted&&e.savingsAmount?_("div",{children:[r("span",{children:r(F,{...ht(e)})})," ",c.savingsAmount]}):void 0,footer:St(e),removeContent:Zt(e)},e.uid);return r(m,{name:"CartItem",slot:a==null?void 0:a.CartItem,context:{item:e,index:n,enableUpdateItemQuantity:T,enableRemoveItem:b,itemsLoading:f,loading:U,attributesToHide:l,cartTaxesConfig:d,quantityType:it,dropdownOptions:ct,showDiscount:rt,showSavings:at,dictionary:c,getImage:dt,getTitle:mt,getSku:kt,getPriceProps:ft,getTotalPriceProps:yt,getProductAttributes:It,getConfiguration:gt,getTotalExcludingTax:vt,getWarning:pt,getAlert:Ct,getFooter:St,getSavingsAmount:ht},children:u},e.uid)}):null,wt=r(m,{name:"Heading",slot:a==null?void 0:a.Heading,context:{count:i==null?void 0:i.totalQuantity},children:r("div",{"data-testid":"default-cart-heading",children:c.heading.replace("({count})",i!=null&&i.totalQuantity?`(${i==null?void 0:i.totalQuantity.toString()})`:"")})}),Ht=wt.props.children.props.children,te=()=>{const t=i==null?void 0:i.items.filter(e=>e.outOfStock);t==null||t.forEach(e=>{O(e,0)})},ee=_t(t=>t.outOfStock||t.insufficientQuantity||!1),At=i!=null&&i.hasOutOfStockItems?r(qt,{"data-testid":"cart-out-of-stock-message",icon:r(M,{source:Tt,size:"16"}),itemList:r(Z,{"data-testid":"out-of-stock-cart-items",children:ee}),type:"warning",heading:c.outOfStockHeading,description:c.outOfStockDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:i!=null&&i.hasFullyOutOfStockItems&&b?[{label:c.removeAction,onClick:te}]:void 0}):void 0,p=_t(t=>!t.outOfStock&&!t.insufficientQuantity),xt=Q?Math.max(g||5,5):Math.min((i==null?void 0:i.totalQuantity)||5,5),Ot=(i==null?void 0:i.totalQuantity)>xt,ne=Ot&&!Q&&xt!=g,D=i!=null&&i.totalQuantity&&p?r(m,{name:"Footer",slot:a==null?void 0:a.CartSummaryFooter,context:{displayMaxItems:Q,routeCart:h},"data-testid":"cart-cart-summary-footer-slot",className:"cart-cart-summary-footer",children:Ot?ne?r(H,{className:"cart-cart-summary-list-footer__action",onClick:Yt,"data-testid":"view-more-items-button",variant:"tertiary",children:c.viewMore}):h&&r(H,{className:"cart-cart-summary-list-footer__action",href:h(),variant:"tertiary","data-testid":"view-cart-or-less-items-button",children:c.viewAll}):h&&r(H,{className:"cart-cart-summary-list-footer__action",href:h(),variant:"tertiary","data-testid":"view-cart-button",children:c.viewAll})}):null,Nt=()=>{if(!(i!=null&&i.items))return null;const t=[],e=i.items,n=a==null?void 0:a.UndoBanner,o=Q?Math.max(g||(i==null?void 0:i.totalQuantity),5):Math.min(g??5,5);for(let s=0;s<=o;s++)E&&A.filter(u=>u.index===s).forEach(({item:u,error:v,beingRemoved:C})=>{var S,X;const k=r(qt,{type:v?"error":"info",heading:C?(S=c.itemBeingRemoved)==null?void 0:S.replace("{product}",N(u.name)):(X=c.itemRemoved)==null?void 0:X.replace("{product}",N(u.name)),description:v||c.itemRemovedDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:C?[]:[{label:c.undoAction,onClick:()=>J(u.uid),"aria-label":`${c.undoAction} remove ${N(u.name)}`},{label:c.dismissAction,onClick:()=>lt(u.uid),"aria-label":`${c.dismissAction} undo for ${N(u.name)}`}]},`undo-banner-${u.uid}`);t.push(n?r(m,{name:"UndoBanner",slot:n,context:{item:u,loading:U,error:v,onUndo:()=>J(u.uid),onDismiss:()=>lt(u.uid)},children:k},`undo-banner-${u.uid}`):k)}),s<o&&s<e.length&&t.push((p==null?void 0:p[s])||null);return r(Z,{"data-testid":"cart-list",children:t})},J=Bt(async t=>{x(n=>n.map(o=>o.item.uid===t?{...o,loading:!0,error:void 0}:o));const e=A.find(n=>n.item.uid===t);if(e)try{await fe([{sku:e.item.sku,parentSku:e.item.topLevelSku,quantity:e.item.quantity,optionsUIDs:e.item.bundleOptionsUIDs||(e.item.selectedOptionsUIDs?Object.values(e.item.selectedOptionsUIDs):void 0),enteredOptions:e.item.customizableOptions?Object.entries(e.item.customizableOptions).map(([n,o])=>({uid:n,value:o})):void 0}]),x(n=>n.filter(o=>o.item.uid!==t))}catch(n){x(o=>o.map(s=>s.item.uid===t?{...s,error:(n==null?void 0:n.message)||"Failed to restore item."}:s))}},[A]);ae(Wt,()=>({handleUndo:J}),[J]);const Pt=r(W,{children:E&&A.length>0?Nt():r(m,{name:"EmptyCart",slot:a==null?void 0:a.EmptyCart,context:{},children:r(ie,{"data-testid":"empty-cart",ctaLinkURL:G==null?void 0:G()})})}),Lt=i!=null&&i.totalQuantity||E&&A.length>0?E?A.length>0?Nt():r(Z,{"data-testid":"cart-list",children:p==null?void 0:p.slice(0,Q?Math.max(g||(i==null?void 0:i.totalQuantity),5):Math.min(g??5,5))}):r(Z,{"data-testid":"cart-list",children:p==null?void 0:p.slice(0,Q?Math.max(g||(i==null?void 0:i.totalQuantity),5):Math.min(g??5,5))}):null;return zt?r(se,{"data-testid":"cart-summary-list-accordion",className:P(["cart-cart-summary-list-accordion",`cart-cart-summary-list__background--${et}`]),iconOpen:Ce,iconClose:ye,children:r(ue,{title:Ht,"data-testid":"cart-summary-list-accordion__section",open:!0,renderContentWhenClosed:!0,children:r(Ut,{...st,"aria-expanded":!0,"aria-label":"TEST",className:"cart-cart-summary-list-accordion__list",loading:U,footer:L?void 0:D||(h?D:void 0),emptyCart:Pt,products:Lt,outOfStockMessage:At,variant:et})})}):r(Ut,{...st,heading:q?void 0:wt,footer:L?void 0:D||(h?D:void 0),loading:U,emptyCart:Pt,products:Lt,outOfStockMessage:At,variant:et})});ke.getInitialData=async function(){return Xt()};export{ke as C};
|
|
3
|
+
import{jsx as r,jsxs as w,Fragment as z}from"@dropins/tools/preact-jsx-runtime.js";import*as U from"@dropins/tools/preact-compat.js";import{forwardRef as ae,useState as T,useEffect as J,useCallback as Tt,useImperativeHandle as ie}from"@dropins/tools/preact-compat.js";import{classes as L,VComponent as K,Slot as m}from"@dropins/tools/lib.js";import{E as ce}from"./EmptyCart2.js";/* empty css */import{Divider as Bt,Skeleton as oe,SkeletonRow as se,InLineAlert as $t,CartList as Y,Icon as Z,Button as M,Accordion as ue,AccordionSection as de,CartItem as le,Price as X,Incrementer as me,Image as ge}from"@dropins/tools/components.js";import"@dropins/tools/preact-hooks.js";import{g as Xt}from"./persisted-data.js";import{events as Gt}from"@dropins/tools/event-bus.js";import{s as fe}from"./resetCart.js";import{a as he}from"./createGuestCart.js";import{u as qt}from"./updateProductsFromCart.js";import{S as Ft,a as ve,b as ye}from"./WarningWithCircle.js";import{S as pe}from"./ChevronDown.js";import{useText as Ce}from"@dropins/tools/i18n.js";const Ie=I=>U.createElement("svg",{id:"Icon_Chevron_right_Base","data-name":"Icon \\u2013 Chevron right \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...I},U.createElement("g",{id:"Large"},U.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),U.createElement("g",{id:"Chevron_right_icon","data-name":"Chevron right icon"},U.createElement("path",{vectorEffect:"non-scaling-stroke",id:"chevron",d:"M199.75,367.5l4.255,-4.255-4.255,-4.255",transform:"translate(-189.25 -351.0)",fill:"none",stroke:"currentColor"})))),Ut=({className:I,children:H,heading:_,footer:x,emptyCart:B,products:h,outOfStockMessage:y,variant:$="primary",loading:g=!0,...a})=>r("div",{...a,className:L(["cart-cart-summary-list",I,`cart-cart-summary-list__background--${$}`]),children:g?r(ke,{}):w(z,{children:[(_||y)&&w("div",{"data-testid":"cart-summary-list-heading-wrapper",className:L(["cart-cart-summary-list__heading",["cart-cart-summary-list__heading--full-width",!h]]),children:[_&&w(z,{children:[r(K,{node:_,className:"cart-cart-summary-list__heading-text"}),r(Bt,{variant:"primary",className:L(["cart-cart-summary-list__heading-divider"])})]}),y&&r(K,{node:y,className:"cart-cart-summary-list__out-of-stock-message"})]}),r("div",{className:L(["cart-cart-summary-list__content",["cart-cart-summary-list__content--empty",!h]]),children:h||r(K,{node:B,className:"cart-cart-summary-list__empty-cart"})}),x&&w(z,{children:[r(Bt,{variant:"primary",className:L(["cart-cart-summary-list__footer-divider"])}),r(K,{node:x,className:"cart-cart-summary-list__footer-text"})]})]})}),ke=()=>r(oe,{"data-testid":"cart-summary-list-skeleton",className:"cart-cart-summary-list__skeleton",rowGap:"medium",children:r(se,{variant:"row",size:"xlarge",fullWidth:!0,lines:3,multilineGap:"small"})}),P=I=>new DOMParser().parseFromString(I,"text/html").body.textContent||"",Se=ae(({initialData:I=null,hideHeading:H,hideFooter:_,routeProduct:x,routeEmptyCartCTA:B,routeCart:h,onItemUpdate:y,onItemRemove:$,maxItems:g,slots:a,attributesToHide:d=[],enableRemoveItem:b,enableUpdateItemQuantity:G,onItemsErrorsChange:tt,accordion:zt=!1,variant:et="primary",isLoading:Wt,showMaxItems:nt,showDiscount:rt,showSavings:at,quantityType:it,dropdownOptions:ct,undo:Q=!1,__testRecentlyRemovedItems:ot,...st},jt)=>{var Qt;const[q,Dt]=T(!I),[i,Vt]=T(I),[f,Jt]=T(new Set),[W,ut]=T(new Map),[A,O]=T(ot||[]);J(()=>{},[ot,A]);const l=(Qt=fe.config)==null?void 0:Qt.shoppingCartDisplaySetting,[E,Kt]=T(nt?!0:!g&&!nt),c=Ce({file:"Cart.CartItem.file",files:"Cart.CartItem.files",heading:"Cart.Cart.heading",message:"Cart.CartItem.message",recipient:"Cart.CartItem.recipient",regularPrice:"Cart.CartItem.regularPrice",discountedPrice:"Cart.CartItem.discountedPrice",sender:"Cart.CartItem.sender",lowInventory:"Cart.CartItem.lowInventory",insufficientQuantity:"Cart.CartItem.insufficientQuantity",insufficientQuantityGeneral:"Cart.CartItem.insufficientQuantityGeneral",outOfStockHeading:"Cart.OutOfStockMessage.heading",outOfStockDescription:"Cart.OutOfStockMessage.message",outOfStockAlert:"Cart.OutOfStockMessage.alert",removeAction:"Cart.OutOfStockMessage.action",notAvailableMessage:"Cart.CartItem.notAvailableMessage",viewMore:"Cart.Cart.viewMore",viewAll:"Cart.Cart.viewAll",discountPercent:"Cart.CartItem.discountPercentage",savingsAmount:"Cart.CartItem.savingsAmount",itemBeingRemoved:"Cart.CartItem.itemBeingRemoved",itemRemoved:"Cart.CartItem.itemRemoved",itemRemovedDescription:"Cart.CartItem.itemRemovedDescription",undoAction:"Cart.CartItem.undoAction",dismissAction:"Cart.CartItem.dismissAction",remove:"Dropin.CartItem.remove.label",removeDefault:"Dropin.CartItem.removeDefault.label",quantity:"Dropin.CartItem.quantity.label"}),R=(t,e)=>{Jt(n=>(e?n.add(t):n.delete(t),new Set(n)))},j=(t,e)=>{ut(n=>(e?n.set(t,e):n.delete(t),new Map(n)))};function Yt(t){const e=Xt(),n=e==null?void 0:e.items.find(o=>o.uid===t);n&&O(o=>{const s=e.items.findIndex(u=>u.uid===t);return s!==-1&&!o.some(u=>u.item.uid===t)?(Gt.emit("cart/product/removed",{item:n,index:s}),[...o,{item:n,index:s,error:void 0,beingRemoved:!0}]):o})}const N=(t,e)=>{R(t.uid,!0),ut(new Map),b&&e===0?(Yt(t.uid),qt([{uid:t.uid,quantity:e}]).then(()=>{$==null||$({item:t})}).finally(()=>{R(t.uid,!1),O(n=>n.map(o=>o.item.uid===t.uid?{...o,beingRemoved:!1}:o))}).catch(n=>{console.warn(n)})):G&&qt([{uid:t.uid,quantity:e}]).then(()=>{y==null||y({item:t})}).finally(()=>{R(t.uid,!1)}).catch(n=>{j(t.uid,n.message)})},dt=t=>{O(e=>e.filter(n=>n.item.uid!==t))},Zt=Tt(()=>{Kt(t=>!t)},[]);J(()=>{const t=Gt.on("cart/data",e=>{Vt(e),Dt(!!Wt)},{eager:!0});return()=>{t==null||t.off()}},[]),J(()=>{Q||O([])},[Q]),J(()=>{tt&&tt(W)},[W,tt]);const lt=(t,e)=>{if(d.includes("image"))return;const n={loading:e<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}},o=r(ge,{"data-testid":"cart-list-item-image",...n});return r(m,{name:"Thumbnail",slot:a==null?void 0:a.Thumbnail,context:{item:t,defaultImageProps:n},children:x?r("a",{href:x(t),children:o}):o})},mt=t=>{if(!d.includes("name"))return r("span",{"data-testid":"cart-list-item-title",children:x?r("a",{href:x(t),children:P(t.name)}):P(t.name)})},gt=t=>{if(d.includes("configurations"))return;const e={...t.bundleOptions,...t.selectedOptions,...t.customizableOptions,...t.recipient?{[c.recipient]:t.recipient}:null,...t.recipientEmail&&t.recipient?{[c.recipient]:`${t.recipient} (${t.recipientEmail})`}:null,...t.sender?{[c.sender]:t.sender}:null,...t.senderEmail&&t.sender?{[c.sender]:`${t.sender} (${t.senderEmail})`}:{},...t.message?{[c.message]:t.message}:null,...t.links&&t.links.count?t.links.count>1?{[c.files.replace("{count}",t.links.count.toString())]:t.links.result}:{[c.file.replace("{count}",t.links.count.toString())]:t.links.result}:null};if(Object.keys(e).length!==0)return e},ft=t=>{var e,n,o,s;return(l==null?void 0:l.price)==="INCLUDING_TAX"?t.discounted?{amount:t.regularPrice.value,currency:t.regularPrice.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(e=t.taxedPrice)==null?void 0:e.value,currency:(n=t.taxedPrice)==null?void 0:n.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(o=t.regularPrice)==null?void 0:o.value,currency:(s=t.regularPrice)==null?void 0:s.currency,style:{font:"inherit"},"data-testid":"regular-item-price"}},ht=t=>{var e,n;return{amount:(e=t.savingsAmount)==null?void 0:e.value,currency:(n=t.savingsAmount)==null?void 0:n.currency,style:{font:"inherit"},"data-testid":"item-savings-amount"}},vt=t=>(l==null?void 0:l.price)==="INCLUDING_EXCLUDING_TAX"?r(X,{amount:t.rowTotal.value,currency:t.rowTotal.currency,"data-testid":"excluding-tax-total","aria-label":c.regularPrice}):void 0,yt=t=>{var o,s,u,v,C,k,S,F,Et,Rt;const e={"aria-label":c.regularPrice},n=t.discounted?{}:null;return["INCLUDING_TAX","INCLUDING_EXCLUDING_TAX"].includes(l==null?void 0:l.price)?(e.amount=(o=t.rowTotalIncludingTax)==null?void 0:o.value,e.currency=(s=t.rowTotalIncludingTax)==null?void 0:s.currency,e.variant=t.discounted?"strikethrough":"default",e["data-testid"]="including-tax-item-total",n&&(e.amount=(u=t.total)==null?void 0:u.value,e.currency=(v=t.total)==null?void 0:v.currency,n.amount=(C=t.rowTotalIncludingTax)==null?void 0:C.value,n.currency=(k=t.rowTotalIncludingTax)==null?void 0:k.currency,n.sale=!0,n["aria-label"]=c.discountedPrice,n["data-testid"]="discount-total")):(e.amount=(S=t.total)==null?void 0:S.value,e.currency=(F=t.total)==null?void 0:F.currency,e.variant=t.discounted?"strikethrough":"default",e["data-testid"]="regular-item-total",n&&(n.amount=(Et=t.discountedTotal)==null?void 0:Et.value,n.currency=(Rt=t.discountedTotal)==null?void 0:Rt.currency,n.sale=!0,n["aria-label"]=c.regularPrice,n["data-testid"]="discount-total")),{totalProps:e,discountProps:n}},pt=t=>{var C,k,S;if(d.includes("warning"))return;const e=W.get(t.uid),n=(C=W.get(t.uid))==null?void 0:C.includes("The requested qty is not available"),o=f.has(t.uid),s=t.insufficientQuantity&&t.stockLevel?t.stockLevel==="noNumber"?c.insufficientQuantityGeneral:c.insufficientQuantity.replace("{inventory}",(k=t.stockLevel)==null?void 0:k.toString()).replace("{count}",t.quantity.toString()):"",u=t.lowInventory&&t.onlyXLeftInStock&&c.lowInventory.replace("{count}",(S=t.onlyXLeftInStock)==null?void 0:S.toString()),v=!t.outOfStock&&e&&n?c.notAvailableMessage:e;return!o&&(e||t.insufficientQuantity||t.lowInventory)?w("span",{"data-testid":"item-warning",children:[r(Z,{source:ve,size:"16"}),v||s||u]}):void 0},Ct=t=>d!=null&&d.includes("alert")?void 0:!f.has(t.uid)&&t.outOfStock?w("span",{"data-testid":"item-alert",children:[r(Z,{source:Ft,size:"16"}),c.outOfStockAlert]}):void 0,It=t=>r(m,{name:"ProductAttributes",slot:a==null?void 0:a.ProductAttributes,context:{item:t}}),kt=t=>{if(!d.includes("sku"))return r("span",{"data-testid":"cart-list-item-sku",children:t.sku})},St=t=>r(m,{name:"Footer",slot:a==null?void 0:a.Footer,context:{item:t,handleItemsLoading:R,handleItemsError:j,onItemUpdate:y}}),wt=t=>r(m,{name:"RowTotalFooter",slot:a==null?void 0:a.RowTotalFooter,context:{item:t}}),Mt=t=>{var e;if(b)return r(m,{name:"ItemRemoveAction",slot:a==null?void 0:a.ItemRemoveAction,context:{item:t,enableRemoveItem:b,handleItemQuantityUpdate:N,handleItemsError:j,handleItemsLoading:R,onItemUpdate:y,itemsLoading:f},children:r(M,{"data-testid":"cart-item-remove-button",className:L(["dropin-cart-item__remove"]),variant:"tertiary",onClick:()=>N(t,0),disabled:f.has(t.uid),icon:r(Z,{"data-testid":"cart-item-remove-icon",source:ye,size:"24",stroke:"2",viewBox:"0 0 24 24","aria-label":((e=c.remove)==null?void 0:e.replace("{product}",P(t.name)))||c.removeDefault})})})},Ht=t=>{if(!d.includes("quantity")&&G)return r(m,{name:"ItemQuantity",slot:a==null?void 0:a.ItemQuantity,context:{item:t,enableUpdateItemQuantity:G,handleItemQuantityUpdate:N,itemsLoading:f,handleItemsError:j,handleItemsLoading:R,onItemUpdate:y},children:r(me,{value:t.quantity,min:1,onValue:e=>N(t,Number(e)),name:"quantity",disabled:f.has(t.uid),"aria-label":c.quantity})})},_t=t=>i!=null&&i.totalQuantity?i.items.filter(t).map((e,n)=>{var v;const{totalProps:o,discountProps:s}=yt(e),u=r(le,{updating:f==null?void 0:f.has(e.uid),loading:q,"data-testid":`cart-list-item-entry-${e.uid}`,image:lt(e,n),title:r(m,{name:"ItemTitle",slot:a==null?void 0:a.ItemTitle,context:{item:e},children:mt(e)}),sku:d.includes("sku")?void 0:r(m,{name:"ItemSku",slot:a==null?void 0:a.ItemSku,context:{item:e},children:kt(e)}),price:d.includes("price")?void 0:r(m,{name:"ItemPrice",slot:a==null?void 0:a.ItemPrice,context:{item:e},slotTag:"span",children:r(X,{...ft(e)})}),quantity:d.includes("quantity")?void 0:e.quantity,quantityContent:Ht(e),total:w(z,{children:[d.includes("total")?void 0:r(m,{name:"ItemTotal",slot:a==null?void 0:a.ItemTotal,context:{item:e},children:r(X,{...o})}),d.includes("totalDiscount")?void 0:s&&r(m,{name:"ItemTotal",slot:a==null?void 0:a.ItemTotal,context:{item:e},children:r(X,{...s})})]}),attributes:It(e),configurations:gt(e),totalExcludingTax:d.includes("totalExcludingTax")?void 0:vt(e),taxIncluded:(l==null?void 0:l.price)==="INCLUDING_TAX",taxExcluded:!d.includes("totalExcludingTax")&&(l==null?void 0:l.price)==="INCLUDING_EXCLUDING_TAX",warning:pt(e),alert:Ct(e),quantityType:it,dropdownOptions:ct,onQuantity:G&&!f.has(e.uid)?C=>{N(e,C)}:void 0,onRemove:b&&!f.has(e.uid)?()=>N(e,0):void 0,discount:rt&&e.discounted&&e.discountPercentage?r("div",{"data-testid":"item-discount-percent",children:c.discountPercent.replace("{discount}",((v=e.discountPercentage)==null?void 0:v.toString())??"")}):void 0,savings:at&&e.discounted&&e.savingsAmount?w("div",{children:[r("span",{children:r(X,{...ht(e)})})," ",c.savingsAmount]}):void 0,rowTotalFooter:wt(e),footer:St(e),removeContent:Mt(e)},e.uid);return r(m,{name:"CartItem",slot:a==null?void 0:a.CartItem,context:{item:e,index:n,enableUpdateItemQuantity:G,enableRemoveItem:b,itemsLoading:f,loading:q,attributesToHide:d,cartTaxesConfig:l,quantityType:it,dropdownOptions:ct,showDiscount:rt,showSavings:at,dictionary:c,getImage:lt,getTitle:mt,getSku:kt,getPriceProps:ft,getTotalPriceProps:yt,getProductAttributes:It,getConfiguration:gt,getTotalExcludingTax:vt,getWarning:pt,getAlert:Ct,getRowTotalFooter:wt,getFooter:St,getSavingsAmount:ht},children:u},e.uid)}):null,xt=r(m,{name:"Heading",slot:a==null?void 0:a.Heading,context:{count:i==null?void 0:i.totalQuantity},children:r("div",{"data-testid":"default-cart-heading",children:c.heading.replace("({count})",i!=null&&i.totalQuantity?`(${i==null?void 0:i.totalQuantity.toString()})`:"")})}),te=xt.props.children.props.children,ee=()=>{const t=i==null?void 0:i.items.filter(e=>e.outOfStock);t==null||t.forEach(e=>{N(e,0)})},ne=_t(t=>t.outOfStock||t.insufficientQuantity||!1),At=i!=null&&i.hasOutOfStockItems?r($t,{"data-testid":"cart-out-of-stock-message",icon:r(Z,{source:Ft,size:"16"}),itemList:r(Y,{"data-testid":"out-of-stock-cart-items",children:ne}),type:"warning",heading:c.outOfStockHeading,description:c.outOfStockDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:i!=null&&i.hasFullyOutOfStockItems&&b?[{label:c.removeAction,onClick:ee}]:void 0}):void 0,p=_t(t=>!t.outOfStock&&!t.insufficientQuantity),Ot=E?Math.max(g||5,5):Math.min((i==null?void 0:i.totalQuantity)||5,5),Nt=(i==null?void 0:i.totalQuantity)>Ot,re=Nt&&!E&&Ot!=g,D=i!=null&&i.totalQuantity&&p?r(m,{name:"Footer",slot:a==null?void 0:a.CartSummaryFooter,context:{displayMaxItems:E,routeCart:h},"data-testid":"cart-cart-summary-footer-slot",className:"cart-cart-summary-footer",children:Nt?re?r(M,{className:"cart-cart-summary-list-footer__action",onClick:Zt,"data-testid":"view-more-items-button",variant:"tertiary",children:c.viewMore}):h&&r(M,{className:"cart-cart-summary-list-footer__action",href:h(),variant:"tertiary","data-testid":"view-cart-or-less-items-button",children:c.viewAll}):h&&r(M,{className:"cart-cart-summary-list-footer__action",href:h(),variant:"tertiary","data-testid":"view-cart-button",children:c.viewAll})}):null,Pt=()=>{if(!(i!=null&&i.items))return null;const t=[],e=i.items,n=a==null?void 0:a.UndoBanner,o=E?Math.max(g||(i==null?void 0:i.totalQuantity),5):Math.min(g??5,5);for(let s=0;s<=o;s++)Q&&A.filter(u=>u.index===s).forEach(({item:u,error:v,beingRemoved:C})=>{var S,F;const k=r($t,{type:v?"error":"info",heading:C?(S=c.itemBeingRemoved)==null?void 0:S.replace("{product}",P(u.name)):(F=c.itemRemoved)==null?void 0:F.replace("{product}",P(u.name)),description:v||c.itemRemovedDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:C?[]:[{label:c.undoAction,onClick:()=>V(u.uid),"aria-label":`${c.undoAction} remove ${P(u.name)}`},{label:c.dismissAction,onClick:()=>dt(u.uid),"aria-label":`${c.dismissAction} undo for ${P(u.name)}`}]},`undo-banner-${u.uid}`);t.push(n?r(m,{name:"UndoBanner",slot:n,context:{item:u,loading:q,error:v,onUndo:()=>V(u.uid),onDismiss:()=>dt(u.uid)},children:k},`undo-banner-${u.uid}`):k)}),s<o&&s<e.length&&t.push((p==null?void 0:p[s])||null);return r(Y,{"data-testid":"cart-list",children:t})},V=Tt(async t=>{O(n=>n.map(o=>o.item.uid===t?{...o,loading:!0,error:void 0}:o));const e=A.find(n=>n.item.uid===t);if(e)try{await he([{sku:e.item.sku,parentSku:e.item.topLevelSku,quantity:e.item.quantity,optionsUIDs:e.item.bundleOptionsUIDs||(e.item.selectedOptionsUIDs?Object.values(e.item.selectedOptionsUIDs):void 0),enteredOptions:e.item.customizableOptions?Object.entries(e.item.customizableOptions).map(([n,o])=>({uid:n,value:o})):void 0}]),O(n=>n.filter(o=>o.item.uid!==t))}catch(n){O(o=>o.map(s=>s.item.uid===t?{...s,error:(n==null?void 0:n.message)||"Failed to restore item."}:s))}},[A]);ie(jt,()=>({handleUndo:V}),[V]);const Lt=r(z,{children:Q&&A.length>0?Pt():r(m,{name:"EmptyCart",slot:a==null?void 0:a.EmptyCart,context:{},children:r(ce,{"data-testid":"empty-cart",ctaLinkURL:B==null?void 0:B()})})}),bt=i!=null&&i.totalQuantity||Q&&A.length>0?Q?A.length>0?Pt():r(Y,{"data-testid":"cart-list",children:p==null?void 0:p.slice(0,E?Math.max(g||(i==null?void 0:i.totalQuantity),5):Math.min(g??5,5))}):r(Y,{"data-testid":"cart-list",children:p==null?void 0:p.slice(0,E?Math.max(g||(i==null?void 0:i.totalQuantity),5):Math.min(g??5,5))}):null;return zt?r(ue,{"data-testid":"cart-summary-list-accordion",className:L(["cart-cart-summary-list-accordion",`cart-cart-summary-list__background--${et}`]),iconOpen:Ie,iconClose:pe,children:r(de,{title:te,"data-testid":"cart-summary-list-accordion__section",open:!0,renderContentWhenClosed:!0,children:r(Ut,{...st,"aria-expanded":!0,"aria-label":"TEST",className:"cart-cart-summary-list-accordion__list",loading:q,footer:_?void 0:D||(h?D:void 0),emptyCart:Lt,products:bt,outOfStockMessage:At,variant:et})})}):r(Ut,{...st,heading:H?void 0:xt,footer:_?void 0:D||(h?D:void 0),loading:q,emptyCart:Lt,products:bt,outOfStockMessage:At,variant:et})});Se.getInitialData=async function(){return Xt()};export{Se as C};
|
|
4
4
|
//# sourceMappingURL=CartSummaryList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CartSummaryList.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronRight.svg","/@dropins/storefront-cart/src/components/CartSummaryList/CartSummaryList.tsx","/@dropins/storefront-cart/src/lib/decodeHTMLEntities.ts","/@dropins/storefront-cart/src/containers/CartSummaryList/CartSummaryList.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Icon_Chevron_right_Base\", \"data-name\": \"Icon \\\\u2013 Chevron right \\\\u2013 Base\", xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Large\" }, /* @__PURE__ */ React.createElement(\"rect\", { id: \"Placement_area\", \"data-name\": \"Placement area\", width: 24, height: 24, fill: \"#fff\", opacity: 0 }), /* @__PURE__ */ React.createElement(\"g\", { id: \"Chevron_right_icon\", \"data-name\": \"Chevron right icon\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", id: \"chevron\", d: \"M199.75,367.5l4.255,-4.255-4.255,-4.255\", transform: \"translate(-189.25 -351.0)\", fill: \"none\", stroke: \"currentColor\" }))));\nexport default SvgChevronRight;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Divider, Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nimport '@/cart/components/CartSummaryList/CartSummaryList.css';\nexport interface CartSummaryListProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n heading?: VNode | null;\n footer?: VNode | null;\n emptyCart: VNode;\n products?: VNode | null;\n outOfStockMessage?: VNode | null;\n loading?: boolean;\n variant?: 'primary' | 'secondary';\n}\n\nexport const CartSummaryList: FunctionComponent<CartSummaryListProps> = ({\n className,\n children,\n heading,\n footer,\n emptyCart,\n products,\n outOfStockMessage,\n variant = 'primary',\n loading = true,\n ...props\n}) => {\n return (\n <div\n {...props}\n className={classes([\n 'cart-cart-summary-list',\n className,\n `cart-cart-summary-list__background--${variant}`,\n ])}\n >\n {loading ? (\n <CartSummaryListSkeleton />\n ) : (\n <>\n {(heading || outOfStockMessage) && (\n <div\n data-testid=\"cart-summary-list-heading-wrapper\"\n className={classes([\n 'cart-cart-summary-list__heading',\n ['cart-cart-summary-list__heading--full-width', !products],\n ])}\n >\n {heading && (\n <>\n <VComponent\n node={heading}\n className=\"cart-cart-summary-list__heading-text\"\n />\n <Divider\n variant=\"primary\"\n className={classes([\n 'cart-cart-summary-list__heading-divider',\n ])}\n />\n </>\n )}\n\n {outOfStockMessage && (\n <VComponent\n node={outOfStockMessage}\n className=\"cart-cart-summary-list__out-of-stock-message\"\n />\n )}\n </div>\n )}\n <div\n className={classes([\n 'cart-cart-summary-list__content',\n ['cart-cart-summary-list__content--empty', !products],\n ])}\n >\n {products || (\n <VComponent\n node={emptyCart}\n className=\"cart-cart-summary-list__empty-cart\"\n />\n )}\n </div>\n\n {footer && (\n <>\n <Divider\n variant=\"primary\"\n className={classes(['cart-cart-summary-list__footer-divider'])}\n />\n <VComponent\n node={footer}\n className=\"cart-cart-summary-list__footer-text\"\n />\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst CartSummaryListSkeleton: FunctionComponent = () => {\n return (\n <Skeleton\n data-testid=\"cart-summary-list-skeleton\"\n className=\"cart-cart-summary-list__skeleton\"\n rowGap=\"medium\"\n >\n <SkeletonRow\n variant=\"row\"\n size=\"xlarge\"\n fullWidth={true}\n lines={3}\n multilineGap=\"small\"\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Decodes HTML entities in a string (e.g., " -> \", & -> &)\n * @param text - The text containing HTML entities to decode\n * @returns The decoded text with HTML entities converted to their characters\n */\nexport const decodeHTMLEntities = (text: string): string => {\n if (typeof document === 'undefined') {\n // Server-side fallback - handle common HTML entities\n return text\n .replace(/"/g, '\"')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/'/g, \"'\")\n .replace(/'/g, \"'\");\n }\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value;\n};\n\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n useImperativeHandle,\n forwardRef,\n} from 'preact/compat';\nimport { Container, Slot, SlotProps, classes } from '@adobe-commerce/elsie/lib';\n\nimport {\n CartSummaryList as CartSummaryListComponent,\n EmptyCart,\n} from '@/cart/components';\n\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\nimport { decodeHTMLEntities } from '@/cart/lib/decodeHTMLEntities';\nimport { CartModel } from '@/cart/data/models/cart-model';\nimport {\n Accordion,\n AccordionSection,\n Button,\n CartItem,\n CartList,\n Icon,\n Image,\n ImageProps,\n InLineAlert,\n Price,\n PriceProps,\n Incrementer,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { VNode } from 'preact';\nimport { events, Cart } from '@adobe-commerce/event-bus';\nimport { state } from '@/cart/lib/state';\nimport {\n ChevronDown,\n ChevronRight,\n OrderError,\n WarningWithCircle,\n Trash,\n} from '@adobe-commerce/elsie/icons';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { addProductsToCart } from '@/cart/api/addProductsToCart/addProductsToCart';\n\nexport interface CartSummaryListProps extends HTMLAttributes<HTMLDivElement> {\n hideHeading?: boolean;\n hideFooter?: boolean;\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeEmptyCartCTA?: () => string;\n routeCart?: () => string;\n onItemUpdate?: ({ item }: { item: CartModel['items'][0] }) => void;\n onItemRemove?: ({ item }: { item: CartModel['items'][0] }) => void;\n maxItems?: number; // Maximum number of items to display\n showMaxItems?: boolean;\n attributesToHide?: SwitchableAttributes[]; // Product attributes to hide\n slots?: {\n Heading?: SlotProps;\n EmptyCart?: SlotProps;\n Footer?: SlotProps;\n Thumbnail?: SlotProps<{\n item: CartModel['items'][number];\n defaultImageProps: ImageProps;\n }>;\n ProductAttributes?: SlotProps;\n CartSummaryFooter?: SlotProps;\n CartItem?: SlotProps;\n UndoBanner?: SlotProps<{\n item: CartModel['items'][0];\n loading: boolean;\n error?: string;\n onUndo: () => void;\n onDismiss: () => void;\n }>;\n ItemTitle?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemPrice?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemQuantity?: SlotProps<{\n item: CartModel['items'][number];\n enableUpdateItemQuantity: boolean;\n handleItemQuantityUpdate: (\n item: CartModel['items'][number],\n quantity: number\n ) => void;\n itemsLoading: Set<string>;\n handleItemsError: (uid: string, message?: string) => void;\n handleItemsLoading: (uid: string, state: boolean) => void;\n onItemUpdate?: ({ item }: { item: CartModel['items'][number] }) => void;\n }>;\n ItemTotal?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemSku?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemRemoveAction?: SlotProps<{\n item: CartModel['items'][number];\n enableRemoveItem: boolean;\n handleItemQuantityUpdate: (\n item: CartModel['items'][number],\n quantity: number\n ) => void;\n handleItemsError: (uid: string, message?: string) => void;\n handleItemsLoading: (uid: string, state: boolean) => void;\n onItemUpdate?: ({ item }: { item: CartModel['items'][number] }) => void;\n itemsLoading: Set<string>;\n }>;\n };\n enableRemoveItem?: boolean;\n enableUpdateItemQuantity?: boolean;\n onItemsErrorsChange?: (errors: Map<string, string>) => void;\n accordion?: boolean;\n variant?: 'primary' | 'secondary';\n isLoading?: boolean;\n showDiscount?: boolean;\n showSavings?: boolean;\n quantityType?: 'stepper' | 'dropdown';\n dropdownOptions?: { value: string; text: string }[];\n undo?: boolean;\n /**\n * TEST ONLY: Allows test to inject recentlyRemovedItems for coverage\n */\n __testRecentlyRemovedItems?: Array<{\n item: CartModel['items'][0];\n index: number;\n loading: boolean;\n error?: string;\n beingRemoved?: boolean;\n }>;\n}\n\n// Attributes that can be hidden or shown\nexport type SwitchableAttributes =\n | 'name'\n | 'image'\n | 'configurations'\n | 'warning'\n | 'alert'\n | 'sku'\n | 'price'\n | 'quantity'\n | 'total'\n | 'totalDiscount'\n | 'totalExcludingTax';\n\n// Ref interface for exposing functions to tests\nexport interface CartSummaryListRef {\n handleUndo: (uid: string) => Promise<void>;\n}\n\nexport const CartSummaryList: Container<\n CartSummaryListProps,\n CartModel | null\n> = forwardRef<\n CartSummaryListRef,\n CartSummaryListProps & { initialData?: CartModel | null }\n>(\n (\n {\n initialData = null,\n hideHeading,\n hideFooter,\n routeProduct,\n routeEmptyCartCTA,\n routeCart,\n onItemUpdate,\n onItemRemove,\n maxItems, //if maxItems is not provided, default to show all items\n slots,\n attributesToHide = [],\n enableRemoveItem,\n enableUpdateItemQuantity,\n onItemsErrorsChange,\n accordion = false,\n variant = 'primary',\n isLoading,\n showMaxItems,\n showDiscount,\n showSavings,\n quantityType,\n dropdownOptions,\n undo = false,\n __testRecentlyRemovedItems,\n ...props\n },\n ref\n ) => {\n const [loading, setLoading] = useState(!initialData);\n\n const [cartModelData, setCartModelData] = useState<CartModel | null>(\n initialData\n );\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const [itemsErrors, setItemErrors] = useState<Map<string, string>>(\n new Map()\n );\n\n const [recentlyRemovedItems, setRecentlyRemovedItems] = useState<\n {\n item: CartModel['items'][0];\n index: number;\n loading: boolean;\n error?: string;\n beingRemoved?: boolean;\n }[]\n >(__testRecentlyRemovedItems || []);\n\n // TEST ONLY: allow test to update recentlyRemovedItems after mount\n useEffect(() => {\n if (\n process.env.NODE_ENV === 'test' &&\n __testRecentlyRemovedItems &&\n recentlyRemovedItems !== __testRecentlyRemovedItems\n ) {\n setRecentlyRemovedItems(__testRecentlyRemovedItems);\n }\n }, [__testRecentlyRemovedItems, recentlyRemovedItems]);\n\n const cartTaxesConfig = state.config?.shoppingCartDisplaySetting;\n\n const [displayMaxItems, setDisplayMaxItems] = useState<boolean>(\n showMaxItems ? true : !maxItems && !showMaxItems\n );\n\n const dictionary = useText({\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n heading: 'Cart.Cart.heading',\n message: 'Cart.CartItem.message',\n recipient: 'Cart.CartItem.recipient',\n regularPrice: 'Cart.CartItem.regularPrice',\n discountedPrice: 'Cart.CartItem.discountedPrice',\n sender: 'Cart.CartItem.sender',\n lowInventory: 'Cart.CartItem.lowInventory',\n insufficientQuantity: 'Cart.CartItem.insufficientQuantity',\n insufficientQuantityGeneral: 'Cart.CartItem.insufficientQuantityGeneral',\n outOfStockHeading: 'Cart.OutOfStockMessage.heading',\n outOfStockDescription: 'Cart.OutOfStockMessage.message',\n outOfStockAlert: 'Cart.OutOfStockMessage.alert',\n removeAction: 'Cart.OutOfStockMessage.action',\n notAvailableMessage: 'Cart.CartItem.notAvailableMessage',\n viewMore: 'Cart.Cart.viewMore',\n viewAll: 'Cart.Cart.viewAll',\n discountPercent: 'Cart.CartItem.discountPercentage',\n savingsAmount: 'Cart.CartItem.savingsAmount',\n itemBeingRemoved: 'Cart.CartItem.itemBeingRemoved',\n itemRemoved: 'Cart.CartItem.itemRemoved',\n itemRemovedDescription: 'Cart.CartItem.itemRemovedDescription',\n undoAction: 'Cart.CartItem.undoAction',\n dismissAction: 'Cart.CartItem.dismissAction',\n remove: 'Dropin.CartItem.remove.label',\n removeDefault: 'Dropin.CartItem.removeDefault.label',\n quantity: 'Dropin.CartItem.quantity.label',\n });\n\n const handleItemsLoading = (uid: string, state: boolean) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n const handleItemsError = (uid: string, message?: string) => {\n setItemErrors((prev) => {\n message ? prev.set(uid, message) : prev.delete(uid);\n return new Map(prev);\n });\n };\n\n // Helper to add to recently removed items for undo\n function addToRecentlyRemovedItems(uid: string) {\n const cart = getPersistedCartData();\n const item = cart?.items.find((i) => i.uid === uid);\n if (item) {\n setRecentlyRemovedItems((prev) => {\n const index = cart.items.findIndex((i) => i.uid === uid);\n if (index !== -1 && !prev.some((r) => r.item.uid === uid)) {\n // Emit the event for analytics or listeners\n events.emit('cart/product/removed', { item, index });\n return [\n ...prev,\n { item, index, error: undefined, beingRemoved: true },\n ];\n }\n return prev;\n });\n }\n }\n\n const handleItemQuantityUpdate = (\n item: CartModel['items'][0],\n quantity: number\n ) => {\n // initial values\n handleItemsLoading(item.uid, true);\n\n // Reset temporary error messages\n setItemErrors(new Map());\n\n if (enableRemoveItem && quantity === 0) {\n // Add to recently removed items for undo\n addToRecentlyRemovedItems(item.uid);\n // use callback for removing (original logic)\n updateProductsFromCart([{ uid: item.uid, quantity }])\n .then(() => {\n onItemRemove?.({ item });\n })\n .finally(() => {\n handleItemsLoading(item.uid, false);\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === item.uid ? { ...r, beingRemoved: false } : r\n )\n );\n })\n .catch((error: any) => {\n console.warn(error);\n });\n }\n // use callback for updating\n else {\n enableUpdateItemQuantity &&\n updateProductsFromCart([{ uid: item.uid, quantity }])\n .then(() => {\n onItemUpdate?.({ item });\n })\n .finally(() => {\n handleItemsLoading(item.uid, false);\n })\n .catch((error: Error) => {\n handleItemsError(item.uid, error.message);\n });\n }\n };\n\n const handleDismiss = (uid: string) => {\n setRecentlyRemovedItems((prev) => prev.filter((r) => r.item.uid !== uid));\n };\n\n // Display max items\n const handleMaxItemsView = useCallback(() => {\n setDisplayMaxItems((prev) => !prev);\n }, []);\n\n useEffect(() => {\n const cartDataEvent = events.on(\n 'cart/data',\n (payload: Cart | null) => {\n setCartModelData(payload as CartModel);\n setLoading(!!isLoading);\n },\n { eager: true }\n );\n\n return () => {\n cartDataEvent?.off();\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clear recently removed items when undo is disabled\n useEffect(() => {\n if (!undo) {\n setRecentlyRemovedItems([]);\n }\n }, [undo]);\n\n // Call onItemsErrorsChange whenever itemsErrors changes\n useEffect(() => {\n if (onItemsErrorsChange) {\n onItemsErrorsChange(itemsErrors);\n }\n }, [itemsErrors, onItemsErrorsChange]);\n\n // Helper functions\n const getImage = (item: CartModel['items'][0], index: number) => {\n if (attributesToHide.includes('image')) {\n return undefined;\n }\n\n const defaultImageProps: ImageProps = {\n loading: index < 4 ? 'eager' : 'lazy',\n src: item.image.src,\n alt: item.image.alt,\n width: '300',\n height: '300',\n params: { width: 300 },\n };\n\n const imageComponent = (\n <Image data-testid=\"cart-list-item-image\" {...defaultImageProps} />\n );\n return (\n <Slot\n name=\"Thumbnail\"\n slot={slots?.Thumbnail}\n context={{\n item,\n defaultImageProps,\n }}\n >\n {routeProduct ? (\n <a href={routeProduct(item)}>{imageComponent}</a>\n ) : (\n imageComponent\n )}\n </Slot>\n );\n };\n\n const getTitle = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('name')) {\n return undefined;\n }\n\n return (\n <span data-testid=\"cart-list-item-title\">\n {routeProduct ? (\n <a href={routeProduct(item)}>{decodeHTMLEntities(item.name)}</a>\n ) : (\n decodeHTMLEntities(item.name)\n )}\n </span>\n );\n };\n\n const getConfiguration = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('configurations')) {\n return undefined;\n }\n\n const configuration = {\n ...item.bundleOptions,\n ...item.selectedOptions,\n ...item.customizableOptions,\n ...(item.recipient ? { [dictionary.recipient]: item.recipient } : null),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : null),\n ...(item.sender ? { [dictionary.sender]: item.sender } : null),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : null),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : null),\n };\n\n if (Object.keys(configuration).length === 0) {\n return undefined;\n }\n\n return configuration;\n };\n\n const getPriceProps = (item: CartModel['items'][0]) => {\n return cartTaxesConfig?.price === 'INCLUDING_TAX'\n ? item.discounted\n ? {\n amount: item.regularPrice.value,\n currency: item.regularPrice.currency,\n style: { font: 'inherit' },\n 'data-testid': 'including-tax-item-price',\n }\n : {\n amount: item.taxedPrice?.value,\n currency: item.taxedPrice?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'including-tax-item-price',\n }\n : {\n amount: item.regularPrice?.value,\n currency: item.regularPrice?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'regular-item-price',\n };\n };\n\n const getSavingsAmount = (item: CartModel['items'][0]) => {\n return {\n amount: item.savingsAmount?.value,\n currency: item.savingsAmount?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'item-savings-amount',\n };\n };\n\n const getTotalExcludingTax = (item: CartModel['items'][0]) => {\n return cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX' ? (\n <Price\n amount={item.rowTotal.value}\n currency={item.rowTotal.currency}\n data-testid=\"excluding-tax-total\"\n aria-label={dictionary.regularPrice}\n />\n ) : undefined;\n };\n\n const getTotalPriceProps = (item: CartModel['items'][0]) => {\n const totalProps: PriceProps = {\n 'aria-label': dictionary.regularPrice,\n };\n const discountProps: PriceProps | null = item.discounted ? {} : null;\n\n if (\n ['INCLUDING_TAX', 'INCLUDING_EXCLUDING_TAX'].includes(\n cartTaxesConfig?.price as string\n )\n ) {\n totalProps['amount'] = item.rowTotalIncludingTax?.value;\n totalProps['currency'] = item.rowTotalIncludingTax?.currency;\n totalProps['variant'] = item.discounted ? 'strikethrough' : 'default';\n // @ts-ignore\n totalProps['data-testid'] = 'including-tax-item-total';\n\n if (discountProps) {\n totalProps['amount'] = item.total?.value;\n totalProps['currency'] = item.total?.currency;\n\n discountProps['amount'] = item.rowTotalIncludingTax?.value;\n discountProps['currency'] = item.rowTotalIncludingTax?.currency;\n discountProps['sale'] = true;\n discountProps['aria-label'] = dictionary.discountedPrice;\n // @ts-ignore\n discountProps['data-testid'] = 'discount-total';\n }\n } else {\n totalProps['amount'] = item.total?.value;\n totalProps['currency'] = item.total?.currency;\n totalProps['variant'] = item.discounted ? 'strikethrough' : 'default';\n // @ts-ignore\n totalProps['data-testid'] = 'regular-item-total';\n\n if (discountProps) {\n discountProps['amount'] = item.discountedTotal?.value;\n discountProps['currency'] = item.discountedTotal?.currency;\n discountProps['sale'] = true;\n discountProps['aria-label'] = dictionary.regularPrice;\n // @ts-ignore\n discountProps['data-testid'] = 'discount-total';\n }\n }\n\n return {\n totalProps,\n discountProps,\n };\n };\n\n const getWarning = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('warning')) {\n return undefined;\n }\n\n const error = itemsErrors.get(item.uid);\n const quantityError = itemsErrors\n .get(item.uid)\n ?.includes('The requested qty is not available');\n const itemIsLoading = itemsLoading.has(item.uid);\n\n const insufficientQuantityText =\n item.insufficientQuantity && item.stockLevel\n ? item.stockLevel === 'noNumber'\n ? dictionary.insufficientQuantityGeneral\n : dictionary.insufficientQuantity\n .replace('{inventory}', item.stockLevel?.toString())\n .replace('{count}', item.quantity.toString())\n : '';\n\n const lowInventoryText =\n item.lowInventory &&\n item.onlyXLeftInStock &&\n dictionary.lowInventory.replace(\n '{count}',\n item.onlyXLeftInStock?.toString()\n );\n\n const notAvailableQuantity =\n !item.outOfStock && error && quantityError\n ? dictionary.notAvailableMessage\n : error;\n\n return !itemIsLoading &&\n (error || item.insufficientQuantity || item.lowInventory) ? (\n <span data-testid=\"item-warning\">\n <Icon source={WarningWithCircle} size={'16'} />\n {notAvailableQuantity || insufficientQuantityText || lowInventoryText}\n </span>\n ) : undefined;\n };\n\n const getAlert = (item: CartModel['items'][0]) => {\n if (attributesToHide?.includes('alert')) {\n return undefined;\n }\n const itemIsLoading = itemsLoading.has(item.uid);\n\n return !itemIsLoading && item.outOfStock ? (\n <span data-testid=\"item-alert\">\n <Icon source={OrderError} size={'16'} />\n {dictionary.outOfStockAlert}\n </span>\n ) : undefined;\n };\n\n const getProductAttributes = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"ProductAttributes\"\n slot={slots?.ProductAttributes}\n context={{\n item,\n }}\n />\n );\n };\n\n const getSku = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('sku')) {\n return undefined;\n }\n return <span data-testid=\"cart-list-item-sku\">{item.sku}</span>;\n };\n\n const getFooter = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"Footer\"\n slot={slots?.Footer}\n context={{ item, handleItemsLoading, handleItemsError, onItemUpdate }}\n />\n );\n };\n\n const getRemoveContent = (item: CartModel['items'][0]) => {\n if (!enableRemoveItem) {\n return undefined;\n }\n\n return (\n <Slot\n name=\"ItemRemoveAction\"\n slot={slots?.ItemRemoveAction}\n context={{\n item,\n enableRemoveItem,\n handleItemQuantityUpdate,\n handleItemsError,\n handleItemsLoading,\n onItemUpdate,\n itemsLoading,\n }}\n >\n {/* Default remove button */}\n <Button\n data-testid=\"cart-item-remove-button\"\n className={classes(['dropin-cart-item__remove'])}\n variant=\"tertiary\"\n onClick={() => handleItemQuantityUpdate(item, 0)}\n disabled={itemsLoading.has(item.uid)}\n icon={\n <Icon\n data-testid=\"cart-item-remove-icon\"\n source={Trash}\n size=\"24\"\n stroke=\"2\"\n viewBox=\"0 0 24 24\"\n aria-label={\n dictionary.remove?.replace('{product}', decodeHTMLEntities(item.name)) ||\n dictionary.removeDefault\n }\n />\n }\n />\n </Slot>\n );\n };\n\n const getQuantityContent = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('quantity')) {\n return undefined;\n }\n\n if (!enableUpdateItemQuantity) {\n return undefined;\n }\n\n return (\n <Slot\n name=\"ItemQuantity\"\n slot={slots?.ItemQuantity}\n context={{\n item,\n enableUpdateItemQuantity,\n handleItemQuantityUpdate,\n itemsLoading,\n handleItemsError,\n handleItemsLoading,\n onItemUpdate,\n }}\n >\n <Incrementer\n value={item.quantity}\n min={1}\n onValue={(value) => handleItemQuantityUpdate(item, Number(value))}\n name=\"quantity\"\n disabled={itemsLoading.has(item.uid)}\n aria-label={dictionary.quantity}\n />\n </Slot>\n );\n };\n\n // Re-usable function to get a filtered list of cart items\n const getCartItemEntries = (\n filterCallback: (item: CartModel['items'][0]) => boolean\n ) => {\n return cartModelData?.totalQuantity\n ? cartModelData.items.filter(filterCallback).map((item, index) => {\n const { totalProps, discountProps } = getTotalPriceProps(item);\n\n const defaultCartItem = (\n <CartItem\n updating={itemsLoading?.has(item.uid)}\n loading={loading}\n key={item.uid}\n data-testid={`cart-list-item-entry-${item.uid}`}\n image={getImage(item, index)}\n title={\n <Slot\n name=\"ItemTitle\"\n slot={slots?.ItemTitle}\n context={{ item }}\n >\n {getTitle(item)}\n </Slot>\n }\n sku={\n attributesToHide.includes('sku') ? undefined : (\n <Slot\n name=\"ItemSku\"\n slot={slots?.ItemSku}\n context={{ item }}\n >\n {getSku(item)}\n </Slot>\n )\n }\n price={\n attributesToHide.includes('price') ? undefined : (\n <Slot\n name=\"ItemPrice\"\n slot={slots?.ItemPrice}\n context={{ item }}\n slotTag=\"span\"\n >\n <Price {...getPriceProps(item)} />\n </Slot>\n )\n }\n quantity={\n attributesToHide.includes('quantity')\n ? undefined\n : item.quantity\n }\n quantityContent={getQuantityContent(item)}\n total={\n <>\n {attributesToHide.includes('total') ? undefined : (\n <Slot\n name=\"ItemTotal\"\n slot={slots?.ItemTotal}\n context={{ item }}\n >\n <Price {...totalProps} />\n </Slot>\n )}\n {attributesToHide.includes('totalDiscount')\n ? undefined\n : discountProps && (\n <Slot\n name=\"ItemTotal\"\n slot={slots?.ItemTotal}\n context={{ item }}\n >\n <Price {...discountProps} />\n </Slot>\n )}\n </>\n }\n attributes={getProductAttributes(item)}\n configurations={getConfiguration(item)}\n totalExcludingTax={\n attributesToHide.includes('totalExcludingTax')\n ? undefined\n : getTotalExcludingTax(item)\n }\n taxIncluded={cartTaxesConfig?.price === 'INCLUDING_TAX'}\n taxExcluded={\n !attributesToHide.includes('totalExcludingTax') &&\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX'\n }\n warning={getWarning(item)}\n alert={getAlert(item)}\n quantityType={quantityType}\n dropdownOptions={dropdownOptions}\n onQuantity={\n enableUpdateItemQuantity && !itemsLoading.has(item.uid)\n ? (newQuantity) => {\n handleItemQuantityUpdate(item, newQuantity);\n }\n : undefined\n }\n onRemove={\n enableRemoveItem && !itemsLoading.has(item.uid)\n ? () => handleItemQuantityUpdate(item, 0)\n : undefined\n }\n discount={\n showDiscount && item.discounted && item.discountPercentage ? (\n <div data-testid=\"item-discount-percent\">\n {dictionary.discountPercent.replace(\n '{discount}',\n item.discountPercentage?.toString() ?? ''\n )}\n </div>\n ) : undefined\n }\n savings={\n showSavings && item.discounted && item.savingsAmount ? (\n <div>\n <span>\n <Price {...getSavingsAmount(item)} />\n </span>\n \n {dictionary.savingsAmount}\n </div>\n ) : undefined\n }\n footer={getFooter(item)}\n removeContent={getRemoveContent(item)}\n />\n );\n\n return (\n <Slot\n key={item.uid}\n name=\"CartItem\"\n slot={slots?.CartItem}\n context={{\n item,\n index,\n enableUpdateItemQuantity,\n enableRemoveItem,\n itemsLoading,\n loading,\n attributesToHide,\n cartTaxesConfig,\n quantityType,\n dropdownOptions,\n showDiscount,\n showSavings,\n dictionary,\n getImage,\n getTitle,\n getSku,\n getPriceProps,\n getTotalPriceProps,\n getProductAttributes,\n getConfiguration,\n getTotalExcludingTax,\n getWarning,\n getAlert,\n getFooter,\n getSavingsAmount,\n }}\n >\n {defaultCartItem}\n </Slot>\n );\n })\n : null;\n };\n\n const heading = (\n <Slot\n name=\"Heading\"\n slot={slots?.Heading}\n context={{\n count: cartModelData?.totalQuantity,\n }}\n >\n <div data-testid=\"default-cart-heading\">\n {dictionary.heading.replace(\n '({count})',\n cartModelData?.totalQuantity\n ? `(${cartModelData?.totalQuantity.toString()})`\n : ''\n )}\n </div>\n </Slot>\n );\n\n // Heading Section text for screen reader\n const headingSection = heading.props.children.props.children;\n\n // Out of Stock Items\n const handleRemoveOutOfStockItems = () => {\n const outOfStockItems = cartModelData?.items.filter(\n (item) => item.outOfStock\n );\n\n outOfStockItems?.forEach((item) => {\n handleItemQuantityUpdate(item, 0);\n });\n };\n\n const outOfStockEntries = getCartItemEntries(\n (item) => item.outOfStock || item.insufficientQuantity || false\n );\n\n const outOfStockMessage = cartModelData?.hasOutOfStockItems ? (\n <InLineAlert\n data-testid=\"cart-out-of-stock-message\"\n icon={<Icon source={OrderError} size={'16'} />}\n itemList={\n <CartList data-testid=\"out-of-stock-cart-items\">\n {outOfStockEntries}\n </CartList>\n }\n type=\"warning\"\n heading={dictionary.outOfStockHeading}\n description={dictionary.outOfStockDescription}\n variant=\"primary\"\n actionButtonPosition=\"bottom\"\n additionalActions={\n cartModelData?.hasFullyOutOfStockItems && enableRemoveItem\n ? [\n {\n label: dictionary.removeAction,\n onClick: handleRemoveOutOfStockItems,\n },\n ]\n : undefined\n }\n />\n ) : undefined;\n\n // Main Product Entries\n const mainProductEntries = getCartItemEntries(\n (item) => !item.outOfStock && !item.insufficientQuantity\n );\n\n const numOfVisibleItems = displayMaxItems\n ? Math.max(maxItems || 5, 5)\n : Math.min(cartModelData?.totalQuantity || 5, 5);\n\n const hasHiddenItems = cartModelData?.totalQuantity > numOfVisibleItems;\n\n const canDisplayMoreItems =\n hasHiddenItems && !displayMaxItems && numOfVisibleItems != maxItems;\n\n const footerActions =\n cartModelData?.totalQuantity && mainProductEntries ? (\n <Slot\n name=\"Footer\"\n slot={slots?.CartSummaryFooter}\n context={{ displayMaxItems, routeCart }}\n data-testid=\"cart-cart-summary-footer-slot\"\n className=\"cart-cart-summary-footer\"\n >\n {hasHiddenItems ? (\n canDisplayMoreItems ? (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n onClick={handleMaxItemsView}\n data-testid=\"view-more-items-button\"\n variant=\"tertiary\"\n >\n {dictionary.viewMore}\n </Button>\n ) : (\n routeCart && (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n href={routeCart()}\n variant=\"tertiary\"\n data-testid=\"view-cart-or-less-items-button\"\n >\n {dictionary.viewAll}\n </Button>\n )\n )\n ) : (\n routeCart && (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n href={routeCart()}\n variant=\"tertiary\"\n data-testid=\"view-cart-button\"\n >\n {dictionary.viewAll}\n </Button>\n )\n )}\n </Slot>\n ) : null;\n\n const renderCartListWithUndoBanners = () => {\n if (!cartModelData?.items) return null;\n const entries: (VNode | null)[] = [];\n const items = cartModelData.items;\n const UndoBanner = slots?.UndoBanner;\n\n // Calculate how many items to show (same logic as original)\n const numItemsToShow = displayMaxItems\n ? Math.max(!maxItems ? cartModelData?.totalQuantity : maxItems, 5)\n : Math.min(maxItems ?? 5, 5);\n\n // Only process items up to the limit\n for (let i = 0; i <= numItemsToShow; i++) {\n // Render undo banners for this index only if undo is enabled\n if (undo) {\n recentlyRemovedItems\n .filter((r) => r.index === i)\n .forEach(({ item, error, beingRemoved }) => {\n const defaultUndoBanner = (\n <InLineAlert\n key={`undo-banner-${item.uid}`}\n type={error ? 'error' : 'info'}\n heading={\n beingRemoved\n ? dictionary.itemBeingRemoved?.replace(\n '{product}',\n decodeHTMLEntities(item.name)\n )\n : dictionary.itemRemoved?.replace('{product}', decodeHTMLEntities(item.name))\n }\n description={error || dictionary.itemRemovedDescription}\n variant=\"primary\"\n actionButtonPosition=\"bottom\"\n additionalActions={\n beingRemoved\n ? [] // Hide buttons while removing\n : [\n {\n label: dictionary.undoAction,\n onClick: () => handleUndo(item.uid),\n 'aria-label': `${dictionary.undoAction} remove ${decodeHTMLEntities(item.name)}`,\n },\n {\n label: dictionary.dismissAction,\n onClick: () => handleDismiss(item.uid),\n 'aria-label': `${dictionary.dismissAction} undo for ${decodeHTMLEntities(item.name)}`,\n },\n ]\n }\n />\n );\n\n entries.push(\n UndoBanner ? (\n <Slot\n name=\"UndoBanner\"\n slot={UndoBanner}\n context={{\n item,\n loading,\n error,\n onUndo: () => handleUndo(item.uid),\n onDismiss: () => handleDismiss(item.uid),\n }}\n key={`undo-banner-${item.uid}`}\n >\n {defaultUndoBanner}\n </Slot>\n ) : (\n defaultUndoBanner\n )\n );\n });\n }\n // Render cart item if not at the end and within the slice limit\n if (i < numItemsToShow && i < items.length) {\n entries.push(mainProductEntries?.[i] || null);\n }\n }\n return <CartList data-testid=\"cart-list\">{entries}</CartList>;\n };\n // Undo handler implementation\n const handleUndo = useCallback(\n async (uid: string) => {\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === uid ? { ...r, loading: true, error: undefined } : r\n )\n );\n const removed = recentlyRemovedItems.find((r) => r.item.uid === uid);\n if (!removed) return;\n try {\n await addProductsToCart([\n {\n sku: removed.item.sku,\n parentSku: removed.item.topLevelSku,\n quantity: removed.item.quantity,\n optionsUIDs:\n removed.item.bundleOptionsUIDs || // Use bundle option UIDs for bundle products\n (removed.item.selectedOptionsUIDs\n ? Object.values(removed.item.selectedOptionsUIDs)\n : undefined),\n enteredOptions: removed.item.customizableOptions\n ? Object.entries(removed.item.customizableOptions).map(\n ([uid, value]) => ({ uid, value })\n )\n : undefined,\n },\n ]);\n setRecentlyRemovedItems((prev) =>\n prev.filter((r) => r.item.uid !== uid)\n );\n } catch (error: any) {\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === uid\n ? { ...r, error: error?.message || 'Failed to restore item.' }\n : r\n )\n );\n }\n },\n [recentlyRemovedItems]\n );\n\n // Expose handleUndo to parent components via ref (for testing)\n useImperativeHandle(\n ref,\n () => ({\n handleUndo,\n }),\n [handleUndo]\n );\n\n // Replace the emptyCart definition with conditional rendering for undo banners\n const emptyCart = (\n <>\n {undo && recentlyRemovedItems.length > 0 ? (\n renderCartListWithUndoBanners()\n ) : (\n <Slot name=\"EmptyCart\" slot={slots?.EmptyCart} context={{}}>\n <EmptyCart\n data-testid=\"empty-cart\"\n ctaLinkURL={routeEmptyCartCTA?.()}\n />\n </Slot>\n )}\n </>\n );\n\n // Choose between original product entries and undo banner version\n const productEntries =\n cartModelData?.totalQuantity ||\n (undo && recentlyRemovedItems.length > 0) ? (\n !undo ? (\n <CartList data-testid=\"cart-list\">\n {mainProductEntries?.slice(\n 0,\n displayMaxItems\n ? Math.max(\n !maxItems ? cartModelData?.totalQuantity : maxItems,\n 5\n )\n : Math.min(maxItems ?? 5, 5)\n )}\n </CartList>\n ) : recentlyRemovedItems.length > 0 ? (\n renderCartListWithUndoBanners()\n ) : (\n <CartList data-testid=\"cart-list\">\n {mainProductEntries?.slice(\n 0,\n displayMaxItems\n ? Math.max(\n !maxItems ? cartModelData?.totalQuantity : maxItems,\n 5\n )\n : Math.min(maxItems ?? 5, 5)\n )}\n </CartList>\n )\n ) : null;\n\n return accordion ? (\n <Accordion\n data-testid=\"cart-summary-list-accordion\"\n className={classes([\n `cart-cart-summary-list-accordion`,\n `cart-cart-summary-list__background--${variant}`,\n ])}\n iconOpen={ChevronRight}\n iconClose={ChevronDown}\n >\n <AccordionSection\n title={headingSection}\n data-testid=\"cart-summary-list-accordion__section\"\n open={true}\n renderContentWhenClosed={true}\n >\n <CartSummaryListComponent\n {...props}\n aria-expanded={true}\n aria-label={'TEST'}\n className={`cart-cart-summary-list-accordion__list`}\n loading={loading}\n footer={\n hideFooter\n ? undefined\n : footerActions || (routeCart ? footerActions : undefined)\n }\n emptyCart={emptyCart}\n products={productEntries}\n outOfStockMessage={outOfStockMessage}\n variant={variant}\n />\n </AccordionSection>\n </Accordion>\n ) : (\n <CartSummaryListComponent\n {...props}\n heading={hideHeading ? undefined : heading}\n footer={\n hideFooter\n ? undefined\n : footerActions || (routeCart ? footerActions : undefined)\n }\n loading={loading}\n emptyCart={emptyCart}\n products={productEntries}\n outOfStockMessage={outOfStockMessage}\n variant={variant}\n />\n );\n }\n);\n\nCartSummaryList.getInitialData = async function () {\n return getPersistedCartData();\n};\n"],"names":["SvgChevronRight","props","React","CartSummaryList","className","children","heading","footer","emptyCart","products","outOfStockMessage","variant","loading","jsx","classes","CartSummaryListSkeleton","jsxs","Fragment","VComponent","Divider","Skeleton","SkeletonRow","decodeHTMLEntities","text","textarea","forwardRef","initialData","hideHeading","hideFooter","routeProduct","routeEmptyCartCTA","routeCart","onItemUpdate","onItemRemove","maxItems","slots","attributesToHide","enableRemoveItem","enableUpdateItemQuantity","onItemsErrorsChange","accordion","isLoading","showMaxItems","showDiscount","showSavings","quantityType","dropdownOptions","undo","__testRecentlyRemovedItems","ref","setLoading","useState","cartModelData","setCartModelData","itemsLoading","setItemLoading","itemsErrors","setItemErrors","recentlyRemovedItems","setRecentlyRemovedItems","useEffect","cartTaxesConfig","_a","state","displayMaxItems","setDisplayMaxItems","dictionary","useText","handleItemsLoading","uid","prev","handleItemsError","message","addToRecentlyRemovedItems","cart","getPersistedCartData","item","i","index","r","events","handleItemQuantityUpdate","quantity","updateProductsFromCart","error","handleDismiss","handleMaxItemsView","useCallback","cartDataEvent","payload","getImage","defaultImageProps","imageComponent","Image","Slot","getTitle","getConfiguration","configuration","getPriceProps","_b","_c","_d","getSavingsAmount","getTotalExcludingTax","Price","getTotalPriceProps","totalProps","discountProps","_e","_f","_g","_h","_i","_j","getWarning","quantityError","itemIsLoading","insufficientQuantityText","lowInventoryText","notAvailableQuantity","Icon","WarningWithCircle","getAlert","OrderError","getProductAttributes","getSku","getFooter","getRemoveContent","Button","Trash","getQuantityContent","Incrementer","value","getCartItemEntries","filterCallback","defaultCartItem","CartItem","newQuantity","headingSection","handleRemoveOutOfStockItems","outOfStockItems","outOfStockEntries","InLineAlert","CartList","mainProductEntries","numOfVisibleItems","hasHiddenItems","canDisplayMoreItems","footerActions","renderCartListWithUndoBanners","entries","items","UndoBanner","numItemsToShow","beingRemoved","defaultUndoBanner","handleUndo","removed","addProductsToCart","useImperativeHandle","EmptyCart","productEntries","Accordion","ChevronRight","ChevronDown","AccordionSection","CartSummaryListComponent"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"CartSummaryList.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronRight.svg","/@dropins/storefront-cart/src/components/CartSummaryList/CartSummaryList.tsx","/@dropins/storefront-cart/src/lib/decodeHTMLEntities.ts","/@dropins/storefront-cart/src/containers/CartSummaryList/CartSummaryList.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Icon_Chevron_right_Base\", \"data-name\": \"Icon \\\\u2013 Chevron right \\\\u2013 Base\", xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Large\" }, /* @__PURE__ */ React.createElement(\"rect\", { id: \"Placement_area\", \"data-name\": \"Placement area\", width: 24, height: 24, fill: \"#fff\", opacity: 0 }), /* @__PURE__ */ React.createElement(\"g\", { id: \"Chevron_right_icon\", \"data-name\": \"Chevron right icon\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", id: \"chevron\", d: \"M199.75,367.5l4.255,-4.255-4.255,-4.255\", transform: \"translate(-189.25 -351.0)\", fill: \"none\", stroke: \"currentColor\" }))));\nexport default SvgChevronRight;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Divider, Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nimport '@/cart/components/CartSummaryList/CartSummaryList.css';\nexport interface CartSummaryListProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n heading?: VNode | null;\n footer?: VNode | null;\n emptyCart: VNode;\n products?: VNode | null;\n outOfStockMessage?: VNode | null;\n loading?: boolean;\n variant?: 'primary' | 'secondary';\n}\n\nexport const CartSummaryList: FunctionComponent<CartSummaryListProps> = ({\n className,\n children,\n heading,\n footer,\n emptyCart,\n products,\n outOfStockMessage,\n variant = 'primary',\n loading = true,\n ...props\n}) => {\n return (\n <div\n {...props}\n className={classes([\n 'cart-cart-summary-list',\n className,\n `cart-cart-summary-list__background--${variant}`,\n ])}\n >\n {loading ? (\n <CartSummaryListSkeleton />\n ) : (\n <>\n {(heading || outOfStockMessage) && (\n <div\n data-testid=\"cart-summary-list-heading-wrapper\"\n className={classes([\n 'cart-cart-summary-list__heading',\n ['cart-cart-summary-list__heading--full-width', !products],\n ])}\n >\n {heading && (\n <>\n <VComponent\n node={heading}\n className=\"cart-cart-summary-list__heading-text\"\n />\n <Divider\n variant=\"primary\"\n className={classes([\n 'cart-cart-summary-list__heading-divider',\n ])}\n />\n </>\n )}\n\n {outOfStockMessage && (\n <VComponent\n node={outOfStockMessage}\n className=\"cart-cart-summary-list__out-of-stock-message\"\n />\n )}\n </div>\n )}\n <div\n className={classes([\n 'cart-cart-summary-list__content',\n ['cart-cart-summary-list__content--empty', !products],\n ])}\n >\n {products || (\n <VComponent\n node={emptyCart}\n className=\"cart-cart-summary-list__empty-cart\"\n />\n )}\n </div>\n\n {footer && (\n <>\n <Divider\n variant=\"primary\"\n className={classes(['cart-cart-summary-list__footer-divider'])}\n />\n <VComponent\n node={footer}\n className=\"cart-cart-summary-list__footer-text\"\n />\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst CartSummaryListSkeleton: FunctionComponent = () => {\n return (\n <Skeleton\n data-testid=\"cart-summary-list-skeleton\"\n className=\"cart-cart-summary-list__skeleton\"\n rowGap=\"medium\"\n >\n <SkeletonRow\n variant=\"row\"\n size=\"xlarge\"\n fullWidth={true}\n lines={3}\n multilineGap=\"small\"\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Decodes HTML entities in a string (e.g., " -> \", & -> &)\n * Uses DOMParser to safely decode entities and extract text content.\n * Note: This will also strip any HTML tags from the decoded result.\n * @param text - The text containing HTML entities to decode\n * @returns The decoded text with HTML entities converted to their characters\n */\nexport const decodeHTMLEntities = (text: string): string => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(text, 'text/html');\n return doc.body.textContent || '';\n};\n\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n useImperativeHandle,\n forwardRef,\n} from 'preact/compat';\nimport { Container, Slot, SlotProps, classes } from '@adobe-commerce/elsie/lib';\n\nimport {\n CartSummaryList as CartSummaryListComponent,\n EmptyCart,\n} from '@/cart/components';\n\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\nimport { decodeHTMLEntities } from '@/cart/lib/decodeHTMLEntities';\nimport { CartModel } from '@/cart/data/models/cart-model';\nimport {\n Accordion,\n AccordionSection,\n Button,\n CartItem,\n CartList,\n Icon,\n Image,\n ImageProps,\n InLineAlert,\n Price,\n PriceProps,\n Incrementer,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { VNode } from 'preact';\nimport { events, Cart } from '@adobe-commerce/event-bus';\nimport { state } from '@/cart/lib/state';\nimport {\n ChevronDown,\n ChevronRight,\n OrderError,\n WarningWithCircle,\n Trash,\n} from '@adobe-commerce/elsie/icons';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { addProductsToCart } from '@/cart/api/addProductsToCart/addProductsToCart';\n\nexport interface CartSummaryListProps extends HTMLAttributes<HTMLDivElement> {\n hideHeading?: boolean;\n hideFooter?: boolean;\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeEmptyCartCTA?: () => string;\n routeCart?: () => string;\n onItemUpdate?: ({ item }: { item: CartModel['items'][0] }) => void;\n onItemRemove?: ({ item }: { item: CartModel['items'][0] }) => void;\n maxItems?: number; // Maximum number of items to display\n showMaxItems?: boolean;\n attributesToHide?: SwitchableAttributes[]; // Product attributes to hide\n slots?: {\n Heading?: SlotProps;\n EmptyCart?: SlotProps;\n Footer?: SlotProps;\n RowTotalFooter?: SlotProps<{ item: CartModel['items'][number] }>;\n Thumbnail?: SlotProps<{\n item: CartModel['items'][number];\n defaultImageProps: ImageProps;\n }>;\n ProductAttributes?: SlotProps;\n CartSummaryFooter?: SlotProps;\n CartItem?: SlotProps;\n UndoBanner?: SlotProps<{\n item: CartModel['items'][0];\n loading: boolean;\n error?: string;\n onUndo: () => void;\n onDismiss: () => void;\n }>;\n ItemTitle?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemPrice?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemQuantity?: SlotProps<{\n item: CartModel['items'][number];\n enableUpdateItemQuantity: boolean;\n handleItemQuantityUpdate: (\n item: CartModel['items'][number],\n quantity: number\n ) => void;\n itemsLoading: Set<string>;\n handleItemsError: (uid: string, message?: string) => void;\n handleItemsLoading: (uid: string, state: boolean) => void;\n onItemUpdate?: ({ item }: { item: CartModel['items'][number] }) => void;\n }>;\n ItemTotal?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemSku?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemRemoveAction?: SlotProps<{\n item: CartModel['items'][number];\n enableRemoveItem: boolean;\n handleItemQuantityUpdate: (\n item: CartModel['items'][number],\n quantity: number\n ) => void;\n handleItemsError: (uid: string, message?: string) => void;\n handleItemsLoading: (uid: string, state: boolean) => void;\n onItemUpdate?: ({ item }: { item: CartModel['items'][number] }) => void;\n itemsLoading: Set<string>;\n }>;\n };\n enableRemoveItem?: boolean;\n enableUpdateItemQuantity?: boolean;\n onItemsErrorsChange?: (errors: Map<string, string>) => void;\n accordion?: boolean;\n variant?: 'primary' | 'secondary';\n isLoading?: boolean;\n showDiscount?: boolean;\n showSavings?: boolean;\n quantityType?: 'stepper' | 'dropdown';\n dropdownOptions?: { value: string; text: string }[];\n undo?: boolean;\n /**\n * TEST ONLY: Allows test to inject recentlyRemovedItems for coverage\n */\n __testRecentlyRemovedItems?: Array<{\n item: CartModel['items'][0];\n index: number;\n loading: boolean;\n error?: string;\n beingRemoved?: boolean;\n }>;\n}\n\n// Attributes that can be hidden or shown\nexport type SwitchableAttributes =\n | 'name'\n | 'image'\n | 'configurations'\n | 'warning'\n | 'alert'\n | 'sku'\n | 'price'\n | 'quantity'\n | 'total'\n | 'totalDiscount'\n | 'totalExcludingTax';\n\n// Ref interface for exposing functions to tests\nexport interface CartSummaryListRef {\n handleUndo: (uid: string) => Promise<void>;\n}\n\nexport const CartSummaryList: Container<\n CartSummaryListProps,\n CartModel | null\n> = forwardRef<\n CartSummaryListRef,\n CartSummaryListProps & { initialData?: CartModel | null }\n>(\n (\n {\n initialData = null,\n hideHeading,\n hideFooter,\n routeProduct,\n routeEmptyCartCTA,\n routeCart,\n onItemUpdate,\n onItemRemove,\n maxItems, //if maxItems is not provided, default to show all items\n slots,\n attributesToHide = [],\n enableRemoveItem,\n enableUpdateItemQuantity,\n onItemsErrorsChange,\n accordion = false,\n variant = 'primary',\n isLoading,\n showMaxItems,\n showDiscount,\n showSavings,\n quantityType,\n dropdownOptions,\n undo = false,\n __testRecentlyRemovedItems,\n ...props\n },\n ref\n ) => {\n const [loading, setLoading] = useState(!initialData);\n\n const [cartModelData, setCartModelData] = useState<CartModel | null>(\n initialData\n );\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const [itemsErrors, setItemErrors] = useState<Map<string, string>>(\n new Map()\n );\n\n const [recentlyRemovedItems, setRecentlyRemovedItems] = useState<\n {\n item: CartModel['items'][0];\n index: number;\n loading: boolean;\n error?: string;\n beingRemoved?: boolean;\n }[]\n >(__testRecentlyRemovedItems || []);\n\n // TEST ONLY: allow test to update recentlyRemovedItems after mount\n useEffect(() => {\n if (\n process.env.NODE_ENV === 'test' &&\n __testRecentlyRemovedItems &&\n recentlyRemovedItems !== __testRecentlyRemovedItems\n ) {\n setRecentlyRemovedItems(__testRecentlyRemovedItems);\n }\n }, [__testRecentlyRemovedItems, recentlyRemovedItems]);\n\n const cartTaxesConfig = state.config?.shoppingCartDisplaySetting;\n\n const [displayMaxItems, setDisplayMaxItems] = useState<boolean>(\n showMaxItems ? true : !maxItems && !showMaxItems\n );\n\n const dictionary = useText({\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n heading: 'Cart.Cart.heading',\n message: 'Cart.CartItem.message',\n recipient: 'Cart.CartItem.recipient',\n regularPrice: 'Cart.CartItem.regularPrice',\n discountedPrice: 'Cart.CartItem.discountedPrice',\n sender: 'Cart.CartItem.sender',\n lowInventory: 'Cart.CartItem.lowInventory',\n insufficientQuantity: 'Cart.CartItem.insufficientQuantity',\n insufficientQuantityGeneral: 'Cart.CartItem.insufficientQuantityGeneral',\n outOfStockHeading: 'Cart.OutOfStockMessage.heading',\n outOfStockDescription: 'Cart.OutOfStockMessage.message',\n outOfStockAlert: 'Cart.OutOfStockMessage.alert',\n removeAction: 'Cart.OutOfStockMessage.action',\n notAvailableMessage: 'Cart.CartItem.notAvailableMessage',\n viewMore: 'Cart.Cart.viewMore',\n viewAll: 'Cart.Cart.viewAll',\n discountPercent: 'Cart.CartItem.discountPercentage',\n savingsAmount: 'Cart.CartItem.savingsAmount',\n itemBeingRemoved: 'Cart.CartItem.itemBeingRemoved',\n itemRemoved: 'Cart.CartItem.itemRemoved',\n itemRemovedDescription: 'Cart.CartItem.itemRemovedDescription',\n undoAction: 'Cart.CartItem.undoAction',\n dismissAction: 'Cart.CartItem.dismissAction',\n remove: 'Dropin.CartItem.remove.label',\n removeDefault: 'Dropin.CartItem.removeDefault.label',\n quantity: 'Dropin.CartItem.quantity.label',\n });\n\n const handleItemsLoading = (uid: string, state: boolean) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n const handleItemsError = (uid: string, message?: string) => {\n setItemErrors((prev) => {\n message ? prev.set(uid, message) : prev.delete(uid);\n return new Map(prev);\n });\n };\n\n // Helper to add to recently removed items for undo\n function addToRecentlyRemovedItems(uid: string) {\n const cart = getPersistedCartData();\n const item = cart?.items.find((i) => i.uid === uid);\n if (item) {\n setRecentlyRemovedItems((prev) => {\n const index = cart.items.findIndex((i) => i.uid === uid);\n if (index !== -1 && !prev.some((r) => r.item.uid === uid)) {\n // Emit the event for analytics or listeners\n events.emit('cart/product/removed', { item, index });\n return [\n ...prev,\n { item, index, error: undefined, beingRemoved: true },\n ];\n }\n return prev;\n });\n }\n }\n\n const handleItemQuantityUpdate = (\n item: CartModel['items'][0],\n quantity: number\n ) => {\n // initial values\n handleItemsLoading(item.uid, true);\n\n // Reset temporary error messages\n setItemErrors(new Map());\n\n if (enableRemoveItem && quantity === 0) {\n // Add to recently removed items for undo\n addToRecentlyRemovedItems(item.uid);\n // use callback for removing (original logic)\n updateProductsFromCart([{ uid: item.uid, quantity }])\n .then(() => {\n onItemRemove?.({ item });\n })\n .finally(() => {\n handleItemsLoading(item.uid, false);\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === item.uid ? { ...r, beingRemoved: false } : r\n )\n );\n })\n .catch((error: any) => {\n console.warn(error);\n });\n }\n // use callback for updating\n else {\n enableUpdateItemQuantity &&\n updateProductsFromCart([{ uid: item.uid, quantity }])\n .then(() => {\n onItemUpdate?.({ item });\n })\n .finally(() => {\n handleItemsLoading(item.uid, false);\n })\n .catch((error: Error) => {\n handleItemsError(item.uid, error.message);\n });\n }\n };\n\n const handleDismiss = (uid: string) => {\n setRecentlyRemovedItems((prev) => prev.filter((r) => r.item.uid !== uid));\n };\n\n // Display max items\n const handleMaxItemsView = useCallback(() => {\n setDisplayMaxItems((prev) => !prev);\n }, []);\n\n useEffect(() => {\n const cartDataEvent = events.on(\n 'cart/data',\n (payload: Cart | null) => {\n setCartModelData(payload as CartModel);\n setLoading(!!isLoading);\n },\n { eager: true }\n );\n\n return () => {\n cartDataEvent?.off();\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clear recently removed items when undo is disabled\n useEffect(() => {\n if (!undo) {\n setRecentlyRemovedItems([]);\n }\n }, [undo]);\n\n // Call onItemsErrorsChange whenever itemsErrors changes\n useEffect(() => {\n if (onItemsErrorsChange) {\n onItemsErrorsChange(itemsErrors);\n }\n }, [itemsErrors, onItemsErrorsChange]);\n\n // Helper functions\n const getImage = (item: CartModel['items'][0], index: number) => {\n if (attributesToHide.includes('image')) {\n return undefined;\n }\n\n const defaultImageProps: ImageProps = {\n loading: index < 4 ? 'eager' : 'lazy',\n src: item.image.src,\n alt: item.image.alt,\n width: '300',\n height: '300',\n params: { width: 300 },\n };\n\n const imageComponent = (\n <Image data-testid=\"cart-list-item-image\" {...defaultImageProps} />\n );\n return (\n <Slot\n name=\"Thumbnail\"\n slot={slots?.Thumbnail}\n context={{\n item,\n defaultImageProps,\n }}\n >\n {routeProduct ? (\n <a href={routeProduct(item)}>{imageComponent}</a>\n ) : (\n imageComponent\n )}\n </Slot>\n );\n };\n\n const getTitle = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('name')) {\n return undefined;\n }\n\n return (\n <span data-testid=\"cart-list-item-title\">\n {routeProduct ? (\n <a href={routeProduct(item)}>{decodeHTMLEntities(item.name)}</a>\n ) : (\n decodeHTMLEntities(item.name)\n )}\n </span>\n );\n };\n\n const getConfiguration = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('configurations')) {\n return undefined;\n }\n\n const configuration = {\n ...item.bundleOptions,\n ...item.selectedOptions,\n ...item.customizableOptions,\n ...(item.recipient ? { [dictionary.recipient]: item.recipient } : null),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : null),\n ...(item.sender ? { [dictionary.sender]: item.sender } : null),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : null),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : null),\n };\n\n if (Object.keys(configuration).length === 0) {\n return undefined;\n }\n\n return configuration;\n };\n\n const getPriceProps = (item: CartModel['items'][0]) => {\n return cartTaxesConfig?.price === 'INCLUDING_TAX'\n ? item.discounted\n ? {\n amount: item.regularPrice.value,\n currency: item.regularPrice.currency,\n style: { font: 'inherit' },\n 'data-testid': 'including-tax-item-price',\n }\n : {\n amount: item.taxedPrice?.value,\n currency: item.taxedPrice?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'including-tax-item-price',\n }\n : {\n amount: item.regularPrice?.value,\n currency: item.regularPrice?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'regular-item-price',\n };\n };\n\n const getSavingsAmount = (item: CartModel['items'][0]) => {\n return {\n amount: item.savingsAmount?.value,\n currency: item.savingsAmount?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'item-savings-amount',\n };\n };\n\n const getTotalExcludingTax = (item: CartModel['items'][0]) => {\n return cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX' ? (\n <Price\n amount={item.rowTotal.value}\n currency={item.rowTotal.currency}\n data-testid=\"excluding-tax-total\"\n aria-label={dictionary.regularPrice}\n />\n ) : undefined;\n };\n\n const getTotalPriceProps = (item: CartModel['items'][0]) => {\n const totalProps: PriceProps = {\n 'aria-label': dictionary.regularPrice,\n };\n const discountProps: PriceProps | null = item.discounted ? {} : null;\n\n if (\n ['INCLUDING_TAX', 'INCLUDING_EXCLUDING_TAX'].includes(\n cartTaxesConfig?.price as string\n )\n ) {\n totalProps['amount'] = item.rowTotalIncludingTax?.value;\n totalProps['currency'] = item.rowTotalIncludingTax?.currency;\n totalProps['variant'] = item.discounted ? 'strikethrough' : 'default';\n // @ts-ignore\n totalProps['data-testid'] = 'including-tax-item-total';\n\n if (discountProps) {\n totalProps['amount'] = item.total?.value;\n totalProps['currency'] = item.total?.currency;\n\n discountProps['amount'] = item.rowTotalIncludingTax?.value;\n discountProps['currency'] = item.rowTotalIncludingTax?.currency;\n discountProps['sale'] = true;\n discountProps['aria-label'] = dictionary.discountedPrice;\n // @ts-ignore\n discountProps['data-testid'] = 'discount-total';\n }\n } else {\n totalProps['amount'] = item.total?.value;\n totalProps['currency'] = item.total?.currency;\n totalProps['variant'] = item.discounted ? 'strikethrough' : 'default';\n // @ts-ignore\n totalProps['data-testid'] = 'regular-item-total';\n\n if (discountProps) {\n discountProps['amount'] = item.discountedTotal?.value;\n discountProps['currency'] = item.discountedTotal?.currency;\n discountProps['sale'] = true;\n discountProps['aria-label'] = dictionary.regularPrice;\n // @ts-ignore\n discountProps['data-testid'] = 'discount-total';\n }\n }\n\n return {\n totalProps,\n discountProps,\n };\n };\n\n const getWarning = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('warning')) {\n return undefined;\n }\n\n const error = itemsErrors.get(item.uid);\n const quantityError = itemsErrors\n .get(item.uid)\n ?.includes('The requested qty is not available');\n const itemIsLoading = itemsLoading.has(item.uid);\n\n const insufficientQuantityText =\n item.insufficientQuantity && item.stockLevel\n ? item.stockLevel === 'noNumber'\n ? dictionary.insufficientQuantityGeneral\n : dictionary.insufficientQuantity\n .replace('{inventory}', item.stockLevel?.toString())\n .replace('{count}', item.quantity.toString())\n : '';\n\n const lowInventoryText =\n item.lowInventory &&\n item.onlyXLeftInStock &&\n dictionary.lowInventory.replace(\n '{count}',\n item.onlyXLeftInStock?.toString()\n );\n\n const notAvailableQuantity =\n !item.outOfStock && error && quantityError\n ? dictionary.notAvailableMessage\n : error;\n\n return !itemIsLoading &&\n (error || item.insufficientQuantity || item.lowInventory) ? (\n <span data-testid=\"item-warning\">\n <Icon source={WarningWithCircle} size={'16'} />\n {notAvailableQuantity || insufficientQuantityText || lowInventoryText}\n </span>\n ) : undefined;\n };\n\n const getAlert = (item: CartModel['items'][0]) => {\n if (attributesToHide?.includes('alert')) {\n return undefined;\n }\n const itemIsLoading = itemsLoading.has(item.uid);\n\n return !itemIsLoading && item.outOfStock ? (\n <span data-testid=\"item-alert\">\n <Icon source={OrderError} size={'16'} />\n {dictionary.outOfStockAlert}\n </span>\n ) : undefined;\n };\n\n const getProductAttributes = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"ProductAttributes\"\n slot={slots?.ProductAttributes}\n context={{\n item,\n }}\n />\n );\n };\n\n const getSku = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('sku')) {\n return undefined;\n }\n return <span data-testid=\"cart-list-item-sku\">{item.sku}</span>;\n };\n\n const getFooter = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"Footer\"\n slot={slots?.Footer}\n context={{ item, handleItemsLoading, handleItemsError, onItemUpdate }}\n />\n );\n };\n\n const getRowTotalFooter = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"RowTotalFooter\"\n slot={slots?.RowTotalFooter}\n context={{ item }}\n />\n );\n };\n\n const getRemoveContent = (item: CartModel['items'][0]) => {\n if (!enableRemoveItem) {\n return undefined;\n }\n\n return (\n <Slot\n name=\"ItemRemoveAction\"\n slot={slots?.ItemRemoveAction}\n context={{\n item,\n enableRemoveItem,\n handleItemQuantityUpdate,\n handleItemsError,\n handleItemsLoading,\n onItemUpdate,\n itemsLoading,\n }}\n >\n {/* Default remove button */}\n <Button\n data-testid=\"cart-item-remove-button\"\n className={classes(['dropin-cart-item__remove'])}\n variant=\"tertiary\"\n onClick={() => handleItemQuantityUpdate(item, 0)}\n disabled={itemsLoading.has(item.uid)}\n icon={\n <Icon\n data-testid=\"cart-item-remove-icon\"\n source={Trash}\n size=\"24\"\n stroke=\"2\"\n viewBox=\"0 0 24 24\"\n aria-label={\n dictionary.remove?.replace('{product}', decodeHTMLEntities(item.name)) ||\n dictionary.removeDefault\n }\n />\n }\n />\n </Slot>\n );\n };\n\n const getQuantityContent = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('quantity')) {\n return undefined;\n }\n\n if (!enableUpdateItemQuantity) {\n return undefined;\n }\n\n return (\n <Slot\n name=\"ItemQuantity\"\n slot={slots?.ItemQuantity}\n context={{\n item,\n enableUpdateItemQuantity,\n handleItemQuantityUpdate,\n itemsLoading,\n handleItemsError,\n handleItemsLoading,\n onItemUpdate,\n }}\n >\n <Incrementer\n value={item.quantity}\n min={1}\n onValue={(value) => handleItemQuantityUpdate(item, Number(value))}\n name=\"quantity\"\n disabled={itemsLoading.has(item.uid)}\n aria-label={dictionary.quantity}\n />\n </Slot>\n );\n };\n\n // Re-usable function to get a filtered list of cart items\n const getCartItemEntries = (\n filterCallback: (item: CartModel['items'][0]) => boolean\n ) => {\n return cartModelData?.totalQuantity\n ? cartModelData.items.filter(filterCallback).map((item, index) => {\n const { totalProps, discountProps } = getTotalPriceProps(item);\n\n const defaultCartItem = (\n <CartItem\n updating={itemsLoading?.has(item.uid)}\n loading={loading}\n key={item.uid}\n data-testid={`cart-list-item-entry-${item.uid}`}\n image={getImage(item, index)}\n title={\n <Slot\n name=\"ItemTitle\"\n slot={slots?.ItemTitle}\n context={{ item }}\n >\n {getTitle(item)}\n </Slot>\n }\n sku={\n attributesToHide.includes('sku') ? undefined : (\n <Slot\n name=\"ItemSku\"\n slot={slots?.ItemSku}\n context={{ item }}\n >\n {getSku(item)}\n </Slot>\n )\n }\n price={\n attributesToHide.includes('price') ? undefined : (\n <Slot\n name=\"ItemPrice\"\n slot={slots?.ItemPrice}\n context={{ item }}\n slotTag=\"span\"\n >\n <Price {...getPriceProps(item)} />\n </Slot>\n )\n }\n quantity={\n attributesToHide.includes('quantity')\n ? undefined\n : item.quantity\n }\n quantityContent={getQuantityContent(item)}\n total={\n <>\n {attributesToHide.includes('total') ? undefined : (\n <Slot\n name=\"ItemTotal\"\n slot={slots?.ItemTotal}\n context={{ item }}\n >\n <Price {...totalProps} />\n </Slot>\n )}\n {attributesToHide.includes('totalDiscount')\n ? undefined\n : discountProps && (\n <Slot\n name=\"ItemTotal\"\n slot={slots?.ItemTotal}\n context={{ item }}\n >\n <Price {...discountProps} />\n </Slot>\n )}\n </>\n }\n attributes={getProductAttributes(item)}\n configurations={getConfiguration(item)}\n totalExcludingTax={\n attributesToHide.includes('totalExcludingTax')\n ? undefined\n : getTotalExcludingTax(item)\n }\n taxIncluded={cartTaxesConfig?.price === 'INCLUDING_TAX'}\n taxExcluded={\n !attributesToHide.includes('totalExcludingTax') &&\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX'\n }\n warning={getWarning(item)}\n alert={getAlert(item)}\n quantityType={quantityType}\n dropdownOptions={dropdownOptions}\n onQuantity={\n enableUpdateItemQuantity && !itemsLoading.has(item.uid)\n ? (newQuantity) => {\n handleItemQuantityUpdate(item, newQuantity);\n }\n : undefined\n }\n onRemove={\n enableRemoveItem && !itemsLoading.has(item.uid)\n ? () => handleItemQuantityUpdate(item, 0)\n : undefined\n }\n discount={\n showDiscount && item.discounted && item.discountPercentage ? (\n <div data-testid=\"item-discount-percent\">\n {dictionary.discountPercent.replace(\n '{discount}',\n item.discountPercentage?.toString() ?? ''\n )}\n </div>\n ) : undefined\n }\n savings={\n showSavings && item.discounted && item.savingsAmount ? (\n <div>\n <span>\n <Price {...getSavingsAmount(item)} />\n </span>\n \n {dictionary.savingsAmount}\n </div>\n ) : undefined\n }\n rowTotalFooter={getRowTotalFooter(item)}\n footer={getFooter(item)}\n removeContent={getRemoveContent(item)}\n />\n );\n\n return (\n <Slot\n key={item.uid}\n name=\"CartItem\"\n slot={slots?.CartItem}\n context={{\n item,\n index,\n enableUpdateItemQuantity,\n enableRemoveItem,\n itemsLoading,\n loading,\n attributesToHide,\n cartTaxesConfig,\n quantityType,\n dropdownOptions,\n showDiscount,\n showSavings,\n dictionary,\n getImage,\n getTitle,\n getSku,\n getPriceProps,\n getTotalPriceProps,\n getProductAttributes,\n getConfiguration,\n getTotalExcludingTax,\n getWarning,\n getAlert,\n getRowTotalFooter,\n getFooter,\n getSavingsAmount,\n }}\n >\n {defaultCartItem}\n </Slot>\n );\n })\n : null;\n };\n\n const heading = (\n <Slot\n name=\"Heading\"\n slot={slots?.Heading}\n context={{\n count: cartModelData?.totalQuantity,\n }}\n >\n <div data-testid=\"default-cart-heading\">\n {dictionary.heading.replace(\n '({count})',\n cartModelData?.totalQuantity\n ? `(${cartModelData?.totalQuantity.toString()})`\n : ''\n )}\n </div>\n </Slot>\n );\n\n // Heading Section text for screen reader\n const headingSection = heading.props.children.props.children;\n\n // Out of Stock Items\n const handleRemoveOutOfStockItems = () => {\n const outOfStockItems = cartModelData?.items.filter(\n (item) => item.outOfStock\n );\n\n outOfStockItems?.forEach((item) => {\n handleItemQuantityUpdate(item, 0);\n });\n };\n\n const outOfStockEntries = getCartItemEntries(\n (item) => item.outOfStock || item.insufficientQuantity || false\n );\n\n const outOfStockMessage = cartModelData?.hasOutOfStockItems ? (\n <InLineAlert\n data-testid=\"cart-out-of-stock-message\"\n icon={<Icon source={OrderError} size={'16'} />}\n itemList={\n <CartList data-testid=\"out-of-stock-cart-items\">\n {outOfStockEntries}\n </CartList>\n }\n type=\"warning\"\n heading={dictionary.outOfStockHeading}\n description={dictionary.outOfStockDescription}\n variant=\"primary\"\n actionButtonPosition=\"bottom\"\n additionalActions={\n cartModelData?.hasFullyOutOfStockItems && enableRemoveItem\n ? [\n {\n label: dictionary.removeAction,\n onClick: handleRemoveOutOfStockItems,\n },\n ]\n : undefined\n }\n />\n ) : undefined;\n\n // Main Product Entries\n const mainProductEntries = getCartItemEntries(\n (item) => !item.outOfStock && !item.insufficientQuantity\n );\n\n const numOfVisibleItems = displayMaxItems\n ? Math.max(maxItems || 5, 5)\n : Math.min(cartModelData?.totalQuantity || 5, 5);\n\n const hasHiddenItems = cartModelData?.totalQuantity > numOfVisibleItems;\n\n const canDisplayMoreItems =\n hasHiddenItems && !displayMaxItems && numOfVisibleItems != maxItems;\n\n const footerActions =\n cartModelData?.totalQuantity && mainProductEntries ? (\n <Slot\n name=\"Footer\"\n slot={slots?.CartSummaryFooter}\n context={{ displayMaxItems, routeCart }}\n data-testid=\"cart-cart-summary-footer-slot\"\n className=\"cart-cart-summary-footer\"\n >\n {hasHiddenItems ? (\n canDisplayMoreItems ? (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n onClick={handleMaxItemsView}\n data-testid=\"view-more-items-button\"\n variant=\"tertiary\"\n >\n {dictionary.viewMore}\n </Button>\n ) : (\n routeCart && (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n href={routeCart()}\n variant=\"tertiary\"\n data-testid=\"view-cart-or-less-items-button\"\n >\n {dictionary.viewAll}\n </Button>\n )\n )\n ) : (\n routeCart && (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n href={routeCart()}\n variant=\"tertiary\"\n data-testid=\"view-cart-button\"\n >\n {dictionary.viewAll}\n </Button>\n )\n )}\n </Slot>\n ) : null;\n\n const renderCartListWithUndoBanners = () => {\n if (!cartModelData?.items) return null;\n const entries: (VNode | null)[] = [];\n const items = cartModelData.items;\n const UndoBanner = slots?.UndoBanner;\n\n // Calculate how many items to show (same logic as original)\n const numItemsToShow = displayMaxItems\n ? Math.max(!maxItems ? cartModelData?.totalQuantity : maxItems, 5)\n : Math.min(maxItems ?? 5, 5);\n\n // Only process items up to the limit\n for (let i = 0; i <= numItemsToShow; i++) {\n // Render undo banners for this index only if undo is enabled\n if (undo) {\n recentlyRemovedItems\n .filter((r) => r.index === i)\n .forEach(({ item, error, beingRemoved }) => {\n const defaultUndoBanner = (\n <InLineAlert\n key={`undo-banner-${item.uid}`}\n type={error ? 'error' : 'info'}\n heading={\n beingRemoved\n ? dictionary.itemBeingRemoved?.replace(\n '{product}',\n decodeHTMLEntities(item.name)\n )\n : dictionary.itemRemoved?.replace('{product}', decodeHTMLEntities(item.name))\n }\n description={error || dictionary.itemRemovedDescription}\n variant=\"primary\"\n actionButtonPosition=\"bottom\"\n additionalActions={\n beingRemoved\n ? [] // Hide buttons while removing\n : [\n {\n label: dictionary.undoAction,\n onClick: () => handleUndo(item.uid),\n 'aria-label': `${dictionary.undoAction} remove ${decodeHTMLEntities(item.name)}`,\n },\n {\n label: dictionary.dismissAction,\n onClick: () => handleDismiss(item.uid),\n 'aria-label': `${dictionary.dismissAction} undo for ${decodeHTMLEntities(item.name)}`,\n },\n ]\n }\n />\n );\n\n entries.push(\n UndoBanner ? (\n <Slot\n name=\"UndoBanner\"\n slot={UndoBanner}\n context={{\n item,\n loading,\n error,\n onUndo: () => handleUndo(item.uid),\n onDismiss: () => handleDismiss(item.uid),\n }}\n key={`undo-banner-${item.uid}`}\n >\n {defaultUndoBanner}\n </Slot>\n ) : (\n defaultUndoBanner\n )\n );\n });\n }\n // Render cart item if not at the end and within the slice limit\n if (i < numItemsToShow && i < items.length) {\n entries.push(mainProductEntries?.[i] || null);\n }\n }\n return <CartList data-testid=\"cart-list\">{entries}</CartList>;\n };\n // Undo handler implementation\n const handleUndo = useCallback(\n async (uid: string) => {\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === uid ? { ...r, loading: true, error: undefined } : r\n )\n );\n const removed = recentlyRemovedItems.find((r) => r.item.uid === uid);\n if (!removed) return;\n try {\n await addProductsToCart([\n {\n sku: removed.item.sku,\n parentSku: removed.item.topLevelSku,\n quantity: removed.item.quantity,\n optionsUIDs:\n removed.item.bundleOptionsUIDs || // Use bundle option UIDs for bundle products\n (removed.item.selectedOptionsUIDs\n ? Object.values(removed.item.selectedOptionsUIDs)\n : undefined),\n enteredOptions: removed.item.customizableOptions\n ? Object.entries(removed.item.customizableOptions).map(\n ([uid, value]) => ({ uid, value })\n )\n : undefined,\n },\n ]);\n setRecentlyRemovedItems((prev) =>\n prev.filter((r) => r.item.uid !== uid)\n );\n } catch (error: any) {\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === uid\n ? { ...r, error: error?.message || 'Failed to restore item.' }\n : r\n )\n );\n }\n },\n [recentlyRemovedItems]\n );\n\n // Expose handleUndo to parent components via ref (for testing)\n useImperativeHandle(\n ref,\n () => ({\n handleUndo,\n }),\n [handleUndo]\n );\n\n // Replace the emptyCart definition with conditional rendering for undo banners\n const emptyCart = (\n <>\n {undo && recentlyRemovedItems.length > 0 ? (\n renderCartListWithUndoBanners()\n ) : (\n <Slot name=\"EmptyCart\" slot={slots?.EmptyCart} context={{}}>\n <EmptyCart\n data-testid=\"empty-cart\"\n ctaLinkURL={routeEmptyCartCTA?.()}\n />\n </Slot>\n )}\n </>\n );\n\n // Choose between original product entries and undo banner version\n const productEntries =\n cartModelData?.totalQuantity ||\n (undo && recentlyRemovedItems.length > 0) ? (\n !undo ? (\n <CartList data-testid=\"cart-list\">\n {mainProductEntries?.slice(\n 0,\n displayMaxItems\n ? Math.max(\n !maxItems ? cartModelData?.totalQuantity : maxItems,\n 5\n )\n : Math.min(maxItems ?? 5, 5)\n )}\n </CartList>\n ) : recentlyRemovedItems.length > 0 ? (\n renderCartListWithUndoBanners()\n ) : (\n <CartList data-testid=\"cart-list\">\n {mainProductEntries?.slice(\n 0,\n displayMaxItems\n ? Math.max(\n !maxItems ? cartModelData?.totalQuantity : maxItems,\n 5\n )\n : Math.min(maxItems ?? 5, 5)\n )}\n </CartList>\n )\n ) : null;\n\n return accordion ? (\n <Accordion\n data-testid=\"cart-summary-list-accordion\"\n className={classes([\n `cart-cart-summary-list-accordion`,\n `cart-cart-summary-list__background--${variant}`,\n ])}\n iconOpen={ChevronRight}\n iconClose={ChevronDown}\n >\n <AccordionSection\n title={headingSection}\n data-testid=\"cart-summary-list-accordion__section\"\n open={true}\n renderContentWhenClosed={true}\n >\n <CartSummaryListComponent\n {...props}\n aria-expanded={true}\n aria-label={'TEST'}\n className={`cart-cart-summary-list-accordion__list`}\n loading={loading}\n footer={\n hideFooter\n ? undefined\n : footerActions || (routeCart ? footerActions : undefined)\n }\n emptyCart={emptyCart}\n products={productEntries}\n outOfStockMessage={outOfStockMessage}\n variant={variant}\n />\n </AccordionSection>\n </Accordion>\n ) : (\n <CartSummaryListComponent\n {...props}\n heading={hideHeading ? undefined : heading}\n footer={\n hideFooter\n ? undefined\n : footerActions || (routeCart ? footerActions : undefined)\n }\n loading={loading}\n emptyCart={emptyCart}\n products={productEntries}\n outOfStockMessage={outOfStockMessage}\n variant={variant}\n />\n );\n }\n);\n\nCartSummaryList.getInitialData = async function () {\n return getPersistedCartData();\n};\n"],"names":["SvgChevronRight","props","React","CartSummaryList","className","children","heading","footer","emptyCart","products","outOfStockMessage","variant","loading","jsx","classes","CartSummaryListSkeleton","jsxs","Fragment","VComponent","Divider","Skeleton","SkeletonRow","decodeHTMLEntities","text","forwardRef","initialData","hideHeading","hideFooter","routeProduct","routeEmptyCartCTA","routeCart","onItemUpdate","onItemRemove","maxItems","slots","attributesToHide","enableRemoveItem","enableUpdateItemQuantity","onItemsErrorsChange","accordion","isLoading","showMaxItems","showDiscount","showSavings","quantityType","dropdownOptions","undo","__testRecentlyRemovedItems","ref","setLoading","useState","cartModelData","setCartModelData","itemsLoading","setItemLoading","itemsErrors","setItemErrors","recentlyRemovedItems","setRecentlyRemovedItems","useEffect","cartTaxesConfig","_a","state","displayMaxItems","setDisplayMaxItems","dictionary","useText","handleItemsLoading","uid","prev","handleItemsError","message","addToRecentlyRemovedItems","cart","getPersistedCartData","item","i","index","r","events","handleItemQuantityUpdate","quantity","updateProductsFromCart","error","handleDismiss","handleMaxItemsView","useCallback","cartDataEvent","payload","getImage","defaultImageProps","imageComponent","Image","Slot","getTitle","getConfiguration","configuration","getPriceProps","_b","_c","_d","getSavingsAmount","getTotalExcludingTax","Price","getTotalPriceProps","totalProps","discountProps","_e","_f","_g","_h","_i","_j","getWarning","quantityError","itemIsLoading","insufficientQuantityText","lowInventoryText","notAvailableQuantity","Icon","WarningWithCircle","getAlert","OrderError","getProductAttributes","getSku","getFooter","getRowTotalFooter","getRemoveContent","Button","Trash","getQuantityContent","Incrementer","value","getCartItemEntries","filterCallback","defaultCartItem","CartItem","newQuantity","headingSection","handleRemoveOutOfStockItems","outOfStockItems","outOfStockEntries","InLineAlert","CartList","mainProductEntries","numOfVisibleItems","hasHiddenItems","canDisplayMoreItems","footerActions","renderCartListWithUndoBanners","entries","items","UndoBanner","numItemsToShow","beingRemoved","defaultUndoBanner","handleUndo","removed","addProductsToCart","useImperativeHandle","EmptyCart","productEntries","Accordion","ChevronRight","ChevronDown","AccordionSection","CartSummaryListComponent"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
3
|
import{jsxs as m,jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{classes as E,VComponent as I,debounce as $e,Slot as N}from"@dropins/tools/lib.js";import{Button as J,Icon as K,Image as De,Price as D,Skeleton as Ee,SkeletonRow as Me}from"@dropins/tools/components.js";/* empty css */import{useState as fe,useCallback as Ae,useMemo as Qe}from"@dropins/tools/preact-compat.js";import{useState as ee,useCallback as ze,useEffect as Be,useMemo as Ge}from"@dropins/tools/preact-hooks.js";import{useText as te}from"@dropins/tools/i18n.js";import{events as Ce}from"@dropins/tools/event-bus.js";import{s as We}from"./resetCart.js";import{u as ve}from"./updateProductsFromCart.js";import{g as Ie}from"./persisted-data.js";import{a as Ve}from"./createGuestCart.js";import{E as Xe}from"./EmptyCart.js";import{S as je,a as Re,b as He}from"./WarningWithCircle.js";import{S as Fe}from"./Close.js";const ae=({entries:n,className:l,...s})=>{const e=te({itemLabel:"Cart.CartSummaryTable.item",priceLabel:"Cart.CartSummaryTable.price",qtyLabel:"Cart.CartSummaryTable.qty",subtotalLabel:"Cart.CartSummaryTable.subtotal",mobilePriceLabel:"Cart.CartSummaryTable.mobilePrice",mobileQtyLabel:"Cart.CartSummaryTable.mobileQty",mobileSubtotalLabel:"Cart.CartSummaryTable.mobileSubtotal"});return m("div",{...s,className:E(["cart-cart-summary-table",l]),children:[m("div",{className:"cart-cart-summary-table__header",children:[a("div",{className:"cart-cart-summary-table__header-item",children:e.itemLabel}),a("div",{className:"cart-cart-summary-table__header-price",children:e.priceLabel}),a("div",{className:"cart-cart-summary-table__header-qty",children:e.qtyLabel}),a("div",{className:"cart-cart-summary-table__header-subtotal",children:e.subtotalLabel})]}),a("div",{className:"cart-cart-summary-table__body",children:n.map(i=>i.undoBanner?a("div",{className:"cart-cart-summary-table__undo-banner",children:a(I,{node:i.undoBanner})},i.uid):m("div",{className:E(["cart-cart-summary-table__row",["cart-cart-summary-table__row--updating",i.updating],["cart-cart-summary-table__row--error",i.hasError]]),children:[a("div",{className:"cart-cart-summary-table__cell-item",children:a(I,{node:i.item})}),m("div",{className:"cart-cart-summary-table__cell-price",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobilePriceLabel}),a(I,{node:i.price})]}),m("div",{className:"cart-cart-summary-table__cell-qty",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobileQtyLabel}),a(I,{node:i.quantity})]}),m("div",{className:"cart-cart-summary-table__cell-subtotal",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobileSubtotalLabel}),a(I,{node:i.subtotal})]}),a("div",{className:"cart-cart-summary-table__item-footer",children:a(I,{className:"cart-cart-summary-table__item-actions",node:i.actions})})]},i.uid))})]})},Je=({className:n,productTitle:l,sku:s,image:e,configurations:i,alert:o,warning:b,...y})=>m("div",{...y,className:E(["cart-cart-summary-table__item",n]),children:[e&&a(I,{className:"cart-cart-summary-table__item-image-wrapper",node:e}),m("div",{className:"cart-cart-summary-table__item-details",children:[l&&a(I,{className:"cart-cart-summary-table__item-name",node:l}),s&&a(I,{className:"cart-cart-summary-table__sku",node:s}),o&&a(I,{className:"cart-cart-summary-table__item-quantity-alert-text",node:o}),b&&a(I,{className:"cart-cart-summary-table__item-quantity-warning-text",node:b}),i&&a(I,{className:"cart-cart-summary-table__item-configurations",node:i})]})]}),Ke=({dictionary:n,onQuantityUpdate:l,onItemRemove:s})=>{var T,k;const[e,i]=fe(new Map),[o,b]=fe(new Map),y=(k=(T=We)==null?void 0:T.config)==null?void 0:k.shoppingCartDisplaySetting,P=(y==null?void 0:y.price)==="INCLUDING_TAX",C=(y==null?void 0:y.price)==="INCLUDING_EXCLUDING_TAX",S=({item:t})=>{const c={...t.bundleOptions,...t.selectedOptions,...t.customizableOptions,...t.recipient?{[n.recipient]:t.recipient}:null,...t.recipientEmail&&t.recipient?{[n.recipient]:`${t.recipient} (${t.recipientEmail})`}:null,...t.sender?{[n.sender]:t.sender}:null,...t.senderEmail&&t.sender?{[n.sender]:`${t.sender} (${t.senderEmail})`}:{},...t.message?{[n.message]:t.message}:null,...t.links&&t.links.count?t.links.count>1?{[n.files.replace("{count}",t.links.count.toString())]:t.links.result}:{[n.file.replace("{count}",t.links.count.toString())]:t.links.result}:null};if(Object.keys(c).length!==0)return c},L=t=>{var c,u,d,p;return P?t.discounted?{amount:t.regularPrice.value,currency:t.regularPrice.currency,"data-testid":"discounted-regular-item-price"}:{amount:(c=t.taxedPrice)==null?void 0:c.value,currency:(u=t.taxedPrice)==null?void 0:u.currency,"data-testid":"taxed-item-price"}:{amount:(d=t.regularPrice)==null?void 0:d.value,currency:(p=t.regularPrice)==null?void 0:p.currency,"data-testid":"regular-item-price"}},U=t=>{var d,p,v,M,A,Q,j,R,H,z;const c={"aria-label":n.regularPrice},u=t.discounted?{}:null;return["INCLUDING_TAX","INCLUDING_EXCLUDING_TAX"].includes(y==null?void 0:y.price)?(c.amount=(d=t.rowTotalIncludingTax)==null?void 0:d.value,c.currency=(p=t.rowTotalIncludingTax)==null?void 0:p.currency,c.variant=t.discounted?"strikethrough":"default",c["data-testid"]="including-tax-item-total",u&&(c.amount=(v=t.total)==null?void 0:v.value,c.currency=(M=t.total)==null?void 0:M.currency,u.amount=(A=t.rowTotalIncludingTax)==null?void 0:A.value,u.currency=(Q=t.rowTotalIncludingTax)==null?void 0:Q.currency,u.sale=!0,u["aria-label"]=n.discountedPrice,u["data-testid"]="discount-total")):(c.amount=(j=t.total)==null?void 0:j.value,c.currency=(R=t.total)==null?void 0:R.currency,c.variant=t.discounted?"strikethrough":"default",c["data-testid"]="regular-item-total",u&&(u.amount=(H=t.discountedTotal)==null?void 0:H.value,u.currency=(z=t.discountedTotal)==null?void 0:z.currency,u.sale=!0,u["aria-label"]=n.regularPrice,u["data-testid"]="discount-total")),{subtotalProps:c,subtotalDiscountProps:u}},f=t=>{var p,v;const c=o.get(t.uid),u=t.insufficientQuantity&&t.stockLevel?t.stockLevel==="noNumber"?n.insufficientQuantityGeneral:n.insufficientQuantity.replace("{inventory}",(p=t.stockLevel)==null?void 0:p.toString()).replace("{count}",t.quantity.toString()):void 0,d=t.lowInventory&&t.onlyXLeftInStock&&n.lowInventory.replace("{count}",(v=t.onlyXLeftInStock)==null?void 0:v.toString());return c||u||d||void 0},q=Ae(async(t,c)=>{const u=(d,p)=>ve([{uid:d.uid,quantity:p}]);if(!(isNaN(c)||t.quantity===c)){b(new Map);try{i(d=>{const p=new Map(d);return p.set(t.uid,{isUpdating:!0,updatedValue:c}),p}),await u(t,c),c===0?s==null||s(t):l==null||l(t,c)}catch(d){i(p=>{const v=new Map(p);return v.delete(t.uid),v}),b(p=>{const v=new Map(p);return v.set(t.uid,d.message),v})}}},[s,l]),w=Qe(()=>$e(q,500),[q]);return{showIncludedTaxPrice:P,showExcludingTaxPrice:C,itemsUpdating:e,itemUpdateErrors:o,getConfiguration:S,getPriceProps:L,getSubtotalProps:U,processQuantityChange:q,debouncedQuantityChange:w,setItemsUpdating:i,getWarningMessage:f,setItemUpdateError:(t,c)=>{b(u=>{const d=new Map(u);return c?d.set(t,c):d.delete(t),d})},handleRemoveItem:t=>(i(c=>{const u=new Map(c);return u.set(t.uid,{isUpdating:!0,updatedValue:0}),u}),ve([{uid:t.uid,quantity:0}]).then(c=>(s==null||s(t),Promise.resolve(c)))),setItemUpdating:(t,c)=>{i(u=>{const d=new Map(u);return d.set(t,{isUpdating:c,updatedValue:c}),d})}}},Ye=({variant:n="primary",className:l,type:s="warning",additionalActions:e,onDismiss:i,heading:o,description:b,icon:y,itemList:P,actionButtonPosition:C,...S})=>{var U,f,q;const L=te({dismiss:"Dropin.InlineAlert.dismissLabel"});return m("div",{...S,className:E(["dropin-in-line-alert",`dropin-in-line-alert--${s}`,`dropin-in-line-alert--${n}`,l]),children:[m("div",{className:"dropin-in-line-alert__heading",children:[m("div",{className:"dropin-in-line-alert__title-container",children:[y&&a(I,{node:y,className:"dropin-in-line-alert__icon"}),a("span",{className:"dropin-in-line-alert__title",children:o})]}),m("div",{className:"dropin-in-line-alert__actions-container",children:[e&&(C==="top"||!C&&e.length<=1)&&a(J,{variant:"tertiary",className:"dropin-in-line-alert__additional-action",onClick:e.length>0?(U=e[0])==null?void 0:U.onClick:void 0,"aria-label":(f=e[0])==null?void 0:f.label,children:(q=e[0])==null?void 0:q.label}),i&&a(J,{icon:a(K,{source:Fe,size:"24",stroke:"2"}),className:"dropin-in-line-alert__dismiss-button",variant:"tertiary",onClick:i,"aria-label":L.dismiss})]})]}),b&&a("p",{className:"dropin-in-line-alert__description",children:b}),a("div",{className:"dropin-in-line-alert__item-list-container",children:P&&a(I,{node:P,className:E(["dropin-in-line-alert__item-list"])})}),e&&(C==="bottom"||!C&&e.length>1)&&a("div",{className:"dropin-in-line-alert__additional-actions-container",children:e.map(w=>a(J,{variant:"tertiary",className:"dropin-in-line-alert__additional-action",onClick:w.onClick,children:w.label},w.label))})]})},Ze=()=>a(Ee,{"data-testid":"cart-summary-table-skeleton",className:"cart-cart-summary-table__skeleton",rowGap:"medium",children:a(Me,{variant:"row",size:"xlarge",fullWidth:!0,lines:4,multilineGap:"small"})}),ea=({initialData:n=null,routeProduct:l,routeEmptyCartCTA:s,slots:e,className:i,allowQuantityUpdates:o=!0,allowRemoveItems:b=!0,onQuantityUpdate:y,onItemRemove:P,undo:C=!1,...S})=>{const[L,U]=ee(!n),[f,q]=ee(n),[w,W]=ee([]),x=te({file:"Cart.CartItem.file",files:"Cart.CartItem.files",heading:"Cart.Cart.heading",message:"Cart.CartItem.message",recipient:"Cart.CartItem.recipient",regularPrice:"Cart.CartItem.regularPrice",discountedPrice:"Cart.CartItem.discountedPrice",sender:"Cart.CartItem.sender",lowInventory:"Cart.CartItem.lowInventory",insufficientQuantity:"Cart.CartItem.insufficientQuantity",insufficientQuantityGeneral:"Cart.CartItem.insufficientQuantityGeneral",outOfStockHeading:"Cart.OutOfStockMessage.heading",outOfStockDescription:"Cart.OutOfStockMessage.message",outOfStockAlert:"Cart.OutOfStockMessage.alert",removeAction:"Cart.OutOfStockMessage.action",notAvailableMessage:"Cart.CartItem.notAvailableMessage",viewMore:"Cart.Cart.viewMore",viewAll:"Cart.Cart.viewAll",discountPercent:"Cart.CartItem.discountPercentage",savingsAmount:"Cart.CartItem.savingsAmount",includingTax:"Cart.CartItem.includingTax",excludingTax:"Cart.CartItem.excludingTax",remove:"Dropin.CartItem.remove.label",removeDefault:"Dropin.CartItem.removeDefault.label",quantity:"Dropin.CartItem.quantity.label",itemBeingRemoved:"Cart.CartItem.itemBeingRemoved",itemRemoved:"Cart.CartItem.itemRemoved",itemRemovedDescription:"Cart.CartItem.itemRemovedDescription",undoAction:"Cart.CartItem.undoAction",dismissAction:"Cart.CartItem.dismissAction"}),{showIncludedTaxPrice:V,showExcludingTaxPrice:X,itemsUpdating:T,itemUpdateErrors:k,getConfiguration:t,getPriceProps:c,getSubtotalProps:u,debouncedQuantityChange:d,setItemsUpdating:p,getWarningMessage:v,handleRemoveItem:M,setItemUpdating:A,setItemUpdateError:Q}=Ke({dictionary:x,onQuantityUpdate:y,onItemRemove:P});function j(h){const r=Ie(),g=r==null?void 0:r.items.find(_=>_.uid===h);g&&W(_=>{const O=r.items.findIndex($=>$.uid===h);return O!==-1&&!_.some($=>$.item.uid===h)?(Ce.emit("cart/product/removed",{item:g,index:O}),[..._,{item:g,index:O,loading:!1,error:void 0}]):_})}const R=aa(w,W),H=ta(W),z=ze(h=>{C&&j(h.uid),M(h)},[C,M]);Be(()=>{const h=Ce.on("cart/data",r=>{U(!0),q(r),p(new Map),U(!1)},{eager:!0});return()=>{h==null||h.off()}},[U,q,p]);const B=Ge(()=>{var h;return((h=f==null?void 0:f.items)==null?void 0:h.sort((r,g)=>k.has(r.uid)&&!k.has(g.uid)?-1:!k.has(r.uid)&&k.has(g.uid)?1:r.outOfStock&&!g.outOfStock?-1:!r.outOfStock&&g.outOfStock?1:0).map((r,g)=>{var se,ue,oe,de,me,be,pe,ge,ye,_e,he;const _=T.has(r.uid),O=v(r),$=a(N,{name:"ProductTitle",slot:e==null?void 0:e.ProductTitle,context:{item:r},children:l?a("a",{href:l(r),children:r.name}):r.name}),F={src:r.image.src,alt:r.image.alt,width:"300",height:"300",params:{width:300}},re=a(De,{"data-testid":`cart-table-item-image-${r.sku}`,loading:g<4?"eager":"lazy",...F}),ke=a(N,{name:"Thumbnail",slot:e==null?void 0:e.Thumbnail,className:"cart-cart-summary-table__item-image-wrapper",context:{item:r,defaultImageProps:{...F,loading:g<4?"eager":"lazy"},index:g},children:l?a("a",{href:l(r),children:re}):re}),Se=a(N,{name:"Sku",slot:e==null?void 0:e.Sku,context:{item:r},children:r.sku}),we=r.outOfStock||e!=null&&e.ItemAlert?a(N,{name:"ItemAlert",slot:e==null?void 0:e.ItemAlert,context:{item:r},children:r.outOfStock&&m("div",{className:"cart-cart-summary-table__item-quantity-alert-wrapper","data-testid":`cart-table-item-quantity-alert-${r.uid}`,children:[a(K,{className:"cart-cart-summary-table__item-quantity-alert-icon",source:je,size:"16"}),a("span",{className:"cart-cart-summary-table__item-quantity-alert-text",children:x.outOfStockAlert})]})}):void 0,Te=O||e!=null&&e.ItemWarning?a(N,{name:"ItemWarning",slot:e==null?void 0:e.ItemWarning,context:{item:r},children:O&&m("div",{className:"cart-cart-summary-table__item-quantity-warning-wrapper","data-testid":`cart-table-item-quantity-warning-${r.uid}`,children:[a(K,{className:"cart-cart-summary-table__item-quantity-warning-icon",source:Re,size:"16"}),a("span",{className:"cart-cart-summary-table__item-quantity-warning-text",children:O})]})}):void 0,Y=t({item:r}),Pe=Y||e!=null&&e.Configurations?a(N,{name:"Configurations",slot:e==null?void 0:e.Configurations,context:{item:r},children:Y&&a("ul",{className:"cart-cart-summary-table__item-configurations","data-testid":`cart-table-item-configurations-${r.sku}`,children:Object.entries(Y).map(([G,Z])=>m("li",{className:"cart-cart-summary-table__item-configuration","data-testid":`cart-table-item-configuration-${G}`,children:[m("span",{className:"cart-cart-summary-table__item-configuration-label",children:[G,":"]}),a("span",{className:"cart-cart-summary-table__item-configuration-value",children:Z})]},G))})}):void 0,{subtotalProps:qe,subtotalDiscountProps:ne}=u(r),ie=(se=T.get(r.uid))==null?void 0:se.updatedValue,ce=_&&!isNaN(ie)?ie:r.quantity,le=G=>{const Z=G.target,Ue=parseInt(Z.value,10);d(r,Ue)},Oe=T.has(r.uid)&&((ue=T.get(r.uid))==null?void 0:ue.updatedValue)===0,Le=a(N,{name:"Actions",slot:e==null?void 0:e.Actions,context:{item:r,itemsUpdating:T,setItemUpdating:A,setItemUpdateError:Q},children:b&&!Oe&&a(J,{variant:"tertiary",size:"medium",className:"cart-cart-summary-table__item-remove-button","data-testid":`cart-table-item-remove-${r.uid}`,icon:a(K,{source:He,size:"32"}),onClick:()=>z(r),"aria-label":((oe=x.remove)==null?void 0:oe.replace("{product}",r.name))||x.removeDefault})});return{key:r.uid,uid:r.uid,updating:_,hasError:r.outOfStock||k.has(r.uid),item:a(N,{name:"Item",slot:e==null?void 0:e.Item,context:{item:r},children:a(Je,{productTitle:$,image:ke,sku:Se,configurations:Pe,alert:we,warning:Te})}),price:m(N,{name:"Price",className:"cart-cart-summary-table__item-price",slot:e==null?void 0:e.Price,context:{item:r},children:[a(D,{...c(r)}),V&&m("span",{className:"cart-cart-summary-table__item-price-tax-label",children:[x.includingTax,": ",a(D,{amount:(de=r.taxedPrice)==null?void 0:de.value,currency:(me=r.taxedPrice)==null?void 0:me.currency})]}),X&&m("span",{className:"cart-cart-summary-table__item-price-tax-label",children:[x.excludingTax,": ",a(D,{amount:(be=r.regularPrice)==null?void 0:be.value,currency:(pe=r.regularPrice)==null?void 0:pe.currency})]})]}),quantity:a(N,{name:"Quantity",className:"cart-cart-summary-table__item-qty",slot:e==null?void 0:e.Quantity,context:{item:r,isUpdating:_,quantityInputValue:ce,handleInputChange:le,itemUpdateErrors:k},children:o?a("input",{id:`cart-table-item-quantity-${r.uid}`,"data-testid":`cart-table-item-quantity-${r.uid}`,type:"number",min:"1",value:ce,disabled:_,"aria-label":x.quantity,className:E(["cart-cart-summary-table__cell-qty-input","cart-cart-summary-table__cell-qty-updater",["cart-cart-summary-table__cell-qty-updater--disabled",_],["cart-cart-summary-table__cell-qty-updater--error",k.has(r.uid)]]),onChange:le}):a("span",{children:r.quantity})}),subtotal:m(N,{name:"Subtotal",className:"cart-cart-summary-table__item-subtotal",slot:e==null?void 0:e.Subtotal,context:{item:r},children:[a(D,{...qe}),ne&&a(D,{...ne}),V&&m("span",{className:"cart-cart-summary-table__item-subtotal-tax-label",children:[x.includingTax,": ",a(D,{amount:(ge=r.rowTotalIncludingTax)==null?void 0:ge.value,currency:(ye=r.rowTotalIncludingTax)==null?void 0:ye.currency})]}),X&&m("span",{className:"cart-cart-summary-table__item-subtotal-tax-label",children:[x.excludingTax,": ",a(D,{amount:(_e=r.rowTotal)==null?void 0:_e.value,currency:(he=r.rowTotal)==null?void 0:he.currency})]})]}),actions:Le}}))||[]},[f,T,o,l,e,k,x,t,b,d,v,c,u,A,Q,V,X,z]);if(L)return a(Ze,{});const Ne=()=>{if(!(f!=null&&f.items))return null;const h=[],r=f.items;for(let g=0;g<=B.length;g++)C&&w.filter(_=>_.index===g).forEach(({item:_,error:O})=>{const $=ra(_.uid,T),F=la({item:_,error:O},_,$,x,R,H,e);h.push({uid:`undo-banner-${_.uid}`,updating:!1,hasError:!1,item:a("div",{}),price:a("div",{}),quantity:a("div",{}),subtotal:a("div",{}),actions:a("div",{}),undoBanner:F})}),g<B.length&&g<r.length&&h.push(B[g]);return a(ae,{entries:h,className:i,...S})},xe=a(N,{name:"EmptyCart",slot:e==null?void 0:e.EmptyCart,context:{},children:a(Xe,{ctaLinkURL:s==null?void 0:s()})});return f!=null&&f.totalQuantity||C&&w.length>0?C?w.length>0?Ne():a(ae,{entries:B,className:i,...S}):a(ae,{entries:B,className:i,...S}):xe};ea.getInitialData=async function(){return Ie()};const aa=(n,l)=>async s=>{l(i=>i.map(o=>o.item.uid===s?{...o,error:void 0}:o));const e=n.find(i=>i.item.uid===s);if(e)try{await Ve([{sku:e.item.sku,parentSku:e.item.topLevelSku,quantity:e.item.quantity,optionsUIDs:e.item.bundleOptionsUIDs||(e.item.selectedOptionsUIDs?Object.values(e.item.selectedOptionsUIDs):void 0),enteredOptions:e.item.customizableOptions?Object.entries(e.item.customizableOptions).map(([i,o])=>({uid:i,value:o})):void 0}]),l(i=>i.filter(o=>o.item.uid!==s))}catch(i){l(o=>o.map(b=>b.item.uid===s?{...b,error:(i==null?void 0:i.message)||"Failed to restore item."}:b))}},ta=n=>l=>{n(s=>s.filter(e=>e.item.uid!==l))},ra=(n,l)=>{var s;return l.has(n)&&((s=l.get(n))==null?void 0:s.updatedValue)===0},na=(n,l,s,e,i,o)=>n?[]:[{label:l.undoAction,onClick:()=>{s(i)},"aria-label":`${l.undoAction} remove ${o}`},{label:l.dismissAction,onClick:()=>{e(i)},"aria-label":`${l.dismissAction} undo for ${o}`}],ia=(n,l)=>()=>n(l),ca=(n,l)=>()=>n(l),la=(n,l,s,e,i,o,b)=>{var S,L;const y=na(s,e,i,o,n.item.uid,n.item.name),P=ia(i,n.item.uid),C=ca(o,n.item.uid);return a(N,{name:"UndoBanner",slot:b==null?void 0:b.UndoBanner,context:{item:n.item,loading:s,error:n.error,onUndo:P,onDismiss:C},children:a(Ye,{type:n.error?"error":"info",heading:s?(S=e.itemBeingRemoved)==null?void 0:S.replace("{product}",l.name):(L=e.itemRemoved)==null?void 0:L.replace("{product}",n.item.name),description:n.error||e.itemRemovedDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:y},`undo-banner-${n.item.uid}`)},`undo-banner-${n.item.uid}`)};export{ea as C,ta as a,na as b,aa as c,ia as d,ca as e,la as f,ra as g};
|
|
4
4
|
//# sourceMappingURL=CartSummaryTable2.js.map
|
package/chunks/ChevronDown.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
3
|
import*as e from"@dropins/tools/preact-compat.js";const o=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701",stroke:"currentColor",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round"}));export{o as S};
|
|
4
4
|
//# sourceMappingURL=ChevronDown.js.map
|
package/chunks/ChevronUp.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
3
|
import*as e from"@dropins/tools/preact-compat.js";const o=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("path",{d:"M7.74512 14.132L12.0001 9.87701L16.2551 14.132",stroke:"currentColor",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round"}));export{o as S};
|
|
4
4
|
//# sourceMappingURL=ChevronUp.js.map
|
package/chunks/Close.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
3
|
import*as e from"@dropins/tools/preact-compat.js";const o=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M18.3599 5.64001L5.62988 18.37",stroke:"currentColor"}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M18.3599 18.37L5.62988 5.64001",stroke:"currentColor"}));export{o as S};
|
|
4
4
|
//# sourceMappingURL=Close.js.map
|
package/chunks/Coupon.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
3
|
import*as C from"@dropins/tools/preact-compat.js";const M=H=>C.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...H},C.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M22 6.25H22.75C22.75 5.83579 22.4142 5.5 22 5.5V6.25ZM22 9.27L22.2514 9.97663C22.5503 9.87029 22.75 9.58731 22.75 9.27H22ZM20.26 12.92L19.5534 13.1714L19.5539 13.1728L20.26 12.92ZM22 14.66H22.75C22.75 14.3433 22.551 14.0607 22.2528 13.9539L22 14.66ZM22 17.68V18.43C22.4142 18.43 22.75 18.0942 22.75 17.68H22ZM2 17.68H1.25C1.25 18.0942 1.58579 18.43 2 18.43V17.68ZM2 14.66L1.74865 13.9534C1.44969 14.0597 1.25 14.3427 1.25 14.66H2ZM3.74 11.01L4.44663 10.7586L4.44611 10.7572L3.74 11.01ZM2 9.27H1.25C1.25 9.58675 1.44899 9.86934 1.7472 9.97611L2 9.27ZM2 6.25V5.5C1.58579 5.5 1.25 5.83579 1.25 6.25H2ZM21.25 6.25V9.27H22.75V6.25H21.25ZM21.7486 8.56337C19.8706 9.23141 18.8838 11.2889 19.5534 13.1714L20.9666 12.6686C20.5762 11.5711 21.1494 10.3686 22.2514 9.97663L21.7486 8.56337ZM19.5539 13.1728C19.9195 14.1941 20.7259 15.0005 21.7472 15.3661L22.2528 13.9539C21.6541 13.7395 21.1805 13.2659 20.9661 12.6672L19.5539 13.1728ZM21.25 14.66V17.68H22.75V14.66H21.25ZM22 16.93H2V18.43H22V16.93ZM2.75 17.68V14.66H1.25V17.68H2.75ZM2.25135 15.3666C4.12941 14.6986 5.11623 12.6411 4.44663 10.7586L3.03337 11.2614C3.42377 12.3589 2.85059 13.5614 1.74865 13.9534L2.25135 15.3666ZM4.44611 10.7572C4.08045 9.73588 3.27412 8.92955 2.2528 8.56389L1.7472 9.97611C2.34588 10.1905 2.81955 10.6641 3.03389 11.2628L4.44611 10.7572ZM2.75 9.27V6.25H1.25V9.27H2.75ZM2 7H22V5.5H2V7ZM7.31 6.74V18.17H8.81V6.74H7.31ZM17.0997 8.39967L11.0397 14.4597L12.1003 15.5203L18.1603 9.46033L17.0997 8.39967ZM12.57 9.67C12.57 9.87231 12.4159 10 12.27 10V11.5C13.2839 11.5 14.07 10.6606 14.07 9.67H12.57ZM12.27 10C12.1241 10 11.97 9.87231 11.97 9.67H10.47C10.47 10.6606 11.2561 11.5 12.27 11.5V10ZM11.97 9.67C11.97 9.46769 12.1241 9.34 12.27 9.34V7.84C11.2561 7.84 10.47 8.67938 10.47 9.67H11.97ZM12.27 9.34C12.4159 9.34 12.57 9.46769 12.57 9.67H14.07C14.07 8.67938 13.2839 7.84 12.27 7.84V9.34ZM17.22 14.32C17.22 14.5223 17.0659 14.65 16.92 14.65V16.15C17.9339 16.15 18.72 15.3106 18.72 14.32H17.22ZM16.92 14.65C16.7741 14.65 16.62 14.5223 16.62 14.32H15.12C15.12 15.3106 15.9061 16.15 16.92 16.15V14.65ZM16.62 14.32C16.62 14.1177 16.7741 13.99 16.92 13.99V12.49C15.9061 12.49 15.12 13.3294 15.12 14.32H16.62ZM16.92 13.99C17.0659 13.99 17.22 14.1177 17.22 14.32H18.72C18.72 13.3294 17.9339 12.49 16.92 12.49V13.99Z",fill:"currentColor"}));export{M as S};
|
|
4
4
|
//# sourceMappingURL=Coupon.js.map
|
package/chunks/Coupons.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Copyright
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
3
|
import{jsx as t,jsxs as u}from"@dropins/tools/preact-jsx-runtime.js";import*as o from"@dropins/tools/preact-compat.js";import{useRef as k}from"@dropins/tools/preact-compat.js";import{classes as e,VComponent as r,getFormValues as x}from"@dropins/tools/lib.js";import{Accordion as L,AccordionSection as N}from"@dropins/tools/components.js";/* empty css */import{S}from"./Coupon.js";import{useText as C}from"@dropins/tools/i18n.js";const I=n=>o.createElement("svg",{id:"Icon_Add_Base","data-name":"Icon \\u2013 Add \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...n},o.createElement("g",{id:"Large"},o.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),o.createElement("g",{id:"Add_icon","data-name":"Add icon",transform:"translate(9.734 9.737)"},o.createElement("line",{vectorEffect:"non-scaling-stroke",id:"Line_579","data-name":"Line 579",y2:12.7,transform:"translate(2.216 -4.087)",fill:"none",stroke:"currentColor"}),o.createElement("line",{vectorEffect:"non-scaling-stroke",id:"Line_580","data-name":"Line 580",x2:12.7,transform:"translate(-4.079 2.263)",fill:"none",stroke:"currentColor"})))),P=n=>o.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},o.createElement("path",{d:"M17.3332 11.75H6.6665",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke",fill:"none",stroke:"currentColor"})),V=({accordionSectionTitle:n,accordionSectionIcon:h,className:p,children:b,couponCodeField:i,applyCouponsButton:s,appliedCoupons:d,error:m,onApplyCoupon:a,...g})=>{const c=k(null),_=C({couponTitle:"Cart.PriceSummary.coupon.title"}),v=w=>{var f;w.preventDefault();const E=x(c.current);a==null||a(E);const l=(f=c==null?void 0:c.current)==null?void 0:f.querySelector("input");l&&(l.value="")};return t("div",{...g,"data-testid":"cart-coupons",className:e(["cart-coupons",p]),children:t(L,{"data-testid":"coupon-code",className:e(["cart-coupons__accordion"]),actionIconPosition:"right",iconOpen:I,iconClose:P,children:u(N,{title:n??_.couponTitle,iconLeft:h??S,showIconLeft:!0,renderContentWhenClosed:!1,"data-testid":"coupon-code-accordion-section",className:e(["cart-coupons__accordion-section"]),children:[t("form",{"data-testid":"coupon-code-form",className:e(["coupon-code-form--edit"]),ref:c,children:u("div",{className:e(["coupon-code-form__action"]),children:[i&&t(r,{node:i,className:e(["coupon-code-form__codes"])}),s&&t(r,{node:s,className:e(["coupon-code-form--button"]),onClick:v,type:"submit"})]})}),m&&t(r,{node:m,className:e(["coupon-code-form__error"])}),d&&t(r,{node:d,className:e(["coupon-code-form__applied"])})]})})})};export{V as C};
|
|
4
4
|
//# sourceMappingURL=Coupons.js.map
|