@remoteoss/remote-flows 0.4.0-alpha.11 → 0.4.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -9
- package/dist/chunk-7N7ND6Z4.js +2 -0
- package/dist/chunk-7N7ND6Z4.js.map +1 -0
- package/dist/chunk-AN7L3GVL.js +2 -0
- package/dist/{chunk-RWYOUDM5.js.map → chunk-AN7L3GVL.js.map} +1 -1
- package/dist/chunk-AOJAZ4FT.js +2 -0
- package/dist/chunk-AOJAZ4FT.js.map +1 -0
- package/dist/chunk-ASFAGLQI.js +2 -0
- package/dist/chunk-ASFAGLQI.js.map +1 -0
- package/dist/chunk-BYFO5OB6.js +2 -0
- package/dist/chunk-BYFO5OB6.js.map +1 -0
- package/dist/chunk-D53FKWGJ.js +2 -0
- package/dist/chunk-D53FKWGJ.js.map +1 -0
- package/dist/{chunk-RIWPSA6V.js → chunk-IEZAM2XO.js} +2 -2
- package/dist/{chunk-RC2UQDK7.js → chunk-NIOH7TNP.js} +2 -2
- package/dist/{chunk-INW2EQZR.js → chunk-OS3QI7CV.js} +2 -2
- package/dist/{chunk-3QTURBOX.js → chunk-QUM7V5EP.js} +2 -2
- package/dist/{chunk-IG3FJLDR.js → chunk-RDAO365M.js} +2 -2
- package/dist/chunk-WRKHWEZA.js +2 -0
- package/dist/chunk-WRKHWEZA.js.map +1 -0
- package/dist/chunk-X6DRD2I4.js +2 -0
- package/dist/chunk-X6DRD2I4.js.map +1 -0
- package/dist/chunk-XQXFQ7LM.js +2 -0
- package/dist/{chunk-L6LGRALQ.js.map → chunk-XQXFQ7LM.js.map} +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
- package/dist/flows/ContractAmendment/context.d.ts +1 -1
- package/dist/flows/ContractAmendment/hooks.d.ts +1 -1
- package/dist/flows/ContractAmendment/hooks.js +1 -1
- package/dist/flows/ContractAmendment/index.d.ts +1 -1
- package/dist/flows/ContractAmendment/index.js +1 -1
- package/dist/flows/CostCalculator/context.d.ts +1 -1
- package/dist/flows/CostCalculator/index.d.ts +1 -1
- package/dist/flows/CostCalculator/utils.d.ts +1 -1
- package/dist/flows/Onboarding/AnnualGrossSalary.d.ts +1 -1
- package/dist/flows/Onboarding/AnnualGrossSalary.js +1 -1
- package/dist/flows/Onboarding/BasicInformationStep.d.ts +6 -1
- package/dist/flows/Onboarding/BasicInformationStep.js +1 -1
- package/dist/flows/Onboarding/BenefitsStep.d.ts +7 -2
- package/dist/flows/Onboarding/BenefitsStep.js +1 -1
- package/dist/flows/Onboarding/ContractDetailsStep.d.ts +6 -1
- package/dist/flows/Onboarding/ContractDetailsStep.js +1 -1
- package/dist/flows/Onboarding/OnboardingFlow.d.ts +3 -3
- package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
- package/dist/flows/Onboarding/OnboardingForm.d.ts +1 -1
- package/dist/flows/Onboarding/OnboardingInvite.d.ts +7 -2
- package/dist/flows/Onboarding/OnboardingInvite.js +1 -1
- package/dist/flows/Onboarding/SelectCountryStep.d.ts +6 -1
- package/dist/flows/Onboarding/SelectCountryStep.js +1 -1
- package/dist/flows/Onboarding/api.d.ts +5 -1
- package/dist/flows/Onboarding/api.js +1 -1
- package/dist/flows/Onboarding/context.d.ts +2 -3
- package/dist/flows/Onboarding/hooks.d.ts +3 -4
- package/dist/flows/Onboarding/hooks.js +1 -1
- package/dist/flows/Onboarding/index.d.ts +2 -2
- package/dist/flows/Onboarding/index.js +1 -1
- package/dist/flows/Onboarding/types.d.ts +19 -0
- package/dist/flows/Termination/TerminationFlow.d.ts +1 -1
- package/dist/flows/Termination/TerminationFlow.js +1 -1
- package/dist/flows/Termination/context.d.ts +1 -1
- package/dist/flows/Termination/hooks.d.ts +1 -1
- package/dist/flows/Termination/hooks.js +1 -1
- package/dist/flows/Termination/index.d.ts +1 -1
- package/dist/flows/Termination/index.js +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mutations-B6HWH-rZ.d.ts +22 -0
- package/dist/{remoteFlows-lYAFzyXi.d.ts → remoteFlows--lO1UtNJ.d.ts} +10 -3
- package/package.json +1 -1
- package/dist/chunk-GAXGAK4P.js +0 -2
- package/dist/chunk-GAXGAK4P.js.map +0 -1
- package/dist/chunk-HGHKZF7M.js +0 -2
- package/dist/chunk-HGHKZF7M.js.map +0 -1
- package/dist/chunk-JTP3LZ77.js +0 -2
- package/dist/chunk-JTP3LZ77.js.map +0 -1
- package/dist/chunk-KHZ2ITFO.js +0 -2
- package/dist/chunk-KHZ2ITFO.js.map +0 -1
- package/dist/chunk-L6LGRALQ.js +0 -2
- package/dist/chunk-RWYOUDM5.js +0 -2
- package/dist/chunk-VEOGRXYK.js +0 -2
- package/dist/chunk-VEOGRXYK.js.map +0 -1
- package/dist/chunk-VJEJUUY2.js +0 -2
- package/dist/chunk-VJEJUUY2.js.map +0 -1
- package/dist/chunk-VJEL5MZJ.js +0 -2
- package/dist/chunk-VJEL5MZJ.js.map +0 -1
- package/dist/mutations-v9H353tz.d.ts +0 -10
- /package/dist/{chunk-RIWPSA6V.js.map → chunk-IEZAM2XO.js.map} +0 -0
- /package/dist/{chunk-RC2UQDK7.js.map → chunk-NIOH7TNP.js.map} +0 -0
- /package/dist/{chunk-INW2EQZR.js.map → chunk-OS3QI7CV.js.map} +0 -0
- /package/dist/{chunk-3QTURBOX.js.map → chunk-QUM7V5EP.js.map} +0 -0
- /package/dist/{chunk-IG3FJLDR.js.map → chunk-RDAO365M.js.map} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface SuccessResponse<D> {
|
|
2
|
+
data: D;
|
|
3
|
+
error: null;
|
|
4
|
+
}
|
|
5
|
+
interface FieldError {
|
|
6
|
+
field: string;
|
|
7
|
+
messages: string[];
|
|
8
|
+
}
|
|
9
|
+
interface ErrorResponse<E> {
|
|
10
|
+
data: null;
|
|
11
|
+
error: E;
|
|
12
|
+
rawError: Record<string, unknown>;
|
|
13
|
+
fieldErrors: FieldError[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Enhanced FieldError interface with user-friendly labels
|
|
17
|
+
*/
|
|
18
|
+
interface NormalizedFieldError extends FieldError {
|
|
19
|
+
userFriendlyLabel: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type { ErrorResponse as E, FieldError as F, NormalizedFieldError as N, SuccessResponse as S };
|
|
@@ -31,6 +31,13 @@ type StatementProps = {
|
|
|
31
31
|
severity: 'warning' | 'error' | 'success' | 'info' | 'neutral' | 'time';
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
+
declare const ENVIRONMENTS: {
|
|
35
|
+
partners: string;
|
|
36
|
+
production: string;
|
|
37
|
+
sandbox: string;
|
|
38
|
+
staging: string;
|
|
39
|
+
};
|
|
40
|
+
|
|
34
41
|
type AuthResponse = {
|
|
35
42
|
accessToken: string;
|
|
36
43
|
expiresIn: number;
|
|
@@ -118,10 +125,10 @@ type RemoteFlowsSDKProps = Omit<ThemeProviderProps, 'children'> & {
|
|
|
118
125
|
*/
|
|
119
126
|
components?: Components;
|
|
120
127
|
/**
|
|
121
|
-
*
|
|
122
|
-
* If
|
|
128
|
+
* Environment to use for API calls.
|
|
129
|
+
* If not provided, the SDK will use production environment.
|
|
123
130
|
*/
|
|
124
|
-
|
|
131
|
+
environment?: keyof typeof ENVIRONMENTS;
|
|
125
132
|
proxy?: {
|
|
126
133
|
/**
|
|
127
134
|
* URL of the proxy server to use for API calls.
|
package/package.json
CHANGED
package/dist/chunk-GAXGAK4P.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as i}from"./chunk-QKTDO33H.js";import{b as a}from"./chunk-PGWKJ6FK.js";import{a as r}from"./chunk-P37U34EQ.js";import{jsx as l}from"react/jsx-runtime";function m({onSubmit:c,onSuccess:u,onError:e}){let{onboardingBag:t}=a(),s=r(async n=>{try{await c?.({countryCode:n.country});let o=await t.onSubmit(n);if(o?.data){await u?.(o?.data),t?.next();return}o?.error&&e?.(o?.error)}catch(o){e?.(o)}},"handleSubmit"),S=t.stepState.values?.select_country||t.initialValues.select_country;return l(i,{defaultValues:S,onSubmit:s})}r(m,"SelectCountryStep");export{m as a};
|
|
2
|
-
//# sourceMappingURL=chunk-GAXGAK4P.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/SelectCountryStep.tsx"],"sourcesContent":["import { useOnboardingContext } from './context';\nimport { OnboardingForm } from '@/src/flows/Onboarding/OnboardingForm';\nimport {\n SelectCountryFormPayload,\n SelectCountrySuccess,\n} from '@/src/flows/Onboarding/types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\ntype SelectCountryStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: SelectCountryFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (data: SelectCountrySuccess) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: (error: Error) => void;\n};\n\nexport function SelectCountryStep({\n onSubmit,\n onSuccess,\n onError,\n}: SelectCountryStepProps) {\n const { onboardingBag } = useOnboardingContext();\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.({ countryCode: payload.country });\n const response = await onboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response?.data as SelectCountrySuccess);\n onboardingBag?.next();\n return;\n }\n if (response?.error) {\n onError?.(response?.error);\n }\n } catch (error: unknown) {\n onError?.(error as Error);\n }\n };\n\n const initialValues =\n onboardingBag.stepState.values?.select_country ||\n onboardingBag.initialValues.select_country;\n\n return (\n <OnboardingForm defaultValues={initialValues} onSubmit={handleSubmit} />\n );\n}\n"],"mappings":"wHAmDI,cAAAA,MAAA,oBA5BG,SAASC,EAAkB,CAChC,SAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAA2B,CACzB,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAqB,EACzCC,EAAeC,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,MAAMP,IAAW,CAAE,YAAaO,EAAQ,OAAQ,CAAC,EACjD,IAAMC,EAAW,MAAML,EAAc,SAASI,CAAO,EACrD,GAAIC,GAAU,KAAM,CAClB,MAAMP,IAAYO,GAAU,IAA4B,EACxDL,GAAe,KAAK,EACpB,MACF,CACIK,GAAU,OACZN,IAAUM,GAAU,KAAK,CAE7B,OAASC,EAAgB,CACvBP,IAAUO,CAAc,CAC1B,CACF,EAfqB,gBAiBfC,EACJP,EAAc,UAAU,QAAQ,gBAChCA,EAAc,cAAc,eAE9B,OACEL,EAACa,EAAA,CAAe,cAAeD,EAAe,SAAUL,EAAc,CAE1E,CA9BgBC,EAAAP,EAAA","names":["jsx","SelectCountryStep","onSubmit","onSuccess","onError","onboardingBag","useOnboardingContext","handleSubmit","__name","payload","response","error","initialValues","OnboardingForm"]}
|
package/dist/chunk-HGHKZF7M.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./chunk-QKTDO33H.js";import{b as t}from"./chunk-PGWKJ6FK.js";import{a}from"./chunk-P37U34EQ.js";import{jsx as f}from"react/jsx-runtime";function u({onSubmit:s,onSuccess:m,onError:i}){let{onboardingBag:r}=t(),p=a(async n=>{try{await s?.(r.parseFormValues(n));let o=await r.onSubmit(n);if(o?.data){await m?.(o?.data),r?.next();return}o?.error&&i?.(o?.error)}catch(o){i?.(o)}},"handleSubmit"),c=r.stepState.values?.basic_information||r.initialValues.basic_information;return f(e,{defaultValues:c,onSubmit:p})}a(u,"BasicInformationStep");export{u as a};
|
|
2
|
-
//# sourceMappingURL=chunk-HGHKZF7M.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/BasicInformationStep.tsx"],"sourcesContent":["import { useOnboardingContext } from './context';\nimport { OnboardingForm } from '@/src/flows/Onboarding/OnboardingForm';\nimport { BasicInformationFormPayload } from '@/src/flows/Onboarding/types';\nimport { EmploymentCreationResponse } from '@/src/client';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\ntype BasicInformationStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: BasicInformationFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (data: EmploymentCreationResponse) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: (error: Error) => void;\n};\n\nexport function BasicInformationStep({\n onSubmit,\n onSuccess,\n onError,\n}: BasicInformationStepProps) {\n const { onboardingBag } = useOnboardingContext();\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.(\n onboardingBag.parseFormValues(payload) as BasicInformationFormPayload,\n );\n const response = await onboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response?.data as EmploymentCreationResponse);\n onboardingBag?.next();\n return;\n }\n if (response?.error) {\n onError?.(response?.error);\n }\n } catch (error: unknown) {\n onError?.(error as Error);\n }\n };\n\n const initialValues =\n onboardingBag.stepState.values?.basic_information ||\n onboardingBag.initialValues.basic_information;\n\n return (\n <OnboardingForm defaultValues={initialValues} onSubmit={handleSubmit} />\n );\n}\n"],"mappings":"mHAmDI,cAAAA,MAAA,oBA9BG,SAASC,EAAqB,CACnC,SAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAA8B,CAC5B,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAqB,EACzCC,EAAeC,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,MAAMP,IACJG,EAAc,gBAAgBI,CAAO,CACvC,EACA,IAAMC,EAAW,MAAML,EAAc,SAASI,CAAO,EACrD,GAAIC,GAAU,KAAM,CAClB,MAAMP,IAAYO,GAAU,IAAkC,EAC9DL,GAAe,KAAK,EACpB,MACF,CACIK,GAAU,OACZN,IAAUM,GAAU,KAAK,CAE7B,OAASC,EAAgB,CACvBP,IAAUO,CAAc,CAC1B,CACF,EAjBqB,gBAmBfC,EACJP,EAAc,UAAU,QAAQ,mBAChCA,EAAc,cAAc,kBAE9B,OACEL,EAACa,EAAA,CAAe,cAAeD,EAAe,SAAUL,EAAc,CAE1E,CAhCgBC,EAAAP,EAAA","names":["jsx","BasicInformationStep","onSubmit","onSuccess","onError","onboardingBag","useOnboardingContext","handleSubmit","__name","payload","response","error","initialValues","OnboardingForm"]}
|
package/dist/chunk-JTP3LZ77.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as x,b as G,c as p,d as W}from"./chunk-7JHIPWS7.js";import{a as ne}from"./chunk-IG3FJLDR.js";import{a as K,b as Y,c as z,f as Q,g as X,h as Z,i as $,j as ee,l as te}from"./chunk-RWYOUDM5.js";import{a as V}from"./chunk-KHZ2ITFO.js";import{a as H}from"./chunk-PJBAQZ6G.js";import{c as u,d as l}from"./chunk-MH6KKP6K.js";import{a as c}from"./chunk-P37U34EQ.js";import{useEffect as je,useMemo as w,useRef as Re,useState as oe}from"react";import ve from"lodash.mergewith";import{jsx as Ae}from"react/jsx-runtime";var Je={employment_basic_information:"basic_information",contract_details:"contract_details"},Ne={select_country:null,basic_information:"employment_basic_information",contract_details:"contract_details",benefits:null,review:null},ze=c(({employmentId:y,companyId:ae,countryCode:k,type:re,options:i})=>{let O=Re({}),[s,ie]=oe(y),[r,B]=oe(k||null),{data:o,isLoading:se,refetch:ce}=K(s);o?.country?.code&&r!==o.country.code&&B(o.country.code);let{data:I,isLoading:le}=z(s),{data:F,isLoading:me,refetch:j}=Y(ae),de=k?G:x,{fieldValues:_,stepState:e,setFieldValues:fe,previousStep:ue,nextStep:pe,goToStep:P,setStepValues:R}=H(de),{selectCountryForm:E,isLoading:ye}=te({jsfModify:i?.jsfModify?.select_country,jsonSchemaVersion:i?.jsonSchemaVersion}),v=Z(i),J=$(i),N=ee(i),{mutateAsync:_e}=V(v),{mutateAsync:A}=V(J),{mutateAsync:Se}=V(N),be=Ne[e.currentStep.name]||"employment_basic_information",ge=Je[be],Fe=o?.[ge]||{},q=c(({form:t,options:n={}})=>Q({countryCode:r,form:t,fieldValues:Object.keys(_).length>0?{...e.values?.[e.currentStep.name],..._}:Fe,options:{...n,queryOptions:{enabled:n.queryOptions?.enabled??!0}}}),"useJSONSchema"),Ee=!!(r&&(e.currentStep.name==="basic_information"||y)),he=!!(r&&(e.currentStep.name==="contract_details"||y)),{data:m,isLoading:Ve}=q({form:"employment_basic_information",options:{jsfModify:i?.jsfModify?.basic_information,queryOptions:{enabled:Ee}}}),f=i?.jsfModify?.contract_details?.fields?.annual_gross_salary,T=f&&typeof f=="object"&&"presentation"in f?f.presentation:void 0,Oe=w(()=>({fields:{annual_gross_salary:{...f,presentation:{annual_gross_salary_conversion_properties:{label:T?.annual_gross_salary_conversion_properties?.label,description:T?.annual_gross_salary_conversion_properties?.description},Component:c(t=>Ae(ne,{desiredCurrency:F?.desired_currency||"",...t}),"Component")}}}}),[F?.desired_currency,T,f]),{data:d,isLoading:Pe}=q({form:"contract_details",options:{jsfModify:{...i?.jsfModify?.contract_details,fields:{...i?.jsfModify?.contract_details?.fields,...Oe.fields}},queryOptions:{enabled:he}}}),{data:S,isLoading:Te}=X(s,_,i),C=w(()=>{if(e.currentStep.name==="benefits"){let t={...e.values?.[e.currentStep.name],..._};return ve({},I,t)}return{}},[e.currentStep.name,I,e.values,_]),a=w(()=>({select_country:E?.fields||[],basic_information:m?.fields||[],contract_details:d?.fields||[],benefits:S?.fields||[],review:[]}),[E?.fields,m?.fields,d?.fields,S?.fields]),Ce={select_country:l(a[e.currentStep.name],{country:r||o?.country.code||""}),basic_information:l(a[e.currentStep.name],o?.basic_information||{}),contract_details:l(a[e.currentStep.name],o?.contract_details||{}),benefits:C||{}},M=Ve||Pe||se||Te||le||me||ye,D=o&&W.includes(o?.status),L=!!(y&&D&&!M&&a.basic_information.length>0&&a.contract_details.length>0&&e.currentStep.name!=="review");je(()=>{if(L){let t=l(a.select_country,{country:r||o?.country.code||""}),n=l(a.basic_information,o?.basic_information||{}),b=l(a.contract_details,o?.contract_details||{}),h=l(a.benefits,C||{});O.current={select_country:p(t,a.select_country),basic_information:p(n,a.basic_information),contract_details:p(b,a.contract_details),benefits:p(h,a.benefits)},R({select_country:t,basic_information:n,contract_details:b,benefits:h,review:{}}),P("review")}},[y,o,M,r,P,C,a,e.currentStep.name,R,L]);let Me=M||L;function U(t){return E&&e.currentStep.name==="select_country"?t:m&&e.currentStep.name==="basic_information"?u(t,m?.fields,{isPartialValidation:!0}):d&&e.currentStep.name==="contract_details"?u(t,d?.fields,{isPartialValidation:!0}):{}}c(U,"parseFormValues");async function Le(t){O.current[e.currentStep.name]=p(t,a[e.currentStep.name]);let n=U(t);switch(j(),e.currentStep.name){case"select_country":return B(n.country),Promise.resolve({data:{countryCode:n.country}});case"basic_information":{let b=!s&&r,h=s&&r&&o?.country&&o?.country.code!==r;if(b||h){let Ie={basic_information:n,type:re,country_code:r};try{let g=await _e(Ie);return await j(),ie(g.data?.data?.employment?.id),g}catch(g){throw console.error("Error creating onboarding:",g),g}}else if(s)return A({employmentId:s,basic_information:n,pricing_plan_details:{frequency:"monthly"}});return}case"contract_details":return A({employmentId:s,...{contract_details:n,pricing_plan_details:{frequency:"monthly"}}});case"benefits":return Se({employmentId:s,...t})}}c(Le,"onSubmit");function we(){ue()}c(we,"back");function ke(){pe()}c(ke,"next");function Be(t){P(t)}return c(Be,"goTo"),{employmentId:s,creditRiskStatus:F?.default_legal_entity_credit_risk_status,owner_id:F?.company_owner_user_id,stepState:e,fields:a[e.currentStep.name],isLoading:Me,isSubmitting:v.isPending||J.isPending||N.isPending,initialValues:Ce,handleValidation:c(t=>{if(e.currentStep.name==="select_country")return E.handleValidation(t);if(e.currentStep.name==="benefits"&&S){let n=u(t,S?.fields);return S?.handleValidation(n)}if(m&&e.currentStep.name==="basic_information"){let n=u(t,m?.fields);return m?.handleValidation(n)}if(d&&e.currentStep.name==="contract_details"){let n=u(t,d?.fields);return d?.handleValidation(n)}return null},"handleValidation"),checkFieldUpdates:fe,parseFormValues:U,onSubmit:Le,back:we,next:ke,goTo:Be,meta:{fields:O.current},refetchEmployment:ce,employment:o,isEmploymentReadOnly:D}},"useOnboarding");export{ze as a};
|
|
2
|
-
//# sourceMappingURL=chunk-JTP3LZ77.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/hooks.tsx"],"sourcesContent":["import {\n Employment,\n EmploymentCreateParams,\n EmploymentFullParams,\n} from '@/src/client';\nimport { Fields } from '@remoteoss/json-schema-form';\n\nimport { useStepState, Step } from '@/src/flows/useStepState';\nimport {\n prettifyFormValues,\n reviewStepAllowedEmploymentStatus,\n STEPS,\n STEPS_WITHOUT_SELECT_COUNTRY,\n} from '@/src/flows/Onboarding/utils';\nimport {\n getInitialValues,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { FieldValues } from 'react-hook-form';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport mergeWith from 'lodash.mergewith';\nimport {\n useBenefitOffers,\n useBenefitOffersSchema,\n useCompany,\n useCountriesSchemaField,\n useCreateEmployment,\n useEmployment,\n useJSONSchemaForm,\n useUpdateBenefitsOffers,\n useUpdateEmployment,\n} from '@/src/flows/Onboarding/api';\nimport { JSFModify, JSONSchemaFormType } from '@/src/flows/types';\nimport { AnnualGrossSalary } from '@/src/flows/Onboarding/AnnualGrossSalary';\nimport { JSFField } from '@/src/types/remoteFlows';\n\ntype OnboardingHookProps = OnboardingFlowParams;\n\nconst jsonSchemaToEmployment: Partial<\n Record<JSONSchemaFormType, keyof Employment>\n> = {\n employment_basic_information: 'basic_information',\n contract_details: 'contract_details',\n};\n\nconst stepToFormSchemaMap: Record<\n keyof typeof STEPS,\n JSONSchemaFormType | null\n> = {\n select_country: null,\n basic_information: 'employment_basic_information',\n contract_details: 'contract_details',\n benefits: null,\n review: null,\n};\n\nexport const useOnboarding = ({\n employmentId,\n companyId,\n countryCode,\n type,\n options,\n}: OnboardingHookProps) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fieldsMetaRef = useRef<Record<string, any>>({});\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const [internalCountryCode, setInternalCountryCode] = useState<string | null>(\n countryCode || null,\n );\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n refetch: refetchEmployment,\n } = useEmployment(internalEmploymentId);\n\n // if the employment is loaded, country code has not been set yet\n // we set the internal country code with the employment country code\n if (\n employment?.country?.code &&\n internalCountryCode !== employment.country.code\n ) {\n setInternalCountryCode(employment.country.code);\n }\n\n const { data: benefitOffers, isLoading: isLoadingBenefitOffers } =\n useBenefitOffers(internalEmploymentId);\n const {\n data: company,\n isLoading: isLoadingCompany,\n refetch: refetchCompany,\n } = useCompany(companyId);\n const stepsToUse = countryCode ? STEPS_WITHOUT_SELECT_COUNTRY : STEPS;\n\n const {\n fieldValues,\n stepState,\n setFieldValues,\n previousStep,\n nextStep,\n goToStep,\n setStepValues,\n } = useStepState(\n stepsToUse as Record<keyof typeof STEPS, Step<keyof typeof STEPS>>,\n );\n\n const { selectCountryForm, isLoading: isLoadingCountries } =\n useCountriesSchemaField({\n jsfModify: options?.jsfModify?.select_country,\n jsonSchemaVersion: options?.jsonSchemaVersion,\n });\n\n const createEmploymentMutation = useCreateEmployment(options);\n const updateEmploymentMutation = useUpdateEmployment(options);\n const updateBenefitsOffersMutation = useUpdateBenefitsOffers(options);\n const { mutateAsync: createEmploymentMutationAsync } = mutationToPromise(\n createEmploymentMutation,\n );\n const { mutateAsync: updateEmploymentMutationAsync } = mutationToPromise(\n updateEmploymentMutation,\n );\n const { mutateAsync: updateBenefitsOffersMutationAsync } = mutationToPromise(\n updateBenefitsOffersMutation,\n );\n\n const formType =\n stepToFormSchemaMap[stepState.currentStep.name] ||\n 'employment_basic_information';\n const employmentKey = jsonSchemaToEmployment[formType] as keyof Employment;\n const serverEmploymentData = (employment?.[employmentKey] || {}) as Record<\n string,\n unknown\n >;\n\n const useJSONSchema = ({\n form,\n options: jsonSchemaOptions = {},\n }: {\n form: JSONSchemaFormType;\n options?: {\n jsfModify?: JSFModify;\n queryOptions?: { enabled?: boolean };\n };\n }) => {\n return useJSONSchemaForm({\n countryCode: internalCountryCode as string,\n form: form,\n fieldValues:\n Object.keys(fieldValues).length > 0\n ? {\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n }\n : serverEmploymentData,\n options: {\n ...jsonSchemaOptions,\n queryOptions: {\n enabled: jsonSchemaOptions.queryOptions?.enabled ?? true,\n },\n },\n });\n };\n\n const isBasicInformationDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'basic_information' ||\n Boolean(employmentId)),\n );\n\n const isContractDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'contract_details' ||\n Boolean(employmentId)),\n );\n\n const {\n data: basicInformationForm,\n isLoading: isLoadingBasicInformationForm,\n } = useJSONSchema({\n form: 'employment_basic_information',\n options: {\n jsfModify: options?.jsfModify?.basic_information,\n queryOptions: {\n enabled: isBasicInformationDetailsEnabled,\n },\n },\n });\n\n const annualGrossSalaryField =\n options?.jsfModify?.contract_details?.fields?.annual_gross_salary;\n const annualSalaryFieldPresentation =\n annualGrossSalaryField &&\n typeof annualGrossSalaryField === 'object' &&\n 'presentation' in annualGrossSalaryField\n ? (\n annualGrossSalaryField as {\n presentation?: {\n annual_gross_salary_conversion_properties?: {\n label?: string;\n description?: string;\n };\n };\n }\n ).presentation\n : undefined;\n\n const customFields = useMemo(\n () => ({\n fields: {\n annual_gross_salary: {\n ...annualGrossSalaryField,\n presentation: {\n annual_gross_salary_conversion_properties: {\n label:\n annualSalaryFieldPresentation\n ?.annual_gross_salary_conversion_properties?.label,\n description:\n annualSalaryFieldPresentation\n ?.annual_gross_salary_conversion_properties?.description,\n },\n Component: (props: JSFField & { currency: string }) => (\n <AnnualGrossSalary\n desiredCurrency={company?.desired_currency || ''}\n {...props}\n />\n ),\n },\n },\n },\n }),\n [\n company?.desired_currency,\n annualSalaryFieldPresentation,\n annualGrossSalaryField,\n ],\n );\n\n const { data: contractDetailsForm, isLoading: isLoadingContractDetailsForm } =\n useJSONSchema({\n form: 'contract_details',\n options: {\n jsfModify: {\n ...options?.jsfModify?.contract_details,\n fields: {\n ...options?.jsfModify?.contract_details?.fields,\n ...customFields.fields,\n },\n },\n queryOptions: {\n enabled: isContractDetailsEnabled,\n },\n },\n });\n\n const {\n data: benefitOffersSchema,\n isLoading: isLoadingBenefitsOffersSchema,\n } = useBenefitOffersSchema(\n internalEmploymentId as string,\n fieldValues,\n options,\n );\n\n const initialValuesBenefitOffers = useMemo(() => {\n if (stepState.currentStep.name === 'benefits') {\n const benefitsFormValues = {\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...fieldValues,\n };\n return mergeWith({}, benefitOffers, benefitsFormValues);\n }\n return {};\n }, [\n stepState.currentStep.name,\n benefitOffers,\n stepState.values,\n fieldValues,\n ]);\n\n const stepFields: Record<keyof typeof STEPS, Fields> = useMemo(\n () => ({\n select_country: selectCountryForm?.fields || [],\n basic_information: basicInformationForm?.fields || [],\n contract_details: contractDetailsForm?.fields || [],\n benefits: benefitOffersSchema?.fields || [],\n review: [],\n }),\n [\n selectCountryForm?.fields,\n basicInformationForm?.fields,\n contractDetailsForm?.fields,\n benefitOffersSchema?.fields,\n ],\n );\n\n const initialValues = {\n select_country: getInitialValues(stepFields[stepState.currentStep.name], {\n country: internalCountryCode || employment?.country.code || '',\n }),\n basic_information: getInitialValues(\n stepFields[stepState.currentStep.name],\n employment?.basic_information || {},\n ),\n contract_details: getInitialValues(\n stepFields[stepState.currentStep.name],\n employment?.contract_details || {},\n ),\n benefits: initialValuesBenefitOffers || {},\n };\n\n const initialLoading =\n isLoadingBasicInformationForm ||\n isLoadingContractDetailsForm ||\n isLoadingEmployment ||\n isLoadingBenefitsOffersSchema ||\n isLoadingBenefitOffers ||\n isLoadingCompany ||\n isLoadingCountries;\n\n const isEmploymentReadOnly =\n employment &&\n reviewStepAllowedEmploymentStatus.includes(employment?.status);\n\n const isNavigatingToReview = Boolean(\n employmentId &&\n isEmploymentReadOnly &&\n !initialLoading &&\n stepFields['basic_information'].length > 0 &&\n stepFields['contract_details'].length > 0 &&\n stepState.currentStep.name !== 'review',\n );\n\n useEffect(() => {\n if (isNavigatingToReview) {\n const selectCountryInitialValues = getInitialValues(\n stepFields['select_country'],\n {\n country: internalCountryCode || employment?.country.code || '',\n },\n );\n\n const basicInformationInitialValues = getInitialValues(\n stepFields['basic_information'],\n employment?.basic_information || {},\n );\n\n const contractDetailsInitialValues = getInitialValues(\n stepFields['contract_details'],\n employment?.contract_details || {},\n );\n\n const benefitsInitialValues = getInitialValues(\n stepFields['benefits'],\n initialValuesBenefitOffers || {},\n );\n fieldsMetaRef.current = {\n select_country: prettifyFormValues(\n selectCountryInitialValues,\n stepFields['select_country'],\n ),\n basic_information: prettifyFormValues(\n basicInformationInitialValues,\n stepFields['basic_information'],\n ),\n contract_details: prettifyFormValues(\n contractDetailsInitialValues,\n stepFields['contract_details'],\n ),\n benefits: prettifyFormValues(\n benefitsInitialValues,\n stepFields['benefits'],\n ),\n };\n\n setStepValues({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n review: {},\n });\n\n goToStep('review');\n }\n }, [\n employmentId,\n employment,\n initialLoading,\n internalCountryCode,\n goToStep,\n initialValuesBenefitOffers,\n stepFields,\n stepState.currentStep.name,\n setStepValues,\n isNavigatingToReview,\n ]);\n\n const isLoading = initialLoading || isNavigatingToReview;\n\n function parseFormValues(values: FieldValues) {\n if (selectCountryForm && stepState.currentStep.name === 'select_country') {\n return values;\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n return parseJSFToValidate(values, basicInformationForm?.fields, {\n isPartialValidation: true,\n });\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n return parseJSFToValidate(values, contractDetailsForm?.fields, {\n isPartialValidation: true,\n });\n }\n\n return {};\n }\n\n async function onSubmit(values: FieldValues) {\n // Prettify values for the current step\n fieldsMetaRef.current[stepState.currentStep.name] = prettifyFormValues(\n values,\n stepFields[stepState.currentStep.name],\n );\n\n const parsedValues = parseFormValues(values);\n refetchCompany();\n switch (stepState.currentStep.name) {\n case 'select_country': {\n setInternalCountryCode(parsedValues.country);\n return Promise.resolve({ data: { countryCode: parsedValues.country } });\n }\n case 'basic_information': {\n const isEmploymentNotLoaded =\n !internalEmploymentId && internalCountryCode;\n const hasChangedCountry =\n internalEmploymentId &&\n internalCountryCode &&\n employment?.country &&\n employment?.country.code !== internalCountryCode;\n if (isEmploymentNotLoaded || hasChangedCountry) {\n const payload: EmploymentCreateParams = {\n basic_information: parsedValues,\n type: type,\n country_code: internalCountryCode,\n };\n try {\n const response = await createEmploymentMutationAsync(payload);\n await refetchCompany();\n setInternalEmploymentId(\n // @ts-expect-error the types from the response are not matching\n response.data?.data?.employment?.id,\n );\n return response;\n } catch (error) {\n console.error('Error creating onboarding:', error);\n throw error;\n }\n } else if (internalEmploymentId) {\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId,\n basic_information: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n });\n }\n\n return;\n }\n case 'contract_details': {\n const payload: EmploymentFullParams = {\n contract_details: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n };\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId as string,\n ...payload,\n });\n }\n\n case 'benefits': {\n return updateBenefitsOffersMutationAsync({\n employmentId: internalEmploymentId as string,\n ...values,\n });\n }\n }\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n function goTo(step: keyof typeof STEPS) {\n goToStep(step);\n }\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId: internalEmploymentId,\n\n /**\n * Credit risk status of the company, useful to know what to to show in the review step\n * The possible values are:\n * - not_started\n * - ready\n * - in_progress\n * - referred\n * - fail\n * - deposit_required\n * - no_deposit_required\n */\n\n creditRiskStatus: company?.default_legal_entity_credit_risk_status,\n\n owner_id: company?.company_owner_user_id,\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the onboarding schema\n */\n fields: stepFields[stepState.currentStep.name],\n /**\n * Loading state indicating if the onboarding schema is being fetched\n */\n isLoading: isLoading,\n /**\n * Loading state indicating if the onboarding mutation is in progress\n */\n isSubmitting:\n createEmploymentMutation.isPending ||\n updateEmploymentMutation.isPending ||\n updateBenefitsOffersMutation.isPending,\n /**\n * Initial form values\n */\n initialValues,\n /**\n * Function to validate form values against the onboarding schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: (values: FieldValues) => {\n if (stepState.currentStep.name === 'select_country') {\n return selectCountryForm.handleValidation(values);\n }\n if (stepState.currentStep.name === 'benefits' && benefitOffersSchema) {\n const parsedValues = parseJSFToValidate(\n values,\n benefitOffersSchema?.fields,\n );\n\n return benefitOffersSchema?.handleValidation(parsedValues);\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n basicInformationForm?.fields,\n );\n return basicInformationForm?.handleValidation(parsedValues);\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n contractDetailsForm?.fields,\n );\n return contractDetailsForm?.handleValidation(parsedValues);\n }\n\n return null;\n },\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\n\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next,\n\n /**\n * Function to handle going to a specific step\n * @param step The step to go to.\n * @returns {void}\n */\n goTo,\n\n /**\n * Fields metadata for each step\n */\n meta: {\n fields: fieldsMetaRef.current,\n },\n\n /**\n * Function to refetch the employment data\n * @returns {void}\n */\n refetchEmployment,\n /**\n * Employment data\n */\n employment,\n\n /**\n * let's the user know that the employment cannot be edited, happens when employment.status is invited, created_awaiting_reserve or created_reserve_paid\n * @returns {boolean}\n */\n isEmploymentReadOnly,\n };\n};\n"],"mappings":"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","names":["useEffect","useMemo","useRef","useState","mergeWith","jsx","jsonSchemaToEmployment","stepToFormSchemaMap","useOnboarding","__name","employmentId","companyId","countryCode","type","options","fieldsMetaRef","useRef","internalEmploymentId","setInternalEmploymentId","useState","internalCountryCode","setInternalCountryCode","employment","isLoadingEmployment","refetchEmployment","useEmployment","benefitOffers","isLoadingBenefitOffers","useBenefitOffers","company","isLoadingCompany","refetchCompany","useCompany","stepsToUse","STEPS_WITHOUT_SELECT_COUNTRY","STEPS","fieldValues","stepState","setFieldValues","previousStep","nextStep","goToStep","setStepValues","useStepState","selectCountryForm","isLoadingCountries","useCountriesSchemaField","createEmploymentMutation","useCreateEmployment","updateEmploymentMutation","useUpdateEmployment","updateBenefitsOffersMutation","useUpdateBenefitsOffers","createEmploymentMutationAsync","mutationToPromise","updateEmploymentMutationAsync","updateBenefitsOffersMutationAsync","formType","employmentKey","serverEmploymentData","useJSONSchema","form","jsonSchemaOptions","useJSONSchemaForm","isBasicInformationDetailsEnabled","isContractDetailsEnabled","basicInformationForm","isLoadingBasicInformationForm","annualGrossSalaryField","annualSalaryFieldPresentation","customFields","useMemo","props","AnnualGrossSalary","contractDetailsForm","isLoadingContractDetailsForm","benefitOffersSchema","isLoadingBenefitsOffersSchema","useBenefitOffersSchema","initialValuesBenefitOffers","benefitsFormValues","mergeWith","stepFields","initialValues","getInitialValues","initialLoading","isEmploymentReadOnly","reviewStepAllowedEmploymentStatus","isNavigatingToReview","useEffect","selectCountryInitialValues","basicInformationInitialValues","contractDetailsInitialValues","benefitsInitialValues","prettifyFormValues","isLoading","parseFormValues","values","parseJSFToValidate","onSubmit","parsedValues","isEmploymentNotLoaded","hasChangedCountry","payload","response","error","back","next","goTo","step"]}
|
package/dist/chunk-KHZ2ITFO.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./chunk-P37U34EQ.js";function s(a){return{mutateAsync:e(n=>new Promise((t,o)=>{a.mutate(n,{onSuccess:e(r=>{r.data?t({data:r.data,error:null}):t({data:null,error:new Error("Something went wrong. Please try again later.")})},"onSuccess"),onError:e(r=>{o({data:null,error:r})},"onError")})}),"mutateAsync")}}e(s,"mutationToPromise");export{s as a};
|
|
2
|
-
//# sourceMappingURL=chunk-KHZ2ITFO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/mutations.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { UseMutationResult } from '@tanstack/react-query';\n\ntype MutationData<T> =\n T extends UseMutationResult<infer R, any, any, any> ? R : never;\ntype MutationVariables<T> =\n T extends UseMutationResult<any, any, infer V, any> ? V : never;\ntype MutationError<T> =\n T extends UseMutationResult<any, infer E, any, any> ? E : never;\n\nexport interface SuccessResponse<D> {\n data: D;\n error: null;\n}\n\nexport interface ErrorResponse<E> {\n data: null;\n error: E;\n}\n\ntype PromiseResult<D, E> = SuccessResponse<D> | ErrorResponse<E>;\n\n/**\n * Converts a mutation to a promise-based API. We avoid using the\n * `mutateAsync` method from react-query for 2 reasons:\n * 1. We lose the isPending state of the mutation\n * 2. We want to return the data and error in a consistent way\n * (either data or error is null)\n * @param mutation\n * @returns\n */\nexport function mutationToPromise<\n T extends UseMutationResult<any, any, any, any>,\n>(mutation: T) {\n type Data = MutationData<T>;\n type Variables = MutationVariables<T>;\n type Error = MutationError<T>;\n\n return {\n mutateAsync: (values: Variables): Promise<PromiseResult<Data, Error>> => {\n return new Promise((resolve, reject) => {\n mutation.mutate(values, {\n onSuccess: (response) => {\n if (response.data) {\n resolve({\n data: response.data as Data,\n error: null,\n });\n } else {\n resolve({\n data: null,\n error: new Error(\n 'Something went wrong. Please try again later.',\n ) as unknown as Error,\n });\n }\n },\n onError: (error) => {\n reject({\n data: null,\n error: error as Error,\n });\n },\n });\n });\n },\n };\n}\n"],"mappings":"wCA+BO,SAASA,EAEdC,EAAa,CAKb,MAAO,CACL,YAAaC,EAACC,GACL,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtCJ,EAAS,OAAOE,EAAQ,CACtB,UAAWD,EAACI,GAAa,CACnBA,EAAS,KACXF,EAAQ,CACN,KAAME,EAAS,KACf,MAAO,IACT,CAAC,EAEDF,EAAQ,CACN,KAAM,KACN,MAAO,IAAI,MACT,+CACF,CACF,CAAC,CAEL,EAdW,aAeX,QAASF,EAACK,GAAU,CAClBF,EAAO,CACL,KAAM,KACN,MAAOE,CACT,CAAC,CACH,EALS,UAMX,CAAC,CACH,CAAC,EAzBU,cA2Bf,CACF,CApCgBL,EAAAF,EAAA","names":["mutationToPromise","mutation","__name","values","resolve","reject","response","error"]}
|
package/dist/chunk-L6LGRALQ.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as p}from"./chunk-VEOGRXYK.js";import{a as i}from"./chunk-C3HJSV4T.js";import{a as f}from"./chunk-GPAE53HO.js";import{a as c}from"./chunk-GAXGAK4P.js";import{a as t}from"./chunk-JTP3LZ77.js";import{a as r}from"./chunk-HGHKZF7M.js";import{a as m}from"./chunk-VJEL5MZJ.js";import{a as s}from"./chunk-VJEJUUY2.js";import{a}from"./chunk-VN4HDCRB.js";import{a as n}from"./chunk-PGWKJ6FK.js";import{a as e}from"./chunk-P37U34EQ.js";import{useId as y,useState as I}from"react";import{jsx as w}from"react/jsx-runtime";var A=e(({employmentId:d,companyId:S,countryCode:b,type:g="employee",render:u,options:l})=>{let B=y(),o=t({companyId:S,countryCode:b,employmentId:d,type:g,options:l}),[O,v]=I({showReserveInvoice:!1,showInviteSuccessful:!1});return w(n.Provider,{value:{formId:B,onboardingBag:o,creditScore:O,setCreditScore:v},children:u({onboardingBag:o,components:{BasicInformationStep:r,ContractDetailsStep:s,BenefitsStep:m,SubmitButton:i,BackButton:a,OnboardingInvite:p,SelectCountryStep:c,ReviewStep:f}})})},"OnboardingFlow");export{A as a};
|
|
2
|
-
//# sourceMappingURL=chunk-L6LGRALQ.js.map
|
package/dist/chunk-RWYOUDM5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as z}from"./chunk-WVJDCDGZ.js";import{b as x}from"./chunk-PWUYHFON.js";import{d as _,f as F,g as b,h as C,j as g,k as S,m as j,o as w,p as v,q as E,s as O,v as q,x as P}from"./chunk-WKK63LAY.js";import{d as a}from"./chunk-3ZWDIEEM.js";import{a as V}from"./chunk-MH6KKP6K.js";import{a as r}from"./chunk-P37U34EQ.js";import{createHeadlessForm as h,modify as d}from"@remoteoss/json-schema-form";import{useMutation as c,useQuery as l}from"@tanstack/react-query";var H=r(e=>{let{client:n}=a();return l({queryKey:["employment",e],retry:!1,enabled:!!e,select:r(({data:t})=>t?.data.employment,"select"),queryFn:r(async()=>{let t=await v({client:n,headers:{Authorization:""},path:{employment_id:e}});if(t.error||!t.data)throw new Error("Failed to fetch employment data");return t},"queryFn")})},"useEmployment"),W=r(e=>{let{client:n}=a();return l({queryKey:["company",e],retry:!1,enabled:!!e,queryFn:r(async()=>{let t=await S({client:n,headers:{Authorization:""},path:{company_id:e}});if(t.error||!t.data)throw new Error("Failed to fetch employment data");return t},"queryFn"),select:r(({data:t})=>t.data.company,"select")})},"useCompany"),X=r(e=>{let{client:n}=a();return l({queryKey:["benefit-offers",e],retry:!1,enabled:!!e,queryFn:r(async()=>F({client:n,headers:{Authorization:""},path:{employment_id:e}}).then(t=>{if(t.error||!t.data)throw new Error("Failed to fetch benefit offers data");return t}),"queryFn"),select:r(({data:t})=>t?.data?.reduce((o,s)=>({...o,[s.benefit_group.slug]:{value:s.benefit_tier?.slug??""}}),{}),"select")})},"useBenefitOffers"),Y=r(()=>{let{client:e}=a();return c({mutationFn:r(n=>q({client:e,headers:{Authorization:""},path:n}),"mutationFn")})},"useEmploymentInvite"),Z=r(()=>{let{client:e}=a();return c({mutationFn:r(n=>g({client:e,headers:{Authorization:""},body:n}),"mutationFn")})},"useCreateReserveInvoice"),$=r(({countryCode:e,form:n,fieldValues:t,options:o})=>{let{client:s}=a(),i=o?.jsonSchemaVersion?.form_schema?.[n]?{json_schema_version:o.jsonSchemaVersion.form_schema[n]}:{};return l({queryKey:["onboarding-json-schema-form",e,n],retry:!1,queryFn:r(async()=>{let m=await j({client:s,headers:{Authorization:""},path:{country_code:e,form:n},query:{skip_benefits:!0,...i}});if(m.error||!m.data)throw new Error("Failed to fetch onboarding schema");return m},"queryFn"),enabled:o?.queryOptions?.enabled,select:r(({data:m})=>{let u=m?.data||{};if(o&&o.jsfModify){let{schema:f}=d(u,o.jsfModify);u=f}let y=x(u.properties||{},"money").reduce((f,p)=>(f[p]=V(t[p]),f),{});return h(u,{initialValues:{...t,...y}})},"select")})},"useJSONSchemaForm"),ee=r((e,n,t)=>{let o=t?.jsonSchemaVersion?.benefit_offers_form_schema?{json_schema_version:t.jsonSchemaVersion.benefit_offers_form_schema}:{},{client:s}=a();return l({queryKey:["benefit-offers-schema",e],retry:!1,enabled:!!e,queryFn:r(async()=>{let i=await w({client:s,headers:{Authorization:""},path:{employment_id:e},query:o});if(i.error||!i.data)throw new Error("Failed to fetch benefit offers schema");return i},"queryFn"),select:r(({data:i})=>{let m=i?.data?.schema||{};if(t&&t.jsfModify?.benefits){let{schema:y}=d(m,t.jsfModify.benefits);m=y}let u=Object.keys(n).length>0;return h(m,{initialValues:u?{...n}:{}})},"select")})},"useBenefitOffersSchema"),te=r(e=>{let{client:n}=a(),t=e?.jsonSchemaVersion?.form_schema?.employment_basic_information?{json_schema_version:e.jsonSchemaVersion.form_schema.employment_basic_information}:{};return c({mutationFn:r(o=>_({client:n,headers:{Authorization:""},body:o,query:{...t}}),"mutationFn")})},"useCreateEmployment"),ne=r(e=>{let{client:n}=a(),t={employment_basic_information_json_schema_version:e?.jsonSchemaVersion?.form_schema?.employment_basic_information,employment_contract_details_json_schema_version:e?.jsonSchemaVersion?.form_schema?.contract_details},o=Object.fromEntries(Object.entries(t).filter(([,s])=>s!==void 0));return c({mutationFn:r(({employmentId:s,...i})=>E({client:n,headers:{Authorization:""},body:i,path:{employment_id:s},query:{skip_benefits:!0,...o}}),"mutationFn")})},"useUpdateEmployment"),re=r(e=>{let{client:n}=a();return c({mutationFn:r(({employmentId:t,...o})=>{let s=e?.jsonSchemaVersion?.benefit_offers_form_schema?{json_schema_version:e.jsonSchemaVersion.benefit_offers_form_schema}:{};return b({client:n,headers:{Authorization:""},body:o,path:{employment_id:t},query:{...s}})},"mutationFn")})},"useUpdateBenefitsOffers"),oe=r(()=>{let{client:e}=a();return c({mutationFn:r(n=>C({client:e,headers:{Authorization:""},body:n}),"mutationFn")})},"useMagicLink"),M=r(()=>{let{client:e}=a();return l({queryKey:["countries"],retry:!1,queryFn:r(async()=>{let n=await O({client:e,headers:{Authorization:""}});if(n.error||!n.data)throw new Error("Failed to fetch supported countries");return n},"queryFn"),select:r(({data:n})=>n?.data?.map(t=>({label:t.name,value:t.code}))||[],"select")})},"useCountries"),se=r(e=>{let{data:n,isLoading:t}=M(),{schema:o}=d(z.data.schema,e?.jsfModify||{}),s=h(o);if(n){let i=s.fields.find(m=>m.name==="country");i&&(i.options=n)}return{isLoading:t,selectCountryForm:s}},"useCountriesSchemaField"),ae=r(()=>{let{client:e}=a();return c({mutationFn:r(n=>P({client:e,headers:{Authorization:""},body:n}),"mutationFn")})},"useConvertCurrency");export{H as a,W as b,X as c,Y as d,Z as e,$ as f,ee as g,te as h,ne as i,re as j,oe as k,se as l,ae as m};
|
|
2
|
-
//# sourceMappingURL=chunk-RWYOUDM5.js.map
|
package/dist/chunk-VEOGRXYK.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as g,e as S}from"./chunk-RWYOUDM5.js";import{b as R}from"./chunk-PGWKJ6FK.js";import{a as m}from"./chunk-KHZ2ITFO.js";import{b as f}from"./chunk-GEYFQVQI.js";import{b as y}from"./chunk-3ZWDIEEM.js";import{a}from"./chunk-P37U34EQ.js";import{jsx as w}from"react/jsx-runtime";function O({onSubmit:I,onSuccess:d,onError:o,render:u,...n}){let{components:b}=y(),{onboardingBag:t,setCreditScore:c}=R(),i=g(),s=S(),{mutateAsync:_}=m(i),{mutateAsync:C}=m(s),l=a(async()=>{try{if(await I?.(),t.creditRiskStatus==="deposit_required"&&t.employmentId&&t.employment?.status&&!t.isEmploymentReadOnly){let e=await C({employment_slug:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"created_awaiting_reserve"}),c?.(r=>({...r,showReserveInvoice:!0})),t.refetchEmployment();return}e.error&&o?.(e.error)}else if(t.employmentId){let e=await _({employment_id:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"invited"}),c?.(r=>({...r,showInviteSuccessful:!0})),t.refetchEmployment();return}e.error&&o?.(e.error)}}catch(e){o?.(e)}},"handleSubmit"),p=t.creditRiskStatus==="deposit_required"&&t.employment?.status&&!t.isEmploymentReadOnly,v=b?.button;return v?w(v,{...n,disabled:i.isPending||s.isPending||n.disabled,onClick:e=>{l(),n.onClick?.(e)},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})}):w(f,{...n,disabled:i.isPending||s.isPending||n.disabled,onClick:()=>{l()},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})})}a(O,"OnboardingInvite");export{O as a};
|
|
2
|
-
//# sourceMappingURL=chunk-VEOGRXYK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/OnboardingInvite.tsx"],"sourcesContent":["import { ButtonHTMLAttributes, ReactNode } from 'react';\nimport { useEmploymentInvite } from './api';\nimport { Button } from '@/src/components/ui/button';\nimport { useCreateReserveInvoice } from '@/src/flows/Onboarding/api';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { SuccessResponse } from '@/src/client';\nimport { useOnboardingContext } from './context';\nimport { useFormFields } from '@/src/context';\n\nexport type OnboardingInviteProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n onSuccess?: ({\n data,\n employmentStatus,\n }: {\n data: SuccessResponse;\n employmentStatus: 'invited' | 'created_awaiting_reserve';\n }) => void | Promise<void>;\n onError?: (error: unknown) => void;\n onSubmit?: () => void | Promise<void>;\n render: (props: {\n employmentStatus: 'invited' | 'created_awaiting_reserve';\n }) => ReactNode;\n} & Record<string, unknown>;\n\nexport function OnboardingInvite({\n onSubmit,\n onSuccess,\n onError,\n render,\n ...props\n}: OnboardingInviteProps) {\n const { components } = useFormFields();\n const { onboardingBag, setCreditScore } = useOnboardingContext();\n const employmentInviteMutation = useEmploymentInvite();\n const useCreateReserveInvoiceMutation = useCreateReserveInvoice();\n\n const { mutateAsync: employmentInviteMutationAsync } = mutationToPromise(\n employmentInviteMutation,\n );\n\n const { mutateAsync: createReserveInvoiceMutationAsync } = mutationToPromise(\n useCreateReserveInvoiceMutation,\n );\n\n const handleSubmit = async () => {\n try {\n await onSubmit?.();\n if (\n onboardingBag.creditRiskStatus === 'deposit_required' &&\n onboardingBag.employmentId &&\n onboardingBag.employment?.status &&\n !onboardingBag.isEmploymentReadOnly\n ) {\n const response = await createReserveInvoiceMutationAsync({\n employment_slug: onboardingBag.employmentId,\n });\n if (response.data) {\n await onSuccess?.({\n data: response.data as SuccessResponse,\n employmentStatus: 'created_awaiting_reserve',\n });\n setCreditScore?.((prev) => ({\n ...prev,\n showReserveInvoice: true,\n }));\n onboardingBag.refetchEmployment();\n return;\n }\n\n if (response.error) {\n onError?.(response.error);\n }\n } else if (onboardingBag.employmentId) {\n const response = await employmentInviteMutationAsync({\n employment_id: onboardingBag.employmentId,\n });\n if (response.data) {\n await onSuccess?.({\n data: response.data as SuccessResponse,\n employmentStatus: 'invited',\n });\n setCreditScore?.((prev) => ({\n ...prev,\n showInviteSuccessful: true,\n }));\n onboardingBag.refetchEmployment();\n return;\n }\n if (response.error) {\n onError?.(response.error);\n }\n }\n } catch (error) {\n onError?.(error);\n }\n };\n\n const isReserveFlow =\n onboardingBag.creditRiskStatus === 'deposit_required' &&\n onboardingBag.employment?.status &&\n !onboardingBag.isEmploymentReadOnly;\n\n const CustomButton = components?.button;\n if (CustomButton) {\n return (\n <CustomButton\n {...props}\n disabled={\n employmentInviteMutation.isPending ||\n useCreateReserveInvoiceMutation.isPending ||\n props.disabled\n }\n onClick={(evt) => {\n handleSubmit();\n props.onClick?.(evt);\n }}\n >\n {render({\n employmentStatus: isReserveFlow\n ? 'created_awaiting_reserve'\n : 'invited',\n })}\n </CustomButton>\n );\n }\n\n return (\n <Button\n {...props}\n disabled={\n employmentInviteMutation.isPending ||\n useCreateReserveInvoiceMutation.isPending ||\n props.disabled\n }\n onClick={() => {\n handleSubmit();\n }}\n >\n {render({\n employmentStatus: isReserveFlow\n ? 'created_awaiting_reserve'\n : 'invited',\n })}\n </Button>\n );\n}\n"],"mappings":"kPAyGM,cAAAA,MAAA,oBAjFC,SAASC,EAAiB,CAC/B,SAAAC,EACA,UAAAC,EACA,QAAAC,EACA,OAAAC,EACA,GAAGC,CACL,EAA0B,CACxB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,cAAAC,EAAe,eAAAC,CAAe,EAAIC,EAAqB,EACzDC,EAA2BC,EAAoB,EAC/CC,EAAkCC,EAAwB,EAE1D,CAAE,YAAaC,CAA8B,EAAIC,EACrDL,CACF,EAEM,CAAE,YAAaM,CAAkC,EAAID,EACzDH,CACF,EAEMK,EAAeC,EAAA,SAAY,CAC/B,GAAI,CAEF,GADA,MAAMlB,IAAW,EAEfO,EAAc,mBAAqB,oBACnCA,EAAc,cACdA,EAAc,YAAY,QAC1B,CAACA,EAAc,qBACf,CACA,IAAMY,EAAW,MAAMH,EAAkC,CACvD,gBAAiBT,EAAc,YACjC,CAAC,EACD,GAAIY,EAAS,KAAM,CACjB,MAAMlB,IAAY,CAChB,KAAMkB,EAAS,KACf,iBAAkB,0BACpB,CAAC,EACDX,IAAkBY,IAAU,CAC1B,GAAGA,EACH,mBAAoB,EACtB,EAAE,EACFb,EAAc,kBAAkB,EAChC,MACF,CAEIY,EAAS,OACXjB,IAAUiB,EAAS,KAAK,CAE5B,SAAWZ,EAAc,aAAc,CACrC,IAAMY,EAAW,MAAML,EAA8B,CACnD,cAAeP,EAAc,YAC/B,CAAC,EACD,GAAIY,EAAS,KAAM,CACjB,MAAMlB,IAAY,CAChB,KAAMkB,EAAS,KACf,iBAAkB,SACpB,CAAC,EACDX,IAAkBY,IAAU,CAC1B,GAAGA,EACH,qBAAsB,EACxB,EAAE,EACFb,EAAc,kBAAkB,EAChC,MACF,CACIY,EAAS,OACXjB,IAAUiB,EAAS,KAAK,CAE5B,CACF,OAASE,EAAO,CACdnB,IAAUmB,CAAK,CACjB,CACF,EAnDqB,gBAqDfC,EACJf,EAAc,mBAAqB,oBACnCA,EAAc,YAAY,QAC1B,CAACA,EAAc,qBAEXgB,EAAelB,GAAY,OACjC,OAAIkB,EAEAzB,EAACyB,EAAA,CACE,GAAGnB,EACJ,SACEM,EAAyB,WACzBE,EAAgC,WAChCR,EAAM,SAER,QAAUoB,GAAQ,CAChBP,EAAa,EACbb,EAAM,UAAUoB,CAAG,CACrB,EAEC,SAAArB,EAAO,CACN,iBAAkBmB,EACd,2BACA,SACN,CAAC,EACH,EAKFxB,EAAC2B,EAAA,CACE,GAAGrB,EACJ,SACEM,EAAyB,WACzBE,EAAgC,WAChCR,EAAM,SAER,QAAS,IAAM,CACba,EAAa,CACf,EAEC,SAAAd,EAAO,CACN,iBAAkBmB,EACd,2BACA,SACN,CAAC,EACH,CAEJ,CAzHgBJ,EAAAnB,EAAA","names":["jsx","OnboardingInvite","onSubmit","onSuccess","onError","render","props","components","useFormFields","onboardingBag","setCreditScore","useOnboardingContext","employmentInviteMutation","useEmploymentInvite","useCreateReserveInvoiceMutation","useCreateReserveInvoice","employmentInviteMutationAsync","mutationToPromise","createReserveInvoiceMutationAsync","handleSubmit","__name","response","prev","error","isReserveFlow","CustomButton","evt","Button"]}
|
package/dist/chunk-VJEJUUY2.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as i}from"./chunk-QKTDO33H.js";import{b as n}from"./chunk-PGWKJ6FK.js";import{a as r}from"./chunk-P37U34EQ.js";import{jsx as l}from"react/jsx-runtime";function u({onSubmit:s,onError:a,onSuccess:m}){let{onboardingBag:t}=n(),p=r(async e=>{try{await s?.(t.parseFormValues(e));let o=await t.onSubmit(e);if(o?.data){await m?.(o.data),t?.next();return}o?.error&&a?.(o.error)}catch(o){a?.(o)}},"handleSubmit");return l(i,{defaultValues:t.stepState.values?.contract_details||t.initialValues.contract_details,onSubmit:p})}r(u,"ContractDetailsStep");export{u as a};
|
|
2
|
-
//# sourceMappingURL=chunk-VJEJUUY2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/ContractDetailsStep.tsx"],"sourcesContent":["import { useOnboardingContext } from './context';\nimport { OnboardingForm } from '@/src/flows/Onboarding/OnboardingForm';\nimport { EmploymentResponse } from '@/src/client';\nimport { ContractDetailsFormPayload } from '@/src/flows/Onboarding/types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\ntype ContractDetailsStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: ContractDetailsFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (response: EmploymentResponse) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: (error: Error) => void;\n};\n\nexport function ContractDetailsStep({\n onSubmit,\n onError,\n onSuccess,\n}: ContractDetailsStepProps) {\n const { onboardingBag } = useOnboardingContext();\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.(\n onboardingBag.parseFormValues(payload) as ContractDetailsFormPayload,\n );\n const response = await onboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response.data as EmploymentResponse);\n onboardingBag?.next();\n return;\n }\n if (response?.error) {\n onError?.(response.error);\n }\n } catch (error: unknown) {\n onError?.(error as Error);\n }\n };\n\n return (\n <OnboardingForm\n defaultValues={\n onboardingBag.stepState.values?.contract_details ||\n onboardingBag.initialValues.contract_details\n }\n onSubmit={handleSubmit}\n />\n );\n}\n"],"mappings":"wHA+CI,cAAAA,MAAA,oBA1BG,SAASC,EAAoB,CAClC,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAA6B,CAC3B,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAqB,EACzCC,EAAeC,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,MAAMP,IACJG,EAAc,gBAAgBI,CAAO,CACvC,EACA,IAAMC,EAAW,MAAML,EAAc,SAASI,CAAO,EACrD,GAAIC,GAAU,KAAM,CAClB,MAAMN,IAAYM,EAAS,IAA0B,EACrDL,GAAe,KAAK,EACpB,MACF,CACIK,GAAU,OACZP,IAAUO,EAAS,KAAK,CAE5B,OAASC,EAAgB,CACvBR,IAAUQ,CAAc,CAC1B,CACF,EAjBqB,gBAmBrB,OACEX,EAACY,EAAA,CACC,cACEP,EAAc,UAAU,QAAQ,kBAChCA,EAAc,cAAc,iBAE9B,SAAUE,EACZ,CAEJ,CAlCgBC,EAAAP,EAAA","names":["jsx","ContractDetailsStep","onSubmit","onError","onSuccess","onboardingBag","useOnboardingContext","handleSubmit","__name","payload","response","error","OnboardingForm"]}
|
package/dist/chunk-VJEL5MZJ.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-QKTDO33H.js";import{b as i}from"./chunk-PGWKJ6FK.js";import{d as s}from"./chunk-MH6KKP6K.js";import{a as t}from"./chunk-P37U34EQ.js";import{jsx as d}from"react/jsx-runtime";function P({components:m,onSubmit:p,onError:n,onSuccess:f}){let{onboardingBag:e}=i(),u=e.fields??[],c=s(u,e.initialValues.benefits);return d(a,{defaultValues:c,components:m,onSubmit:t(async r=>{try{await p?.(r);let o=await e.onSubmit(r);if(o?.data){await f?.(o.data),e?.next();return}o?.error&&n?.(o.error)}catch(o){n?.(o)}},"handleSubmit")})}t(P,"BenefitsStep");export{P as a};
|
|
2
|
-
//# sourceMappingURL=chunk-VJEL5MZJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/BenefitsStep.tsx"],"sourcesContent":["import { Components } from '@/src/types/remoteFlows';\nimport { OnboardingForm } from '@/src/flows/Onboarding/OnboardingForm';\nimport { useOnboardingContext } from '@/src/flows/Onboarding/context';\nimport { SuccessResponse } from '@/src/client';\nimport { getInitialValues } from '@/src/components/form/utils';\nimport { BenefitsFormPayload } from '@/src/flows/Onboarding/types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\ntype BenefitsStepProps = {\n components?: Components;\n /**\n * Callback function to be called when the benefits form is submitted.\n * It can be used to perform any additional validation or processing before\n * the onboarding moves to the last step.\n * @param values\n * @returns\n */\n onSubmit?: (values: BenefitsFormPayload) => void | Promise<void>;\n /**\n * Callback function to be called when the submitting benefits form fails.\n * @param error\n * @returns\n */\n onError?: (error: Error) => void;\n /**\n * Callback function to be called when benefits form is successfully submitted.\n * This function is called after the submitting benefits form is submitted.\n * @param data\n * @returns\n */\n onSuccess?: (data: SuccessResponse) => void | Promise<void>;\n};\n\nexport function BenefitsStep({\n components,\n onSubmit,\n onError,\n onSuccess,\n}: BenefitsStepProps) {\n const { onboardingBag } = useOnboardingContext();\n const fields = onboardingBag.fields ?? [];\n const initialValues = getInitialValues(\n fields,\n onboardingBag.initialValues.benefits,\n );\n\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.(payload as BenefitsFormPayload);\n const response = await onboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response.data as SuccessResponse);\n onboardingBag?.next();\n return;\n }\n if (response?.error) {\n onError?.(response.error);\n }\n } catch (error: unknown) {\n onError?.(error as Error);\n }\n };\n\n return (\n <OnboardingForm\n defaultValues={initialValues}\n components={components}\n onSubmit={handleSubmit}\n />\n );\n}\n"],"mappings":"2JAgEI,cAAAA,MAAA,oBA/BG,SAASC,EAAa,CAC3B,WAAAC,EACA,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAAsB,CACpB,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAqB,EACzCC,EAASF,EAAc,QAAU,CAAC,EAClCG,EAAgBC,EACpBF,EACAF,EAAc,cAAc,QAC9B,EAmBA,OACEN,EAACW,EAAA,CACC,cAAeF,EACf,WAAYP,EACZ,SArBiBU,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,MAAMV,IAAWU,CAA8B,EAC/C,IAAMC,EAAW,MAAMR,EAAc,SAASO,CAAO,EACrD,GAAIC,GAAU,KAAM,CAClB,MAAMT,IAAYS,EAAS,IAAuB,EAClDR,GAAe,KAAK,EACpB,MACF,CACIQ,GAAU,OACZV,IAAUU,EAAS,KAAK,CAE5B,OAASC,EAAgB,CACvBX,IAAUW,CAAc,CAC1B,CACF,EAfqB,gBAsBnB,CAEJ,CArCgBH,EAAAX,EAAA","names":["jsx","BenefitsStep","components","onSubmit","onError","onSuccess","onboardingBag","useOnboardingContext","fields","initialValues","getInitialValues","OnboardingForm","__name","payload","response","error"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|