@heycater/qualification-funnel 1.19.18 → 1.19.19

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.
@@ -1407,7 +1407,7 @@
1407
1407
  justify-content: center;
1408
1408
  background-size: cover;
1409
1409
  background-position: bottom center;
1410
- `;var kq=new Map,Sq=new WeakMap,Eq=0;function _q(e){return Object.keys(e).sort().filter(function(t){return void 0!==e[t]}).map(function(t){return t+"_"+("root"===t?(n=e.root)?(Sq.has(n)||(Eq+=1,Sq.set(n,Eq.toString())),Sq.get(n)):"0":e[t]);var n}).toString()}function Lq(e,t,n,r){if(void 0===n&&(n={}),void 0===r&&(r=undefined),void 0===window.IntersectionObserver&&void 0!==r){var o=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:"number"==typeof n.threshold?n.threshold:0,time:0,boundingClientRect:o,intersectionRect:o,rootBounds:o}),function(){}}var i=function(e){var t=_q(e),n=kq.get(t);if(!n){var r,o=new Map,i=new IntersectionObserver(function(t){t.forEach(function(t){var n,i=t.isIntersecting&&r.some(function(e){return t.intersectionRatio>=e});e.trackVisibility&&void 0===t.isVisible&&(t.isVisible=i),null==(n=o.get(t.target))||n.forEach(function(e){e(i,t)})})},e);r=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:o},kq.set(t,n)}return n}(n),a=i.id,s=i.observer,l=i.elements,u=l.get(e)||[];return l.has(e)||l.set(e,u),u.push(t),s.observe(e),function(){u.splice(u.indexOf(t),1),0===u.length&&(l.delete(e),s.unobserve(e)),0===l.size&&(s.disconnect(),kq.delete(a))}}const Oq=({children:e,height:t,isFloating:n,...r})=>C.jsxs(C.Fragment,{children:[C.jsx(Fm,{display:"flex",flexDirection:"column",flexGrow:"1",bottom:"0",left:"0",right:"0",position:n?"fixed":"relative",...r,children:e}),n&&C.jsx("div",{style:{height:`${t}px`}})]});function Mq(){var e,t;const{inView:n,ref:r,entry:o}=function(e){var t=void 0===e?{}:e,n=t.threshold,r=t.delay,o=t.trackVisibility,i=t.rootMargin,a=t.root,s=t.triggerOnce,l=t.skip,u=t.initialInView,c=t.fallbackInView,d=g.useRef(),f=g.useState({inView:!!u}),p=f[0],h=f[1],m=g.useCallback(function(e){void 0!==d.current&&(d.current(),d.current=void 0),l||e&&(d.current=Lq(e,function(e,t){h({inView:e,entry:t}),t.isIntersecting&&s&&d.current&&(d.current(),d.current=void 0)},{root:a,rootMargin:i,threshold:n,trackVisibility:o,delay:r},c))},[Array.isArray(n)?n.toString():n,a,i,s,l,o,c,r]);g.useEffect(function(){d.current||!p.entry||s||l||h({inView:!!u})});var v=[m,p.inView,p.entry];return v.ref=v[0],v.inView=v[1],v.entry=v[2],v}({threshold:1}),i=(null==(e=null==o?void 0:o.boundingClientRect)?void 0:e.height)||0,a=!o||(null==(t=o.boundingClientRect)?void 0:t.y)>0;return{height:i,isFloating:!n&&a,ref:r}}const jq={de:"German",en:"English"};function Tq(e){const{billingAddressStreetAndNumber:t,billingAddressCity:n,billingAddressPostalCode:r,email:o,company:i,has_recurring_need:a}=e;return{billingAddressStreetAndNumber:t,billingAddressCity:n,billingAddressPostalCode:r,billingEmail:o,billingName:i,name:i,hasRecurringNeed:a}}function Pq(){const{locale:e}=_E(),t=Mm();return{funnelCheckout:async n=>{try{const{data:{funnelCheckout:r}}=await((e,{client:t})=>t.mutation(NI,{attributes:e}).toPromise())({userAttributes:{email:n.email,firstName:n.first_name,lastName:n.last_name,phone:n.phone,language:jq[e]||jq.de},accountAttributes:Tq(n),opportunityAttributes:jI(n)},{client:t});return r}catch(r){r instanceof Error&&JB.notify(r,e=>{e.addMetadata("funnelCheckoutArgs",n)})}}}}function Nq(){const e=Mm();return{createQfLead:async t=>{try{const{company:n,comment:r,deliveryAddressCity:o,deliveryAddressCountry:i,deliveryAddressPostalCode:a,deliveryAddressStreet:s,deliveryAddressStreetNumber:l,email:u,first_name:c,last_name:d,phone:f,catering_categories:p,event_date:h,has_recurring_need:m,is_multi_day:g,number_of_carnivore:v,lead_type:y,number_of_vegans:b,number_of_vegetarians:w,price_per_person:x,service_type:C,team_size:k,delivery_frequency:S,budget_range:E}=t,_=b+w+v,{data:{createQfLead:L}}=await((e,{client:t})=>t.mutation(DI,{attributes:e}).toPromise())({email:u,firstName:c,lastName:d,phone:f,company:n,comment:r,address:`${s} ${l}, ${a} ${o}, ${i}`,cateringCategories:p,eventDate:new Date(h).toDateString(),hasRecurringNeed:m,isMultiDay:g,numberOfOmnivores:v,numberOfVegans:b,numberOfVegetarians:w,numberOfPeople:_,totalBudget:_*x,leadType:y,serviceType:C,teamSize:k,deliveryFrequency:S,budgetRange:E},{client:e});return L}catch(n){n&&JB.notify(n,e=>{e.addMetadata("createQfLead",t)})}}}}function Dq(){const{state:e}=KO(),t="qualification"in e?e.qualification:null,n=Mm(),{currentUserAccount:r}=WO(),o=_E(),{funnelCheckout:i}=Pq(),{createQfLead:a}=Nq(),s=e=>{var n,i,a,s;const l=`${e.deliveryAddressStreet} ${e.deliveryAddressStreetNumber}`,{street:u,postalCode:c,city:d,country:f}=(null==(i=null==(n=null==r?void 0:r.owner)?void 0:n.salesforceCustomer)?void 0:i.billingAddress)||{street:l,postalCode:e.deliveryAddressPostalCode,city:e.deliveryAddressCity,country:e.deliveryAddressCountry};if(!t)throw new Error("cannot create an opportunity outside of the qualification");const p=(null==(a=t.leadSource)?void 0:a.includes("/events"))?"events-landingpage":"Qualification Funnel";return{...t.answers,...e,phone:e.phone||"",catererSlug:null==(s=null==t?void 0:t.selectedCaterer)?void 0:s.slug,landingPageSource:t.leadSource,billingAddressStreetAndNumber:u||"",billingAddressPostalCode:c||"",billingAddressCity:d||"",billingCountry:f||"",conversion_url:window.location.href,deliveryAddressStreetAndNumber:l,deliveryCountry:e.deliveryAddressCountry,lead_language:o.locale,leadSource:p,commentByHeycaterForCaterer:e.comment}};return{submitAsNewCustomer:async e=>{var n;const r=null==(n=null==t?void 0:t.answers)?void 0:n.service_type,o="regular_employee_catering"===r||"full_service_event"===r,{deliveryAddressCountry:l}=e,u=["United Kingdom","Great Britain","UK"].includes(l);if(!o&&!u){const{signInToken:t,customerAccount:n,opportunity:r}=await i(s(e));return{signInToken:t,customerAccount:n,opportunity:r,isUkLead:!1}}try{const n=await a({...e,...null==t?void 0:t.answers});if(!n)return console.error("[HeyCater Funnel] createQfLead returned undefined/null"),{success:!1,isUkLead:u};const{success:r}=n;return void 0===r&&console.error("[HeyCater Funnel] createQfLead response missing success field:",n),{success:r,isUkLead:u}}catch(c){return console.error("[HeyCater Funnel] createQfLead failed:",c),{success:!1,isUkLead:u}}},submitAsExistingCustomer:async e=>{const t=s(e),{createOpportunity:{opportunity:r}}=await async function(e,{client:t}){const n=jI(e),{data:r}=await t.mutation(TI,{attributes:n}).toPromise();return r}(t,{client:n});return r}}}const Rq="qualification-request-form",Aq={},Iq=/^\+?[1-9]\d{6,14}$/,Fq=({isLoggedIn:e})=>US.object().shape({first_name:US.string().required(),last_name:US.string().required(),company:US.string().required(),email:US.string().required().email(),phone:e?US.string():US.string().matches(Iq,"Invalid phone number").required(),deliveryAddressStreet:US.string().min(1).required(),deliveryAddressStreetNumber:US.string().min(1).required(),deliveryAddressPostalCode:US.string().min(1).required(),deliveryAddressCity:US.string().min(1).required(),deliveryAddressCountry:US.string().min(1).required(),comment:US.string()});function zq({header:e=null}){var t,n,r;const[o,i]=g.useState(!1),[a,s]=g.useState(!1),{t:l}=Vd("qualification"),{submitAsNewCustomer:u,submitAsExistingCustomer:c}=Dq(),d=wM({display:"all-answers"}),f=nM("xs"),{state:p}=KO(),{ref:h,isFloating:m,height:v}=Mq(),{validateAddress:y}=eq({cacheValidations:Aq}),b=f&&m,w="qualification"in p?p.qualification:null,{actions:x}=KO(),{currentUserAccount:k}=WO(),S=_E(),[E,_]=g.useState(!1),{deliveryAddressStreetAndNumber:L,deliveryAddressPostalCode:O,deliveryAddressCity:M,deliveryAddressCountry:j}=(null==k?void 0:k.owner)||{},[T,P]=g.useState(""),[N,D]=g.useState(""),R=k?(({street:e,postalCode:t,city:n,country:r})=>[e,t,n,r].filter(Boolean).join(", "))({street:L,postalCode:O,city:M,country:j}):"";g.useEffect(()=>{!async function(){if(!R)return;const{streetName:e,streetNumber:t}=await y(R);P(e),D(t)}()},[R]);const{funnelContextRef:A}=pj(),I=({isFormValid:e})=>{const t=C.jsxs(qm,{id:"request-form__submit-btn",block:"true","data-logged-in":!!k,"data-valid":e,"data-leadsource":"qualification"in p?p.qualification.leadSource:void 0,size:"lg",type:"submit",disabled:E,children:[E&&C.jsx(Fm,{mr:2,style:{alignItems:"flex-start"},children:C.jsx(rl,{style:{verticalAlign:"sub"},size:20,color:"inherit"})}),l("request.form.submit")]});return f?C.jsx(Oq,{height:v,isFloating:b,children:C.jsx(Uq,{py:2,px:b&&2,$floating:b,children:t})}):C.jsx(Fm,{position:"absolute",bottom:"0",left:"0",right:"0",py:2,px:2,bgcolor:"white",children:t})},F={first_name:(null==k?void 0:k.firstName)||"",last_name:(null==k?void 0:k.lastName)||"",company:(null==(t=null==k?void 0:k.owner)?void 0:t.companyName)||"",deliveryAddressStreet:T||"",deliveryAddressStreetNumber:N||"",deliveryAddressPostalCode:O||"",deliveryAddressCity:M||"",deliveryAddressCountry:j||"",email:(null==k?void 0:k.email)||"",phone:(null==(r=null==(n=null==k?void 0:k.owner)?void 0:n.salesforceCustomer)?void 0:r.phoneNumber)||""},z=!!k;return o?C.jsx(yq,{isUkLead:a}):C.jsxs(fq,{children:[e,C.jsx(pB,{initialValues:F,validationSchema:Fq({isLoggedIn:z}),onSubmit:async e=>{var t;_(!0);const n=null==(t=null==w?void 0:w.answers)?void 0:t.service_type,r=A.current.service_type;console.log("[Optimeleon Debug] handleSubmit called",{serviceType:n,serviceTypeType:typeof n,serviceTypeLength:null==n?void 0:n.length,serviceTypeFromContext:r,contextServiceTypeType:typeof r,allAnswers:JSON.stringify(null==w?void 0:w.answers),funnelContext:JSON.stringify(A.current)});const o=n||r;console.log("[Optimeleon Debug] About to track funnel_form_submitted with:",o),uj("funnel_form_submitted",o);const a="regular_employee_catering"===n||"full_service_event"===n,{deliveryAddressCountry:l}=e,d=["United Kingdom","Great Britain","UK"].includes(l);if(a||d){const t=await u(e),{success:n}=t;return n?(s(d),i(!0),sj(A.current,{is_uk_lead:d}),lj(A.current),console.log("[Optimeleon Debug] Lead-only flow - tracking funnel_completed with:",o),void uj("funnel_completed",o)):(console.error("[HeyCater Funnel] Lead submission failed. Result:",t),void _(!1))}let f="";if(k)try{const t=await c(e);if(!t||!t.id)return console.error("[HeyCater Funnel] submitAsExistingCustomer returned invalid opportunity:",t),void _(!1);f=`/account/requests/${t.id}`}catch(p){return p instanceof Error&&JB.notify(p),void _(!1)}else{const t=await u(e),{signInToken:n,opportunity:r}=t||{};if(!r||!r.id)return console.error("[HeyCater Funnel] submitAsNewCustomer returned invalid opportunity:",t),void _(!1);f=n?`/${S.locale}/account/requests/${r.id}?one_time_sign_in_token=${n}`:`/${S.locale}/account/external/requests/${r.id}`}sj(A.current,{is_logged_in:!!k}),lj(A.current),console.log("[Optimeleon Debug] Regular flow - tracking funnel_completed with:",o),uj("funnel_completed",o),x.setRequest(e),((e="/")=>{window.location.href=`${DE().customerAppHost}${e}`})(f)},enableReinitialize:!0,children:e=>{var t,n;return C.jsxs(Vq,{id:Rq,name:Rq,children:[C.jsxs($q,{children:[C.jsx(Bq,{$half:!0,children:C.jsx(wB,{required:!0,name:"first_name",label:l("request.form.firstName"),placeholder:l("request.form.firstName"),component:mq})}),C.jsx(Bq,{$half:!0,children:C.jsx(wB,{required:!0,name:"last_name",label:l("request.form.lastName"),placeholder:l("request.form.lastName"),component:mq})})]}),C.jsx($q,{children:C.jsx(Bq,{$half:!0,children:C.jsx(wB,{required:!0,name:"company",label:l("request.form.company"),placeholder:l("request.form.company"),component:mq})})}),C.jsx($q,{children:C.jsx(Bq,{children:C.jsx(wB,{required:!0,name:"delivery_address",label:l("request.form.deliveryAddress"),placeholder:l("request.form.deliveryAddress"),helperText:l("request.form.helpText.address"),defaultValue:R,component:oq})})}),C.jsxs($q,{children:[!k&&C.jsx(Bq,{$half:!0,children:C.jsx(wB,{required:!0,type:"email",name:"email",label:l("request.form.email"),placeholder:l("request.form.email"),helperText:l("request.form.helpText.email"),component:mq})}),!(null==(n=null==(t=null==k?void 0:k.owner)?void 0:t.salesforceCustomer)?void 0:n.phoneNumber)&&C.jsx(Bq,{$half:!0,children:C.jsx(gq,{label:l("request.form.phone"),name:"phone",formik:e,helperText:l("request.form.helpText.phone")})})]}),C.jsx($q,{children:C.jsx(Bq,{children:C.jsx(wB,{name:"comment",label:l("request.form.comment"),placeholder:l("request.form.commentPlaceholder"),component:mq,multiline:!0})})}),C.jsx(wB,{type:"hidden",name:"deliveryAddressStreet"}),C.jsx(wB,{type:"hidden",name:"deliveryAddressStreetNumber"}),C.jsx(wB,{type:"hidden",name:"deliveryAddressPostalCode"}),C.jsx(wB,{type:"hidden",name:"deliveryAddressCity"}),C.jsx(wB,{type:"hidden",name:"deliveryAddressCountry"}),C.jsxs(Fm,{mt:2,mb:4,display:"flex",flexDirection:"column",children:[C.jsx(Qm,{variant:"caption",fontWeight:500,fontSize:12,px:1,mr:1.5,mb:1,children:l("selection.yourSelection")}),C.jsx(qq,{children:d.map(e=>C.jsx(yM,{size:"sm",stepId:e.stepId,text:e.text||""},`${e.stepId}_${e.text}`))})]}),C.jsx(Fm,{ref:h,children:C.jsx(I,{isFormValid:e.isValid})})]})}})]})}const $q=_p.div`
1410
+ `;var kq=new Map,Sq=new WeakMap,Eq=0;function _q(e){return Object.keys(e).sort().filter(function(t){return void 0!==e[t]}).map(function(t){return t+"_"+("root"===t?(n=e.root)?(Sq.has(n)||(Eq+=1,Sq.set(n,Eq.toString())),Sq.get(n)):"0":e[t]);var n}).toString()}function Lq(e,t,n,r){if(void 0===n&&(n={}),void 0===r&&(r=undefined),void 0===window.IntersectionObserver&&void 0!==r){var o=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:"number"==typeof n.threshold?n.threshold:0,time:0,boundingClientRect:o,intersectionRect:o,rootBounds:o}),function(){}}var i=function(e){var t=_q(e),n=kq.get(t);if(!n){var r,o=new Map,i=new IntersectionObserver(function(t){t.forEach(function(t){var n,i=t.isIntersecting&&r.some(function(e){return t.intersectionRatio>=e});e.trackVisibility&&void 0===t.isVisible&&(t.isVisible=i),null==(n=o.get(t.target))||n.forEach(function(e){e(i,t)})})},e);r=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:o},kq.set(t,n)}return n}(n),a=i.id,s=i.observer,l=i.elements,u=l.get(e)||[];return l.has(e)||l.set(e,u),u.push(t),s.observe(e),function(){u.splice(u.indexOf(t),1),0===u.length&&(l.delete(e),s.unobserve(e)),0===l.size&&(s.disconnect(),kq.delete(a))}}const Oq=({children:e,height:t,isFloating:n,...r})=>C.jsxs(C.Fragment,{children:[C.jsx(Fm,{display:"flex",flexDirection:"column",flexGrow:"1",bottom:"0",left:"0",right:"0",position:n?"fixed":"relative",...r,children:e}),n&&C.jsx("div",{style:{height:`${t}px`}})]});function Mq(){var e,t;const{inView:n,ref:r,entry:o}=function(e){var t=void 0===e?{}:e,n=t.threshold,r=t.delay,o=t.trackVisibility,i=t.rootMargin,a=t.root,s=t.triggerOnce,l=t.skip,u=t.initialInView,c=t.fallbackInView,d=g.useRef(),f=g.useState({inView:!!u}),p=f[0],h=f[1],m=g.useCallback(function(e){void 0!==d.current&&(d.current(),d.current=void 0),l||e&&(d.current=Lq(e,function(e,t){h({inView:e,entry:t}),t.isIntersecting&&s&&d.current&&(d.current(),d.current=void 0)},{root:a,rootMargin:i,threshold:n,trackVisibility:o,delay:r},c))},[Array.isArray(n)?n.toString():n,a,i,s,l,o,c,r]);g.useEffect(function(){d.current||!p.entry||s||l||h({inView:!!u})});var v=[m,p.inView,p.entry];return v.ref=v[0],v.inView=v[1],v.entry=v[2],v}({threshold:1}),i=(null==(e=null==o?void 0:o.boundingClientRect)?void 0:e.height)||0,a=!o||(null==(t=o.boundingClientRect)?void 0:t.y)>0;return{height:i,isFloating:!n&&a,ref:r}}const jq={de:"German",en:"English"};function Tq(e){const{billingAddressStreetAndNumber:t,billingAddressCity:n,billingAddressPostalCode:r,email:o,company:i,has_recurring_need:a}=e;return{billingAddressStreetAndNumber:t,billingAddressCity:n,billingAddressPostalCode:r,billingEmail:o,billingName:i,name:i,hasRecurringNeed:a}}function Pq(){const{locale:e}=_E(),t=Mm();return{funnelCheckout:async n=>{try{const{data:{funnelCheckout:r}}=await((e,{client:t})=>t.mutation(NI,{attributes:e}).toPromise())({userAttributes:{email:n.email,firstName:n.first_name,lastName:n.last_name,phone:n.phone,language:jq[e]||jq.de},accountAttributes:Tq(n),opportunityAttributes:jI(n)},{client:t});return r}catch(r){r instanceof Error&&JB.notify(r,e=>{e.addMetadata("funnelCheckoutArgs",n)})}}}}function Nq(){const e=Mm();return{createQfLead:async t=>{try{const{company:n,comment:r,deliveryAddressCity:o,deliveryAddressCountry:i,deliveryAddressPostalCode:a,deliveryAddressStreet:s,deliveryAddressStreetNumber:l,email:u,first_name:c,last_name:d,phone:f,catering_categories:p,event_date:h,has_recurring_need:m,is_multi_day:g,number_of_carnivore:v,lead_type:y,number_of_vegans:b,number_of_vegetarians:w,price_per_person:x,service_type:C,team_size:k,delivery_frequency:S,budget_range:E}=t,_=b+w+v,{data:{createQfLead:L}}=await((e,{client:t})=>t.mutation(DI,{attributes:e}).toPromise())({email:u,firstName:c,lastName:d,phone:f,company:n,comment:r,address:`${s} ${l}, ${a} ${o}, ${i}`,cateringCategories:p,eventDate:new Date(h).toDateString(),hasRecurringNeed:m,isMultiDay:g,numberOfOmnivores:v,numberOfVegans:b,numberOfVegetarians:w,numberOfPeople:_,totalBudget:_*x,leadType:y,serviceType:C,teamSize:k,deliveryFrequency:S,budgetRange:E},{client:e});return L}catch(n){n&&JB.notify(n,e=>{e.addMetadata("createQfLead",t)})}}}}function Dq(){const{state:e}=KO(),t="qualification"in e?e.qualification:null,n=Mm(),{currentUserAccount:r}=WO(),o=_E(),{funnelCheckout:i}=Pq(),{createQfLead:a}=Nq(),s=e=>{var n,i,a,s;const l=`${e.deliveryAddressStreet} ${e.deliveryAddressStreetNumber}`,{street:u,postalCode:c,city:d,country:f}=(null==(i=null==(n=null==r?void 0:r.owner)?void 0:n.salesforceCustomer)?void 0:i.billingAddress)||{street:l,postalCode:e.deliveryAddressPostalCode,city:e.deliveryAddressCity,country:e.deliveryAddressCountry};if(!t)throw new Error("cannot create an opportunity outside of the qualification");const p=(null==(a=t.leadSource)?void 0:a.includes("/events"))?"events-landingpage":"Qualification Funnel";return{...t.answers,...e,phone:e.phone||"",catererSlug:null==(s=null==t?void 0:t.selectedCaterer)?void 0:s.slug,landingPageSource:t.leadSource,billingAddressStreetAndNumber:u||"",billingAddressPostalCode:c||"",billingAddressCity:d||"",billingCountry:f||"",conversion_url:window.location.href,deliveryAddressStreetAndNumber:l,deliveryCountry:e.deliveryAddressCountry,lead_language:o.locale,leadSource:p,commentByHeycaterForCaterer:e.comment}};return{submitAsNewCustomer:async e=>{var n;const r=null==(n=null==t?void 0:t.answers)?void 0:n.service_type,o="regular_employee_catering"===r||"full_service_event"===r,{deliveryAddressCountry:l}=e,u=["United Kingdom","Great Britain","UK"].includes(l);if(!o&&!u){const{signInToken:t,customerAccount:n,opportunity:r}=await i(s(e));return{signInToken:t,customerAccount:n,opportunity:r,isUkLead:!1}}try{const n=await a({...e,...null==t?void 0:t.answers});if(!n)return console.error("[HeyCater Funnel] createQfLead returned undefined/null"),{success:!1,isUkLead:u};const{success:r}=n;return void 0===r&&console.error("[HeyCater Funnel] createQfLead response missing success field:",n),{success:r,isUkLead:u}}catch(c){return console.error("[HeyCater Funnel] createQfLead failed:",c),{success:!1,isUkLead:u}}},submitAsExistingCustomer:async e=>{const t=s(e),{createOpportunity:{opportunity:r}}=await async function(e,{client:t}){const n=jI(e),{data:r}=await t.mutation(TI,{attributes:n}).toPromise();return r}(t,{client:n});return r}}}const Rq="qualification-request-form",Aq={},Iq=/^\+?[1-9]\d{6,14}$/,Fq=({isLoggedIn:e})=>US.object().shape({first_name:US.string().required(),last_name:US.string().required(),company:US.string().required(),email:US.string().required().email(),phone:e?US.string():US.string().matches(Iq,"Invalid phone number").required(),deliveryAddressStreet:US.string().min(1).required(),deliveryAddressStreetNumber:US.string().min(1).required(),deliveryAddressPostalCode:US.string().min(1).required(),deliveryAddressCity:US.string().min(1).required(),deliveryAddressCountry:US.string().min(1).required(),comment:US.string()});function zq({header:e=null}){var t,n,r;const[o,i]=g.useState(!1),[a,s]=g.useState(!1),{t:l}=Vd("qualification"),{submitAsNewCustomer:u,submitAsExistingCustomer:c}=Dq(),d=wM({display:"all-answers"}),f=nM("xs"),{state:p}=KO(),{ref:h,isFloating:m,height:v}=Mq(),{validateAddress:y}=eq({cacheValidations:Aq}),b=f&&m,w="qualification"in p?p.qualification:null,{actions:x}=KO(),{currentUserAccount:k}=WO(),S=_E(),[E,_]=g.useState(!1),{deliveryAddressStreetAndNumber:L,deliveryAddressPostalCode:O,deliveryAddressCity:M,deliveryAddressCountry:j}=(null==k?void 0:k.owner)||{},[T,P]=g.useState(""),[N,D]=g.useState(""),R=k?(({street:e,postalCode:t,city:n,country:r})=>[e,t,n,r].filter(Boolean).join(", "))({street:L,postalCode:O,city:M,country:j}):"";g.useEffect(()=>{!async function(){if(!R)return;const{streetName:e,streetNumber:t}=await y(R);P(e),D(t)}()},[R]);const{funnelContextRef:A}=pj(),I=({isFormValid:e})=>{const t=C.jsxs(qm,{id:"request-form__submit-btn",block:"true","data-logged-in":!!k,"data-valid":e,"data-leadsource":"qualification"in p?p.qualification.leadSource:void 0,size:"lg",type:"submit",disabled:E,children:[E&&C.jsx(Fm,{mr:2,style:{alignItems:"flex-start"},children:C.jsx(rl,{style:{verticalAlign:"sub"},size:20,color:"inherit"})}),l("request.form.submit")]});return f?C.jsx(Oq,{height:v,isFloating:b,children:C.jsx(Uq,{py:2,px:b&&2,$floating:b,children:t})}):C.jsx(Fm,{position:"absolute",bottom:"0",left:"0",right:"0",py:2,px:2,bgcolor:"white",children:t})},F={first_name:(null==k?void 0:k.firstName)||"",last_name:(null==k?void 0:k.lastName)||"",company:(null==(t=null==k?void 0:k.owner)?void 0:t.companyName)||"",deliveryAddressStreet:T||"",deliveryAddressStreetNumber:N||"",deliveryAddressPostalCode:O||"",deliveryAddressCity:M||"",deliveryAddressCountry:j||"",email:(null==k?void 0:k.email)||"",phone:(null==(r=null==(n=null==k?void 0:k.owner)?void 0:n.salesforceCustomer)?void 0:r.phoneNumber)||""},z=!!k;return o?C.jsx(yq,{isUkLead:a}):C.jsxs(fq,{children:[e,C.jsx(pB,{initialValues:F,validationSchema:Fq({isLoggedIn:z}),onSubmit:async e=>{var t;_(!0);const n=null==(t=null==w?void 0:w.answers)?void 0:t.service_type,r=A.current.service_type;console.log("[Optimeleon Debug] handleSubmit called",{serviceType:n,serviceTypeType:typeof n,serviceTypeLength:null==n?void 0:n.length,serviceTypeFromContext:r,contextServiceTypeType:typeof r,allAnswers:JSON.stringify(null==w?void 0:w.answers),funnelContext:JSON.stringify(A.current)});const o=n||r;console.log("[Optimeleon Debug] About to track funnel_form_submitted with:",o),uj("funnel_form_submitted",o);const a="regular_employee_catering"===n||"full_service_event"===n,{deliveryAddressCountry:l}=e,d=["United Kingdom","Great Britain","UK"].includes(l);if(a||d){const t=await u(e),{success:n}=t;return n?(s(d),i(!0),sj(A.current,{is_uk_lead:d}),lj(A.current),console.log("[Optimeleon Debug] Lead-only flow - tracking funnel_completed with:",o),uj("funnel_completed",o),void(window.gtag&&window.gtag("event","submit_qf_request"))):(console.error("[HeyCater Funnel] Lead submission failed. Result:",t),void _(!1))}let f="";if(k)try{const t=await c(e);if(!t||!t.id)return console.error("[HeyCater Funnel] submitAsExistingCustomer returned invalid opportunity:",t),void _(!1);f=`/account/requests/${t.id}`}catch(p){return p instanceof Error&&JB.notify(p),void _(!1)}else{const t=await u(e),{signInToken:n,opportunity:r}=t||{};if(!r||!r.id)return console.error("[HeyCater Funnel] submitAsNewCustomer returned invalid opportunity:",t),void _(!1);f=n?`/${S.locale}/account/requests/${r.id}?one_time_sign_in_token=${n}`:`/${S.locale}/account/external/requests/${r.id}`}sj(A.current,{is_logged_in:!!k}),lj(A.current),console.log("[Optimeleon Debug] Regular flow - tracking funnel_completed with:",o),uj("funnel_completed",o),window.gtag&&window.gtag("event","submit_qf_request"),x.setRequest(e),((e="/")=>{window.location.href=`${DE().customerAppHost}${e}`})(f)},enableReinitialize:!0,children:e=>{var t,n;return C.jsxs(Vq,{id:Rq,name:Rq,children:[C.jsxs($q,{children:[C.jsx(Bq,{$half:!0,children:C.jsx(wB,{required:!0,name:"first_name",label:l("request.form.firstName"),placeholder:l("request.form.firstName"),component:mq})}),C.jsx(Bq,{$half:!0,children:C.jsx(wB,{required:!0,name:"last_name",label:l("request.form.lastName"),placeholder:l("request.form.lastName"),component:mq})})]}),C.jsx($q,{children:C.jsx(Bq,{$half:!0,children:C.jsx(wB,{required:!0,name:"company",label:l("request.form.company"),placeholder:l("request.form.company"),component:mq})})}),C.jsx($q,{children:C.jsx(Bq,{children:C.jsx(wB,{required:!0,name:"delivery_address",label:l("request.form.deliveryAddress"),placeholder:l("request.form.deliveryAddress"),helperText:l("request.form.helpText.address"),defaultValue:R,component:oq})})}),C.jsxs($q,{children:[!k&&C.jsx(Bq,{$half:!0,children:C.jsx(wB,{required:!0,type:"email",name:"email",label:l("request.form.email"),placeholder:l("request.form.email"),helperText:l("request.form.helpText.email"),component:mq})}),!(null==(n=null==(t=null==k?void 0:k.owner)?void 0:t.salesforceCustomer)?void 0:n.phoneNumber)&&C.jsx(Bq,{$half:!0,children:C.jsx(gq,{label:l("request.form.phone"),name:"phone",formik:e,helperText:l("request.form.helpText.phone")})})]}),C.jsx($q,{children:C.jsx(Bq,{children:C.jsx(wB,{name:"comment",label:l("request.form.comment"),placeholder:l("request.form.commentPlaceholder"),component:mq,multiline:!0})})}),C.jsx(wB,{type:"hidden",name:"deliveryAddressStreet"}),C.jsx(wB,{type:"hidden",name:"deliveryAddressStreetNumber"}),C.jsx(wB,{type:"hidden",name:"deliveryAddressPostalCode"}),C.jsx(wB,{type:"hidden",name:"deliveryAddressCity"}),C.jsx(wB,{type:"hidden",name:"deliveryAddressCountry"}),C.jsxs(Fm,{mt:2,mb:4,display:"flex",flexDirection:"column",children:[C.jsx(Qm,{variant:"caption",fontWeight:500,fontSize:12,px:1,mr:1.5,mb:1,children:l("selection.yourSelection")}),C.jsx(qq,{children:d.map(e=>C.jsx(yM,{size:"sm",stepId:e.stepId,text:e.text||""},`${e.stepId}_${e.text}`))})]}),C.jsx(Fm,{ref:h,children:C.jsx(I,{isFormValid:e.isValid})})]})}})]})}const $q=_p.div`
1411
1411
  display: flex;
