@anker-in/campaign-ui 0.5.0-beta.2 → 0.5.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var S=(o,e)=>{for(var t in e)p(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of y(e))!C.call(o,s)&&s!==t&&p(o,s,{get:()=>e[s],enumerable:!(n=g(e,s))||n.enumerable});return o};var w=o=>m(p({},"__esModule",{value:!0}),o);var x={};S(x,{default:()=>b});module.exports=w(x);var a=require("react"),d=require("@anker-in/lib");function E({shopifyStoreDomain:o}){const{locale:e=""}=(0,d.useHeadlessContext)(),[t,n]=(0,a.useState)(!1),[s,u]=(0,a.useState)([]);return(0,a.useEffect)(()=>{(async()=>{n(!0);try{const f=await(await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${o}`,{headers:{"current-language":e}})).json();let i=[];const l=new Set;(f?.data?.data||f?.data||[]).forEach(c=>{c.countries.forEach(r=>{l.has(r.code)||(l.add(r.code),i.push(r))})}),i=i.sort((c,r)=>c.code.localeCompare(r.code)),console.log("fetch shipsToCountries",i),u(i)}catch(h){u([]),console.error(h)}finally{n(!1)}})()},[e]),{isLoading:t,countries:s}}var b=E;
1
+ "use strict";var a=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var g=(t,e)=>{for(var s in e)a(t,s,{get:e[s],enumerable:!0})},d=(t,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of C(e))!y.call(t,o)&&o!==s&&a(t,o,{get:()=>e[o],enumerable:!(n=m(e,o))||n.enumerable});return t};var S=t=>d(a({},"__esModule",{value:!0}),t);var D={};g(D,{default:()=>x});module.exports=S(D);var r=require("react"),f=require("@anker-in/lib");function w({shopifyStoreDomain:t}){const{locale:e=""}=(0,f.useHeadlessContext)(),[s,n]=(0,r.useState)(!1),[o,c]=(0,r.useState)([]);return(0,r.useEffect)(()=>{(async()=>{n(!0);try{const p=await(await fetch("/api/multipass/account/countries",{headers:{"current-language":e}})).json();let i=p?.data||p||[];i=i.sort((l,h)=>l.name.localeCompare(h.name)),console.log("fetch shipsToCountries",i),c(i)}catch(u){c([]),console.error(u)}finally{n(!1)}})()},[e]),{isLoading:s,countries:o}}var x=w;
2
2
  //# sourceMappingURL=useCountries.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useCountries.ts"],
4
- "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`, {\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n // \u56FD\u5BB6\u8FC7\u6EE4\n let shipsToCountries: ShippingCountry[] = []\n const countrySet = new Set()\n const shippingZones = res?.data?.data || res?.data || []\n shippingZones.forEach((shippingZoneItem: ShippingZone) => {\n shippingZoneItem.countries.forEach(shippingZoneCountryItem => {\n if (!countrySet.has(shippingZoneCountryItem.code)) {\n countrySet.add(shippingZoneCountryItem.code)\n shipsToCountries.push(shippingZoneCountryItem)\n }\n })\n })\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.code.localeCompare(b.code)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,iBAEpCC,EAAmC,yBAGnC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,KAAI,sBAAmB,EAErC,CAACC,EAAWC,CAAU,KAAI,YAAS,EAAK,EACxC,CAACC,EAAWC,CAAY,KAAI,YAA4B,CAAC,CAAC,EAEhE,sBAAU,IAAM,EACS,SAAY,CACjCF,EAAW,EAAI,EACf,GAAI,CAMF,MAAMG,EAAW,MALA,MAAM,MAAM,4DAA4DN,CAAkB,GAAI,CAC7G,QAAS,CACP,mBAAoBC,CACtB,CACF,CAAC,GAC+B,KAAK,EAGrC,IAAIM,EAAsC,CAAC,EAC3C,MAAMC,EAAa,IAAI,KACDF,GAAK,MAAM,MAAQA,GAAK,MAAQ,CAAC,GACzC,QAASG,GAAmC,CACxDA,EAAiB,UAAU,QAAQC,GAA2B,CACvDF,EAAW,IAAIE,EAAwB,IAAI,IAC9CF,EAAW,IAAIE,EAAwB,IAAI,EAC3CH,EAAiB,KAAKG,CAAuB,EAEjD,CAAC,CACH,CAAC,EAGDH,EAAmBA,EAAiB,KAAK,CAACI,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BL,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASM,EAAG,CACVR,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMQ,CAAC,CACjB,QAAE,CACAV,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOT,EAAQI",
6
- "names": ["useCountries_exports", "__export", "useCountries_default", "__toCommonJS", "import_react", "import_lib", "useCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "countrySet", "shippingZoneItem", "shippingZoneCountryItem", "a", "b", "e"]
4
+ "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch('/api/multipass/account/countries', {\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n // \u65B0\u63A5\u53E3\u76F4\u63A5\u8FD4\u56DE\u56FD\u5BB6\u6570\u7EC4 [{ id, name, code }]\n let shipsToCountries: ShippingCountry[] = res?.data || res || []\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,iBAEpCC,EAAmC,yBAGnC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,KAAI,sBAAmB,EAErC,CAACC,EAAWC,CAAU,KAAI,YAAS,EAAK,EACxC,CAACC,EAAWC,CAAY,KAAI,YAA4B,CAAC,CAAC,EAEhE,sBAAU,IAAM,EACS,SAAY,CACjCF,EAAW,EAAI,EACf,GAAI,CAMF,MAAMG,EAAW,MALA,MAAM,MAAM,mCAAoC,CAC/D,QAAS,CACP,mBAAoBL,CACtB,CACF,CAAC,GAC+B,KAAK,EAGrC,IAAIM,EAAsCD,GAAK,MAAQA,GAAO,CAAC,EAG/DC,EAAmBA,EAAiB,KAAK,CAACC,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BF,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASG,EAAG,CACVL,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMK,CAAC,CACjB,QAAE,CACAP,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOT,EAAQI",
6
+ "names": ["useCountries_exports", "__export", "useCountries_default", "__toCommonJS", "import_react", "import_lib", "useCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "a", "b", "e"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var T=Object.create;var x=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var K=(l,o)=>{for(var r in o)x(l,r,{get:o[r],enumerable:!0})},D=(l,o,r,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of G(o))!J.call(l,i)&&i!==r&&x(l,i,{get:()=>o[i],enumerable:!(a=U(o,i))||a.enumerable});return l};var Q=(l,o,r)=>(r=l!=null?T(H(l)):{},D(o||!l||!l.__esModule?x(r,"default",{value:l,enumerable:!0}):r,l)),R=l=>D(x({},"__esModule",{value:!0}),l);var W={};K(W,{CompleteProfileModal:()=>V});module.exports=R(W);var e=require("react/jsx-runtime"),s=require("react"),n=require("@anker-in/headless-ui"),C=require("@anker-in/lib"),L=require("../../../credits/modal/ModalContainer"),S=require("./hooks/useUpdateProfile"),z=Q(require("../../../credits/context/hooks/useCountries")),F=require("../../context/provider");function V({isOpen:l,onClose:o,onSuccess:r,copy:a,shopifyStoreDomain:i=""}){const{profile:d,fetchCreditInfo:g,alpcConfig:k}=(0,F.useMemberPopupContext)(),{locale:O}=k,[m,P]=(0,s.useState)(""),[p,w]=(0,s.useState)(""),[f,y]=(0,s.useState)(""),[u,_]=(0,s.useState)(""),[b,E]=(0,s.useState)(""),[c,N]=(0,s.useState)(""),[v,h]=(0,s.useState)(""),{updateProfile:B,isLoading:M}=(0,S.useUpdateProfile)({locale:O,appName:k.appName}),{countries:A}=(0,z.default)({shopifyStoreDomain:i});(0,s.useEffect)(()=>{d&&(P(d.first_name??""),w(d.last_name??""),y(d.phone_number??""),_(d.dob??""),E(d.country?.id??""))},[d]);const q=(0,s.useCallback)(()=>{let t=!1;return m.trim()?N(""):(N(a.required),t=!0),p.trim()?h(""):(h(a.required),t=!0),t},[m,p,a.required]),I=(0,s.useCallback)(async()=>{if(q())return;await B({first_name:m.trim(),last_name:p.trim(),phone_number:f,country:b,dob:u})&&(g(d?.user_id),r?.(),o())},[q,B,m,p,f,b,u,g,d,r,o]);return(0,e.jsx)(L.CreditsModalContainer,{isOpen:l,onClose:o,title:a.title,titleClassName:"!h-auto !border-b-0 !pb-0",className:"w-[540px] md:h-auto",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",children:(0,e.jsxs)("div",{className:"flex flex-col gap-[20px]",children:[a.subtitle&&(0,e.jsx)(n.Text,{className:"text-[14px] text-[#1d1d1f]",html:a.subtitle}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.email}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",value:d?.email??"",disabled:!0})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.firstName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,C.classNames)("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",c?"border-[#f84d4f]":"border-[#d8d8d8]"),value:m,onChange:t=>{P(t.target.value),N("")}}),c&&(0,e.jsx)(n.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:c})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.lastName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,C.classNames)("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",v?"border-[#f84d4f]":"border-[#d8d8d8]"),value:p,onChange:t=>{w(t.target.value),h("")}}),v&&(0,e.jsx)(n.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:v})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.birthday}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",type:"date",value:u,onChange:t=>_(t.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.phone}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:f,onChange:t=>y(t.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.country}),(0,e.jsxs)("select",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:b,onChange:t=>E(t.target.value),children:[(0,e.jsx)("option",{value:""}),A.map(t=>(0,e.jsx)("option",{value:t.id,children:t.name},t.id))]})]}),(0,e.jsxs)("div",{className:"flex gap-[12px]",children:[(0,e.jsx)(n.Button,{variant:"secondary",size:"lg",className:"flex-1",onClick:o,disabled:M,children:a.cancel}),(0,e.jsx)(n.Button,{variant:"primary",size:"lg",className:"flex-1",loading:M,onClick:I,children:a.save})]})]})})}
1
+ "use strict";var T=Object.create;var u=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var K=(l,s)=>{for(var r in s)u(l,r,{get:s[r],enumerable:!0})},L=(l,s,r,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of G(s))!J.call(l,i)&&i!==r&&u(l,i,{get:()=>s[i],enumerable:!(a=U(s,i))||a.enumerable});return l};var Q=(l,s,r)=>(r=l!=null?T(H(l)):{},L(s||!l||!l.__esModule?u(r,"default",{value:l,enumerable:!0}):r,l)),R=l=>L(u({},"__esModule",{value:!0}),l);var W={};K(W,{CompleteProfileModal:()=>V});module.exports=R(W);var e=require("react/jsx-runtime"),o=require("react"),n=require("@anker-in/headless-ui"),k=require("@anker-in/lib"),S=require("../../../credits/modal/ModalContainer"),z=require("./hooks/useUpdateProfile"),F=Q(require("../../../credits/context/hooks/useCountries")),O=require("../../context/provider");function V({isOpen:l,onClose:s,onSuccess:r,copy:a,shopifyStoreDomain:i=""}){const{profile:d,fetchCreditInfo:P,alpcConfig:w}=(0,O.useMemberPopupContext)(),{locale:A}=w,[m,y]=(0,o.useState)(""),[p,_]=(0,o.useState)(""),[b,E]=(0,o.useState)(""),[c,B]=(0,o.useState)(""),[x,N]=(0,o.useState)(""),[v,h]=(0,o.useState)(""),[C,g]=(0,o.useState)(""),{updateProfile:M,isLoading:q}=(0,z.useUpdateProfile)({locale:A,appName:w.appName}),{countries:f}=(0,F.default)({shopifyStoreDomain:i});(0,o.useEffect)(()=>{d&&(y(d.first_name??""),_(d.last_name??""),E(d.phone_number??""),B(d.dob??""),N(d.country?.id??""))},[d]),(0,o.useEffect)(()=>{f.length>0&&!x&&N(f[0].id)},[f]);const D=(0,o.useCallback)(()=>{let t=!1;return m.trim()?h(""):(h(a.required),t=!0),p.trim()?g(""):(g(a.required),t=!0),t},[m,p,a.required]),I=(0,o.useCallback)(async()=>{if(D())return;await M({first_name:m.trim(),last_name:p.trim(),phone_number:b,country:x,dob:c})&&(P(d?.user_id),r?.(),s())},[D,M,m,p,b,x,c,P,d,r,s]);return(0,e.jsx)(S.CreditsModalContainer,{isOpen:l,onClose:s,title:a.title,titleClassName:"!h-auto !border-b-0 !pb-0",className:"w-[540px] md:h-auto",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",children:(0,e.jsxs)("div",{className:"flex flex-col gap-[20px]",children:[a.subtitle&&(0,e.jsx)(n.Text,{className:"text-[14px] text-[#1d1d1f]",html:a.subtitle}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.email}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",value:d?.email??"",disabled:!0})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.firstName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,k.classNames)("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",v?"border-[#f84d4f]":"border-[#d8d8d8]"),value:m,onChange:t=>{y(t.target.value),h("")}}),v&&(0,e.jsx)(n.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:v})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.lastName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,k.classNames)("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",C?"border-[#f84d4f]":"border-[#d8d8d8]"),value:p,onChange:t=>{_(t.target.value),g("")}}),C&&(0,e.jsx)(n.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:C})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.birthday}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",type:"date",value:c,onChange:t=>B(t.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.phone}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:b,onChange:t=>E(t.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.country}),(0,e.jsx)("select",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:x,onChange:t=>N(t.target.value),children:f.map(t=>(0,e.jsx)("option",{value:t.id,children:t.name},t.id))})]}),(0,e.jsxs)("div",{className:"flex gap-[12px]",children:[(0,e.jsx)(n.Button,{variant:"secondary",size:"lg",className:"flex-1",onClick:s,disabled:q,children:a.cancel}),(0,e.jsx)(n.Button,{variant:"primary",size:"lg",className:"flex-1",loading:q,onClick:I,children:a.save})]})]})})}
2
2
  //# sourceMappingURL=CompleteProfileModal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/CompleteProfileModal.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn } from '@anker-in/lib'\nimport { CreditsModalContainer } from '../../../credits/modal/ModalContainer'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\n\ntype Props = {\n isOpen: boolean\n onClose: () => void\n onSuccess?: () => void\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n}\n\nexport function CompleteProfileModal({ isOpen, onClose, onSuccess, copy, shopifyStoreDomain = '' }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <CreditsModalContainer\n isOpen={isOpen}\n onClose={onClose}\n title={copy.title}\n titleClassName=\"!h-auto !border-b-0 !pb-0\"\n className=\"w-[540px] md:h-auto\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n >\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.email}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]\"\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.country}</label>\n <select\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n <option value=\"\" />\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n </CreditsModalContainer>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn } from '@anker-in/lib'\nimport { CreditsModalContainer } from '../../../credits/modal/ModalContainer'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\n\ntype Props = {\n isOpen: boolean\n onClose: () => void\n onSuccess?: () => void\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n}\n\nexport function CompleteProfileModal({ isOpen, onClose, onSuccess, copy, shopifyStoreDomain = '' }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n useEffect(() => {\n if (countries.length > 0 && !country) {\n setCountry(countries[0].id)\n }\n }, [countries])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <CreditsModalContainer\n isOpen={isOpen}\n onClose={onClose}\n title={copy.title}\n titleClassName=\"!h-auto !border-b-0 !pb-0\"\n className=\"w-[540px] md:h-auto\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n >\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.email}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]\"\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.country}</label>\n <select\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n </CreditsModalContainer>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["CompleteProfileModal_exports", "__export", "CompleteProfileModal", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_ModalContainer", "import_useUpdateProfile", "import_useCountries", "import_provider", "isOpen", "onClose", "onSuccess", "copy", "shopifyStoreDomain", "profile", "fetchCreditInfo", "alpcConfig", "locale", "firstName", "setFirstName", "lastName", "setLastName", "phone", "setPhone", "birthDay", "setBirthDay", "country", "setCountry", "firstNameError", "setFirstNameError", "lastNameError", "setLastNameError", "updateProfile", "isLoading", "countries", "useCountries", "validate", "hasError", "handleSubmit", "cn", "e", "c"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var O=Object.create;var u=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var Q=(t,l)=>{for(var n in l)u(t,n,{get:l[n],enumerable:!0})},q=(t,l,n,p)=>{if(l&&typeof l=="object"||typeof l=="function")for(let o of G(l))!K.call(t,o)&&o!==n&&u(t,o,{get:()=>l[o],enumerable:!(p=T(l,o))||p.enumerable});return t};var V=(t,l,n)=>(n=t!=null?O(J(t)):{},q(l||!t||!t.__esModule?u(n,"default",{value:t,enumerable:!0}):n,t)),W=t=>q(u({},"__esModule",{value:!0}),t);var X={};Q(X,{default:()=>U});module.exports=W(X);var e=require("react/jsx-runtime"),r=require("react"),d=require("@anker-in/headless-ui"),s=require("@anker-in/lib"),L=require("./hooks/useUpdateProfile"),z=V(require("../../../credits/context/hooks/useCountries")),F=require("../../context/provider"),R=require("../../../../constants");function U({copy:t,shopifyStoreDomain:l="",onClose:n,onSuccess:p}){const{profile:o,fetchCreditInfo:C,alpcConfig:k}=(0,F.useMemberPopupContext)(),{locale:A}=k,{brand:H}=(0,s.useHeadlessContext)(),i=R.ROUNDED_BRANDS.includes(H),[x,P]=(0,r.useState)(""),[m,_]=(0,r.useState)(""),[f,w]=(0,r.useState)(""),[c,y]=(0,r.useState)(""),[b,E]=(0,r.useState)(""),[N,v]=(0,r.useState)(""),[h,g]=(0,r.useState)(""),{updateProfile:D,isLoading:B}=(0,L.useUpdateProfile)({locale:A,appName:k.appName}),{countries:I}=(0,z.default)({shopifyStoreDomain:l});(0,r.useEffect)(()=>{o&&(P(o.first_name??""),_(o.last_name??""),w(o.phone_number??""),y(o.dob??""),E(o.country?.id??""))},[o]);const S=(0,r.useCallback)(()=>{let a=!1;return x.trim()?v(""):(v(t.required),a=!0),m.trim()?g(""):(g(t.required),a=!0),a},[x,m,t.required]),M=(0,r.useCallback)(async()=>{if(S())return;await D({first_name:x.trim(),last_name:m.trim(),phone_number:f,country:b,dob:c})&&(C(o?.user_id),p?.(),n())},[S,D,x,m,f,b,c,C,o,p,n]);return(0,e.jsxs)("div",{className:"flex flex-col gap-[20px]",children:[t.subtitle&&(0,e.jsx)(d.Text,{className:"text-[14px] text-[#1d1d1f]",html:t.subtitle}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:t.email}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",i?"rounded-[4px]":"rounded-none"),value:o?.email??"",disabled:!0})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:[t.firstName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none",N?"border-[#f84d4f]":"border-[#d8d8d8]",i?"rounded-[4px]":"rounded-none"),value:x,onChange:a=>{P(a.target.value),v("")}}),N&&(0,e.jsx)(d.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:N})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:[t.lastName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none",h?"border-[#f84d4f]":"border-[#d8d8d8]",i?"rounded-[4px]":"rounded-none"),value:m,onChange:a=>{_(a.target.value),g("")}}),h&&(0,e.jsx)(d.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:h})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:t.birthday}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",i?"rounded-[4px]":"rounded-none"),type:"date",value:c,onChange:a=>y(a.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:t.phone}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",i?"rounded-[4px]":"rounded-none"),value:f,onChange:a=>w(a.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:t.country}),(0,e.jsxs)("select",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",i?"rounded-[4px]":"rounded-none"),value:b,onChange:a=>E(a.target.value),children:[(0,e.jsx)("option",{value:""}),I.map(a=>(0,e.jsx)("option",{value:a.id,children:a.name},a.id))]})]}),(0,e.jsxs)("div",{className:"flex gap-[12px]",children:[(0,e.jsx)(d.Button,{variant:"secondary",size:"lg",className:"flex-1",onClick:n,disabled:B,children:t.cancel}),(0,e.jsx)(d.Button,{variant:"primary",size:"lg",className:"flex-1",loading:B,onClick:M,children:t.save})]})]})}
1
+ "use strict";var O=Object.create;var c=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var Q=(t,r)=>{for(var n in r)c(t,n,{get:r[n],enumerable:!0})},L=(t,r,n,p)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of G(r))!K.call(t,o)&&o!==n&&c(t,o,{get:()=>r[o],enumerable:!(p=T(r,o))||p.enumerable});return t};var V=(t,r,n)=>(n=t!=null?O(J(t)):{},L(r||!t||!t.__esModule?c(n,"default",{value:t,enumerable:!0}):n,t)),W=t=>L(c({},"__esModule",{value:!0}),t);var X={};Q(X,{default:()=>A});module.exports=W(X);var e=require("react/jsx-runtime"),l=require("react"),d=require("@anker-in/headless-ui"),s=require("@anker-in/lib"),z=require("./hooks/useUpdateProfile"),F=V(require("../../../credits/context/hooks/useCountries")),R=require("../../context/provider"),U=require("../../../../constants");function A({copy:t,shopifyStoreDomain:r="",onClose:n,onSuccess:p}){const{profile:o,fetchCreditInfo:P,alpcConfig:_}=(0,R.useMemberPopupContext)(),{locale:H}=_,{brand:I}=(0,s.useHeadlessContext)(),i=U.ROUNDED_BRANDS.includes(I),[x,w]=(0,l.useState)(""),[m,y]=(0,l.useState)(""),[b,E]=(0,l.useState)(""),[N,D]=(0,l.useState)(""),[u,v]=(0,l.useState)(""),[h,g]=(0,l.useState)(""),[C,k]=(0,l.useState)(""),{updateProfile:B,isLoading:S}=(0,z.useUpdateProfile)({locale:H,appName:_.appName}),{countries:f}=(0,F.default)({shopifyStoreDomain:r});(0,l.useEffect)(()=>{o&&(w(o.first_name??""),y(o.last_name??""),E(o.phone_number??""),D(o.dob??""),v(o.country?.id??""))},[o]),(0,l.useEffect)(()=>{f.length>0&&!u&&v(f[0].id)},[f]);const q=(0,l.useCallback)(()=>{let a=!1;return x.trim()?g(""):(g(t.required),a=!0),m.trim()?k(""):(k(t.required),a=!0),a},[x,m,t.required]),M=(0,l.useCallback)(async()=>{if(q())return;await B({first_name:x.trim(),last_name:m.trim(),phone_number:b,country:u,dob:N})&&(P(o?.user_id),p?.(),n())},[q,B,x,m,b,u,N,P,o,p,n]);return(0,e.jsxs)("div",{className:"flex flex-col gap-[20px]",children:[t.subtitle&&(0,e.jsx)(d.Text,{className:"text-[14px] text-[#1d1d1f]",html:t.subtitle}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:t.email}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",i?"rounded-[4px]":"rounded-none"),value:o?.email??"",disabled:!0})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:[t.firstName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none",h?"border-[#f84d4f]":"border-[#d8d8d8]",i?"rounded-[4px]":"rounded-none"),value:x,onChange:a=>{w(a.target.value),g("")}}),h&&(0,e.jsx)(d.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:h})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:[t.lastName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none",C?"border-[#f84d4f]":"border-[#d8d8d8]",i?"rounded-[4px]":"rounded-none"),value:m,onChange:a=>{y(a.target.value),k("")}}),C&&(0,e.jsx)(d.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:C})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:t.birthday}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",i?"rounded-[4px]":"rounded-none"),type:"date",value:N,onChange:a=>D(a.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:t.phone}),(0,e.jsx)("input",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",i?"rounded-[4px]":"rounded-none"),value:b,onChange:a=>E(a.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:t.country}),(0,e.jsx)("select",{className:(0,s.classNames)("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",i?"rounded-[4px]":"rounded-none"),value:u,onChange:a=>v(a.target.value),children:f.map(a=>(0,e.jsx)("option",{value:a.id,children:a.name},a.id))})]}),(0,e.jsxs)("div",{className:"flex gap-[12px]",children:[(0,e.jsx)(d.Button,{variant:"secondary",size:"lg",className:"flex-1",onClick:n,disabled:S,children:t.cancel}),(0,e.jsx)(d.Button,{variant:"primary",size:"lg",className:"flex-1",loading:S,onClick:M,children:t.save})]})]})}
2
2
  //# sourceMappingURL=CompleteProfilePanel.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n onClose: () => void\n onSuccess?: () => void\n}\n\nexport default function CompleteProfilePanel({ copy, shopifyStoreDomain = '', onClose, onSuccess }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.email}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.country}</label>\n <select\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n <option value=\"\" />\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n onClose: () => void\n onSuccess?: () => void\n}\n\nexport default function CompleteProfilePanel({ copy, shopifyStoreDomain = '', onClose, onSuccess }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n useEffect(() => {\n if (countries.length > 0 && !country) {\n setCountry(countries[0].id)\n }\n }, [countries])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.email}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.country}</label>\n <select\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["CompleteProfilePanel_exports", "__export", "CompleteProfilePanel", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_useUpdateProfile", "import_useCountries", "import_provider", "import_constants", "copy", "shopifyStoreDomain", "onClose", "onSuccess", "profile", "fetchCreditInfo", "alpcConfig", "locale", "brand", "rounded", "firstName", "setFirstName", "lastName", "setLastName", "phone", "setPhone", "birthDay", "setBirthDay", "country", "setCountry", "firstNameError", "setFirstNameError", "lastNameError", "setLastNameError", "updateProfile", "isLoading", "countries", "useCountries", "validate", "hasError", "handleSubmit", "cn", "e", "c"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useEffect as l,useState as p}from"react";import{useHeadlessContext as d}from"@anker-in/lib";function g({shopifyStoreDomain:u}){const{locale:t=""}=d(),[h,n]=p(!1),[f,i]=p([]);return l(()=>{(async()=>{n(!0);try{const a=await(await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${u}`,{headers:{"current-language":t}})).json();let e=[];const c=new Set;(a?.data?.data||a?.data||[]).forEach(s=>{s.countries.forEach(o=>{c.has(o.code)||(c.add(o.code),e.push(o))})}),e=e.sort((s,o)=>s.code.localeCompare(o.code)),console.log("fetch shipsToCountries",e),i(e)}catch(r){i([]),console.error(r)}finally{n(!1)}})()},[t]),{isLoading:h,countries:f}}var E=g;export{E as default};
1
+ import{useEffect as f,useState as i}from"react";import{useHeadlessContext as l}from"@anker-in/lib";function h({shopifyStoreDomain:m}){const{locale:t=""}=l(),[a,o]=i(!1),[c,s]=i([]);return f(()=>{(async()=>{o(!0);try{const r=await(await fetch("/api/multipass/account/countries",{headers:{"current-language":t}})).json();let e=r?.data||r||[];e=e.sort((u,p)=>u.name.localeCompare(p.name)),console.log("fetch shipsToCountries",e),s(e)}catch(n){s([]),console.error(n)}finally{o(!1)}})()},[t]),{isLoading:a,countries:c}}var S=h;export{S as default};
2
2
  //# sourceMappingURL=useCountries.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useCountries.ts"],
4
- "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`, {\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n // \u56FD\u5BB6\u8FC7\u6EE4\n let shipsToCountries: ShippingCountry[] = []\n const countrySet = new Set()\n const shippingZones = res?.data?.data || res?.data || []\n shippingZones.forEach((shippingZoneItem: ShippingZone) => {\n shippingZoneItem.countries.forEach(shippingZoneCountryItem => {\n if (!countrySet.has(shippingZoneCountryItem.code)) {\n countrySet.add(shippingZoneCountryItem.code)\n shipsToCountries.push(shippingZoneCountryItem)\n }\n })\n })\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.code.localeCompare(b.code)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,OAAS,sBAAAC,MAA0B,gBAGnC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,EAAIH,EAAmB,EAErC,CAACI,EAAWC,CAAU,EAAIN,EAAS,EAAK,EACxC,CAACO,EAAWC,CAAY,EAAIR,EAA4B,CAAC,CAAC,EAEhE,OAAAD,EAAU,IAAM,EACS,SAAY,CACjCO,EAAW,EAAI,EACf,GAAI,CAMF,MAAMG,EAAW,MALA,MAAM,MAAM,4DAA4DN,CAAkB,GAAI,CAC7G,QAAS,CACP,mBAAoBC,CACtB,CACF,CAAC,GAC+B,KAAK,EAGrC,IAAIM,EAAsC,CAAC,EAC3C,MAAMC,EAAa,IAAI,KACDF,GAAK,MAAM,MAAQA,GAAK,MAAQ,CAAC,GACzC,QAASG,GAAmC,CACxDA,EAAiB,UAAU,QAAQC,GAA2B,CACvDF,EAAW,IAAIE,EAAwB,IAAI,IAC9CF,EAAW,IAAIE,EAAwB,IAAI,EAC3CH,EAAiB,KAAKG,CAAuB,EAEjD,CAAC,CACH,CAAC,EAGDH,EAAmBA,EAAiB,KAAK,CAACI,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BL,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASM,EAAG,CACVR,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMQ,CAAC,CACjB,QAAE,CACAV,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOU,EAAQf",
6
- "names": ["useEffect", "useState", "useHeadlessContext", "useCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "countrySet", "shippingZoneItem", "shippingZoneCountryItem", "a", "b", "e", "useCountries_default"]
4
+ "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch('/api/multipass/account/countries', {\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n // \u65B0\u63A5\u53E3\u76F4\u63A5\u8FD4\u56DE\u56FD\u5BB6\u6570\u7EC4 [{ id, name, code }]\n let shipsToCountries: ShippingCountry[] = res?.data || res || []\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,OAAS,sBAAAC,MAA0B,gBAGnC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,EAAIH,EAAmB,EAErC,CAACI,EAAWC,CAAU,EAAIN,EAAS,EAAK,EACxC,CAACO,EAAWC,CAAY,EAAIR,EAA4B,CAAC,CAAC,EAEhE,OAAAD,EAAU,IAAM,EACS,SAAY,CACjCO,EAAW,EAAI,EACf,GAAI,CAMF,MAAMG,EAAW,MALA,MAAM,MAAM,mCAAoC,CAC/D,QAAS,CACP,mBAAoBL,CACtB,CACF,CAAC,GAC+B,KAAK,EAGrC,IAAIM,EAAsCD,GAAK,MAAQA,GAAO,CAAC,EAG/DC,EAAmBA,EAAiB,KAAK,CAACC,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BF,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASG,EAAG,CACVL,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMK,CAAC,CACjB,QAAE,CACAP,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOO,EAAQZ",
6
+ "names": ["useEffect", "useState", "useHeadlessContext", "useCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "a", "b", "e", "useCountries_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as l}from"react/jsx-runtime";import{useCallback as B,useEffect as O,useState as s}from"react";import{Button as M,Text as c}from"@anker-in/headless-ui";import{classNames as q}from"@anker-in/lib";import{CreditsModalContainer as A}from"../../../credits/modal/ModalContainer";import{useUpdateProfile as I}from"./hooks/useUpdateProfile";import T from"../../../credits/context/hooks/useCountries";import{useMemberPopupContext as U}from"../../context/provider";function W({isOpen:D,onClose:i,onSuccess:N,copy:a,shopifyStoreDomain:L=""}){const{profile:o,fetchCreditInfo:v,alpcConfig:h}=U(),{locale:S}=h,[r,C]=s(""),[d,g]=s(""),[n,k]=s(""),[m,P]=s(""),[p,w]=s(""),[x,f]=s(""),[u,b]=s(""),{updateProfile:y,isLoading:_}=I({locale:S,appName:h.appName}),{countries:z}=T({shopifyStoreDomain:L});O(()=>{o&&(C(o.first_name??""),g(o.last_name??""),k(o.phone_number??""),P(o.dob??""),w(o.country?.id??""))},[o]);const E=B(()=>{let t=!1;return r.trim()?f(""):(f(a.required),t=!0),d.trim()?b(""):(b(a.required),t=!0),t},[r,d,a.required]),F=B(async()=>{if(E())return;await y({first_name:r.trim(),last_name:d.trim(),phone_number:n,country:p,dob:m})&&(v(o?.user_id),N?.(),i())},[E,y,r,d,n,p,m,v,o,N,i]);return e(A,{isOpen:D,onClose:i,title:a.title,titleClassName:"!h-auto !border-b-0 !pb-0",className:"w-[540px] md:h-auto",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",children:l("div",{className:"flex flex-col gap-[20px]",children:[a.subtitle&&e(c,{className:"text-[14px] text-[#1d1d1f]",html:a.subtitle}),l("div",{children:[e("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.email}),e("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",value:o?.email??"",disabled:!0})]}),l("div",{children:[l("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.firstName," ",e("span",{className:"text-[#f84d4f]",children:"*"})]}),e("input",{className:q("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",x?"border-[#f84d4f]":"border-[#d8d8d8]"),value:r,onChange:t=>{C(t.target.value),f("")}}),x&&e(c,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:x})]}),l("div",{children:[l("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.lastName," ",e("span",{className:"text-[#f84d4f]",children:"*"})]}),e("input",{className:q("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",u?"border-[#f84d4f]":"border-[#d8d8d8]"),value:d,onChange:t=>{g(t.target.value),b("")}}),u&&e(c,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:u})]}),l("div",{children:[e("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.birthday}),e("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",type:"date",value:m,onChange:t=>P(t.target.value)})]}),l("div",{children:[e("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.phone}),e("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:n,onChange:t=>k(t.target.value)})]}),l("div",{children:[e("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.country}),l("select",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:p,onChange:t=>w(t.target.value),children:[e("option",{value:""}),z.map(t=>e("option",{value:t.id,children:t.name},t.id))]})]}),l("div",{className:"flex gap-[12px]",children:[e(M,{variant:"secondary",size:"lg",className:"flex-1",onClick:i,disabled:_,children:a.cancel}),e(M,{variant:"primary",size:"lg",className:"flex-1",loading:_,onClick:F,children:a.save})]})]})})}export{W as CompleteProfileModal};
1
+ import{jsx as e,jsxs as s}from"react/jsx-runtime";import{useCallback as M,useEffect as q,useState as o}from"react";import{Button as D,Text as v}from"@anker-in/headless-ui";import{classNames as L}from"@anker-in/lib";import{CreditsModalContainer as A}from"../../../credits/modal/ModalContainer";import{useUpdateProfile as I}from"./hooks/useUpdateProfile";import T from"../../../credits/context/hooks/useCountries";import{useMemberPopupContext as U}from"../../context/provider";function W({isOpen:S,onClose:i,onSuccess:h,copy:a,shopifyStoreDomain:z=""}){const{profile:l,fetchCreditInfo:C,alpcConfig:g}=U(),{locale:F}=g,[r,k]=o(""),[d,P]=o(""),[p,w]=o(""),[x,y]=o(""),[n,f]=o(""),[u,b]=o(""),[c,N]=o(""),{updateProfile:_,isLoading:E}=I({locale:F,appName:g.appName}),{countries:m}=T({shopifyStoreDomain:z});q(()=>{l&&(k(l.first_name??""),P(l.last_name??""),w(l.phone_number??""),y(l.dob??""),f(l.country?.id??""))},[l]),q(()=>{m.length>0&&!n&&f(m[0].id)},[m]);const B=M(()=>{let t=!1;return r.trim()?b(""):(b(a.required),t=!0),d.trim()?N(""):(N(a.required),t=!0),t},[r,d,a.required]),O=M(async()=>{if(B())return;await _({first_name:r.trim(),last_name:d.trim(),phone_number:p,country:n,dob:x})&&(C(l?.user_id),h?.(),i())},[B,_,r,d,p,n,x,C,l,h,i]);return e(A,{isOpen:S,onClose:i,title:a.title,titleClassName:"!h-auto !border-b-0 !pb-0",className:"w-[540px] md:h-auto",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",children:s("div",{className:"flex flex-col gap-[20px]",children:[a.subtitle&&e(v,{className:"text-[14px] text-[#1d1d1f]",html:a.subtitle}),s("div",{children:[e("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.email}),e("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",value:l?.email??"",disabled:!0})]}),s("div",{children:[s("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.firstName," ",e("span",{className:"text-[#f84d4f]",children:"*"})]}),e("input",{className:L("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",u?"border-[#f84d4f]":"border-[#d8d8d8]"),value:r,onChange:t=>{k(t.target.value),b("")}}),u&&e(v,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:u})]}),s("div",{children:[s("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.lastName," ",e("span",{className:"text-[#f84d4f]",children:"*"})]}),e("input",{className:L("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",c?"border-[#f84d4f]":"border-[#d8d8d8]"),value:d,onChange:t=>{P(t.target.value),N("")}}),c&&e(v,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:c})]}),s("div",{children:[e("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.birthday}),e("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",type:"date",value:x,onChange:t=>y(t.target.value)})]}),s("div",{children:[e("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.phone}),e("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:p,onChange:t=>w(t.target.value)})]}),s("div",{children:[e("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.country}),e("select",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:n,onChange:t=>f(t.target.value),children:m.map(t=>e("option",{value:t.id,children:t.name},t.id))})]}),s("div",{className:"flex gap-[12px]",children:[e(D,{variant:"secondary",size:"lg",className:"flex-1",onClick:i,disabled:E,children:a.cancel}),e(D,{variant:"primary",size:"lg",className:"flex-1",loading:E,onClick:O,children:a.save})]})]})})}export{W as CompleteProfileModal};
2
2
  //# sourceMappingURL=CompleteProfileModal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/CompleteProfileModal.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn } from '@anker-in/lib'\nimport { CreditsModalContainer } from '../../../credits/modal/ModalContainer'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\n\ntype Props = {\n isOpen: boolean\n onClose: () => void\n onSuccess?: () => void\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n}\n\nexport function CompleteProfileModal({ isOpen, onClose, onSuccess, copy, shopifyStoreDomain = '' }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <CreditsModalContainer\n isOpen={isOpen}\n onClose={onClose}\n title={copy.title}\n titleClassName=\"!h-auto !border-b-0 !pb-0\"\n className=\"w-[540px] md:h-auto\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n >\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.email}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]\"\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.country}</label>\n <select\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n <option value=\"\" />\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n </CreditsModalContainer>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn } from '@anker-in/lib'\nimport { CreditsModalContainer } from '../../../credits/modal/ModalContainer'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\n\ntype Props = {\n isOpen: boolean\n onClose: () => void\n onSuccess?: () => void\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n}\n\nexport function CompleteProfileModal({ isOpen, onClose, onSuccess, copy, shopifyStoreDomain = '' }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n useEffect(() => {\n if (countries.length > 0 && !country) {\n setCountry(countries[0].id)\n }\n }, [countries])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <CreditsModalContainer\n isOpen={isOpen}\n onClose={onClose}\n title={copy.title}\n titleClassName=\"!h-auto !border-b-0 !pb-0\"\n className=\"w-[540px] md:h-auto\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n >\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.email}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]\"\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.country}</label>\n <select\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n </CreditsModalContainer>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Text", "cn", "CreditsModalContainer", "useUpdateProfile", "useCountries", "useMemberPopupContext", "CompleteProfileModal", "isOpen", "onClose", "onSuccess", "copy", "shopifyStoreDomain", "profile", "fetchCreditInfo", "alpcConfig", "locale", "firstName", "setFirstName", "lastName", "setLastName", "phone", "setPhone", "birthDay", "setBirthDay", "country", "setCountry", "firstNameError", "setFirstNameError", "lastNameError", "setLastNameError", "updateProfile", "isLoading", "countries", "validate", "hasError", "handleSubmit", "e", "c"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as o}from"react/jsx-runtime";import{useCallback as S,useEffect as A,useState as r}from"react";import{Button as q,Text as v}from"@anker-in/headless-ui";import{classNames as s,useHeadlessContext as H}from"@anker-in/lib";import{useUpdateProfile as I}from"./hooks/useUpdateProfile";import M from"../../../credits/context/hooks/useCountries";import{useMemberPopupContext as O}from"../../context/provider";import{ROUNDED_BRANDS as T}from"../../../../constants";function G({copy:a,shopifyStoreDomain:L="",onClose:p,onSuccess:h}){const{profile:l,fetchCreditInfo:g,alpcConfig:C}=O(),{locale:z}=C,{brand:F}=H(),n=T.includes(F),[d,k]=r(""),[i,P]=r(""),[x,_]=r(""),[m,w]=r(""),[u,y]=r(""),[f,c]=r(""),[b,N]=r(""),{updateProfile:E,isLoading:D}=I({locale:z,appName:C.appName}),{countries:R}=M({shopifyStoreDomain:L});A(()=>{l&&(k(l.first_name??""),P(l.last_name??""),_(l.phone_number??""),w(l.dob??""),y(l.country?.id??""))},[l]);const B=S(()=>{let e=!1;return d.trim()?c(""):(c(a.required),e=!0),i.trim()?N(""):(N(a.required),e=!0),e},[d,i,a.required]),U=S(async()=>{if(B())return;await E({first_name:d.trim(),last_name:i.trim(),phone_number:x,country:u,dob:m})&&(g(l?.user_id),h?.(),p())},[B,E,d,i,x,u,m,g,l,h,p]);return o("div",{className:"flex flex-col gap-[20px]",children:[a.subtitle&&t(v,{className:"text-[14px] text-[#1d1d1f]",html:a.subtitle}),o("div",{children:[t("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:a.email}),t("input",{className:s("mt-[8px] h-[46px] w-full border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",n?"rounded-[4px]":"rounded-none"),value:l?.email??"",disabled:!0})]}),o("div",{children:[o("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:[a.firstName," ",t("span",{className:"text-[#f84d4f]",children:"*"})]}),t("input",{className:s("mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none",f?"border-[#f84d4f]":"border-[#d8d8d8]",n?"rounded-[4px]":"rounded-none"),value:d,onChange:e=>{k(e.target.value),c("")}}),f&&t(v,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:f})]}),o("div",{children:[o("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:[a.lastName," ",t("span",{className:"text-[#f84d4f]",children:"*"})]}),t("input",{className:s("mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none",b?"border-[#f84d4f]":"border-[#d8d8d8]",n?"rounded-[4px]":"rounded-none"),value:i,onChange:e=>{P(e.target.value),N("")}}),b&&t(v,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:b})]}),o("div",{children:[t("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:a.birthday}),t("input",{className:s("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",n?"rounded-[4px]":"rounded-none"),type:"date",value:m,onChange:e=>w(e.target.value)})]}),o("div",{children:[t("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:a.phone}),t("input",{className:s("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",n?"rounded-[4px]":"rounded-none"),value:x,onChange:e=>_(e.target.value)})]}),o("div",{children:[t("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:a.country}),o("select",{className:s("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",n?"rounded-[4px]":"rounded-none"),value:u,onChange:e=>y(e.target.value),children:[t("option",{value:""}),R.map(e=>t("option",{value:e.id,children:e.name},e.id))]})]}),o("div",{className:"flex gap-[12px]",children:[t(q,{variant:"secondary",size:"lg",className:"flex-1",onClick:p,disabled:D,children:a.cancel}),t(q,{variant:"primary",size:"lg",className:"flex-1",loading:D,onClick:U,children:a.save})]})]})}export{G as default};
1
+ import{jsx as t,jsxs as l}from"react/jsx-runtime";import{useCallback as q,useEffect as L,useState as r}from"react";import{Button as z,Text as g}from"@anker-in/headless-ui";import{classNames as s,useHeadlessContext as H}from"@anker-in/lib";import{useUpdateProfile as I}from"./hooks/useUpdateProfile";import M from"../../../credits/context/hooks/useCountries";import{useMemberPopupContext as O}from"../../context/provider";import{ROUNDED_BRANDS as T}from"../../../../constants";function G({copy:a,shopifyStoreDomain:F="",onClose:m,onSuccess:C}){const{profile:o,fetchCreditInfo:k,alpcConfig:P}=O(),{locale:R}=P,{brand:U}=H(),n=T.includes(U),[d,_]=r(""),[i,w]=r(""),[u,y]=r(""),[f,E]=r(""),[p,c]=r(""),[b,N]=r(""),[v,h]=r(""),{updateProfile:D,isLoading:B}=I({locale:R,appName:P.appName}),{countries:x}=M({shopifyStoreDomain:F});L(()=>{o&&(_(o.first_name??""),w(o.last_name??""),y(o.phone_number??""),E(o.dob??""),c(o.country?.id??""))},[o]),L(()=>{x.length>0&&!p&&c(x[0].id)},[x]);const S=q(()=>{let e=!1;return d.trim()?N(""):(N(a.required),e=!0),i.trim()?h(""):(h(a.required),e=!0),e},[d,i,a.required]),A=q(async()=>{if(S())return;await D({first_name:d.trim(),last_name:i.trim(),phone_number:u,country:p,dob:f})&&(k(o?.user_id),C?.(),m())},[S,D,d,i,u,p,f,k,o,C,m]);return l("div",{className:"flex flex-col gap-[20px]",children:[a.subtitle&&t(g,{className:"text-[14px] text-[#1d1d1f]",html:a.subtitle}),l("div",{children:[t("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:a.email}),t("input",{className:s("mt-[8px] h-[46px] w-full border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",n?"rounded-[4px]":"rounded-none"),value:o?.email??"",disabled:!0})]}),l("div",{children:[l("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:[a.firstName," ",t("span",{className:"text-[#f84d4f]",children:"*"})]}),t("input",{className:s("mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none",b?"border-[#f84d4f]":"border-[#d8d8d8]",n?"rounded-[4px]":"rounded-none"),value:d,onChange:e=>{_(e.target.value),N("")}}),b&&t(g,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:b})]}),l("div",{children:[l("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:[a.lastName," ",t("span",{className:"text-[#f84d4f]",children:"*"})]}),t("input",{className:s("mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none",v?"border-[#f84d4f]":"border-[#d8d8d8]",n?"rounded-[4px]":"rounded-none"),value:i,onChange:e=>{w(e.target.value),h("")}}),v&&t(g,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:v})]}),l("div",{children:[t("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:a.birthday}),t("input",{className:s("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",n?"rounded-[4px]":"rounded-none"),type:"date",value:f,onChange:e=>E(e.target.value)})]}),l("div",{children:[t("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:a.phone}),t("input",{className:s("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",n?"rounded-[4px]":"rounded-none"),value:u,onChange:e=>y(e.target.value)})]}),l("div",{children:[t("label",{className:"block text-[14px] font-[700] text-[#1d1d1f]",children:a.country}),t("select",{className:s("mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none",n?"rounded-[4px]":"rounded-none"),value:p,onChange:e=>c(e.target.value),children:x.map(e=>t("option",{value:e.id,children:e.name},e.id))})]}),l("div",{className:"flex gap-[12px]",children:[t(z,{variant:"secondary",size:"lg",className:"flex-1",onClick:m,disabled:B,children:a.cancel}),t(z,{variant:"primary",size:"lg",className:"flex-1",loading:B,onClick:A,children:a.save})]})]})}export{G as default};
2
2
  //# sourceMappingURL=CompleteProfilePanel.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n onClose: () => void\n onSuccess?: () => void\n}\n\nexport default function CompleteProfilePanel({ copy, shopifyStoreDomain = '', onClose, onSuccess }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.email}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.country}</label>\n <select\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n <option value=\"\" />\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n onClose: () => void\n onSuccess?: () => void\n}\n\nexport default function CompleteProfilePanel({ copy, shopifyStoreDomain = '', onClose, onSuccess }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n useEffect(() => {\n if (countries.length > 0 && !country) {\n setCountry(countries[0].id)\n }\n }, [countries])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.email}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-[700] text-[#1d1d1f]\">{copy.country}</label>\n <select\n className={cn('mt-[8px] h-[46px] w-full border border-[#d8d8d8] px-[12px] text-[14px] outline-none', rounded ? 'rounded-[4px]' : 'rounded-none')}\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Text", "cn", "useHeadlessContext", "useUpdateProfile", "useCountries", "useMemberPopupContext", "ROUNDED_BRANDS", "CompleteProfilePanel", "copy", "shopifyStoreDomain", "onClose", "onSuccess", "profile", "fetchCreditInfo", "alpcConfig", "locale", "brand", "rounded", "firstName", "setFirstName", "lastName", "setLastName", "phone", "setPhone", "birthDay", "setBirthDay", "country", "setCountry", "firstNameError", "setFirstNameError", "lastNameError", "setLastNameError", "updateProfile", "isLoading", "countries", "validate", "hasError", "handleSubmit", "c"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/campaign-ui",
3
- "version": "0.5.0-beta.02",
3
+ "version": "0.5.0-beta.04",
4
4
  "description": "Campaign UI components and utilities for Anker projects",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -1,7 +1,7 @@
1
1
  import { useEffect, useState } from 'react'
2
2
 
3
3
  import { useHeadlessContext } from '@anker-in/lib'
4
- import { type ShippingCountry, type ShippingZone } from '../../type'
4
+ import { type ShippingCountry } from '../../type'
5
5
 
6
6
  function useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {
7
7
  const { locale = '' } = useHeadlessContext()
@@ -13,29 +13,19 @@ function useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {
13
13
  const fetchCountries = async () => {
14
14
  setLoading(true)
15
15
  try {
16
- const response = await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`, {
16
+ const response = await fetch('/api/multipass/account/countries', {
17
17
  headers: {
18
18
  'current-language': locale,
19
19
  },
20
20
  })
21
21
  const res: any = await response.json()
22
22
 
23
- // 国家过滤
24
- let shipsToCountries: ShippingCountry[] = []
25
- const countrySet = new Set()
26
- const shippingZones = res?.data?.data || res?.data || []
27
- shippingZones.forEach((shippingZoneItem: ShippingZone) => {
28
- shippingZoneItem.countries.forEach(shippingZoneCountryItem => {
29
- if (!countrySet.has(shippingZoneCountryItem.code)) {
30
- countrySet.add(shippingZoneCountryItem.code)
31
- shipsToCountries.push(shippingZoneCountryItem)
32
- }
33
- })
34
- })
23
+ // 新接口直接返回国家数组 [{ id, name, code }]
24
+ let shipsToCountries: ShippingCountry[] = res?.data || res || []
35
25
 
36
26
  // 字母顺序排序
37
27
  shipsToCountries = shipsToCountries.sort((a, b) => {
38
- return a.code.localeCompare(b.code)
28
+ return a.name.localeCompare(b.name)
39
29
  })
40
30
 
41
31
  console.log('fetch shipsToCountries', shipsToCountries)
@@ -40,6 +40,12 @@ export function CompleteProfileModal({ isOpen, onClose, onSuccess, copy, shopify
40
40
  }
41
41
  }, [profile])
42
42
 
43
+ useEffect(() => {
44
+ if (countries.length > 0 && !country) {
45
+ setCountry(countries[0].id)
46
+ }
47
+ }, [countries])
48
+
43
49
  const validate = useCallback(() => {
44
50
  let hasError = false
45
51
  if (!firstName.trim()) {
@@ -153,7 +159,6 @@ export function CompleteProfileModal({ isOpen, onClose, onSuccess, copy, shopify
153
159
  value={country}
154
160
  onChange={e => setCountry(e.target.value)}
155
161
  >
156
- <option value="" />
157
162
  {countries.map((c: { id: string; name: string }) => (
158
163
  <option key={c.id} value={c.id}>{c.name}</option>
159
164
  ))}
@@ -41,6 +41,12 @@ export default function CompleteProfilePanel({ copy, shopifyStoreDomain = '', on
41
41
  }
42
42
  }, [profile])
43
43
 
44
+ useEffect(() => {
45
+ if (countries.length > 0 && !country) {
46
+ setCountry(countries[0].id)
47
+ }
48
+ }, [countries])
49
+
44
50
  const validate = useCallback(() => {
45
51
  let hasError = false
46
52
  if (!firstName.trim()) {
@@ -147,7 +153,6 @@ export default function CompleteProfilePanel({ copy, shopifyStoreDomain = '', on
147
153
  value={country}
148
154
  onChange={e => setCountry(e.target.value)}
149
155
  >
150
- <option value="" />
151
156
  {countries.map((c: { id: string; name: string }) => (
152
157
  <option key={c.id} value={c.id}>{c.name}</option>
153
158
  ))}