@open-tender/hooks
Advanced tools
Comparing version 0.1.3 to 0.1.4
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("@open-tender/js")):"function"==typeof define&&define.amd?define(["React","@open-tender/js"],t):"object"==typeof exports?exports["@open-tender/hooks"]=t(require("react"),require("@open-tender/js")):e["@open-tender/hooks"]=t(e.React,e["@open-tender/js"])}(self,(function(e,t){return(()=>{"use strict";var r={149:e=>{e.exports=t},798:t=>{t.exports=e}},a={};function n(e){var t=a[e];if(void 0!==t)return t.exports;var u=a[e]={exports:{}};return r[e](u,u.exports,n),u.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var u={};return(()=>{n.r(u),n.d(u,{useAddressForm:()=>t,useAllergenForm:()=>r,useCartGuestForm:()=>a,useCreditCardForm:()=>l,useGiftCardAssignForm:()=>o,useGiftCardAssignOtherForm:()=>c,useGiftCardForm:()=>i,useGiftCardsForm:()=>d,useLevelUpForm:()=>f,useLoginForm:()=>m,useOrderFulfillmentForm:()=>p,useProfileForm:()=>b,useResetPasswordForm:()=>h,useSendResetForm:()=>g,useSignUpForm:()=>_});var e=n(798);const t=(t,r,a,n,u)=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),[o,c]=(0,e.useState)(t),[i,d]=(0,e.useState)({}),[f,m]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{"idle"===r&&(m(!1),a&&(d(a),l.current.focus()))}),[r,a]),{submitRef:s,inputRef:l,fields:[{label:"Company",name:"company",type:"text"},{label:"Contact Person",name:"contact",type:"text"},{label:"Contact Phone",name:"phone",type:"tel"},{label:"Description",name:"description",type:"text"},{label:"Notes",name:"notes",type:"textarea"},{label:"Is Default",name:"is_default",type:"checkbox"}],data:o,errors:i,submitting:f,handleChange:e=>{const{id:t,type:r,value:a,checked:n}=e.target,u="checkbox"===r?n:a;c({...o,[t]:u})},handleSubmit:e=>{e.preventDefault(),m(!0);const t={...o};delete t.customer_address_id,delete t.created_at,delete t.last_used_at;const r=o.customer_address_id;n(r,t,u),s.current.blur()}}},r=(t,r,a=!1,n=null,u,s,l)=>{const o=(0,e.useRef)(null),[c,i]=(0,e.useState)([]),[d,f]=(0,e.useState)(!1),m=c.map((e=>e.allergen_id)),p=n?n.detail||n.message:null;return(0,e.useEffect)((()=>{a||(f(!1),o.current&&o.current.blur())}),[a]),(0,e.useEffect)((()=>{i(r||[])}),[r,t]),{submitRef:o,submitting:d,allergenIds:m,formError:p,handleChange:e=>{const{id:t,checked:r}=e.target,a=r?[...c,{allergen_id:parseInt(t)}]:c.filter((e=>e.allergen_id!==parseInt(t)));i(a)},handleSubmit:e=>{e.preventDefault(),f(!0);const t=c.map((e=>({allergen_id:e.allergen_id})));u(c),s&&s(t),l&&l()}}},a=(t,r,a,n)=>{const u=(0,e.useRef)(null),s=(0,e.useRef)(null),[l,o]=(0,e.useState)({cart_id:a}),[c,i]=(0,e.useState)(!1);return(0,e.useEffect)((()=>()=>{o({})}),[]),(0,e.useEffect)((()=>{"idle"===t&&(i(!1),r&&s.current.focus())}),[t,r]),{submitRef:u,inputRef:s,fields:[{label:"First Name",name:"first_name",type:"text",required:!0},{label:"Last Name",name:"last_name",type:"text",required:!0}],data:l,submitting:c,handleChange:e=>{const{id:t,value:r}=e.target;o({...l,[t]:r})},handleSubmit:e=>{e.preventDefault(),i(!0),n(l),u.current.blur()}}};var s=n(149);const l=(t,r,a,n,u,l)=>{const o=(0,e.useRef)(null),c=(0,e.useRef)(null),i=(0,e.useRef)(null),[d,f]=(0,e.useState)({}),[m,p]=(0,e.useState)("OTHER"),[b,h]=(0,e.useState)({}),[g,_]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{if("idle"===r&&(_(!1),a)){i.current&&i.current.reset(),h(a);const e=c.current.querySelectorAll("input, select");e.length&&e[0].focus(),t&&(t.current.scrollTop=0)}}),[t,r,a]),{submitRef:o,formRef:c,recaptchaRef:i,data:d,errors:b,setData:f,setCardType:p,submitting:g,handleSubmit:e=>{e.preventDefault(),h({});const{card:r,errors:a}=(0,s.validateCreditCard)(d,m);if(a)h(a),_(!1),t&&(t.current.scrollTop=0);else if(l)try{const e=i.current.getValue();e?(_(!0),n({...r,token:e},u)):(_(!1),h({form:"Please complete the recaptcha before submitting"}),t&&(t.current.scrollTop=0))}catch(e){_(!1),h({form:"Please complete the recaptcha before submitting"}),t&&(t.current.scrollTop=0)}else _(!0),n(r,u);o.current.blur()}}},o=(t,r,a,n)=>{const u=(0,e.useRef)(null),s=(0,e.useRef)(null),[l,o]=(0,e.useState)(""),[c,i]=(0,e.useState)({}),[d,f]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{"idle"===t&&(f(!1),r&&(i(r),s.current.focus()))}),[t,r]),{submitRef:u,inputRef:s,cardNumber:l,errors:c,submitting:d,handleChange:e=>{o(e.target.value)},handleSubmit:e=>{e.preventDefault(),f(!0);const t=parseInt(l);isNaN(t)?(i({card_number:"Card numbers must be all digits"}),s.current.focus()):(a(t,n),u.current.blur())}}},c=(t,r,a,n,u)=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),[o,c]=(0,e.useState)(""),[i,d]=(0,e.useState)({}),[f,m]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{"idle"===t&&(m(!1),r&&(d(r),l.current.focus()))}),[t,r]),{submitRef:s,inputRef:l,email:o,errors:i,submitting:f,handleChange:e=>{c(e.target.value)},handleSubmit:e=>{e.preventDefault(),m(!0),n(a,o,u),s.current.blur()}}},i=(t,r,a,n,u,s,l)=>{const o=(0,e.useRef)(null),c=(0,e.useRef)(null),i=r[0].customer_card_id,[d,f]=(0,e.useState)({customer_card_id:i}),[m,p]=(0,e.useState)({}),[b,h]=(0,e.useState)(!1),g=r.map((e=>({name:`${e.card_type_name} ending in ${e.last4}`,value:e.customer_card_id})));return(0,e.useEffect)((()=>{"idle"===a&&(h(!1),n&&(n.amount&&n.amount.includes("money")&&(n.amount="Please enter a positive dollar amount"),p(n),c.current.focus()))}),[a,n]),{submitRef:o,inputRef:c,options:g,errors:m,data:d,submitting:b,handleChange:e=>{const{id:t,type:r,value:a,checked:n}=e.target,u="checkbox"===r?n:a;f({...d,[t]:u})},handleSubmit:e=>{e.preventDefault(),h(!0),d.customer_card_id||(d.customer_card_id=i),d.customer_card_id=parseInt(d.customer_card_id),t?u(t.gift_card_id,d,l):s(d,l),o.current.blur()}}},d=(t,r,a,n,u,l,o,c,i,d={},f=[],m=null,p)=>{const b=(0,e.useRef)(null),h=(0,e.useRef)(null),g=(0,e.useRef)(null),_=(0,e.useRef)(null),[S,R]=(0,e.useState)(null),[y,v]=(0,e.useState)(null),[C,w]=(0,e.useState)([p]),[x,E]=(0,e.useState)(!0),[k,q]=(0,e.useState)({}),[F,P]=(0,e.useState)(null),[T,D]=(0,e.useState)([]),[N,j]=(0,e.useState)({}),[O,A]=(0,e.useState)(!1),I=window.location.origin;(0,e.useEffect)((()=>{if("idle"===a)if(A(!1),o({type:"close"}),n){_.current&&_.current.reset(),j(n);const e=g.current.querySelectorAll("input, select");e.length&&e[0].focus(),i&&(i.current.scrollTop=0)}else u&&i&&(i.current.scrollTop=0)}),[a,n,o,i,u]),(0,e.useEffect)((()=>{if(f.length){const e=f.map((e=>({name:`${e.card_type_name} ending in ${e.last4}`,value:e.customer_card_id})));D(e);const t=f.length?{customer_card_id:f[0].customer_card_id}:{};q(t),E(!1)}}),[f]),(0,e.useEffect)((()=>{d&&(v(d.email),R(`${d.first_name} ${d.last_name}`))}),[d]);const $=e=>e.reduce(((e,t)=>{const{amount:r,quantity:a,email:n}=t;return[...e,n&&n.length?t:{amount:r,quantity:a}]}),[]),M=e=>{const r={type:"working",args:{text:"Submitting your purchase..."}};if(m)try{const a=_.current.getValue();if(a){A(!0),o(r);const n=$(C);t({token:a,credit_card:e,name:S,email:y,url:I,gift_cards:n})}else A(!1),j({form:"Please complete the recaptcha before submitting"}),i&&(i.current.scrollTop=0)}catch(e){A(!1),j({form:"Please complete the recaptcha before submitting"}),i&&(i.current.scrollTop=0)}else{A(!0),o(r);const a=$(C);t({credit_card:e,name:S,email:y,url:I,gift_cards:a})}};return{formRef:g,inputRef:h,submitRef:b,recaptchaRef:_,cardType:F,setCardType:P,creditCardOptions:T,handleName:e=>{R(e.target.value)},handleEmail:e=>{v(e.target.value)},handleChange:e=>{const{id:t,value:r}=e.target,[a,n]=t.split("-"),u=C.map(((e,t)=>t===parseInt(n)?{...e,[a]:r}:e));w(u)},handleQuantity:(e,t)=>{const r=t>0?C.map(((r,a)=>a===parseInt(e)?{...r,quantity:t}:r)):C.filter(((t,r)=>r!==e));w(r)},handleAddAnother:()=>{w([...C,p])},handleCreditCard:e=>{const t=parseInt(e.target.value);q({customer_card_id:t})},handleSubmit:e=>{if(e.preventDefault(),S&&y){if(x){const{card:e,errors:t}=(0,s.validateCreditCard)(k,F);t?(j({...t,form:"There are one or more credit card errors below"}),A(!1),i&&(i.current.scrollTop=0)):M(e)}else M(k);b.current.blur()}else j({form:"Both name and email are required"}),h.current&&h.current.focus(),i&&(i.current.scrollTop=0)},handleReset:()=>{w([p]),j({}),r()},name:S,email:y,cards:C,isNewCard:x,creditCard:k,setCreditCard:q,errors:N,submitting:O}},f=(t,r,a,n,u)=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),[o,c]=(0,e.useState)({email:t}),[i,d]=(0,e.useState)({}),[f,m]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{"idle"===r&&(m(!1),a&&(d(a),l.current.focus()))}),[r,a]),{submitRef:s,inputRef:l,data:o,errors:i,submitting:f,handleChange:e=>{const{id:t,type:r,value:a,checked:n}=e.target,u="checkbox"===r?n:a;c({...o,[t]:u})},handleSubmit:e=>{e.preventDefault(),m(!0),n(o,u),s.current.blur()}}},m=(t,r,a,n)=>{const u=(0,e.useRef)(null),s=(0,e.useRef)(null),[l,o]=(0,e.useState)({}),c="pending"===t;return(0,e.useEffect)((()=>{"idle"===t&&r&&s.current.focus()}),[t,r]),{submitRef:u,inputRef:s,data:l,submitting:c,handleChange:e=>{const{id:t,value:r}=e.target;o({...l,[t]:r})},handleSubmit:e=>{e.preventDefault();const{email:t,password:r}=l;a(t,r).then((()=>{n&&n()})),u.current.blur()}}},p=(t,r,a,n,u,s,l=!1)=>{const o=(0,e.useRef)(null),[c,i]=(0,e.useState)({}),[d,f]=(0,e.useState)(!1),m=n||{},p=Object.values(r).every((e=>!e))||l?s.fields:s.fields.filter((e=>e.name.startsWith("arrival")));return(0,e.useEffect)((()=>{"idle"===a&&f(!1)}),[a]),(0,e.useEffect)((()=>{i(r)}),[r]),{submitRef:o,fields:p,data:c,errors:m,submitting:d,handleChange:e=>{const{id:t,type:r,value:a,checked:n}=e.target,u="checkbox"===r?n:a;i({...c,[t]:u})},handleSubmit:e=>{e.preventDefault(),f(!0),u(t,{...c,has_arrived:!0}),o.current.blur()}}},b=(t,r,a,n,u={})=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),{accepts_marketing:o,order_notifications:c}=u,[i,d]=(0,e.useState)({}),[f,m]=(0,e.useState)(!1),p=a?"There are one or more errors below.":null,b=a||{},h=[{label:"First Name",name:"first_name",type:"text",required:!0},{label:"Last Name",name:"last_name",type:"text",required:!0},{label:"Email",name:"email",type:"email",required:!0,autoComplete:"email"},{label:"Phone",name:"phone",type:"tel",required:!0},{label:"Company",name:"company",type:"text"}];return(0,e.useEffect)((()=>{if("idle"===r&&(m(!1),a)){const e=l.current.querySelectorAll("input");e.length&&e[0].focus()}}),[r,a]),(0,e.useEffect)((()=>{d(t)}),[t]),{submitRef:s,formRef:l,accepts_marketing:o,order_notifications:c,data:i,errors:b,submitting:f,fields:h,errMsg:p,handleChange:e=>{const{id:t,type:r,value:a,checked:n}=e.target,u="checkbox"===r?n:a;d({...i,[t]:u})},handleRadio:e=>{const{name:t,value:r}=e.target;d({...i,[t]:r})},handleSubmit:e=>{e.preventDefault(),m(!0);const t=h.reduce(((e,t)=>({...e,[t.name]:i[t.name]})),{});o&&(t.accepts_marketing=i.accepts_marketing),c&&(t.order_notifications=i.order_notifications),n(t),s.current.blur()}}},h=(t,r,a,n,u)=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),[o,c]=(0,e.useState)({}),[i,d]=(0,e.useState)({}),[f,m]=(0,e.useState)(!1);return(0,e.useEffect)((()=>(c({}),d({}),n(),()=>{c({}),d({}),n()})),[n]),(0,e.useEffect)((()=>{"idle"===t&&(m(!1),r&&(d(r),l.current.focus()))}),[t,r]),{submitRef:s,inputRef:l,fields:[{label:"New Password",name:"new_password",type:"password"},{label:"Confirm Password",name:"confirm",type:"password"}],data:o,errors:i,submitting:f,handleChange:e=>{const{id:t,value:r}=e.target;c({...o,[t]:r})},handleSubmit:e=>{e.preventDefault();const{new_password:t,confirm:r}=o;!t||t.length<8?(d({new_password:"Must be at least 8 characters"}),l.current.focus()):t!==r?(d({confirm:"Passwords do not match"}),l.current.focus()):(d({}),m(!0),a(t,u)),s.current.blur()}}},g=(t,r,a,n)=>{const u=(0,e.useRef)(null),s=(0,e.useRef)(null),[l,o]=(0,e.useState)({}),c=r&&r.email?r.email:null;return(0,e.useEffect)((()=>{"idle"===t&&r&&s.current.focus()}),[t,r]),{submitRef:u,inputRef:s,data:l,errMsg:c,handleChange:e=>{const{id:t,value:r}=e.target;o({...l,[t]:r})},handleSubmit:e=>{e.preventDefault();const t=`${window.location.origin}/reset-password`;a(l.email,t).then((()=>{n&&n()})),u.current.blur()}}},_=(t,r,a,n,u={},s={},l=!1)=>{const{displayed:o,required:c}=s||{},i=o&&o.customer.includes("company"),d=c&&c.customer.includes("company"),f=(0,e.useRef)(null),m=(0,e.useRef)(null),{accepts_marketing:p,order_notifications:b}=u,h={accepts_marketing:!!p&&p.default,order_notifications:b?b.default:"NONE"},[g,_]=(0,e.useState)(h),[S,R]=(0,e.useState)({}),[y,v]=(0,e.useState)(!1),C=r?"There are one or more errors below.":null;let w=[{label:"First Name",name:"first_name",type:"text",required:!0},{label:"Last Name",name:"last_name",type:"text",required:!0},{label:"Email",name:"email",type:"email",required:!0,autoComplete:"email"},{label:"Password",name:"password",type:"password",required:!0,autoComplete:"new-password"},{label:"Phone",name:"phone",type:"tel",required:!0}];if(i||d){const e={label:"Company",name:"company",type:"text",required:d};w=[...w,e]}const x=l?w.filter((e=>"password"!==e.name)):w;return(0,e.useEffect)((()=>()=>{_({}),R({})}),[]),(0,e.useEffect)((()=>{if("idle"===t&&(v(!1),r)){R(r);const e=m.current.querySelectorAll("input");e.length&&e[0].focus()}}),[t,r]),{submitRef:f,formRef:m,accepts_marketing:p,order_notifications:b,data:g,errors:S,submitting:y,formfields:x,errMsg:C,handleChange:e=>{const{id:t,type:r,value:a,checked:n}=e.target,u="checkbox"===r?n:a;_({...g,[t]:u})},handleRadio:e=>{const{name:t,value:r}=e.target;_({...g,[t]:r})},handleSubmit:e=>{e.preventDefault(),R({}),v(!0),a(g,n),f.current.blur()}}}})(),u})()})); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("@open-tender/js")):"function"==typeof define&&define.amd?define(["React","@open-tender/js"],t):"object"==typeof exports?exports["@open-tender/hooks"]=t(require("react"),require("@open-tender/js")):e["@open-tender/hooks"]=t(e.React,e["@open-tender/js"])}(self,(function(e,t){return(()=>{"use strict";var r={149:e=>{e.exports=t},798:t=>{t.exports=e}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var u=n[e]={exports:{}};return r[e](u,u.exports,a),u.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var u={};return(()=>{a.r(u),a.d(u,{useAddressForm:()=>t,useAllergenForm:()=>r,useBuilder:()=>_,useCartGuestForm:()=>n,useCreditCardForm:()=>l,useGiftCardAssignForm:()=>o,useGiftCardAssignOtherForm:()=>i,useGiftCardForm:()=>c,useGiftCardsForm:()=>d,useLevelUpForm:()=>m,useLoginForm:()=>f,useOrderFulfillmentForm:()=>p,useProfileForm:()=>h,useResetPasswordForm:()=>b,useSendResetForm:()=>g,useSignUpForm:()=>y});var e=a(798);const t=(t,r,n,a,u)=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),[o,i]=(0,e.useState)(t),[c,d]=(0,e.useState)({}),[m,f]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{"idle"===r&&(f(!1),n&&(d(n),l.current.focus()))}),[r,n]),{submitRef:s,inputRef:l,fields:[{label:"Company",name:"company",type:"text"},{label:"Contact Person",name:"contact",type:"text"},{label:"Contact Phone",name:"phone",type:"tel"},{label:"Description",name:"description",type:"text"},{label:"Notes",name:"notes",type:"textarea"},{label:"Is Default",name:"is_default",type:"checkbox"}],data:o,errors:c,submitting:m,handleChange:e=>{const{id:t,type:r,value:n,checked:a}=e.target,u="checkbox"===r?a:n;i({...o,[t]:u})},handleSubmit:e=>{e.preventDefault(),f(!0);const t={...o};delete t.customer_address_id,delete t.created_at,delete t.last_used_at;const r=o.customer_address_id;a(r,t,u),s.current.blur()}}},r=(t,r,n=!1,a=null,u,s,l)=>{const o=(0,e.useRef)(null),[i,c]=(0,e.useState)([]),[d,m]=(0,e.useState)(!1),f=i.map((e=>e.allergen_id)),p=a?a.detail||a.message:null;return(0,e.useEffect)((()=>{n||(m(!1),o.current&&o.current.blur())}),[n]),(0,e.useEffect)((()=>{c(r||[])}),[r,t]),{submitRef:o,submitting:d,allergenIds:f,formError:p,handleChange:e=>{const{id:t,checked:r}=e.target,n=r?[...i,{allergen_id:parseInt(t)}]:i.filter((e=>e.allergen_id!==parseInt(t)));c(n)},handleSubmit:e=>{e.preventDefault(),m(!0);const t=i.map((e=>({allergen_id:e.allergen_id})));u(i),s&&s(t),l&&l()}}},n=(t,r,n,a)=>{const u=(0,e.useRef)(null),s=(0,e.useRef)(null),[l,o]=(0,e.useState)({cart_id:n}),[i,c]=(0,e.useState)(!1);return(0,e.useEffect)((()=>()=>{o({})}),[]),(0,e.useEffect)((()=>{"idle"===t&&(c(!1),r&&s.current.focus())}),[t,r]),{submitRef:u,inputRef:s,fields:[{label:"First Name",name:"first_name",type:"text",required:!0},{label:"Last Name",name:"last_name",type:"text",required:!0}],data:l,submitting:i,handleChange:e=>{const{id:t,value:r}=e.target;o({...l,[t]:r})},handleSubmit:e=>{e.preventDefault(),c(!0),a(l),u.current.blur()}}};var s=a(149);const l=(t,r,n,a,u,l)=>{const o=(0,e.useRef)(null),i=(0,e.useRef)(null),c=(0,e.useRef)(null),[d,m]=(0,e.useState)({}),[f,p]=(0,e.useState)("OTHER"),[h,b]=(0,e.useState)({}),[g,y]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{if("idle"===r&&(y(!1),n)){c.current&&c.current.reset(),b(n);const e=i.current.querySelectorAll("input, select");e.length&&e[0].focus(),t&&(t.current.scrollTop=0)}}),[t,r,n]),{submitRef:o,formRef:i,recaptchaRef:c,data:d,errors:h,setData:m,setCardType:p,submitting:g,handleSubmit:e=>{e.preventDefault(),b({});const{card:r,errors:n}=(0,s.validateCreditCard)(d,f);if(n)b(n),y(!1),t&&(t.current.scrollTop=0);else if(l)try{const e=c.current.getValue();e?(y(!0),a({...r,token:e},u)):(y(!1),b({form:"Please complete the recaptcha before submitting"}),t&&(t.current.scrollTop=0))}catch(e){y(!1),b({form:"Please complete the recaptcha before submitting"}),t&&(t.current.scrollTop=0)}else y(!0),a(r,u);o.current.blur()}}},o=(t,r,n,a)=>{const u=(0,e.useRef)(null),s=(0,e.useRef)(null),[l,o]=(0,e.useState)(""),[i,c]=(0,e.useState)({}),[d,m]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{"idle"===t&&(m(!1),r&&(c(r),s.current.focus()))}),[t,r]),{submitRef:u,inputRef:s,cardNumber:l,errors:i,submitting:d,handleChange:e=>{o(e.target.value)},handleSubmit:e=>{e.preventDefault(),m(!0);const t=parseInt(l);isNaN(t)?(c({card_number:"Card numbers must be all digits"}),s.current.focus()):(n(t,a),u.current.blur())}}},i=(t,r,n,a,u)=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),[o,i]=(0,e.useState)(""),[c,d]=(0,e.useState)({}),[m,f]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{"idle"===t&&(f(!1),r&&(d(r),l.current.focus()))}),[t,r]),{submitRef:s,inputRef:l,email:o,errors:c,submitting:m,handleChange:e=>{i(e.target.value)},handleSubmit:e=>{e.preventDefault(),f(!0),a(n,o,u),s.current.blur()}}},c=(t,r,n,a,u,s,l)=>{const o=(0,e.useRef)(null),i=(0,e.useRef)(null),c=r[0].customer_card_id,[d,m]=(0,e.useState)({customer_card_id:c}),[f,p]=(0,e.useState)({}),[h,b]=(0,e.useState)(!1),g=r.map((e=>({name:`${e.card_type_name} ending in ${e.last4}`,value:e.customer_card_id})));return(0,e.useEffect)((()=>{"idle"===n&&(b(!1),a&&(a.amount&&a.amount.includes("money")&&(a.amount="Please enter a positive dollar amount"),p(a),i.current.focus()))}),[n,a]),{submitRef:o,inputRef:i,options:g,errors:f,data:d,submitting:h,handleChange:e=>{const{id:t,type:r,value:n,checked:a}=e.target,u="checkbox"===r?a:n;m({...d,[t]:u})},handleSubmit:e=>{e.preventDefault(),b(!0),d.customer_card_id||(d.customer_card_id=c),d.customer_card_id=parseInt(d.customer_card_id),t?u(t.gift_card_id,d,l):s(d,l),o.current.blur()}}},d=(t,r,n,a,u,l,o,i,c,d={},m=[],f=null,p)=>{const h=(0,e.useRef)(null),b=(0,e.useRef)(null),g=(0,e.useRef)(null),y=(0,e.useRef)(null),[_,S]=(0,e.useState)(null),[R,v]=(0,e.useState)(null),[x,C]=(0,e.useState)([p]),[q,w]=(0,e.useState)(!0),[E,k]=(0,e.useState)({}),[P,F]=(0,e.useState)(null),[T,D]=(0,e.useState)([]),[N,O]=(0,e.useState)({}),[M,j]=(0,e.useState)(!1),A=window.location.origin;(0,e.useEffect)((()=>{if("idle"===n)if(j(!1),o({type:"close"}),a){y.current&&y.current.reset(),O(a);const e=g.current.querySelectorAll("input, select");e.length&&e[0].focus(),c&&(c.current.scrollTop=0)}else u&&c&&(c.current.scrollTop=0)}),[n,a,o,c,u]),(0,e.useEffect)((()=>{if(m.length){const e=m.map((e=>({name:`${e.card_type_name} ending in ${e.last4}`,value:e.customer_card_id})));D(e);const t=m.length?{customer_card_id:m[0].customer_card_id}:{};k(t),w(!1)}}),[m]),(0,e.useEffect)((()=>{d&&(v(d.email),S(`${d.first_name} ${d.last_name}`))}),[d]);const I=e=>e.reduce(((e,t)=>{const{amount:r,quantity:n,email:a}=t;return[...e,a&&a.length?t:{amount:r,quantity:n}]}),[]),$=e=>{const r={type:"working",args:{text:"Submitting your purchase..."}};if(f)try{const n=y.current.getValue();if(n){j(!0),o(r);const a=I(x);t({token:n,credit_card:e,name:_,email:R,url:A,gift_cards:a})}else j(!1),O({form:"Please complete the recaptcha before submitting"}),c&&(c.current.scrollTop=0)}catch(e){j(!1),O({form:"Please complete the recaptcha before submitting"}),c&&(c.current.scrollTop=0)}else{j(!0),o(r);const n=I(x);t({credit_card:e,name:_,email:R,url:A,gift_cards:n})}};return{formRef:g,inputRef:b,submitRef:h,recaptchaRef:y,cardType:P,setCardType:F,creditCardOptions:T,handleName:e=>{S(e.target.value)},handleEmail:e=>{v(e.target.value)},handleChange:e=>{const{id:t,value:r}=e.target,[n,a]=t.split("-"),u=x.map(((e,t)=>t===parseInt(a)?{...e,[n]:r}:e));C(u)},handleQuantity:(e,t)=>{const r=t>0?x.map(((r,n)=>n===parseInt(e)?{...r,quantity:t}:r)):x.filter(((t,r)=>r!==e));C(r)},handleAddAnother:()=>{C([...x,p])},handleCreditCard:e=>{const t=parseInt(e.target.value);k({customer_card_id:t})},handleSubmit:e=>{if(e.preventDefault(),_&&R){if(q){const{card:e,errors:t}=(0,s.validateCreditCard)(E,P);t?(O({...t,form:"There are one or more credit card errors below"}),j(!1),c&&(c.current.scrollTop=0)):$(e)}else $(E);h.current.blur()}else O({form:"Both name and email are required"}),b.current&&b.current.focus(),c&&(c.current.scrollTop=0)},handleReset:()=>{C([p]),O({}),r()},name:_,email:R,cards:x,isNewCard:q,creditCard:E,setCreditCard:k,errors:N,submitting:M}},m=(t,r,n,a,u)=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),[o,i]=(0,e.useState)({email:t}),[c,d]=(0,e.useState)({}),[m,f]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{"idle"===r&&(f(!1),n&&(d(n),l.current.focus()))}),[r,n]),{submitRef:s,inputRef:l,data:o,errors:c,submitting:m,handleChange:e=>{const{id:t,type:r,value:n,checked:a}=e.target,u="checkbox"===r?a:n;i({...o,[t]:u})},handleSubmit:e=>{e.preventDefault(),f(!0),a(o,u),s.current.blur()}}},f=(t,r,n,a)=>{const u=(0,e.useRef)(null),s=(0,e.useRef)(null),[l,o]=(0,e.useState)({}),i="pending"===t;return(0,e.useEffect)((()=>{"idle"===t&&r&&s.current.focus()}),[t,r]),{submitRef:u,inputRef:s,data:l,submitting:i,handleChange:e=>{const{id:t,value:r}=e.target;o({...l,[t]:r})},handleSubmit:e=>{e.preventDefault();const{email:t,password:r}=l;n(t,r).then((()=>{a&&a()})),u.current.blur()}}},p=(t,r,n,a,u,s,l=!1)=>{const o=(0,e.useRef)(null),[i,c]=(0,e.useState)({}),[d,m]=(0,e.useState)(!1),f=a||{},p=Object.values(r).every((e=>!e))||l?s.fields:s.fields.filter((e=>e.name.startsWith("arrival")));return(0,e.useEffect)((()=>{"idle"===n&&m(!1)}),[n]),(0,e.useEffect)((()=>{c(r)}),[r]),{submitRef:o,fields:p,data:i,errors:f,submitting:d,handleChange:e=>{const{id:t,type:r,value:n,checked:a}=e.target,u="checkbox"===r?a:n;c({...i,[t]:u})},handleSubmit:e=>{e.preventDefault(),m(!0),u(t,{...i,has_arrived:!0}),o.current.blur()}}},h=(t,r,n,a,u={})=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),{accepts_marketing:o,order_notifications:i}=u,[c,d]=(0,e.useState)({}),[m,f]=(0,e.useState)(!1),p=n?"There are one or more errors below.":null,h=n||{},b=[{label:"First Name",name:"first_name",type:"text",required:!0},{label:"Last Name",name:"last_name",type:"text",required:!0},{label:"Email",name:"email",type:"email",required:!0,autoComplete:"email"},{label:"Phone",name:"phone",type:"tel",required:!0},{label:"Company",name:"company",type:"text"}];return(0,e.useEffect)((()=>{if("idle"===r&&(f(!1),n)){const e=l.current.querySelectorAll("input");e.length&&e[0].focus()}}),[r,n]),(0,e.useEffect)((()=>{d(t)}),[t]),{submitRef:s,formRef:l,accepts_marketing:o,order_notifications:i,data:c,errors:h,submitting:m,fields:b,errMsg:p,handleChange:e=>{const{id:t,type:r,value:n,checked:a}=e.target,u="checkbox"===r?a:n;d({...c,[t]:u})},handleRadio:e=>{const{name:t,value:r}=e.target;d({...c,[t]:r})},handleSubmit:e=>{e.preventDefault(),f(!0);const t=b.reduce(((e,t)=>({...e,[t.name]:c[t.name]})),{});o&&(t.accepts_marketing=c.accepts_marketing),i&&(t.order_notifications=c.order_notifications),a(t),s.current.blur()}}},b=(t,r,n,a,u)=>{const s=(0,e.useRef)(null),l=(0,e.useRef)(null),[o,i]=(0,e.useState)({}),[c,d]=(0,e.useState)({}),[m,f]=(0,e.useState)(!1);return(0,e.useEffect)((()=>(i({}),d({}),a(),()=>{i({}),d({}),a()})),[a]),(0,e.useEffect)((()=>{"idle"===t&&(f(!1),r&&(d(r),l.current.focus()))}),[t,r]),{submitRef:s,inputRef:l,fields:[{label:"New Password",name:"new_password",type:"password"},{label:"Confirm Password",name:"confirm",type:"password"}],data:o,errors:c,submitting:m,handleChange:e=>{const{id:t,value:r}=e.target;i({...o,[t]:r})},handleSubmit:e=>{e.preventDefault();const{new_password:t,confirm:r}=o;!t||t.length<8?(d({new_password:"Must be at least 8 characters"}),l.current.focus()):t!==r?(d({confirm:"Passwords do not match"}),l.current.focus()):(d({}),f(!0),n(t,u)),s.current.blur()}}},g=(t,r,n,a)=>{const u=(0,e.useRef)(null),s=(0,e.useRef)(null),[l,o]=(0,e.useState)({}),i=r&&r.email?r.email:null;return(0,e.useEffect)((()=>{"idle"===t&&r&&s.current.focus()}),[t,r]),{submitRef:u,inputRef:s,data:l,errMsg:i,handleChange:e=>{const{id:t,value:r}=e.target;o({...l,[t]:r})},handleSubmit:e=>{e.preventDefault();const t=`${window.location.origin}/reset-password`;n(l.email,t).then((()=>{a&&a()})),u.current.blur()}}},y=(t,r,n,a,u={},s={},l=!1)=>{const{displayed:o,required:i}=s||{},c=o&&o.customer.includes("company"),d=i&&i.customer.includes("company"),m=(0,e.useRef)(null),f=(0,e.useRef)(null),{accepts_marketing:p,order_notifications:h}=u,b={accepts_marketing:!!p&&p.default,order_notifications:h?h.default:"NONE"},[g,y]=(0,e.useState)(b),[_,S]=(0,e.useState)({}),[R,v]=(0,e.useState)(!1),x=r?"There are one or more errors below.":null;let C=[{label:"First Name",name:"first_name",type:"text",required:!0},{label:"Last Name",name:"last_name",type:"text",required:!0},{label:"Email",name:"email",type:"email",required:!0,autoComplete:"email"},{label:"Password",name:"password",type:"password",required:!0,autoComplete:"new-password"},{label:"Phone",name:"phone",type:"tel",required:!0}];if(c||d){const e={label:"Company",name:"company",type:"text",required:d};C=[...C,e]}const q=l?C.filter((e=>"password"!==e.name)):C;return(0,e.useEffect)((()=>()=>{y({}),S({})}),[]),(0,e.useEffect)((()=>{if("idle"===t&&(v(!1),r)){S(r);const e=f.current.querySelectorAll("input");e.length&&e[0].focus()}}),[t,r]),{submitRef:m,formRef:f,accepts_marketing:p,order_notifications:h,data:g,errors:_,submitting:R,formfields:q,errMsg:x,handleChange:e=>{const{id:t,type:r,value:n,checked:a}=e.target,u="checkbox"===r?a:n;y({...g,[t]:u})},handleRadio:e=>{const{name:t,value:r}=e.target;y({...g,[t]:r})},handleSubmit:e=>{e.preventDefault(),S({}),v(!0),n(g,a),m.current.blur()}}},_=(t,r,n)=>{const a=void 0!==t.index?t:(0,s.makeOrderItem)(t,null,r,null,n),[u,l]=(0,e.useState)(a);return{item:u,increment:()=>{const e=u.max?Math.min(u.quantity+u.increment,u.max):u.quantity+u.increment;l((0,s.calcPrices)({...u,quantity:e}))},decrement:()=>{const e=Math.max(u.quantity-u.increment,u.min);l((0,s.calcPrices)({...u,quantity:e}))},setQuantity:e=>{l((0,s.calcPrices)({...u,quantity:e}))},setMadeFor:e=>{l({...u,madeFor:e})},setNotes:e=>{l({...u,notes:e})},toggleOption:(e,t)=>{const r=u.groups.map((r=>{if(r.id===e){const e=r.options.map((e=>{const r=e.id===t?1:0;return{...e,quantity:r}}));return{...r,options:e}}return r}));l((0,s.calcPrices)({...u,groups:r}))},incrementOption:(e,t)=>{const r=u.groups.map((r=>{if(r.id===e){const e=r.options.filter((e=>e.id!==t)).reduce(((e,t)=>e+t.quantity),0);if(0!==r.max&&e>=r.max)return r;const n=r.options.map((n=>{if(n.id===t){let t=n.quantity+n.increment;const a=[t];return 0!==n.max&&a.push(n.max),0!==r.max&&a.push(r.max-e),t=Math.min(...a),{...n,quantity:t}}return n}));return{...r,options:n}}return r}));l((0,s.calcPrices)({...u,groups:r}))},decrementOption:(e,t)=>{const r=u.groups.map((r=>{if(r.id===e){const e=r.options.map((e=>{if(e.id===t){const t=Math.max(e.quantity-e.increment,0);return{...e,quantity:t}}return e}));return{...r,options:e}}return r}));l((0,s.calcPrices)({...u,groups:r}))},setOptionQuantity:(e,t,r)=>{const n=u.groups.map((n=>{if(n.id===e){const e=n.options.filter((e=>e.id!==t)).reduce(((e,t)=>e+t.quantity),0);if(0!==n.max&&e>=n.max)return n;const a=n.options.map((a=>{if(a.id===t){if(""===r)return{...a,quantity:r};{const t=[r];return 0!==a.max&&t.push(a.max),0!==n.max&&t.push(n.max-e),r=Math.min(...t),r=Math.max(r,a.min),{...a,quantity:r}}}return a}));return{...n,options:a}}return n}));l((0,s.calcPrices)({...u,groups:n}))}}}})(),u})()})); |
{ | ||
"name": "@open-tender/hooks", | ||
"version": "0.1.3", | ||
"version": "0.1.4", | ||
"description": "A hook library for use with Open Tender apps", | ||
@@ -30,3 +30,5 @@ "homepage": "https://github.com/open-tender/open-tender-hooks", | ||
"@open-tender/js": "^1.7.0", | ||
"react": "^17.0.2" | ||
"@open-tender/redux": "^2.2.1", | ||
"react": "^17.0.2", | ||
"react-redux": "^7.2.4" | ||
}, | ||
@@ -33,0 +35,0 @@ "devDependencies": { |
Sorry, the diff of this file is not supported yet
96731
4