1412
1412
  flex-wrap: wrap;
1413
1413
  margin: 0 -${({theme:e})=>e.spacing(1)}px;
package/dist/index.cjs.js CHANGED
@@ -1319,7 +1319,7 @@ object-assign
1319
1319
  justify-content: center;
1320
1320
  background-size: cover;
1321
1321
  background-position: bottom center;
1322
- `,wj=({children:e,height:n,isFloating:r,...i})=>t.jsxs(t.Fragment,{children:[t.jsx(v,{display:"flex",flexDirection:"column",flexGrow:"1",bottom:"0",left:"0",right:"0",position:r?"fixed":"relative",...i,children:e}),r&&t.jsx("div",{style:{height:`${n}px`}})]});const Lj={de:"German",en:"English"};function Mj(e){const{billingAddressStreetAndNumber:t,billingAddressCity:n,billingAddressPostalCode:r,email:i,company:o,has_recurring_need:a}=e;return{billingAddressStreetAndNumber:t,billingAddressCity:n,billingAddressPostalCode:r,billingEmail:i,billingName:o,name:o,hasRecurringNeed:a}}function kj(){const{locale:e}=du(),t=a.useClient();return{funnelCheckout:async n=>{try{const{data:{funnelCheckout:r}}=await((e,{client:t})=>t.mutation($b,{attributes:e}).toPromise())({userAttributes:{email:n.email,firstName:n.first_name,lastName:n.last_name,phone:n.phone,language:Lj[e]||Lj.de},accountAttributes:Mj(n),opportunityAttributes:zb(n)},{client:t});return r}catch(r){r instanceof Error&&Q_.notify(r,e=>{e.addMetadata("funnelCheckoutArgs",n)})}}}}function Sj(){const e=a.useClient();return{createQfLead:async t=>{try{const{company:n,comment:r,deliveryAddressCity:i,deliveryAddressCountry:o,deliveryAddressPostalCode:a,deliveryAddressStreet:s,deliveryAddressStreetNumber:l,email:u,first_name:c,last_name:d,phone:f,catering_categories:p,event_date:h,has_recurring_need:m,is_multi_day:g,number_of_carnivore:y,lead_type:v,number_of_vegans:b,number_of_vegetarians:C,price_per_person:x,service_type:w,team_size:L,delivery_frequency:M,budget_range:k}=t,S=b+C+y,{data:{createQfLead:_}}=await((e,{client:t})=>t.mutation(Ib,{attributes:e}).toPromise())({email:u,firstName:c,lastName:d,phone:f,company:n,comment:r,address:`${s} ${l}, ${a} ${i}, ${o}`,cateringCategories:p,eventDate:new Date(h).toDateString(),hasRecurringNeed:m,isMultiDay:g,numberOfOmnivores:y,numberOfVegans:b,numberOfVegetarians:C,numberOfPeople:S,totalBudget:S*x,leadType:v,serviceType:w,teamSize:L,deliveryFrequency:M,budgetRange:k},{client:e});return _}catch(n){n&&Q_.notify(n,e=>{e.addMetadata("createQfLead",t)})}}}}function _j(){const{state:e}=xf(),t="qualification"in e?e.qualification:null,n=a.useClient(),{currentUserAccount:r}=vf(),i=du(),{funnelCheckout:o}=kj(),{createQfLead:s}=Sj(),l=e=>{var n,o,a,s;const l=`${e.deliveryAddressStreet} ${e.deliveryAddressStreetNumber}`,{street:u,postalCode:c,city:d,country:f}=(null==(o=null==(n=null==r?void 0:r.owner)?void 0:n.salesforceCustomer)?void 0:o.billingAddress)||{street:l,postalCode:e.deliveryAddressPostalCode,city:e.deliveryAddressCity,country:e.deliveryAddressCountry};if(!t)throw new Error("cannot create an opportunity outside of the qualification");const p=(null==(a=t.leadSource)?void 0:a.includes("/events"))?"events-landingpage":"Qualification Funnel";return{...t.answers,...e,phone:e.phone||"",catererSlug:null==(s=null==t?void 0:t.selectedCaterer)?void 0:s.slug,landingPageSource:t.leadSource,billingAddressStreetAndNumber:u||"",billingAddressPostalCode:c||"",billingAddressCity:d||"",billingCountry:f||"",conversion_url:window.location.href,deliveryAddressStreetAndNumber:l,deliveryCountry:e.deliveryAddressCountry,lead_language:i.locale,leadSource:p,commentByHeycaterForCaterer:e.comment}};return{submitAsNewCustomer:async e=>{var n;const r=null==(n=null==t?void 0:t.answers)?void 0:n.service_type,i="regular_employee_catering"===r||"full_service_event"===r,{deliveryAddressCountry:a}=e,u=["United Kingdom","Great Britain","UK"].includes(a);if(!i&&!u){const{signInToken:t,customerAccount:n,opportunity:r}=await o(l(e));return{signInToken:t,customerAccount:n,opportunity:r,isUkLead:!1}}try{const n=await s({...e,...null==t?void 0:t.answers});if(!n)return console.error("[HeyCater Funnel] createQfLead returned undefined/null"),{success:!1,isUkLead:u};const{success:r}=n;return void 0===r&&console.error("[HeyCater Funnel] createQfLead response missing success field:",n),{success:r,isUkLead:u}}catch(c){return console.error("[HeyCater Funnel] createQfLead failed:",c),{success:!1,isUkLead:u}}},submitAsExistingCustomer:async e=>{const t=l(e),{createOpportunity:{opportunity:r}}=await async function(e,{client:t}){const n=zb(e),{data:r}=await t.mutation(Fb,{attributes:n}).toPromise();return r}(t,{client:n});return r}}}const jj="qualification-request-form",Ej={},Oj=/^\+?[1-9]\d{6,14}$/,Dj=({isLoggedIn:e})=>au.object().shape({first_name:au.string().required(),last_name:au.string().required(),company:au.string().required(),email:au.string().required().email(),phone:e?au.string():au.string().matches(Oj,"Invalid phone number").required(),deliveryAddressStreet:au.string().min(1).required(),deliveryAddressStreetNumber:au.string().min(1).required(),deliveryAddressPostalCode:au.string().min(1).required(),deliveryAddressCity:au.string().min(1).required(),deliveryAddressCountry:au.string().min(1).required(),comment:au.string()});function Tj({header:e=null}){var o,a,s;const[l,u]=n.useState(!1),[d,p]=n.useState(!1),{t:h}=i.useTranslation("qualification"),{submitAsNewCustomer:m,submitAsExistingCustomer:g}=_j(),y=Hf({display:"all-answers"}),b=Ef("xs"),{state:C}=xf(),{ref:x,isFloating:L,height:M}=function(){var e,t;const{inView:n,ref:r,entry:i}=f.useInView({threshold:1}),o=(null==(e=null==i?void 0:i.boundingClientRect)?void 0:e.height)||0,a=!i||(null==(t=i.boundingClientRect)?void 0:t.y)>0;return{height:o,isFloating:!n&&a,ref:r}}(),{validateAddress:k}=X_({cacheValidations:Ej}),S=b&&L,_="qualification"in C?C.qualification:null,{actions:j}=xf(),{currentUserAccount:E}=vf(),O=du(),[T,A]=n.useState(!1),{deliveryAddressStreetAndNumber:P,deliveryAddressPostalCode:z,deliveryAddressCity:F,deliveryAddressCountry:R}=(null==E?void 0:E.owner)||{},[$,I]=n.useState(""),[N,q]=n.useState(""),Z=E?(({street:e,postalCode:t,city:n,country:r})=>[e,t,n,r].filter(Boolean).join(", "))({street:P,postalCode:z,city:F,country:R}):"";n.useEffect(()=>{!async function(){if(!Z)return;const{streetName:e,streetNumber:t}=await k(Z);I(e),q(t)}()},[Z]);const{funnelContextRef:B}=Np(),W=({isFormValid:e})=>{const n=t.jsxs(w,{id:"request-form__submit-btn",block:"true","data-logged-in":!!E,"data-valid":e,"data-leadsource":"qualification"in C?C.qualification.leadSource:void 0,size:"lg",type:"submit",disabled:T,children:[T&&t.jsx(v,{mr:2,style:{alignItems:"flex-start"},children:t.jsx(r.CircularProgress,{style:{verticalAlign:"sub"},size:20,color:"inherit"})}),h("request.form.submit")]});return b?t.jsx(wj,{height:M,isFloating:S,children:t.jsx(Rj,{py:2,px:S&&2,$floating:S,children:n})}):t.jsx(v,{position:"absolute",bottom:"0",left:"0",right:"0",py:2,px:2,bgcolor:"white",children:n})},V={first_name:(null==E?void 0:E.firstName)||"",last_name:(null==E?void 0:E.lastName)||"",company:(null==(o=null==E?void 0:E.owner)?void 0:o.companyName)||"",deliveryAddressStreet:$||"",deliveryAddressStreetNumber:N||"",deliveryAddressPostalCode:z||"",deliveryAddressCity:F||"",deliveryAddressCountry:R||"",email:(null==E?void 0:E.email)||"",phone:(null==(s=null==(a=null==E?void 0:E.owner)?void 0:a.salesforceCustomer)?void 0:s.phoneNumber)||""},U=!!E;return l?t.jsx(yj,{isUkLead:d}):t.jsxs(dj,{children:[e,t.jsx(c.Formik,{initialValues:V,validationSchema:Dj({isLoggedIn:U}),onSubmit:async e=>{var t;A(!0);const n=null==(t=null==_?void 0:_.answers)?void 0:t.service_type,r=B.current.service_type;console.log("[Optimeleon Debug] handleSubmit called",{serviceType:n,serviceTypeType:typeof n,serviceTypeLength:null==n?void 0:n.length,serviceTypeFromContext:r,contextServiceTypeType:typeof r,allAnswers:JSON.stringify(null==_?void 0:_.answers),funnelContext:JSON.stringify(B.current)});const i=n||r;console.log("[Optimeleon Debug] About to track funnel_form_submitted with:",i),Fp("funnel_form_submitted",i);const o="regular_employee_catering"===n||"full_service_event"===n,{deliveryAddressCountry:a}=e,s=["United Kingdom","Great Britain","UK"].includes(a);if(o||s){const t=await m(e),{success:n}=t;return n?(p(s),u(!0),Pp(B.current,{is_uk_lead:s}),zp(B.current),console.log("[Optimeleon Debug] Lead-only flow - tracking funnel_completed with:",i),void Fp("funnel_completed",i)):(console.error("[HeyCater Funnel] Lead submission failed. Result:",t),void A(!1))}let l="";if(E)try{const t=await g(e);if(!t||!t.id)return console.error("[HeyCater Funnel] submitAsExistingCustomer returned invalid opportunity:",t),void A(!1);l=`/account/requests/${t.id}`}catch(c){return c instanceof Error&&Q_.notify(c),void A(!1)}else{const t=await m(e),{signInToken:n,opportunity:r}=t||{};if(!r||!r.id)return console.error("[HeyCater Funnel] submitAsNewCustomer returned invalid opportunity:",t),void A(!1);l=n?`/${O.locale}/account/requests/${r.id}?one_time_sign_in_token=${n}`:`/${O.locale}/account/external/requests/${r.id}`}Pp(B.current,{is_logged_in:!!E}),zp(B.current),console.log("[Optimeleon Debug] Regular flow - tracking funnel_completed with:",i),Fp("funnel_completed",i),j.setRequest(e),((e="/")=>{window.location.href=`${bu().customerAppHost}${e}`})(l)},enableReinitialize:!0,children:e=>{var n,r;return t.jsxs(Fj,{id:jj,name:jj,children:[t.jsxs(Aj,{children:[t.jsx(Pj,{$half:!0,children:t.jsx(c.Field,{required:!0,name:"first_name",label:h("request.form.firstName"),placeholder:h("request.form.firstName"),component:hj})}),t.jsx(Pj,{$half:!0,children:t.jsx(c.Field,{required:!0,name:"last_name",label:h("request.form.lastName"),placeholder:h("request.form.lastName"),component:hj})})]}),t.jsx(Aj,{children:t.jsx(Pj,{$half:!0,children:t.jsx(c.Field,{required:!0,name:"company",label:h("request.form.company"),placeholder:h("request.form.company"),component:hj})})}),t.jsx(Aj,{children:t.jsx(Pj,{children:t.jsx(c.Field,{required:!0,name:"delivery_address",label:h("request.form.deliveryAddress"),placeholder:h("request.form.deliveryAddress"),helperText:h("request.form.helpText.address"),defaultValue:Z,component:rj})})}),t.jsxs(Aj,{children:[!E&&t.jsx(Pj,{$half:!0,children:t.jsx(c.Field,{required:!0,type:"email",name:"email",label:h("request.form.email"),placeholder:h("request.form.email"),helperText:h("request.form.helpText.email"),component:hj})}),!(null==(r=null==(n=null==E?void 0:E.owner)?void 0:n.salesforceCustomer)?void 0:r.phoneNumber)&&t.jsx(Pj,{$half:!0,children:t.jsx(mj,{label:h("request.form.phone"),name:"phone",formik:e,helperText:h("request.form.helpText.phone")})})]}),t.jsx(Aj,{children:t.jsx(Pj,{children:t.jsx(c.Field,{name:"comment",label:h("request.form.comment"),placeholder:h("request.form.commentPlaceholder"),component:hj,multiline:!0})})}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressStreet"}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressStreetNumber"}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressPostalCode"}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressCity"}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressCountry"}),t.jsxs(v,{mt:2,mb:4,display:"flex",flexDirection:"column",children:[t.jsx(D,{variant:"caption",fontWeight:500,fontSize:12,px:1,mr:1.5,mb:1,children:h("selection.yourSelection")}),t.jsx(zj,{children:y.map(e=>t.jsx(Vf,{size:"sm",stepId:e.stepId,text:e.text||""},`${e.stepId}_${e.text}`))})]}),t.jsx(v,{ref:x,children:t.jsx(W,{isFormValid:e.isValid})})]})}})]})}const Aj=o.div`
1322
+ `,wj=({children:e,height:n,isFloating:r,...i})=>t.jsxs(t.Fragment,{children:[t.jsx(v,{display:"flex",flexDirection:"column",flexGrow:"1",bottom:"0",left:"0",right:"0",position:r?"fixed":"relative",...i,children:e}),r&&t.jsx("div",{style:{height:`${n}px`}})]});const Lj={de:"German",en:"English"};function Mj(e){const{billingAddressStreetAndNumber:t,billingAddressCity:n,billingAddressPostalCode:r,email:i,company:o,has_recurring_need:a}=e;return{billingAddressStreetAndNumber:t,billingAddressCity:n,billingAddressPostalCode:r,billingEmail:i,billingName:o,name:o,hasRecurringNeed:a}}function kj(){const{locale:e}=du(),t=a.useClient();return{funnelCheckout:async n=>{try{const{data:{funnelCheckout:r}}=await((e,{client:t})=>t.mutation($b,{attributes:e}).toPromise())({userAttributes:{email:n.email,firstName:n.first_name,lastName:n.last_name,phone:n.phone,language:Lj[e]||Lj.de},accountAttributes:Mj(n),opportunityAttributes:zb(n)},{client:t});return r}catch(r){r instanceof Error&&Q_.notify(r,e=>{e.addMetadata("funnelCheckoutArgs",n)})}}}}function Sj(){const e=a.useClient();return{createQfLead:async t=>{try{const{company:n,comment:r,deliveryAddressCity:i,deliveryAddressCountry:o,deliveryAddressPostalCode:a,deliveryAddressStreet:s,deliveryAddressStreetNumber:l,email:u,first_name:c,last_name:d,phone:f,catering_categories:p,event_date:h,has_recurring_need:m,is_multi_day:g,number_of_carnivore:y,lead_type:v,number_of_vegans:b,number_of_vegetarians:C,price_per_person:x,service_type:w,team_size:L,delivery_frequency:M,budget_range:k}=t,S=b+C+y,{data:{createQfLead:_}}=await((e,{client:t})=>t.mutation(Ib,{attributes:e}).toPromise())({email:u,firstName:c,lastName:d,phone:f,company:n,comment:r,address:`${s} ${l}, ${a} ${i}, ${o}`,cateringCategories:p,eventDate:new Date(h).toDateString(),hasRecurringNeed:m,isMultiDay:g,numberOfOmnivores:y,numberOfVegans:b,numberOfVegetarians:C,numberOfPeople:S,totalBudget:S*x,leadType:v,serviceType:w,teamSize:L,deliveryFrequency:M,budgetRange:k},{client:e});return _}catch(n){n&&Q_.notify(n,e=>{e.addMetadata("createQfLead",t)})}}}}function _j(){const{state:e}=xf(),t="qualification"in e?e.qualification:null,n=a.useClient(),{currentUserAccount:r}=vf(),i=du(),{funnelCheckout:o}=kj(),{createQfLead:s}=Sj(),l=e=>{var n,o,a,s;const l=`${e.deliveryAddressStreet} ${e.deliveryAddressStreetNumber}`,{street:u,postalCode:c,city:d,country:f}=(null==(o=null==(n=null==r?void 0:r.owner)?void 0:n.salesforceCustomer)?void 0:o.billingAddress)||{street:l,postalCode:e.deliveryAddressPostalCode,city:e.deliveryAddressCity,country:e.deliveryAddressCountry};if(!t)throw new Error("cannot create an opportunity outside of the qualification");const p=(null==(a=t.leadSource)?void 0:a.includes("/events"))?"events-landingpage":"Qualification Funnel";return{...t.answers,...e,phone:e.phone||"",catererSlug:null==(s=null==t?void 0:t.selectedCaterer)?void 0:s.slug,landingPageSource:t.leadSource,billingAddressStreetAndNumber:u||"",billingAddressPostalCode:c||"",billingAddressCity:d||"",billingCountry:f||"",conversion_url:window.location.href,deliveryAddressStreetAndNumber:l,deliveryCountry:e.deliveryAddressCountry,lead_language:i.locale,leadSource:p,commentByHeycaterForCaterer:e.comment}};return{submitAsNewCustomer:async e=>{var n;const r=null==(n=null==t?void 0:t.answers)?void 0:n.service_type,i="regular_employee_catering"===r||"full_service_event"===r,{deliveryAddressCountry:a}=e,u=["United Kingdom","Great Britain","UK"].includes(a);if(!i&&!u){const{signInToken:t,customerAccount:n,opportunity:r}=await o(l(e));return{signInToken:t,customerAccount:n,opportunity:r,isUkLead:!1}}try{const n=await s({...e,...null==t?void 0:t.answers});if(!n)return console.error("[HeyCater Funnel] createQfLead returned undefined/null"),{success:!1,isUkLead:u};const{success:r}=n;return void 0===r&&console.error("[HeyCater Funnel] createQfLead response missing success field:",n),{success:r,isUkLead:u}}catch(c){return console.error("[HeyCater Funnel] createQfLead failed:",c),{success:!1,isUkLead:u}}},submitAsExistingCustomer:async e=>{const t=l(e),{createOpportunity:{opportunity:r}}=await async function(e,{client:t}){const n=zb(e),{data:r}=await t.mutation(Fb,{attributes:n}).toPromise();return r}(t,{client:n});return r}}}const jj="qualification-request-form",Ej={},Oj=/^\+?[1-9]\d{6,14}$/,Dj=({isLoggedIn:e})=>au.object().shape({first_name:au.string().required(),last_name:au.string().required(),company:au.string().required(),email:au.string().required().email(),phone:e?au.string():au.string().matches(Oj,"Invalid phone number").required(),deliveryAddressStreet:au.string().min(1).required(),deliveryAddressStreetNumber:au.string().min(1).required(),deliveryAddressPostalCode:au.string().min(1).required(),deliveryAddressCity:au.string().min(1).required(),deliveryAddressCountry:au.string().min(1).required(),comment:au.string()});function Tj({header:e=null}){var o,a,s;const[l,u]=n.useState(!1),[d,p]=n.useState(!1),{t:h}=i.useTranslation("qualification"),{submitAsNewCustomer:m,submitAsExistingCustomer:g}=_j(),y=Hf({display:"all-answers"}),b=Ef("xs"),{state:C}=xf(),{ref:x,isFloating:L,height:M}=function(){var e,t;const{inView:n,ref:r,entry:i}=f.useInView({threshold:1}),o=(null==(e=null==i?void 0:i.boundingClientRect)?void 0:e.height)||0,a=!i||(null==(t=i.boundingClientRect)?void 0:t.y)>0;return{height:o,isFloating:!n&&a,ref:r}}(),{validateAddress:k}=X_({cacheValidations:Ej}),S=b&&L,_="qualification"in C?C.qualification:null,{actions:j}=xf(),{currentUserAccount:E}=vf(),O=du(),[T,A]=n.useState(!1),{deliveryAddressStreetAndNumber:P,deliveryAddressPostalCode:z,deliveryAddressCity:F,deliveryAddressCountry:R}=(null==E?void 0:E.owner)||{},[$,I]=n.useState(""),[N,q]=n.useState(""),Z=E?(({street:e,postalCode:t,city:n,country:r})=>[e,t,n,r].filter(Boolean).join(", "))({street:P,postalCode:z,city:F,country:R}):"";n.useEffect(()=>{!async function(){if(!Z)return;const{streetName:e,streetNumber:t}=await k(Z);I(e),q(t)}()},[Z]);const{funnelContextRef:B}=Np(),W=({isFormValid:e})=>{const n=t.jsxs(w,{id:"request-form__submit-btn",block:"true","data-logged-in":!!E,"data-valid":e,"data-leadsource":"qualification"in C?C.qualification.leadSource:void 0,size:"lg",type:"submit",disabled:T,children:[T&&t.jsx(v,{mr:2,style:{alignItems:"flex-start"},children:t.jsx(r.CircularProgress,{style:{verticalAlign:"sub"},size:20,color:"inherit"})}),h("request.form.submit")]});return b?t.jsx(wj,{height:M,isFloating:S,children:t.jsx(Rj,{py:2,px:S&&2,$floating:S,children:n})}):t.jsx(v,{position:"absolute",bottom:"0",left:"0",right:"0",py:2,px:2,bgcolor:"white",children:n})},V={first_name:(null==E?void 0:E.firstName)||"",last_name:(null==E?void 0:E.lastName)||"",company:(null==(o=null==E?void 0:E.owner)?void 0:o.companyName)||"",deliveryAddressStreet:$||"",deliveryAddressStreetNumber:N||"",deliveryAddressPostalCode:z||"",deliveryAddressCity:F||"",deliveryAddressCountry:R||"",email:(null==E?void 0:E.email)||"",phone:(null==(s=null==(a=null==E?void 0:E.owner)?void 0:a.salesforceCustomer)?void 0:s.phoneNumber)||""},U=!!E;return l?t.jsx(yj,{isUkLead:d}):t.jsxs(dj,{children:[e,t.jsx(c.Formik,{initialValues:V,validationSchema:Dj({isLoggedIn:U}),onSubmit:async e=>{var t;A(!0);const n=null==(t=null==_?void 0:_.answers)?void 0:t.service_type,r=B.current.service_type;console.log("[Optimeleon Debug] handleSubmit called",{serviceType:n,serviceTypeType:typeof n,serviceTypeLength:null==n?void 0:n.length,serviceTypeFromContext:r,contextServiceTypeType:typeof r,allAnswers:JSON.stringify(null==_?void 0:_.answers),funnelContext:JSON.stringify(B.current)});const i=n||r;console.log("[Optimeleon Debug] About to track funnel_form_submitted with:",i),Fp("funnel_form_submitted",i);const o="regular_employee_catering"===n||"full_service_event"===n,{deliveryAddressCountry:a}=e,s=["United Kingdom","Great Britain","UK"].includes(a);if(o||s){const t=await m(e),{success:n}=t;return n?(p(s),u(!0),Pp(B.current,{is_uk_lead:s}),zp(B.current),console.log("[Optimeleon Debug] Lead-only flow - tracking funnel_completed with:",i),Fp("funnel_completed",i),void(window.gtag&&window.gtag("event","submit_qf_request"))):(console.error("[HeyCater Funnel] Lead submission failed. Result:",t),void A(!1))}let l="";if(E)try{const t=await g(e);if(!t||!t.id)return console.error("[HeyCater Funnel] submitAsExistingCustomer returned invalid opportunity:",t),void A(!1);l=`/account/requests/${t.id}`}catch(c){return c instanceof Error&&Q_.notify(c),void A(!1)}else{const t=await m(e),{signInToken:n,opportunity:r}=t||{};if(!r||!r.id)return console.error("[HeyCater Funnel] submitAsNewCustomer returned invalid opportunity:",t),void A(!1);l=n?`/${O.locale}/account/requests/${r.id}?one_time_sign_in_token=${n}`:`/${O.locale}/account/external/requests/${r.id}`}Pp(B.current,{is_logged_in:!!E}),zp(B.current),console.log("[Optimeleon Debug] Regular flow - tracking funnel_completed with:",i),Fp("funnel_completed",i),window.gtag&&window.gtag("event","submit_qf_request"),j.setRequest(e),((e="/")=>{window.location.href=`${bu().customerAppHost}${e}`})(l)},enableReinitialize:!0,children:e=>{var n,r;return t.jsxs(Fj,{id:jj,name:jj,children:[t.jsxs(Aj,{children:[t.jsx(Pj,{$half:!0,children:t.jsx(c.Field,{required:!0,name:"first_name",label:h("request.form.firstName"),placeholder:h("request.form.firstName"),component:hj})}),t.jsx(Pj,{$half:!0,children:t.jsx(c.Field,{required:!0,name:"last_name",label:h("request.form.lastName"),placeholder:h("request.form.lastName"),component:hj})})]}),t.jsx(Aj,{children:t.jsx(Pj,{$half:!0,children:t.jsx(c.Field,{required:!0,name:"company",label:h("request.form.company"),placeholder:h("request.form.company"),component:hj})})}),t.jsx(Aj,{children:t.jsx(Pj,{children:t.jsx(c.Field,{required:!0,name:"delivery_address",label:h("request.form.deliveryAddress"),placeholder:h("request.form.deliveryAddress"),helperText:h("request.form.helpText.address"),defaultValue:Z,component:rj})})}),t.jsxs(Aj,{children:[!E&&t.jsx(Pj,{$half:!0,children:t.jsx(c.Field,{required:!0,type:"email",name:"email",label:h("request.form.email"),placeholder:h("request.form.email"),helperText:h("request.form.helpText.email"),component:hj})}),!(null==(r=null==(n=null==E?void 0:E.owner)?void 0:n.salesforceCustomer)?void 0:r.phoneNumber)&&t.jsx(Pj,{$half:!0,children:t.jsx(mj,{label:h("request.form.phone"),name:"phone",formik:e,helperText:h("request.form.helpText.phone")})})]}),t.jsx(Aj,{children:t.jsx(Pj,{children:t.jsx(c.Field,{name:"comment",label:h("request.form.comment"),placeholder:h("request.form.commentPlaceholder"),component:hj,multiline:!0})})}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressStreet"}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressStreetNumber"}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressPostalCode"}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressCity"}),t.jsx(c.Field,{type:"hidden",name:"deliveryAddressCountry"}),t.jsxs(v,{mt:2,mb:4,display:"flex",flexDirection:"column",children:[t.jsx(D,{variant:"caption",fontWeight:500,fontSize:12,px:1,mr:1.5,mb:1,children:h("selection.yourSelection")}),t.jsx(zj,{children:y.map(e=>t.jsx(Vf,{size:"sm",stepId:e.stepId,text:e.text||""},`${e.stepId}_${e.text}`))})]}),t.jsx(v,{ref:x,children:t.jsx(W,{isFormValid:e.isValid})})]})}})]})}const Aj=o.div`
1323
1323
  display: flex;
