@remoteoss/remote-flows 1.2.3 → 1.3.1

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.
Files changed (385) hide show
  1. package/README.md +4 -80
  2. package/dist/{PdfPreview-6C3GGXIN.js → PdfPreview-2VXVDUFP.js} +2 -2
  3. package/dist/{chunk-NS4FRCEH.js → chunk-26Y25KF6.js} +2 -2
  4. package/dist/{chunk-RVIGZOGF.js → chunk-2MX3WPCK.js} +2 -2
  5. package/dist/{chunk-C74N2AWG.js → chunk-3BOFG6MK.js} +2 -2
  6. package/dist/{chunk-AT7VHJMW.js → chunk-3DRSYLBM.js} +2 -2
  7. package/dist/{chunk-6SRDRMBU.js → chunk-3NMCXHSQ.js} +2 -2
  8. package/dist/{chunk-FKLQBAJ5.js → chunk-447M3MFN.js} +2 -2
  9. package/dist/{chunk-WO7VCDVI.js → chunk-4G2UMXRE.js} +2 -2
  10. package/dist/{chunk-NIEQ7YV4.js → chunk-4GXONSSK.js} +2 -2
  11. package/dist/{chunk-M2TLNSTK.js → chunk-4OVFMUUJ.js} +2 -2
  12. package/dist/{chunk-EC7QVRRX.js → chunk-4UAHJOHZ.js} +2 -2
  13. package/dist/{chunk-QUQLW5YW.js → chunk-5JQMTMHR.js} +2 -2
  14. package/dist/{chunk-WMYWVMKM.js → chunk-5S54GMUJ.js} +2 -2
  15. package/dist/chunk-5WFWHEXV.js +2 -0
  16. package/dist/chunk-5WFWHEXV.js.map +1 -0
  17. package/dist/chunk-6CASSN2Z.js +2 -0
  18. package/dist/chunk-6DHV4GT6.js +2 -0
  19. package/dist/{chunk-FCGEB2PN.js → chunk-6E467YF3.js} +2 -2
  20. package/dist/{chunk-XRI6PRXK.js → chunk-6E5GX7W3.js} +2 -2
  21. package/dist/{chunk-T6HCUFYI.js → chunk-765OB2K5.js} +2 -2
  22. package/dist/chunk-AD53V4MM.js +2 -0
  23. package/dist/chunk-AD53V4MM.js.map +1 -0
  24. package/dist/{chunk-7RREQLI5.js → chunk-ADOJOLLL.js} +2 -2
  25. package/dist/{chunk-3YVCOYUM.js → chunk-AF3YOXUE.js} +2 -2
  26. package/dist/{chunk-RNM46ZUE.js → chunk-AFGXZINW.js} +2 -2
  27. package/dist/{chunk-4PZNLTCY.js → chunk-AL2HSQPC.js} +2 -2
  28. package/dist/{chunk-BHYFPY64.js → chunk-B2OOX56F.js} +2 -2
  29. package/dist/chunk-BB2GHYJY.js +2 -0
  30. package/dist/chunk-BB2GHYJY.js.map +1 -0
  31. package/dist/{chunk-Y5P5IJRN.js → chunk-BPIGB72P.js} +2 -2
  32. package/dist/chunk-CATDB2YM.js +2 -0
  33. package/dist/chunk-CATDB2YM.js.map +1 -0
  34. package/dist/{chunk-V3PJWSHI.js → chunk-CM2YPABC.js} +2 -2
  35. package/dist/chunk-CM2YPABC.js.map +1 -0
  36. package/dist/{chunk-66N57DKF.js → chunk-CR7AIZKA.js} +2 -2
  37. package/dist/chunk-CWAUKF77.js +2 -0
  38. package/dist/{chunk-E25DZ75Z.js.map → chunk-CWAUKF77.js.map} +1 -1
  39. package/dist/{chunk-DHIFFMY4.js → chunk-CX735AP4.js} +2 -2
  40. package/dist/{chunk-MPQVMNI7.js → chunk-ER7DFMME.js} +2 -2
  41. package/dist/chunk-FOPSJRQG.js +2 -0
  42. package/dist/chunk-FOPSJRQG.js.map +1 -0
  43. package/dist/{chunk-J5LWPODW.js → chunk-FQQKCROC.js} +2 -2
  44. package/dist/chunk-FUBLGAPH.js +2 -0
  45. package/dist/chunk-FUBLGAPH.js.map +1 -0
  46. package/dist/{chunk-ZAUH7QN6.js → chunk-GAF5TFZJ.js} +2 -2
  47. package/dist/{chunk-ZAUH7QN6.js.map → chunk-GAF5TFZJ.js.map} +1 -1
  48. package/dist/chunk-GFVGV76O.js +2 -0
  49. package/dist/chunk-GFVGV76O.js.map +1 -0
  50. package/dist/{chunk-UOOUV52J.js → chunk-GGPEKIIH.js} +2 -2
  51. package/dist/{chunk-72OH7PSF.js → chunk-GPLI6GGL.js} +2 -2
  52. package/dist/chunk-GVSAZND2.js +2 -0
  53. package/dist/chunk-GVSAZND2.js.map +1 -0
  54. package/dist/chunk-HIQNB5UN.js +2 -0
  55. package/dist/chunk-HIQNB5UN.js.map +1 -0
  56. package/dist/{chunk-2SO4LW7V.js → chunk-HRG5MSVG.js} +2 -2
  57. package/dist/chunk-HRG5MSVG.js.map +1 -0
  58. package/dist/chunk-IJ6325YO.js +2 -0
  59. package/dist/chunk-IJ6325YO.js.map +1 -0
  60. package/dist/{chunk-PMTKQME6.js → chunk-ILOKQ6OH.js} +2 -2
  61. package/dist/{chunk-L5GWH3V7.js → chunk-JS3H25UQ.js} +2 -2
  62. package/dist/{chunk-FUMA5UUB.js → chunk-K3XVYHGV.js} +2 -2
  63. package/dist/chunk-KDI2AVBF.js +2 -0
  64. package/dist/chunk-KDI2AVBF.js.map +1 -0
  65. package/dist/{chunk-ZIN2OWTH.js → chunk-LAXQMTDQ.js} +2 -2
  66. package/dist/{chunk-BKEIB7VP.js → chunk-LFQDVSKU.js} +2 -2
  67. package/dist/{chunk-MXLQEDRJ.js → chunk-LHNX27TY.js} +2 -2
  68. package/dist/chunk-LOHRUY4J.js +2 -0
  69. package/dist/chunk-LOHRUY4J.js.map +1 -0
  70. package/dist/{chunk-TEC6BNTS.js → chunk-LSNMODBH.js} +2 -2
  71. package/dist/chunk-LWGSXQKI.js +1 -0
  72. package/dist/chunk-LWGSXQKI.js.map +1 -0
  73. package/dist/chunk-NFWNYW2E.js +2 -0
  74. package/dist/chunk-NFWNYW2E.js.map +1 -0
  75. package/dist/{chunk-7F742TXN.js → chunk-NP3HE6QX.js} +2 -2
  76. package/dist/{chunk-E5PHO3SS.js → chunk-NY7LII5R.js} +2 -2
  77. package/dist/chunk-OKMERBJL.js +2 -0
  78. package/dist/chunk-OKMERBJL.js.map +1 -0
  79. package/dist/chunk-P5PRB2JC.js +2 -0
  80. package/dist/chunk-P5PRB2JC.js.map +1 -0
  81. package/dist/chunk-P5QKSFOE.js +2 -0
  82. package/dist/chunk-P5QKSFOE.js.map +1 -0
  83. package/dist/{chunk-F3KEIVSE.js → chunk-PC5JG4TT.js} +2 -2
  84. package/dist/{chunk-LJGCFFAT.js → chunk-PJN2YJO4.js} +2 -2
  85. package/dist/chunk-PNRHCOPF.js +2 -0
  86. package/dist/chunk-PNRHCOPF.js.map +1 -0
  87. package/dist/{chunk-YP6LLUQK.js → chunk-PS6EXVKH.js} +2 -2
  88. package/dist/{chunk-CG57ORFU.js → chunk-Q2JVGEYM.js} +2 -2
  89. package/dist/{chunk-3I4WL35F.js → chunk-SQVJRTTA.js} +2 -2
  90. package/dist/chunk-SRR73QPD.js +2 -0
  91. package/dist/chunk-SRR73QPD.js.map +1 -0
  92. package/dist/{chunk-5A7SON2J.js → chunk-T6KVMOX7.js} +2 -2
  93. package/dist/chunk-TC7EQZJK.js +2 -0
  94. package/dist/chunk-TC7EQZJK.js.map +1 -0
  95. package/dist/{chunk-6P4DTWYK.js → chunk-U2HWB5HI.js} +2 -2
  96. package/dist/{chunk-L3Z2G32A.js → chunk-UQCSN47K.js} +1 -1
  97. package/dist/chunk-UQCSN47K.js.map +1 -0
  98. package/dist/{chunk-NFUP6BFU.js → chunk-W3YE53JN.js} +5 -5
  99. package/dist/chunk-W3YE53JN.js.map +1 -0
  100. package/dist/chunk-W4KHMUDZ.js +2 -0
  101. package/dist/chunk-W4KHMUDZ.js.map +1 -0
  102. package/dist/chunk-WINYXC33.js +2 -0
  103. package/dist/chunk-WINYXC33.js.map +1 -0
  104. package/dist/chunk-XCA33UL6.js +2 -0
  105. package/dist/chunk-XCA33UL6.js.map +1 -0
  106. package/dist/{chunk-I4XJ764Y.js → chunk-XGECMN4V.js} +2 -2
  107. package/dist/{chunk-BVDT43OO.js → chunk-XTXPKDZ7.js} +2 -2
  108. package/dist/{chunk-TVJYCR33.js → chunk-XXPJHT5A.js} +2 -2
  109. package/dist/{chunk-MSLM2CQ4.js → chunk-XXXQA4SY.js} +2 -2
  110. package/dist/{chunk-EI7F3Y3W.js → chunk-Z3AKMQ4S.js} +2 -2
  111. package/dist/{chunk-4GDEWYZC.js → chunk-Z5A2M5EU.js} +2 -2
  112. package/dist/{chunk-ZPN5N6BA.js → chunk-ZCXTTVGV.js} +2 -2
  113. package/dist/chunk-ZCXTTVGV.js.map +1 -0
  114. package/dist/{chunk-KGKDSOER.js → chunk-ZFKHCC4Z.js} +2 -2
  115. package/dist/{chunk-FZDQ7EEI.js → chunk-ZT72WOPZ.js} +2 -2
  116. package/dist/chunk-ZUNMNGRC.js +2 -0
  117. package/dist/chunk-ZUNMNGRC.js.map +1 -0
  118. package/dist/chunk-ZZPYYZNT.js +2 -0
  119. package/dist/chunk-ZZPYYZNT.js.map +1 -0
  120. package/dist/flows/ContractAmendment/ContractAmendmentBack.js +1 -1
  121. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
  122. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  123. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +6 -5
  124. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  125. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
  126. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  127. package/dist/flows/ContractAmendment/ContractAmendmentSubmit.js +1 -1
  128. package/dist/flows/ContractAmendment/context.d.ts +10 -9
  129. package/dist/flows/ContractAmendment/hooks.d.ts +11 -10
  130. package/dist/flows/ContractAmendment/hooks.js +1 -1
  131. package/dist/flows/ContractAmendment/index.d.ts +6 -5
  132. package/dist/flows/ContractAmendment/index.js +1 -1
  133. package/dist/flows/ContractAmendment/types.d.ts +3 -4
  134. package/dist/flows/ContractAmendment/utils.d.ts +5 -3
  135. package/dist/flows/ContractAmendment/utils.js +1 -1
  136. package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +7 -8
  137. package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
  138. package/dist/flows/ContractorOnboarding/api.d.ts +16 -9
  139. package/dist/flows/ContractorOnboarding/api.js +1 -1
  140. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +5 -6
  141. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
  142. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +7 -8
  143. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
  144. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +7 -8
  145. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
  146. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +10 -11
  147. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.js +1 -1
  148. package/dist/flows/ContractorOnboarding/components/OnboardingBack.js +1 -1
  149. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +4 -4
  150. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
  151. package/dist/flows/ContractorOnboarding/components/OnboardingSubmit.js +1 -1
  152. package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +7 -8
  153. package/dist/flows/ContractorOnboarding/components/PricingPlan.js +1 -1
  154. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +5 -6
  155. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.js +1 -1
  156. package/dist/flows/ContractorOnboarding/context.d.ts +7 -8
  157. package/dist/flows/ContractorOnboarding/hooks.d.ts +8 -9
  158. package/dist/flows/ContractorOnboarding/hooks.js +1 -1
  159. package/dist/flows/ContractorOnboarding/index.d.ts +7 -8
  160. package/dist/flows/ContractorOnboarding/index.js +1 -1
  161. package/dist/flows/ContractorOnboarding/types.d.ts +8 -9
  162. package/dist/flows/ContractorOnboarding/utils.d.ts +18 -1
  163. package/dist/flows/ContractorOnboarding/utils.js +1 -1
  164. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +4 -5
  165. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  166. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +4 -5
  167. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  168. package/dist/flows/CostCalculator/CostCalculatorResetButton.js +1 -1
  169. package/dist/flows/CostCalculator/CostCalculatorSubmitButton.js +1 -1
  170. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +3 -4
  171. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
  172. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +3 -4
  173. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.js +1 -1
  174. package/dist/flows/CostCalculator/api.d.ts +10 -7
  175. package/dist/flows/CostCalculator/api.js +1 -1
  176. package/dist/flows/CostCalculator/components/SalaryField.d.ts +3 -3
  177. package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
  178. package/dist/flows/CostCalculator/context.d.ts +4 -5
  179. package/dist/flows/CostCalculator/hooks.d.ts +4 -5
  180. package/dist/flows/CostCalculator/hooks.js +1 -1
  181. package/dist/flows/CostCalculator/index.d.ts +5 -6
  182. package/dist/flows/CostCalculator/index.js +1 -1
  183. package/dist/flows/CostCalculator/types.d.ts +3 -4
  184. package/dist/flows/CostCalculator/utils.d.ts +4 -5
  185. package/dist/flows/CostCalculator/utils.js +1 -1
  186. package/dist/flows/Onboarding/OnboardingFlow.d.ts +5 -6
  187. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  188. package/dist/flows/Onboarding/api.d.ts +20 -13
  189. package/dist/flows/Onboarding/api.js +1 -1
  190. package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +3 -3
  191. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
  192. package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +5 -6
  193. package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
  194. package/dist/flows/Onboarding/components/BenefitsStep.d.ts +5 -6
  195. package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
  196. package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +5 -6
  197. package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
  198. package/dist/flows/Onboarding/components/OnboardingBack.js +1 -1
  199. package/dist/flows/Onboarding/components/OnboardingForm.d.ts +9 -10
  200. package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
  201. package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +4 -4
  202. package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
  203. package/dist/flows/Onboarding/components/OnboardingSubmit.js +1 -1
  204. package/dist/flows/Onboarding/components/ReviewStep.d.ts +5 -6
  205. package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +4 -4
  206. package/dist/flows/Onboarding/components/SaveDraftButton.js +1 -1
  207. package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +5 -6
  208. package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
  209. package/dist/flows/Onboarding/context.d.ts +7 -8
  210. package/dist/flows/Onboarding/hooks.d.ts +6 -7
  211. package/dist/flows/Onboarding/hooks.js +1 -1
  212. package/dist/flows/Onboarding/index.d.ts +5 -6
  213. package/dist/flows/Onboarding/index.js +1 -1
  214. package/dist/flows/Onboarding/types.d.ts +5 -6
  215. package/dist/flows/Onboarding/utils.d.ts +5 -6
  216. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +7 -6
  217. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  218. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +7 -6
  219. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  220. package/dist/flows/Termination/PaidTimeOffForm.d.ts +7 -6
  221. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  222. package/dist/flows/Termination/TerminationBack.js +1 -1
  223. package/dist/flows/Termination/TerminationDetailsForm.d.ts +7 -6
  224. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  225. package/dist/flows/Termination/TerminationFlow.d.ts +7 -6
  226. package/dist/flows/Termination/TerminationFlow.js +1 -1
  227. package/dist/flows/Termination/TerminationForm.d.ts +8 -7
  228. package/dist/flows/Termination/TerminationForm.js +1 -1
  229. package/dist/flows/Termination/TerminationSubmit.js +1 -1
  230. package/dist/flows/Termination/api.d.ts +17 -12
  231. package/dist/flows/Termination/api.js +1 -1
  232. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInfomationContainer.js +1 -1
  233. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformation.js +1 -1
  234. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees.js +1 -1
  235. package/dist/flows/Termination/components/AcknowledgeInformation/constants.js +1 -1
  236. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +9 -8
  237. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.js +1 -1
  238. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +9 -8
  239. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
  240. package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +9 -8
  241. package/dist/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.js +1 -1
  242. package/dist/flows/Termination/components/TerminationReasonsDetailContent/TerminationReasonsDetailContent.js +1 -1
  243. package/dist/flows/Termination/context.d.ts +11 -10
  244. package/dist/flows/Termination/hooks.d.ts +7 -6
  245. package/dist/flows/Termination/hooks.js +1 -1
  246. package/dist/flows/Termination/index.d.ts +9 -8
  247. package/dist/flows/Termination/index.js +1 -1
  248. package/dist/flows/Termination/json-schemas/employeeComunication.js +1 -1
  249. package/dist/flows/Termination/json-schemas/jsonSchema.js +1 -1
  250. package/dist/flows/Termination/json-schemas/schema.d.ts +7 -6
  251. package/dist/flows/Termination/json-schemas/schema.js +1 -1
  252. package/dist/flows/Termination/types.d.ts +7 -6
  253. package/dist/flows/Termination/utils.d.ts +7 -6
  254. package/dist/flows/Termination/utils.js +1 -1
  255. package/dist/flows/types.d.ts +5 -22
  256. package/dist/flows/utils.d.ts +1 -1
  257. package/dist/index.d.ts +12 -11
  258. package/dist/index.js +1 -1
  259. package/dist/index.js.map +1 -1
  260. package/dist/internals.d.ts +5 -1
  261. package/dist/internals.js +1 -1
  262. package/dist/{mutations-Drqfzgy7.d.ts → mutations-Dhsqyt9R.d.ts} +1 -1
  263. package/dist/{remoteFlows-BgL1cZb_.d.ts → remoteFlows-8lgzhRZb.d.ts} +15 -6
  264. package/dist/styles.css +3 -0
  265. package/dist/styles.css.map +1 -0
  266. package/dist/styles.d.ts +2 -0
  267. package/dist/styles.js +2 -0
  268. package/dist/styles.js.map +1 -0
  269. package/dist/{types-BLSDMvDI.d.ts → types-7X9Do4Qx.d.ts} +8 -8
  270. package/dist/{types-BdW8zb6v.d.ts → types-BH1usu8z.d.ts} +1 -1
  271. package/dist/{types-CAEchQzj.d.ts → types-CR6ZHxiM.d.ts} +10 -11
  272. package/dist/{types-ANHgWME9.d.ts → types-CgFQV0b1.d.ts} +10 -11
  273. package/dist/types-ZWIpiFgj.d.ts +4 -0
  274. package/dist/{types.gen-er9sGXZD.d.ts → types.gen-q3-YX6jr.d.ts} +1 -1
  275. package/dist/{utils-CjDMg_Yr.d.ts → utils-CGX-jPIw.d.ts} +1 -0
  276. package/package.json +13 -3
  277. package/dist/chunk-23OYALRY.js +0 -2
  278. package/dist/chunk-23OYALRY.js.map +0 -1
  279. package/dist/chunk-2SO4LW7V.js.map +0 -1
  280. package/dist/chunk-2TILNBMK.js +0 -2
  281. package/dist/chunk-2TILNBMK.js.map +0 -1
  282. package/dist/chunk-3A5JJLQP.js +0 -2
  283. package/dist/chunk-3A5JJLQP.js.map +0 -1
  284. package/dist/chunk-5Z47HXNS.js +0 -2
  285. package/dist/chunk-5Z47HXNS.js.map +0 -1
  286. package/dist/chunk-6GTRAHWJ.js +0 -2
  287. package/dist/chunk-6GTRAHWJ.js.map +0 -1
  288. package/dist/chunk-CDCKGIF5.js +0 -2
  289. package/dist/chunk-CDCKGIF5.js.map +0 -1
  290. package/dist/chunk-E25DZ75Z.js +0 -2
  291. package/dist/chunk-EDVJBPCB.js +0 -2
  292. package/dist/chunk-EDVJBPCB.js.map +0 -1
  293. package/dist/chunk-EHAZWZ3O.js +0 -2
  294. package/dist/chunk-EHAZWZ3O.js.map +0 -1
  295. package/dist/chunk-ERRQIROU.js +0 -2
  296. package/dist/chunk-ERRQIROU.js.map +0 -1
  297. package/dist/chunk-F2TLAIUP.js +0 -2
  298. package/dist/chunk-F2TLAIUP.js.map +0 -1
  299. package/dist/chunk-IVMECZU7.js +0 -2
  300. package/dist/chunk-IVMECZU7.js.map +0 -1
  301. package/dist/chunk-IWA5B4U6.js +0 -2
  302. package/dist/chunk-JA7UP6GN.js +0 -2
  303. package/dist/chunk-JA7UP6GN.js.map +0 -1
  304. package/dist/chunk-L3Z2G32A.js.map +0 -1
  305. package/dist/chunk-LQBVRVXH.js +0 -2
  306. package/dist/chunk-LQBVRVXH.js.map +0 -1
  307. package/dist/chunk-NFUP6BFU.js.map +0 -1
  308. package/dist/chunk-OAPK6TR7.js +0 -2
  309. package/dist/chunk-OAPK6TR7.js.map +0 -1
  310. package/dist/chunk-RR55GUDT.js +0 -2
  311. package/dist/chunk-RR55GUDT.js.map +0 -1
  312. package/dist/chunk-SIYKTLFS.js +0 -2
  313. package/dist/chunk-SIYKTLFS.js.map +0 -1
  314. package/dist/chunk-TP4HDSRT.js +0 -2
  315. package/dist/chunk-TP4HDSRT.js.map +0 -1
  316. package/dist/chunk-V3PJWSHI.js.map +0 -1
  317. package/dist/chunk-V6HC5BRT.js +0 -2
  318. package/dist/chunk-V6HC5BRT.js.map +0 -1
  319. package/dist/chunk-XOA7GG4P.js +0 -2
  320. package/dist/chunk-XQL5I2GC.js +0 -2
  321. package/dist/chunk-XQL5I2GC.js.map +0 -1
  322. package/dist/chunk-Y2NSR2N6.js +0 -2
  323. package/dist/chunk-Y2NSR2N6.js.map +0 -1
  324. package/dist/chunk-Y6OPZHC3.js +0 -2
  325. package/dist/chunk-Y6OPZHC3.js.map +0 -1
  326. package/dist/chunk-YXJOEOXB.js +0 -2
  327. package/dist/chunk-YXJOEOXB.js.map +0 -1
  328. package/dist/chunk-ZOTFS35J.js +0 -2
  329. package/dist/chunk-ZOTFS35J.js.map +0 -1
  330. package/dist/chunk-ZPN5N6BA.js.map +0 -1
  331. package/dist/types-Zg1n_9wh.d.ts +0 -3
  332. /package/dist/{PdfPreview-6C3GGXIN.js.map → PdfPreview-2VXVDUFP.js.map} +0 -0
  333. /package/dist/{chunk-NS4FRCEH.js.map → chunk-26Y25KF6.js.map} +0 -0
  334. /package/dist/{chunk-RVIGZOGF.js.map → chunk-2MX3WPCK.js.map} +0 -0
  335. /package/dist/{chunk-C74N2AWG.js.map → chunk-3BOFG6MK.js.map} +0 -0
  336. /package/dist/{chunk-AT7VHJMW.js.map → chunk-3DRSYLBM.js.map} +0 -0
  337. /package/dist/{chunk-6SRDRMBU.js.map → chunk-3NMCXHSQ.js.map} +0 -0
  338. /package/dist/{chunk-FKLQBAJ5.js.map → chunk-447M3MFN.js.map} +0 -0
  339. /package/dist/{chunk-WO7VCDVI.js.map → chunk-4G2UMXRE.js.map} +0 -0
  340. /package/dist/{chunk-NIEQ7YV4.js.map → chunk-4GXONSSK.js.map} +0 -0
  341. /package/dist/{chunk-M2TLNSTK.js.map → chunk-4OVFMUUJ.js.map} +0 -0
  342. /package/dist/{chunk-EC7QVRRX.js.map → chunk-4UAHJOHZ.js.map} +0 -0
  343. /package/dist/{chunk-QUQLW5YW.js.map → chunk-5JQMTMHR.js.map} +0 -0
  344. /package/dist/{chunk-WMYWVMKM.js.map → chunk-5S54GMUJ.js.map} +0 -0
  345. /package/dist/{chunk-XOA7GG4P.js.map → chunk-6CASSN2Z.js.map} +0 -0
  346. /package/dist/{chunk-IWA5B4U6.js.map → chunk-6DHV4GT6.js.map} +0 -0
  347. /package/dist/{chunk-FCGEB2PN.js.map → chunk-6E467YF3.js.map} +0 -0
  348. /package/dist/{chunk-XRI6PRXK.js.map → chunk-6E5GX7W3.js.map} +0 -0
  349. /package/dist/{chunk-T6HCUFYI.js.map → chunk-765OB2K5.js.map} +0 -0
  350. /package/dist/{chunk-7RREQLI5.js.map → chunk-ADOJOLLL.js.map} +0 -0
  351. /package/dist/{chunk-3YVCOYUM.js.map → chunk-AF3YOXUE.js.map} +0 -0
  352. /package/dist/{chunk-RNM46ZUE.js.map → chunk-AFGXZINW.js.map} +0 -0
  353. /package/dist/{chunk-4PZNLTCY.js.map → chunk-AL2HSQPC.js.map} +0 -0
  354. /package/dist/{chunk-BHYFPY64.js.map → chunk-B2OOX56F.js.map} +0 -0
  355. /package/dist/{chunk-Y5P5IJRN.js.map → chunk-BPIGB72P.js.map} +0 -0
  356. /package/dist/{chunk-66N57DKF.js.map → chunk-CR7AIZKA.js.map} +0 -0
  357. /package/dist/{chunk-DHIFFMY4.js.map → chunk-CX735AP4.js.map} +0 -0
  358. /package/dist/{chunk-MPQVMNI7.js.map → chunk-ER7DFMME.js.map} +0 -0
  359. /package/dist/{chunk-J5LWPODW.js.map → chunk-FQQKCROC.js.map} +0 -0
  360. /package/dist/{chunk-UOOUV52J.js.map → chunk-GGPEKIIH.js.map} +0 -0
  361. /package/dist/{chunk-72OH7PSF.js.map → chunk-GPLI6GGL.js.map} +0 -0
  362. /package/dist/{chunk-PMTKQME6.js.map → chunk-ILOKQ6OH.js.map} +0 -0
  363. /package/dist/{chunk-L5GWH3V7.js.map → chunk-JS3H25UQ.js.map} +0 -0
  364. /package/dist/{chunk-FUMA5UUB.js.map → chunk-K3XVYHGV.js.map} +0 -0
  365. /package/dist/{chunk-ZIN2OWTH.js.map → chunk-LAXQMTDQ.js.map} +0 -0
  366. /package/dist/{chunk-BKEIB7VP.js.map → chunk-LFQDVSKU.js.map} +0 -0
  367. /package/dist/{chunk-MXLQEDRJ.js.map → chunk-LHNX27TY.js.map} +0 -0
  368. /package/dist/{chunk-TEC6BNTS.js.map → chunk-LSNMODBH.js.map} +0 -0
  369. /package/dist/{chunk-7F742TXN.js.map → chunk-NP3HE6QX.js.map} +0 -0
  370. /package/dist/{chunk-E5PHO3SS.js.map → chunk-NY7LII5R.js.map} +0 -0
  371. /package/dist/{chunk-F3KEIVSE.js.map → chunk-PC5JG4TT.js.map} +0 -0
  372. /package/dist/{chunk-LJGCFFAT.js.map → chunk-PJN2YJO4.js.map} +0 -0
  373. /package/dist/{chunk-YP6LLUQK.js.map → chunk-PS6EXVKH.js.map} +0 -0
  374. /package/dist/{chunk-CG57ORFU.js.map → chunk-Q2JVGEYM.js.map} +0 -0
  375. /package/dist/{chunk-3I4WL35F.js.map → chunk-SQVJRTTA.js.map} +0 -0
  376. /package/dist/{chunk-5A7SON2J.js.map → chunk-T6KVMOX7.js.map} +0 -0
  377. /package/dist/{chunk-6P4DTWYK.js.map → chunk-U2HWB5HI.js.map} +0 -0
  378. /package/dist/{chunk-I4XJ764Y.js.map → chunk-XGECMN4V.js.map} +0 -0
  379. /package/dist/{chunk-BVDT43OO.js.map → chunk-XTXPKDZ7.js.map} +0 -0
  380. /package/dist/{chunk-TVJYCR33.js.map → chunk-XXPJHT5A.js.map} +0 -0
  381. /package/dist/{chunk-MSLM2CQ4.js.map → chunk-XXXQA4SY.js.map} +0 -0
  382. /package/dist/{chunk-EI7F3Y3W.js.map → chunk-Z3AKMQ4S.js.map} +0 -0
  383. /package/dist/{chunk-4GDEWYZC.js.map → chunk-Z5A2M5EU.js.map} +0 -0
  384. /package/dist/{chunk-KGKDSOER.js.map → chunk-ZFKHCC4Z.js.map} +0 -0
  385. /package/dist/{chunk-FZDQ7EEI.js.map → chunk-ZT72WOPZ.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+
2
+ export { }
package/dist/styles.js ADDED
@@ -0,0 +1,2 @@
1
+ import"./chunk-LWGSXQKI.js";import"./chunk-P37U34EQ.js";
2
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,9 +1,9 @@
1
- import { O as OffboardingResponse, X as PayrollCalendarEor, E as Employment, T as TerminationDetailsParams, N as NotFoundResponse, U as UnprocessableEntityResponse, s as TooManyRequestsResponse, B as BadRequestResponse, a as UnauthorizedResponse, R as RequestError } from './types.gen-er9sGXZD.js';
1
+ import { O as OffboardingResponse, X as PayrollCalendarEor, E as Employment, D as TerminationDetailsParams, N as NotFoundResponse, U as UnprocessableEntityResponse, T as TooManyRequestsResponse, B as BadRequestResponse, a as UnauthorizedResponse, R as RequestError } from './types.gen-q3-YX6jr.js';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
- import { E as ErrorResponse, S as SuccessResponse } from './mutations-Drqfzgy7.js';
3
+ import { E as ErrorResponse, S as SuccessResponse } from './mutations-Dhsqyt9R.js';
4
4
  import * as React$1 from 'react';
5
- import * as _remoteoss_json_schema_form_old from '@remoteoss/json-schema-form-old';
6
- import { $TSFixMe } from '@remoteoss/json-schema-form-old';
5
+ import * as _remoteoss_json_schema_form from '@remoteoss/json-schema-form';
6
+ import * as _remoteoss_json_schema_form_v0_deprecated from '@remoteoss/json-schema-form-v0-deprecated';
7
7
  import { Step } from './flows/useStepState.js';
8
8
  import { TerminationBack } from './flows/Termination/TerminationBack.js';
9
9
  import { TerminationSubmit } from './flows/Termination/TerminationSubmit.js';
@@ -91,7 +91,7 @@ declare const useTermination: ({ employmentId, options, initialValues: terminati
91
91
  /**
92
92
  * Array of form fields from the contract amendment schema
93
93
  */
94
- fields: _remoteoss_json_schema_form_old.Fields;
94
+ fields: _remoteoss_json_schema_form_v0_deprecated.Fields;
95
95
  /**
96
96
  * Loading state indicating if the termination schema is being fetched
97
97
  */
@@ -109,9 +109,9 @@ declare const useTermination: ({ employmentId, options, initialValues: terminati
109
109
  * @param values - Form values to validate
110
110
  * @returns Validation result or null if no schema is available
111
111
  */
112
- handleValidation: (values: TerminationFormValues) => Promise<{
113
- yupError: $TSFixMe;
114
- formErrors: $TSFixMe;
112
+ handleValidation: (values: TerminationFormValues) => Promise<_remoteoss_json_schema_form.ValidationResult | {
113
+ yupError: _remoteoss_json_schema_form_v0_deprecated.$TSFixMe;
114
+ formErrors: _remoteoss_json_schema_form_v0_deprecated.$TSFixMe;
115
115
  } | null>;
116
116
  /**
117
117
  * Function to update the current form field values
@@ -1,4 +1,4 @@
1
- import { E as Employment, L as ListTimeoffResponse, G as TimeoffStatus, H as TimeoffType, I as ListLeavePoliciesSummaryResponse, J as MagicLinkResponse, U as UnprocessableEntityResponse, K as MagicLinkParams } from './types.gen-er9sGXZD.js';
1
+ import { E as Employment, L as ListTimeoffResponse, G as TimeoffStatus, H as TimeoffType, I as ListLeavePoliciesSummaryResponse, J as MagicLinkResponse, U as UnprocessableEntityResponse, K as MagicLinkParams } from './types.gen-q3-YX6jr.js';
2
2
  import * as _tanstack_query_core from '@tanstack/query-core';
3
3
  import * as _tanstack_react_query from '@tanstack/react-query';
4
4
  import { UseQueryResult } from '@tanstack/react-query';
@@ -1,17 +1,16 @@
1
- import { r as EmploymentCreationResponse, w as EmploymentResponse, S as SuccessResponse, N as NotFoundResponse, U as UnprocessableEntityResponse, s as TooManyRequestsResponse, B as BadRequestResponse, a as UnauthorizedResponse, u as ConflictResponse, F as ForbiddenResponse, E as Employment$1, v as EmploymentCreateParams } from './types.gen-er9sGXZD.js';
1
+ import { j as EmploymentCreationResponse, l as EmploymentResponse, S as SuccessResponse, N as NotFoundResponse, U as UnprocessableEntityResponse, T as TooManyRequestsResponse, B as BadRequestResponse, a as UnauthorizedResponse, i as ConflictResponse, F as ForbiddenResponse, E as Employment$1, k as EmploymentCreateParams } from './types.gen-q3-YX6jr.js';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { OnboardingBack } from './flows/Onboarding/components/OnboardingBack.js';
4
4
  import { OnboardingInvite } from './flows/Onboarding/components/OnboardingInvite.js';
5
- import { N as NormalizedFieldError, S as SuccessResponse$1, E as ErrorResponse } from './mutations-Drqfzgy7.js';
5
+ import { N as NormalizedFieldError, S as SuccessResponse$1, E as ErrorResponse } from './mutations-Dhsqyt9R.js';
6
6
  import { OnboardingSubmit } from './flows/Onboarding/components/OnboardingSubmit.js';
7
- import { C as Components, M as Meta, J as JSFFieldset } from './remoteFlows-BgL1cZb_.js';
7
+ import { C as Components, J as JSFFields, M as Meta, a as JSFFieldset } from './remoteFlows-8lgzhRZb.js';
8
8
  import * as _tanstack_query_core from '@tanstack/query-core';
9
9
  import * as React$1 from 'react';
10
10
  import { ValidationResult } from '@remoteoss/remote-json-schema-form-kit';
11
- import { Fields } from '@remoteoss/json-schema-form-old';
12
11
  import { Step } from './flows/useStepState.js';
13
12
  import { FieldValues } from 'react-hook-form';
14
- import { FlowOptions, JSFModifyNext } from './flows/types.js';
13
+ import { FlowOptions, JSFModify } from './flows/types.js';
15
14
  import { SaveDraftButton } from './flows/Onboarding/components/SaveDraftButton.js';
16
15
 
17
16
  type BasicInformationStepProps = {
@@ -127,7 +126,7 @@ declare const useOnboarding: ({ employmentId, companyId, countryCode, type, opti
127
126
  /**
128
127
  * Array of form fields from the onboarding schema
129
128
  */
130
- fields: Fields;
129
+ fields: JSFFields;
131
130
  /**
132
131
  * Loading state indicating if the onboarding schema is being fetched
133
132
  */
@@ -365,10 +364,10 @@ type OnboardingFlowProps = {
365
364
  */
366
365
  options?: Omit<FlowOptions, 'jsfModify'> & {
367
366
  jsfModify?: {
368
- select_country?: JSFModifyNext;
369
- basic_information?: JSFModifyNext;
370
- contract_details?: JSFModifyNext;
371
- benefits?: JSFModifyNext;
367
+ select_country?: JSFModify;
368
+ basic_information?: JSFModify;
369
+ contract_details?: JSFModify;
370
+ benefits?: JSFModify;
372
371
  };
373
372
  /**
374
373
  * The json schema version to use for the onboarding by country.
@@ -425,4 +424,4 @@ type Employment = Employment$1 & {
425
424
  };
426
425
  type CreditRiskState = 'deposit_required' | 'deposit_required_successful' | 'invite' | 'invite_successful' | 'referred' | null;
427
426
 
428
- export { type BasicInformationFormPayload as B, type ContractDetailsFormPayload as C, DEFAULT_VERSION as D, type Employment as E, type OnboardingFlowProps as O, ReviewStep as R, STEPS as S, type SelectCountryFormPayload as a, type SelectCountrySuccess as b, type BenefitsFormPayload as c, type CreditRiskStatus as d, type CreditRiskState as e, type OnboardingRenderProps as f, SelectCountryStep as g, BasicInformationStep as h, ContractDetailsStep as i, BenefitsStep as j, STEPS_WITHOUT_SELECT_COUNTRY as k, disabledInviteButtonEmploymentStatus as l, getContractDetailsSchemaVersion as m, reviewStepAllowedEmploymentStatus as r, useOnboarding as u };
427
+ export { type BasicInformationFormPayload as B, type ContractDetailsFormPayload as C, DEFAULT_VERSION as D, type Employment as E, type OnboardingFlowProps as O, ReviewStep as R, STEPS as S, type BenefitsFormPayload as a, type SelectCountryFormPayload as b, type SelectCountrySuccess as c, type CreditRiskStatus as d, type CreditRiskState as e, type OnboardingRenderProps as f, SelectCountryStep as g, BasicInformationStep as h, ContractDetailsStep as i, BenefitsStep as j, STEPS_WITHOUT_SELECT_COUNTRY as k, disabledInviteButtonEmploymentStatus as l, getContractDetailsSchemaVersion as m, reviewStepAllowedEmploymentStatus as r, useOnboarding as u };
@@ -1,19 +1,18 @@
1
- import { E as Employment, e as File, g as CreateContractDocumentResponse, d as SignContractDocument, S as SuccessResponse } from './types.gen-er9sGXZD.js';
1
+ import { E as Employment, w as File, z as CreateContractDocumentResponse, v as SignContractDocument, S as SuccessResponse } from './types.gen-q3-YX6jr.js';
2
2
  import { OnboardingBack } from './flows/ContractorOnboarding/components/OnboardingBack.js';
3
3
  import { OnboardingSubmit } from './flows/ContractorOnboarding/components/OnboardingSubmit.js';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
- import { N as NormalizedFieldError } from './mutations-Drqfzgy7.js';
5
+ import { N as NormalizedFieldError } from './mutations-Dhsqyt9R.js';
6
6
  import * as _tanstack_query_core from '@tanstack/query-core';
7
7
  import * as React$1 from 'react';
8
+ import { FieldValues } from 'react-hook-form';
9
+ import { J as JSFFields, M as Meta, a as JSFFieldset, $ as $TSFixMe } from './remoteFlows-8lgzhRZb.js';
8
10
  import { ValidationResult } from '@remoteoss/remote-json-schema-form-kit';
9
11
  import { STEPS } from './flows/ContractorOnboarding/utils.js';
10
12
  import { Step } from './flows/useStepState.js';
11
- import { M as Meta, J as JSFFieldset, $ as $TSFixMe } from './remoteFlows-BgL1cZb_.js';
12
- import { Fields } from '@remoteoss/json-schema-form-old';
13
- import { FieldValues } from 'react-hook-form';
14
13
  import { BasicInformationStep } from './flows/ContractorOnboarding/components/BasicInformationStep.js';
15
- import { g as SelectCountryStep } from './types-CAEchQzj.js';
16
- import { FlowOptions, JSFModifyNext } from './flows/types.js';
14
+ import { g as SelectCountryStep } from './types-CR6ZHxiM.js';
15
+ import { FlowOptions, JSFModify } from './flows/types.js';
17
16
  import { OnboardingInvite } from './flows/Onboarding/components/OnboardingInvite.js';
18
17
 
19
18
  type PricingPlanStepProps = {
@@ -82,7 +81,7 @@ declare const useContractorOnboarding: ({ countryCode, externalId, employmentId,
82
81
  /**
83
82
  * Array of form fields from the onboarding schema
84
83
  */
85
- fields: Fields;
84
+ fields: JSFFields;
86
85
  /**
87
86
  * Fields metadata for each step
88
87
  */
@@ -245,9 +244,9 @@ type ContractorOnboardingFlowProps = {
245
244
  */
246
245
  options?: Omit<FlowOptions, 'jsfModify'> & {
247
246
  jsfModify?: {
248
- select_country?: JSFModifyNext;
249
- basic_information?: JSFModifyNext;
250
- contract_details?: JSFModifyNext;
247
+ select_country?: JSFModify;
248
+ basic_information?: JSFModify;
249
+ contract_details?: JSFModify;
251
250
  };
252
251
  };
253
252
  /**
@@ -0,0 +1,4 @@
1
+ type BaseTypes = 'text' | 'number' | 'email' | 'select' | 'multi-select' | 'radio' | 'date' | 'checkbox' | 'textarea' | 'money' | 'file' | 'countries' | 'hidden' | 'work-schedule';
2
+ type SupportedTypes = BaseTypes | 'fieldset' | 'fieldset-flat';
3
+
4
+ export type { BaseTypes as B, SupportedTypes as S };
@@ -1688,4 +1688,4 @@ type PostAutomatableContractAmendmentErrors = {
1688
1688
  };
1689
1689
  type PostAutomatableContractAmendmentError = PostAutomatableContractAmendmentErrors[keyof PostAutomatableContractAmendmentErrors];
1690
1690
 
1691
- export type { ConvertCurrencyParams as A, BadRequestResponse as B, ContractAmendmentAutomatableResponse as C, CreateContractEligibilityParams as D, Employment as E, ForbiddenResponse as F, TimeoffStatus as G, TimeoffType as H, ListLeavePoliciesSummaryResponse as I, MagicLinkResponse as J, MagicLinkParams as K, ListTimeoffResponse as L, ManageContractorPlusSubscriptionOperationsParams as M, NotFoundResponse as N, OffboardingResponse as O, PostCreateContractAmendmentError as P, CreateOffboardingParams as Q, RequestError as R, SuccessResponse as S, TerminationDetailsParams as T, UnprocessableEntityResponse as U, ValidationError as V, Currency as W, PayrollCalendarEor as X, HelpCenterArticle as Y, UnauthorizedResponse as a, ContractAmendmentResponse as b, PostAutomatableContractAmendmentError as c, SignContractDocument as d, File as e, ContractorSubscriptionsSummary as f, CreateContractDocumentResponse as g, CreateContractDocument as h, CostCalculatorEstimateResponse as i, CostCalculatorEstimatePdfResponse as j, CostCalculatorEstimateParams as k, CostCalculatorEstimateCsvResponse as l, MinimalRegion as m, MinimalCountry as n, EmploymentTermType as o, CostCalculatorEmployment as p, PostCreateEstimationError as q, EmploymentCreationResponse as r, TooManyRequestsResponse as s, Company as t, ConflictResponse as u, EmploymentCreateParams as v, EmploymentResponse as w, EmploymentFullParams as x, UnifiedEmploymentUpsertBenefitOffersRequest as y, ConvertCurrencyResponse as z };
1691
+ export type { CreateContractDocument as A, BadRequestResponse as B, ContractAmendmentAutomatableResponse as C, TerminationDetailsParams as D, Employment as E, ForbiddenResponse as F, TimeoffStatus as G, TimeoffType as H, ListLeavePoliciesSummaryResponse as I, MagicLinkResponse as J, MagicLinkParams as K, ListTimeoffResponse as L, MinimalRegion as M, NotFoundResponse as N, OffboardingResponse as O, PostCreateContractAmendmentError as P, CreateOffboardingParams as Q, RequestError as R, SuccessResponse as S, TooManyRequestsResponse as T, UnprocessableEntityResponse as U, ValidationError as V, Currency as W, PayrollCalendarEor as X, HelpCenterArticle as Y, UnauthorizedResponse as a, ContractAmendmentResponse as b, PostAutomatableContractAmendmentError as c, CostCalculatorEstimateResponse as d, CostCalculatorEstimatePdfResponse as e, CostCalculatorEstimateParams as f, CostCalculatorEstimateCsvResponse as g, Company as h, ConflictResponse as i, EmploymentCreationResponse as j, EmploymentCreateParams as k, EmploymentResponse as l, EmploymentFullParams as m, UnifiedEmploymentUpsertBenefitOffersRequest as n, ConvertCurrencyResponse as o, ConvertCurrencyParams as p, CreateContractEligibilityParams as q, MinimalCountry as r, EmploymentTermType as s, CostCalculatorEmployment as t, PostCreateEstimationError as u, SignContractDocument as v, File as w, ContractorSubscriptionsSummary as x, ManageContractorPlusSubscriptionOperationsParams as y, CreateContractDocumentResponse as z };
@@ -1,5 +1,6 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import { ValidationError } from 'yup';
3
+ import './remoteFlows-8lgzhRZb.js';
3
4
 
4
5
  declare function cn(...inputs: ClassValue[]): string;
5
6
  type YupError = Pick<ValidationError, 'type' | 'errors'> & {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remoteoss/remote-flows",
3
- "version": "1.2.3",
3
+ "version": "1.3.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/remoteoss/remote-flows.git"
@@ -8,7 +8,7 @@
8
8
  "scripts": {
9
9
  "build": "NODE_ENV=production tsup",
10
10
  "ci": "npm run build && npm run check-format && npm run check-exports && npm run lint && npm run type-check && npm run test",
11
- "check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm --exclude-entrypoints index.css --profile node16",
11
+ "check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm --exclude-entrypoints index.css styles.css --profile node16",
12
12
  "check-format": "prettier --check .",
13
13
  "dev": "NODE_OPTIONS='--max-old-space-size=8192' NODE_ENV=development tsup --watch",
14
14
  "build:reset": "postcss src/styles/reset.css -o ./example/src/css/reset.css",
@@ -24,6 +24,9 @@
24
24
  "size:badge": "tsx scripts/update-size-badge.ts",
25
25
  "type-check": "tsc --noEmit"
26
26
  },
27
+ "sideEffects": [
28
+ "**/*.css"
29
+ ],
27
30
  "engines": {
28
31
  "node": ">=24"
29
32
  },
@@ -56,6 +59,14 @@
56
59
  "import": "./dist/index.css"
57
60
  },
58
61
  "default": "./dist/index.css"
62
+ },
63
+ "./styles": {
64
+ "import": "./dist/styles.js",
65
+ "default": "./dist/styles.js"
66
+ },
67
+ "./styles.css": {
68
+ "import": "./dist/styles.css",
69
+ "default": "./dist/styles.css"
59
70
  }
60
71
  },
61
72
  "files": [
@@ -81,7 +92,6 @@
81
92
  "@radix-ui/react-slot": "^1.2.4",
82
93
  "@radix-ui/react-tabs": "^1.1.13",
83
94
  "@radix-ui/react-tooltip": "^1.2.8",
84
- "@remoteoss/json-schema-form-old": "npm:@remoteoss/json-schema-form@0.11.10-beta.0",
85
95
  "@remoteoss/remote-json-schema-form-kit": "github:remoteoss/remote-json-schema-form-kit#update-types-kit",
86
96
  "@tailwindcss/cli": "^4.1.17",
87
97
  "@tailwindcss/postcss": "^4.1.17",
@@ -1,2 +0,0 @@
1
- import{a as V}from"./chunk-WVJDCDGZ.js";import{f as J}from"./chunk-H6YNMT4M.js";import{b as N}from"./chunk-Z5WMKCRJ.js";import{A as x,B as P,E as R,H as U,e as b,g as _,j as g,k as S,q as w,r as j,t as v,w as O,x as E,y as q}from"./chunk-NFUP6BFU.js";import{d as a}from"./chunk-KQPDXXG3.js";import{a as C}from"./chunk-2SO4LW7V.js";import{a as r}from"./chunk-P37U34EQ.js";import{modify as d,createHeadlessForm as h}from"@remoteoss/remote-json-schema-form-kit";import{useMutation as m,useQuery as f}from"@tanstack/react-query";var te=r(t=>{let{client:n}=a();return f({queryKey:["employment",t],retry:!1,enabled:!!t,select:r(({data:e})=>e?.data.employment,"select"),queryFn:r(async()=>{let e=await E({client:n,headers:{Authorization:""},path:{employment_id:t}});if(e.error||!e.data)throw new Error("Failed to fetch employment data");return e},"queryFn")})},"useEmployment"),re=r(t=>{let{client:n}=a();return f({queryKey:["company",t],retry:!1,enabled:!!t,queryFn:r(async()=>{let e=await j({client:n,headers:{Authorization:""},path:{company_id:t}});if(e.error||!e.data)throw new Error("Failed to fetch employment data");return e},"queryFn"),select:r(({data:e})=>e.data.company,"select")})},"useCompany"),ne=r(t=>{let{client:n}=a();return f({queryKey:["benefit-offers",t],retry:!1,enabled:!!t,queryFn:r(async()=>g({client:n,path:{employment_id:t}}).then(e=>{if(e.error||!e.data)throw new Error("Failed to fetch benefit offers data");return e}),"queryFn"),select:r(({data:e})=>e?.data?.reduce((o,s)=>({...o,[s.benefit_group.slug]:{value:s.benefit_tier?.slug??"no",...s.benefit_group?.filter?.slug?{filter:s.benefit_group?.filter?.slug}:{}}}),{}),"select")})},"useBenefitOffers"),oe=r(()=>{let{client:t}=a();return m({mutationFn:r(n=>U({client:t,headers:{Authorization:""},path:n}),"mutationFn")})},"useEmploymentInvite"),se=r(()=>{let{client:t}=a();return m({mutationFn:r(n=>w({client:t,body:n}),"mutationFn")})},"useCreateReserveInvoice"),ae=r(({countryCode:t,form:n,fieldValues:e,options:o,query:s={},jsonSchemaVersion:i})=>{let{client:l}=a(),p=i?{json_schema_version:i}:{};return f({queryKey:["onboarding-json-schema-form",t,n],retry:!1,queryFn:r(async()=>{let u=await v({client:l,headers:{Authorization:""},path:{country_code:t,form:n},query:{skip_benefits:!0,...s,...p}});if(u.error||!u.data)throw new Error("Failed to fetch onboarding schema");return u},"queryFn"),enabled:o?.queryOptions?.enabled,select:r(({data:u})=>{let c=u?.data||{};if(o&&o.jsfModify){let{schema:y}=d(c,o.jsfModify);c=y}let B=N(c.properties||{},"money").reduce((y,F)=>(y[F]=C(e[F]),y),{}),Q=JSON.parse(JSON.stringify({...e,...B}));return{meta:{"x-jsf-fieldsets":c["x-jsf-fieldsets"]},...h(c,{initialValues:Q})}},"select")})},"useJSONSchemaForm"),ie=r((t,n,e)=>{let o=e?.jsonSchemaVersion?.benefit_offers_form_schema?{json_schema_version:e.jsonSchemaVersion.benefit_offers_form_schema}:{},{client:s}=a();return f({queryKey:["benefit-offers-schema",t],retry:!1,enabled:!!t,queryFn:r(async()=>{let i=await O({client:s,path:{employment_id:t},query:o});if(i.error||!i.data)throw new Error("Failed to fetch benefit offers schema");return i},"queryFn"),select:r(({data:i})=>{let l=i?.data?.schema||{};if(e&&e.jsfModify?.benefits){let{schema:c}=d(l,e.jsfModify.benefits);l=c}let p=Object.keys(n).length>0;return h(l,{initialValues:p?{...n}:{}})},"select")})},"useBenefitOffersSchema"),le=r(()=>{let{client:t}=a(),n={json_schema_version:1};return m({mutationFn:r(e=>_({client:t,headers:{Authorization:""},body:e,query:{...n}}),"mutationFn")})},"useCreateEmployment"),ce=r((t,n)=>{let{client:e}=a(),o={employment_basic_information_json_schema_version:1,contract_details_json_schema_version:J(n,t)||1};return m({mutationFn:r(({employmentId:s,...i})=>q({client:e,headers:{Authorization:""},body:i,path:{employment_id:s},query:{skip_benefits:!0,...o}}),"mutationFn")})},"useUpdateEmployment"),me=r(t=>{let{client:n}=a();return m({mutationFn:r(({employmentId:e,...o})=>{let s=t?.jsonSchemaVersion?.benefit_offers_form_schema?{json_schema_version:t.jsonSchemaVersion.benefit_offers_form_schema}:{};return S({client:n,body:o,path:{employment_id:e},query:{...s}})},"mutationFn")})},"useUpdateBenefitsOffers"),z=r(t=>{let{client:n}=a();return f({...t,queryKey:["countries"],retry:!1,queryFn:r(async()=>{let e=await P({client:n,headers:{Authorization:""}});if(e.error||!e.data)throw new Error("Failed to fetch supported countries");return e},"queryFn"),select:r(({data:e})=>e?.data?.filter(o=>o.eor_onboarding).map(o=>({label:o.name,value:o.code}))||[],"select")})},"useCountries"),ue=r(t=>{let{data:n,isLoading:e}=z(t?.queryOptions),{schema:o}=d(V.data.schema,t?.jsfModify||{}),s=h(o);if(n){let i=s.fields.find(l=>l.name==="country");i&&(i.options=n)}return{isLoading:e,selectCountryForm:s}},"useCountriesSchemaField"),fe=r(({type:t="spread"})=>{let{client:n}=a();return m({mutationFn:r(e=>(t==="no_spread"?b:R)({client:n,body:e}),"mutationFn")})},"useConvertCurrency"),ye=r(()=>{let{client:t}=a();return m({mutationFn:r(({employmentId:n,...e})=>x({client:t,path:{employment_id:n},body:e}),"mutationFn")})},"useUpsertContractEligibility");export{te as a,re as b,ne as c,oe as d,se as e,ae as f,ie as g,le as h,ce as i,me as j,ue as k,fe as l,ye as m};
2
- //# sourceMappingURL=chunk-23OYALRY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/api.ts"],"sourcesContent":["import {\n modify,\n createHeadlessForm,\n} from '@remoteoss/remote-json-schema-form-kit';\nimport { 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 EmploymentFullParams,\n getIndexBenefitOffer,\n getShowCompany,\n getShowEmployment,\n getShowFormCountry,\n getShowSchema,\n getSupportedCountry,\n patchUpdateEmployment2,\n postConvertRawCurrencyConverter,\n postConvertWithSpreadCurrencyConverter,\n postCreateContractEligibility,\n postCreateEmployment2,\n postCreateRiskReserve,\n postInviteEmploymentInvitation,\n PostInviteEmploymentInvitationData,\n putUpdateBenefitOffer,\n UnifiedEmploymentUpsertBenefitOffersRequest,\n} from '@/src/client';\n\nimport { convertToCents } from '@/src/components/form/utils';\nimport { useClient } from '@/src/context';\nimport { selectCountryStepSchema } from '@/src/flows/Onboarding/json-schemas/selectCountryStep';\nimport { OnboardingFlowProps } from '@/src/flows/Onboarding/types';\nimport {\n JSONSchemaFormResultWithFieldsets,\n JSONSchemaFormType,\n NextFlowOptions,\n} from '@/src/flows/types';\nimport { findFieldsByType } from '@/src/flows/utils';\nimport { JSFFieldset } from '@/src/types/remoteFlows';\nimport { getContractDetailsSchemaVersion } from '@/src/flows/Onboarding/utils';\n\nexport const useEmployment = (employmentId: string | undefined) => {\n const { client } = useClient();\n\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n enabled: !!employmentId,\n select: ({ data }) => {\n return data?.data.employment;\n },\n queryFn: async () => {\n const response = await getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\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 employment data');\n }\n\n return response;\n },\n });\n};\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 getShowCompany({\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 getIndexBenefitOffer({\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/**\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: PostInviteEmploymentInvitationData['path']) => {\n return postInviteEmploymentInvitation({\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 postCreateRiskReserve({\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?: NextFlowOptions & { queryOptions?: { enabled?: boolean } };\n query?: Record<string, unknown>;\n jsonSchemaVersion?: number;\n}): UseQueryResult<JSONSchemaFormResultWithFieldsets> => {\n const { client } = useClient();\n const jsonSchemaQueryParam = jsonSchemaVersion\n ? {\n json_schema_version: jsonSchemaVersion,\n }\n : {};\n return useQuery({\n queryKey: ['onboarding-json-schema-form', countryCode, form],\n retry: false,\n queryFn: async () => {\n const response = await getShowFormCountry({\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 let jsfSchema = data?.data || {};\n if (options && options.jsfModify) {\n const { schema } = modify(jsfSchema, options.jsfModify);\n jsfSchema = schema;\n }\n\n // Contract details contains x-jsf-logic that need to be calculated every time a form value changes\n // In particular there are calculations involving the annual_gross_salary field. However this field value doesn't get\n // here in cents. So we need to convert the money fields to cents, so that the calculations are correct.\n const moneyFields = findFieldsByType(jsfSchema.properties || {}, 'money');\n const moneyFieldsData = moneyFields.reduce<Record<string, number | null>>(\n (acc, field) => {\n acc[field] = convertToCents(fieldValues[field]);\n return acc;\n },\n {},\n );\n\n const initialValues = JSON.parse(\n JSON.stringify({\n ...fieldValues,\n ...moneyFieldsData,\n }),\n );\n\n return {\n meta: {\n 'x-jsf-fieldsets': jsfSchema['x-jsf-fieldsets'] as JSFFieldset,\n },\n ...createHeadlessForm(jsfSchema, {\n initialValues,\n }),\n };\n },\n });\n};\n\nexport const useBenefitOffersSchema = (\n employmentId: string,\n fieldValues: FieldValues,\n options: OnboardingFlowProps['options'],\n) => {\n const jsonSchemaQueryParam = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers-schema', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n const response = await getShowSchema({\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 let jsfSchema = data?.data?.schema || {};\n\n if (options && options.jsfModify?.benefits) {\n const { schema } = modify(jsfSchema, options.jsfModify.benefits);\n jsfSchema = schema;\n }\n const hasFieldValues = Object.keys(fieldValues).length > 0;\n const result = createHeadlessForm(jsfSchema, {\n // we need to clone the fieldValues to prevent side effects\n // if we don't do this, the benefits get included in the other steps\n initialValues: hasFieldValues ? { ...fieldValues } : {},\n });\n return result;\n },\n });\n};\n\n/**\n * Use this hook to create an employment\n * @returns\n */\nexport const useCreateEmployment = () => {\n const { client } = useClient();\n // TODO: setting 1 as basic_information only supports v1 for now in the API\n const jsonSchemaQueryParam = {\n json_schema_version: 1,\n };\n return useMutation({\n mutationFn: (payload: EmploymentCreateParams) => {\n return postCreateEmployment2({\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 // TODO: setting 1 as basic_information only supports v1 for now in the API\n employment_basic_information_json_schema_version: 1,\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 patchUpdateEmployment2({\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 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 = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n return putUpdateBenefitOffer({\n client: client as Client,\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nconst useCountries = (queryOptions?: { enabled?: boolean }) => {\n const { client } = useClient();\n return useQuery({\n ...queryOptions,\n queryKey: ['countries'],\n retry: false,\n queryFn: async () => {\n const response = await getSupportedCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\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 supported countries');\n }\n\n return response;\n },\n select: ({ data }) => {\n return (\n 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 });\n};\n\nexport const useCountriesSchemaField = (\n options?: Omit<NextFlowOptions, 'jsonSchemaVersion'> & {\n queryOptions?: { enabled?: boolean };\n },\n) => {\n const { data: countries, isLoading } = useCountries(options?.queryOptions);\n\n const { schema: selectCountrySchema } = modify(\n selectCountryStepSchema.data.schema,\n options?.jsfModify || {},\n );\n\n const selectCountryForm = createHeadlessForm(selectCountrySchema);\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 ? postConvertRawCurrencyConverter\n : postConvertWithSpreadCurrencyConverter;\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 postCreateContractEligibility({\n client: client as Client,\n path: {\n employment_id: employmentId,\n },\n body: payload,\n });\n },\n });\n};\n"],"mappings":"mXAAA,OACE,UAAAA,EACA,sBAAAC,MACK,yCACP,OAAS,eAAAC,EAAa,YAAAC,MAAgC,wBAuC/C,IAAMC,GAAgBC,EAACC,GAAqC,CACjE,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAU,EAE7B,OAAOC,EAAS,CACd,SAAU,CAAC,aAAcH,CAAY,EACrC,MAAO,GACP,QAAS,CAAC,CAACA,EACX,OAAQD,EAAA,CAAC,CAAE,KAAAK,CAAK,IACPA,GAAM,KAAK,WADZ,UAGR,QAASL,EAAA,SAAY,CACnB,IAAMM,EAAW,MAAMC,EAAkB,CACvC,OAAQL,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAM,CACJ,cAAeD,CACjB,CACF,CAAC,EAGD,GAAIK,EAAS,OAAS,CAACA,EAAS,KAC9B,MAAM,IAAI,MAAM,iCAAiC,EAGnD,OAAOA,CACT,EAjBS,UAkBX,CAAC,CACH,EA7B6B,iBA+BhBE,GAAaR,EAACS,GAAsB,CAC/C,GAAM,CAAE,OAAAP,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,SAAU,CAAC,UAAWK,CAAS,EAC/B,MAAO,GACP,QAAS,CAAC,CAACA,EACX,QAAST,EAAA,SAAY,CACnB,IAAMM,EAAW,MAAMI,EAAe,CACpC,OAAQR,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAM,CACJ,WAAYO,CACd,CACF,CAAC,EAED,GAAIH,EAAS,OAAS,CAACA,EAAS,KAC9B,MAAM,IAAI,MAAM,iCAAiC,EAGnD,OAAOA,CACT,EAhBS,WAiBT,OAAQN,EAAA,CAAC,CAAE,KAAAK,CAAK,IACPA,EAAK,KAAK,QADX,SAGV,CAAC,CACH,EA3B0B,cA6BbM,GAAmBX,EAACC,GAAqC,CACpE,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,SAAU,CAAC,iBAAkBH,CAAY,EACzC,MAAO,GACP,QAAS,CAAC,CAACA,EACX,QAASD,EAAA,SACAY,EAAqB,CAC1B,OAAQV,EACR,KAAM,CACJ,cAAeD,CACjB,CACF,CAAC,EAAE,KAAMK,GAAa,CAEpB,GAAIA,EAAS,OAAS,CAACA,EAAS,KAC9B,MAAM,IAAI,MAAM,qCAAqC,EAGvD,OAAOA,CACT,CAAC,EAbM,WAeT,OAAQN,EAAA,CAAC,CAAE,KAAAK,CAAK,IACdA,GAAM,MAAM,OACV,CAACQ,EAAKC,KACG,CACL,GAAGD,EACH,CAACC,EAAK,cAAc,IAAI,EAAG,CACzB,MAAOA,EAAK,cAAc,MAAQ,KAClC,GAAIA,EAAK,eAAe,QAAQ,KAC5B,CAAE,OAAQA,EAAK,eAAe,QAAQ,IAAK,EAC3C,CAAC,CACP,CACF,GAEF,CAAC,CACH,EAdM,SAeV,CAAC,CACH,EArCgC,oBA0CnBC,GAAsBf,EAAA,IAAM,CACvC,GAAM,CAAE,OAAAE,CAAO,EAAIC,EAAU,EAE7B,OAAOa,EAAY,CACjB,WAAYhB,EAACiB,GACJC,EAA+B,CACpC,OAAQhB,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAMe,CACR,CAAC,EAPS,aASd,CAAC,CACH,EAdmC,uBAgBtBE,GAA0BnB,EAAA,IAAM,CAC3C,GAAM,CAAE,OAAAE,CAAO,EAAIC,EAAU,EAC7B,OAAOa,EAAY,CACjB,WAAYhB,EAACiB,GACJG,EAAsB,CAC3B,OAAQlB,EACR,KAAMe,CACR,CAAC,EAJS,aAMd,CAAC,CACH,EAVuC,2BAiB1BI,GAAoBrB,EAAA,CAAC,CAChC,YAAAsB,EACA,KAAAC,EACA,YAAAC,EACA,QAAAC,EACA,MAAAC,EAAQ,CAAC,EACT,kBAAAC,CACF,IAOyD,CACvD,GAAM,CAAE,OAAAzB,CAAO,EAAIC,EAAU,EACvByB,EAAuBD,EACzB,CACE,oBAAqBA,CACvB,EACA,CAAC,EACL,OAAOvB,EAAS,CACd,SAAU,CAAC,8BAA+BkB,EAAaC,CAAI,EAC3D,MAAO,GACP,QAASvB,EAAA,SAAY,CACnB,IAAMM,EAAW,MAAMuB,EAAmB,CACxC,OAAQ3B,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAM,CACJ,aAAcoB,EACd,KAAMC,CACR,EACA,MAAO,CACL,cAAe,GACf,GAAGG,EACH,GAAGE,CACL,CACF,CAAC,EAGD,GAAItB,EAAS,OAAS,CAACA,EAAS,KAC9B,MAAM,IAAI,MAAM,mCAAmC,EAGrD,OAAOA,CACT,EAvBS,WAwBT,QAASmB,GAAS,cAAc,QAChC,OAAQzB,EAAA,CAAC,CAAE,KAAAK,CAAK,IAAM,CACpB,IAAIyB,EAAYzB,GAAM,MAAQ,CAAC,EAC/B,GAAIoB,GAAWA,EAAQ,UAAW,CAChC,GAAM,CAAE,OAAAM,CAAO,EAAIC,EAAOF,EAAWL,EAAQ,SAAS,EACtDK,EAAYC,CACd,CAMA,IAAME,EADcC,EAAiBJ,EAAU,YAAc,CAAC,EAAG,OAAO,EACpC,OAClC,CAACjB,EAAKsB,KACJtB,EAAIsB,CAAK,EAAIC,EAAeZ,EAAYW,CAAK,CAAC,EACvCtB,GAET,CAAC,CACH,EAEMwB,EAAgB,KAAK,MACzB,KAAK,UAAU,CACb,GAAGb,EACH,GAAGS,CACL,CAAC,CACH,EAEA,MAAO,CACL,KAAM,CACJ,kBAAmBH,EAAU,iBAAiB,CAChD,EACA,GAAGQ,EAAmBR,EAAW,CAC/B,cAAAO,CACF,CAAC,CACH,CACF,EAlCQ,SAmCV,CAAC,CACH,EArFiC,qBAuFpBE,GAAyBvC,EAAA,CACpCC,EACAuB,EACAC,IACG,CACH,IAAMG,EAAuBH,GAAS,mBAClC,2BACA,CACE,oBACEA,EAAQ,kBAAkB,0BAC9B,EACA,CAAC,EACC,CAAE,OAAAvB,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,SAAU,CAAC,wBAAyBH,CAAY,EAChD,MAAO,GACP,QAAS,CAAC,CAACA,EACX,QAASD,EAAA,SAAY,CACnB,IAAMM,EAAW,MAAMkC,EAAc,CACnC,OAAQtC,EACR,KAAM,CACJ,cAAeD,CACjB,EACA,MAAO2B,CACT,CAAC,EAGD,GAAItB,EAAS,OAAS,CAACA,EAAS,KAC9B,MAAM,IAAI,MAAM,uCAAuC,EAGzD,OAAOA,CACT,EAfS,WAgBT,OAAQN,EAAA,CAAC,CAAE,KAAAK,CAAK,IAAM,CACpB,IAAIyB,EAAYzB,GAAM,MAAM,QAAU,CAAC,EAEvC,GAAIoB,GAAWA,EAAQ,WAAW,SAAU,CAC1C,GAAM,CAAE,OAAAM,CAAO,EAAIC,EAAOF,EAAWL,EAAQ,UAAU,QAAQ,EAC/DK,EAAYC,CACd,CACA,IAAMU,EAAiB,OAAO,KAAKjB,CAAW,EAAE,OAAS,EAMzD,OALec,EAAmBR,EAAW,CAG3C,cAAeW,EAAiB,CAAE,GAAGjB,CAAY,EAAI,CAAC,CACxD,CAAC,CAEH,EAdQ,SAeV,CAAC,CACH,EAjDsC,0BAuDzBkB,GAAsB1C,EAAA,IAAM,CACvC,GAAM,CAAE,OAAAE,CAAO,EAAIC,EAAU,EAEvByB,EAAuB,CAC3B,oBAAqB,CACvB,EACA,OAAOZ,EAAY,CACjB,WAAYhB,EAACiB,GACJ0B,EAAsB,CAC3B,OAAQzC,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAMe,EACN,MAAO,CACL,GAAGW,CACL,CACF,CAAC,EAVS,aAYd,CAAC,CACH,EApBmC,uBAsBtBgB,GAAsB5C,EAAA,CACjCsB,EACAG,IACG,CACH,GAAM,CAAE,OAAAvB,CAAO,EAAIC,EAAU,EACvB0C,EAAwB,CAE5B,iDAAkD,EAClD,qCACEC,EAAgCrB,EAASH,CAAW,GAAK,CAC7D,EAEA,OAAON,EAAY,CACjB,WAAYhB,EAAA,CAAC,CACX,aAAAC,EACA,GAAGgB,CACL,IACS8B,EAAuB,CAC5B,OAAQ7C,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAMe,EACN,KAAM,CACJ,cAAehB,CACjB,EACA,MAAO,CACL,cAAe,GACf,GAAG4C,CACL,CACF,CAAC,EAjBS,aAmBd,CAAC,CACH,EAjCmC,uBAmCtBG,GAA0BhD,EACrCyB,GACG,CACH,GAAM,CAAE,OAAAvB,CAAO,EAAIC,EAAU,EAC7B,OAAOa,EAAY,CACjB,WAAYhB,EAAA,CAAC,CACX,aAAAC,EACA,GAAGgB,CACL,IAEM,CACJ,IAAMW,EAAuBH,GAAS,mBAClC,2BACA,CACE,oBACEA,EAAQ,kBAAkB,0BAC9B,EACA,CAAC,EACL,OAAOwB,EAAsB,CAC3B,OAAQ/C,EACR,KAAMe,EACN,KAAM,CACJ,cAAehB,CACjB,EACA,MAAO,CACL,GAAG2B,CACL,CACF,CAAC,CACH,EAvBY,aAwBd,CAAC,CACH,EA9BuC,2BAgCjCsB,EAAelD,EAACmD,GAAyC,CAC7D,GAAM,CAAE,OAAAjD,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,GAAG+C,EACH,SAAU,CAAC,WAAW,EACtB,MAAO,GACP,QAASnD,EAAA,SAAY,CACnB,IAAMM,EAAW,MAAM8C,EAAoB,CACzC,OAAQlD,EACR,QAAS,CACP,cAAe,EACjB,CACF,CAAC,EAGD,GAAII,EAAS,OAAS,CAACA,EAAS,KAC9B,MAAM,IAAI,MAAM,qCAAqC,EAGvD,OAAOA,CACT,EAdS,WAeT,OAAQN,EAAA,CAAC,CAAE,KAAAK,CAAK,IAEZA,GAAM,MACF,OAAQgD,GAAYA,EAAQ,cAAc,EAC3C,IAAKA,IACG,CACL,MAAOA,EAAQ,KACf,MAAOA,EAAQ,IACjB,EACD,GAAK,CAAC,EATL,SAYV,CAAC,CACH,EAlCqB,gBAoCRC,GAA0BtD,EACrCyB,GAGG,CACH,GAAM,CAAE,KAAM8B,EAAW,UAAAC,CAAU,EAAIN,EAAazB,GAAS,YAAY,EAEnE,CAAE,OAAQgC,CAAoB,EAAIzB,EACtC0B,EAAwB,KAAK,OAC7BjC,GAAS,WAAa,CAAC,CACzB,EAEMkC,EAAoBrB,EAAmBmB,CAAmB,EAEhE,GAAIF,EAAW,CACb,IAAMK,EAAeD,EAAkB,OAAO,KAC3CxB,GAAUA,EAAM,OAAS,SAC5B,EACIyB,IACFA,EAAa,QAAUL,EAE3B,CAEA,MAAO,CACL,UAAAC,EACA,kBAAAG,CACF,CACF,EA3BuC,2BA6B1BE,GAAqB7D,EAAA,CAAC,CACjC,KAAA8D,EAAO,QACT,IAEM,CACJ,GAAM,CAAE,OAAA5D,CAAO,EAAIC,EAAU,EAC7B,OAAOa,EAAY,CACjB,WAAYhB,EAACiB,IAET6C,IAAS,YACLC,EACAC,GACO,CACX,OAAQ9D,EACR,KAAMe,CACR,CAAC,EARS,aAUd,CAAC,CACH,EAlBkC,sBAoBrBgD,GAA+BjE,EAAA,IAAM,CAChD,GAAM,CAAE,OAAAE,CAAO,EAAIC,EAAU,EAC7B,OAAOa,EAAY,CACjB,WAAYhB,EAAA,CAAC,CACX,aAAAC,EACA,GAAGgB,CACL,IACSiD,EAA8B,CACnC,OAAQhE,EACR,KAAM,CACJ,cAAeD,CACjB,EACA,KAAMgB,CACR,CAAC,EAVS,aAYd,CAAC,CACH,EAhB4C","names":["modify","createHeadlessForm","useMutation","useQuery","useEmployment","__name","employmentId","client","useClient","useQuery","data","response","getShowEmployment","useCompany","companyId","getShowCompany","useBenefitOffers","getIndexBenefitOffer","acc","item","useEmploymentInvite","useMutation","payload","postInviteEmploymentInvitation","useCreateReserveInvoice","postCreateRiskReserve","useJSONSchemaForm","countryCode","form","fieldValues","options","query","jsonSchemaVersion","jsonSchemaQueryParam","getShowFormCountry","jsfSchema","schema","modify","moneyFieldsData","findFieldsByType","field","convertToCents","initialValues","createHeadlessForm","useBenefitOffersSchema","getShowSchema","hasFieldValues","useCreateEmployment","postCreateEmployment2","useUpdateEmployment","jsonSchemaQueryParams","getContractDetailsSchemaVersion","patchUpdateEmployment2","useUpdateBenefitsOffers","putUpdateBenefitOffer","useCountries","queryOptions","getSupportedCountry","country","useCountriesSchemaField","countries","isLoading","selectCountrySchema","selectCountryStepSchema","selectCountryForm","countryField","useConvertCurrency","type","postConvertRawCurrencyConverter","postConvertWithSpreadCurrencyConverter","useUpsertContractEligibility","postCreateContractEligibility"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/files.ts","../src/components/form/utils.ts"],"sourcesContent":["const toBase64 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n};\n\nexport const convertFilesToBase64 = async (files: File[]) => {\n const base64Files = await Promise.all(\n files.map(async (file) => {\n const base64 = await toBase64(file);\n return {\n ...file,\n name: file.name,\n size: file.size,\n type: file.type,\n content: base64.split(',')[1],\n };\n }),\n );\n return base64Files;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Field } from '@/src/flows/types';\nimport { $TSFixMe, Fields } from '@remoteoss/json-schema-form-old';\nimport { convertFilesToBase64 } from '@/src/lib/files';\nimport { addBusinessDays, isWeekend, nextMonday } from 'date-fns';\nimport get from 'lodash.get';\n\nconst textInputTypes = {\n TEXT: 'text',\n TEXTAREA: 'textarea',\n NUMBER: 'number',\n SELECT: 'select',\n COUNTRIES: 'countries',\n TEL: 'tel',\n EMAIL: 'email',\n MONEY: 'money',\n DATE: 'date',\n DATE_RANGE: 'date-range',\n CURRENCIES: 'currencies',\n TIME: 'time',\n} as const;\n\nconst checkboxTypes = {\n CHECKBOX: 'checkbox',\n ACK_CHECK: 'ack-check',\n} as const;\n\nconst supportedTypes = {\n FILE: 'file',\n RADIO: 'radio',\n /** @deprecated */\n RADIO_CARD: 'radio-card',\n GROUP_ARRAY: 'group-array',\n EXTRA: 'extra',\n STATEMENT: 'statement',\n HIDDEN: 'hidden',\n FIELDSET: 'fieldset',\n FIELDSET_FLAT: 'fieldset-flat',\n WORK_SCHEDULE: 'work-schedule',\n WORK_WEEK_SCHEDULE: 'work-week-schedule',\n /** @deprecated we still display benefits in read-only contract details view, but never in any form */\n BENEFITS: 'benefits',\n SIGNATURE: 'signature',\n SELECT_MULTIPLE: 'select-multiple',\n ...textInputTypes,\n ...checkboxTypes,\n} as const;\n\nfunction round(value: number): number {\n return Math.round((value + Number.EPSILON) * 100) / 100;\n}\n\nfunction convertToValidCost(value: string) {\n return parseFloat(value.replace(/,/g, ''));\n}\n\nexport function convertToCents(\n amount?: number | string | string[] | null | boolean,\n) {\n if (\n amount == null ||\n amount === '' ||\n Number.isNaN(amount) ||\n Array.isArray(amount) ||\n typeof amount === 'boolean'\n ) {\n return null;\n }\n\n let validAmount: number;\n\n if (typeof amount === 'string') {\n validAmount = convertToValidCost(amount);\n } else {\n validAmount = amount;\n }\n\n return round(validAmount * 100);\n}\n\nexport function convertFromCents(amount?: number | string | null) {\n if (amount == null || Number.isNaN(amount)) return null;\n\n let normalizedValue: number;\n\n if (typeof amount === 'string') {\n normalizedValue = convertToValidCost(amount || '0');\n } else {\n normalizedValue = amount;\n }\n\n return round(normalizedValue / 100);\n}\n\nconst trimStringValues = (values: Record<string, any>) =>\n Object.entries(values || {}).reduce<Record<string, any>>(\n (result, [key, value]) => {\n if (Array.isArray(value)) {\n // If the value is an array, recursively process each element\n result[key] = value.map((item) =>\n typeof item === 'object' && item !== null\n ? trimStringValues(item)\n : typeof item === 'string'\n ? item.trim()\n : item,\n );\n } else if (typeof value === 'object' && value !== null) {\n // If the value is an object, recursively process it\n result[key] = trimStringValues(value);\n } else {\n // Otherwise, trim the string or keep the value as is\n result[key] = typeof value === 'string' ? value.trim() : value;\n }\n return result;\n },\n {},\n );\n\n/**\n * Given a list of form values, modify the ones that are readOnly,\n * based on their field config, by adding its defaultValue.\n * This is needed to support readOnly fields that are also conditional\n * based on the \"pivotName\" workaround.\n * @param {Object} values - List with form values { name: value }.\n * @param {Array} fields - Respective form fields configuration.\n */\nfunction prefillReadOnlyFields(values: Record<string, any>, fields: any[]) {\n const newValues: Record<string, any> = {};\n\n fields.forEach((field) => {\n const fieldName = field.name;\n\n if (\n !Object.prototype.hasOwnProperty.call(values, fieldName!) &&\n !(\n field.inputType === supportedTypes.FIELDSET &&\n field.valueGroupingDisabled\n )\n )\n return;\n\n if (\n field.inputType === supportedTypes.FIELDSET &&\n field.valueGroupingDisabled\n ) {\n Object.assign(newValues, prefillReadOnlyFields(values, field.fields));\n return;\n }\n\n if (field.readOnly && field.defaultValue) {\n newValues[fieldName!] = field.defaultValue;\n } else {\n newValues[fieldName!] = values[fieldName!];\n }\n });\n\n return newValues;\n}\n/**\n * Recursively extracts fieldsets' fields values and maps them to the field name\n * For nested fields that are fieldsets with valueGroupingDisabled, the values\n * are extracted one level up\n *\n * @param {Array} fields - Fieldset fields configuration.\n * @param {Object} formValues - List with form values { name: value }.\n * @return {Object} – Raw form values mapped to the field name\n */\nfunction extractFieldsetFieldsValues(\n fields: any[],\n formValues: Record<string, unknown>,\n) {\n return fields.reduce<Record<string, any>>((nestedAcc, subField) => {\n const isFieldsetValueGroupingDisabled =\n subField.inputType === supportedTypes.FIELDSET &&\n subField.valueGroupingDisabled;\n\n if (isFieldsetValueGroupingDisabled) {\n Object.assign(\n nestedAcc,\n extractFieldsetFieldsValues(subField.fields, formValues),\n );\n } else if (\n Object.prototype.hasOwnProperty.call(formValues, subField.name!)\n ) {\n nestedAcc[subField.name!] = formValues[subField.name!];\n }\n\n return nestedAcc;\n }, {});\n}\n\nexport const fieldTypesTransformations: Record<string, any> = {\n [supportedTypes.COUNTRIES]: {\n /**\n * @param {String[] | { name: String }[]} value\n * - Excepted: array of strings.\n * - Edge cases: array of objects. (when using dangerousTransformValue)\n * @returns {String[]} - List of countries\n * @example expected: ['Peru', 'Germany'] -> ['Peru', 'Germany']\n * @example edge cases: [{name: 'Peru'}, {name: 'Germany'}] -> ['Peru', 'Germany']\n */\n transformValueToAPI:\n (field: any) => (selectedCountries: string[] | { name: string }[]) => {\n if (!field.multiple || typeof selectedCountries === 'string') {\n return selectedCountries;\n }\n // NOTE: The value should be an array of strings, however legacy data can come as\n // an array of country objects. So, we always send an array of strings to normalize\n // the data (eg old form values being modified) until DB migration is done !5667\n return selectedCountries.map((option) =>\n typeof option === 'string' ? option : option.name,\n );\n },\n /**\n * Used for react-select, where the country selected is transformed\n * before saving on Formik state. Supports both solo and multi select\n * @param {Object|Object[]} selectedCountry[] - Current selected options\n * @param {String} selectedCountry[].value\n * @param {String} selectedCountry[].name\n * @param {String} selectedCountry[].label\n * @returns {String[]} - List of countries selected\n * @example\n * [{ value: 'Hungria' }] -> ['Hungria']\n */\n transformValue: (selectedCountry: any | any[]) => {\n // name or label are used in dragon. value is used in json-schema-form\n // TODO: it should be the same everywhere — read more at !5667\n const getCountryValue = (opt: any) =>\n opt?.name || opt?.value || opt?.label;\n return Array.isArray(selectedCountry)\n ? selectedCountry.map(getCountryValue) // support multi countries\n : getCountryValue(selectedCountry) || ''; // Fallback to '' in case user removes all countries\n },\n },\n [supportedTypes.NUMBER]: {\n transformValueToAPI: () => (value: string) => {\n // this prevents values with letters such as \"2r\" from being considered valid\n // if the input is invalid, number().cast will return NaN\n const castValue = Number(value);\n\n if (Number.isNaN(castValue)) {\n return value;\n }\n\n return castValue;\n },\n },\n [supportedTypes.MONEY]: {\n transformValueFromAPI: () => (value: string | number) =>\n convertFromCents(value) ?? '',\n transformValueToAPI: () => convertToCents,\n },\n [supportedTypes.RADIO]: {\n transformValueToAPI: (field: any) => (value: string) => {\n if (field.transformToBool) {\n return value === 'yes';\n }\n return value;\n },\n },\n [supportedTypes.CHECKBOX]: {\n transformValueToAPI: (field: any) => (value: string | boolean) => {\n if (value === undefined) {\n return false;\n }\n\n if (field.const && value === true) {\n return field.const;\n }\n return value;\n },\n },\n [supportedTypes.SELECT]: {\n /**\n * Used for react-select, where the value is transformed\n * before saving on Formik state.\n * @param {Object | Object[]} option - Object structure with options config\n * @param {String} option[].value - Key for the API\n * @param {Array} this.options[].label - Friendly label\n * @example\n * [{ value: '1', label: 'One' }, { value: '2', label: 'Two' }] -> [\"One\", \"Two\"]\n * { value: '1', label: 'One' } -> \"One\"\n * {} -> \"\"\n */\n transformValue: (option: any | any[]) =>\n Array.isArray(option)\n ? option.map((opt) => opt.value) // multi-options\n : (option?.value ?? ''), // Fallback to '' in case user removes all options,\n },\n [supportedTypes.FILE]: {\n transformValueToAPI: () => async (files: File[]) => {\n if (!files) {\n return null;\n }\n\n return await convertFilesToBase64(files);\n },\n },\n};\nexport async function parseFormValuesToAPI(\n formValues: Record<string, any> = {},\n fields: any[],\n) {\n const filteredFields = fields.filter(\n (field) =>\n formValues[field.name!] ||\n (field.inputType === supportedTypes.FIELDSET &&\n field.valueGroupingDisabled),\n );\n\n const parsedFieldsWithValues = await Promise.all(\n filteredFields.map(async (field) => {\n const acc: Record<string, any> = {};\n\n switch (field.inputType) {\n case supportedTypes.FIELDSET: {\n const fieldset = field;\n if (fieldset.valueGroupingDisabled) {\n const nestedFormValues = extractFieldsetFieldsValues(\n fieldset.fields,\n formValues,\n );\n\n Object.assign(\n acc,\n await parseFormValuesToAPI(nestedFormValues, fieldset.fields),\n );\n } else {\n const fieldsetValue = formValues[field.name!];\n\n // Filter out empty properties from fieldset objects\n // this code avoids sending department: {id: '1234', name: ''} or even department: {id: undefined, name: undefined}\n if (\n fieldsetValue &&\n typeof fieldsetValue === 'object' &&\n !Array.isArray(fieldsetValue)\n ) {\n const cleanedValue = Object.fromEntries(\n Object.entries(fieldsetValue).filter(([, value]) => {\n // Keep the property if it has a meaningful value\n return value !== '' && value !== null && value !== undefined;\n }),\n );\n\n acc[field.name!] =\n Object.keys(cleanedValue).length > 0\n ? await parseFormValuesToAPI(cleanedValue, fieldset.fields)\n : undefined;\n } else {\n acc[field.name!] = await parseFormValuesToAPI(\n fieldsetValue,\n fieldset.fields,\n );\n }\n }\n break;\n }\n\n case supportedTypes.TEXTAREA:\n case supportedTypes.TEXT:\n // Attempt to remove null bytes from form values - https://gitlab.com/remote-com/employ-starbase/tracker/-/issues/10670\n acc[field.name] = formValues[field.name].replace(/\\0/g, '');\n break;\n\n case supportedTypes.GROUP_ARRAY: {\n // NOTE: The field `name` in group arrays represents a path, but we only\n // need the last part of it which is represented by `nameKey`.\n const transformedFields = field?.fields?.().map((subField: any) => ({\n ...subField,\n name: subField.nameKey || '',\n }));\n\n const parsedFieldValues = await Promise.all(\n formValues[field.name]?.map((fieldValues: Record<string, any>) =>\n parseFormValuesToAPI(fieldValues, transformedFields),\n ) || [],\n );\n\n acc[field.name] = parsedFieldValues;\n break;\n }\n\n case supportedTypes.EXTRA: {\n const extraField = field;\n if (extraField.includeValueToApi !== false) {\n const formValue = formValues[extraField.name];\n const fieldTransformValueToAPI =\n extraField?.transformValueToAPI ||\n fieldTypesTransformations[extraField.inputType]\n ?.transformValueToAPI;\n\n if (fieldTransformValueToAPI) {\n const result = fieldTransformValueToAPI(field)(formValue);\n // Await if it's a promise\n acc[extraField.name] =\n result instanceof Promise ? await result : result;\n break;\n }\n\n acc[extraField.name] = formValue;\n break;\n }\n acc[extraField.name] = undefined;\n break;\n }\n\n default: {\n const formValue = formValues[field.name];\n const fieldTransformValueToAPI =\n field?.transformValueToAPI ||\n fieldTypesTransformations[field.inputType]?.transformValueToAPI;\n\n if (fieldTransformValueToAPI) {\n const result = fieldTransformValueToAPI(field)(formValue);\n // Await if it's a promise - THIS IS THE KEY FIX\n acc[field.name] = result instanceof Promise ? await result : result;\n break;\n }\n acc[field.name] = formValue;\n break;\n }\n }\n\n if (field.forcedValue !== undefined) {\n acc[field.name!] = field.forcedValue;\n }\n\n return acc;\n }),\n );\n\n // Merge all accumulated objects\n return parsedFieldsWithValues.reduce(\n (acc, current) => ({ ...acc, ...current }),\n { ...formValues },\n );\n}\n\nfunction isFieldVisible(field: any, formValues: Record<string, unknown>) {\n if (field.visibilityCondition) {\n return field.visibilityCondition(formValues);\n }\n\n if (typeof field.isVisible !== 'undefined') {\n return Boolean(field.isVisible);\n }\n\n return true;\n}\n\nfunction applyFieldDynamicProperties(\n field: any,\n values: Record<string, unknown> | Record<string, unknown>[],\n) {\n if (field.calculateDynamicProperties) {\n return {\n ...field,\n ...(field.calculateDynamicProperties(values) || {}),\n };\n }\n\n return field;\n}\n\nfunction excludeValuesInvisible(\n values: any,\n fields: any[],\n keepTruthyInvisibleValues?: boolean,\n parentFieldKeyPath?: string,\n) {\n const valuesAsked: Record<string, any> = {};\n\n fields\n .map((field) => applyFieldDynamicProperties(field, values))\n .forEach((field) => {\n let fieldKeyPath = field.name;\n if (parentFieldKeyPath) {\n fieldKeyPath = fieldKeyPath\n ? `${parentFieldKeyPath}.${field.name}`\n : parentFieldKeyPath;\n }\n\n const valueOfField = get(values, fieldKeyPath!);\n\n // keepTruthyInvisibleValues: false/undefined -> remove invisible field\n // keepTruthyInvisibleValues: true -> keep invisible field if it has a value\n if (\n !isFieldVisible(field, values) &&\n !(keepTruthyInvisibleValues && !!valueOfField)\n ) {\n return;\n }\n\n if (field.meta?.ignoreValue) {\n return;\n }\n\n if (field.inputType === 'fieldset' && field.valueGroupingDisabled) {\n Object.assign(\n valuesAsked,\n excludeValuesInvisible(\n values,\n field.fields,\n keepTruthyInvisibleValues,\n fieldKeyPath,\n ),\n );\n } else if (Array.isArray(field.fields)) {\n valuesAsked[field.name!] = excludeValuesInvisible(\n values,\n field.fields,\n keepTruthyInvisibleValues,\n fieldKeyPath,\n );\n } else {\n if (valueOfField === undefined) {\n return;\n }\n valuesAsked[field.name!] = valueOfField;\n }\n });\n\n return valuesAsked;\n}\n\nfunction removeEmptyValues<T extends Record<string, any>>(\n obj: T,\n): Record<string, any> {\n return Object.fromEntries(\n Object.entries(obj).filter(\n ([, value]) => value !== undefined && value !== null && value !== '',\n ),\n );\n}\n\nfunction cleanUnderscoreFields(obj: Record<string, any>): Record<string, any> {\n if (Array.isArray(obj)) {\n return obj.map(cleanUnderscoreFields);\n }\n if (obj && typeof obj === 'object') {\n return Object.entries(obj).reduce(\n (acc, [key, value]) => {\n if (!key.startsWith('_')) {\n acc[key] = cleanUnderscoreFields(value);\n }\n return acc;\n },\n {} as Record<string, any>,\n );\n }\n return obj;\n}\n\nexport async function parseSubmitValues(\n formValues: Record<string, any>,\n fields: any[],\n config?: { keepInvisibleValues?: boolean },\n) {\n const visibleFormValues = config?.keepInvisibleValues\n ? formValues\n : excludeValuesInvisible(formValues, fields);\n const convertedFormValues = await parseFormValuesToAPI(\n visibleFormValues,\n fields,\n );\n const formValuesWithTrimmedStrings = trimStringValues(convertedFormValues);\n\n const formValuesWithUndefined = removeEmptyValues(\n formValuesWithTrimmedStrings,\n );\n\n const valuesWithReadOnly = prefillReadOnlyFields(\n formValuesWithUndefined,\n fields,\n );\n return cleanUnderscoreFields(valuesWithReadOnly);\n}\n\nexport async function parseJSFToValidate(\n formValues: Record<string, any>,\n fields: Fields,\n config: { isPartialValidation: boolean } = {\n isPartialValidation: false,\n },\n) {\n const valuesParsed = await parseSubmitValues(formValues, fields, {\n /* We cannot exclude invisible fields (excludeValuesInvisible) because\n they are needed for conditional fields validations */\n keepInvisibleValues: config?.isPartialValidation,\n });\n return valuesParsed;\n}\n\nfunction castFieldTo<T>(field: Field) {\n return field as unknown as T;\n}\n\nfunction getDefaultValueForType(type: string) {\n switch (type) {\n case supportedTypes.FILE:\n return undefined; // Allows fallback values in function declarations to be used\n default:\n return '';\n }\n}\n\nfunction getInitialDefaultValue(\n defaultValues: Record<string, any>,\n field: Field,\n) {\n // lodash get is needed because some values could be nested object, like billing address\n // use camelCase to support forms with fields in snake_case or kebab_case.\n const defaultFieldValue = get(defaultValues, field.name);\n const fieldTransformValueFromAPI =\n field?.transformValueFromAPI ||\n fieldTypesTransformations[field.inputType]?.transformValueFromAPI;\n\n if (fieldTransformValueFromAPI) {\n return fieldTransformValueFromAPI(field)(defaultFieldValue);\n }\n\n // TODO: We need to get rid of value as fn for json-schema. Related !5560\n const generatedValue =\n typeof field.value === 'function'\n ? field.value(defaultFieldValue, defaultValues)\n : null;\n\n // field.value is deprecated. should use \"default\" instead.\n const defaultValueDeprecated =\n typeof field.value !== 'function' ? field.value : null;\n const initialValueForCheckboxAsBool =\n castFieldTo<$TSFixMe>(field).checkboxValue === true\n ? defaultFieldValue || false\n : null;\n\n // nullish coalescing but excluding empty strings. (to support 0 (zero) as valid numbers)\n const excludeString = (val: any) => (val === '' ? undefined : val);\n\n return (\n excludeString(generatedValue) ??\n excludeString(defaultFieldValue) ??\n excludeString(defaultValueDeprecated) ??\n excludeString(field.default) ??\n initialValueForCheckboxAsBool ??\n getDefaultValueForType(field.inputType)\n );\n}\n\n/**\n * Get initial values for sub fields within fieldsets\n * @param {Object} field The form field\n * @param {Object} defaultValues The form default values\n * @param {String=} parentFieldKeyPath The path to the parent field using dot-notation\n * @returns {Object} The initial values for a fieldset\n */\nfunction getInitialSubFieldValues(\n field: $TSFixMe,\n defaultValues: Record<string, unknown>,\n parentFieldKeyPath?: string,\n) {\n const initialValue: Record<string, Record<string, unknown>> = {};\n\n let fieldKeyPath = field.name;\n\n if (parentFieldKeyPath) {\n fieldKeyPath = fieldKeyPath\n ? `${parentFieldKeyPath}.${fieldKeyPath}`\n : parentFieldKeyPath;\n }\n\n const subFields = field.fields;\n\n if (Array.isArray(subFields)) {\n const subFieldValues = {};\n\n subFields.forEach((subField) => {\n Object.assign(\n subFieldValues,\n getInitialSubFieldValues(subField, defaultValues, fieldKeyPath),\n );\n });\n\n if (\n field.inputType === supportedTypes.FIELDSET &&\n field.valueGroupingDisabled\n ) {\n Object.assign(initialValue, subFieldValues);\n } else {\n initialValue[field.name!] = subFieldValues;\n }\n } else {\n initialValue[field.name!] = getInitialDefaultValue(defaultValues, {\n ...field,\n // NOTE: To utilize the `get` function from `lodash` in `getInitialDefaultValue` correctly\n // we need to use the field path instead of just its name.\n name: fieldKeyPath,\n });\n }\n\n return initialValue;\n}\n\nexport function getInitialValues(\n fields: Fields,\n defaultValues: Record<string, unknown>,\n) {\n const initialValues: Record<string, unknown> = {};\n const defaultFieldValues = defaultValues;\n\n // loop over fields array\n // if prop does not exit in the initialValues object,\n // pluck off the name and value props and add it to the initialValues object;\n fields\n .map((field) => applyFieldDynamicProperties(field, defaultFieldValues))\n .forEach((field) => {\n switch (field.inputType) {\n case supportedTypes.FIELDSET: {\n if (field.valueGroupingDisabled) {\n Object.assign(\n initialValues,\n getInitialValues(field.fields, defaultFieldValues),\n );\n } else {\n const subFieldValues = getInitialSubFieldValues(\n field,\n defaultFieldValues,\n );\n Object.assign(initialValues, subFieldValues);\n }\n break;\n }\n default: {\n if (!initialValues[field.name]) {\n initialValues[field.name] = getInitialDefaultValue(\n defaultFieldValues,\n field,\n );\n }\n break;\n }\n }\n });\n\n return initialValues;\n}\n\n/**\n * Wraps fields listed in fieldsets with a fieldset field.\n * @param fields - Complete fields list.\n * @param fieldsets - fields list to be wrapped in a fieldset field.\n * @param values - Values for each field.\n * @returns The fields with the fieldsets wrapped.\n */\nexport function getFieldsWithFlatFieldsets({\n fields = [],\n fieldsets = {},\n values,\n}: {\n fields: any[];\n fieldsets: Record<string, { propertiesByName: string[]; title: string }>;\n values: Record<string, unknown>;\n}) {\n const flatFieldsetsKeys = Object.keys(fieldsets);\n\n if (!flatFieldsetsKeys?.length) {\n return fields;\n }\n\n const flatFieldsetsFieldNames = new Set(\n flatFieldsetsKeys.flatMap(\n (flatFieldsetKey) => fieldsets[flatFieldsetKey]?.propertiesByName ?? [],\n ),\n );\n\n const flatFieldsetsWithFields = flatFieldsetsKeys.map((flatFieldsetKey) => {\n const { propertiesByName: flatFieldsetFields = [], ...rest } =\n fieldsets[flatFieldsetKey];\n\n const childFields = flatFieldsetFields\n .map((name) => fields.find((f) => f.name === name))\n .filter((field): field is any => !!field);\n\n return {\n ...rest,\n name: flatFieldsetKey,\n type: 'fieldset-flat',\n inputType: 'fieldset-flat',\n fields: childFields,\n label: fieldsets[flatFieldsetKey].title,\n // Hide the fieldset if none of the children fields are visible.\n isVisible: childFields\n .map((childField) => applyFieldDynamicProperties(childField, values))\n .some((childField) => isFieldVisible(childField, values)),\n };\n });\n\n const sortedFields = flatFieldsetsWithFields.reduce((accumulator, field) => {\n const accumulatedFieldsSorted = [...accumulator];\n\n /**\n * We place the flat fieldset at the original position of its first field.\n * If no field is found, we move it to the end.\n */\n const fieldsetPosition = field.fields[0]\n ? accumulator.findIndex(\n (accumulatorItem) => accumulatorItem.name === field.fields[0].name,\n )\n : accumulator.length;\n\n accumulatedFieldsSorted.splice(\n fieldsetPosition,\n 0,\n field as unknown as any,\n );\n\n return accumulatedFieldsSorted;\n }, fields);\n\n const filteredFields = sortedFields.filter(\n (field) => !flatFieldsetsFieldNames.has(field.name!),\n );\n\n return filteredFields;\n}\n\nexport function enableAckFields(\n fields: Fields,\n values: Record<string, unknown>,\n) {\n let result = values;\n fields.forEach((field) => {\n if ('const' in field) {\n result = Object.fromEntries(\n Object.entries(values).map(([k, v]) => {\n if (k === field.name) {\n return [k, field.const];\n }\n return [k, v];\n }),\n );\n }\n });\n return result;\n}\n\n/**\n * Get the minimum start date for the onboarding process.\n * @param minOnBoardingTime\n * @returns Date\n */\nexport function getMinStartDate(minOnBoardingTime: number) {\n const today = new Date();\n\n // Make sure our base date is UTC and set the time to 00:00:00\n today.setDate(today.getUTCDate());\n today.setHours(0, 0, 0, 0);\n\n // The + 1 ensures you get the full preparation time before the employee can actually start working.\n // It's the difference between \"preparation completes on this day\" vs \"earliest possible start date after preparation\".\n const minDate = addBusinessDays(today, minOnBoardingTime + 1);\n return isWeekend(minDate) ? nextMonday(minDate) : minDate;\n}\n"],"mappings":"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","names":["toBase64","__name","file","resolve","reject","reader","error","convertFilesToBase64","files","base64","addBusinessDays","isWeekend","nextMonday","get","textInputTypes","checkboxTypes","supportedTypes","round","value","__name","convertToValidCost","convertToCents","amount","validAmount","convertFromCents","normalizedValue","trimStringValues","values","result","key","item","prefillReadOnlyFields","fields","newValues","field","fieldName","extractFieldsetFieldsValues","formValues","nestedAcc","subField","fieldTypesTransformations","selectedCountries","option","selectedCountry","getCountryValue","opt","castValue","files","convertFilesToBase64","parseFormValuesToAPI","filteredFields","acc","fieldset","nestedFormValues","fieldsetValue","cleanedValue","transformedFields","parsedFieldValues","fieldValues","extraField","formValue","fieldTransformValueToAPI","current","isFieldVisible","applyFieldDynamicProperties","excludeValuesInvisible","keepTruthyInvisibleValues","parentFieldKeyPath","valuesAsked","fieldKeyPath","valueOfField","get","removeEmptyValues","obj","cleanUnderscoreFields","parseSubmitValues","config","visibleFormValues","convertedFormValues","formValuesWithTrimmedStrings","formValuesWithUndefined","valuesWithReadOnly","parseJSFToValidate","getDefaultValueForType","type","supportedTypes","__name","getInitialDefaultValue","defaultValues","field","defaultFieldValue","get","fieldTransformValueFromAPI","fieldTypesTransformations","generatedValue","defaultValueDeprecated","initialValueForCheckboxAsBool","excludeString","val","getInitialSubFieldValues","parentFieldKeyPath","initialValue","fieldKeyPath","subFields","subFieldValues","subField","getInitialValues","fields","initialValues","defaultFieldValues","applyFieldDynamicProperties","getFieldsWithFlatFieldsets","fieldsets","values","flatFieldsetsKeys","flatFieldsetsFieldNames","flatFieldsetKey","flatFieldsetFields","rest","childFields","name","f","childField","isFieldVisible","accumulator","accumulatedFieldsSorted","fieldsetPosition","accumulatorItem","enableAckFields","result","k","v","getMinStartDate","minOnBoardingTime","today","minDate","addBusinessDays","isWeekend","nextMonday"]}
@@ -1,2 +0,0 @@
1
- import{a as h}from"./chunk-XOA7GG4P.js";import{a as g}from"./chunk-XFD3ULUF.js";import{a as m,b as d,c as T,d as b}from"./chunk-DFJNVGK4.js";import{b as p,d as D}from"./chunk-JA7UP6GN.js";import{c as y}from"./chunk-NFUP6BFU.js";import{d as c}from"./chunk-KQPDXXG3.js";import{a as s}from"./chunk-P37U34EQ.js";import{createHeadlessForm as E,modify as C}from"@remoteoss/json-schema-form-old";import{useMutation as O,useQuery as P}from"@tanstack/react-query";function V(o){return Object.entries(o).reduce((t,[a,r])=>({...t,[a]:T(r)}),{})}s(V,"formatTimeoffValues");function x(o){let t=o?.contract_details?.available_pto,a=o?.contract_details?.available_pto_type;return o?.country?.code==="USA"&&a==="unlimited"?{value:t===0?20:t}:a==="unlimited"&&t>0?{value:t}:{value:t}}s(x,"getMinimumStatutoryDays");function F(o,t){let a=0,r=0;return o.forEach(e=>{e.timeoff_days?.forEach(n=>{new Date(n.day)<=t?a+=n.hours||0:r+=n.hours||0})}),{before:a,after:r}}s(F,"getAllTimeoffHoursBeforeDate");var Q=s(({employmentId:o,date:t,options:a})=>p({employmentId:o,timeoffType:"paid_time_off",status:"approved",options:{enabled:a?.enabled,select:s(r=>{let{before:e,after:n}=F(r?.data?.timeoffs||[],new Date(t));return{bookedDaysBeforeTermination:d(e),bookedDaysAfterTermination:d(n)}},"select")}}),"useBookedTimeoffBeforeAndAfterTerminationQuery"),G=s(({employmentId:o,proposedTerminationDate:t,employment:a})=>{let{value:r=0}=x(a),e=D({employmentId:o}),n=Q({employmentId:o,date:t}),i=e.data?.data?.[0].annual_entitlement.type==="limited"?{days:e.data?.data?.[0].annual_entitlement.days,hours:e.data?.data?.[0].annual_entitlement.hours}:{days:r,hours:0},u={days:e.data?.data?.[0].booked.days||0,hours:e.data?.data?.[0].booked.hours||0},f=e.data?.data?.[0].current_entitlement.type==="limited"?{days:e.data?.data?.[0].current_entitlement.days||0,hours:e.data?.data?.[0].current_entitlement.hours||0}:{days:r,hours:0},l={days:e.data?.data?.[0].used.days||0,hours:e.data?.data?.[0].used.hours||0},v=n.data?.bookedDaysBeforeTermination||{days:0,hours:0},_=n.data?.bookedDaysAfterTermination||{days:0,hours:0},k=m(f.days,f.hours),A=m(l.days,l.hours),B=m(u.days,u.hours),H=k-A-B,S=b(d(H));return{data:{...V({entitledDays:i,bookedDays:u,usedDays:l,approvedDaysBeforeTermination:v,approvedDaysAfterTermination:_,remainingDays:S,currentEntitlementDays:f}),isUnlimitedPto:a?.contract_details?.available_pto_type==="unlimited"},isLoading:e.isLoading||n.isLoading,isError:e.isError||n.isError,error:e.error||n.error}},"useSummaryTimeOffDataQuery"),W=s(()=>{let{client:o}=c();return O({mutationFn:s(t=>y({client:o,body:t}),"mutationFn")})},"useCreateTermination"),X=s(({formValues:o,jsfModify:t,step:a})=>P({queryKey:["rmt-flows-termination-schema",a],queryFn:s(()=>h[a]??g,"queryFn"),select:s(({data:r})=>{let e=r?.schema||{};if(t){let{schema:i}=C(e,t);e=i}return E(e||{},{initialValues:o||{}})},"select")}),"useTerminationSchema");export{Q as a,G as b,W as c,X as d};
2
- //# sourceMappingURL=chunk-2TILNBMK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Termination/api.ts"],"sourcesContent":["import {\n CreateOffboardingParams,\n postCreateOffboarding,\n Timeoff,\n} from '@/src/client';\nimport {\n useTimeOffLeavePoliciesSummaryQuery,\n useTimeOffQuery,\n} from '@/src/common/api';\nimport { useClient } from '@/src/context';\nimport { Employment } from '@/src/flows/Onboarding/types';\nimport { defaultSchema } from '@/src/flows/Termination/json-schemas/defaultSchema';\nimport { TerminationFormValues } from '@/src/flows/Termination/types';\nimport { JSFModify } from '@/src/flows/types';\nimport {\n clampNegativeValuesIfApplicable,\n convertTotalHoursToDaysAndHours,\n convertToTotalHours,\n DaysAndHours,\n formatAsDecimal,\n} from '@/src/lib/time';\nimport { Client } from '@/src/client/client';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form-old';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { schema } from '@/src/flows/Termination/json-schemas/schema';\n\nfunction formatTimeoffValues(\n values: Record<string, DaysAndHours>,\n): Record<string, string> {\n return Object.entries(values).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: formatAsDecimal(value),\n }),\n {},\n );\n}\n\nfunction getMinimumStatutoryDays(employment?: Employment) {\n const availablePto = employment?.contract_details?.available_pto as number;\n const ptoType = employment?.contract_details?.available_pto_type as\n | 'unlimited'\n | 'fixed';\n const countryCode = employment?.country?.code;\n\n // Special handling for countries without statutory minimums\n if (countryCode === 'USA' && ptoType === 'unlimited') {\n // USA has no minimum, but Remote recommends 20\n return {\n value: availablePto === 0 ? 20 : availablePto,\n };\n }\n\n // For most countries with unlimited PTO, available_pto IS the statutory minimum\n if (ptoType === 'unlimited' && availablePto > 0) {\n return {\n value: availablePto,\n };\n }\n\n // For fixed PTO, it's just the entitlement\n return {\n value: availablePto,\n };\n}\n\nexport type BookedTimeoffBeforeDateResponse = {\n /*\n * The number of days booked before termination.\n */\n bookedDaysBeforeTermination: DaysAndHours;\n /*\n * The number of days booked after termination.\n */\n bookedDaysAfterTermination: DaysAndHours;\n};\n\nfunction getAllTimeoffHoursBeforeDate(\n timeoffs: Timeoff[],\n terminationDate: Date,\n): { before: number; after: number } {\n let before = 0;\n let after = 0;\n\n timeoffs.forEach((timeoff) => {\n timeoff.timeoff_days?.forEach((day) => {\n const dayDate = new Date(day.day);\n if (dayDate <= terminationDate) {\n // Day is on or before termination\n before += day.hours || 0;\n } else {\n // Day is after termination\n after += day.hours || 0;\n }\n });\n });\n\n return { before, after };\n}\n\n/**\n * Hook to retrieve booked time off data before and after a specific date for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch booked time off data for.\n * @param {string} [params.date] - The date to fetch booked time off data for.\n * @returns {BookedTimeoffBeforeDateResponse} - The booked time off data before and after the specific date.\n *\n * This hook accounts for partial days and multiple timeoff_days per request.\n */\nexport const useBookedTimeoffBeforeAndAfterTerminationQuery = ({\n employmentId,\n date,\n options,\n}: {\n employmentId: string;\n date: string;\n options?: { enabled: boolean };\n}) => {\n return useTimeOffQuery<BookedTimeoffBeforeDateResponse>({\n employmentId,\n timeoffType: 'paid_time_off',\n status: 'approved',\n options: {\n enabled: options?.enabled,\n select: (data) => {\n const { before, after } = getAllTimeoffHoursBeforeDate(\n data?.data?.timeoffs || [],\n new Date(date),\n );\n\n return {\n bookedDaysBeforeTermination: convertTotalHoursToDaysAndHours(before),\n bookedDaysAfterTermination: convertTotalHoursToDaysAndHours(after),\n };\n },\n },\n });\n};\n\nexport type SummaryTimeOffDataResponse = {\n /*\n * The number of days entitled to per year.\n */\n entitledDays: string;\n /*\n * The number of days booked.\n */\n bookedDays: string;\n /*\n * The number of days used.\n */\n usedDays: string;\n /*\n * The number of days current entitlement, better than entitledDays because it takes into account the accrued value.\n */\n currentEntitlementDays: string;\n /*\n * The number of days approved before termination.\n */\n approvedDaysBeforeTermination: string;\n /*\n * The number of days approved after termination.\n */\n approvedDaysAfterTermination: string;\n /*\n * The number of days remaining.\n */\n remainingDays: string;\n /*\n * Whether the PTO is unlimited or not.\n */\n isUnlimitedPto: boolean;\n};\n\n/**\n * Hook to retrieve summary time off data for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch summary time off data for.\n * @param {string} [params.proposedTerminationDate] - The proposed termination date to fetch summary time off data for.\n * @returns {SummaryTimeOffDataResponse} - The summary time off data.\n *\n * This hook doesn't take into account unlimited time off or half days yet.\n *\n */\nexport const useSummaryTimeOffDataQuery = ({\n employmentId,\n proposedTerminationDate,\n employment,\n}: {\n employmentId: string;\n proposedTerminationDate: string;\n employment?: Employment;\n}) => {\n const { value: minimumStatutoryDays = 0 } =\n getMinimumStatutoryDays(employment);\n const leavePoliciesSummaryQuery = useTimeOffLeavePoliciesSummaryQuery({\n employmentId,\n });\n const bookedTimeQuery = useBookedTimeoffBeforeAndAfterTerminationQuery({\n employmentId,\n date: proposedTerminationDate,\n });\n\n const entitledDays =\n leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement.type ===\n 'limited'\n ? {\n days: leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement\n .days,\n hours:\n leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement.hours,\n }\n : { days: minimumStatutoryDays, hours: 0 };\n\n const bookedDays = {\n days: leavePoliciesSummaryQuery.data?.data?.[0].booked.days || 0,\n hours: leavePoliciesSummaryQuery.data?.data?.[0].booked.hours || 0,\n };\n\n const currentEntitlementDays =\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement.type ===\n 'limited'\n ? {\n days:\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement\n .days || 0,\n hours:\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement\n .hours || 0,\n }\n : { days: minimumStatutoryDays, hours: 0 };\n\n const usedDays = {\n days: leavePoliciesSummaryQuery.data?.data?.[0].used.days || 0,\n hours: leavePoliciesSummaryQuery.data?.data?.[0].used.hours || 0,\n };\n\n const approvedDaysBeforeTermination = bookedTimeQuery.data\n ?.bookedDaysBeforeTermination || { days: 0, hours: 0 };\n\n const approvedDaysAfterTermination = bookedTimeQuery.data\n ?.bookedDaysAfterTermination || { days: 0, hours: 0 };\n\n const totalCurrentEntitlementHours = convertToTotalHours(\n currentEntitlementDays.days,\n currentEntitlementDays.hours,\n );\n const totalUsedHours = convertToTotalHours(usedDays.days, usedDays.hours);\n const totalBookedHours = convertToTotalHours(\n bookedDays.days,\n bookedDays.hours,\n );\n\n const remainingHours =\n totalCurrentEntitlementHours - totalUsedHours - totalBookedHours;\n\n const remainingDays = clampNegativeValuesIfApplicable(\n convertTotalHoursToDaysAndHours(remainingHours),\n );\n\n const formattedValues = formatTimeoffValues({\n entitledDays,\n bookedDays,\n usedDays,\n approvedDaysBeforeTermination,\n approvedDaysAfterTermination,\n remainingDays,\n currentEntitlementDays,\n }) as Omit<SummaryTimeOffDataResponse, 'isUnlimitedPto'>;\n\n return {\n data: {\n ...formattedValues,\n isUnlimitedPto:\n employment?.contract_details?.available_pto_type === 'unlimited',\n },\n isLoading: leavePoliciesSummaryQuery.isLoading || bookedTimeQuery.isLoading,\n isError: leavePoliciesSummaryQuery.isError || bookedTimeQuery.isError,\n error: leavePoliciesSummaryQuery.error || bookedTimeQuery.error,\n };\n};\n\nexport const useCreateTermination = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: CreateOffboardingParams) => {\n return postCreateOffboarding({\n client: client as Client,\n body: payload,\n });\n },\n });\n};\n\nexport const useTerminationSchema = ({\n formValues,\n jsfModify,\n step,\n}: {\n formValues?: TerminationFormValues;\n jsfModify?: JSFModify;\n step?: string;\n}) => {\n return useQuery({\n queryKey: ['rmt-flows-termination-schema', step],\n queryFn: () => {\n return schema[step as keyof typeof schema] ?? defaultSchema;\n },\n select: ({ data }) => {\n let jsfSchema = data?.schema || {};\n if (jsfModify) {\n const { schema } = modify(jsfSchema, jsfModify);\n jsfSchema = schema;\n }\n const form = createHeadlessForm(jsfSchema || {}, {\n initialValues: formValues || {},\n });\n return form;\n },\n });\n};\n"],"mappings":"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","names":["createHeadlessForm","modify","useMutation","useQuery","formatTimeoffValues","values","acc","key","value","formatAsDecimal","__name","getMinimumStatutoryDays","employment","availablePto","ptoType","getAllTimeoffHoursBeforeDate","timeoffs","terminationDate","before","after","timeoff","day","useBookedTimeoffBeforeAndAfterTerminationQuery","employmentId","date","options","useTimeOffQuery","data","convertTotalHoursToDaysAndHours","useSummaryTimeOffDataQuery","proposedTerminationDate","minimumStatutoryDays","leavePoliciesSummaryQuery","useTimeOffLeavePoliciesSummaryQuery","bookedTimeQuery","entitledDays","bookedDays","currentEntitlementDays","usedDays","approvedDaysBeforeTermination","approvedDaysAfterTermination","totalCurrentEntitlementHours","convertToTotalHours","totalUsedHours","totalBookedHours","remainingHours","remainingDays","clampNegativeValuesIfApplicable","useCreateTermination","client","useClient","useMutation","payload","postCreateOffboarding","useTerminationSchema","formValues","jsfModify","step","useQuery","schema","defaultSchema","jsfSchema","modify","createHeadlessForm"]}
@@ -1,2 +0,0 @@
1
- import{a as T,b as S,c as u}from"./chunk-V3PJWSHI.js";import{b as y}from"./chunk-E5PHO3SS.js";import{c as d}from"./chunk-66N57DKF.js";import{e as g}from"./chunk-2SO4LW7V.js";import{e as m}from"./chunk-L3Z2G32A.js";import{a as p}from"./chunk-P37U34EQ.js";import{Fragment as V}from"react";var F={...T,fieldset:u,"fieldset-flat":u};import{useEffect as b}from"react";import{Fragment as x,jsx as a,jsxs as C}from"react/jsx-runtime";var _=p(({name:t,description:i,helpCenter:n})=>C("span",{children:[a("span",{className:`text-xs RemoteFlows__ForcedValue__Description__${t}`,dangerouslySetInnerHTML:{__html:m(i)}}),n?.callToAction&&n?.id&&a(y,{className:"RemoteFlows__ForcedValue__HelpCenterLink",zendeskId:n.id,children:n.callToAction})]}),"Description");function h({name:t,value:i,description:n,statement:r,label:l,helpCenter:e}){let{setValue:o}=d(),c=m(r?.description||n);return b(()=>{o(t,i)},[]),a("div",{children:r?C(x,{children:[a("p",{className:`text-sm RemoteFlows__ForcedValue__Title__${t}`,dangerouslySetInnerHTML:{__html:m(r?.title||l)}}),a(_,{name:t,description:m(r?.description||n),helpCenter:e})]}):a(_,{name:t,description:c,helpCenter:e})})}p(h,"ForcedValueField");import{Fragment as R,jsx as s,jsxs as k}from"react/jsx-runtime";function P(t){return t.const!==void 0&&t.const===t.default&&t.inputType!=="checkbox"&&t.inputType!=="hidden"}p(P,"checkFieldHasForcedValue");var f=p(({fields:t,fieldsets:i,fieldValues:n,components:r})=>{if(!t||t.length===0)return null;let l=i&&n?g({fields:t,fieldsets:i,values:n}):t;return s(R,{children:l.map(e=>{if(e.calculateDynamicProperties&&(e={...e,...e.calculateDynamicProperties(n,e)||{}}),e.isVisible===!1||e.deprecated||e.hidden)return null;if(P(e))return s(h,{name:e.name,description:e.description,value:e.const,statement:e.statement,label:e.label,helpCenter:e.meta?.helpCenter},e.name);if(e.Component){let{Component:c}=e;return s(c,{...e},e.name)}let o=F[e.inputType];return o?e.inputType==="fieldset"?s(o,{...e,components:r},e.name):e.inputType==="fieldset-flat"?s(o,{...e,components:r,isFlatFieldset:!0},e.name):(e.inputType==="select"&&e.multiple&&(o=F["multi-select"]),k(V,{children:[s(o,{...e,component:r&&r[e.inputType]}),e.statement?s(S,{...e.statement}):null,e.extra?e.extra:null]},e.name)):k("p",{className:"error",children:["Field type ",e.inputType," not supported"]})})})},"JSONSchemaFormFields");export{f as a};
2
- //# sourceMappingURL=chunk-3A5JJLQP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/JSONSchemaForm.tsx","../src/components/form/fields/fieldsMapping.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Fields } from '@remoteoss/json-schema-form-old';\nimport React, { Fragment } from 'react';\n\nimport { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport { SupportedTypes } from '@/src/components/form/fields/types';\nimport { Statement } from '@/src/components/form/Statement';\nimport { ForcedValueField } from '@/src/components/form/fields/ForcedValueField';\nimport { Components, JSFFieldset } from '@/src/types/remoteFlows';\nimport { getFieldsWithFlatFieldsets } from './utils';\nimport { StatementComponentProps } from '@/src/types/fields';\n\ntype JSONSchemaFormFieldsProps = {\n fields: Fields;\n components?: Components;\n fieldsets?: JSFFieldset | null | undefined;\n fieldValues?: Record<string, unknown>;\n};\n\nfunction checkFieldHasForcedValue(field: any) {\n // A field to be considered \"forced value\" must:\n return (\n field.const !== undefined && // Only accepts a specific value\n field.const === field.default && // It can be prefilled, meaning it's not critical\n field.inputType !== 'checkbox' && // Because checkbox must always be visible\n field.inputType !== 'hidden' // Because hidden inputs shouldn't be visible\n );\n}\n\nexport const JSONSchemaFormFields = ({\n fields,\n fieldsets,\n fieldValues,\n components,\n}: JSONSchemaFormFieldsProps) => {\n if (!fields || fields.length === 0) return null;\n\n const maybeFieldWithFlatFieldsets =\n fieldsets && fieldValues\n ? getFieldsWithFlatFieldsets({\n fields: fields,\n fieldsets: fieldsets,\n values: fieldValues,\n })\n : fields;\n\n return (\n <>\n {maybeFieldWithFlatFieldsets.map((field) => {\n if (field.calculateDynamicProperties) {\n field = {\n ...field,\n ...(field.calculateDynamicProperties(fieldValues, field) || {}),\n };\n }\n\n if (field.isVisible === false || field.deprecated || field.hidden) {\n return null; // Skip hidden or deprecated fields\n }\n\n if (checkFieldHasForcedValue(field)) {\n return (\n <ForcedValueField\n key={field.name as string}\n name={field.name as string}\n description={field.description as string}\n value={field.const as string}\n statement={field.statement as any}\n label={field.label as string}\n helpCenter={field.meta?.helpCenter}\n />\n );\n }\n\n if (field.Component) {\n const { Component } = field as {\n Component: React.ComponentType<any>;\n };\n return <Component key={field.name as string} {...field} />;\n }\n\n let FieldComponent = fieldsMap[field.inputType as SupportedTypes];\n\n if (!FieldComponent) {\n return (\n <p className='error'>\n Field type {field.inputType as string} not supported\n </p>\n );\n }\n\n if (field.inputType === 'fieldset') {\n return (\n <FieldComponent\n key={field.name}\n {...field}\n components={components}\n />\n );\n }\n\n if (field.inputType === 'fieldset-flat') {\n return (\n <FieldComponent\n key={field.name}\n {...field}\n components={components}\n isFlatFieldset\n />\n );\n }\n\n // TODO: Have doubts about this, it seems we only support checkbox for multiple select\n if (field.inputType === 'select' && field.multiple) {\n FieldComponent = fieldsMap['multi-select'];\n }\n\n return (\n <Fragment key={field.name as string}>\n <FieldComponent\n {...field}\n component={\n components && components[field.inputType as SupportedTypes]\n }\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </Fragment>\n );\n })}\n </>\n );\n};\n","import { $TSFixMe } from '@/src/types/remoteFlows';\nimport { baseFields } from './baseFields';\nimport { FieldSetField } from './FieldSetField';\nimport { SupportedTypes } from './types';\n\nexport const fieldsMap: Record<\n SupportedTypes,\n React.ComponentType<$TSFixMe>\n> = {\n ...baseFields,\n fieldset: FieldSetField,\n 'fieldset-flat': FieldSetField,\n};\n","import { useFormContext } from 'react-hook-form';\nimport { sanitizeHtml } from '@/src/lib/utils';\nimport { useEffect } from 'react';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\n\nconst Description = ({\n name,\n description,\n helpCenter,\n}: {\n name: string;\n description: string;\n helpCenter?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\n}) => {\n return (\n <span>\n <span\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n dangerouslySetInnerHTML={{ __html: sanitizeHtml(description) }}\n />\n {helpCenter?.callToAction && helpCenter?.id && (\n <ZendeskTriggerButton\n className='RemoteFlows__ForcedValue__HelpCenterLink'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n </span>\n );\n};\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?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\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 descriptionSanitized = sanitizeHtml(\n statement?.description || description,\n );\n useEffect(() => {\n setValue(name, value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div>\n {statement ? (\n <>\n {/* if statement?.title is undefined which could be for example belgium contract details form, we need to use the label attribute */}\n <p\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{\n __html: sanitizeHtml(statement?.title || label),\n }}\n />\n <Description\n name={name}\n description={sanitizeHtml(statement?.description || description)}\n helpCenter={helpCenter}\n />\n </>\n ) : (\n <Description\n name={name}\n description={descriptionSanitized}\n helpCenter={helpCenter}\n />\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["Fragment","fieldsMap","baseFields","FieldSetField","useEffect","Fragment","jsx","jsxs","Description","__name","name","description","helpCenter","sanitizeHtml","ZendeskTriggerButton","ForcedValueField","value","statement","label","setValue","useFormContext","descriptionSanitized","useEffect","Fragment","jsx","jsxs","checkFieldHasForcedValue","field","__name","JSONSchemaFormFields","fields","fieldsets","fieldValues","components","maybeFieldWithFlatFieldsets","getFieldsWithFlatFieldsets","ForcedValueField","Component","FieldComponent","fieldsMap","Statement"]}
@@ -1,2 +0,0 @@
1
- import{a as R}from"./chunk-XRI6PRXK.js";import{a as Z}from"./chunk-NS4FRCEH.js";import{a as K}from"./chunk-IWA5B4U6.js";import{a as Q}from"./chunk-AT7VHJMW.js";import{a as J}from"./chunk-BHYFPY64.js";import{a as z}from"./chunk-I4XJ764Y.js";import{a as S,b as E,c as N,d as B,e as q}from"./chunk-QUQLW5YW.js";import{c as H,d as L}from"./chunk-2TILNBMK.js";import{a as A}from"./chunk-ZXGAFQXW.js";import{a as D}from"./chunk-Z5WMKCRJ.js";import{a as O}from"./chunk-JA7UP6GN.js";import{a as u,b as $}from"./chunk-E5PHO3SS.js";import{a as v}from"./chunk-2YTBWEC7.js";import{m as b}from"./chunk-NFUP6BFU.js";import{a as I}from"./chunk-PJBAQZ6G.js";import{d as w}from"./chunk-KQPDXXG3.js";import{c as p}from"./chunk-2SO4LW7V.js";import{a as h}from"./chunk-L3Z2G32A.js";import{a as o}from"./chunk-P37U34EQ.js";import{createHeadlessForm as ye}from"@remoteoss/json-schema-form-old";import Te from"lodash.omitby";import Fe from"lodash.isnull";import{format as g,isFuture as Me,parseISO as x,subDays as Se}from"date-fns";import{useMemo as j}from"react";import ge from"lodash.omit";import{useQuery as ce}from"@tanstack/react-query";var U=o(({query:t,options:e})=>{let{client:_}=w();return ce({queryKey:["payroll-calendars"],queryFn:o(()=>b({client:_,query:{year:t?.year,country_code:t?.countryCode}}),"queryFn"),enabled:e?.enabled,select:o(c=>c.data?.data?.payroll_calendars?.[0],"select")})},"usePayrollCalendars");import{isFuture as pe,isToday as ue,parseISO as _e}from"date-fns";var W=o(t=>{if(!t)return!1;let e=_e(t);return pe(e)||ue(e)},"isInProbationPeriod");import{Fragment as xe,jsx as d,jsxs as je}from"react/jsx-runtime";var so=o(({employmentId:t,options:e,initialValues:_})=>{let{fieldValues:c,setFieldValues:Y,stepState:a,previousStep:G,nextStep:X}=I(E),{data:n}=O({employmentId:t}),{data:ee}=U({query:{year:new Date().getFullYear().toString(),countryCode:n?.country?.code},options:{enabled:!!n?.country?.code}}),y=W(n?.probation_period_end_date),T=N(ee),P=j(()=>y?g(new Date,"yyyy-MM-dd"):g(T,"yyyy-MM-dd"),[y,T]),F=!!(n?.provisional_start_date&&Me(x(n.provisional_start_date))),M=q({...a.values?.employee_communication,...a.values?.termination_details,...a.values?.paid_time_off,...a.values?.additional_information,..._},F),f=j(()=>({...M,...a.values?.[a.currentStep.name],...c}),[a.values,a.currentStep.name,c,M]),V=B({minTerminationDate:T,isEmployeeInProbationPeriod:y,selectedDate:x(f.proposed_termination_date)}),oe=j(()=>{let m=A.data.schema.properties.termination_reason.oneOf,r=F?m.filter(i=>i.const==="cancellation_before_start_date"):m.filter(i=>i.const!=="cancellation_before_start_date");return{fields:{risk_assesment_info:S("Offboarding risk assessment","Employees may be protected from termination if they fall into certain categories. To help avoid claims from employees, let us know if the employee is part of one or more of these categories. Select all that apply.",{className:e?.jsfModify?.fields?.risk_assesment_info?.["x-jsf-presentation"]?.className}),termination_reason:{...e?.jsfModify?.fields?.termination_reason,oneOf:r},proposed_termination_date_info:S("Proposed termination date",je(xe,{children:["In most cases, we must provide notice to the employee before termination. The required notice period depends on local labor laws, the employment agreement, and other factors. We'll use those factors to determine the required notice period.",d($,{external:!0,zendeskId:u.terminationNoticePeriods,className:h("text-sm",e?.jsfModify?.fields?.proposed_termination_date_info?.["x-jsf-presentation"]?.zendeskTriggerButtonClassName),children:"Learn about notice periods"})]}),{className:e?.jsfModify?.fields?.proposed_termination_date_info?.["x-jsf-presentation"]?.className}),proposed_termination_date:{...e?.jsfModify?.fields?.proposed_termination_date,"x-jsf-presentation":{...e?.jsfModify?.fields?.proposed_termination_date?.["x-jsf-presentation"],minDate:P,...f.termination_reason==="cancellation_before_start_date"&&n?.provisional_start_date?{maxDate:g(Se(x(n.provisional_start_date),1),"yyyy-MM-dd")}:{},...V},...f.termination_reason==="cancellation_before_start_date"?{"x-jsf-errorMessage":{maximum:"The proposed termination date must be before the employee's start date."}}:{}},paid_time_off_info:{...e?.jsfModify?.fields?.paid_time_off_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.paid_time_off_info?.["x-jsf-presentation"],Component:o(()=>{let i=e?.jsfModify?.fields?.paid_time_off_info?.["x-jsf-presentation"]?.Component;return d(Z,{employeeName:n?.basic_information?.name,proposedTerminationDate:f.proposed_termination_date,employmentId:t,employment:n,render:s=>i?d(i,{...s}):d(R,{...s})})},"Component")}},acknowledge_termination_procedure_info:{...e?.jsfModify?.fields?.acknowledge_termination_procedure_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.acknowledge_termination_procedure_info?.["x-jsf-presentation"],Component:o(()=>{let i=e?.jsfModify?.fields?.acknowledge_termination_procedure_info?.["x-jsf-presentation"]?.Component;return d(K,{render:s=>i?d(i,{...s}):d(Q,{...s})})},"Component")}},acknowledge_termination_procedure_fees_info:{...e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info?.["x-jsf-presentation"],Component:o(()=>{let i={involuntaryOffboardingServiceChargeZendeskId:u.involuntaryOffboardingServiceCharge,reconciliationInvoiceZendeskId:u.reconciliationInvoice},s=e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info?.["x-jsf-presentation"]?.Component;return s?d(s,{...i}):d(J,{...i})},"Component")}}}}},[n,t,f.proposed_termination_date,f.termination_reason,F,P,e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,e?.jsfModify?.fields?.acknowledge_termination_procedure_info,e?.jsfModify?.fields?.paid_time_off_info,e?.jsfModify?.fields?.proposed_termination_date,e?.jsfModify?.fields?.proposed_termination_date_info,e?.jsfModify?.fields?.risk_assesment_info,e?.jsfModify?.fields?.termination_reason,V]),{data:l,isLoading:ie}=L({formValues:f,jsfModify:{...e?.jsfModify,fields:{...e?.jsfModify?.fields,...oe?.fields}},step:a.currentStep.name}),te=ye(z.data.schema),k=H(),{mutateAsync:ne}=v(k);async function ae(m){if(!t)throw new Error("Employment id is missing");if(l){let r=await C(m,!0),{customer_informed_employee:i}=r,s=i==="yes"?{employee_awareness:{date:r.customer_informed_employee_date,note:r.customer_informed_employee_description}}:void 0,de=await D(r,["agrees_to_pto_amount","confidential","customer_informed_employee","will_challenge_termination"]),fe=ge(de,"customer_informed_employee_date","customer_informed_employee_description"),le=Te({...fe,...s},Fe);return ne({employment_id:t,termination_details:le,type:"termination"})}}o(ae,"onSubmit");function re(){G()}o(re,"back");function se(){X()}o(se,"next");let me=Object.keys(c).length>0,C=o(async(m,r=!1)=>r?await p(m,te.fields,{isPartialValidation:!0}):l?await p(m,l?.fields,{isPartialValidation:!0}):{},"parseFormValues");return{employmentId:t,employment:n,fieldValues:f,isDirty:me,stepState:a,fields:l?.fields||[],isLoading:ie,isSubmitting:k.isPending,initialValues:M,handleValidation:o(async m=>{if(l){let r=await p(m,l?.fields);return l?.handleValidation(r)}return null},"handleValidation"),checkFieldUpdates:Y,parseFormValues:C,onSubmit:ae,back:re,next:se}},"useTermination");export{so as a};
2
- //# sourceMappingURL=chunk-5Z47HXNS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Termination/hooks.tsx","../src/common/api/payroll-calendars.ts","../src/common/employment.ts"],"sourcesContent":["import { $TSFixMe, createHeadlessForm } from '@remoteoss/json-schema-form-old';\nimport omitBy from 'lodash.omitby';\nimport isNull from 'lodash.isnull';\nimport { format, isFuture, parseISO, subDays } from 'date-fns';\nimport { useMemo } from 'react';\nimport {\n CreateOffboardingParams,\n TerminationDetailsParams,\n} from '@/src/client';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport {\n EmployeeCommunicationFormValues,\n PaidTimeOffFormValues,\n TerminationDetailsFormValues,\n TerminationFlowProps,\n TerminationFormValues,\n} from '@/src/flows/Termination/types';\nimport omit from 'lodash.omit';\nimport { parseFormRadioValues } from '@/src/flows/utils';\nimport { useStepState } from '@/src/flows/useStepState';\nimport {\n buildInitialValues,\n calculateMinTerminationDate,\n calculateProposedTerminationDateStatement,\n STEPS,\n} from '@/src/flows/Termination/utils';\nimport { jsonSchema } from '@/src/flows/Termination/json-schemas/jsonSchema';\nimport { terminationDetailsSchema } from '@/src/flows/Termination/json-schemas/terminationDetails';\nimport {\n useCreateTermination,\n useTerminationSchema,\n} from '@/src/flows/Termination/api';\nimport { createInformationField } from '@/src/components/form/jsf-utils/createFields';\nimport { cn } from '@/src/internals';\nimport { zendeskArticles } from '@/src/components/shared/zendesk-drawer/utils';\nimport { PaidTimeOff } from '@/src/flows/Termination/components/PaidTimeOff/PaidTimeOff';\nimport { PaidTimeOffContainer } from '@/src/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer';\nimport { useEmploymentQuery } from '@/src/common/api';\nimport { AcknowledgeInformationContainer } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInfomationContainer';\nimport { AcknowledgeInformation } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformation';\nimport { AcknowledgeInformationFees } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees';\nimport { usePayrollCalendars } from '@/src/common/api/payroll-calendars';\nimport { isInProbationPeriod } from '@/src/common/employment';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\n\ntype TerminationHookProps = Omit<TerminationFlowProps, 'render'>;\n\nexport const useTermination = ({\n employmentId,\n options,\n initialValues: terminationInitialValues,\n}: TerminationHookProps) => {\n const { fieldValues, setFieldValues, stepState, previousStep, nextStep } =\n useStepState<keyof typeof STEPS, TerminationFormValues>(STEPS);\n\n const { data: employment } = useEmploymentQuery({ employmentId });\n\n const { data: payrollCalendars } = usePayrollCalendars({\n query: {\n year: new Date().getFullYear().toString(),\n countryCode: employment?.country?.code,\n },\n options: {\n enabled: Boolean(employment?.country?.code),\n },\n });\n\n const isEmployeeInProbationPeriod = isInProbationPeriod(\n employment?.probation_period_end_date,\n );\n\n const minTerminationDate = calculateMinTerminationDate(payrollCalendars);\n const minDate = useMemo(\n () =>\n isEmployeeInProbationPeriod\n ? format(new Date(), 'yyyy-MM-dd')\n : format(minTerminationDate, 'yyyy-MM-dd'),\n [isEmployeeInProbationPeriod, minTerminationDate],\n );\n\n const hasFutureStartDate = Boolean(\n employment?.provisional_start_date &&\n isFuture(parseISO(employment.provisional_start_date)),\n );\n\n const initialValues = buildInitialValues(\n {\n ...stepState.values?.employee_communication,\n ...stepState.values?.termination_details,\n ...stepState.values?.paid_time_off,\n ...stepState.values?.additional_information,\n ...terminationInitialValues,\n },\n hasFutureStartDate,\n );\n\n const formValues = useMemo(\n () => ({\n ...initialValues,\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...fieldValues,\n }),\n [stepState.values, stepState.currentStep.name, fieldValues, initialValues],\n );\n\n const proposedTerminationDateStatement =\n calculateProposedTerminationDateStatement({\n minTerminationDate,\n isEmployeeInProbationPeriod,\n selectedDate: parseISO(formValues.proposed_termination_date),\n });\n\n const customFields = useMemo(() => {\n const originalTerminationReasonOptions =\n terminationDetailsSchema.data.schema.properties.termination_reason.oneOf;\n\n const terminationReasonOptions = hasFutureStartDate\n ? originalTerminationReasonOptions.filter(\n (option: $TSFixMe) =>\n option.const === 'cancellation_before_start_date',\n )\n : originalTerminationReasonOptions.filter(\n (option: $TSFixMe) =>\n option.const !== 'cancellation_before_start_date',\n );\n\n return {\n fields: {\n risk_assesment_info: createInformationField(\n 'Offboarding risk assessment',\n 'Employees may be protected from termination if they fall into certain categories. To help avoid claims from employees, let us know if the employee is part of one or more of these categories. Select all that apply.',\n {\n className: (\n options?.jsfModify?.fields?.risk_assesment_info as $TSFixMe\n )?.['x-jsf-presentation']?.className,\n },\n ),\n termination_reason: {\n ...(options?.jsfModify?.fields?.termination_reason as $TSFixMe),\n oneOf: terminationReasonOptions,\n },\n proposed_termination_date_info: createInformationField(\n 'Proposed termination date',\n <>\n In most cases, we must provide notice to the employee before\n termination. The required notice period depends on local labor laws,\n the employment agreement, and other factors. We'll use those factors\n to determine the required notice period.\n <ZendeskTriggerButton\n external\n zendeskId={zendeskArticles.terminationNoticePeriods}\n className={cn(\n 'text-sm',\n (\n options?.jsfModify?.fields\n ?.proposed_termination_date_info as $TSFixMe\n )?.['x-jsf-presentation']?.zendeskTriggerButtonClassName,\n )}\n >\n Learn about notice periods\n </ZendeskTriggerButton>\n </>,\n {\n className: (\n options?.jsfModify?.fields\n ?.proposed_termination_date_info as $TSFixMe\n )?.['x-jsf-presentation']?.className,\n },\n ),\n proposed_termination_date: {\n ...(options?.jsfModify?.fields\n ?.proposed_termination_date as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields?.proposed_termination_date as $TSFixMe\n )?.['x-jsf-presentation'],\n minDate: minDate,\n ...(formValues.termination_reason ===\n 'cancellation_before_start_date' &&\n employment?.provisional_start_date\n ? {\n maxDate: format(\n subDays(parseISO(employment.provisional_start_date), 1),\n 'yyyy-MM-dd',\n ),\n }\n : {}),\n ...proposedTerminationDateStatement,\n },\n ...(formValues.termination_reason === 'cancellation_before_start_date'\n ? {\n 'x-jsf-errorMessage': {\n maximum:\n \"The proposed termination date must be before the employee's start date.\",\n },\n }\n : {}),\n },\n paid_time_off_info: {\n ...(options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe)?.[\n 'x-jsf-presentation'\n ],\n Component: () => {\n const CustomComponent = (\n options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n return (\n <PaidTimeOffContainer\n employeeName={employment?.basic_information?.name as string}\n proposedTerminationDate={formValues.proposed_termination_date}\n employmentId={employmentId}\n employment={employment}\n render={(props) => {\n if (CustomComponent) {\n return <CustomComponent {...props} />;\n }\n return <PaidTimeOff {...props} />;\n }}\n />\n );\n },\n },\n },\n acknowledge_termination_procedure_info: {\n ...(options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe\n )?.['x-jsf-presentation'],\n Component: () => {\n const CustomComponent = (\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n return (\n <AcknowledgeInformationContainer\n render={(props) => {\n if (CustomComponent) {\n return <CustomComponent {...props} />;\n }\n return <AcknowledgeInformation {...props} />;\n }}\n />\n );\n },\n },\n },\n acknowledge_termination_procedure_fees_info: {\n ...(options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe\n )?.['x-jsf-presentation'],\n Component: () => {\n const zendeskIds = {\n involuntaryOffboardingServiceChargeZendeskId:\n zendeskArticles.involuntaryOffboardingServiceCharge,\n reconciliationInvoiceZendeskId:\n zendeskArticles.reconciliationInvoice,\n };\n\n const CustomComponent = (\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n if (CustomComponent) {\n return <CustomComponent {...zendeskIds} />;\n }\n\n return <AcknowledgeInformationFees {...zendeskIds} />;\n },\n },\n },\n },\n };\n }, [\n employment,\n employmentId,\n formValues.proposed_termination_date,\n formValues.termination_reason,\n hasFutureStartDate,\n minDate,\n options?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,\n options?.jsfModify?.fields?.acknowledge_termination_procedure_info,\n options?.jsfModify?.fields?.paid_time_off_info,\n options?.jsfModify?.fields?.proposed_termination_date,\n options?.jsfModify?.fields?.proposed_termination_date_info,\n options?.jsfModify?.fields?.risk_assesment_info,\n options?.jsfModify?.fields?.termination_reason,\n proposedTerminationDateStatement,\n ]);\n\n const { data: terminationHeadlessForm, isLoading: isLoadingTermination } =\n useTerminationSchema({\n formValues: formValues,\n jsfModify: {\n ...options?.jsfModify,\n fields: {\n ...options?.jsfModify?.fields,\n ...customFields?.fields,\n },\n },\n step: stepState.currentStep.name,\n });\n\n const entireTerminationSchema = createHeadlessForm(jsonSchema.data.schema);\n\n const createTermination = useCreateTermination();\n const { mutateAsync } = mutationToPromise(createTermination);\n\n async function onSubmit(values: TerminationFormValues) {\n if (!employmentId) {\n throw new Error('Employment id is missing');\n }\n\n if (terminationHeadlessForm) {\n const parsedValues = (await parseFormValues(\n values,\n true,\n )) as TerminationFormValues;\n\n const { customer_informed_employee: customerInformedEmployee } =\n parsedValues;\n\n const employeeAwareness =\n customerInformedEmployee === 'yes'\n ? {\n employee_awareness: {\n date: parsedValues.customer_informed_employee_date,\n note: parsedValues.customer_informed_employee_description,\n },\n }\n : undefined;\n\n const radioFieldKeys = [\n 'agrees_to_pto_amount',\n 'confidential',\n 'customer_informed_employee',\n 'will_challenge_termination',\n ];\n\n const parsedRadioValues = await parseFormRadioValues(\n parsedValues,\n radioFieldKeys,\n );\n\n const normalizedValues = omit(\n parsedRadioValues,\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n );\n\n const terminationDetails: TerminationDetailsParams = omitBy(\n {\n ...normalizedValues,\n ...employeeAwareness,\n },\n isNull,\n ) as unknown as TerminationDetailsParams;\n\n const terminationPayload: CreateOffboardingParams = {\n employment_id: employmentId,\n termination_details: terminationDetails,\n type: 'termination',\n };\n\n return mutateAsync(terminationPayload);\n }\n\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n const isDirty = Boolean(Object.keys(fieldValues).length > 0);\n\n const parseFormValues = async (\n values: TerminationFormValues,\n includeAllFields: boolean = false,\n ): Promise<\n | EmployeeCommunicationFormValues\n | TerminationDetailsFormValues\n | PaidTimeOffFormValues\n | TerminationFormValues\n > => {\n if (includeAllFields) {\n return (await parseJSFToValidate(values, entireTerminationSchema.fields, {\n isPartialValidation: true,\n })) as TerminationFormValues;\n }\n\n if (terminationHeadlessForm) {\n return (await parseJSFToValidate(\n values,\n terminationHeadlessForm?.fields,\n {\n isPartialValidation: true,\n },\n )) as\n | EmployeeCommunicationFormValues\n | TerminationDetailsFormValues\n | PaidTimeOffFormValues;\n }\n return {} as $TSFixMe;\n };\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId,\n /**\n * Employment data\n */\n employment,\n\n /**\n * Current form field values, we use formValues to let the user know about all the current form values\n */\n fieldValues: formValues,\n\n /**\n * Indicates if the form is dirty\n */\n isDirty,\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the contract amendment schema\n */\n fields: terminationHeadlessForm?.fields || [],\n /**\n * Loading state indicating if the termination schema is being fetched\n */\n isLoading: isLoadingTermination,\n /**\n * Loading state indicating if a contract amendment mutation is in progress\n */\n isSubmitting: createTermination.isPending,\n /**\n * Initial form values\n */\n initialValues: initialValues,\n /**\n * Function to validate form values against the contract amendment schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: async (values: TerminationFormValues) => {\n if (terminationHeadlessForm) {\n const parsedValues = await parseJSFToValidate(\n values,\n terminationHeadlessForm?.fields,\n );\n return terminationHeadlessForm?.handleValidation(parsedValues);\n }\n return null;\n },\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { getIndexEorPayrollCalendar } from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { Client } from '@/src/client/client';\n\nexport const usePayrollCalendars = ({\n query,\n options,\n}: {\n query?: {\n year?: string;\n countryCode?: string;\n };\n options?: {\n enabled?: boolean;\n };\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['payroll-calendars'],\n queryFn: () =>\n getIndexEorPayrollCalendar({\n client: client as Client,\n query: {\n year: query?.year,\n country_code: query?.countryCode,\n },\n }),\n enabled: options?.enabled,\n select: (data) => data.data?.data?.payroll_calendars?.[0],\n });\n};\n","import { isFuture, isToday, parseISO } from 'date-fns';\n\nexport const isInProbationPeriod = (probationEndDate: string | undefined) => {\n if (!probationEndDate) return false;\n\n const parsedProbationEndDate = parseISO(probationEndDate);\n\n return isFuture(parsedProbationEndDate) || isToday(parsedProbationEndDate);\n};\n"],"mappings":"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","names":["createHeadlessForm","omitBy","isNull","format","isFuture","parseISO","subDays","useMemo","omit","useQuery","usePayrollCalendars","__name","query","options","client","useClient","useQuery","getIndexEorPayrollCalendar","data","isFuture","isToday","parseISO","isInProbationPeriod","__name","probationEndDate","parsedProbationEndDate","parseISO","isFuture","isToday","Fragment","jsx","jsxs","useTermination","__name","employmentId","options","terminationInitialValues","fieldValues","setFieldValues","stepState","previousStep","nextStep","useStepState","STEPS","employment","useEmploymentQuery","payrollCalendars","usePayrollCalendars","isEmployeeInProbationPeriod","isInProbationPeriod","minTerminationDate","calculateMinTerminationDate","minDate","useMemo","format","hasFutureStartDate","isFuture","parseISO","initialValues","buildInitialValues","formValues","proposedTerminationDateStatement","calculateProposedTerminationDateStatement","customFields","originalTerminationReasonOptions","terminationDetailsSchema","terminationReasonOptions","option","createInformationField","ZendeskTriggerButton","zendeskArticles","cn","subDays","CustomComponent","PaidTimeOffContainer","props","PaidTimeOff","AcknowledgeInformationContainer","AcknowledgeInformation","zendeskIds","AcknowledgeInformationFees","terminationHeadlessForm","isLoadingTermination","useTerminationSchema","entireTerminationSchema","createHeadlessForm","jsonSchema","createTermination","useCreateTermination","mutateAsync","mutationToPromise","onSubmit","values","parsedValues","parseFormValues","customerInformedEmployee","employeeAwareness","parsedRadioValues","parseFormRadioValues","normalizedValues","omit","terminationDetails","omitBy","isNull","back","next","isDirty","includeAllFields","parseJSFToValidate"]}
@@ -1,2 +0,0 @@
1
- import{b as t}from"./chunk-LJGCFFAT.js";import{a as o}from"./chunk-P37U34EQ.js";import{jsx as p}from"react/jsx-runtime";var m=o(({...n})=>p(t,{...n}),"ButtonDefault");export{m as a};
2
- //# sourceMappingURL=chunk-6GTRAHWJ.js.map