@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.
- package/dist/heycater-funnel.iife.js +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +2 -0
- package/package.json +1 -1
|
@@ -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
|
};
|