1324
1324
  flex-wrap: wrap;
1325
1325
  margin: 0 -${({theme:e})=>e.spacing(1)}px;
package/dist/index.esm.js CHANGED
@@ -26932,6 +26932,7 @@ function RequestForm({ header = null }) {
26932
26932
  trackCompleted(funnelContextRef.current);
26933
26933
  console.log("[Optimeleon Debug] Lead-only flow - tracking funnel_completed with:", effectiveServiceType);
26934
26934
  trackOptimeleonConversion("funnel_completed", effectiveServiceType);
26935
+ window.gtag && window.gtag("event", "submit_qf_request");
26935
26936
  return;
26936
26937
  } else {
26937
26938
  console.error("[HeyCater Funnel] Lead submission failed. Result:", response);
@@ -26976,6 +26977,7 @@ function RequestForm({ header = null }) {
26976
26977
  trackCompleted(funnelContextRef.current);
26977
26978
  console.log("[Optimeleon Debug] Regular flow - tracking funnel_completed with:", effectiveServiceType);
26978
26979
  trackOptimeleonConversion("funnel_completed", effectiveServiceType);
26980
+ window.gtag && window.gtag("event", "submit_qf_request");
26979
26981
  actions.setRequest(values2);
26980
26982
  redirectToCustomerAccountRequest(redirectRoute);
26981
26983
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heycater/qualification-funnel",
3
- "version": "1.19.18",
3
+ "version": "1.19.19",
4
4
  "type": "module",
5
5
  "description": "Heycater embedded qualification funnel widget",
6
6
  "main": "dist/index.cjs.js",