@remoteoss/remote-flows 1.33.1 → 1.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CheckboxFieldDefault-5NZEGPA6.js +2 -0
- package/dist/CountryFieldDefault-GP2S2KN6.js +2 -0
- package/dist/DatePickerFieldDefault-KN4COEEO.js +2 -0
- package/dist/RadioGroupFieldDefault-L3CZN2ZT.js +2 -0
- package/dist/TextAreaFieldDefault-YKBNDA4U.js +2 -0
- package/dist/chunk-2HREQZP4.js +2 -0
- package/dist/chunk-2HREQZP4.js.map +1 -0
- package/dist/{chunk-RITVVN7T.js → chunk-2IIHA7AA.js} +2 -2
- package/dist/{chunk-OFML5F4A.js → chunk-35LCD6VA.js} +2 -2
- package/dist/{chunk-ESYUJGB5.js → chunk-3I4I7VH6.js} +2 -2
- package/dist/{chunk-LS22BMPO.js → chunk-3M4RT5QK.js} +2 -2
- package/dist/{chunk-72K4C6OR.js → chunk-3PKL3V6F.js} +2 -2
- package/dist/{chunk-IQNQ4LFU.js → chunk-4LF5J3KW.js} +2 -2
- package/dist/{chunk-LK3FPLM5.js → chunk-4ZA3PGCP.js} +2 -2
- package/dist/{chunk-ORB2D4LR.js → chunk-5CFXZWQ5.js} +2 -2
- package/dist/{chunk-OGXMCNOP.js → chunk-5FHNCDLU.js} +2 -2
- package/dist/{chunk-DCEOZPQA.js → chunk-5IOV4ADT.js} +2 -2
- package/dist/{chunk-YP4H7UGJ.js → chunk-5JFH2KYZ.js} +2 -2
- package/dist/{chunk-3E7EDKBM.js → chunk-5TAAGXI6.js} +2 -2
- package/dist/{chunk-BZ6GXHXM.js → chunk-6BTNYUKU.js} +2 -2
- package/dist/{chunk-6Q54DYVX.js → chunk-7N552DET.js} +2 -2
- package/dist/{chunk-CVZGPWZH.js → chunk-AZSD5MTJ.js} +2 -2
- package/dist/{chunk-JAO2GIK3.js → chunk-B4JJN54S.js} +2 -2
- package/dist/{chunk-2SMK7OOK.js → chunk-BDDSSFUK.js} +2 -2
- package/dist/{chunk-6FOEJAXI.js → chunk-C7GJUNNC.js} +2 -2
- package/dist/{chunk-3V7ZQOOW.js → chunk-CFCUY6VA.js} +2 -2
- package/dist/{chunk-BZNN4OST.js → chunk-CMPHQVJ3.js} +2 -2
- package/dist/{chunk-TVBZT6FA.js → chunk-D6MFIXSJ.js} +2 -2
- package/dist/chunk-D6MFIXSJ.js.map +1 -0
- package/dist/{chunk-53WGX4C7.js → chunk-DILDN6DN.js} +2 -2
- package/dist/{chunk-XLPYO4QS.js → chunk-DNTUDKSN.js} +2 -2
- package/dist/{chunk-FDSUWSSY.js → chunk-DTTE663D.js} +2 -2
- package/dist/{chunk-CRO2FOF3.js → chunk-DZJDM6PM.js} +2 -2
- package/dist/{chunk-6AGNWLFO.js → chunk-E4VXY33I.js} +2 -2
- package/dist/chunk-EJWKMMZV.js +2 -0
- package/dist/chunk-EJWKMMZV.js.map +1 -0
- package/dist/chunk-ER46UFIU.js +8 -0
- package/dist/chunk-ER46UFIU.js.map +1 -0
- package/dist/{chunk-MKUSE7JK.js → chunk-F2ENM2JE.js} +2 -2
- package/dist/chunk-F2ENM2JE.js.map +1 -0
- package/dist/{chunk-QN2UHYGE.js → chunk-FTRPPW6E.js} +2 -2
- package/dist/chunk-FTRPPW6E.js.map +1 -0
- package/dist/{chunk-UDEKRW6Y.js → chunk-G7MJDZGB.js} +2 -2
- package/dist/chunk-G7MJDZGB.js.map +1 -0
- package/dist/{chunk-7AQ7V57P.js → chunk-GIO4RGLD.js} +2 -2
- package/dist/{chunk-62LLY3AT.js → chunk-HPO77UMT.js} +2 -2
- package/dist/{chunk-P6FBUGRL.js → chunk-IPLCBEJI.js} +2 -2
- package/dist/{chunk-PFK6TYWV.js → chunk-JBX6GAPY.js} +2 -2
- package/dist/{chunk-QTKCCR2M.js → chunk-KE5UI2WF.js} +2 -2
- package/dist/{chunk-GFPU6XMO.js → chunk-KEMKRC6N.js} +2 -2
- package/dist/{chunk-3B3IR4XI.js → chunk-KV7CBYSI.js} +2 -2
- package/dist/{chunk-4KJV4WU4.js → chunk-KXGHVCV2.js} +2 -2
- package/dist/{chunk-LW3ZZPWS.js → chunk-KYQIUVYP.js} +2 -2
- package/dist/{chunk-A5CJEHJA.js → chunk-LKFGJU72.js} +2 -2
- package/dist/{chunk-YGMFPM7A.js → chunk-LPXJW7UB.js} +2 -2
- package/dist/{chunk-CF3L7F4S.js → chunk-MKI4IWX6.js} +2 -2
- package/dist/{chunk-MND3NWG7.js → chunk-N5DHVRQR.js} +2 -2
- package/dist/chunk-NFI74GKN.js +2 -0
- package/dist/{chunk-3EIBETN3.js.map → chunk-NFI74GKN.js.map} +1 -1
- package/dist/{chunk-N57H62CC.js → chunk-OBF27DKO.js} +2 -2
- package/dist/chunk-OJMB3357.js +2 -0
- package/dist/{chunk-AHRG5QCS.js.map → chunk-OJMB3357.js.map} +1 -1
- package/dist/{chunk-YYSFI73T.js → chunk-OSHTXKLJ.js} +2 -2
- package/dist/{chunk-CWIILDO2.js → chunk-PURTKT5Q.js} +2 -2
- package/dist/chunk-Q65JWWKR.js +2 -0
- package/dist/chunk-Q65JWWKR.js.map +1 -0
- package/dist/chunk-QHZPSH52.js +2 -0
- package/dist/chunk-QHZPSH52.js.map +1 -0
- package/dist/{chunk-IHHDOH6Y.js → chunk-QSAZUS52.js} +2 -2
- package/dist/{chunk-62IEME2X.js → chunk-QXQYT7IC.js} +2 -2
- package/dist/chunk-QXQYT7IC.js.map +1 -0
- package/dist/{chunk-V4TK2JKS.js → chunk-R63ZJMJA.js} +2 -2
- package/dist/{chunk-V4TK2JKS.js.map → chunk-R63ZJMJA.js.map} +1 -1
- package/dist/chunk-SVVZOMLQ.js +2 -0
- package/dist/chunk-SVVZOMLQ.js.map +1 -0
- package/dist/chunk-TP3B2OEW.js +2 -0
- package/dist/chunk-TP3B2OEW.js.map +1 -0
- package/dist/{chunk-ZPMOCFFN.js → chunk-UG5UQ72J.js} +2 -2
- package/dist/{chunk-T3VXOELH.js → chunk-VDHWWC4J.js} +2 -2
- package/dist/{chunk-SFW4O42J.js → chunk-W4YDSTXA.js} +2 -2
- package/dist/chunk-W4YDSTXA.js.map +1 -0
- package/dist/{chunk-ACT6XGJM.js → chunk-W5THF3XS.js} +2 -2
- package/dist/{chunk-J4NCN3TG.js → chunk-X5ZZPJII.js} +2 -2
- package/dist/{chunk-J4NCN3TG.js.map → chunk-X5ZZPJII.js.map} +1 -1
- package/dist/{chunk-DKSN6HVI.js → chunk-XJHIF5ZE.js} +2 -2
- package/dist/{chunk-3HTQWY65.js → chunk-YGK26YJ2.js} +2 -2
- package/dist/chunk-YHQYBVLS.js +2 -0
- package/dist/chunk-YHQYBVLS.js.map +1 -0
- package/dist/{chunk-CDN7R7Y7.js → chunk-YLAJZTKB.js} +2 -2
- package/dist/chunk-Z6XIW4JQ.js +2 -0
- package/dist/chunk-Z6XIW4JQ.js.map +1 -0
- package/dist/chunk-ZAZ24JS2.js +2 -0
- package/dist/chunk-ZAZ24JS2.js.map +1 -0
- package/dist/default-components.d.ts +2 -2
- package/dist/default-components.js +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +2 -2
- package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +3 -3
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +2 -2
- package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
- package/dist/flows/ContractAmendment/context.d.ts +3 -3
- package/dist/flows/ContractAmendment/hooks.d.ts +3 -3
- package/dist/flows/ContractAmendment/hooks.js +1 -1
- package/dist/flows/ContractAmendment/index.d.ts +3 -3
- package/dist/flows/ContractAmendment/index.js +1 -1
- package/dist/flows/ContractAmendment/types.d.ts +2 -2
- package/dist/flows/ContractAmendment/utils.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
- package/dist/flows/ContractorOnboarding/api.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/api.js +1 -1
- package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractPreviewHeader.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStatement.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractReviewButton.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.js +1 -1
- package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
- package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/PricingPlan.js +1 -1
- package/dist/flows/ContractorOnboarding/components/SaveDraftButton.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/components/SelectCountryStep.js +1 -1
- package/dist/flows/ContractorOnboarding/context.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/hooks.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/hooks.js +1 -1
- package/dist/flows/ContractorOnboarding/index.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/index.js +1 -1
- package/dist/flows/ContractorOnboarding/jsfModify.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/jsfModify.js +1 -1
- package/dist/flows/ContractorOnboarding/types.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/utils.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/utils.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +3 -3
- package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +3 -3
- package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
- package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +2 -2
- package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
- package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +2 -2
- package/dist/flows/CostCalculator/api.d.ts +2 -2
- package/dist/flows/CostCalculator/api.js +1 -1
- package/dist/flows/CostCalculator/components/SalaryField.d.ts +2 -2
- package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
- package/dist/flows/CostCalculator/context.d.ts +3 -3
- package/dist/flows/CostCalculator/hooks.d.ts +3 -3
- package/dist/flows/CostCalculator/hooks.js +1 -1
- package/dist/flows/CostCalculator/index.d.ts +3 -3
- package/dist/flows/CostCalculator/index.js +1 -1
- package/dist/flows/CostCalculator/types.d.ts +3 -3
- package/dist/flows/CostCalculator/utils.d.ts +3 -3
- package/dist/flows/CostCalculator/utils.js +1 -1
- package/dist/flows/CreateCompany/CreateCompany.d.ts +4 -4
- package/dist/flows/CreateCompany/CreateCompany.js +1 -1
- package/dist/flows/CreateCompany/api.d.ts +2 -2
- package/dist/flows/CreateCompany/api.js +1 -1
- package/dist/flows/CreateCompany/components/AddressDetailsStep.d.ts +4 -4
- package/dist/flows/CreateCompany/components/AddressDetailsStep.js +1 -1
- package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.d.ts +4 -4
- package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.js +1 -1
- package/dist/flows/CreateCompany/components/CreateCompanyForm.d.ts +2 -2
- package/dist/flows/CreateCompany/components/CreateCompanyForm.js +1 -1
- package/dist/flows/CreateCompany/context.d.ts +4 -4
- package/dist/flows/CreateCompany/hooks.d.ts +4 -4
- package/dist/flows/CreateCompany/hooks.js +1 -1
- package/dist/flows/CreateCompany/index.d.ts +4 -4
- package/dist/flows/CreateCompany/index.js +1 -1
- package/dist/flows/CreateCompany/types.d.ts +4 -4
- package/dist/flows/Onboarding/OnboardingFlow.d.ts +4 -4
- package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
- package/dist/flows/Onboarding/api.d.ts +4 -4
- package/dist/flows/Onboarding/api.js +1 -1
- package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +2 -2
- package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
- package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
- package/dist/flows/Onboarding/components/BenefitsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
- package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
- package/dist/flows/Onboarding/components/EngagementAgreementDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/EngagementAgreementDetailsStep.js +1 -1
- package/dist/flows/Onboarding/components/OnboardingForm.d.ts +4 -4
- package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
- package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
- package/dist/flows/Onboarding/components/ReviewStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +3 -3
- package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
- package/dist/flows/Onboarding/context.d.ts +4 -4
- package/dist/flows/Onboarding/hooks.d.ts +4 -4
- package/dist/flows/Onboarding/hooks.js +1 -1
- package/dist/flows/Onboarding/index.d.ts +4 -4
- package/dist/flows/Onboarding/index.js +1 -1
- package/dist/flows/Onboarding/types.d.ts +4 -4
- package/dist/flows/Onboarding/utils.d.ts +4 -4
- package/dist/flows/Onboarding/utils.js +1 -1
- package/dist/flows/Termination/AdditionalDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
- package/dist/flows/Termination/EmployeeComunicationForm.d.ts +4 -4
- package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
- package/dist/flows/Termination/PaidTimeOffForm.d.ts +4 -4
- package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
- package/dist/flows/Termination/TerminationDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
- package/dist/flows/Termination/TerminationFlow.d.ts +4 -4
- package/dist/flows/Termination/TerminationFlow.js +1 -1
- package/dist/flows/Termination/TerminationForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationForm.js +1 -1
- package/dist/flows/Termination/api.d.ts +5 -5
- package/dist/flows/Termination/api.js +1 -1
- package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +6 -6
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +6 -6
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +6 -6
- package/dist/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.js +1 -1
- package/dist/flows/Termination/context.d.ts +4 -4
- package/dist/flows/Termination/hooks.d.ts +4 -4
- package/dist/flows/Termination/hooks.js +1 -1
- package/dist/flows/Termination/index.d.ts +6 -6
- package/dist/flows/Termination/index.js +1 -1
- package/dist/flows/Termination/json-schemas/schema.d.ts +4 -4
- package/dist/flows/Termination/types.d.ts +4 -4
- package/dist/flows/Termination/utils.d.ts +4 -4
- package/dist/flows/types.d.ts +5 -3
- package/dist/flows/utils.d.ts +2 -2
- package/dist/index.d.ts +12 -12
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internals.d.ts +3 -3
- package/dist/internals.js +1 -1
- package/dist/{mutations-DTK4GE8r.d.ts → mutations-D9HgX-Ms.d.ts} +1 -1
- package/dist/{remoteFlows-n8r_cW0z.d.ts → remoteFlows-BY_Bq_Wn.d.ts} +2 -2
- package/dist/{types-Cd5_2FHQ.d.ts → types-3T7anr5K.d.ts} +3 -3
- package/dist/{types-BD0b8UuQ.d.ts → types-DRJoYr0A.d.ts} +2 -2
- package/dist/{types-BJ9gyvly.d.ts → types-DaTID0Xm.d.ts} +4 -4
- package/dist/{types-BiMfLZYw.d.ts → types-DnD9HEvZ.d.ts} +3 -3
- package/dist/{types-BY3BtHb6.d.ts → types-DreSaMum.d.ts} +1 -1
- package/dist/{types.gen-DPZBntYq.d.ts → types.gen-N4dGBvBJ.d.ts} +25 -9
- package/dist/{utils-C5lwjSxr.d.ts → utils-DE_uIWef.d.ts} +1 -1
- package/package.json +9 -8
- package/dist/CheckboxFieldDefault-U2NRBOXO.js +0 -2
- package/dist/CountryFieldDefault-DC4B2JGN.js +0 -2
- package/dist/DatePickerFieldDefault-Q6VSUSEY.js +0 -2
- package/dist/RadioGroupFieldDefault-CU6LOX2R.js +0 -2
- package/dist/TextAreaFieldDefault-4XPXRKZZ.js +0 -2
- package/dist/chunk-3EIBETN3.js +0 -2
- package/dist/chunk-62IEME2X.js.map +0 -1
- package/dist/chunk-AHRG5QCS.js +0 -2
- package/dist/chunk-AIT2DBW2.js +0 -2
- package/dist/chunk-AIT2DBW2.js.map +0 -1
- package/dist/chunk-B6YWTMGV.js +0 -2
- package/dist/chunk-B6YWTMGV.js.map +0 -1
- package/dist/chunk-CJJQ4NIH.js +0 -2
- package/dist/chunk-CJJQ4NIH.js.map +0 -1
- package/dist/chunk-DKDE34ZC.js +0 -2
- package/dist/chunk-DKDE34ZC.js.map +0 -1
- package/dist/chunk-HS63DEGD.js +0 -2
- package/dist/chunk-HS63DEGD.js.map +0 -1
- package/dist/chunk-MCXUBLTV.js +0 -2
- package/dist/chunk-MCXUBLTV.js.map +0 -1
- package/dist/chunk-MKUSE7JK.js.map +0 -1
- package/dist/chunk-N7FE22T7.js +0 -2
- package/dist/chunk-N7FE22T7.js.map +0 -1
- package/dist/chunk-QN2UHYGE.js.map +0 -1
- package/dist/chunk-RWXZG4KO.js +0 -2
- package/dist/chunk-RWXZG4KO.js.map +0 -1
- package/dist/chunk-SFW4O42J.js.map +0 -1
- package/dist/chunk-TNQKP2XT.js +0 -8
- package/dist/chunk-TNQKP2XT.js.map +0 -1
- package/dist/chunk-TVBZT6FA.js.map +0 -1
- package/dist/chunk-UDEKRW6Y.js.map +0 -1
- package/dist/chunk-XNW6UHSW.js +0 -2
- package/dist/chunk-XNW6UHSW.js.map +0 -1
- /package/dist/{CheckboxFieldDefault-U2NRBOXO.js.map → CheckboxFieldDefault-5NZEGPA6.js.map} +0 -0
- /package/dist/{CountryFieldDefault-DC4B2JGN.js.map → CountryFieldDefault-GP2S2KN6.js.map} +0 -0
- /package/dist/{DatePickerFieldDefault-Q6VSUSEY.js.map → DatePickerFieldDefault-KN4COEEO.js.map} +0 -0
- /package/dist/{RadioGroupFieldDefault-CU6LOX2R.js.map → RadioGroupFieldDefault-L3CZN2ZT.js.map} +0 -0
- /package/dist/{TextAreaFieldDefault-4XPXRKZZ.js.map → TextAreaFieldDefault-YKBNDA4U.js.map} +0 -0
- /package/dist/{chunk-RITVVN7T.js.map → chunk-2IIHA7AA.js.map} +0 -0
- /package/dist/{chunk-OFML5F4A.js.map → chunk-35LCD6VA.js.map} +0 -0
- /package/dist/{chunk-ESYUJGB5.js.map → chunk-3I4I7VH6.js.map} +0 -0
- /package/dist/{chunk-LS22BMPO.js.map → chunk-3M4RT5QK.js.map} +0 -0
- /package/dist/{chunk-72K4C6OR.js.map → chunk-3PKL3V6F.js.map} +0 -0
- /package/dist/{chunk-IQNQ4LFU.js.map → chunk-4LF5J3KW.js.map} +0 -0
- /package/dist/{chunk-LK3FPLM5.js.map → chunk-4ZA3PGCP.js.map} +0 -0
- /package/dist/{chunk-ORB2D4LR.js.map → chunk-5CFXZWQ5.js.map} +0 -0
- /package/dist/{chunk-OGXMCNOP.js.map → chunk-5FHNCDLU.js.map} +0 -0
- /package/dist/{chunk-DCEOZPQA.js.map → chunk-5IOV4ADT.js.map} +0 -0
- /package/dist/{chunk-YP4H7UGJ.js.map → chunk-5JFH2KYZ.js.map} +0 -0
- /package/dist/{chunk-3E7EDKBM.js.map → chunk-5TAAGXI6.js.map} +0 -0
- /package/dist/{chunk-BZ6GXHXM.js.map → chunk-6BTNYUKU.js.map} +0 -0
- /package/dist/{chunk-6Q54DYVX.js.map → chunk-7N552DET.js.map} +0 -0
- /package/dist/{chunk-CVZGPWZH.js.map → chunk-AZSD5MTJ.js.map} +0 -0
- /package/dist/{chunk-JAO2GIK3.js.map → chunk-B4JJN54S.js.map} +0 -0
- /package/dist/{chunk-2SMK7OOK.js.map → chunk-BDDSSFUK.js.map} +0 -0
- /package/dist/{chunk-6FOEJAXI.js.map → chunk-C7GJUNNC.js.map} +0 -0
- /package/dist/{chunk-3V7ZQOOW.js.map → chunk-CFCUY6VA.js.map} +0 -0
- /package/dist/{chunk-BZNN4OST.js.map → chunk-CMPHQVJ3.js.map} +0 -0
- /package/dist/{chunk-53WGX4C7.js.map → chunk-DILDN6DN.js.map} +0 -0
- /package/dist/{chunk-XLPYO4QS.js.map → chunk-DNTUDKSN.js.map} +0 -0
- /package/dist/{chunk-FDSUWSSY.js.map → chunk-DTTE663D.js.map} +0 -0
- /package/dist/{chunk-CRO2FOF3.js.map → chunk-DZJDM6PM.js.map} +0 -0
- /package/dist/{chunk-6AGNWLFO.js.map → chunk-E4VXY33I.js.map} +0 -0
- /package/dist/{chunk-7AQ7V57P.js.map → chunk-GIO4RGLD.js.map} +0 -0
- /package/dist/{chunk-62LLY3AT.js.map → chunk-HPO77UMT.js.map} +0 -0
- /package/dist/{chunk-P6FBUGRL.js.map → chunk-IPLCBEJI.js.map} +0 -0
- /package/dist/{chunk-PFK6TYWV.js.map → chunk-JBX6GAPY.js.map} +0 -0
- /package/dist/{chunk-QTKCCR2M.js.map → chunk-KE5UI2WF.js.map} +0 -0
- /package/dist/{chunk-GFPU6XMO.js.map → chunk-KEMKRC6N.js.map} +0 -0
- /package/dist/{chunk-3B3IR4XI.js.map → chunk-KV7CBYSI.js.map} +0 -0
- /package/dist/{chunk-4KJV4WU4.js.map → chunk-KXGHVCV2.js.map} +0 -0
- /package/dist/{chunk-LW3ZZPWS.js.map → chunk-KYQIUVYP.js.map} +0 -0
- /package/dist/{chunk-A5CJEHJA.js.map → chunk-LKFGJU72.js.map} +0 -0
- /package/dist/{chunk-YGMFPM7A.js.map → chunk-LPXJW7UB.js.map} +0 -0
- /package/dist/{chunk-CF3L7F4S.js.map → chunk-MKI4IWX6.js.map} +0 -0
- /package/dist/{chunk-MND3NWG7.js.map → chunk-N5DHVRQR.js.map} +0 -0
- /package/dist/{chunk-N57H62CC.js.map → chunk-OBF27DKO.js.map} +0 -0
- /package/dist/{chunk-YYSFI73T.js.map → chunk-OSHTXKLJ.js.map} +0 -0
- /package/dist/{chunk-CWIILDO2.js.map → chunk-PURTKT5Q.js.map} +0 -0
- /package/dist/{chunk-IHHDOH6Y.js.map → chunk-QSAZUS52.js.map} +0 -0
- /package/dist/{chunk-ZPMOCFFN.js.map → chunk-UG5UQ72J.js.map} +0 -0
- /package/dist/{chunk-T3VXOELH.js.map → chunk-VDHWWC4J.js.map} +0 -0
- /package/dist/{chunk-ACT6XGJM.js.map → chunk-W5THF3XS.js.map} +0 -0
- /package/dist/{chunk-DKSN6HVI.js.map → chunk-XJHIF5ZE.js.map} +0 -0
- /package/dist/{chunk-3HTQWY65.js.map → chunk-YGK26YJ2.js.map} +0 -0
- /package/dist/{chunk-CDN7R7Y7.js.map → chunk-YLAJZTKB.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as J}from"./chunk-XX25MIBS.js";import{b as re,c as ne,f as ie}from"./chunk-BQA2DJF2.js";import{a as te}from"./chunk-GQACPN6J.js";import{a as ee}from"./chunk-6FOEJAXI.js";import{a as oe}from"./chunk-4MW7KA47.js";import{b as G}from"./chunk-SFW4O42J.js";import{c as g,i as T,m as A}from"./chunk-5BU3CD2P.js";import{l as Y,m as j,n as k,r as O}from"./chunk-JXAAON7I.js";import{b as S,c as x}from"./chunk-H2O4CVKF.js";import{a as n}from"./chunk-P37U34EQ.js";import{Fragment as je,useEffect as eo,useRef as ke}from"react";import H from"lodash.omit";import{jsx as le}from"react/jsx-runtime";function se({description:e,label:o,name:t,minDate:r,maxDate:l,onChange:i,component:a,...s}){let{components:p}=S(),{control:c}=g(),F=x(),m;s.meta?.mot&&typeof s.meta.mot=="number"?m=Y(s.meta.mot):typeof r=="string"&&(m=new Date(`${r}T00:00:00`));let f;return l&&(f=new Date(`${l}T23:59:59`)),le(T,{control:c,name:t,render:({field:C,fieldState:h})=>{let u=a||p?.date;if(!u)throw new Error(`Date picker component not found for field ${t}`);let P={description:e,label:o,name:t,onChange:i,transformHtml:F,...m&&{minDate:m.toISOString()},...f&&{maxDate:f.toISOString()},...s};return le(u,{field:{...C,onChange:n(y=>{C.onChange(y),i?.(y)},"onChange")},fieldState:h,fieldData:P})}})}n(se,"DatePickerField");import{jsx as me}from"react/jsx-runtime";var Je=n((e,o)=>{if(!o)return null;for(let t of e)if(t.size>o){let r=Math.round(o/1048576),l=Math.round(t.size/(1024*1024));return`File "${t.name}" exceeds maximum size of ${r}MB (file is ${l}MB)`}return null},"validateFileSize");function ae({name:e,description:o,label:t,multiple:r,onChange:l,component:i,accept:a,maxSize:s,...p}){let{components:c}=S(),{control:F,setError:m,clearErrors:f}=g(),C=x(),h=n(async(u,P)=>{let y=Je(u,s);if(y){m(e,{message:y});return}f(e),P.onChange(u),l?.(u)},"handleOnChange");return me(T,{control:F,name:e,render:({field:u,fieldState:P})=>{let y=i||c.file;if(!y)throw new Error(`File upload component not found for field ${e}`);let b={name:e,description:o,label:t,multiple:r,accept:a,maxFileSize:s,transformHtml:C,...p};return me(y,{field:{...u,value:u.value,onChange:n(async w=>h(w,u),"onChange")},fieldState:P,fieldData:b})}})}n(ae,"FileUploadField");import{jsx as de}from"react/jsx-runtime";function I({component:e,onChange:o,...t}){let{components:r}=S(),{control:l}=g(),i=x();return de(T,{control:l,name:t.name,render:({field:a,fieldState:s})=>{let p=e||r.number;if(!p)throw new Error(`Number component not found for field ${t.name}`);let c={onChange:o,transformHtml:i,...t};return de(p,{field:{...a,onChange:n(F=>{a.onChange(F),o?.(F)},"onChange")},fieldState:s,fieldData:c})}})}n(I,"NumberField");import{jsx as pe}from"react/jsx-runtime";function ce({name:e,defaultValue:o,description:t,label:r,options:l,onChange:i,component:a,...s}){let{components:p}=S(),{control:c}=g(),F=x();return pe(T,{control:c,name:e,defaultValue:o,render:({field:m,fieldState:f})=>{let C=a||p?.radio;if(!C)throw new Error(`Radio group component not found for field ${e}`);let h={name:e,defaultValue:o,description:t,label:r,options:l,transformHtml:F,...s};return pe(C,{field:{...m,onChange:n(u=>{m.onChange(u),i?.(u)},"onChange")},fieldState:f,fieldData:h})}})}n(ce,"RadioGroupField");import{jsx as ue}from"react/jsx-runtime";function Fe({label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,component:a,...s}){let{control:p}=g(),{components:c}=S(),F=x();return ue(T,{defaultValue:r,control:p,name:o,render:({field:m,fieldState:f})=>{let C=a||c?.select;if(!C)throw new Error(`Select component not found for field ${o}`);let h={label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,transformHtml:F,...s};return ue(C,{field:{...m,onChange:n(u=>{let y=(Array.isArray(s.jsonType)?s.jsonType.includes("number"):s.jsonType==="number")?Number(u):u;m.onChange(y),i?.(y)},"onChange")},fieldState:f,fieldData:h})}})}n(Fe,"SelectField");import{jsx as fe}from"react/jsx-runtime";function Ce({label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,$meta:a,component:s,...p}){let{control:c}=g(),{components:F}=S(),m=x();return fe(T,{defaultValue:r,control:c,name:o,render:({field:f,fieldState:C})=>{let h=s||F.countries;if(!h)throw new Error(`Country component not found for field ${o}`);let u={label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,$meta:a,transformHtml:m,...p};return fe(h,{field:{...f,onChange:n(P=>{f.onChange(P),i?.(P)},"onChange")},fieldState:C,fieldData:u})}})}n(Ce,"CountryField");import{jsx as ge}from"react/jsx-runtime";function he({name:e,description:o,label:t,onChange:r,maxLength:l,component:i,...a}){let{components:s}=S(),{control:p}=g(),c=x();return ge(T,{control:p,name:e,render:({field:F,fieldState:m})=>{let f=i||s.textarea;if(!f)throw new Error(`Text area component not found for field ${e}`);let C={name:e,description:o,label:t,maxLength:l,transformHtml:c,...a};return ge(f,{field:{...F,onChange:n(h=>{F.onChange(h),r?.(h)},"onChange")},fieldState:m,fieldData:C})}})}n(he,"TextAreaField");import{jsx as Se}from"react/jsx-runtime";function Te({component:e,onChange:o,...t}){let{components:r}=S(),{control:l}=g(),i=x();return Se(T,{control:l,name:t.name,render:({field:a,fieldState:s})=>{let p=e||r.email;if(!p)throw new Error(`Email component not found for field ${t.name}`);let c={onChange:o,transformHtml:i,...t};return Se(p,{field:{...a,onChange:n(F=>{a.onChange(F),o?.(F)},"onChange")},fieldState:s,fieldData:c})}})}n(Te,"EmailField");import{jsx as xe}from"react/jsx-runtime";function ye(e){let{control:o}=g();return xe(T,{control:o,name:e.name,render:({field:t})=>xe("input",{...t,type:"hidden"})})}n(ye,"HiddenField");import{useEffect as Ie,useState as Le}from"react";import{jsx as be}from"react/jsx-runtime";function Pe(e){let{components:o}=S(),{setValue:t,control:r,watch:l}=g(),i=x(),a=l(e.name),[s,p]=Le(a),{workHoursSummary:c,breakSummary:F}=ne(s),m=re(s);Ie(()=>{t(e.name,s)},[s,e.name,t]);function f(u){p(u)}n(f,"onSubmit");let C=e.component||o["work-schedule"];if(!C)throw new Error(`Work schedule component not found for field ${e.name}`);let h={...e,onSubmit:f,currentSchedule:s,transformHtml:i,defaultFormattedValue:{workHoursSummary:c,breakSummary:F,totalWorkHours:m}};return be(T,{control:r,name:e.name,render:({field:u,fieldState:P})=>be(C,{field:{...u,onChange:n(y=>{u.onChange(y),e.onChange?.(y)},"onChange")},fieldState:P,fieldData:h})})}n(Pe,"WorkScheduleField");import{jsx as $e}from"react/jsx-runtime";function De({label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,component:a,...s}){let{control:p}=g(),{components:c}=S(),F=x();return $e(T,{defaultValue:r,control:p,name:o,render:({field:m,fieldState:f})=>{let C=a||c?.["multi-select"];if(!C)throw new Error(`Multi select component not found for field ${o}`);let h={label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,transformHtml:F,...s};return $e(C,{field:{...m,onChange:n(u=>{m.onChange(u),i?.(u)},"onChange")},fieldState:f,fieldData:h})}})}n(De,"MultiSelectField");import{jsx as ze}from"react/jsx-runtime";var Re=n(e=>ze(I,{maxLength:15,...e}),"MoneyField");import{useMemo as L,useCallback as ve,useState as Oe,useEffect as Ge,useRef as Ue}from"react";import{jsx as U}from"react/jsx-runtime";function Ze(e){return e.replace(/\s/g,"")}n(Ze,"removeSpaces");function Ee(e="",o){let t=new RegExp(`^(\\+|00)(\\d{${o?.dialCode?.length??0}})(.*)$`),r=e?.match(t);if(!r)return{prefix:"",dialCode:"",phoneNumber:e};let[,l,i,a]=r;return{prefix:l,dialCode:i,phoneNumber:a}}n(Ee,"getStructuredNumberFromInternationalNumber");function _e({dialCodes:e,dialCodeMaxLength:o},t){let{prefix:r}=Ee(t);if(r)for(let l=o+r.length;l>r.length;l--){let i=t.slice(r.length,l);if(e[i])return e[i]}}n(_e,"getCountryFromPhoneNumber");function we(e){let o={},t=0;return e.forEach(r=>{r.areaCodes?r.areaCodes.forEach(l=>{let i=r.dialCode+l;o[i]=r,i.length>t&&(t=i.length)}):(o[r.dialCode]=r,r.dialCode.length>t&&(t=r.dialCode.length))}),{dialCodes:o,dialCodeMaxLength:t}}n(we,"getCountryDataByCountryCode");function Ke(e=""){let o=/\(([^)]+)\)/g,t=e.match(o);if(t?.length===2)return t[1].replace(/\(|\)/g,"").split("|")}n(Ke,"getAreaCodesFromPattern");function qe(e){return e.map(o=>({name:o.label,dialCode:o.meta.countryCode,pattern:o.pattern,areaCodes:Ke(o.pattern)}))}n(qe,"transformSchemaToCountries");function Qe({field:e,fieldState:o,fieldData:t,component:r,onChangeCountryCode:l,onChangePhoneNumber:i}){let{value:a}=e,{options:s}=t,p=L(()=>qe(s),[s]),c=L(()=>we(p),[p]),F=Ue(!1),[m,f]=Oe(()=>_e(we(p),a||""));Ge(()=>{if((!a||a==="+")&&(F.current=!1),F.current)return;let b=_e(c,a||"");f(b)},[a,c]);let{prefix:C,phoneNumber:h}=L(()=>Ee(a,m),[a,m]),u=ve(b=>{if(!b)return;let w=`+${b.dialCode}${h}`;F.current=!0,f(b),e.onChange(w),l&&l(b)},[h,e,l]),P=ve(b=>{let w=Ze(b.target.value),_;if(m?_=`${C}${m.dialCode}${w}`:_=`${C}${w}`,e.onChange(_),i){let V={target:{value:_,name:e.name}};i(V)}},[m,C,e,i]),y=L(()=>({...t,onChangeCountryCode:u,onChangePhoneNumber:P,currentCountry:m,nationalPhoneNumber:h}),[t,u,P,m,h]);return U(r,{field:e,fieldState:o,fieldData:y})}n(Qe,"TelFieldRenderer");function Me({name:e,description:o,label:t,onChangeCountryCode:r,onChangePhoneNumber:l,component:i,...a}){let{components:s}=S(),{control:p}=g(),c=x();return U(T,{control:p,name:e,render:({field:F,fieldState:m})=>{let f=i||s.tel;if(!f)throw new Error(`Tel component not found for field ${e}`);let C={name:e,description:o,label:t,transformHtml:c,...a};return U(Qe,{field:F,fieldState:m,fieldData:C,component:f,onChangeCountryCode:r,onChangePhoneNumber:l})}})}n(Me,"TelField");var Z={checkbox:ie,text:oe,email:Te,money:Re,select:Fe,"multi-select":De,radio:ce,number:I,file:ae,date:se,textarea:he,countries:Ce,hidden:ye,tel:Me,"work-schedule":Pe};import{useEffect as Xe}from"react";import{jsx as K,jsxs as Ye}from"react/jsx-runtime";function Ne({name:e,value:o,description:t,statement:r,label:l,helpCenter:i}){let{setValue:a}=g(),s=r?.description||t,p=r?.title?O(r?.title):O(l),c=`forced-value-${e}-title`,F=`forced-value-${e}-description`;return Xe(()=>{a(e,o)},[]),!s&&!r?.title?null:Ye("div",{role:"group","aria-labelledby":p?c:void 0,"aria-describedby":s?F:void 0,children:[p&&K("p",{id:c,className:`text-sm RemoteFlows__ForcedValue__Title__${e}`,dangerouslySetInnerHTML:{__html:p}}),K(A,{as:"span",id:F,className:`text-xs RemoteFlows__ForcedValue__Description__${e}`,helpCenter:K(ee,{className:"RemoteFlows__ForcedValue__HelpCenterLink",helpCenter:i}),children:s})]})}n(Ne,"ForcedValueField");import{Fragment as q,jsx as $,jsxs as M}from"react/jsx-runtime";function He({label:e,name:o,fields:t,description:r,components:l,statement:i,isFlatFieldset:a,extra:s,variant:p="outset",features:c,meta:F}){let{helpCenter:m}=F||{},{watch:f,setValue:C,trigger:h,formState:u}=g(),{components:P}=S(),y=c?.toggle?.stateField,b=y?f(y):c?.toggle?.defaultExpanded??!0,w=t.map(({name:d})=>`${o}.${d}`),_=f(w),V=ke(_),N=ke(null),Ve=n(()=>{y&&C(y,!b)},"toggleExpanded");eo(()=>{let d=_,E=V.current,R=u.isSubmitted||u.submitCount>0,W=!1;for(let v=0;v<d.length;v++)if(d[v]!==void 0&&E[v]!==d[v]){W=!0;break}return W&&R&&(N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{h()},50)),V.current=[...d],()=>{N.current&&clearTimeout(N.current)}},[_,h,u.isSubmitted,u.submitCount]);let We=P?.fieldsetToggle||te,Q=`${o}-content`,X=`${o}-header`;return M("fieldset",{className:k("border-1 border-input p-4 rounded-xl","RemoteFlows__FieldSetField",`RemoteFlows__FieldSetField__${o}`),children:[$("legend",{className:k("text-sm font-semibold px-2",p==="inset"&&"hidden"),children:e}),m?.callToAction&&m?.id&&p==="outset"&&$(G,{className:"RemoteFlows__FieldSetField__HelpCenterLink mb-3",zendeskId:m.id,children:m.callToAction}),p==="inset"&&M(q,{children:[M("div",{className:"RemoteFlows__FieldSetField__Header",id:X,"data-state":b?"expanded":"collapsed","aria-expanded":b,children:[$("h3",{className:k("RemoteFlows__FieldSetField__Title"),children:e}),c?.toggle?.enabled&&$(We,{isExpanded:b,onToggle:Ve,"aria-expanded":b,"aria-controls":Q,"aria-label":`${b?"Hide":"Show"} ${e}`,className:k("RemoteFlows__FieldSetField__Toggle",c.toggle?.className),children:b?c.toggle.labels?.collapse??"Remove":c.toggle.labels?.expand??"Define"})]}),m?.callToAction&&m?.id&&$(G,{className:"RemoteFlows__FieldSetField__HelpCenterLink mb-3",zendeskId:m.id,children:m.callToAction})]}),b&&M("div",{id:Q,"aria-labelledby":X,role:"region",children:[r?$(A,{as:"div",className:"mb-5 RemoteFlows__FieldSetField__Description",children:r}):null,M("div",{className:"grid gap-4",children:[t.map(d=>{if(d.calculateDynamicProperties&&(d={...d,...d.calculateDynamicProperties(_,d)||{}}),d.isVisible===!1||d.deprecated)return null;let E=d.type,R=`${a?d.name:`${o}.${d.name}`}`,W=j(d),v=n((D,B)=>d.WrapperComponent?$(d.WrapperComponent,{children:D},B):$(je,{children:D},B),"wrapWithCustomWrapper");if(W){let D=H(d,"WrapperComponent");return v($(Ne,{name:R,description:D.description,value:D.const,statement:D.statement,label:D.label,helpCenter:D.meta?.helpCenter}),R)}if(E==="fieldset"){let D=H(d,"WrapperComponent");return v($(He,{...D,name:R,components:l}),R)}if(E==="fieldset-flat"){let D=H(d,"WrapperComponent");return v($(He,{...D,name:R,components:l,isFlatFieldset:!0}),R)}let z=Z[E];if(d.Component){let{Component:D}=d,B=H(d,"WrapperComponent");return v(M(q,{children:[$(D,{...B,value:f(R),setValue:Ae=>{C(R,Ae)}}),d.statement?$(J,{...d.statement}):null,d.extra?d.extra:null]}),R)}if(!z)return M("p",{className:"error",children:["Field type ",E," not supported"]});E==="select"&&d.multiple&&(z=Z["multi-select"]);let Be=H(d,"WrapperComponent");return v(M(q,{children:[$(z,{...Be,name:R,component:l?.[E]}),d.statement?$(J,{...d.statement}):null,d.extra?d.extra:null]}),R)}),s||null,i?$(J,{...i}):null]})]})]})}n(He,"FieldSetField");export{Z as a,Ne as b,He as c};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as J}from"./chunk-XX25MIBS.js";import{b as re,c as ne,f as ie}from"./chunk-BQA2DJF2.js";import{a as te}from"./chunk-GQACPN6J.js";import{a as ee}from"./chunk-C7GJUNNC.js";import{a as oe}from"./chunk-4MW7KA47.js";import{b as G}from"./chunk-W4YDSTXA.js";import{c as g,i as T,m as A}from"./chunk-5BU3CD2P.js";import{l as Y,m as j,n as k,r as O}from"./chunk-JXAAON7I.js";import{b as S,c as x}from"./chunk-H2O4CVKF.js";import{a as n}from"./chunk-P37U34EQ.js";import{Fragment as je,useEffect as eo,useRef as ke}from"react";import H from"lodash.omit";import{jsx as le}from"react/jsx-runtime";function se({description:e,label:o,name:t,minDate:r,maxDate:l,onChange:i,component:a,...s}){let{components:p}=S(),{control:c}=g(),F=x(),m;s.meta?.mot&&typeof s.meta.mot=="number"?m=Y(s.meta.mot):typeof r=="string"&&(m=new Date(`${r}T00:00:00`));let f;return l&&(f=new Date(`${l}T23:59:59`)),le(T,{control:c,name:t,render:({field:C,fieldState:h})=>{let u=a||p?.date;if(!u)throw new Error(`Date picker component not found for field ${t}`);let P={description:e,label:o,name:t,onChange:i,transformHtml:F,...m&&{minDate:m.toISOString()},...f&&{maxDate:f.toISOString()},...s};return le(u,{field:{...C,onChange:n(y=>{C.onChange(y),i?.(y)},"onChange")},fieldState:h,fieldData:P})}})}n(se,"DatePickerField");import{jsx as me}from"react/jsx-runtime";var Je=n((e,o)=>{if(!o)return null;for(let t of e)if(t.size>o){let r=Math.round(o/1048576),l=Math.round(t.size/(1024*1024));return`File "${t.name}" exceeds maximum size of ${r}MB (file is ${l}MB)`}return null},"validateFileSize");function ae({name:e,description:o,label:t,multiple:r,onChange:l,component:i,accept:a,maxSize:s,...p}){let{components:c}=S(),{control:F,setError:m,clearErrors:f}=g(),C=x(),h=n(async(u,P)=>{let y=Je(u,s);if(y){m(e,{message:y});return}f(e),P.onChange(u),l?.(u)},"handleOnChange");return me(T,{control:F,name:e,render:({field:u,fieldState:P})=>{let y=i||c.file;if(!y)throw new Error(`File upload component not found for field ${e}`);let b={name:e,description:o,label:t,multiple:r,accept:a,maxFileSize:s,transformHtml:C,...p};return me(y,{field:{...u,value:u.value,onChange:n(async w=>h(w,u),"onChange")},fieldState:P,fieldData:b})}})}n(ae,"FileUploadField");import{jsx as de}from"react/jsx-runtime";function I({component:e,onChange:o,...t}){let{components:r}=S(),{control:l}=g(),i=x();return de(T,{control:l,name:t.name,render:({field:a,fieldState:s})=>{let p=e||r.number;if(!p)throw new Error(`Number component not found for field ${t.name}`);let c={onChange:o,transformHtml:i,...t};return de(p,{field:{...a,onChange:n(F=>{a.onChange(F),o?.(F)},"onChange")},fieldState:s,fieldData:c})}})}n(I,"NumberField");import{jsx as pe}from"react/jsx-runtime";function ce({name:e,defaultValue:o,description:t,label:r,options:l,onChange:i,component:a,...s}){let{components:p}=S(),{control:c}=g(),F=x();return pe(T,{control:c,name:e,defaultValue:o,render:({field:m,fieldState:f})=>{let C=a||p?.radio;if(!C)throw new Error(`Radio group component not found for field ${e}`);let h={name:e,defaultValue:o,description:t,label:r,options:l,transformHtml:F,...s};return pe(C,{field:{...m,onChange:n(u=>{m.onChange(u),i?.(u)},"onChange")},fieldState:f,fieldData:h})}})}n(ce,"RadioGroupField");import{jsx as ue}from"react/jsx-runtime";function Fe({label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,component:a,...s}){let{control:p}=g(),{components:c}=S(),F=x();return ue(T,{defaultValue:r,control:p,name:o,render:({field:m,fieldState:f})=>{let C=a||c?.select;if(!C)throw new Error(`Select component not found for field ${o}`);let h={label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,transformHtml:F,...s};return ue(C,{field:{...m,onChange:n(u=>{let y=(Array.isArray(s.jsonType)?s.jsonType.includes("number"):s.jsonType==="number")?Number(u):u;m.onChange(y),i?.(y)},"onChange")},fieldState:f,fieldData:h})}})}n(Fe,"SelectField");import{jsx as fe}from"react/jsx-runtime";function Ce({label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,$meta:a,component:s,...p}){let{control:c}=g(),{components:F}=S(),m=x();return fe(T,{defaultValue:r,control:c,name:o,render:({field:f,fieldState:C})=>{let h=s||F.countries;if(!h)throw new Error(`Country component not found for field ${o}`);let u={label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,$meta:a,transformHtml:m,...p};return fe(h,{field:{...f,onChange:n(P=>{f.onChange(P),i?.(P)},"onChange")},fieldState:C,fieldData:u})}})}n(Ce,"CountryField");import{jsx as ge}from"react/jsx-runtime";function he({name:e,description:o,label:t,onChange:r,maxLength:l,component:i,...a}){let{components:s}=S(),{control:p}=g(),c=x();return ge(T,{control:p,name:e,render:({field:F,fieldState:m})=>{let f=i||s.textarea;if(!f)throw new Error(`Text area component not found for field ${e}`);let C={name:e,description:o,label:t,maxLength:l,transformHtml:c,...a};return ge(f,{field:{...F,onChange:n(h=>{F.onChange(h),r?.(h)},"onChange")},fieldState:m,fieldData:C})}})}n(he,"TextAreaField");import{jsx as Se}from"react/jsx-runtime";function Te({component:e,onChange:o,...t}){let{components:r}=S(),{control:l}=g(),i=x();return Se(T,{control:l,name:t.name,render:({field:a,fieldState:s})=>{let p=e||r.email;if(!p)throw new Error(`Email component not found for field ${t.name}`);let c={onChange:o,transformHtml:i,...t};return Se(p,{field:{...a,onChange:n(F=>{a.onChange(F),o?.(F)},"onChange")},fieldState:s,fieldData:c})}})}n(Te,"EmailField");import{jsx as xe}from"react/jsx-runtime";function ye(e){let{control:o}=g();return xe(T,{control:o,name:e.name,render:({field:t})=>xe("input",{...t,type:"hidden"})})}n(ye,"HiddenField");import{useEffect as Ie,useState as Le}from"react";import{jsx as be}from"react/jsx-runtime";function Pe(e){let{components:o}=S(),{setValue:t,control:r,watch:l}=g(),i=x(),a=l(e.name),[s,p]=Le(a),{workHoursSummary:c,breakSummary:F}=ne(s),m=re(s);Ie(()=>{t(e.name,s)},[s,e.name,t]);function f(u){p(u)}n(f,"onSubmit");let C=e.component||o["work-schedule"];if(!C)throw new Error(`Work schedule component not found for field ${e.name}`);let h={...e,onSubmit:f,currentSchedule:s,transformHtml:i,defaultFormattedValue:{workHoursSummary:c,breakSummary:F,totalWorkHours:m}};return be(T,{control:r,name:e.name,render:({field:u,fieldState:P})=>be(C,{field:{...u,onChange:n(y=>{u.onChange(y),e.onChange?.(y)},"onChange")},fieldState:P,fieldData:h})})}n(Pe,"WorkScheduleField");import{jsx as $e}from"react/jsx-runtime";function De({label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,component:a,...s}){let{control:p}=g(),{components:c}=S(),F=x();return $e(T,{defaultValue:r,control:p,name:o,render:({field:m,fieldState:f})=>{let C=a||c?.["multi-select"];if(!C)throw new Error(`Multi select component not found for field ${o}`);let h={label:e,name:o,options:t,defaultValue:r,description:l,onChange:i,transformHtml:F,...s};return $e(C,{field:{...m,onChange:n(u=>{m.onChange(u),i?.(u)},"onChange")},fieldState:f,fieldData:h})}})}n(De,"MultiSelectField");import{jsx as ze}from"react/jsx-runtime";var Re=n(e=>ze(I,{maxLength:15,...e}),"MoneyField");import{useMemo as L,useCallback as _e,useState as Oe,useEffect as Ge,useRef as Ue}from"react";import{jsx as U}from"react/jsx-runtime";function Ze(e){return e.replace(/\s/g,"")}n(Ze,"removeSpaces");function Ee(e="",o){let t=new RegExp(`^(\\+|00)(\\d{${o?.dialCode?.length??0}})(.*)$`),r=e?.match(t);if(!r)return{prefix:"",dialCode:"",phoneNumber:e};let[,l,i,a]=r;return{prefix:l,dialCode:i,phoneNumber:a}}n(Ee,"getStructuredNumberFromInternationalNumber");function ve({dialCodes:e,dialCodeMaxLength:o},t){let{prefix:r}=Ee(t);if(r)for(let l=o+r.length;l>r.length;l--){let i=t.slice(r.length,l);if(e[i])return e[i]}}n(ve,"getCountryFromPhoneNumber");function we(e){let o={},t=0;return e.forEach(r=>{r.areaCodes?r.areaCodes.forEach(l=>{let i=r.dialCode+l;o[i]=r,i.length>t&&(t=i.length)}):(o[r.dialCode]=r,r.dialCode.length>t&&(t=r.dialCode.length))}),{dialCodes:o,dialCodeMaxLength:t}}n(we,"getCountryDataByCountryCode");function Ke(e=""){let o=/\(([^)]+)\)/g,t=e.match(o);if(t?.length===2)return t[1].replace(/\(|\)/g,"").split("|")}n(Ke,"getAreaCodesFromPattern");function qe(e){return e.map(o=>({name:o.label,dialCode:o.meta.countryCode,pattern:o.pattern,areaCodes:Ke(o.pattern)}))}n(qe,"transformSchemaToCountries");function Qe({field:e,fieldState:o,fieldData:t,component:r,onChangeCountryCode:l,onChangePhoneNumber:i}){let{value:a}=e,{options:s}=t,p=L(()=>qe(s),[s]),c=L(()=>we(p),[p]),F=Ue(!1),[m,f]=Oe(()=>ve(we(p),a||""));Ge(()=>{if((!a||a==="+")&&(F.current=!1),F.current)return;let b=ve(c,a||"");f(b)},[a,c]);let{prefix:C,phoneNumber:h}=L(()=>Ee(a,m),[a,m]),u=_e(b=>{if(!b)return;let w=`+${b.dialCode}${h}`;F.current=!0,f(b),e.onChange(w),l&&l(b)},[h,e,l]),P=_e(b=>{let w=Ze(b.target.value),v;if(m?v=`${C}${m.dialCode}${w}`:v=`${C}${w}`,e.onChange(v),i){let V={target:{value:v,name:e.name}};i(V)}},[m,C,e,i]),y=L(()=>({...t,onChangeCountryCode:u,onChangePhoneNumber:P,currentCountry:m,nationalPhoneNumber:h}),[t,u,P,m,h]);return U(r,{field:e,fieldState:o,fieldData:y})}n(Qe,"TelFieldRenderer");function Me({name:e,description:o,label:t,onChangeCountryCode:r,onChangePhoneNumber:l,component:i,...a}){let{components:s}=S(),{control:p}=g(),c=x();return U(T,{control:p,name:e,render:({field:F,fieldState:m})=>{let f=i||s.tel;if(!f)throw new Error(`Tel component not found for field ${e}`);let C={name:e,description:o,label:t,transformHtml:c,...a};return U(Qe,{field:F,fieldState:m,fieldData:C,component:f,onChangeCountryCode:r,onChangePhoneNumber:l})}})}n(Me,"TelField");var Z={checkbox:ie,text:oe,email:Te,money:Re,select:Fe,"multi-select":De,radio:ce,number:I,file:ae,date:se,textarea:he,countries:Ce,hidden:ye,tel:Me,"work-schedule":Pe};import{useEffect as Xe}from"react";import{jsx as K,jsxs as Ye}from"react/jsx-runtime";function Ne({name:e,value:o,description:t,statement:r,label:l,helpCenter:i}){let{setValue:a}=g(),s=r?.description||t,p=r?.title?O(r?.title):O(l),c=`forced-value-${e}-title`,F=`forced-value-${e}-description`;return Xe(()=>{a(e,o)},[e,o,a]),!s&&!r?.title?null:Ye("div",{role:"group","aria-labelledby":p?c:void 0,"aria-describedby":s?F:void 0,children:[p&&K("p",{id:c,className:`text-sm RemoteFlows__ForcedValue__Title__${e}`,dangerouslySetInnerHTML:{__html:p}}),K(A,{as:"span",id:F,className:`text-xs RemoteFlows__ForcedValue__Description__${e}`,helpCenter:K(ee,{className:"RemoteFlows__ForcedValue__HelpCenterLink",helpCenter:i}),children:s})]})}n(Ne,"ForcedValueField");import{Fragment as q,jsx as $,jsxs as M}from"react/jsx-runtime";function He({label:e,name:o,fields:t,description:r,components:l,statement:i,isFlatFieldset:a,extra:s,variant:p="outset",features:c,meta:F}){let{helpCenter:m}=F||{},{watch:f,setValue:C,trigger:h,formState:u}=g(),{components:P}=S(),y=c?.toggle?.stateField,b=y?f(y):c?.toggle?.defaultExpanded??!0,w=t.map(({name:d})=>`${o}.${d}`),v=f(w),V=ke(v),N=ke(null),Ve=n(()=>{y&&C(y,!b)},"toggleExpanded");eo(()=>{let d=v,E=V.current,R=u.isSubmitted||u.submitCount>0,W=!1;for(let _=0;_<d.length;_++)if(d[_]!==void 0&&E[_]!==d[_]){W=!0;break}return W&&R&&(N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{h()},50)),V.current=[...d],()=>{N.current&&clearTimeout(N.current)}},[v,h,u.isSubmitted,u.submitCount]);let We=P?.fieldsetToggle||te,Q=`${o}-content`,X=`${o}-header`;return M("fieldset",{className:k("border-1 border-input p-4 rounded-xl","RemoteFlows__FieldSetField",`RemoteFlows__FieldSetField__${o}`),children:[$("legend",{className:k("text-sm font-semibold px-2",p==="inset"&&"hidden"),children:e}),m?.callToAction&&m?.id&&p==="outset"&&$(G,{className:"RemoteFlows__FieldSetField__HelpCenterLink mb-3",zendeskId:m.id,children:m.callToAction}),p==="inset"&&M(q,{children:[M("div",{className:"RemoteFlows__FieldSetField__Header",id:X,"data-state":b?"expanded":"collapsed","aria-expanded":b,children:[$("h3",{className:k("RemoteFlows__FieldSetField__Title"),children:e}),c?.toggle?.enabled&&$(We,{isExpanded:b,onToggle:Ve,"aria-expanded":b,"aria-controls":Q,"aria-label":`${b?"Hide":"Show"} ${e}`,className:k("RemoteFlows__FieldSetField__Toggle",c.toggle?.className),children:b?c.toggle.labels?.collapse??"Remove":c.toggle.labels?.expand??"Define"})]}),m?.callToAction&&m?.id&&$(G,{className:"RemoteFlows__FieldSetField__HelpCenterLink mb-3",zendeskId:m.id,children:m.callToAction})]}),b&&M("div",{id:Q,"aria-labelledby":X,role:"region",children:[r?$(A,{as:"div",className:"mb-5 RemoteFlows__FieldSetField__Description",children:r}):null,M("div",{className:"grid gap-4",children:[t.map(d=>{if(d.calculateDynamicProperties&&(d={...d,...d.calculateDynamicProperties(v,d)||{}}),d.isVisible===!1||d.deprecated)return null;let E=d.type,R=`${a?d.name:`${o}.${d.name}`}`,W=j(d),_=n((D,B)=>d.WrapperComponent?$(d.WrapperComponent,{children:D},B):$(je,{children:D},B),"wrapWithCustomWrapper");if(W){let D=H(d,"WrapperComponent");return _($(Ne,{name:R,description:D.description,value:D.const,statement:D.statement,label:D.label,helpCenter:D.meta?.helpCenter}),R)}if(E==="fieldset"){let D=H(d,"WrapperComponent");return _($(He,{...D,name:R,components:l}),R)}if(E==="fieldset-flat"){let D=H(d,"WrapperComponent");return _($(He,{...D,name:R,components:l,isFlatFieldset:!0}),R)}let z=Z[E];if(d.Component){let{Component:D}=d,B=H(d,"WrapperComponent");return _(M(q,{children:[$(D,{...B,value:f(R),setValue:Ae=>{C(R,Ae)}}),d.statement?$(J,{...d.statement}):null,d.extra?d.extra:null]}),R)}if(!z)return M("p",{className:"error",children:["Field type ",E," not supported"]});E==="select"&&d.multiple&&(z=Z["multi-select"]);let Be=H(d,"WrapperComponent");return _(M(q,{children:[$(z,{...Be,name:R,component:l?.[E]}),d.statement?$(J,{...d.statement}):null,d.extra?d.extra:null]}),R)}),s||null,i?$(J,{...i}):null]})]})]})}n(He,"FieldSetField");export{Z as a,Ne as b,He as c};
|
|
2
|
+
//# sourceMappingURL=chunk-X5ZZPJII.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/fields/FieldSetField.tsx","../src/components/form/fields/DatePickerField.tsx","../src/components/form/fields/FileUploadField.tsx","../src/components/form/fields/NumberField.tsx","../src/components/form/fields/RadioGroupField.tsx","../src/components/form/fields/SelectField.tsx","../src/components/form/fields/CountryField.tsx","../src/components/form/fields/TextAreaField.tsx","../src/components/form/fields/EmailField.tsx","../src/components/form/fields/HiddenField.tsx","../src/components/form/fields/WorkScheduleField.tsx","../src/components/form/fields/MultiSelectField.tsx","../src/components/form/fields/MoneyField.tsx","../src/components/form/fields/TelField.tsx","../src/components/form/fields/baseFields.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["import { useFormContext } from 'react-hook-form';\nimport { Fragment, useEffect, useRef } from 'react';\nimport omit from 'lodash.omit';\nimport { baseFields } from '@/src/components/form/fields/baseFields';\nimport { cn } from '@/src/lib/utils';\nimport { $TSFixMe, Components } from '@/src/types/remoteFlows';\nimport { Statement } from '@/src/components/form/Statement';\nimport { useFormFields } from '@/src/context';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\nimport { FieldsetToggleButtonDefault } from '@/src/components/form/fields/default/FieldsetToggleButtonDefault';\nimport { BaseTypes, SupportedTypes } from './types';\nimport { StatementComponentProps } from '@/src/types/fields';\nimport { checkFieldHasForcedValue } from '@/src/components/form/utils';\nimport { ForcedValueField } from '@/src/components/form/fields/ForcedValueField';\nimport { BaseFormDescription } from '@/src/components/ui/form';\n\ntype FieldBase = {\n label: string;\n name: string;\n description: string;\n Component?: React.ComponentType<$TSFixMe>;\n inputType: SupportedTypes;\n multiple?: boolean;\n};\n\ntype FieldWithOptions = FieldBase & {\n type: 'select' | 'radio';\n options: Array<{ value: string; label: string }>;\n};\n\ntype FieldWithoutOptions = FieldBase & {\n type: Exclude<SupportedTypes, 'select' | 'radio'>;\n options?: never;\n};\n\ntype Field = FieldWithOptions | FieldWithoutOptions;\n\ntype FieldSetFeatures = {\n toggle?: {\n enabled: boolean;\n defaultExpanded?: boolean;\n stateField?: string;\n labels?: {\n expand: string;\n collapse: string;\n };\n className?: string;\n };\n};\n\nexport type FieldSetProps = {\n label: string;\n name: string;\n description: string;\n fields: Field[];\n features?: FieldSetFeatures;\n components: Components;\n statement?: StatementComponentProps['data'];\n isFlatFieldset: boolean;\n extra?: React.ReactNode;\n variant: 'outset' | 'inset';\n meta?: {\n helpCenter?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\n } & Record<string, $TSFixMe>;\n};\n\nexport function FieldSetField({\n label,\n name,\n fields,\n description,\n components,\n statement,\n isFlatFieldset,\n extra,\n variant = 'outset',\n features,\n meta,\n}: FieldSetProps) {\n const { helpCenter } = meta || {};\n const { watch, setValue, trigger, formState } = useFormContext();\n const { components: formComponents } = useFormFields();\n\n // Get expanded state from form state if stateField is provided\n const stateField = features?.toggle?.stateField;\n const isExpanded = stateField\n ? watch(stateField)\n : (features?.toggle?.defaultExpanded ?? true);\n\n const fieldNames = fields.map(\n ({ name: fieldName }) => `${name}.${fieldName}`,\n );\n const watchedValues = watch(fieldNames);\n const prevValuesRef = useRef<string[]>(watchedValues);\n const triggerTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const toggleExpanded = () => {\n if (stateField) {\n setValue(stateField, !isExpanded);\n }\n };\n\n useEffect(() => {\n const currentValues = watchedValues;\n const previousValues = prevValuesRef.current;\n const hasBeenSubmitted = formState.isSubmitted || formState.submitCount > 0;\n\n // Check if any value has changed\n let hasChanged = false;\n for (let i = 0; i < currentValues.length; i++) {\n if (\n currentValues[i] !== undefined &&\n previousValues[i] !== currentValues[i]\n ) {\n hasChanged = true;\n // This is to prevent the form from triggering validation too many times\n break;\n }\n }\n // If changes detected and we haven't triggered yet, run trigger\n if (hasChanged && hasBeenSubmitted) {\n // We need to debounce the validation trigger so that tests don't freeze\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n triggerTimeoutRef.current = setTimeout(() => {\n trigger();\n }, 50);\n }\n\n prevValuesRef.current = [...currentValues];\n\n return () => {\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n };\n }, [watchedValues, trigger, formState.isSubmitted, formState.submitCount]);\n\n const ToggleComponent =\n formComponents?.fieldsetToggle || FieldsetToggleButtonDefault;\n const contentId = `${name}-content`;\n const headerId = `${name}-header`;\n\n return (\n <fieldset\n className={cn(\n 'border-1 border-input p-4 rounded-xl',\n `RemoteFlows__FieldSetField`,\n `RemoteFlows__FieldSetField__${name}`,\n )}\n >\n <legend\n className={cn(\n 'text-sm font-semibold px-2',\n variant === 'inset' && 'hidden',\n )}\n >\n {label}\n </legend>\n {helpCenter?.callToAction && helpCenter?.id && variant === 'outset' && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n {variant === 'inset' && (\n <>\n <div\n className='RemoteFlows__FieldSetField__Header'\n id={headerId}\n data-state={isExpanded ? 'expanded' : 'collapsed'}\n aria-expanded={isExpanded}\n >\n <h3 className={cn('RemoteFlows__FieldSetField__Title')}>{label}</h3>\n {features?.toggle?.enabled && (\n <ToggleComponent\n isExpanded={isExpanded}\n onToggle={toggleExpanded}\n aria-expanded={isExpanded}\n aria-controls={contentId}\n aria-label={`${isExpanded ? 'Hide' : 'Show'} ${label}`}\n className={cn(\n 'RemoteFlows__FieldSetField__Toggle',\n features.toggle?.className,\n )}\n >\n {isExpanded\n ? (features.toggle.labels?.collapse ?? 'Remove')\n : (features.toggle.labels?.expand ?? 'Define')}\n </ToggleComponent>\n )}\n </div>\n {helpCenter?.callToAction && helpCenter?.id && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n </>\n )}\n {isExpanded && (\n <div id={contentId} aria-labelledby={headerId} role='region'>\n {description ? (\n <BaseFormDescription\n as='div'\n className='mb-5 RemoteFlows__FieldSetField__Description'\n >\n {description}\n </BaseFormDescription>\n ) : null}\n <div className='grid gap-4'>\n {fields.map((field: $TSFixMe) => {\n if (field.calculateDynamicProperties) {\n field = {\n ...field,\n ...(field.calculateDynamicProperties(watchedValues, field) ||\n {}),\n };\n }\n\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n const fieldType = field.type;\n const fieldKey = `${isFlatFieldset ? field.name : `${name}.${field.name}`}`;\n\n const isForcedValue = checkFieldHasForcedValue(field);\n\n // Helper function to wrap content with WrapperComponent if present\n const wrapWithCustomWrapper = (\n content: React.ReactNode,\n key: string,\n ) => {\n if (field.WrapperComponent) {\n return (\n <field.WrapperComponent key={key}>\n {content}\n </field.WrapperComponent>\n );\n }\n return <Fragment key={key}>{content}</Fragment>;\n };\n\n if (isForcedValue) {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <ForcedValueField\n name={fieldKey}\n description={fieldProps.description}\n value={fieldProps.const}\n statement={fieldProps.statement}\n label={fieldProps.label}\n helpCenter={fieldProps.meta?.helpCenter}\n />,\n fieldKey,\n );\n }\n\n // Handle nested fieldsets\n if (fieldType === 'fieldset') {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <FieldSetField\n {...(fieldProps as $TSFixMe)}\n name={fieldKey}\n components={components}\n />,\n fieldKey,\n );\n }\n\n if (fieldType === 'fieldset-flat') {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <FieldSetField\n {...(fieldProps as $TSFixMe)}\n name={fieldKey}\n components={components}\n isFlatFieldset\n />,\n fieldKey,\n );\n }\n // We need to do the check after checking (field.type || field.inputType) === 'fieldset' or (field.type || field.inputType) === 'fieldset-flat'\n // circular dependency most likely\n let FieldComponent = baseFields[fieldType as BaseTypes];\n\n if (field.Component) {\n const { Component } = field as {\n Component: React.ComponentType<$TSFixMe>;\n };\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <>\n <Component\n {...fieldProps}\n value={watch(fieldKey) as string}\n setValue={(value: unknown) => {\n setValue(fieldKey, value);\n }}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </>,\n fieldKey,\n );\n }\n\n if (!FieldComponent) {\n return (\n <p className='error'>Field type {fieldType} not supported</p>\n );\n }\n\n if (fieldType === 'select' && field.multiple) {\n FieldComponent = baseFields['multi-select'];\n }\n\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <>\n <FieldComponent\n {...fieldProps}\n name={fieldKey}\n component={components?.[fieldType as keyof Components]}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </>,\n fieldKey,\n );\n })}\n {extra ? extra : null}\n {statement ? <Statement {...statement} /> : null}\n </div>\n </div>\n )}\n </fieldset>\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { getMinStartDate } from '@/src/components/form/utils';\n\nexport type DatePickerFieldProps = JSFField & {\n onChange?: (value: $TSFixMe) => void;\n component?: Components['date'];\n};\n\nexport function DatePickerField({\n description,\n label,\n name,\n minDate,\n maxDate,\n onChange,\n component,\n ...rest\n}: DatePickerFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n let minDateValue: Date;\n if (rest.meta?.mot && typeof rest.meta.mot === 'number') {\n minDateValue = getMinStartDate(rest.meta.mot);\n } else if (typeof minDate === 'string') {\n minDateValue = new Date(`${minDate}T00:00:00`);\n }\n\n let maxDateValue: Date | undefined;\n if (maxDate) {\n maxDateValue = new Date(`${maxDate}T23:59:59`);\n }\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.date;\n\n if (!Component) {\n throw new Error(`Date picker component not found for field ${name}`);\n }\n\n const customDatePickerFieldProps = {\n description,\n label,\n name,\n onChange,\n transformHtml,\n ...(minDateValue && { minDate: minDateValue.toISOString() }),\n ...(maxDateValue && { maxDate: maxDateValue.toISOString() }),\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customDatePickerFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport {\n ControllerRenderProps,\n FieldValues,\n useFormContext,\n} from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { FieldDataProps } from '@/src/types/fields';\n\nconst validateFileSize = (files: File[], maxSize?: number): string | null => {\n if (!maxSize) return null;\n\n for (const file of files) {\n if (file.size > maxSize) {\n const maxSizeMB = Math.round(maxSize / (1024 * 1024));\n const fileSizeMB = Math.round(file.size / (1024 * 1024));\n return `File \"${file.name}\" exceeds maximum size of ${maxSizeMB}MB (file is ${fileSizeMB}MB)`;\n }\n }\n return null;\n};\n\nexport type FieldFileDataProps = FieldDataProps & {\n accept?: string;\n multiple?: boolean;\n maxFileSize?: number;\n};\n\nexport type FileUploadFieldProps = JSFField & {\n onChange?: (value: File[]) => void;\n multiple?: boolean;\n component?: Components['file'];\n maxSize?: number;\n accept?: string;\n};\n\nexport function FileUploadField({\n name,\n description,\n label,\n multiple,\n onChange,\n component,\n accept,\n maxSize,\n ...rest\n}: FileUploadFieldProps) {\n const { components } = useFormFields();\n const { control, setError, clearErrors } = useFormContext();\n const transformHtml = useTransformer();\n\n const handleOnChange = async (\n files: File[],\n field: ControllerRenderProps<FieldValues, string>,\n ) => {\n const sizeError = validateFileSize(files, maxSize);\n if (sizeError) {\n setError(name, { message: sizeError });\n return;\n }\n\n clearErrors(name);\n field.onChange(files);\n onChange?.(files);\n };\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.file;\n if (!Component) {\n throw new Error(`File upload component not found for field ${name}`);\n }\n\n const customFileUploadFieldProps: FieldFileDataProps = {\n name,\n description,\n label,\n multiple,\n accept,\n maxFileSize: maxSize,\n transformHtml,\n ...rest,\n };\n\n return (\n <Component\n field={{\n ...field,\n value: field.value,\n onChange: async (value: File[]) => handleOnChange(value, field),\n }}\n fieldState={fieldState}\n fieldData={customFileUploadFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\nimport { TextFieldProps } from './TextField';\n\nexport type NumberFieldProps = TextFieldProps & {\n component?: Components['number'];\n onChange?: (value: number) => void;\n};\n\nexport function NumberField({\n component,\n onChange,\n ...props\n}: NumberFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const Component = component || components.number;\n\n if (!Component) {\n throw new Error(`Number component not found for field ${props.name}`);\n }\n\n const customNumberFieldProps = {\n onChange,\n transformHtml,\n ...props,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: number) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customNumberFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { FormField } from '@/src/components/ui/form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\n\ntype RadioGroupFieldProps = JSFField & {\n onChange?: (value: string) => void;\n component?: Components['radio'];\n};\n\nexport function RadioGroupField({\n name,\n defaultValue,\n description,\n label,\n options,\n onChange,\n component,\n ...rest\n}: RadioGroupFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n const Component = component || components?.radio;\n if (!Component) {\n throw new Error(`Radio group component not found for field ${name}`);\n }\n const customRadioGroupFieldProps = {\n name,\n defaultValue,\n description,\n label,\n options,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customRadioGroupFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\ntype SelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string | number; label: string }>;\n className?: string;\n onChange?: (value: string | number) => void;\n component?: Components['select'];\n};\n\nexport function SelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: SelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.select;\n\n if (!Component) {\n throw new Error(`Select component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string | number) => {\n const isNumberType = Array.isArray(rest.jsonType)\n ? rest.jsonType.includes('number')\n : rest.jsonType === 'number';\n const maybeCastValue = isNumberType ? Number(value) : value;\n field.onChange(maybeCastValue);\n onChange?.(maybeCastValue);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\n\ntype CountryFieldProps = JSFField & {\n options: Array<{ value: string; label: string }>;\n onChange?: (value: $TSFixMe) => void;\n $meta: {\n regions: Record<string, string[]>;\n subregions: Record<string, string[]>;\n };\n component?: Components['countries'];\n};\n\nexport function CountryField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n component,\n ...rest\n}: CountryFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.countries;\n if (!Component) {\n throw new Error(`Country component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\nexport type TextAreaFieldProps = JSFField & {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n maxLength?: number;\n component?: Components['textarea'];\n};\n\nexport function TextAreaField({\n name,\n description,\n label,\n onChange,\n maxLength,\n component,\n ...rest\n}: TextAreaFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.textarea;\n if (!Component) {\n throw new Error(`Text area component not found for field ${name}`);\n }\n const customTextAreaFieldProps = {\n name,\n description,\n label,\n maxLength,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (evt: React.ChangeEvent<HTMLTextAreaElement>) => {\n field.onChange(evt);\n onChange?.(evt);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextAreaFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextFieldProps } from './TextField';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype EmailFieldProps = TextFieldProps & {\n component?: Components['email'];\n};\n\nexport function EmailField({ component, onChange, ...props }: EmailFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const Component = component || components.email;\n\n if (!Component) {\n throw new Error(`Email component not found for field ${props.name}`);\n }\n\n const customEmailFieldProps = {\n onChange,\n transformHtml,\n ...props,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customEmailFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { Field } from '@/src/flows/types';\n\nexport function HiddenField(props: Field) {\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field }) => {\n return <input {...field} type='hidden' />;\n }}\n />\n );\n}\n","import { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\n\nimport {\n buildWorkScheduleSummary,\n calculateTotalWorkHours,\n DailySchedule,\n} from './workScheduleUtils';\n\ntype WorkScheduleFieldProps = JSFField & {\n name: string;\n default: DailySchedule[];\n onChange?: (value: $TSFixMe) => void;\n component?: Components['work-schedule'];\n};\n\ntype WorkScheduleFormData = {\n schedule: DailySchedule[];\n};\n\nexport function WorkScheduleField(props: WorkScheduleFieldProps) {\n const { components } = useFormFields();\n const { setValue, control, watch } = useFormContext();\n const transformHtml = useTransformer();\n const watchedSchedule = watch(props.name);\n const [currentSchedule, setCurrentSchedule] =\n useState<DailySchedule[]>(watchedSchedule);\n\n const { workHoursSummary, breakSummary } =\n buildWorkScheduleSummary(currentSchedule);\n const totalWorkHours = calculateTotalWorkHours(currentSchedule);\n\n useEffect(() => {\n setValue(props.name, currentSchedule);\n }, [currentSchedule, props.name, setValue]);\n\n function onSubmit(data: WorkScheduleFormData['schedule']) {\n setCurrentSchedule(data);\n }\n\n const Component = props.component || components['work-schedule'];\n if (!Component) {\n throw new Error(\n `Work schedule component not found for field ${props.name}`,\n );\n }\n\n const fieldData = {\n ...props,\n onSubmit,\n currentSchedule,\n transformHtml,\n defaultFormattedValue: {\n workHoursSummary,\n breakSummary,\n totalWorkHours,\n },\n };\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={fieldData}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\n\ntype MultiSelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string; label: string }>;\n className?: string;\n onChange?: (value: $TSFixMe) => void;\n component?: Components['select'];\n};\n\nexport function MultiSelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: MultiSelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.['multi-select'];\n if (!Component) {\n throw new Error(`Multi select component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import {\n NumberField,\n NumberFieldProps,\n} from '@/src/components/form/fields/NumberField';\n\n// TODO: We use the number field and the the number type is what the partner overrides\n// TODO: this needs to be changed in the future with the changes from https://github.com/remoteoss/remote-flows/pull/128\nexport const MoneyField = (props: NumberFieldProps) => {\n return <NumberField maxLength={15} {...props} />;\n};\n","import { FormField } from '@/src/components/ui/form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components } from '@/src/types/remoteFlows';\nimport {\n useFormContext,\n ControllerFieldState,\n ControllerRenderProps,\n FieldValues,\n} from 'react-hook-form';\nimport { TelFieldComponentProps, TelFieldDataProps } from '@/src/types/fields';\nimport { useMemo, useCallback, useState, useEffect, useRef } from 'react';\n\nexport type Country = {\n name: string;\n dialCode: string;\n pattern: string;\n areaCodes?: string[];\n};\n\n/**\n * Removes all spaces from input.\n */\nfunction removeSpaces(value: string) {\n return value.replace(/\\s/g, '');\n}\n\nfunction getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber: string = '',\n country?: Country,\n) {\n const baseRegex = new RegExp(\n `^(\\\\+|00)(\\\\d{${country?.dialCode?.length ?? 0}})(.*)$`,\n );\n const baseMatch = internationalPhoneNumber?.match(baseRegex);\n\n if (!baseMatch) {\n return {\n prefix: '',\n dialCode: '',\n phoneNumber: internationalPhoneNumber,\n };\n }\n\n const [, plusOrCallPrefix, dialCode, phoneNumber] = baseMatch;\n\n return {\n prefix: plusOrCallPrefix,\n dialCode,\n phoneNumber,\n };\n}\n\nfunction getCountryFromPhoneNumber(\n {\n dialCodes,\n dialCodeMaxLength,\n }: ReturnType<typeof getCountryDataByCountryCode>,\n internationalPhoneNumber: string,\n) {\n const { prefix } = getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber,\n );\n\n if (!prefix) {\n return undefined;\n }\n\n // Try longest dial codes first - critical for US/Canada\n for (let i = dialCodeMaxLength + prefix.length; i > prefix.length; i--) {\n const dialCode = internationalPhoneNumber.slice(prefix.length, i);\n\n if (dialCodes[dialCode]) {\n return dialCodes[dialCode];\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates a map of dial codes (including area codes) to country objects.\n * Handles countries like US/Canada that share +1 with different area codes.\n */\nexport function getCountryDataByCountryCode(countries: Country[]) {\n const dialCodes: Record<string, Country> = {};\n let dialCodeMaxLength = 0;\n\n countries.forEach((country) => {\n if (country.areaCodes) {\n // For countries with area codes (e.g., +1204, +1226)\n country.areaCodes.forEach((areaCode) => {\n const code = country.dialCode + areaCode;\n dialCodes[code] = country;\n if (code.length > dialCodeMaxLength) {\n dialCodeMaxLength = code.length;\n }\n });\n } else {\n // For countries with simple dial codes (e.g., +44, +351)\n dialCodes[country.dialCode] = country;\n if (country.dialCode.length > dialCodeMaxLength) {\n dialCodeMaxLength = country.dialCode.length;\n }\n }\n });\n\n return { dialCodes, dialCodeMaxLength };\n}\n\nfunction getAreaCodesFromPattern(pattern: string = '') {\n const codeGroupPattern = /\\(([^)]+)\\)/g;\n const groups = pattern.match(codeGroupPattern);\n\n if (groups?.length === 2) {\n return groups[1].replace(/\\(|\\)/g, '').split('|');\n }\n\n return undefined;\n}\n\nfunction transformSchemaToCountries(\n options: Array<{\n value: string;\n label: string;\n meta: { countryCode: string };\n pattern: string;\n }>,\n): Country[] {\n return options.map((option) => ({\n name: option.label,\n dialCode: option.meta.countryCode,\n pattern: option.pattern,\n areaCodes: getAreaCodesFromPattern(option.pattern),\n }));\n}\n\nexport function TelFieldRenderer({\n field,\n fieldState,\n fieldData,\n component: Component,\n onChangeCountryCode,\n onChangePhoneNumber,\n}: {\n field: ControllerRenderProps<FieldValues, string>;\n fieldState: ControllerFieldState;\n fieldData: TelFieldDataProps;\n component: React.ComponentType<TelFieldComponentProps>;\n onChangeCountryCode?: (newCountry: Country) => void;\n onChangePhoneNumber?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n const { value: internationalPhoneNumber } = field;\n const { options } = fieldData;\n\n const countries = useMemo(\n () => transformSchemaToCountries(options),\n [options],\n );\n\n const countriesByCountryCode = useMemo(\n () => getCountryDataByCountryCode(countries),\n [countries],\n );\n\n // Track if the country change was due to manual selection\n const isManualSelectionRef = useRef(false);\n\n // Use state to track country, so manual selection is preserved\n const [country, setCountry] = useState<Country | undefined>(() =>\n getCountryFromPhoneNumber(\n getCountryDataByCountryCode(countries),\n internationalPhoneNumber || '',\n ),\n );\n\n // Re-detect country when phone number changes externally (e.g., form reset or area code typed)\n useEffect(() => {\n // Reset manual selection flag if field is cleared\n if (!internationalPhoneNumber || internationalPhoneNumber === '+') {\n isManualSelectionRef.current = false;\n }\n\n if (isManualSelectionRef.current) {\n return;\n }\n\n const detected = getCountryFromPhoneNumber(\n countriesByCountryCode,\n internationalPhoneNumber || '',\n );\n setCountry(detected);\n }, [internationalPhoneNumber, countriesByCountryCode]);\n\n const { prefix, phoneNumber: nationalPhoneNumber } = useMemo(\n () =>\n getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber,\n country,\n ),\n [internationalPhoneNumber, country],\n );\n\n const handleCountryCodeChange = useCallback(\n (newCountry: Country) => {\n if (!newCountry) return;\n const newValue = `+${newCountry.dialCode}${nationalPhoneNumber}`;\n\n // Mark as manual selection to prevent useEffect from overriding\n isManualSelectionRef.current = true;\n\n // Update country state to preserve manual selection\n setCountry(newCountry);\n\n // Update React Hook Form state\n field.onChange(newValue);\n\n // Call optional external onChange\n if (onChangeCountryCode) {\n onChangeCountryCode(newCountry);\n }\n },\n [nationalPhoneNumber, field, onChangeCountryCode],\n );\n\n const handlePhoneNumberChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const valueWithoutSpaces = removeSpaces(event.target.value);\n let newValue: string;\n if (country) {\n newValue = `${prefix}${country.dialCode}${valueWithoutSpaces}`;\n } else {\n newValue = `${prefix}${valueWithoutSpaces}`;\n }\n // Update React Hook Form state\n field.onChange(newValue);\n\n // Call optional external onChange\n if (onChangePhoneNumber) {\n const syntheticEvent = {\n target: { value: newValue, name: field.name },\n } as React.ChangeEvent<HTMLInputElement>;\n onChangePhoneNumber(syntheticEvent);\n }\n },\n [country, prefix, field, onChangePhoneNumber],\n );\n\n const fieldDataWithComputedValues = useMemo(\n () => ({\n ...fieldData,\n onChangeCountryCode: handleCountryCodeChange,\n onChangePhoneNumber: handlePhoneNumberChange,\n currentCountry: country,\n nationalPhoneNumber,\n }),\n [\n fieldData,\n handleCountryCodeChange,\n handlePhoneNumberChange,\n country,\n nationalPhoneNumber,\n ],\n );\n\n return (\n <Component\n field={field}\n fieldState={fieldState}\n fieldData={fieldDataWithComputedValues}\n />\n );\n}\n\nexport type TelFieldProps = TelFieldDataProps & {\n name: string;\n component?: Components['tel'];\n};\n\nexport function TelField({\n name,\n description,\n label,\n onChangeCountryCode,\n onChangePhoneNumber,\n component,\n ...rest\n}: TelFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.tel;\n if (!Component) {\n throw new Error(`Tel component not found for field ${name}`);\n }\n\n const customTelFieldProps: TelFieldDataProps = {\n name,\n description,\n label,\n transformHtml,\n ...rest,\n };\n\n return (\n <TelFieldRenderer\n field={field}\n fieldState={fieldState}\n fieldData={customTelFieldProps}\n component={Component}\n onChangeCountryCode={onChangeCountryCode}\n onChangePhoneNumber={onChangePhoneNumber}\n />\n );\n }}\n />\n );\n}\n","import { CheckBoxField } from './CheckBoxField';\nimport { DatePickerField } from './DatePickerField';\nimport { FileUploadField } from './FileUploadField';\nimport { NumberField } from './NumberField';\nimport { RadioGroupField } from './RadioGroupField';\nimport { SelectField } from './SelectField';\nimport { CountryField } from './CountryField';\nimport { TextAreaField } from './TextAreaField';\nimport { TextField } from './TextField';\nimport { EmailField } from './EmailField';\nimport { HiddenField } from './HiddenField';\nimport { WorkScheduleField } from './WorkScheduleField';\nimport { MultiSelectField } from './MultiSelectField';\nimport { MoneyField } from './MoneyField';\nimport { TelField } from './TelField';\nimport { SupportedTypes } from './types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\nexport const baseFields: Record<\n Exclude<SupportedTypes, 'fieldset' | 'fieldset-flat'>,\n React.ComponentType<$TSFixMe>\n> = {\n checkbox: CheckBoxField,\n text: TextField,\n email: EmailField,\n money: MoneyField,\n select: SelectField,\n 'multi-select': MultiSelectField,\n radio: RadioGroupField,\n number: NumberField,\n file: FileUploadField,\n date: DatePickerField,\n textarea: TextAreaField,\n countries: CountryField,\n hidden: HiddenField,\n tel: TelField,\n 'work-schedule': WorkScheduleField,\n};\n","import { useFormContext } from 'react-hook-form';\nimport { sanitizeHtml } from '@/src/lib/utils';\nimport { useEffect } from 'react';\nimport { HelpCenterDataProps } from '@/src/types/fields';\nimport { BaseFormDescription as Description } from '@/src/components/ui/form';\nimport { HelpCenter } from '@/src/components/shared/zendesk-drawer/HelpCenter';\n\nexport type ForcedValueFieldProps = {\n name: string;\n value: string;\n description: string;\n statement?: {\n title?: string;\n description?: string;\n };\n label: string;\n helpCenter?: HelpCenterDataProps;\n};\n\nexport function ForcedValueField({\n name,\n value,\n description,\n statement,\n label,\n helpCenter,\n}: ForcedValueFieldProps) {\n const { setValue } = useFormContext();\n const forcedValueDescription = statement?.description || description;\n\n const forcedValueTitle = statement?.title\n ? sanitizeHtml(statement?.title)\n : sanitizeHtml(label);\n\n const titleId = `forced-value-${name}-title`;\n const descriptionId = `forced-value-${name}-description`;\n\n useEffect(() => {\n setValue(name, value);\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const isHiddenValue = !forcedValueDescription && !statement?.title;\n\n if (isHiddenValue) {\n return null;\n }\n\n return (\n <div\n role='group'\n aria-labelledby={forcedValueTitle ? titleId : undefined}\n aria-describedby={forcedValueDescription ? descriptionId : undefined}\n >\n {forcedValueTitle && (\n <p\n id={titleId}\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{\n __html: forcedValueTitle,\n }}\n />\n )}\n <Description\n as='span'\n id={descriptionId}\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n helpCenter={\n <HelpCenter\n className='RemoteFlows__ForcedValue__HelpCenterLink'\n helpCenter={helpCenter}\n />\n }\n >\n {forcedValueDescription}\n </Description>\n </div>\n );\n}\n"],"mappings":"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","names":["Fragment","useEffect","useRef","omit","jsx","DatePickerField","description","label","name","minDate","maxDate","onChange","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","minDateValue","getMinStartDate","maxDateValue","FormField","field","fieldState","Component","customDatePickerFieldProps","__name","value","jsx","validateFileSize","__name","files","maxSize","file","maxSizeMB","fileSizeMB","FileUploadField","name","description","label","multiple","onChange","component","accept","rest","components","useFormFields","control","setError","clearErrors","useFormContext","transformHtml","useTransformer","handleOnChange","field","sizeError","FormField","fieldState","Component","customFileUploadFieldProps","value","jsx","NumberField","component","onChange","props","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customNumberFieldProps","__name","value","jsx","RadioGroupField","name","defaultValue","description","label","options","onChange","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customRadioGroupFieldProps","__name","value","jsx","SelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","maybeCastValue","jsx","CountryField","label","name","options","defaultValue","description","onChange","$meta","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","jsx","TextAreaField","name","description","label","onChange","maxLength","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customTextAreaFieldProps","__name","evt","jsx","EmailField","component","onChange","props","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customEmailFieldProps","__name","value","jsx","HiddenField","props","control","useFormContext","FormField","field","__name","useEffect","useState","jsx","WorkScheduleField","props","components","useFormFields","setValue","control","watch","useFormContext","transformHtml","useTransformer","watchedSchedule","currentSchedule","setCurrentSchedule","useState","workHoursSummary","breakSummary","buildWorkScheduleSummary","totalWorkHours","calculateTotalWorkHours","useEffect","onSubmit","data","__name","Component","fieldData","FormField","field","fieldState","value","jsx","MultiSelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","jsx","MoneyField","__name","props","NumberField","useMemo","useCallback","useState","useEffect","useRef","jsx","removeSpaces","value","__name","getStructuredNumberFromInternationalNumber","internationalPhoneNumber","country","baseRegex","baseMatch","plusOrCallPrefix","dialCode","phoneNumber","getCountryFromPhoneNumber","dialCodes","dialCodeMaxLength","prefix","i","getCountryDataByCountryCode","countries","areaCode","code","getAreaCodesFromPattern","pattern","codeGroupPattern","groups","transformSchemaToCountries","options","option","TelFieldRenderer","field","fieldState","fieldData","Component","onChangeCountryCode","onChangePhoneNumber","useMemo","countriesByCountryCode","isManualSelectionRef","useRef","setCountry","useState","useEffect","detected","nationalPhoneNumber","handleCountryCodeChange","useCallback","newCountry","newValue","handlePhoneNumberChange","event","valueWithoutSpaces","syntheticEvent","fieldDataWithComputedValues","TelField","name","description","label","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","customTelFieldProps","baseFields","CheckBoxField","TextField","EmailField","MoneyField","SelectField","MultiSelectField","RadioGroupField","NumberField","FileUploadField","DatePickerField","TextAreaField","CountryField","HiddenField","TelField","WorkScheduleField","useEffect","jsx","jsxs","ForcedValueField","name","value","description","statement","label","helpCenter","setValue","useFormContext","forcedValueDescription","forcedValueTitle","sanitizeHtml","titleId","descriptionId","useEffect","BaseFormDescription","HelpCenter","__name","Fragment","jsx","jsxs","FieldSetField","label","name","fields","description","components","statement","isFlatFieldset","extra","variant","features","meta","helpCenter","watch","setValue","trigger","formState","useFormContext","formComponents","useFormFields","stateField","isExpanded","fieldNames","fieldName","watchedValues","prevValuesRef","useRef","triggerTimeoutRef","toggleExpanded","__name","useEffect","currentValues","previousValues","hasBeenSubmitted","hasChanged","i","ToggleComponent","FieldsetToggleButtonDefault","contentId","headerId","cn","ZendeskTriggerButton","BaseFormDescription","field","fieldType","fieldKey","isForcedValue","checkFieldHasForcedValue","wrapWithCustomWrapper","content","key","fieldProps","omit","ForcedValueField","FieldComponent","baseFields","Component","value","Statement"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/form/fields/FieldSetField.tsx","../src/components/form/fields/DatePickerField.tsx","../src/components/form/fields/FileUploadField.tsx","../src/components/form/fields/NumberField.tsx","../src/components/form/fields/RadioGroupField.tsx","../src/components/form/fields/SelectField.tsx","../src/components/form/fields/CountryField.tsx","../src/components/form/fields/TextAreaField.tsx","../src/components/form/fields/EmailField.tsx","../src/components/form/fields/HiddenField.tsx","../src/components/form/fields/WorkScheduleField.tsx","../src/components/form/fields/MultiSelectField.tsx","../src/components/form/fields/MoneyField.tsx","../src/components/form/fields/TelField.tsx","../src/components/form/fields/baseFields.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["import { useFormContext } from 'react-hook-form';\nimport { Fragment, useEffect, useRef } from 'react';\nimport omit from 'lodash.omit';\nimport { baseFields } from '@/src/components/form/fields/baseFields';\nimport { cn } from '@/src/lib/utils';\nimport { $TSFixMe, Components } from '@/src/types/remoteFlows';\nimport { Statement } from '@/src/components/form/Statement';\nimport { useFormFields } from '@/src/context';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\nimport { FieldsetToggleButtonDefault } from '@/src/components/form/fields/default/FieldsetToggleButtonDefault';\nimport { BaseTypes, SupportedTypes } from './types';\nimport { StatementComponentProps } from '@/src/types/fields';\nimport { checkFieldHasForcedValue } from '@/src/components/form/utils';\nimport { ForcedValueField } from '@/src/components/form/fields/ForcedValueField';\nimport { BaseFormDescription } from '@/src/components/ui/form';\n\ntype FieldBase = {\n label: string;\n name: string;\n description: string;\n Component?: React.ComponentType<$TSFixMe>;\n inputType: SupportedTypes;\n multiple?: boolean;\n};\n\ntype FieldWithOptions = FieldBase & {\n type: 'select' | 'radio';\n options: Array<{ value: string; label: string }>;\n};\n\ntype FieldWithoutOptions = FieldBase & {\n type: Exclude<SupportedTypes, 'select' | 'radio'>;\n options?: never;\n};\n\ntype Field = FieldWithOptions | FieldWithoutOptions;\n\ntype FieldSetFeatures = {\n toggle?: {\n enabled: boolean;\n defaultExpanded?: boolean;\n stateField?: string;\n labels?: {\n expand: string;\n collapse: string;\n };\n className?: string;\n };\n};\n\nexport type FieldSetProps = {\n label: string;\n name: string;\n description: string;\n fields: Field[];\n features?: FieldSetFeatures;\n components: Components;\n statement?: StatementComponentProps['data'];\n isFlatFieldset: boolean;\n extra?: React.ReactNode;\n variant: 'outset' | 'inset';\n meta?: {\n helpCenter?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\n } & Record<string, $TSFixMe>;\n};\n\nexport function FieldSetField({\n label,\n name,\n fields,\n description,\n components,\n statement,\n isFlatFieldset,\n extra,\n variant = 'outset',\n features,\n meta,\n}: FieldSetProps) {\n const { helpCenter } = meta || {};\n const { watch, setValue, trigger, formState } = useFormContext();\n const { components: formComponents } = useFormFields();\n\n // Get expanded state from form state if stateField is provided\n const stateField = features?.toggle?.stateField;\n const isExpanded = stateField\n ? watch(stateField)\n : (features?.toggle?.defaultExpanded ?? true);\n\n const fieldNames = fields.map(\n ({ name: fieldName }) => `${name}.${fieldName}`,\n );\n const watchedValues = watch(fieldNames);\n const prevValuesRef = useRef<string[]>(watchedValues);\n const triggerTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const toggleExpanded = () => {\n if (stateField) {\n setValue(stateField, !isExpanded);\n }\n };\n\n useEffect(() => {\n const currentValues = watchedValues;\n const previousValues = prevValuesRef.current;\n const hasBeenSubmitted = formState.isSubmitted || formState.submitCount > 0;\n\n // Check if any value has changed\n let hasChanged = false;\n for (let i = 0; i < currentValues.length; i++) {\n if (\n currentValues[i] !== undefined &&\n previousValues[i] !== currentValues[i]\n ) {\n hasChanged = true;\n // This is to prevent the form from triggering validation too many times\n break;\n }\n }\n // If changes detected and we haven't triggered yet, run trigger\n if (hasChanged && hasBeenSubmitted) {\n // We need to debounce the validation trigger so that tests don't freeze\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n triggerTimeoutRef.current = setTimeout(() => {\n trigger();\n }, 50);\n }\n\n prevValuesRef.current = [...currentValues];\n\n return () => {\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n };\n }, [watchedValues, trigger, formState.isSubmitted, formState.submitCount]);\n\n const ToggleComponent =\n formComponents?.fieldsetToggle || FieldsetToggleButtonDefault;\n const contentId = `${name}-content`;\n const headerId = `${name}-header`;\n\n return (\n <fieldset\n className={cn(\n 'border-1 border-input p-4 rounded-xl',\n `RemoteFlows__FieldSetField`,\n `RemoteFlows__FieldSetField__${name}`,\n )}\n >\n <legend\n className={cn(\n 'text-sm font-semibold px-2',\n variant === 'inset' && 'hidden',\n )}\n >\n {label}\n </legend>\n {helpCenter?.callToAction && helpCenter?.id && variant === 'outset' && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n {variant === 'inset' && (\n <>\n <div\n className='RemoteFlows__FieldSetField__Header'\n id={headerId}\n data-state={isExpanded ? 'expanded' : 'collapsed'}\n aria-expanded={isExpanded}\n >\n <h3 className={cn('RemoteFlows__FieldSetField__Title')}>{label}</h3>\n {features?.toggle?.enabled && (\n <ToggleComponent\n isExpanded={isExpanded}\n onToggle={toggleExpanded}\n aria-expanded={isExpanded}\n aria-controls={contentId}\n aria-label={`${isExpanded ? 'Hide' : 'Show'} ${label}`}\n className={cn(\n 'RemoteFlows__FieldSetField__Toggle',\n features.toggle?.className,\n )}\n >\n {isExpanded\n ? (features.toggle.labels?.collapse ?? 'Remove')\n : (features.toggle.labels?.expand ?? 'Define')}\n </ToggleComponent>\n )}\n </div>\n {helpCenter?.callToAction && helpCenter?.id && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n </>\n )}\n {isExpanded && (\n <div id={contentId} aria-labelledby={headerId} role='region'>\n {description ? (\n <BaseFormDescription\n as='div'\n className='mb-5 RemoteFlows__FieldSetField__Description'\n >\n {description}\n </BaseFormDescription>\n ) : null}\n <div className='grid gap-4'>\n {fields.map((field: $TSFixMe) => {\n if (field.calculateDynamicProperties) {\n field = {\n ...field,\n ...(field.calculateDynamicProperties(watchedValues, field) ||\n {}),\n };\n }\n\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n const fieldType = field.type;\n const fieldKey = `${isFlatFieldset ? field.name : `${name}.${field.name}`}`;\n\n const isForcedValue = checkFieldHasForcedValue(field);\n\n // Helper function to wrap content with WrapperComponent if present\n const wrapWithCustomWrapper = (\n content: React.ReactNode,\n key: string,\n ) => {\n if (field.WrapperComponent) {\n return (\n <field.WrapperComponent key={key}>\n {content}\n </field.WrapperComponent>\n );\n }\n return <Fragment key={key}>{content}</Fragment>;\n };\n\n if (isForcedValue) {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <ForcedValueField\n name={fieldKey}\n description={fieldProps.description}\n value={fieldProps.const}\n statement={fieldProps.statement}\n label={fieldProps.label}\n helpCenter={fieldProps.meta?.helpCenter}\n />,\n fieldKey,\n );\n }\n\n // Handle nested fieldsets\n if (fieldType === 'fieldset') {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <FieldSetField\n {...(fieldProps as $TSFixMe)}\n name={fieldKey}\n components={components}\n />,\n fieldKey,\n );\n }\n\n if (fieldType === 'fieldset-flat') {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <FieldSetField\n {...(fieldProps as $TSFixMe)}\n name={fieldKey}\n components={components}\n isFlatFieldset\n />,\n fieldKey,\n );\n }\n // We need to do the check after checking (field.type || field.inputType) === 'fieldset' or (field.type || field.inputType) === 'fieldset-flat'\n // circular dependency most likely\n let FieldComponent = baseFields[fieldType as BaseTypes];\n\n if (field.Component) {\n const { Component } = field as {\n Component: React.ComponentType<$TSFixMe>;\n };\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <>\n <Component\n {...fieldProps}\n value={watch(fieldKey) as string}\n setValue={(value: unknown) => {\n setValue(fieldKey, value);\n }}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </>,\n fieldKey,\n );\n }\n\n if (!FieldComponent) {\n return (\n <p className='error'>Field type {fieldType} not supported</p>\n );\n }\n\n if (fieldType === 'select' && field.multiple) {\n FieldComponent = baseFields['multi-select'];\n }\n\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <>\n <FieldComponent\n {...fieldProps}\n name={fieldKey}\n component={components?.[fieldType as keyof Components]}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </>,\n fieldKey,\n );\n })}\n {extra ? extra : null}\n {statement ? <Statement {...statement} /> : null}\n </div>\n </div>\n )}\n </fieldset>\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { getMinStartDate } from '@/src/components/form/utils';\n\nexport type DatePickerFieldProps = JSFField & {\n onChange?: (value: $TSFixMe) => void;\n component?: Components['date'];\n};\n\nexport function DatePickerField({\n description,\n label,\n name,\n minDate,\n maxDate,\n onChange,\n component,\n ...rest\n}: DatePickerFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n let minDateValue: Date;\n if (rest.meta?.mot && typeof rest.meta.mot === 'number') {\n minDateValue = getMinStartDate(rest.meta.mot);\n } else if (typeof minDate === 'string') {\n minDateValue = new Date(`${minDate}T00:00:00`);\n }\n\n let maxDateValue: Date | undefined;\n if (maxDate) {\n maxDateValue = new Date(`${maxDate}T23:59:59`);\n }\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.date;\n\n if (!Component) {\n throw new Error(`Date picker component not found for field ${name}`);\n }\n\n const customDatePickerFieldProps = {\n description,\n label,\n name,\n onChange,\n transformHtml,\n ...(minDateValue && { minDate: minDateValue.toISOString() }),\n ...(maxDateValue && { maxDate: maxDateValue.toISOString() }),\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customDatePickerFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport {\n ControllerRenderProps,\n FieldValues,\n useFormContext,\n} from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { FieldDataProps } from '@/src/types/fields';\n\nconst validateFileSize = (files: File[], maxSize?: number): string | null => {\n if (!maxSize) return null;\n\n for (const file of files) {\n if (file.size > maxSize) {\n const maxSizeMB = Math.round(maxSize / (1024 * 1024));\n const fileSizeMB = Math.round(file.size / (1024 * 1024));\n return `File \"${file.name}\" exceeds maximum size of ${maxSizeMB}MB (file is ${fileSizeMB}MB)`;\n }\n }\n return null;\n};\n\nexport type FieldFileDataProps = FieldDataProps & {\n accept?: string;\n multiple?: boolean;\n maxFileSize?: number;\n};\n\nexport type FileUploadFieldProps = JSFField & {\n onChange?: (value: File[]) => void;\n multiple?: boolean;\n component?: Components['file'];\n maxSize?: number;\n accept?: string;\n};\n\nexport function FileUploadField({\n name,\n description,\n label,\n multiple,\n onChange,\n component,\n accept,\n maxSize,\n ...rest\n}: FileUploadFieldProps) {\n const { components } = useFormFields();\n const { control, setError, clearErrors } = useFormContext();\n const transformHtml = useTransformer();\n\n const handleOnChange = async (\n files: File[],\n field: ControllerRenderProps<FieldValues, string>,\n ) => {\n const sizeError = validateFileSize(files, maxSize);\n if (sizeError) {\n setError(name, { message: sizeError });\n return;\n }\n\n clearErrors(name);\n field.onChange(files);\n onChange?.(files);\n };\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.file;\n if (!Component) {\n throw new Error(`File upload component not found for field ${name}`);\n }\n\n const customFileUploadFieldProps: FieldFileDataProps = {\n name,\n description,\n label,\n multiple,\n accept,\n maxFileSize: maxSize,\n transformHtml,\n ...rest,\n };\n\n return (\n <Component\n field={{\n ...field,\n value: field.value,\n onChange: async (value: File[]) => handleOnChange(value, field),\n }}\n fieldState={fieldState}\n fieldData={customFileUploadFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\nimport { TextFieldProps } from './TextField';\n\nexport type NumberFieldProps = TextFieldProps & {\n component?: Components['number'];\n onChange?: (value: number) => void;\n};\n\nexport function NumberField({\n component,\n onChange,\n ...props\n}: NumberFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const Component = component || components.number;\n\n if (!Component) {\n throw new Error(`Number component not found for field ${props.name}`);\n }\n\n const customNumberFieldProps = {\n onChange,\n transformHtml,\n ...props,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: number) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customNumberFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { FormField } from '@/src/components/ui/form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\n\ntype RadioGroupFieldProps = JSFField & {\n onChange?: (value: string) => void;\n component?: Components['radio'];\n};\n\nexport function RadioGroupField({\n name,\n defaultValue,\n description,\n label,\n options,\n onChange,\n component,\n ...rest\n}: RadioGroupFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n const Component = component || components?.radio;\n if (!Component) {\n throw new Error(`Radio group component not found for field ${name}`);\n }\n const customRadioGroupFieldProps = {\n name,\n defaultValue,\n description,\n label,\n options,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customRadioGroupFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\ntype SelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string | number; label: string }>;\n className?: string;\n onChange?: (value: string | number) => void;\n component?: Components['select'];\n};\n\nexport function SelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: SelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.select;\n\n if (!Component) {\n throw new Error(`Select component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string | number) => {\n const isNumberType = Array.isArray(rest.jsonType)\n ? rest.jsonType.includes('number')\n : rest.jsonType === 'number';\n const maybeCastValue = isNumberType ? Number(value) : value;\n field.onChange(maybeCastValue);\n onChange?.(maybeCastValue);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\n\ntype CountryFieldProps = JSFField & {\n options: Array<{ value: string; label: string }>;\n onChange?: (value: $TSFixMe) => void;\n $meta: {\n regions: Record<string, string[]>;\n subregions: Record<string, string[]>;\n };\n component?: Components['countries'];\n};\n\nexport function CountryField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n component,\n ...rest\n}: CountryFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.countries;\n if (!Component) {\n throw new Error(`Country component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\nexport type TextAreaFieldProps = JSFField & {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n maxLength?: number;\n component?: Components['textarea'];\n};\n\nexport function TextAreaField({\n name,\n description,\n label,\n onChange,\n maxLength,\n component,\n ...rest\n}: TextAreaFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.textarea;\n if (!Component) {\n throw new Error(`Text area component not found for field ${name}`);\n }\n const customTextAreaFieldProps = {\n name,\n description,\n label,\n maxLength,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (evt: React.ChangeEvent<HTMLTextAreaElement>) => {\n field.onChange(evt);\n onChange?.(evt);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextAreaFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextFieldProps } from './TextField';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype EmailFieldProps = TextFieldProps & {\n component?: Components['email'];\n};\n\nexport function EmailField({ component, onChange, ...props }: EmailFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const Component = component || components.email;\n\n if (!Component) {\n throw new Error(`Email component not found for field ${props.name}`);\n }\n\n const customEmailFieldProps = {\n onChange,\n transformHtml,\n ...props,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customEmailFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { Field } from '@/src/flows/types';\n\nexport function HiddenField(props: Field) {\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field }) => {\n return <input {...field} type='hidden' />;\n }}\n />\n );\n}\n","import { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\n\nimport {\n buildWorkScheduleSummary,\n calculateTotalWorkHours,\n DailySchedule,\n} from './workScheduleUtils';\n\ntype WorkScheduleFieldProps = JSFField & {\n name: string;\n default: DailySchedule[];\n onChange?: (value: $TSFixMe) => void;\n component?: Components['work-schedule'];\n};\n\ntype WorkScheduleFormData = {\n schedule: DailySchedule[];\n};\n\nexport function WorkScheduleField(props: WorkScheduleFieldProps) {\n const { components } = useFormFields();\n const { setValue, control, watch } = useFormContext();\n const transformHtml = useTransformer();\n const watchedSchedule = watch(props.name);\n const [currentSchedule, setCurrentSchedule] =\n useState<DailySchedule[]>(watchedSchedule);\n\n const { workHoursSummary, breakSummary } =\n buildWorkScheduleSummary(currentSchedule);\n const totalWorkHours = calculateTotalWorkHours(currentSchedule);\n\n useEffect(() => {\n setValue(props.name, currentSchedule);\n }, [currentSchedule, props.name, setValue]);\n\n function onSubmit(data: WorkScheduleFormData['schedule']) {\n setCurrentSchedule(data);\n }\n\n const Component = props.component || components['work-schedule'];\n if (!Component) {\n throw new Error(\n `Work schedule component not found for field ${props.name}`,\n );\n }\n\n const fieldData = {\n ...props,\n onSubmit,\n currentSchedule,\n transformHtml,\n defaultFormattedValue: {\n workHoursSummary,\n breakSummary,\n totalWorkHours,\n },\n };\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={fieldData}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\n\ntype MultiSelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string; label: string }>;\n className?: string;\n onChange?: (value: $TSFixMe) => void;\n component?: Components['select'];\n};\n\nexport function MultiSelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: MultiSelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.['multi-select'];\n if (!Component) {\n throw new Error(`Multi select component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import {\n NumberField,\n NumberFieldProps,\n} from '@/src/components/form/fields/NumberField';\n\n// TODO: We use the number field and the the number type is what the partner overrides\n// TODO: this needs to be changed in the future with the changes from https://github.com/remoteoss/remote-flows/pull/128\nexport const MoneyField = (props: NumberFieldProps) => {\n return <NumberField maxLength={15} {...props} />;\n};\n","import { FormField } from '@/src/components/ui/form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components } from '@/src/types/remoteFlows';\nimport {\n useFormContext,\n ControllerFieldState,\n ControllerRenderProps,\n FieldValues,\n} from 'react-hook-form';\nimport { TelFieldComponentProps, TelFieldDataProps } from '@/src/types/fields';\nimport { useMemo, useCallback, useState, useEffect, useRef } from 'react';\n\nexport type Country = {\n name: string;\n dialCode: string;\n pattern: string;\n areaCodes?: string[];\n};\n\n/**\n * Removes all spaces from input.\n */\nfunction removeSpaces(value: string) {\n return value.replace(/\\s/g, '');\n}\n\nfunction getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber: string = '',\n country?: Country,\n) {\n const baseRegex = new RegExp(\n `^(\\\\+|00)(\\\\d{${country?.dialCode?.length ?? 0}})(.*)$`,\n );\n const baseMatch = internationalPhoneNumber?.match(baseRegex);\n\n if (!baseMatch) {\n return {\n prefix: '',\n dialCode: '',\n phoneNumber: internationalPhoneNumber,\n };\n }\n\n const [, plusOrCallPrefix, dialCode, phoneNumber] = baseMatch;\n\n return {\n prefix: plusOrCallPrefix,\n dialCode,\n phoneNumber,\n };\n}\n\nfunction getCountryFromPhoneNumber(\n {\n dialCodes,\n dialCodeMaxLength,\n }: ReturnType<typeof getCountryDataByCountryCode>,\n internationalPhoneNumber: string,\n) {\n const { prefix } = getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber,\n );\n\n if (!prefix) {\n return undefined;\n }\n\n // Try longest dial codes first - critical for US/Canada\n for (let i = dialCodeMaxLength + prefix.length; i > prefix.length; i--) {\n const dialCode = internationalPhoneNumber.slice(prefix.length, i);\n\n if (dialCodes[dialCode]) {\n return dialCodes[dialCode];\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates a map of dial codes (including area codes) to country objects.\n * Handles countries like US/Canada that share +1 with different area codes.\n */\nexport function getCountryDataByCountryCode(countries: Country[]) {\n const dialCodes: Record<string, Country> = {};\n let dialCodeMaxLength = 0;\n\n countries.forEach((country) => {\n if (country.areaCodes) {\n // For countries with area codes (e.g., +1204, +1226)\n country.areaCodes.forEach((areaCode) => {\n const code = country.dialCode + areaCode;\n dialCodes[code] = country;\n if (code.length > dialCodeMaxLength) {\n dialCodeMaxLength = code.length;\n }\n });\n } else {\n // For countries with simple dial codes (e.g., +44, +351)\n dialCodes[country.dialCode] = country;\n if (country.dialCode.length > dialCodeMaxLength) {\n dialCodeMaxLength = country.dialCode.length;\n }\n }\n });\n\n return { dialCodes, dialCodeMaxLength };\n}\n\nfunction getAreaCodesFromPattern(pattern: string = '') {\n const codeGroupPattern = /\\(([^)]+)\\)/g;\n const groups = pattern.match(codeGroupPattern);\n\n if (groups?.length === 2) {\n return groups[1].replace(/\\(|\\)/g, '').split('|');\n }\n\n return undefined;\n}\n\nfunction transformSchemaToCountries(\n options: Array<{\n value: string;\n label: string;\n meta: { countryCode: string };\n pattern: string;\n }>,\n): Country[] {\n return options.map((option) => ({\n name: option.label,\n dialCode: option.meta.countryCode,\n pattern: option.pattern,\n areaCodes: getAreaCodesFromPattern(option.pattern),\n }));\n}\n\nexport function TelFieldRenderer({\n field,\n fieldState,\n fieldData,\n component: Component,\n onChangeCountryCode,\n onChangePhoneNumber,\n}: {\n field: ControllerRenderProps<FieldValues, string>;\n fieldState: ControllerFieldState;\n fieldData: TelFieldDataProps;\n component: React.ComponentType<TelFieldComponentProps>;\n onChangeCountryCode?: (newCountry: Country) => void;\n onChangePhoneNumber?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n const { value: internationalPhoneNumber } = field;\n const { options } = fieldData;\n\n const countries = useMemo(\n () => transformSchemaToCountries(options),\n [options],\n );\n\n const countriesByCountryCode = useMemo(\n () => getCountryDataByCountryCode(countries),\n [countries],\n );\n\n // Track if the country change was due to manual selection\n const isManualSelectionRef = useRef(false);\n\n // Use state to track country, so manual selection is preserved\n const [country, setCountry] = useState<Country | undefined>(() =>\n getCountryFromPhoneNumber(\n getCountryDataByCountryCode(countries),\n internationalPhoneNumber || '',\n ),\n );\n\n // Re-detect country when phone number changes externally (e.g., form reset or area code typed)\n useEffect(() => {\n // Reset manual selection flag if field is cleared\n if (!internationalPhoneNumber || internationalPhoneNumber === '+') {\n isManualSelectionRef.current = false;\n }\n\n if (isManualSelectionRef.current) {\n return;\n }\n\n const detected = getCountryFromPhoneNumber(\n countriesByCountryCode,\n internationalPhoneNumber || '',\n );\n setCountry(detected);\n }, [internationalPhoneNumber, countriesByCountryCode]);\n\n const { prefix, phoneNumber: nationalPhoneNumber } = useMemo(\n () =>\n getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber,\n country,\n ),\n [internationalPhoneNumber, country],\n );\n\n const handleCountryCodeChange = useCallback(\n (newCountry: Country) => {\n if (!newCountry) return;\n const newValue = `+${newCountry.dialCode}${nationalPhoneNumber}`;\n\n // Mark as manual selection to prevent useEffect from overriding\n isManualSelectionRef.current = true;\n\n // Update country state to preserve manual selection\n setCountry(newCountry);\n\n // Update React Hook Form state\n field.onChange(newValue);\n\n // Call optional external onChange\n if (onChangeCountryCode) {\n onChangeCountryCode(newCountry);\n }\n },\n [nationalPhoneNumber, field, onChangeCountryCode],\n );\n\n const handlePhoneNumberChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const valueWithoutSpaces = removeSpaces(event.target.value);\n let newValue: string;\n if (country) {\n newValue = `${prefix}${country.dialCode}${valueWithoutSpaces}`;\n } else {\n newValue = `${prefix}${valueWithoutSpaces}`;\n }\n // Update React Hook Form state\n field.onChange(newValue);\n\n // Call optional external onChange\n if (onChangePhoneNumber) {\n const syntheticEvent = {\n target: { value: newValue, name: field.name },\n } as React.ChangeEvent<HTMLInputElement>;\n onChangePhoneNumber(syntheticEvent);\n }\n },\n [country, prefix, field, onChangePhoneNumber],\n );\n\n const fieldDataWithComputedValues = useMemo(\n () => ({\n ...fieldData,\n onChangeCountryCode: handleCountryCodeChange,\n onChangePhoneNumber: handlePhoneNumberChange,\n currentCountry: country,\n nationalPhoneNumber,\n }),\n [\n fieldData,\n handleCountryCodeChange,\n handlePhoneNumberChange,\n country,\n nationalPhoneNumber,\n ],\n );\n\n return (\n <Component\n field={field}\n fieldState={fieldState}\n fieldData={fieldDataWithComputedValues}\n />\n );\n}\n\nexport type TelFieldProps = TelFieldDataProps & {\n name: string;\n component?: Components['tel'];\n};\n\nexport function TelField({\n name,\n description,\n label,\n onChangeCountryCode,\n onChangePhoneNumber,\n component,\n ...rest\n}: TelFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.tel;\n if (!Component) {\n throw new Error(`Tel component not found for field ${name}`);\n }\n\n const customTelFieldProps: TelFieldDataProps = {\n name,\n description,\n label,\n transformHtml,\n ...rest,\n };\n\n return (\n <TelFieldRenderer\n field={field}\n fieldState={fieldState}\n fieldData={customTelFieldProps}\n component={Component}\n onChangeCountryCode={onChangeCountryCode}\n onChangePhoneNumber={onChangePhoneNumber}\n />\n );\n }}\n />\n );\n}\n","import { CheckBoxField } from './CheckBoxField';\nimport { DatePickerField } from './DatePickerField';\nimport { FileUploadField } from './FileUploadField';\nimport { NumberField } from './NumberField';\nimport { RadioGroupField } from './RadioGroupField';\nimport { SelectField } from './SelectField';\nimport { CountryField } from './CountryField';\nimport { TextAreaField } from './TextAreaField';\nimport { TextField } from './TextField';\nimport { EmailField } from './EmailField';\nimport { HiddenField } from './HiddenField';\nimport { WorkScheduleField } from './WorkScheduleField';\nimport { MultiSelectField } from './MultiSelectField';\nimport { MoneyField } from './MoneyField';\nimport { TelField } from './TelField';\nimport { SupportedTypes } from './types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\nexport const baseFields: Record<\n Exclude<SupportedTypes, 'fieldset' | 'fieldset-flat'>,\n React.ComponentType<$TSFixMe>\n> = {\n checkbox: CheckBoxField,\n text: TextField,\n email: EmailField,\n money: MoneyField,\n select: SelectField,\n 'multi-select': MultiSelectField,\n radio: RadioGroupField,\n number: NumberField,\n file: FileUploadField,\n date: DatePickerField,\n textarea: TextAreaField,\n countries: CountryField,\n hidden: HiddenField,\n tel: TelField,\n 'work-schedule': WorkScheduleField,\n};\n","import { useFormContext } from 'react-hook-form';\nimport { sanitizeHtml } from '@/src/lib/utils';\nimport { useEffect } from 'react';\nimport { HelpCenterDataProps } from '@/src/types/fields';\nimport { BaseFormDescription as Description } from '@/src/components/ui/form';\nimport { HelpCenter } from '@/src/components/shared/zendesk-drawer/HelpCenter';\n\nexport type ForcedValueFieldProps = {\n name: string;\n value: string;\n description: string;\n statement?: {\n title?: string;\n description?: string;\n };\n label: string;\n helpCenter?: HelpCenterDataProps;\n};\n\nexport function ForcedValueField({\n name,\n value,\n description,\n statement,\n label,\n helpCenter,\n}: ForcedValueFieldProps) {\n const { setValue } = useFormContext();\n const forcedValueDescription = statement?.description || description;\n\n const forcedValueTitle = statement?.title\n ? sanitizeHtml(statement?.title)\n : sanitizeHtml(label);\n\n const titleId = `forced-value-${name}-title`;\n const descriptionId = `forced-value-${name}-description`;\n\n useEffect(() => {\n setValue(name, value);\n }, [name, value, setValue]);\n\n const isHiddenValue = !forcedValueDescription && !statement?.title;\n\n if (isHiddenValue) {\n return null;\n }\n\n return (\n <div\n role='group'\n aria-labelledby={forcedValueTitle ? titleId : undefined}\n aria-describedby={forcedValueDescription ? descriptionId : undefined}\n >\n {forcedValueTitle && (\n <p\n id={titleId}\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{\n __html: forcedValueTitle,\n }}\n />\n )}\n <Description\n as='span'\n id={descriptionId}\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n helpCenter={\n <HelpCenter\n className='RemoteFlows__ForcedValue__HelpCenterLink'\n helpCenter={helpCenter}\n />\n }\n >\n {forcedValueDescription}\n </Description>\n </div>\n );\n}\n"],"mappings":"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","names":["Fragment","useEffect","useRef","omit","jsx","DatePickerField","description","label","name","minDate","maxDate","onChange","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","minDateValue","getMinStartDate","maxDateValue","FormField","field","fieldState","Component","customDatePickerFieldProps","__name","value","jsx","validateFileSize","__name","files","maxSize","file","maxSizeMB","fileSizeMB","FileUploadField","name","description","label","multiple","onChange","component","accept","rest","components","useFormFields","control","setError","clearErrors","useFormContext","transformHtml","useTransformer","handleOnChange","field","sizeError","FormField","fieldState","Component","customFileUploadFieldProps","value","jsx","NumberField","component","onChange","props","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customNumberFieldProps","__name","value","jsx","RadioGroupField","name","defaultValue","description","label","options","onChange","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customRadioGroupFieldProps","__name","value","jsx","SelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","maybeCastValue","jsx","CountryField","label","name","options","defaultValue","description","onChange","$meta","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","jsx","TextAreaField","name","description","label","onChange","maxLength","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customTextAreaFieldProps","__name","evt","jsx","EmailField","component","onChange","props","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customEmailFieldProps","__name","value","jsx","HiddenField","props","control","useFormContext","FormField","field","__name","useEffect","useState","jsx","WorkScheduleField","props","components","useFormFields","setValue","control","watch","useFormContext","transformHtml","useTransformer","watchedSchedule","currentSchedule","setCurrentSchedule","useState","workHoursSummary","breakSummary","buildWorkScheduleSummary","totalWorkHours","calculateTotalWorkHours","useEffect","onSubmit","data","__name","Component","fieldData","FormField","field","fieldState","value","jsx","MultiSelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","jsx","MoneyField","__name","props","NumberField","useMemo","useCallback","useState","useEffect","useRef","jsx","removeSpaces","value","__name","getStructuredNumberFromInternationalNumber","internationalPhoneNumber","country","baseRegex","baseMatch","plusOrCallPrefix","dialCode","phoneNumber","getCountryFromPhoneNumber","dialCodes","dialCodeMaxLength","prefix","i","getCountryDataByCountryCode","countries","areaCode","code","getAreaCodesFromPattern","pattern","codeGroupPattern","groups","transformSchemaToCountries","options","option","TelFieldRenderer","field","fieldState","fieldData","Component","onChangeCountryCode","onChangePhoneNumber","useMemo","countriesByCountryCode","isManualSelectionRef","useRef","setCountry","useState","useEffect","detected","nationalPhoneNumber","handleCountryCodeChange","useCallback","newCountry","newValue","handlePhoneNumberChange","event","valueWithoutSpaces","syntheticEvent","fieldDataWithComputedValues","TelField","name","description","label","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","customTelFieldProps","baseFields","CheckBoxField","TextField","EmailField","MoneyField","SelectField","MultiSelectField","RadioGroupField","NumberField","FileUploadField","DatePickerField","TextAreaField","CountryField","HiddenField","TelField","WorkScheduleField","useEffect","jsx","jsxs","ForcedValueField","name","value","description","statement","label","helpCenter","setValue","useFormContext","forcedValueDescription","forcedValueTitle","sanitizeHtml","titleId","descriptionId","useEffect","BaseFormDescription","HelpCenter","__name","Fragment","jsx","jsxs","FieldSetField","label","name","fields","description","components","statement","isFlatFieldset","extra","variant","features","meta","helpCenter","watch","setValue","trigger","formState","useFormContext","formComponents","useFormFields","stateField","isExpanded","fieldNames","fieldName","watchedValues","prevValuesRef","useRef","triggerTimeoutRef","toggleExpanded","__name","useEffect","currentValues","previousValues","hasBeenSubmitted","hasChanged","i","ToggleComponent","FieldsetToggleButtonDefault","contentId","headerId","cn","ZendeskTriggerButton","BaseFormDescription","field","fieldType","fieldKey","isForcedValue","checkFieldHasForcedValue","wrapWithCustomWrapper","content","key","fieldProps","omit","ForcedValueField","FieldComponent","baseFields","Component","value","Statement"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a}from"./chunk-DILDN6DN.js";import{b as i}from"./chunk-PGWKJ6FK.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as d}from"react/jsx-runtime";function y({onSubmit:s,onSuccess:c,onError:t}){let{onboardingBag:o}=i(),u=e(async n=>{try{await s?.({countryCode:n.country});let r=await o.onSubmit(n);if(r?.data){await c?.(r?.data),o?.next();return}r?.error&&t?.({error:r.error,rawError:r.rawError,fieldErrors:[]})}catch(r){t?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit"),l=o.stepState.values?.select_country||o.initialValues.select_country;return d(a,{defaultValues:l,onSubmit:u})}e(y,"SelectCountryStep");export{y as a};
|
|
2
|
+
//# sourceMappingURL=chunk-XJHIF5ZE.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as e}from"./chunk-DZJDM6PM.js";import{b as a}from"./chunk-MRYRNB7Y.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as s}from"react/jsx-runtime";function d({onSubmit:m}){let{terminationBag:o}=a(),r=i(async t=>{let n=await o?.parseFormValues(t);await m?.(n),o?.next()},"handleSubmit");return s(e,{defaultValues:o.fieldValues,onSubmit:r})}i(d,"PaidTimeOffForm");export{d as a};
|
|
2
|
+
//# sourceMappingURL=chunk-YGK26YJ2.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{e as A,f as d,g as y}from"./chunk-D6MFIXSJ.js";import{a as x}from"./chunk-WVJDCDGZ.js";import{a as R}from"./chunk-F2ENM2JE.js";import{a as p}from"./chunk-QHZPSH52.js";import{A as _,D as O,F as w,I as S,K as q,P as v,U as V,ba as P,ca as j,g as f,i as g,j as h,n as b,o as E,w as C,x as F}from"./chunk-ER46UFIU.js";import{e as i}from"./chunk-H2O4CVKF.js";import{a as t}from"./chunk-P37U34EQ.js";import{useMutation as l,useQuery as c}from"@tanstack/react-query";var Y=t(e=>{let{client:r}=i();return c({queryKey:["company",e],retry:!1,enabled:!!e,queryFn:t(async()=>{let n=await F({client:r,headers:{Authorization:""},path:{company_id:e}});if(n.error||!n.data)throw new Error("Failed to fetch employment data");return n},"queryFn"),select:t(({data:n})=>n.data.company,"select")})},"useCompany"),Z=t(e=>{let{client:r}=i();return c({queryKey:["benefit-offers",e],retry:!1,enabled:!!e,queryFn:t(async()=>b({client:r,path:{employment_id:e}}).then(n=>{if(n.error||!n.data)throw new Error("Failed to fetch benefit offers data");return n}),"queryFn"),select:t(({data:n})=>n?.data?.reduce((s,o)=>({...s,[o.benefit_group.slug]:{value:o.benefit_tier?.slug??"no",...o.benefit_group?.filter?.slug?{filter:o.benefit_group?.filter?.slug}:{}}}),{}),"select")})},"useBenefitOffers"),$=t((e,r)=>{let{client:n}=i();return c({queryKey:["employment-engagement-agreement-details",e],retry:!1,enabled:r?.enabled??!!e,queryFn:t(async()=>P({client:n,headers:{Authorization:""},path:{employment_id:e}}).then(s=>{if(s.error||!s.data)throw new Error("Failed to fetch engagement agreement details");return s}),"queryFn"),select:t(({data:s})=>s?.data?.details,"select")})},"useEmploymentEngagementAgreementDetails"),ee=t(()=>{let{client:e}=i();return l({mutationFn:t(r=>V({client:e,headers:{Authorization:""},path:r}),"mutationFn")})},"useEmploymentInvite"),te=t(()=>{let{client:e}=i();return l({mutationFn:t(r=>C({client:e,body:r}),"mutationFn")})},"useCreateReserveInvoice"),ne=t(({countryCode:e,form:r,fieldValues:n,options:s,query:o={},jsonSchemaVersion:a})=>{let{client:m}=i(),D=a?{json_schema_version:a}:{};return c({queryKey:["onboarding-json-schema-form",e,r,a],retry:!1,queryFn:t(async()=>{let u=await _({client:m,headers:{Authorization:""},path:{country_code:e,form:r},query:{skip_benefits:!0,...o,...D}});if(u.error||!u.data)throw new Error("Failed to fetch onboarding schema");return u},"queryFn"),enabled:s?.queryOptions?.enabled,select:t(({data:u})=>{let I=u?.data||{};return p(I,n,s)},"select")})},"useJSONSchemaForm"),re=t((e,r,n)=>{let{client:s}=i(),o={json_schema_version:y(n)};return c({queryKey:["benefit-offers-schema",e],retry:!1,enabled:!!e,queryFn:t(async()=>{let a=await w({client:s,path:{employment_id:e},query:o});if(a.error||!a.data)throw new Error("Failed to fetch benefit offers schema");return a},"queryFn"),select:t(({data:a})=>{let m=a?.data?.schema||{};return p(m,r,{jsfModify:n?.jsfModify?.benefits})},"select")})},"useBenefitOffersSchema"),oe=t(e=>{let{client:r}=i(),n={json_schema_version:d(e)};return l({mutationFn:t(s=>g({client:r,headers:{Authorization:""},body:s,query:{...n}}),"mutationFn")})},"useCreateEmployment"),se=t((e,r)=>{let{client:n}=i(),s={employment_basic_information_json_schema_version:d(r),contract_details_json_schema_version:A(r,e)||1};return l({mutationFn:t(({employmentId:o,...a})=>S({client:n,headers:{Authorization:""},body:a,path:{employment_id:o},query:{skip_benefits:!0,...s}}),"mutationFn")})},"useUpdateEmployment"),ae=t(()=>{let{client:e}=i();return l({mutationFn:t(({employmentId:r,...n})=>j({client:e,headers:{Authorization:""},body:n,path:{employment_id:r}}),"mutationFn")})},"useUpdateEmploymentEngagementAgreementDetails"),ie=t(e=>{let{client:r}=i();return l({mutationFn:t(({employmentId:n,...s})=>{let o={json_schema_version:y(e)};return E({client:r,body:s,path:{employment_id:n},query:o})},"mutationFn")})},"useUpdateBenefitsOffers"),me=t(e=>{let{client:r}=i(),{data:n,isLoading:s}=c({...R(r,"onboarding-countries"),select:t(a=>a.data?.data?.filter(m=>m.eor_onboarding).map(m=>({label:m.name,value:m.code}))||[],"select"),enabled:e?.queryOptions?.enabled}),o=p(x.data.schema,{},e);if(n){let a=o.fields.find(m=>m.name==="country");a&&(a.options=n)}return{isLoading:s,selectCountryForm:o}},"useCountriesSchemaField"),le=t(({type:e="spread"})=>{let{client:r}=i();return l({mutationFn:t(n=>(e==="no_spread"?f:v)({client:r,body:n}),"mutationFn")})},"useConvertCurrency"),ce=t(()=>{let{client:e}=i();return l({mutationFn:t(({employmentId:r,...n})=>q({client:e,path:{employment_id:r},body:n}),"mutationFn")})},"useUpsertContractEligibility"),ue=t((e,r,n=!0)=>{let{client:s}=i();return c({queryKey:["employment-onboarding-reserves-status",e,r],retry:!1,enabled:n&&!!e&&!!r,queryFn:t(async()=>{let o=await h({client:s,headers:{Authorization:""},path:{company_id:e,employment_id:r}});if(o.error||!o.data)throw new Error("Failed to fetch employment onboarding reserves status");return o},"queryFn"),select:t(({data:o})=>o?.data?.status,"select")})},"useEmploymentOnboardingReservesStatus"),pe=t((e,r,n)=>{let{client:s}=i();return c({queryKey:["engagement-agreement-details",e],retry:!1,enabled:n?.queryOptions?.enabled??!!e,queryFn:t(async()=>{let o=await O({client:s,path:{country_code:e}});if(o.error||!o.data)throw new Error("Failed to fetch engagement agreement details");return o},"queryFn"),select:t(({data:o})=>{let a=o?.data?.schema||{};return p(a,r,{jsfModify:n?.jsfModify?.engagement_agreement_details})},"select")})},"useEngagementAgreementDetailsSchema");export{Y as a,Z as b,$ as c,ee as d,te as e,ne as f,re as g,oe as h,se as i,ae as j,ie as k,me as l,le as m,ce as n,ue as o,pe as p};
|
|
2
|
+
//# sourceMappingURL=chunk-YHQYBVLS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/flows/Onboarding/api.ts"],"sourcesContent":["import { useMutation, useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { FieldValues } from 'react-hook-form';\nimport { Client } from '@/src/client/client';\nimport {\n ConvertCurrencyParams,\n CreateContractEligibilityParams,\n EmploymentCreateParams,\n EmploymentEngagementAgreementDetailsParams,\n EmploymentFullParams,\n getV1CompaniesCompanyId,\n getV1CompaniesCompanyIdEmploymentsEmploymentIdOnboardingReservesStatus,\n getV1CountriesCountryCodeEngagementAgreementDetails,\n getV1CountriesCountryCodeForm,\n getV1EmploymentsEmploymentIdBenefitOffers,\n getV1EmploymentsEmploymentIdBenefitOffersSchema,\n getV1EmploymentsEmploymentIdEngagementAgreementDetails,\n patchV1EmploymentsEmploymentId2,\n postV1CurrencyConverterEffective,\n postV1CurrencyConverterRaw,\n postV1Employments,\n postV1EmploymentsEmploymentIdContractEligibility,\n postV1EmploymentsEmploymentIdEngagementAgreementDetails,\n postV1EmploymentsEmploymentIdInvite,\n PostV1EmploymentsEmploymentIdInviteData,\n postV1RiskReserve,\n putV1EmploymentsEmploymentIdBenefitOffers,\n UnifiedEmploymentUpsertBenefitOffersRequest,\n} from '@/src/client';\n\nimport { useClient } from '@/src/context';\nimport { selectCountryStepSchema } from '@/src/flows/Onboarding/json-schemas/selectCountryStep';\nimport {\n OnboardingFlowProps,\n OnboardingJsfModify,\n} from '@/src/flows/Onboarding/types';\nimport {\n JSONSchemaFormResultWithFieldsets,\n JSONSchemaFormType,\n FlowOptions,\n} from '@/src/flows/types';\nimport {\n getContractDetailsSchemaVersion,\n getBasicInformationSchemaVersion,\n getBenefitOffersSchemaVersion,\n} from '@/src/flows/Onboarding/utils';\nimport { createHeadlessForm } from '@/src/common/createHeadlessForm';\nimport { countriesOptions } from '@/src/common/api/countries';\n\nexport const useCompany = (companyId: string) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['company', companyId],\n retry: false,\n enabled: !!companyId,\n queryFn: async () => {\n const response = await getV1CompaniesCompanyId({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n company_id: companyId,\n },\n });\n\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n select: ({ data }) => {\n return data.data.company;\n },\n });\n};\n\nexport const useBenefitOffers = (employmentId: string | undefined) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n return getV1EmploymentsEmploymentIdBenefitOffers({\n client: client as Client,\n path: {\n employment_id: employmentId as string,\n },\n }).then((response) => {\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers data');\n }\n\n return response;\n });\n },\n select: ({ data }) =>\n data?.data?.reduce(\n (acc, item) => {\n return {\n ...acc,\n [item.benefit_group.slug]: {\n value: item.benefit_tier?.slug ?? 'no',\n ...(item.benefit_group?.filter?.slug\n ? { filter: item.benefit_group?.filter?.slug }\n : {}),\n },\n };\n },\n {} as Record<string, { value: string }>,\n ),\n });\n};\n\nexport const useEmploymentEngagementAgreementDetails = (\n employmentId: string | undefined,\n queryOptions?: { enabled?: boolean },\n) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['employment-engagement-agreement-details', employmentId],\n retry: false,\n enabled: queryOptions?.enabled ?? !!employmentId,\n queryFn: async () => {\n return getV1EmploymentsEmploymentIdEngagementAgreementDetails({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n }).then((response) => {\n if (response.error || !response.data) {\n throw new Error('Failed to fetch engagement agreement details');\n }\n return response;\n });\n },\n select: ({ data }) => data?.data?.details,\n });\n};\n\n/**\n * Use this hook to invite an employee to the onboarding flow\n * @returns\n */\nexport const useEmploymentInvite = () => {\n const { client } = useClient();\n\n return useMutation({\n mutationFn: (payload: PostV1EmploymentsEmploymentIdInviteData['path']) => {\n return postV1EmploymentsEmploymentIdInvite({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: payload,\n });\n },\n });\n};\n\nexport const useCreateReserveInvoice = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: { employment_slug: string }) => {\n return postV1RiskReserve({\n client: client as Client,\n body: payload,\n });\n },\n });\n};\n\n/**\n * Use this hook to get the JSON schema form for the onboarding flow\n * @param param0\n * @returns\n */\nexport const useJSONSchemaForm = ({\n countryCode,\n form,\n fieldValues,\n options,\n query = {},\n jsonSchemaVersion,\n}: {\n countryCode: string;\n form: JSONSchemaFormType;\n fieldValues: FieldValues;\n options?: FlowOptions & { queryOptions?: { enabled?: boolean } };\n query?: Record<string, unknown>;\n jsonSchemaVersion?: number | 'latest';\n}): UseQueryResult<JSONSchemaFormResultWithFieldsets> => {\n const { client } = useClient();\n const jsonSchemaQueryParam = jsonSchemaVersion\n ? {\n json_schema_version: jsonSchemaVersion,\n }\n : {};\n return useQuery({\n queryKey: [\n 'onboarding-json-schema-form',\n countryCode,\n form,\n jsonSchemaVersion,\n ],\n retry: false,\n queryFn: async () => {\n const response = await getV1CountriesCountryCodeForm({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n country_code: countryCode,\n form: form,\n },\n query: {\n skip_benefits: true,\n ...query,\n ...jsonSchemaQueryParam,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch onboarding schema');\n }\n\n return response;\n },\n enabled: options?.queryOptions?.enabled,\n select: ({ data }) => {\n const jsfSchema = data?.data || {};\n return createHeadlessForm(jsfSchema, fieldValues, options);\n },\n });\n};\n\nexport const useBenefitOffersSchema = (\n employmentId: string,\n fieldValues: FieldValues,\n options: OnboardingFlowProps['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = {\n json_schema_version: getBenefitOffersSchemaVersion(options),\n };\n\n return useQuery({\n queryKey: ['benefit-offers-schema', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n const response = await getV1EmploymentsEmploymentIdBenefitOffersSchema({\n client: client as Client,\n path: {\n employment_id: employmentId,\n },\n query: jsonSchemaQueryParam,\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers schema');\n }\n\n return response;\n },\n select: ({ data }) => {\n const jsfSchema = data?.data?.schema || {};\n\n return createHeadlessForm(jsfSchema, fieldValues, {\n jsfModify: options?.jsfModify?.benefits,\n });\n },\n });\n};\n\n/**\n * Use this hook to create an employment\n * @returns\n */\nexport const useCreateEmployment = (\n options?: OnboardingFlowProps['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = {\n json_schema_version: getBasicInformationSchemaVersion(options),\n };\n return useMutation({\n mutationFn: (payload: EmploymentCreateParams) => {\n return postV1Employments({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useUpdateEmployment = (\n countryCode: string,\n options?: OnboardingFlowProps['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParams = {\n employment_basic_information_json_schema_version:\n getBasicInformationSchemaVersion(options),\n contract_details_json_schema_version:\n getContractDetailsSchemaVersion(options, countryCode) || 1,\n };\n\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: EmploymentFullParams & { employmentId: string }) => {\n return patchV1EmploymentsEmploymentId2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n skip_benefits: true,\n ...jsonSchemaQueryParams,\n },\n });\n },\n });\n};\n\nexport const useUpdateEmploymentEngagementAgreementDetails = () => {\n const { client } = useClient();\n\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: EmploymentEngagementAgreementDetailsParams & {\n employmentId: string;\n }) => {\n return postV1EmploymentsEmploymentIdEngagementAgreementDetails({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n });\n },\n });\n};\n\nexport const useUpdateBenefitsOffers = (\n options?: OnboardingFlowProps['options'],\n) => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: UnifiedEmploymentUpsertBenefitOffersRequest & {\n employmentId: string;\n }) => {\n const jsonSchemaQueryParam = {\n json_schema_version: getBenefitOffersSchemaVersion(options),\n };\n\n return putV1EmploymentsEmploymentIdBenefitOffers({\n client: client as Client,\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: jsonSchemaQueryParam,\n });\n },\n });\n};\n\nexport const useCountriesSchemaField = (\n options?: Omit<FlowOptions, 'jsonSchemaVersion'> & {\n queryOptions?: { enabled?: boolean };\n },\n) => {\n const { client } = useClient();\n const { data: countries, isLoading } = useQuery({\n ...countriesOptions(client as Client, 'onboarding-countries'),\n select: (response) => {\n return (\n response.data?.data\n ?.filter((country) => country.eor_onboarding)\n .map((country) => {\n return {\n label: country.name,\n value: country.code,\n };\n }) || []\n );\n },\n enabled: options?.queryOptions?.enabled,\n });\n\n const selectCountryForm = createHeadlessForm(\n selectCountryStepSchema.data.schema,\n {},\n options,\n );\n\n if (countries) {\n const countryField = selectCountryForm.fields.find(\n (field) => field.name === 'country',\n );\n if (countryField) {\n countryField.options = countries;\n }\n }\n\n return {\n isLoading,\n selectCountryForm,\n };\n};\n\nexport const useConvertCurrency = ({\n type = 'spread',\n}: {\n type?: 'spread' | 'no_spread';\n}) => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: ConvertCurrencyParams) => {\n const apiFn =\n type === 'no_spread'\n ? postV1CurrencyConverterRaw\n : postV1CurrencyConverterEffective;\n return apiFn({\n client: client as Client,\n body: payload,\n });\n },\n });\n};\n\nexport const useUpsertContractEligibility = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: { employmentId: string } & CreateContractEligibilityParams) => {\n return postV1EmploymentsEmploymentIdContractEligibility({\n client: client as Client,\n path: {\n employment_id: employmentId,\n },\n body: payload,\n });\n },\n });\n};\n\n/**\n * Hook to fetch onboarding reserves status for an employment\n * @param companyId - Company ID\n * @param employmentId - Employment ID\n * @param enabled - Whether the query should be enabled\n * @returns Query result with onboarding reserves status\n */\nexport const useEmploymentOnboardingReservesStatus = (\n companyId: string | undefined,\n employmentId: string | undefined,\n enabled = true,\n) => {\n const { client } = useClient();\n return useQuery({\n queryKey: [\n 'employment-onboarding-reserves-status',\n companyId,\n employmentId,\n ],\n retry: false,\n enabled: enabled && !!companyId && !!employmentId,\n queryFn: async () => {\n const response =\n await getV1CompaniesCompanyIdEmploymentsEmploymentIdOnboardingReservesStatus(\n {\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n company_id: companyId as string,\n employment_id: employmentId as string,\n },\n },\n );\n\n if (response.error || !response.data) {\n throw new Error(\n 'Failed to fetch employment onboarding reserves status',\n );\n }\n\n return response;\n },\n select: ({ data }) => data?.data?.status,\n });\n};\n\nexport const useEngagementAgreementDetailsSchema = (\n countryCode: string,\n fieldValues: FieldValues,\n options?: {\n jsfModify?: OnboardingJsfModify;\n queryOptions?: { enabled?: boolean };\n },\n) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['engagement-agreement-details', countryCode],\n retry: false,\n enabled: options?.queryOptions?.enabled ?? !!countryCode,\n queryFn: async () => {\n const response =\n await getV1CountriesCountryCodeEngagementAgreementDetails({\n client: client as Client,\n path: {\n country_code: countryCode,\n },\n });\n\n if (response.error || !response.data) {\n throw new Error('Failed to fetch engagement agreement details');\n }\n\n return response;\n },\n select: ({ data }) => {\n const jsfSchema = data?.data?.schema || {};\n\n return createHeadlessForm(jsfSchema, fieldValues, {\n jsfModify: options?.jsfModify?.engagement_agreement_details,\n });\n },\n });\n};\n"],"mappings":"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","names":["useMutation","useQuery","useCompany","__name","companyId","client","useClient","useQuery","response","getV1CompaniesCompanyId","data","useBenefitOffers","employmentId","getV1EmploymentsEmploymentIdBenefitOffers","acc","item","useEmploymentEngagementAgreementDetails","queryOptions","getV1EmploymentsEmploymentIdEngagementAgreementDetails","useEmploymentInvite","useMutation","payload","postV1EmploymentsEmploymentIdInvite","useCreateReserveInvoice","postV1RiskReserve","useJSONSchemaForm","countryCode","form","fieldValues","options","query","jsonSchemaVersion","jsonSchemaQueryParam","getV1CountriesCountryCodeForm","jsfSchema","createHeadlessForm","useBenefitOffersSchema","getBenefitOffersSchemaVersion","getV1EmploymentsEmploymentIdBenefitOffersSchema","useCreateEmployment","getBasicInformationSchemaVersion","postV1Employments","useUpdateEmployment","jsonSchemaQueryParams","getContractDetailsSchemaVersion","patchV1EmploymentsEmploymentId2","useUpdateEmploymentEngagementAgreementDetails","postV1EmploymentsEmploymentIdEngagementAgreementDetails","useUpdateBenefitsOffers","putV1EmploymentsEmploymentIdBenefitOffers","useCountriesSchemaField","countries","isLoading","countriesOptions","country","selectCountryForm","selectCountryStepSchema","countryField","field","useConvertCurrency","type","postV1CurrencyConverterRaw","postV1CurrencyConverterEffective","useUpsertContractEligibility","postV1EmploymentsEmploymentIdContractEligibility","useEmploymentOnboardingReservesStatus","enabled","getV1CompaniesCompanyIdEmploymentsEmploymentIdOnboardingReservesStatus","useEngagementAgreementDetailsSchema","getV1CountriesCountryCodeEngagementAgreementDetails"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as d}from"./chunk-U5QVIJOS.js";import{b as c}from"./chunk-Q3ALCPJN.js";import{a as l}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as d}from"./chunk-U5QVIJOS.js";import{b as c}from"./chunk-Q3ALCPJN.js";import{a as l}from"./chunk-OBF27DKO.js";import{h as m}from"./chunk-5BU3CD2P.js";import{c as s}from"./chunk-JXAAON7I.js";import{a}from"./chunk-P37U34EQ.js";import{useEffect as f}from"react";import{jsx as F}from"react/jsx-runtime";import{createElement as V}from"react";function B({defaultValues:p,onSubmit:u,components:S}){let{formId:y,contractorOnboardingBag:o,formRef:t}=c(),r=d({handleValidation:o.handleValidation,defaultValues:p,checkFieldUpdates:o.checkFieldUpdates});f(()=>{t?.setValue&&(t.setValue.current=r.setValue)},[r.setValue,t]),f(()=>{o.employmentId&&o?.checkFieldUpdates(r.getValues())},[]);let g=a(async(n,b)=>{let i=b?.nativeEvent;if(i?.isDraftSubmission){let{onSuccess:P,onError:E}=i.draftCallbacks;try{await o.onSubmit(n),P?.()}catch(e){let C=o.stepState.currentStep.name,h=o.meta?.fields?.[C],O=s(e?.fieldErrors||[],h);E?.({error:e?.error||e,rawError:e?.rawError||e,fieldErrors:O})}}else await u(n,r)},"handleSubmit");return V(m,{...r,key:`form-${o.stepState.currentStep.name}`},F("form",{id:y,onSubmit:r.handleSubmit(g),className:"space-y-4 RemoteFlows__OnboardingForm",children:F(l,{components:S,fields:o.fields,fieldsets:o.meta.fieldsets,fieldValues:o.fieldValues})}))}a(B,"ContractorOnboardingForm");export{B as a};
|
|
2
|
+
//# sourceMappingURL=chunk-YLAJZTKB.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as he,b as ve,c as Pe}from"./chunk-QSAZUS52.js";import{a as Xt,b as ie,c as oe,d as re,e as ae,f as se,g as ce,i as le,j as ue,k as de,l as pe,m as me,n as fe,o as ye,p as _e,q as ge,r as be,s as Se,t as Ce,u as we}from"./chunk-TP3B2OEW.js";import{a as Yt,b as Zt,f as te,g as ee,h as ne}from"./chunk-OJMB3357.js";import{a as z,b as ot,c as _,d as zt,g as Wt}from"./chunk-PX5PE6GX.js";import{a as Ht}from"./chunk-Q65JWWKR.js";import{f as Ut,h as Kt,i as Gt}from"./chunk-YHQYBVLS.js";import{M as Jt}from"./chunk-ER46UFIU.js";import{a as Bt,b as w,d as Nt,h as y,i as k,u as O,v as h}from"./chunk-JXAAON7I.js";import{a as $t}from"./chunk-JDIKYCN6.js";import{e as Qt}from"./chunk-H2O4CVKF.js";import{a as u}from"./chunk-P37U34EQ.js";import{useEffect as q,useMemo as a,useRef as Fe,useState as A}from"react";import Me from"lodash.omit";import{useQuery as vn}from"@tanstack/react-query";var Pn=u(()=>{let{client:L}=Qt(),{data:T}=ie(),l=oe(T)?T?.company?.id??"":"";return vn({queryKey:["legal-entities",l],queryFn:u(()=>Jt({client:L,path:{company_id:l},query:{page_size:100}}),"queryFn"),select:u(W=>W.data?.data?.legal_entities,"select"),enabled:!!l})},"useLegalEntities"),Ee=u(()=>{let{data:L}=Pn();return L?.find(T=>T.is_default)},"useDefaultLegalEntity");var En={select_country:null,basic_information:"employment_basic_information",contract_details:null,eligibility_questionnaire:null,pricing_plan:null,contract_preview:null,review:null},Fn={employment_basic_information:"basic_information"},ei=u(({countryCode:L,externalId:T,employmentId:l,skipSteps:W,options:m,initialValues:d})=>{let Ve=m?.excludeProducts||[],yt=Fe(m?.onContractReviewed);q(()=>{yt.current=m?.onContractReviewed},[m?.onContractReviewed]);let[c,_t]=A(L||null),[o,Oe]=A(l),[g,gt]=A(void 0),X=Fe({select_country:{},basic_information:{},contract_details:{},contract_preview:{},pricing_plan:{},eligibility_questionnaire:{}}),[Y,Ie]=A(void 0),[bt,Z]=A(!1),[St,Re]=A(!0),[rt,Ct]=A(null),{steps:De,stepsArray:ke}=a(()=>Yt({includeSelectCountry:!W?.includes("select_country"),includeEligibilityQuestionnaire:bt,includeContractPreview:St}),[bt,St,W]),{fieldValues:s,stepState:e,setFieldValues:wt,previousStep:qe,nextStep:Ae,goToStep:j,setStepValues:ht}=$t(De);q(()=>{rt&&(j(rt),Ct(null))},[rt,j]);let{data:r,isLoading:Te,refetch:vt}=Ht({employmentId:o,queryParams:{exclude_files:!0}}),Le=Ee(),{status:I}=r||{},v=I&&te.includes(I),je=I&&!ee.includes(I),xe=a(()=>I&&["invited","initiated"].includes(I)?"invited":"not_invited",[I]),Pt=Kt(),Et=Gt(c,m),at=ue(),Ft=Xt(),{mutateAsync:Mt}=me(at,Ft,s),Vt=ge(),Ot=be(),{mutateAsyncOrThrow:Be}=w(Et),It=ae(),Rt=le(),Dt=Se(),{mutateAsyncOrThrow:Ne}=w(Pt),{mutateAsyncOrThrow:Qe}=w(at),{mutateAsyncOrThrow:Je}=w(It),{mutateAsyncOrThrow:kt}=w(Rt),{mutateAsyncOrThrow:Ue}=w(Vt),{mutateAsyncOrThrow:qt}=w(Ot),{mutateAsyncOrThrow:Ke}=w(Dt);l&&r?.country?.code&&!c&&_t(r.country.code);let{selectCountryForm:x,isLoading:Ge,countries:At}=Ce({jsfModify:m?.jsfModify?.select_country}),st=a(()=>At?.find(t=>t.value===c),[At,c]),He=a(()=>st?.label,[st]),$e=e.currentStep.name==="pricing_plan"||!!l&&v,{form:P,isLoading:ze,contractorSubscriptions:tt,filteredContractorSubscriptions:B,refetch:ct,isEligibilityQuestionnaireBlocked:N}=pe(o,st,{jsonSchemaVersion:m?.jsonSchemaVersion,queryOptions:{enabled:$e},excludeProducts:Ve,jsfModify:m?.jsfModify?.pricing_plan}),R=a(()=>!!tt?.find(t=>t.product.short_name==="COR")?.eligibility_questionnaire?.submitted_at,[tt]);q(()=>{if(R){Z(!1);return}else Z(Y===_)},[R,Y]),q(()=>{let t=r?.contractor_type==="cor";Re(!t)},[r?.contractor_type]);let et=a(()=>tt?.find(t=>t.product.short_name==="COR")?.eligibility_questionnaire?.responses,[tt]),We=En[e.currentStep.name]||"contractor_basic_information",Xe=Fn[We],Ye=r?.[Xe]||{},Ze=u(({form:t,options:n={},query:p={}})=>{let C=Object.keys(s).length>0?{...d,...e.values?.[e.currentStep.name],...s}:{...d,...Ye};return Ut({countryCode:c,form:t,fieldValues:C,query:p,options:{...n,queryOptions:{enabled:n.queryOptions?.enabled??!0}}})},"useJSONSchema"),tn=!!(c&&(e.currentStep.name==="basic_information"||l)),en=!!(c==="GBR"&&l&&e.currentStep.name==="basic_information"),{data:Q,isLoading:nn}=fe(l,{enabled:en}),{data:nt,isLoading:on}=ye(o,{enabled:!!o});q(()=>{nt&&nt.length>0&&!g&>(nt[0].id)},[nt,g]);let{data:b,isLoading:rn}=Ze({form:"contractor_basic_information",options:{jsfModify:ve(c,He,m),queryOptions:{enabled:tn}}}),an=a(()=>Zt(r?.basic_information?.provisional_start_date,s?.service_duration?.provisional_start_date),[r?.basic_information?.provisional_start_date,s?.service_duration?.provisional_start_date]),f=a(()=>{let t={standard:z,plus:ot,cor:_};if(s.subscription)return s.subscription;let n=e.values?.pricing_plan?.subscription;if(n&&!N)return n;if(R&&!N)return _;if(N&&R)return z;if(B&&B.length>0)return t[r?.contractor_type]||z},[s,e.values,R,r?.contractor_type,N,B]);q(()=>{f&&f!==Y&&Ie(f)},[f,Y]);let sn=a(()=>({...et,...d,...e.values?.eligibility_questionnaire,...s}),[et,d,e.values?.eligibility_questionnaire,s]),cn=a(()=>f===_&&e.currentStep.name==="eligibility_questionnaire"||!!l&&v&&f===_,[f,e.currentStep.name,l,v]),{data:E,isLoading:ln}=_e({options:{queryOptions:{enabled:cn},jsfModify:m?.jsfModify?.eligibility_questionnaire},fieldValues:sn}),un=!!(c&&e.currentStep.name==="contract_details"||v),{data:S,isLoading:dn}=we({countryCode:c,fieldValues:s,employmentId:o,options:{queryOptions:{enabled:un},jsfModify:he(m?.jsfModify?.contract_details,an,f,s,f===_)}}),pn=a(()=>e.currentStep.name==="contract_preview"||!!l&&v,[e.currentStep.name,l,v]),{data:F}=re({fieldValues:s,options:{queryOptions:{enabled:pn},jsfModify:Pe(m,s)}}),{data:lt,isLoading:mn,refetch:fn}=se({employmentId:o,contractDocumentId:g,options:{queryOptions:{enabled:!!g}}}),{hasCompanySignedContract:yn}=ce({employmentId:o,contractDocumentId:g,options:{queryOptions:{enabled:!!g}}}),i=a(()=>({select_country:x?.fields||[],basic_information:b?.fields||[],pricing_plan:P?.fields||[],eligibility_questionnaire:E?.fields||[],contract_details:S?.fields||[],contract_preview:F?.fields||[],review:[]}),[x?.fields,b?.fields,P?.fields,S?.fields,F?.fields,E?.fields]),_n={select_country:null,basic_information:b?.meta["x-jsf-fieldsets"],pricing_plan:null,contract_details:S?.meta["x-jsf-fieldsets"],eligibility_questionnaire:null,contract_preview:null,review:null},gn={select_country:x?.meta?.["x-jsf-presentation"],basic_information:b?.meta?.["x-jsf-presentation"],pricing_plan:P?.meta?.["x-jsf-presentation"],eligibility_questionnaire:E?.meta?.["x-jsf-presentation"],contract_details:S?.meta?.["x-jsf-presentation"],contract_preview:F?.meta?.["x-jsf-presentation"],review:null},{country:bn,basic_information:it={},contract_details:Tt={}}=r||{},Lt=bn?.code,J=a(()=>k(i.select_country,{country:c||Lt||""}),[i.select_country,c,Lt]),ut=a(()=>Q?.content?Nt(Q.content,Q.name):null,[Q?.content,Q?.name]),U=a(()=>{let t={...d,...it,ir35:r?.contract_details?.ir_35,nationality_status:r?.contract_details?.nationality,...ut&&{ir35_sds_file:[ut]}};return k(i.basic_information,t)},[d,it,r?.contract_details?.ir_35,r?.contract_details?.nationality,ut,i.basic_information]),K=a(()=>{let n={...{service_duration:{provisional_start_date:it.provisional_start_date}},...d,...Tt};return k(i.contract_details,n)},[i.contract_details,Tt,d,it]),G=a(()=>{let t=lt?.contract_document?.signatories?.find(p=>p.type==="company"),n={...d,signature:t?.signature};return k(i.contract_preview,n)},[i.contract_preview,d,lt]),H=a(()=>{let n={...{subscription:f},...d};return k(i.pricing_plan,n)},[i.pricing_plan,d,f]),$=a(()=>{let t={...d,...et};return k(i.eligibility_questionnaire,t)},[i.eligibility_questionnaire,d,et]),Sn=a(()=>({select_country:J,basic_information:U,contract_details:K,contract_preview:G,pricing_plan:H,eligibility_questionnaire:$}),[J,U,K,G,H,$]),dt=!!(l&&v&&e.currentStep.name!=="review"),pt=Ge||rn||Te||dn||ze||mn||nn||on||ln,jt=a(()=>{let n=r?.contractor_type==="cor"||i.contract_preview.length>0;return!!(dt&&!pt&&g&&i.basic_information.length>0&&i.contract_details.length>0&&n)},[dt,pt,g,i.basic_information.length,i.contract_details.length,i.contract_preview.length,r?.contractor_type]);q(()=>{jt&&(X.current={select_country:O(J,i.select_country,{skipMoneyConversion:!0}),basic_information:O(U,i.basic_information,{skipMoneyConversion:!0}),contract_details:O(K,i.contract_details,{skipMoneyConversion:!0}),contract_preview:O(G,i.contract_preview,{skipMoneyConversion:!0}),pricing_plan:O(H,i.pricing_plan,{skipMoneyConversion:!0}),eligibility_questionnaire:O($,i.eligibility_questionnaire,{skipMoneyConversion:!0})},ht({select_country:J,basic_information:U,contract_details:K,contract_preview:G,pricing_plan:H,eligibility_questionnaire:$,review:{}}),j("review"))},[jt,j,J,U,K,ht,i.select_country,i.basic_information,i.contract_details,i.pricing_plan,H,i.contract_preview,G,i.eligibility_questionnaire,$]);let Cn=u(t=>{j(t)},"goTo"),xt=u(async t=>x&&e.currentStep.name==="select_country"?t:b&&e.currentStep.name==="basic_information"?await y(t,b?.fields,{isPartialValidation:!1}):S&&e.currentStep.name==="contract_details"?await y(t,S?.fields,{isPartialValidation:!1}):F&&e.currentStep.name==="contract_preview"?await y(t,F?.fields,{isPartialValidation:!1}):P&&e.currentStep.name==="pricing_plan"?await y(t,P?.fields,{isPartialValidation:!1}):E&&e.currentStep.name==="eligibility_questionnaire"?await y(t,E?.fields,{isPartialValidation:!1}):{},"parseFormValues"),wn=u(t=>{if(!Bt(t))return null;let n=t.normalizedErrors.services_and_deliverables;return n?.source===Wt?{error:n.error,source:n.source,skippable:n.skippable}:null},"extractAiValidationError");async function hn(t){let n=e.currentStep.name,p=await xt(t);switch(n in X.current&&(X.current[n]=O(p,i[n])),e.currentStep.name){case"select_country":return _t(p.country),Promise.resolve({data:{countryCode:p.country}});case"basic_information":{let M=!o&&c,C=o&&c&&r?.country&&r?.country.code!==c;if(M||C){let D={basic_information:Me(p,"nationality_status","ir35","ir35_sds_file"),type:"contractor",country_code:c,external_id:T},mt=await Ne(D),ft=mt?.data?.employment?.id;if(!ft)throw h("Employment ID not found");return await Mt({employmentId:ft}),Oe(ft),mt}else if(o){let V=Me(p,"nationality_status","ir35","ir35_sds_file");return await Mt({employmentId:o}),Be({employmentId:o,basic_information:V})}return}case"contract_details":{let M=s.services_and_deliverables_error_skippable===!0,C={contract_document:p,skip_ai_checks:M};try{let V=await Qe({employmentId:o,payload:C}),D=V?.data?.contract_document?.id;if(!D)throw h("Contract document ID not found");return gt(D),V}catch(V){let D=wn(V);throw D&&wt({...t,services_and_deliverables_ai_warning:ne(f===_),services_and_deliverables_error_skippable:D.skippable}),V}}case"contract_preview":{if(yn)return Promise.resolve({data:{contract_document:{id:g}}});let M=await Je({employmentId:o,contractDocumentId:g,payload:{signature:p.signature}});return await fn(),M}case"pricing_plan":{if(t.subscription===zt)return Promise.resolve({data:{subscription:t.subscription}});if(B.length===0)throw h("No available subscriptions.");if(!t.subscription&&B.length>0)throw h("Please select a subscription plan.");if(N&&[_,ot].includes(t.subscription))throw h(`This individual is not eligible for ${de[t.subscription]}.`);if(R&&t.subscription!==_)try{await Ke({employmentId:o}),await ct()}catch(C){if(C?.response?.status!==404)throw C;await ct()}if(t.subscription==z)return kt({employmentId:o,payload:{operation:"downgrade"}});if(t.subscription==ot)return kt({employmentId:o,payload:{operation:"upgrade"}});if(t.subscription==_)return R&&r?.contractor_type!=="cor"?qt({employmentId:o}):Promise.resolve({data:{subscription:t.subscription}});throw h("invalid selection")}case"eligibility_questionnaire":try{if((await Ue({employmentId:o,payload:p}))?.data?.is_blocking)throw Z(!1),Ct("pricing_plan"),h("This individual is not eligible for Contractor of Record.");return await qt({employmentId:o})}finally{await ct()}default:throw h("Invalid step state")}}return u(hn,"onSubmit"),{isLoading:pt||dt,fieldValues:s,stepState:e,checkFieldUpdates:wt,markContractAsReviewed:u(()=>{yt.current?.()},"markContractAsReviewed"),back:qe,next:u(()=>{o&&vt(),Ae()},"handleNextStep"),goTo:Cn,onSubmit:hn,fields:i[e.currentStep.name],meta:{fields:X.current,fieldsets:_n[e.currentStep.name],presentation:gn[e.currentStep.name]},parseFormValues:xt,canSkipAiValidation:s.services_and_deliverables_error_skippable===!0,handleValidation:u(async t=>{if(e.currentStep.name==="select_country")return x.handleValidation(t);if(b&&e.currentStep.name==="basic_information"){let n=await y(t,b?.fields,{isPartialValidation:!1});return b?.handleValidation(n)}if(S&&e.currentStep.name==="contract_details"){let n=await y(t,S?.fields,{isPartialValidation:!1});return S?.handleValidation(n)}if(F&&e.currentStep.name==="contract_preview"){let n=await y(t,F?.fields,{isPartialValidation:!0});return F?.handleValidation(n)}if(P&&e.currentStep.name==="pricing_plan"){let n=await y(t,P?.fields,{isPartialValidation:!1});return P?.handleValidation(n)}if(E&&e.currentStep.name==="eligibility_questionnaire"){let n=await y(t,E?.fields,{isPartialValidation:!1});return E?.handleValidation(n)}return null},"handleValidation"),initialValues:Sn,employmentId:o,refetchEmployment:vt,isSubmitting:Pt.isPending||Et.isPending||at.isPending||It.isPending||Rt.isPending||Ft.isPending||Vt.isPending||Ot.isPending||Dt.isPending,documentPreviewPdf:lt,canInvite:je,isEmploymentReadOnly:v,invitedStatus:xe,employment:r,defaultLegalEntity:Le,steps:ke}},"useContractorOnboarding");export{ei as a};
|
|
2
|
+
//# sourceMappingURL=chunk-Z6XIW4JQ.js.map
|