@dropins/storefront-cart 1.3.0-beta3 → 1.3.0-beta4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as t,jsxs as u,Fragment as A}from"@dropins/tools/preact-jsx-runtime.js";import{classes as We,Slot as Ze}from"@dropins/tools/lib.js";import{Modal as De,ContentGrid as Xe,ImageSwatch as Je,Button as se,Price as ce,Skeleton as Qe,SkeletonRow as Ye,Field as j,Checkbox as ae,Input as Me,TextArea as Ue,Accordion as Ne,AccordionSection as Pe,Icon as D,Card as Ve,ProgressSpinner as et}from"@dropins/tools/components.js";/* empty css */import*as X from"@dropins/tools/preact-compat.js";import{useRef as tt,useEffect as J,useState as M,useId as $e,useCallback as K,useMemo as le}from"@dropins/tools/preact-hooks.js";import{useText as Z}from"@dropins/tools/i18n.js";import{s as L}from"../chunks/resetCart.js";import{S as Re}from"../chunks/ChevronDown.js";import{S as Se}from"../chunks/ChevronUp.js";import{events as rt}from"@dropins/tools/event-bus.js";import{u as it}from"../chunks/updateProductsFromCart.js";import{s as nt}from"../chunks/setGiftOptionsOnCart.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/persisted-data.js";import"../chunks/refreshCart.js";import"../fragments.js";import"../chunks/acdl.js";const ee=e=>X.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M6.75 12.762L10.2385 15.75L17.25 9",stroke:"currentColor"})),de=e=>X.createElement("svg",{width:20,height:23,viewBox:"0 0 20 23",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{d:"M10 6L10 21.5M10 6H12.25C13.4926 6 14.5 4.99264 14.5 3.75C14.5 2.50736 13.4926 1.5 12.25 1.5C11.0074 1.5 10 2.50736 10 3.75M10 6V3.75M10 6H7.75C6.50736 6 5.5 4.99264 5.5 3.75C5.5 2.50736 6.50736 1.5 7.75 1.5C8.99264 1.5 10 2.50736 10 3.75M3.25 10.75H16.75C17.9926 10.75 19 9.74264 19 8.5C19 7.25736 17.9926 6.25 16.75 6.25H3.25C2.00736 6.25 1 7.25736 1 8.5C1 9.74264 2.00736 10.75 3.25 10.75ZM4.75 21.5H15.25C16.4926 21.5 17.5 20.4926 17.5 19.25V13.25C17.5 12.0074 16.4926 11 15.25 11H4.75C3.50736 11 2.5 12.0074 2.5 13.25V19.25C2.5 20.4926 3.50736 21.5 4.75 21.5Z",stroke:"currentColor",strokeWidth:1.5}));function ot(e){const i=tt(null);return J(()=>{if(!e||!i.current)return;const l=i.current,d=l.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])');if(d.length===0)return;const r=d[0],f=d[d.length-1];function g(o){o.key==="Tab"&&(o.shiftKey&&document.activeElement===r?(o.preventDefault(),f.focus()):!o.shiftKey&&document.activeElement===f&&(o.preventDefault(),r.focus()))}return l.addEventListener("keydown",g),()=>{l.removeEventListener("keydown",g)}},[e]),i}const at=({view:e,showModal:i,productName:l,giftWrappingConfig:d,imageSwatchImageNode:r,setShowModal:f,updateGiftOptions:g})=>{var w;const o=ot(i),n=Z({modalTitle:"Cart.GiftOptions.modal.title",defaultTitle:"Cart.GiftOptions.modal.defaultTitle",modalWrappingText:"Cart.GiftOptions.modal.wrappingText",modalWrappingSubText:"Cart.GiftOptions.modal.wrappingSubText",modalConfirmButton:"Cart.GiftOptions.modal.modalConfirmButton",modalCancelButton:"Cart.GiftOptions.modal.modalCancelButton",ariaLabelModal:"Cart.GiftOptions.modal.ariaLabelModal",ariaLabelModalOpen:"Cart.GiftOptions.modal.ariaLabelModalOpen",ariaLabelModalClose:"Cart.GiftOptions.modal.ariaLabelModalClose",ariaLabelWrapping:"Cart.GiftOptions.modal.ariaLabelWrapping"}),[c,C]=M();if(J(()=>{const p=d.find(T=>T.selected)??d[0];C(p)},[d]),J(()=>{const p=document==null?void 0:document.querySelector(".cart-gift-options-view__modal-wrapper");p&&(p==null||p.focus())},[]),!i||!d.length)return null;const s=l?`${n.modalTitle} ${l}`:n.defaultTitle;return t("div",{ref:o,className:"cart-gift-options-view__modal-wrapper",tabIndex:0,"aria-label":`${n.ariaLabelModal} ${i?n.ariaLabelModalOpen:n.ariaLabelModalClose} ${l}`,children:u(De,{"data-testid":`gift-option-modal-${e}`,className:"cart-gift-options-view__modal",size:"medium",title:u(A,{children:[t("span",{children:s}),c&&((w=c==null?void 0:c.price)==null?void 0:w.value)>0?t(ce,{amount:c.price.value,currency:c.price.currency,weight:"normal"}):null]}),centered:!0,onClose:f,children:[u("div",{className:"cart-gift-options-view__modal-content",children:[t("span",{className:"cart-gift-options-view__modal-text",children:n.modalWrappingText}),t(Xe,{emptyGridContent:t(A,{}),maxColumns:6,columnWidth:"100px",className:"cart-gift-options-view__modal-grid",children:d.map(p=>t(Je,{groupAriaLabel:n.ariaLabelWrapping,selected:(c==null?void 0:c.uid)===(p==null?void 0:p.uid),onValue:()=>{C(p)},imageNode:r,name:"giftWrappingId",value:p.uid,src:p.image.url,alt:p.design,label:p.design,"data-testid":`gift-option-modal-image-${p.uid}`,className:"cart-gift-options-view__modal-grid-item"},p.uid))}),t("span",{className:"cart-gift-options-view__modal-sub-text",children:c==null?void 0:c.design})]}),t(se,{"data-testid":"gift-option-modal-confirm-button",type:"button",onClick:()=>{g("giftWrappingId",c==null?void 0:c.uid,{isGiftWrappingSelected:!0}),f()},children:n.modalConfirmButton}),t(se,{type:"button",variant:"secondary",onClick:f,"data-testid":"gift-option-modal-cancel-button",children:n.modalCancelButton})]})})},lt=()=>t(Qe,{children:t(Ye,{variant:"row",size:"small",fullWidth:!0,lines:1,multilineGap:"small"})}),st=({className:e,view:i,item:l,giftOptions:d,disabled:r,cartData:f,giftWrappingConfig:g,setShowModal:o,onInputChange:n,areGiftOptionsVisible:c})=>{var N,P,B,z;const C=$e(),s=Z({customize:`Cart.GiftOptions.${i}.customize`,giftReceiptIncludedTitle:`Cart.GiftOptions.${i}.giftReceiptIncluded.title`,giftReceiptIncludedText:`Cart.GiftOptions.${i}.giftReceiptIncluded.subtitle`,printedCardIncludedTitle:`Cart.GiftOptions.${i}.printedCardIncluded.title`,printedCardIncludedText:`Cart.GiftOptions.${i}.printedCardIncluded.subtitle`,giftOptionsWrapTitle:`Cart.GiftOptions.${i}.giftOptionsWrap.title`,giftOptionsWrapText:`Cart.GiftOptions.${i}.giftOptionsWrap.subtitle`,requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),w=l==null?void 0:l.productGiftWrapping,p=f==null?void 0:f.cartGiftWrapping,T=i==="product"?w:p,y=T==null?void 0:T.find(S=>S.uid===d.giftWrappingId),V=(y==null?void 0:y.design)??"",O=l==null?void 0:l.giftWrappingPrice,v=V?`${s.giftOptionsWrapText} ${V}`:"",F=+(((P=(N=L.config)==null?void 0:N.printedCardPrice)==null?void 0:P.value)??0)>0?(B=L.config)==null?void 0:B.printedCardPrice:null;let _=null;O!=null&&O.value?_=O:(z=y==null?void 0:y.price)!=null&&z.value&&(_=y.price);const W=S=>S?u("span",{children:[" (+",t(ce,{amount:S.value,currency:S.currency,weight:"normal"}),")"]}):null;return u("div",{className:We([e,[`${e}--hidden`,!c.isGiftOptionsVisible]]),children:[c.isGiftReceiptVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-gift-receipt",children:t(ae,{id:`giftReceiptIncluded-${C}`,disabled:r,name:"giftReceiptIncluded",checked:d.giftReceiptIncluded,placeholder:s.giftReceiptIncludedTitle,label:s.giftReceiptIncludedTitle,description:s.giftReceiptIncludedText,onChange:n})}):null,c.isPrintedCartVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-printed-card",children:t(ae,{id:`printedCardIncluded-${C}`,disabled:r,name:"printedCardIncluded",checked:d.printedCardIncluded,placeholder:s.printedCardIncludedTitle,label:u(A,{children:[s.printedCardIncludedTitle,W(F)]}),description:s.printedCardIncludedText,onChange:n})}):null,c.isGiftWrappingVisible?u(A,{children:[t(j,{disabled:r,className:"cart-gift-options-view__field-gift-wrap",children:t(ae,{id:`giftOptionsWrap-${C}`,disabled:r,name:"isGiftWrappingSelected",checked:d.isGiftWrappingSelected,placeholder:s.giftOptionsWrapTitle,label:u(A,{children:[s.giftOptionsWrapTitle,W(_)]}),description:v,onChange:n})}),t(se,{disabled:r||!g.length,type:"button","data-testid":`gift-option-customize-${i}`,variant:"tertiary",onClick:()=>o(!0),children:s.customize})]}):null]})},dt=({view:e,giftOptions:i,disabled:l,errorMessage:d,onInputChange:r,onBlur:f,isGiftMessageVisible:g})=>{const o=$e(),n=Z({formTitle:`Cart.GiftOptions.${e}.formContent.formTitle`,formTo:`Cart.GiftOptions.${e}.formContent.formTo`,formFrom:`Cart.GiftOptions.${e}.formContent.formFrom`,giftMessageTitle:`Cart.GiftOptions.${e}.formContent.giftMessageTitle`,formToPlaceholder:`Cart.GiftOptions.${e}.formContent.formToPlaceholder`,formFromPlaceholder:`Cart.GiftOptions.${e}.formContent.formFromPlaceholder`,formMessagePlaceholder:`Cart.GiftOptions.${e}.formContent.formMessagePlaceholder`});return g?u(A,{children:[t("span",{children:n.formTitle}),u("div",{children:[t("span",{children:n.formTo}),t(j,{disabled:l,error:d.recipientName,children:t(Me,{id:`recipientName-${o}`,disabled:l,type:"text",name:"recipientName",value:i.recipientName,placeholder:n.formToPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.formFrom}),t(j,{disabled:l,error:d.senderName,children:t(Me,{id:`senderName-${o}`,disabled:l,type:"text",name:"senderName",value:i.senderName,placeholder:n.formFromPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.giftMessageTitle}),t(j,{disabled:l,children:t(Ue,{id:`message-${o}`,errorMessage:d.message,disabled:l,name:"message",value:i.message,label:n.formMessagePlaceholder,onChange:r,onBlur:f})})]})]}):null},ct=({view:e,giftOptions:i,giftWrappingConfig:l,readOnlyFormOrderView:d})=>{const r=Z({readOnlyProductTitle:"Cart.GiftOptions.product.readOnlyFormView.title",wrapping:"Cart.GiftOptions.product.readOnlyFormView.wrapping",recipient:"Cart.GiftOptions.product.readOnlyFormView.recipient",sender:"Cart.GiftOptions.product.readOnlyFormView.sender",message:"Cart.GiftOptions.product.readOnlyFormView.message",readOnlyOrderTitle:"Cart.GiftOptions.order.readOnlyFormView.title",readOnlyOrderGiftReceiptTitle:"Cart.GiftOptions.order.readOnlyFormView.giftReceipt",readOnlyOrderGiftReceiptText:"Cart.GiftOptions.order.readOnlyFormView.giftReceiptText",readOnlyOrderGiftPrintCardTitle:"Cart.GiftOptions.order.readOnlyFormView.printCard",readOnlyOrderGiftPrintCardText:"Cart.GiftOptions.order.readOnlyFormView.printCardText",readOnlyOrderGiftWrapTitle:"Cart.GiftOptions.order.readOnlyFormView.giftWrap",readOnlyOrderGiftWrapOptionsText:"Cart.GiftOptions.order.readOnlyFormView.giftWrapOptions",readOnlyOrderFormTitle:"Cart.GiftOptions.order.readOnlyFormView.formTitle",readOnlyOrderFormTo:"Cart.GiftOptions.order.readOnlyFormView.formTo",readOnlyOrderFormFrom:"Cart.GiftOptions.order.readOnlyFormView.formFrom",readOnlyOrderFormMessageTitle:"Cart.GiftOptions.order.readOnlyFormView.formMessageTitle"}),{recipientName:f,senderName:g,message:o,giftReceiptIncluded:n,printedCardIncluded:c,isGiftWrappingSelected:C}=i,s=l==null?void 0:l.find(({uid:O})=>O===(i==null?void 0:i.giftWrappingId)),w=!!f||!!g||!!o,p=s==null?void 0:s.design,T=n||c||(s==null?void 0:s.selected),y=[{id:1,title:r.wrapping,message:C?p:""},{id:2,title:r.recipient,message:f},{id:3,title:r.sender,message:g},{id:4,title:r.message,message:o}],V=y.every(({message:O})=>!O);if(e==="product"&&!V)return t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:r.readOnlyProductTitle,showIconLeft:!0,iconLeft:de,defaultOpen:!1,renderContentWhenClosed:!1,children:t("div",{children:y.filter(O=>O.message).map(O=>u("p",{children:[O.title," ",O.message]},O.id))})})});if(e==="order"&&(w||T)){const O=u("div",{className:"cart-gift-options-readonly__header",children:[t(D,{source:de,size:"24"}),t("span",{children:r.readOnlyOrderTitle})]}),v=u(A,{children:[n?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-receipt",children:[t(D,{source:ee,size:"16"}),t("p",{children:r.readOnlyOrderGiftReceiptTitle}),t("p",{children:r.readOnlyOrderGiftReceiptText})]}):null,c?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--print-card",children:[t(D,{source:ee,size:"16"}),t("p",{children:r.readOnlyOrderGiftPrintCardTitle}),t("p",{children:r.readOnlyOrderGiftPrintCardText})]}):null,s!=null&&s.selected?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-wrap",children:[t(D,{source:ee,size:"16"}),u("p",{children:[r.readOnlyOrderGiftWrapTitle," (+",t(ce,{amount:s.price.value,currency:s.price.currency,weight:"normal"}),")"]}),t("p",{children:`${r.readOnlyOrderGiftWrapOptionsText} ${s==null?void 0:s.design}`})]}):null]}),F=w?u("div",{className:"cart-gift-options-readonly__form",children:[t("div",{children:r.readOnlyOrderFormTitle}),u("div",{children:[u("p",{children:[t("span",{children:r.readOnlyOrderFormTo}),t("span",{children:f})]}),u("p",{children:[t("span",{children:r.readOnlyOrderFormFrom}),t("span",{children:g})]})]}),u("div",{children:[t("p",{children:r.readOnlyOrderFormMessageTitle}),t("p",{children:o})]})]}):null;return u(Ve,{variant:d,children:[O,v,F]})}return null},ft=({item:e,view:i,loading:l,giftOptions:d,showModal:r,isEditable:f,errorsField:g,updateLoading:o,cartData:n,fieldsDisabled:c,isGiftOptionsApplied:C,giftWrappingConfig:s,readOnlyFormOrderView:w,isGiftMessageVisible:p,areGiftOptionsVisible:T,imageSwatchImageNode:y,onBlur:V,setShowModal:O,updateGiftOptions:v,onInputChange:F,handleFormMouseLeave:_})=>{const W=Z({accordionHeading:`Cart.GiftOptions.${i}.accordionHeading`}),N=K(P=>t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:u("div",{className:"cart-gift-options-view__icon--success",children:[t("span",{children:W.accordionHeading}),C?t(D,{source:ee,size:"16"}):null]}),ariaLabelTitle:W.accordionHeading,showIconLeft:!0,iconLeft:de,defaultOpen:C||P,renderContentWhenClosed:!1,children:u(A,{children:[t(st,{className:"cart-gift-options-view__top",view:i,item:e,giftOptions:d,disabled:c,onInputChange:F,cartData:n,giftWrappingConfig:s,setShowModal:O,areGiftOptionsVisible:T}),t("form",{className:"cart-gift-options-view__footer",onMouseLeave:_,children:t(dt,{view:i,giftOptions:d,disabled:c,errorMessage:g,onInputChange:F,onBlur:V,isGiftMessageVisible:p})})]})})}),[i,e,n,W,g,d,c,s,T,C,p,V,O,F,_]);return!T.isGiftOptionsVisible&&!p?null:u("div",{id:"cart-gift-options-view",className:We(["cart-gift-options-view",`cart-gift-options-view--${i}`,["cart-gift-options-view--loading",o]]),children:[o?t(et,{className:"cart-gift-options-view__spinner"}):null,l?t(lt,{}):u(A,{children:[f?null:t("div",{className:"cart-gift-options-view--readonly",children:t(ct,{view:i,giftOptions:d,giftWrappingConfig:s,readOnlyFormOrderView:w})}),r?t(at,{view:i,productName:e&&"name"in e?e==null?void 0:e.name:"",showModal:r,giftWrappingConfig:s,setShowModal:()=>O(!1),updateGiftOptions:v,imageSwatchImageNode:y}):null,i==="product"&&f?N(!1):null,i==="order"&&f?t(Ve,{variant:"secondary",children:N(!0)}):null]})]})},U={recipientName:"",senderName:"",message:""},pt={giftReceiptIncluded:!1,printedCardIncluded:!1,isGiftWrappingSelected:!1},ke=(e,i)=>{var d,r;if(!i)return!!((d=L.config)!=null&&d.allowGiftMessageOnOrder);const l=((r=L.config)==null?void 0:r.allowGiftMessageOnOrderItems)??!1;return typeof(e==null?void 0:e.giftMessageAvailable)=="boolean"?e==null?void 0:e.giftMessageAvailable:l},ut=(e,i)=>{const{allowGiftWrappingOnOrder:l,allowGiftWrappingOnOrderItems:d,allowGiftMessageOnOrder:r,allowGiftMessageOnOrderItems:f,allowGiftReceipt:g,allowPrintedCard:o}=L.config||{},n=!f&&!d&&!ke(i,!0),c=!l&&!r&&!g&&!o;return!!(e==="product"&&n||e==="order"&&c)},gt=({item:e,view:i,dataSource:l,initialLoading:d,handleItemsLoading:r,handleItemsError:f,onItemUpdate:g,onGiftOptionsChange:o})=>{var pe,ue,ge,me,Oe,he;const n=i==="product",c=Z({requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),[C,s]=M(()=>d),[w,p]=M({isGiftReceiptVisible:!0,isPrintedCartVisible:!0,isGiftWrappingVisible:!0,isGiftOptionsVisible:!0}),[T,y]=M(!0),[V,O]=M(!1),[v,F]=M(!1),[_,W]=M(!1),[N,P]=M(!1),[B,z]=M(!1),[S,te]=M([]),[h,re]=M(null),[Ie,ie]=M(U),[G,fe]=M(()=>({giftWrappingId:"",...U,...pt})),Q=((pe=G.recipientName)==null?void 0:pe.trim())&&((ue=G.senderName)==null?void 0:ue.trim())&&((ge=G.message)==null?void 0:ge.trim()),Y=!((me=G.recipientName)!=null&&me.trim())&&!((Oe=G.senderName)!=null&&Oe.trim())&&!((he=G.message)!=null&&he.trim()),R=K(async a=>{switch(O(i==="order"),F(!0),i){case"product":{"uid"in e&&(r==null||r(e.uid,!0),f==null||f(e.uid));const{recipientName:m,senderName:x,message:b,giftWrappingId:E,isGiftWrappingSelected:k}=a,H={gift_message:{to:m??"",from:x??"",message:b??""},gift_wrapping_id:k?E:null};"uid"in e&&"quantity"in e&&await it([{uid:e.uid,quantity:e.quantity,giftOptions:H}]).then(()=>{g==null||g({item:e})}).finally(()=>{r==null||r(e.uid,!1),F(!1),W(!1),O(!1)}).catch($=>{console.warn($)})}break;case"order":await nt(a).finally(()=>{F(!1),W(!1),O(!1)});break;default:console.error('Incorrect "view" prop value provided for GiftOptions container (storefront-cart)');break}},[f,r,e,g,i]),ne=K((a,m,x={})=>{fe(b=>{const E=I=>I in b,k=I=>E(I)?b[I]:void 0;if(!(k(a)!==m||Object.keys(x).some(I=>k(I)!==x[I])))return o==null||o(b),b;const $={...b,[a]:m,...x};return!$.recipientName&&!$.senderName&&!$.message&&P(!0),(typeof m=="boolean"||["giftWrappingId","giftReceiptIncluded","printedCardIncluded"].includes(a))&&(P(!1),typeof o=="function"?o($):R($)),W(!0),o==null||o($),$})},[R,o]),Le=K(async()=>{v||typeof o!="function"&&(Y&&N&&(ie(U),P(!1),await R(G)),_&&Q&&(P(!0),await R(G)))},[R,G,_,Y,N,v,o,Q]),Ae=K(async a=>{if(v||typeof o=="function")return;const{name:m,value:x}=a.target;ie(b=>({...b,[m]:x.trim()?"":c.requiredFieldError})),Y&&N&&(ie(U),P(!1),await R(G)),_&&Q&&await R(G)},[v,Y,N,_,Q,c,R,G,o]),Ee=K(a=>{const m=a.target,x=m.name,b=m.type==="checkbox"?m.checked:m.value;ne(x,b)},[ne]);J(()=>{if(n)return;const a=rt.on(l==="cart"?"cart/data":"order/data",m=>{var E,k;re(m);const x=(E=m==null?void 0:m.items)==null?void 0:E.every(({giftWrappingAvailable:H})=>H),b=(k=m==null?void 0:m.cartGiftWrapping)==null?void 0:k.some(H=>H.selected);!x&&b&&R({...G,giftWrappingId:"",isGiftWrappingSelected:!1})},{eager:!0});return()=>{a==null||a.off()}},[R,l,G,n]);const oe=le(()=>{var Te,be,Fe,we,ve,_e;if(!h&&!e)return null;const a=n?(Te=e==null?void 0:e.productGiftWrapping)==null?void 0:Te.map(q=>{var xe;return{...q,price:e!=null&&e.giftWrappingPrice&&((xe=e==null?void 0:e.giftWrappingPrice)==null?void 0:xe.value)>0?e.giftWrappingPrice:q.price}}):(h==null?void 0:h.cartGiftWrapping)||[],m=a==null?void 0:a.find(q=>q.selected),x=(m==null?void 0:m.uid)??((be=a==null?void 0:a[0])==null?void 0:be.uid),b=!!m,E=n?e.giftMessage:h==null?void 0:h.giftMessage,k=h==null?void 0:h.printedCardIncluded,H=h==null?void 0:h.giftReceiptIncluded,$=ke(e,n),I=(Fe=L.config)==null?void 0:Fe.allowGiftWrappingOnOrder,ze=(we=L.config)==null?void 0:we.allowGiftReceipt,qe=(ve=L.config)==null?void 0:ve.allowPrintedCard,Ke=(_e=h==null?void 0:h.items)==null?void 0:_e.every(q=>q.giftWrappingAvailable),je=e==null?void 0:e.giftWrappingAvailable,Ce=n?!1:!!ze,Ge=n?!1:!!qe,ye=n?!!je&&!!a.length:!!I&&!!a.length&&!!Ke;return p({isGiftReceiptVisible:Ce,isPrintedCartVisible:Ge,isGiftWrappingVisible:ye,isGiftOptionsVisible:!(!Ce&&!Ge&&!ye)}),y($),{...e&&"uid"in e?{itemId:e.uid}:{},...n?{}:{printedCardIncluded:k,giftReceiptIncluded:H},...E,giftWrappingId:x,isGiftWrappingSelected:b,giftWrappingOptions:a}},[h,e,n]);J(()=>{if(!oe)return;const{giftWrappingOptions:a,...m}=oe;fe(m),a!=null&&a.length&&te(a),s(!1)},[oe]);const He=le(()=>Object.entries(G).filter(([a])=>a!=="itemId"&&a!=="giftWrappingId").some(([,a])=>!!a),[G]),Be=le(()=>{var a;return!C&&!!((a=L)!=null&&a.config)&&ut(i,e)},[e,C,i]);return{loading:C,giftOptions:G,showModal:B,errorsField:Ie,updateLoading:V,cartData:h,fieldsDisabled:v,isGiftOptionsApplied:He,giftWrappingConfig:S,setFieldsDisabled:F,handleFormMouseLeave:Le,onInputChange:Ee,updateGiftOptions:ne,setShowModal:z,handleBlur:Ae,isGiftMessageVisible:T,areGiftOptionsVisible:w,isGiftOptionsHidden:Be}},$t=({item:e,view:i="order",readOnlyFormOrderView:l="primary",dataSource:d="cart",isEditable:r=!0,initialLoading:f=!0,slots:g,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C})=>{const{isGiftMessageVisible:s,areGiftOptionsVisible:w,loading:p,giftOptions:T,showModal:y,errorsField:V,updateLoading:O,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,updateGiftOptions:P,setShowModal:B,onInputChange:z,handleBlur:S,isGiftOptionsHidden:te}=gt({item:e,view:i,dataSource:d,initialLoading:f,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C});return te?null:t(ft,{item:e,view:i,loading:p,onBlur:S,giftOptions:T,showModal:y,isEditable:r,errorsField:V,setShowModal:B,updateLoading:O,updateGiftOptions:P,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,readOnlyFormOrderView:l,onInputChange:z,isGiftMessageVisible:s,areGiftOptionsVisible:w,imageSwatchImageNode:g!=null&&g.SwatchImage?({imageSwatchContext:h,...re})=>t(Ze,{name:"SwatchImage",slotTag:"span",contentTag:"span",slot:g.SwatchImage,context:{item:e,imageSwatchContext:h,defaultImageProps:re}}):void 0})};export{$t as GiftOptions,$t as default};
|
|
3
|
+
import{jsx as t,jsxs as u,Fragment as A}from"@dropins/tools/preact-jsx-runtime.js";import{classes as We,Slot as Ze}from"@dropins/tools/lib.js";import{Modal as De,ContentGrid as Xe,ImageSwatch as Je,Button as se,Price as ce,Skeleton as Qe,SkeletonRow as Ye,Field as j,Checkbox as ae,Input as Me,TextArea as Ue,Accordion as Ne,AccordionSection as Pe,Icon as D,Card as Ve,ProgressSpinner as et}from"@dropins/tools/components.js";/* empty css */import*as X from"@dropins/tools/preact-compat.js";import{useRef as tt,useEffect as J,useState as M,useId as $e,useCallback as K,useMemo as le}from"@dropins/tools/preact-hooks.js";import{useText as Z}from"@dropins/tools/i18n.js";import{s as L}from"../chunks/resetCart.js";import{S as Re}from"../chunks/ChevronDown.js";import{S as Se}from"../chunks/ChevronUp.js";import{events as rt}from"@dropins/tools/event-bus.js";import{u as it}from"../chunks/updateProductsFromCart.js";import{s as nt}from"../chunks/setGiftOptionsOnCart.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/persisted-data.js";import"../chunks/refreshCart.js";import"../fragments.js";import"../chunks/acdl.js";const te=e=>X.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M6.75 12.762L10.2385 15.75L17.25 9",stroke:"currentColor"})),de=e=>X.createElement("svg",{width:20,height:23,viewBox:"0 0 20 23",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{d:"M10 6L10 21.5M10 6H12.25C13.4926 6 14.5 4.99264 14.5 3.75C14.5 2.50736 13.4926 1.5 12.25 1.5C11.0074 1.5 10 2.50736 10 3.75M10 6V3.75M10 6H7.75C6.50736 6 5.5 4.99264 5.5 3.75C5.5 2.50736 6.50736 1.5 7.75 1.5C8.99264 1.5 10 2.50736 10 3.75M3.25 10.75H16.75C17.9926 10.75 19 9.74264 19 8.5C19 7.25736 17.9926 6.25 16.75 6.25H3.25C2.00736 6.25 1 7.25736 1 8.5C1 9.74264 2.00736 10.75 3.25 10.75ZM4.75 21.5H15.25C16.4926 21.5 17.5 20.4926 17.5 19.25V13.25C17.5 12.0074 16.4926 11 15.25 11H4.75C3.50736 11 2.5 12.0074 2.5 13.25V19.25C2.5 20.4926 3.50736 21.5 4.75 21.5Z",stroke:"currentColor",strokeWidth:1.5}));function ot(e){const i=tt(null);return J(()=>{if(!e||!i.current)return;const l=i.current,d=l.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])');if(d.length===0)return;const r=d[0],f=d[d.length-1];function g(o){o.key==="Tab"&&(o.shiftKey&&document.activeElement===r?(o.preventDefault(),f.focus()):!o.shiftKey&&document.activeElement===f&&(o.preventDefault(),r.focus()))}return l.addEventListener("keydown",g),()=>{l.removeEventListener("keydown",g)}},[e]),i}const at=({view:e,showModal:i,productName:l,giftWrappingConfig:d,imageSwatchImageNode:r,setShowModal:f,updateGiftOptions:g})=>{var w;const o=ot(i),n=Z({modalTitle:"Cart.GiftOptions.modal.title",defaultTitle:"Cart.GiftOptions.modal.defaultTitle",modalWrappingText:"Cart.GiftOptions.modal.wrappingText",modalWrappingSubText:"Cart.GiftOptions.modal.wrappingSubText",modalConfirmButton:"Cart.GiftOptions.modal.modalConfirmButton",modalCancelButton:"Cart.GiftOptions.modal.modalCancelButton",ariaLabelModal:"Cart.GiftOptions.modal.ariaLabelModal",ariaLabelModalOpen:"Cart.GiftOptions.modal.ariaLabelModalOpen",ariaLabelModalClose:"Cart.GiftOptions.modal.ariaLabelModalClose",ariaLabelWrapping:"Cart.GiftOptions.modal.ariaLabelWrapping"}),[c,C]=M();if(J(()=>{const p=d.find(T=>T.selected)??d[0];C(p)},[d]),J(()=>{const p=document==null?void 0:document.querySelector(".cart-gift-options-view__modal-wrapper");p&&(p==null||p.focus())},[]),!i||!d.length)return null;const s=l?`${n.modalTitle} ${l}`:n.defaultTitle;return t("div",{ref:o,className:"cart-gift-options-view__modal-wrapper",tabIndex:0,"aria-label":`${n.ariaLabelModal} ${i?n.ariaLabelModalOpen:n.ariaLabelModalClose} ${l}`,children:u(De,{"data-testid":`gift-option-modal-${e}`,className:"cart-gift-options-view__modal",size:"medium",title:u(A,{children:[t("span",{children:s}),c&&((w=c==null?void 0:c.price)==null?void 0:w.value)>0?t(ce,{amount:c.price.value,currency:c.price.currency,weight:"normal"}):null]}),centered:!0,onClose:f,children:[u("div",{className:"cart-gift-options-view__modal-content",children:[t("span",{className:"cart-gift-options-view__modal-text",children:n.modalWrappingText}),t(Xe,{emptyGridContent:t(A,{}),maxColumns:6,columnWidth:"100px",className:"cart-gift-options-view__modal-grid",children:d.map(p=>t(Je,{groupAriaLabel:n.ariaLabelWrapping,selected:(c==null?void 0:c.uid)===(p==null?void 0:p.uid),onValue:()=>{C(p)},imageNode:r,name:"giftWrappingId",value:p.uid,src:p.image.url,alt:p.design,label:p.design,"data-testid":`gift-option-modal-image-${p.uid}`,className:"cart-gift-options-view__modal-grid-item"},p.uid))}),t("span",{className:"cart-gift-options-view__modal-sub-text",children:c==null?void 0:c.design})]}),t(se,{"data-testid":"gift-option-modal-confirm-button",type:"button",onClick:()=>{g("giftWrappingId",c==null?void 0:c.uid,{isGiftWrappingSelected:!0}),f()},children:n.modalConfirmButton}),t(se,{type:"button",variant:"secondary",onClick:f,"data-testid":"gift-option-modal-cancel-button",children:n.modalCancelButton})]})})},lt=()=>t(Qe,{children:t(Ye,{variant:"row",size:"small",fullWidth:!0,lines:1,multilineGap:"small"})}),st=({className:e,view:i,item:l,giftOptions:d,disabled:r,cartData:f,giftWrappingConfig:g,setShowModal:o,onInputChange:n,areGiftOptionsVisible:c})=>{var N,P,B,z;const C=$e(),s=Z({customize:`Cart.GiftOptions.${i}.customize`,giftReceiptIncludedTitle:`Cart.GiftOptions.${i}.giftReceiptIncluded.title`,giftReceiptIncludedText:`Cart.GiftOptions.${i}.giftReceiptIncluded.subtitle`,printedCardIncludedTitle:`Cart.GiftOptions.${i}.printedCardIncluded.title`,printedCardIncludedText:`Cart.GiftOptions.${i}.printedCardIncluded.subtitle`,giftOptionsWrapTitle:`Cart.GiftOptions.${i}.giftOptionsWrap.title`,giftOptionsWrapText:`Cart.GiftOptions.${i}.giftOptionsWrap.subtitle`,requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),w=l==null?void 0:l.productGiftWrapping,p=f==null?void 0:f.cartGiftWrapping,T=i==="product"?w:p,y=T==null?void 0:T.find(S=>S.uid===d.giftWrappingId),V=(y==null?void 0:y.design)??"",O=l==null?void 0:l.giftWrappingPrice,v=V?`${s.giftOptionsWrapText} ${V}`:"",F=+(((P=(N=L.config)==null?void 0:N.printedCardPrice)==null?void 0:P.value)??0)>0?(B=L.config)==null?void 0:B.printedCardPrice:null;let _=null;O!=null&&O.value?_=O:(z=y==null?void 0:y.price)!=null&&z.value&&(_=y.price);const W=S=>S?u("span",{children:[" (+",t(ce,{amount:S.value,currency:S.currency,weight:"normal"}),")"]}):null;return u("div",{className:We([e,[`${e}--hidden`,!c.isGiftOptionsVisible]]),children:[c.isGiftReceiptVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-gift-receipt",children:t(ae,{id:`giftReceiptIncluded-${C}`,disabled:r,name:"giftReceiptIncluded",checked:d.giftReceiptIncluded,placeholder:s.giftReceiptIncludedTitle,label:s.giftReceiptIncludedTitle,description:s.giftReceiptIncludedText,onChange:n})}):null,c.isPrintedCartVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-printed-card",children:t(ae,{id:`printedCardIncluded-${C}`,disabled:r,name:"printedCardIncluded",checked:d.printedCardIncluded,placeholder:s.printedCardIncludedTitle,label:u(A,{children:[s.printedCardIncludedTitle,W(F)]}),description:s.printedCardIncludedText,onChange:n})}):null,c.isGiftWrappingVisible?u(A,{children:[t(j,{disabled:r,className:"cart-gift-options-view__field-gift-wrap",children:t(ae,{id:`giftOptionsWrap-${C}`,disabled:r,name:"isGiftWrappingSelected",checked:d.isGiftWrappingSelected,placeholder:s.giftOptionsWrapTitle,label:u(A,{children:[s.giftOptionsWrapTitle,W(_)]}),description:v,onChange:n})}),t(se,{disabled:r||!g.length,type:"button","data-testid":`gift-option-customize-${i}`,variant:"tertiary",onClick:()=>o(!0),children:s.customize})]}):null]})},dt=({view:e,giftOptions:i,disabled:l,errorMessage:d,onInputChange:r,onBlur:f,isGiftMessageVisible:g})=>{const o=$e(),n=Z({formTitle:`Cart.GiftOptions.${e}.formContent.formTitle`,formTo:`Cart.GiftOptions.${e}.formContent.formTo`,formFrom:`Cart.GiftOptions.${e}.formContent.formFrom`,giftMessageTitle:`Cart.GiftOptions.${e}.formContent.giftMessageTitle`,formToPlaceholder:`Cart.GiftOptions.${e}.formContent.formToPlaceholder`,formFromPlaceholder:`Cart.GiftOptions.${e}.formContent.formFromPlaceholder`,formMessagePlaceholder:`Cart.GiftOptions.${e}.formContent.formMessagePlaceholder`});return g?u(A,{children:[t("span",{children:n.formTitle}),u("div",{children:[t("span",{children:n.formTo}),t(j,{disabled:l,error:d.recipientName,children:t(Me,{id:`recipientName-${o}`,disabled:l,type:"text",name:"recipientName",value:i.recipientName,placeholder:n.formToPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.formFrom}),t(j,{disabled:l,error:d.senderName,children:t(Me,{id:`senderName-${o}`,disabled:l,type:"text",name:"senderName",value:i.senderName,placeholder:n.formFromPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.giftMessageTitle}),t(j,{disabled:l,children:t(Ue,{id:`message-${o}`,errorMessage:d.message,disabled:l,name:"message",value:i.message,label:n.formMessagePlaceholder,onChange:r,onBlur:f})})]})]}):null},ct=({view:e,giftOptions:i,giftWrappingConfig:l,readOnlyFormOrderView:d})=>{const r=Z({readOnlyProductTitle:"Cart.GiftOptions.product.readOnlyFormView.title",wrapping:"Cart.GiftOptions.product.readOnlyFormView.wrapping",recipient:"Cart.GiftOptions.product.readOnlyFormView.recipient",sender:"Cart.GiftOptions.product.readOnlyFormView.sender",message:"Cart.GiftOptions.product.readOnlyFormView.message",readOnlyOrderTitle:"Cart.GiftOptions.order.readOnlyFormView.title",readOnlyOrderGiftReceiptTitle:"Cart.GiftOptions.order.readOnlyFormView.giftReceipt",readOnlyOrderGiftReceiptText:"Cart.GiftOptions.order.readOnlyFormView.giftReceiptText",readOnlyOrderGiftPrintCardTitle:"Cart.GiftOptions.order.readOnlyFormView.printCard",readOnlyOrderGiftPrintCardText:"Cart.GiftOptions.order.readOnlyFormView.printCardText",readOnlyOrderGiftWrapTitle:"Cart.GiftOptions.order.readOnlyFormView.giftWrap",readOnlyOrderGiftWrapOptionsText:"Cart.GiftOptions.order.readOnlyFormView.giftWrapOptions",readOnlyOrderFormTitle:"Cart.GiftOptions.order.readOnlyFormView.formTitle",readOnlyOrderFormTo:"Cart.GiftOptions.order.readOnlyFormView.formTo",readOnlyOrderFormFrom:"Cart.GiftOptions.order.readOnlyFormView.formFrom",readOnlyOrderFormMessageTitle:"Cart.GiftOptions.order.readOnlyFormView.formMessageTitle"}),{recipientName:f,senderName:g,message:o,giftReceiptIncluded:n,printedCardIncluded:c,isGiftWrappingSelected:C}=i,s=l==null?void 0:l.find(({uid:O})=>O===(i==null?void 0:i.giftWrappingId)),w=!!f||!!g||!!o,p=s==null?void 0:s.design,T=n||c||(s==null?void 0:s.selected),y=[{id:1,title:r.wrapping,message:C?p:""},{id:2,title:r.recipient,message:f},{id:3,title:r.sender,message:g},{id:4,title:r.message,message:o}],V=y.every(({message:O})=>!O);if(e==="product"&&!V)return t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:r.readOnlyProductTitle,showIconLeft:!0,iconLeft:de,defaultOpen:!1,renderContentWhenClosed:!1,children:t("div",{children:y.filter(O=>O.message).map(O=>u("p",{children:[O.title," ",O.message]},O.id))})})});if(e==="order"&&(w||T)){const O=u("div",{className:"cart-gift-options-readonly__header",children:[t(D,{source:de,size:"24"}),t("span",{children:r.readOnlyOrderTitle})]}),v=u(A,{children:[n?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-receipt",children:[t(D,{source:te,size:"16"}),t("p",{children:r.readOnlyOrderGiftReceiptTitle}),t("p",{children:r.readOnlyOrderGiftReceiptText})]}):null,c?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--print-card",children:[t(D,{source:te,size:"16"}),t("p",{children:r.readOnlyOrderGiftPrintCardTitle}),t("p",{children:r.readOnlyOrderGiftPrintCardText})]}):null,s!=null&&s.selected?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-wrap",children:[t(D,{source:te,size:"16"}),u("p",{children:[r.readOnlyOrderGiftWrapTitle," (+",t(ce,{amount:s.price.value,currency:s.price.currency,weight:"normal"}),")"]}),t("p",{children:`${r.readOnlyOrderGiftWrapOptionsText} ${s==null?void 0:s.design}`})]}):null]}),F=w?u("div",{className:"cart-gift-options-readonly__form",children:[t("div",{children:r.readOnlyOrderFormTitle}),u("div",{children:[u("p",{children:[t("span",{children:r.readOnlyOrderFormTo}),t("span",{children:f})]}),u("p",{children:[t("span",{children:r.readOnlyOrderFormFrom}),t("span",{children:g})]})]}),u("div",{children:[t("p",{children:r.readOnlyOrderFormMessageTitle}),t("p",{children:o})]})]}):null;return u(Ve,{variant:d,children:[O,v,F]})}return null},ft=({item:e,view:i,loading:l,giftOptions:d,showModal:r,isEditable:f,errorsField:g,updateLoading:o,cartData:n,fieldsDisabled:c,isGiftOptionsApplied:C,giftWrappingConfig:s,readOnlyFormOrderView:w,isGiftMessageVisible:p,areGiftOptionsVisible:T,imageSwatchImageNode:y,onBlur:V,setShowModal:O,updateGiftOptions:v,onInputChange:F,handleFormMouseLeave:_})=>{const W=Z({accordionHeading:`Cart.GiftOptions.${i}.accordionHeading`}),N=K(P=>t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:u("div",{className:"cart-gift-options-view__icon--success",children:[t("span",{children:W.accordionHeading}),C?t(D,{source:te,size:"16"}):null]}),ariaLabelTitle:W.accordionHeading,showIconLeft:!0,iconLeft:de,defaultOpen:C||P,renderContentWhenClosed:!1,children:u(A,{children:[t(st,{className:"cart-gift-options-view__top",view:i,item:e,giftOptions:d,disabled:c,onInputChange:F,cartData:n,giftWrappingConfig:s,setShowModal:O,areGiftOptionsVisible:T}),t("form",{className:"cart-gift-options-view__footer",onMouseLeave:_,children:t(dt,{view:i,giftOptions:d,disabled:c,errorMessage:g,onInputChange:F,onBlur:V,isGiftMessageVisible:p})})]})})}),[i,e,n,W,g,d,c,s,T,C,p,V,O,F,_]);return!T.isGiftOptionsVisible&&!p?null:u("div",{id:"cart-gift-options-view",className:We(["cart-gift-options-view",`cart-gift-options-view--${i}`,["cart-gift-options-view--loading",o]]),children:[o?t(et,{className:"cart-gift-options-view__spinner"}):null,l?t(lt,{}):u(A,{children:[f?null:t("div",{className:"cart-gift-options-view--readonly",children:t(ct,{view:i,giftOptions:d,giftWrappingConfig:s,readOnlyFormOrderView:w})}),r?t(at,{view:i,productName:e&&"name"in e?e==null?void 0:e.name:"",showModal:r,giftWrappingConfig:s,setShowModal:()=>O(!1),updateGiftOptions:v,imageSwatchImageNode:y}):null,i==="product"&&f?N(!1):null,i==="order"&&f?t(Ve,{variant:"secondary",children:N(!0)}):null]})]})},ee={recipientName:"",senderName:"",message:""},pt={giftReceiptIncluded:!1,printedCardIncluded:!1,isGiftWrappingSelected:!1},ke=(e,i)=>{var d,r;if(!i)return!!((d=L.config)!=null&&d.allowGiftMessageOnOrder);const l=((r=L.config)==null?void 0:r.allowGiftMessageOnOrderItems)??!1;return typeof(e==null?void 0:e.giftMessageAvailable)=="boolean"?e==null?void 0:e.giftMessageAvailable:l},ut=(e,i)=>{const{allowGiftWrappingOnOrder:l,allowGiftWrappingOnOrderItems:d,allowGiftMessageOnOrder:r,allowGiftMessageOnOrderItems:f,allowGiftReceipt:g,allowPrintedCard:o}=L.config||{},n=!f&&!d&&!ke(i,!0),c=!l&&!r&&!g&&!o;return!!(e==="product"&&n||e==="order"&&c)},gt=({item:e,view:i,dataSource:l,initialLoading:d,handleItemsLoading:r,handleItemsError:f,onItemUpdate:g,onGiftOptionsChange:o})=>{var pe,ue,ge,me,Oe,he;const n=i==="product",c=Z({requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),[C,s]=M(()=>d),[w,p]=M({isGiftReceiptVisible:!0,isPrintedCartVisible:!0,isGiftWrappingVisible:!0,isGiftOptionsVisible:!0}),[T,y]=M(!0),[V,O]=M(!1),[v,F]=M(!1),[_,W]=M(!1),[N,P]=M(!1),[B,z]=M(!1),[S,re]=M([]),[h,Q]=M(null),[Ie,ie]=M(ee),[G,fe]=M(()=>({giftWrappingId:"",...ee,...pt})),Y=((pe=G.recipientName)==null?void 0:pe.trim())&&((ue=G.senderName)==null?void 0:ue.trim())&&((ge=G.message)==null?void 0:ge.trim()),U=!((me=G.recipientName)!=null&&me.trim())&&!((Oe=G.senderName)!=null&&Oe.trim())&&!((he=G.message)!=null&&he.trim()),R=K(async a=>{switch(O(i==="order"),F(!0),i){case"product":{"uid"in e&&(r==null||r(e.uid,!0),f==null||f(e.uid));const{recipientName:m,senderName:x,message:b,giftWrappingId:E,isGiftWrappingSelected:k}=a,H={gift_message:{to:m??"",from:x??"",message:b??""},gift_wrapping_id:k?E:null};"uid"in e&&"quantity"in e&&await it([{uid:e.uid,quantity:e.quantity,giftOptions:H}]).then(()=>{g==null||g({item:e})}).finally(()=>{r==null||r(e.uid,!1),F(!1),W(!1),O(!1)}).catch($=>{console.warn($)})}break;case"order":await nt(a).finally(()=>{F(!1),W(!1),O(!1)});break;default:console.error('Incorrect "view" prop value provided for GiftOptions container (storefront-cart)');break}},[f,r,e,g,i]),ne=K((a,m,x={})=>{fe(b=>{const E=I=>I in b,k=I=>E(I)?b[I]:void 0;if(!(k(a)!==m||Object.keys(x).some(I=>k(I)!==x[I])))return o==null||o(b),b;const $={...b,[a]:m,...x};return!$.recipientName&&!$.senderName&&!$.message&&P(!0),(typeof m=="boolean"||["giftWrappingId","giftReceiptIncluded","printedCardIncluded"].includes(a))&&(P(!1),typeof o=="function"?o($):R($)),W(!0),o==null||o($),$})},[R,o]),Le=K(async()=>{v||typeof o!="function"&&(U&&N&&(ie(ee),P(!1),await R(G)),_&&Y&&(P(!0),await R(G)))},[R,G,_,U,N,v,o,Y]),Ae=K(async a=>{if(v||typeof o=="function")return;const{name:m,value:x}=a.target;ie(b=>({...b,[m]:x.trim()?"":c.requiredFieldError})),U&&N&&(ie(ee),P(!1),await R(G)),_&&Y&&await R(G)},[v,U,N,_,Y,c,R,G,o]),Ee=K(a=>{const m=a.target,x=m.name,b=m.type==="checkbox"?m.checked:m.value;ne(x,b)},[ne]);J(()=>{if(n)return;const a=rt.on(l==="cart"?"cart/data":"order/data",m=>{var E,k;Q(m);const x=(E=m==null?void 0:m.items)==null?void 0:E.some(({giftWrappingAvailable:H})=>H),b=(k=m==null?void 0:m.cartGiftWrapping)==null?void 0:k.some(H=>H.selected);!x&&b&&R({...G,giftWrappingId:"",isGiftWrappingSelected:!1})},{eager:!0});return()=>{a==null||a.off()}},[Q,R,l,G,n]);const oe=le(()=>{var Te,be,Fe,we,ve,_e;if(!h&&!e)return null;const a=n?(Te=e==null?void 0:e.productGiftWrapping)==null?void 0:Te.map(q=>{var xe;return{...q,price:e!=null&&e.giftWrappingPrice&&((xe=e==null?void 0:e.giftWrappingPrice)==null?void 0:xe.value)>0?e.giftWrappingPrice:q.price}}):(h==null?void 0:h.cartGiftWrapping)||[],m=a==null?void 0:a.find(q=>q.selected),x=(m==null?void 0:m.uid)??((be=a==null?void 0:a[0])==null?void 0:be.uid),b=!!m,E=n?e.giftMessage:h==null?void 0:h.giftMessage,k=h==null?void 0:h.printedCardIncluded,H=h==null?void 0:h.giftReceiptIncluded,$=ke(e,n),I=(Fe=L.config)==null?void 0:Fe.allowGiftWrappingOnOrder,ze=(we=L.config)==null?void 0:we.allowGiftReceipt,qe=(ve=L.config)==null?void 0:ve.allowPrintedCard,Ke=(_e=h==null?void 0:h.items)==null?void 0:_e.some(q=>q.giftWrappingAvailable),je=e==null?void 0:e.giftWrappingAvailable,Ce=n?!1:!!ze,Ge=n?!1:!!qe,ye=n?!!je&&!!a.length:!!I&&!!a.length&&!!Ke;return p({isGiftReceiptVisible:Ce,isPrintedCartVisible:Ge,isGiftWrappingVisible:ye,isGiftOptionsVisible:!(!Ce&&!Ge&&!ye)}),y($),{...e&&"uid"in e?{itemId:e.uid}:{},...n?{}:{printedCardIncluded:k,giftReceiptIncluded:H},...E,giftWrappingId:x,isGiftWrappingSelected:b,giftWrappingOptions:a}},[h,e,n]);J(()=>{if(!oe)return;const{giftWrappingOptions:a,...m}=oe;fe(m),a!=null&&a.length&&re(a),s(!1)},[oe]);const He=le(()=>Object.entries(G).filter(([a])=>a!=="itemId"&&a!=="giftWrappingId").some(([,a])=>!!a),[G]),Be=le(()=>{var a;return!C&&!!((a=L)!=null&&a.config)&&ut(i,e)},[e,C,i]);return{loading:C,giftOptions:G,showModal:B,errorsField:Ie,updateLoading:V,cartData:h,fieldsDisabled:v,isGiftOptionsApplied:He,giftWrappingConfig:S,setFieldsDisabled:F,handleFormMouseLeave:Le,onInputChange:Ee,updateGiftOptions:ne,setShowModal:z,handleBlur:Ae,isGiftMessageVisible:T,areGiftOptionsVisible:w,isGiftOptionsHidden:Be}},$t=({item:e,view:i="order",readOnlyFormOrderView:l="primary",dataSource:d="cart",isEditable:r=!0,initialLoading:f=!0,slots:g,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C})=>{const{isGiftMessageVisible:s,areGiftOptionsVisible:w,loading:p,giftOptions:T,showModal:y,errorsField:V,updateLoading:O,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,updateGiftOptions:P,setShowModal:B,onInputChange:z,handleBlur:S,isGiftOptionsHidden:re}=gt({item:e,view:i,dataSource:d,initialLoading:f,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C});return re?null:t(ft,{item:e,view:i,loading:p,onBlur:S,giftOptions:T,showModal:y,isEditable:r,errorsField:V,setShowModal:B,updateLoading:O,updateGiftOptions:P,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,readOnlyFormOrderView:l,onInputChange:z,isGiftMessageVisible:s,areGiftOptionsVisible:w,imageSwatchImageNode:g!=null&&g.SwatchImage?({imageSwatchContext:h,...Q})=>t(Ze,{name:"SwatchImage",slotTag:"span",contentTag:"span",slot:g.SwatchImage,context:{item:e,imageSwatchContext:h,defaultImageProps:Q}}):void 0})};export{$t as GiftOptions,$t as default};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CartModel, Item } from '../data/models';
|
|
2
2
|
import { GiftOptionsDataSourcesProps, GiftOptionsViewProps, GiftWrappingConfigProps, GiftFormDataType, ProductGiftOptionsConfig } from '../types';
|
|
3
3
|
|
|
4
|
-
interface UseGiftOptionsProps {
|
|
4
|
+
export interface UseGiftOptionsProps {
|
|
5
5
|
item: Item | ProductGiftOptionsConfig;
|
|
6
6
|
view: GiftOptionsViewProps;
|
|
7
7
|
dataSource: GiftOptionsDataSourcesProps;
|
|
@@ -42,5 +42,4 @@ export declare const useGiftOptions: ({ item, view, dataSource, initialLoading,
|
|
|
42
42
|
};
|
|
43
43
|
isGiftOptionsHidden: boolean;
|
|
44
44
|
};
|
|
45
|
-
export {};
|
|
46
45
|
//# sourceMappingURL=useGiftOptions.d.ts.map
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@dropins/storefront-cart", "version": "1.3.0-
|
|
1
|
+
{"name": "@dropins/storefront-cart", "version": "1.3.0-beta4", "@dropins/tools": "~1.2.0", "license": "SEE LICENSE IN LICENSE.md"}
|