@gusto/embedded-react-sdk 0.51.2 → 0.52.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 (296) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/components/Base/Base.d.ts +2 -0
  3. package/dist/components/Base/Base.js.map +1 -1
  4. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes.d.ts +1 -1
  5. package/dist/components/Common/OnboardingStatusBadge/index.d.ts +1 -1
  6. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  7. package/dist/components/Common/PaginationControl/PaginationControlTypes.d.ts +4 -1
  8. package/dist/components/Common/UI/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -1
  9. package/dist/components/Common/UI/Breadcrumbs/BreadcrumbsTypes.js.map +1 -1
  10. package/dist/components/Common/UI/CheckboxGroup/CheckboxGroupTypes.d.ts +1 -1
  11. package/dist/components/Common/UI/CheckboxGroup/CheckboxGroupTypes.js.map +1 -1
  12. package/dist/components/Common/UI/ComboBox/ComboBoxTypes.d.ts +2 -2
  13. package/dist/components/Common/UI/DateRangePicker/DateRangePickerTypes.d.ts +3 -2
  14. package/dist/components/Common/UI/DescriptionList/DescriptionListTypes.d.ts +1 -1
  15. package/dist/components/Common/UI/DescriptionList/DescriptionListTypes.js.map +1 -1
  16. package/dist/components/Common/UI/FormBox/FormBox.d.ts +9 -0
  17. package/dist/components/Common/UI/FormBox/FormBox.js +13 -0
  18. package/dist/components/Common/UI/FormBox/FormBox.js.map +1 -0
  19. package/dist/components/Common/UI/FormBox/FormBox.module.scss.js +14 -0
  20. package/dist/components/Common/UI/FormBox/FormBox.module.scss.js.map +1 -0
  21. package/dist/components/Common/UI/FormBox/FormBoxTypes.d.ts +26 -0
  22. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.d.ts +9 -0
  23. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js +23 -0
  24. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js.map +1 -0
  25. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js +8 -0
  26. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js.map +1 -0
  27. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.d.ts +36 -0
  28. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js +7 -0
  29. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js.map +1 -0
  30. package/dist/components/Common/UI/FormBoxHeader/index.d.ts +1 -0
  31. package/dist/components/Common/UI/Input/InputTypes.d.ts +1 -0
  32. package/dist/components/Common/UI/Input/InputTypes.js.map +1 -1
  33. package/dist/components/Common/UI/Menu/MenuTypes.d.ts +3 -3
  34. package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
  35. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +2 -2
  36. package/dist/components/Common/UI/RadioGroup/RadioGroupTypes.d.ts +2 -2
  37. package/dist/components/Common/UI/RadioGroup/RadioGroupTypes.js.map +1 -1
  38. package/dist/components/Common/UI/Select/SelectTypes.d.ts +2 -2
  39. package/dist/components/Common/UI/Table/TableTypes.d.ts +4 -4
  40. package/dist/components/Common/UI/Table/TableTypes.js.map +1 -1
  41. package/dist/components/Common/UI/Tabs/TabsTypes.d.ts +2 -2
  42. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.d.ts +1 -2
  43. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +5 -3
  44. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  45. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.d.ts +1 -1
  46. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +5 -3
  47. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  48. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +7 -5
  49. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  50. package/dist/components/Company/BankAccount/BankAccountForm/Form.d.ts +1 -1
  51. package/dist/components/Company/BankAccount/BankAccountForm/context.js +5 -3
  52. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  53. package/dist/components/Company/BankAccount/BankAccountVerify/Form.d.ts +1 -1
  54. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +5 -3
  55. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  56. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/signCompanyFormSchema.d.ts +1 -1
  57. package/dist/components/Company/FederalTaxes/useFederalTaxes.d.ts +1 -1
  58. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +10 -8
  59. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  60. package/dist/components/Company/Industry/Context.js +8 -6
  61. package/dist/components/Company/Industry/Context.js.map +1 -1
  62. package/dist/components/Company/Locations/LocationForm/Form.d.ts +1 -1
  63. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +5 -3
  64. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  65. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +5 -3
  66. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  67. package/dist/components/Company/OnboardingOverview/context.js +5 -3
  68. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  69. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +3 -3
  70. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +1 -1
  71. package/dist/components/Company/StateTaxes/StateTaxes.d.ts +10 -1
  72. package/dist/components/Company/StateTaxes/StateTaxes.js +23 -17
  73. package/dist/components/Company/StateTaxes/StateTaxes.js.map +1 -1
  74. package/dist/components/Company/StateTaxes/StateTaxesComponents.d.ts +2 -0
  75. package/dist/components/Company/StateTaxes/StateTaxesComponents.js +17 -10
  76. package/dist/components/Company/StateTaxes/StateTaxesComponents.js.map +1 -1
  77. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +5 -3
  78. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  79. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +26 -26
  80. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  81. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.d.ts +9 -0
  82. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +24 -24
  83. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js.map +1 -1
  84. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +5 -3
  85. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  86. package/dist/components/Contractor/Address/Address.d.ts +4 -3
  87. package/dist/components/Contractor/Address/Address.js.map +1 -1
  88. package/dist/components/Contractor/Address/shared/useContractorAddressForm/contractorAddressSchema.d.ts +2 -2
  89. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.d.ts +1 -1
  90. package/dist/components/Contractor/ContractorList/index.d.ts +2 -1
  91. package/dist/components/Contractor/ContractorList/index.js +123 -98
  92. package/dist/components/Contractor/ContractorList/index.js.map +1 -1
  93. package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js +22 -19
  94. package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js.map +1 -1
  95. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/contractorSignatureFormSchema.d.ts +1 -1
  96. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.d.ts +1 -1
  97. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.d.ts +1 -1
  98. package/dist/components/Contractor/OnboardingFlow/OnboardingFlow.d.ts +1 -1
  99. package/dist/components/Contractor/OnboardingFlow/OnboardingFlow.js.map +1 -1
  100. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.d.ts +2 -0
  101. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js.map +1 -1
  102. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js +150 -80
  103. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  104. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.test.d.ts +1 -0
  105. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountFormSchema.d.ts +1 -1
  106. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.d.ts +1 -1
  107. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.js.map +1 -1
  108. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.d.ts +2 -2
  109. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  110. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +1 -1
  111. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
  112. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js +2 -2
  113. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js.map +1 -1
  114. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.d.ts +17 -5
  115. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +32 -31
  116. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
  117. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.d.ts +16 -4
  118. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +33 -29
  119. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  120. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +1 -1
  121. package/dist/components/Contractor/Profile/BusinessSelfOnboardingProfile.js +19 -18
  122. package/dist/components/Contractor/Profile/BusinessSelfOnboardingProfile.js.map +1 -1
  123. package/dist/components/Contractor/Profile/ContractorProfile.d.ts +1 -1
  124. package/dist/components/Contractor/Profile/ContractorProfile.js +114 -110
  125. package/dist/components/Contractor/Profile/ContractorProfile.js.map +1 -1
  126. package/dist/components/Contractor/Profile/IndividualSelfOnboardingProfile.js +27 -26
  127. package/dist/components/Contractor/Profile/IndividualSelfOnboardingProfile.js.map +1 -1
  128. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.d.ts +1 -1
  129. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +6 -6
  130. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
  131. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.d.ts +1 -1
  132. package/dist/components/Contractor/Submit/Submit.js +106 -63
  133. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  134. package/dist/components/Employee/Compensation/onboarding/Compensation.d.ts +0 -4
  135. package/dist/components/Employee/Compensation/onboarding/Compensation.js +38 -42
  136. package/dist/components/Employee/Compensation/onboarding/Compensation.js.map +1 -1
  137. package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +2 -2
  138. package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.d.ts +1 -1
  139. package/dist/components/Employee/Dashboard/index.d.ts +1 -1
  140. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.d.ts +1 -1
  141. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.d.ts +1 -1
  142. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.d.ts +2 -2
  143. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +5 -3
  144. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  145. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.d.ts +2 -2
  146. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +1 -4
  147. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  148. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.d.ts +2 -2
  149. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js +27 -32
  150. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js.map +1 -1
  151. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +1 -2
  152. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
  153. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.d.ts +2 -2
  154. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.d.ts +1 -1
  155. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.d.ts +1 -1
  156. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js +1 -3
  157. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js.map +1 -1
  158. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +55 -49
  159. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  160. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.d.ts +1 -1
  161. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.d.ts +1 -1
  162. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +2 -2
  163. package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.d.ts +1 -1
  164. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.d.ts +1 -1
  165. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.d.ts +2 -2
  166. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.js.map +1 -1
  167. package/dist/components/Employee/exports/employeeManagement.d.ts +1 -1
  168. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.d.ts +4 -5
  169. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +101 -125
  170. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
  171. package/dist/components/InformationRequests/InformationRequestsComponents.d.ts +0 -5
  172. package/dist/components/InformationRequests/InformationRequestsComponents.js +12 -13
  173. package/dist/components/InformationRequests/InformationRequestsComponents.js.map +1 -1
  174. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +4 -4
  175. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -1
  176. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.d.ts +1 -1
  177. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +8 -8
  178. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
  179. package/dist/components/Payroll/OffCycle/index.d.ts +1 -1
  180. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +1 -1
  181. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +97 -92
  182. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  183. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +2 -3
  184. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  185. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +2 -2
  186. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
  187. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  188. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +57 -56
  189. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  190. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  191. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +23 -6
  192. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js +37 -33
  193. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
  194. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +2 -2
  195. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js +6 -6
  196. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js.map +1 -1
  197. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +1 -1
  198. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  199. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
  200. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  201. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  202. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +1 -1
  203. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +1 -1
  204. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  205. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
  206. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +31 -31
  207. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  208. package/dist/components/Payroll/RecoveryCases/RecoveryCases.d.ts +9 -5
  209. package/dist/components/Payroll/RecoveryCases/RecoveryCases.js.map +1 -1
  210. package/dist/components/Payroll/Transition/TransitionFlowComponents.d.ts +1 -1
  211. package/dist/components/Payroll/Transition/TransitionFlowComponents.js +1 -1
  212. package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +1 -1
  213. package/dist/components/Payroll/Transition/index.d.ts +1 -1
  214. package/dist/components/Payroll/helpers.d.ts +22 -8
  215. package/dist/components/Payroll/helpers.js +1 -1
  216. package/dist/components/Payroll/helpers.js.map +1 -1
  217. package/dist/components/Payroll/index.d.ts +3 -2
  218. package/dist/components/Payroll/payrollTypes.d.ts +1 -1
  219. package/dist/components/Payroll/payrollTypes.js +1 -1
  220. package/dist/components/Payroll/payrollTypes.js.map +1 -1
  221. package/dist/components/Payroll/usePreparedPayrollData.d.ts +1 -1
  222. package/dist/components/Payroll/usePreparedPayrollData.js +10 -8
  223. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  224. package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.d.ts +1 -1
  225. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js +19 -19
  226. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js.map +1 -1
  227. package/dist/contexts/ApiProvider/ApiProvider.d.ts +5 -5
  228. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  229. package/dist/contexts/ApiProvider/apiVersion.d.ts +2 -2
  230. package/dist/contexts/ApiProvider/apiVersion.js +1 -1
  231. package/dist/contexts/ApiProvider/apiVersion.js.map +1 -1
  232. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +40 -36
  233. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
  234. package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +2 -0
  235. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.d.ts +5 -0
  236. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js +18 -16
  237. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js.map +1 -1
  238. package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +7 -1
  239. package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
  240. package/dist/contexts/GustoProvider/GustoProvider.d.ts +5 -5
  241. package/dist/contexts/GustoProvider/GustoProvider.js +6 -6
  242. package/dist/contexts/GustoProvider/GustoProvider.js.map +1 -1
  243. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +8 -7
  244. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +8 -8
  245. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  246. package/dist/contexts/GustoProvider/index.d.ts +1 -1
  247. package/dist/contexts/ThemeProvider/types.d.ts +2 -2
  248. package/dist/contexts/index.d.ts +2 -6
  249. package/dist/i18n/en/Contractor.ContractorList.json.js +22 -18
  250. package/dist/i18n/en/Contractor.ContractorList.json.js.map +1 -1
  251. package/dist/i18n/en/Contractor.SignatureForm.json.js +5 -5
  252. package/dist/i18n/en/Contractor.Submit.json.js +11 -11
  253. package/dist/i18n/en/Employee.OnboardingSummary.json.js +24 -20
  254. package/dist/i18n/en/Employee.OnboardingSummary.json.js.map +1 -1
  255. package/dist/i18n/types.d.ts +15 -3
  256. package/dist/index.d.ts +8 -7
  257. package/dist/index.js +121 -134
  258. package/dist/index.js.map +1 -1
  259. package/dist/models/WA_RISK_CODES.d.ts +6 -2
  260. package/dist/models/WA_RISK_CODES.js.map +1 -1
  261. package/dist/models/external.d.ts +67 -57
  262. package/dist/partner-hook-utils/composeErrorHandler.d.ts +13 -4
  263. package/dist/partner-hook-utils/composeErrorHandler.js.map +1 -1
  264. package/dist/partner-hook-utils/form/SDKFormProvider.d.ts +11 -2
  265. package/dist/partner-hook-utils/form/SDKFormProvider.js +7 -1
  266. package/dist/partner-hook-utils/form/SDKFormProvider.js.map +1 -1
  267. package/dist/partner-hook-utils/form/composeSubmitHandler.d.ts +11 -4
  268. package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
  269. package/dist/partner-hook-utils/form/fields/CheckboxHookField.d.ts +1 -0
  270. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js.map +1 -1
  271. package/dist/partner-hook-utils/form/fields/DatePickerHookField.d.ts +1 -0
  272. package/dist/partner-hook-utils/form/fields/DatePickerHookField.js.map +1 -1
  273. package/dist/partner-hook-utils/form/fields/NumberInputHookField.d.ts +1 -0
  274. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js.map +1 -1
  275. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.d.ts +1 -0
  276. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
  277. package/dist/partner-hook-utils/form/fields/SelectHookField.d.ts +1 -0
  278. package/dist/partner-hook-utils/form/fields/SelectHookField.js.map +1 -1
  279. package/dist/partner-hook-utils/form/fields/SwitchHookField.d.ts +1 -0
  280. package/dist/partner-hook-utils/form/fields/SwitchHookField.js.map +1 -1
  281. package/dist/partner-hook-utils/form/fields/TextInputHookField.d.ts +1 -0
  282. package/dist/partner-hook-utils/form/fields/TextInputHookField.js.map +1 -1
  283. package/dist/partner-hook-utils/form/fields/index.d.ts +1 -0
  284. package/dist/partner-hook-utils/form/index.d.ts +3 -3
  285. package/dist/partner-hook-utils/form/useHookFieldResolution.js.map +1 -1
  286. package/dist/partner-hook-utils/index.d.ts +1 -1
  287. package/dist/partner-hook-utils/types.d.ts +16 -3
  288. package/dist/shared/constants.d.ts +12 -2
  289. package/dist/shared/constants.js +11 -10
  290. package/dist/shared/constants.js.map +1 -1
  291. package/dist/style.css +1 -1
  292. package/dist/types/Helpers.d.ts +13 -0
  293. package/dist/types/hooks.d.ts +2 -1
  294. package/dist/types/observability.d.ts +1 -0
  295. package/docs/guides/endpoint-inventory.json +396 -380
  296. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"file":"OnboardingFlow.js","sources":["../../../../src/components/Contractor/OnboardingFlow/OnboardingFlow.tsx"],"sourcesContent":["import { createMachine } from 'robot3'\nimport { useMemo } from 'react'\nimport { onboardingMachine } from './onboardingStateMachine'\nimport type { OnboardingFlowProps } from './OnboardingFlowComponents'\nimport {\n ContractorListContextual,\n type OnboardingFlowContextInterface,\n} from './OnboardingFlowComponents'\nimport { Flow } from '@/components/Flow/Flow'\n\n/**\n * Guided flow for admins to onboard a contractor to the company.\n *\n * @remarks\n * Renders a multi-step experience that collects every piece of information\n * required to add a contractor to a company. Begins on the contractor list\n * and transitions into the per-step screens when \"Add contractor\" or a row's\n * \"Edit\"/\"Continue\" action is invoked; the submit step returns to the list.\n * The flow is driven by an internal state machine and wraps each step in\n * error and suspense boundaries.\n *\n * Each step of the flow is also exported as a standalone block (see the\n * Blocks table) for composing a custom workflow when this orchestration\n * is the wrong fit.\n *\n * The flow forwards every event emitted by its blocks to `onEvent`;\n * see the events table on each block for the full set of events and\n * payloads observable from this flow.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/create` | Fired when the user chooses to add a new contractor | — |\n * | `contractor/update` | Fired when the user selects a contractor to edit | `{ contractorId: string }` |\n * | `contractor/deleted` | Fired when a contractor is deleted | `{ contractorId: string }` |\n * | `contractor/onboarding/continue` | Fired when the user chooses to continue onboarding a contractor | — |\n * | `contractor/created` | Fired when a new contractor is created successfully | Create contractor API response |\n * | `contractor/updated` | Fired when an existing contractor is updated | Update contractor API response |\n * | `contractor/profile/done` | Fired when the contractor profile step is complete | `{ contractorId: string, selfOnboarding: boolean }` |\n * | `contractor/address/updated` | Fired when the contractor address is updated | Create or update contractor address API response |\n * | `contractor/address/done` | Fired when the address step is complete | — |\n * | `contractor/bankAccount/created` | Fired when a bank account is created for the contractor | Create contractor bank account API response |\n * | `contractor/paymentMethod/updated` | Fired when the payment method is updated | Update contractor payment method API response |\n * | `contractor/paymentMethod/done` | Fired when the payment method step is complete | — |\n * | `contractor/newHireReport/updated` | Fired when the new hire report is updated | Update contractor API response |\n * | `contractor/newHireReport/done` | Fired when the new hire report step is complete | — |\n * | `contractor/onboardingStatus/updated` | Fired when the contractor's onboarding status is updated | Change contractor onboarding status API response |\n * | `contractor/submit/done` | Fired when the contractor submission is complete | `{ message: string }` or `{ onboardingStatus, message: string }` |\n * | `contractor/invite/selfOnboarding` | Fired when the contractor is invited for self-onboarding | `{ contractorId: string }` |\n *\n * @components\n * - {@link ContractorList}\n * - {@link ContractorProfile}\n * - {@link Address}\n * - {@link PaymentMethod}\n * - {@link NewHireReport}\n * - {@link ContractorSubmit}\n *\n * @param props - See {@link OnboardingFlowProps}.\n * @returns The multi-step onboarding flow with internal navigation between the contractor list and the per-step screens.\n * @public\n *\n * @example\n * ```tsx title=\"App.tsx\"\n * import { ContractorOnboarding, type EventType } from '@gusto/embedded-react-sdk'\n *\n * function MyApp() {\n * return (\n * <ContractorOnboarding.OnboardingFlow\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={(eventType: EventType) => {\n * if (eventType === 'contractor/submit/done') {\n * // Contractor onboarding complete — navigate to your next screen\n * }\n * }}\n * />\n * )\n * }\n * ```\n */\nexport const OnboardingFlow = ({ companyId, onEvent, defaultValues }: OnboardingFlowProps) => {\n const onboardingFlow = useMemo(\n () =>\n createMachine(\n 'list',\n onboardingMachine,\n (initialContext: OnboardingFlowContextInterface) => ({\n ...initialContext,\n component: ContractorListContextual,\n companyId,\n defaultValues,\n selfOnboarding: false,\n }),\n ),\n [companyId, defaultValues],\n )\n return <Flow machine={onboardingFlow} onEvent={onEvent} />\n}\n"],"names":["OnboardingFlow","companyId","onEvent","defaultValues","onboardingFlow","useMemo","createMachine","onboardingMachine","initialContext","ContractorListContextual","jsx","Flow"],"mappings":";;;;;;AAgFO,MAAMA,IAAiB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,eAAAC,QAAyC;AAC5F,QAAMC,IAAiBC;AAAA,IACrB,MACEC;AAAA,MACE;AAAA,MACAC;AAAA,MACA,CAACC,OAAoD;AAAA,QACnD,GAAGA;AAAA,QACH,WAAWC;AAAA,QACX,WAAAR;AAAA,QACA,eAAAE;AAAA,QACA,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,IAEJ,CAACF,GAAWE,CAAa;AAAA,EAAA;AAE3B,SAAO,gBAAAO,EAACC,GAAA,EAAK,SAASP,GAAgB,SAAAF,EAAA,CAAkB;AAC1D;"}
1
+ {"version":3,"file":"OnboardingFlow.js","sources":["../../../../src/components/Contractor/OnboardingFlow/OnboardingFlow.tsx"],"sourcesContent":["import { createMachine } from 'robot3'\nimport { useMemo } from 'react'\nimport { onboardingMachine } from './onboardingStateMachine'\nimport type { OnboardingFlowProps } from './OnboardingFlowComponents'\nimport {\n ContractorListContextual,\n type OnboardingFlowContextInterface,\n} from './OnboardingFlowComponents'\nimport { Flow } from '@/components/Flow/Flow'\n\n/**\n * Guided flow for admins to onboard a contractor to the company.\n *\n * @remarks\n * Renders a multi-step experience that collects every piece of information\n * required to add a contractor to a company. Begins on the contractor list\n * and transitions into the per-step screens when \"Add contractor\" or a row's\n * \"Edit\"/\"Continue\" action is invoked; the submit step returns to the list.\n * The flow is driven by an internal state machine and wraps each step in\n * error and suspense boundaries.\n *\n * Each step of the flow is also exported as a standalone block (see the\n * Blocks table) for composing a custom workflow when this orchestration\n * is the wrong fit.\n *\n * The flow forwards every event emitted by its blocks to `onEvent`;\n * see the events table on each block for the full set of events and\n * payloads observable from this flow.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/create` | Fired when the user chooses to add a new contractor | — |\n * | `contractor/update` | Fired when the user selects a contractor to edit | `{ contractorId: string }` |\n * | `contractor/deleted` | Fired when a contractor is deleted | `{ contractorId: string }` |\n * | `contractor/onboarding/continue` | Fired when the user chooses to continue onboarding a contractor | — |\n * | `contractor/created` | Fired when a new contractor is created successfully | Create contractor API response |\n * | `contractor/updated` | Fired when an existing contractor is updated | Update contractor API response |\n * | `contractor/profile/done` | Fired when the contractor profile step is complete | `{ contractorId: string, onboardingStatus?: string, selfOnboarding: boolean }` |\n * | `contractor/address/updated` | Fired when the contractor address is updated | Create or update contractor address API response |\n * | `contractor/address/done` | Fired when the address step is complete | — |\n * | `contractor/bankAccount/created` | Fired when a bank account is created for the contractor | Create contractor bank account API response |\n * | `contractor/paymentMethod/updated` | Fired when the payment method is updated | Update contractor payment method API response |\n * | `contractor/paymentMethod/done` | Fired when the payment method step is complete | — |\n * | `contractor/newHireReport/updated` | Fired when the new hire report is updated | Update contractor API response |\n * | `contractor/newHireReport/done` | Fired when the new hire report step is complete | — |\n * | `contractor/onboardingStatus/updated` | Fired when the contractor's onboarding status is updated | Change contractor onboarding status API response |\n * | `contractor/submit/done` | Fired when the contractor submission is complete | `{ message: string }` or `{ onboardingStatus, message: string }` |\n * | `contractor/invite/selfOnboarding` | Fired when the contractor is invited for self-onboarding | `{ contractorId: string }` |\n *\n * @components\n * - {@link ContractorList}\n * - {@link ContractorProfile}\n * - {@link Address}\n * - {@link PaymentMethod}\n * - {@link NewHireReport}\n * - {@link ContractorSubmit}\n *\n * @param props - See {@link OnboardingFlowProps}.\n * @returns The multi-step onboarding flow with internal navigation between the contractor list and the per-step screens.\n * @public\n *\n * @example\n * ```tsx title=\"App.tsx\"\n * import { ContractorOnboarding, type EventType } from '@gusto/embedded-react-sdk'\n *\n * function MyApp() {\n * return (\n * <ContractorOnboarding.OnboardingFlow\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={(eventType: EventType) => {\n * if (eventType === 'contractor/submit/done') {\n * // Contractor onboarding complete — navigate to your next screen\n * }\n * }}\n * />\n * )\n * }\n * ```\n */\nexport const OnboardingFlow = ({ companyId, onEvent, defaultValues }: OnboardingFlowProps) => {\n const onboardingFlow = useMemo(\n () =>\n createMachine(\n 'list',\n onboardingMachine,\n (initialContext: OnboardingFlowContextInterface) => ({\n ...initialContext,\n component: ContractorListContextual,\n companyId,\n defaultValues,\n selfOnboarding: false,\n }),\n ),\n [companyId, defaultValues],\n )\n return <Flow machine={onboardingFlow} onEvent={onEvent} />\n}\n"],"names":["OnboardingFlow","companyId","onEvent","defaultValues","onboardingFlow","useMemo","createMachine","onboardingMachine","initialContext","ContractorListContextual","jsx","Flow"],"mappings":";;;;;;AAgFO,MAAMA,IAAiB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,eAAAC,QAAyC;AAC5F,QAAMC,IAAiBC;AAAA,IACrB,MACEC;AAAA,MACE;AAAA,MACAC;AAAA,MACA,CAACC,OAAoD;AAAA,QACnD,GAAGA;AAAA,QACH,WAAWC;AAAA,QACX,WAAAR;AAAA,QACA,eAAAE;AAAA,QACA,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,IAEJ,CAACF,GAAWE,CAAa;AAAA,EAAA;AAE3B,SAAO,gBAAAO,EAACC,GAAA,EAAK,SAASP,GAAgB,SAAAF,EAAA,CAAkB;AAC1D;"}
@@ -34,6 +34,8 @@ export interface OnboardingFlowContextInterface extends FlowContextInterface {
34
34
  defaultValues?: OnboardingFlowDefaultValues;
35
35
  /** True when the contractor will be self-onboarding; switches the flow to the shorter self-onboarding path. */
36
36
  selfOnboarding?: boolean;
37
+ /** True while the new hire report step should be shown; false once the contractor has advanced past the admin's initial onboarding pass. */
38
+ showNewHireReport?: boolean;
37
39
  /** Success message to display on the contractor list when returning from a completed sub-flow. */
38
40
  successMessage?: string;
39
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OnboardingFlowComponents.js","sources":["../../../../src/components/Contractor/OnboardingFlow/OnboardingFlowComponents.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { ContractorList } from '../ContractorList'\nimport { ContractorProfile } from '../Profile'\nimport { Address } from '../Address'\nimport { PaymentMethod } from '../PaymentMethod/PaymentMethod'\nimport { NewHireReport } from '../NewHireReport/NewHireReport'\nimport { ContractorSubmit } from '../Submit/Submit'\nimport type { ContractorDetailsFormData } from '../Profile/shared'\nimport type { AddressDefaultValues } from '../Address'\nimport { useFlow, type FlowContextInterface } from '@/components/Flow/useFlow'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { ensureRequired } from '@/helpers/ensureRequired'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\n\n/**\n * Default pre-fill values for the contractor onboarding flow.\n * At least one of `profile` or `address` must be provided.\n *\n * @public\n */\nexport type OnboardingFlowDefaultValues = RequireAtLeastOne<{\n profile?: Partial<ContractorDetailsFormData>\n address?: AddressDefaultValues\n}>\n/**\n * Props for {@link OnboardingFlow}.\n *\n * @public\n */\nexport interface OnboardingFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** Default values for individual flow step components — `profile` and/or `address` sub-objects. */\n defaultValues?: RequireAtLeastOne<OnboardingFlowDefaultValues>\n}\n/** @internal */\nexport interface OnboardingFlowContextInterface extends FlowContextInterface {\n /** The associated company identifier. */\n companyId: string\n /** The contractor currently being onboarded; populated once the profile step creates or selects one. */\n contractorId?: string\n /** Default values for individual flow step components. */\n defaultValues?: OnboardingFlowDefaultValues\n /** True when the contractor will be self-onboarding; switches the flow to the shorter self-onboarding path. */\n selfOnboarding?: boolean\n /** Success message to display on the contractor list when returning from a completed sub-flow. */\n successMessage?: string\n}\n\n/** @internal */\nexport function ContractorListContextual() {\n const { companyId, onEvent, successMessage } = useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorList\n onEvent={onEvent}\n companyId={ensureRequired(companyId)}\n successMessage={successMessage}\n />\n )\n}\n\n/** @internal */\nexport function ProfileContextual() {\n const { companyId, onEvent, contractorId, defaultValues } =\n useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorProfile\n onEvent={onEvent}\n companyId={ensureRequired(companyId)}\n contractorId={contractorId}\n defaultValues={defaultValues?.profile}\n />\n )\n}\n\n/** @internal */\nexport function AddressContextual() {\n const { onEvent, contractorId, defaultValues } = useFlow<OnboardingFlowContextInterface>()\n return (\n <Address\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n defaultValues={defaultValues?.address}\n />\n )\n}\n/** @internal */\nexport function PaymentMethodContextual() {\n const { onEvent, contractorId } = useFlow<OnboardingFlowContextInterface>()\n return <PaymentMethod onEvent={onEvent} contractorId={ensureRequired(contractorId)} />\n}\n/** @internal */\nexport function NewHireReportContextual() {\n const { onEvent, contractorId, selfOnboarding } = useFlow<OnboardingFlowContextInterface>()\n return (\n <NewHireReport\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n selfOnboarding={selfOnboarding}\n />\n )\n}\n/** @internal */\nexport function SubmitContextual() {\n const { onEvent, contractorId, selfOnboarding } = useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorSubmit\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n selfOnboarding={selfOnboarding}\n />\n )\n}\n\n/** @internal */\nexport function ProgressBarCta() {\n const { onEvent } = useFlow<OnboardingFlowContextInterface>()\n const { Button } = useComponentContext()\n useI18n('Contractor.ContractorList')\n const { t } = useTranslation('Contractor.ContractorList')\n return (\n <Button\n onClick={() => {\n onEvent(componentEvents.CANCEL)\n }}\n variant=\"secondary\"\n >\n {t('progressBarCta')}\n </Button>\n )\n}\n"],"names":["ContractorListContextual","companyId","onEvent","successMessage","useFlow","jsx","ContractorList","ensureRequired","ProfileContextual","contractorId","defaultValues","ContractorProfile","AddressContextual","Address","PaymentMethodContextual","PaymentMethod","NewHireReportContextual","selfOnboarding","NewHireReport","SubmitContextual","ContractorSubmit","ProgressBarCta","Button","useComponentContext","useI18n","t","useTranslation","componentEvents"],"mappings":";;;;;;;;;;;;;AAqDO,SAASA,IAA2B;AACzC,QAAM,EAAE,WAAAC,GAAW,SAAAC,GAAS,gBAAAC,EAAA,IAAmBC,EAAA;AAC/C,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAAJ;AAAA,MACA,WAAWK,EAAeN,CAAS;AAAA,MACnC,gBAAAE;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASK,IAAoB;AAClC,QAAM,EAAE,WAAAP,GAAW,SAAAC,GAAS,cAAAO,GAAc,eAAAC,EAAA,IACxCN,EAAA;AACF,SACE,gBAAAC;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,SAAAT;AAAA,MACA,WAAWK,EAAeN,CAAS;AAAA,MACnC,cAAAQ;AAAA,MACA,eAAeC,GAAe;AAAA,IAAA;AAAA,EAAA;AAGpC;AAGO,SAASE,IAAoB;AAClC,QAAM,EAAE,SAAAV,GAAS,cAAAO,GAAc,eAAAC,EAAA,IAAkBN,EAAA;AACjD,SACE,gBAAAC;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,SAAAX;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,eAAeC,GAAe;AAAA,IAAA;AAAA,EAAA;AAGpC;AAEO,SAASI,IAA0B;AACxC,QAAM,EAAE,SAAAZ,GAAS,cAAAO,EAAA,IAAiBL,EAAA;AAClC,2BAAQW,GAAA,EAAc,SAAAb,GAAkB,cAAcK,EAAeE,CAAY,GAAG;AACtF;AAEO,SAASO,IAA0B;AACxC,QAAM,EAAE,SAAAd,GAAS,cAAAO,GAAc,gBAAAQ,EAAA,IAAmBb,EAAA;AAClD,SACE,gBAAAC;AAAA,IAACa;AAAA,IAAA;AAAA,MACC,SAAAhB;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,gBAAAQ;AAAA,IAAA;AAAA,EAAA;AAGN;AAEO,SAASE,IAAmB;AACjC,QAAM,EAAE,SAAAjB,GAAS,cAAAO,GAAc,gBAAAQ,EAAA,IAAmBb,EAAA;AAClD,SACE,gBAAAC;AAAA,IAACe;AAAA,IAAA;AAAA,MACC,SAAAlB;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,gBAAAQ;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASI,IAAiB;AAC/B,QAAM,EAAE,SAAAnB,EAAA,IAAYE,EAAA,GACd,EAAE,QAAAkB,EAAA,IAAWC,EAAA;AACnB,EAAAC,EAAQ,2BAA2B;AACnC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,2BAA2B;AACxD,SACE,gBAAArB;AAAA,IAACiB;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AACb,QAAApB,EAAQyB,EAAgB,MAAM;AAAA,MAChC;AAAA,MACA,SAAQ;AAAA,MAEP,YAAE,gBAAgB;AAAA,IAAA;AAAA,EAAA;AAGzB;"}
1
+ {"version":3,"file":"OnboardingFlowComponents.js","sources":["../../../../src/components/Contractor/OnboardingFlow/OnboardingFlowComponents.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { ContractorList } from '../ContractorList'\nimport { ContractorProfile } from '../Profile'\nimport { Address } from '../Address'\nimport { PaymentMethod } from '../PaymentMethod/PaymentMethod'\nimport { NewHireReport } from '../NewHireReport/NewHireReport'\nimport { ContractorSubmit } from '../Submit/Submit'\nimport type { ContractorDetailsFormData } from '../Profile/shared'\nimport type { AddressDefaultValues } from '../Address'\nimport { useFlow, type FlowContextInterface } from '@/components/Flow/useFlow'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { ensureRequired } from '@/helpers/ensureRequired'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\n\n/**\n * Default pre-fill values for the contractor onboarding flow.\n * At least one of `profile` or `address` must be provided.\n *\n * @public\n */\nexport type OnboardingFlowDefaultValues = RequireAtLeastOne<{\n profile?: Partial<ContractorDetailsFormData>\n address?: AddressDefaultValues\n}>\n/**\n * Props for {@link OnboardingFlow}.\n *\n * @public\n */\nexport interface OnboardingFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** Default values for individual flow step components — `profile` and/or `address` sub-objects. */\n defaultValues?: RequireAtLeastOne<OnboardingFlowDefaultValues>\n}\n/** @internal */\nexport interface OnboardingFlowContextInterface extends FlowContextInterface {\n /** The associated company identifier. */\n companyId: string\n /** The contractor currently being onboarded; populated once the profile step creates or selects one. */\n contractorId?: string\n /** Default values for individual flow step components. */\n defaultValues?: OnboardingFlowDefaultValues\n /** True when the contractor will be self-onboarding; switches the flow to the shorter self-onboarding path. */\n selfOnboarding?: boolean\n /** True while the new hire report step should be shown; false once the contractor has advanced past the admin's initial onboarding pass. */\n showNewHireReport?: boolean\n /** Success message to display on the contractor list when returning from a completed sub-flow. */\n successMessage?: string\n}\n\n/** @internal */\nexport function ContractorListContextual() {\n const { companyId, onEvent, successMessage } = useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorList\n onEvent={onEvent}\n companyId={ensureRequired(companyId)}\n successMessage={successMessage}\n />\n )\n}\n\n/** @internal */\nexport function ProfileContextual() {\n const { companyId, onEvent, contractorId, defaultValues } =\n useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorProfile\n onEvent={onEvent}\n companyId={ensureRequired(companyId)}\n contractorId={contractorId}\n defaultValues={defaultValues?.profile}\n />\n )\n}\n\n/** @internal */\nexport function AddressContextual() {\n const { onEvent, contractorId, defaultValues } = useFlow<OnboardingFlowContextInterface>()\n return (\n <Address\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n defaultValues={defaultValues?.address}\n />\n )\n}\n/** @internal */\nexport function PaymentMethodContextual() {\n const { onEvent, contractorId } = useFlow<OnboardingFlowContextInterface>()\n return <PaymentMethod onEvent={onEvent} contractorId={ensureRequired(contractorId)} />\n}\n/** @internal */\nexport function NewHireReportContextual() {\n const { onEvent, contractorId, selfOnboarding } = useFlow<OnboardingFlowContextInterface>()\n return (\n <NewHireReport\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n selfOnboarding={selfOnboarding}\n />\n )\n}\n/** @internal */\nexport function SubmitContextual() {\n const { onEvent, contractorId, selfOnboarding } = useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorSubmit\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n selfOnboarding={selfOnboarding}\n />\n )\n}\n\n/** @internal */\nexport function ProgressBarCta() {\n const { onEvent } = useFlow<OnboardingFlowContextInterface>()\n const { Button } = useComponentContext()\n useI18n('Contractor.ContractorList')\n const { t } = useTranslation('Contractor.ContractorList')\n return (\n <Button\n onClick={() => {\n onEvent(componentEvents.CANCEL)\n }}\n variant=\"secondary\"\n >\n {t('progressBarCta')}\n </Button>\n )\n}\n"],"names":["ContractorListContextual","companyId","onEvent","successMessage","useFlow","jsx","ContractorList","ensureRequired","ProfileContextual","contractorId","defaultValues","ContractorProfile","AddressContextual","Address","PaymentMethodContextual","PaymentMethod","NewHireReportContextual","selfOnboarding","NewHireReport","SubmitContextual","ContractorSubmit","ProgressBarCta","Button","useComponentContext","useI18n","t","useTranslation","componentEvents"],"mappings":";;;;;;;;;;;;;AAuDO,SAASA,IAA2B;AACzC,QAAM,EAAE,WAAAC,GAAW,SAAAC,GAAS,gBAAAC,EAAA,IAAmBC,EAAA;AAC/C,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAAJ;AAAA,MACA,WAAWK,EAAeN,CAAS;AAAA,MACnC,gBAAAE;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASK,IAAoB;AAClC,QAAM,EAAE,WAAAP,GAAW,SAAAC,GAAS,cAAAO,GAAc,eAAAC,EAAA,IACxCN,EAAA;AACF,SACE,gBAAAC;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,SAAAT;AAAA,MACA,WAAWK,EAAeN,CAAS;AAAA,MACnC,cAAAQ;AAAA,MACA,eAAeC,GAAe;AAAA,IAAA;AAAA,EAAA;AAGpC;AAGO,SAASE,IAAoB;AAClC,QAAM,EAAE,SAAAV,GAAS,cAAAO,GAAc,eAAAC,EAAA,IAAkBN,EAAA;AACjD,SACE,gBAAAC;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,SAAAX;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,eAAeC,GAAe;AAAA,IAAA;AAAA,EAAA;AAGpC;AAEO,SAASI,IAA0B;AACxC,QAAM,EAAE,SAAAZ,GAAS,cAAAO,EAAA,IAAiBL,EAAA;AAClC,2BAAQW,GAAA,EAAc,SAAAb,GAAkB,cAAcK,EAAeE,CAAY,GAAG;AACtF;AAEO,SAASO,IAA0B;AACxC,QAAM,EAAE,SAAAd,GAAS,cAAAO,GAAc,gBAAAQ,EAAA,IAAmBb,EAAA;AAClD,SACE,gBAAAC;AAAA,IAACa;AAAA,IAAA;AAAA,MACC,SAAAhB;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,gBAAAQ;AAAA,IAAA;AAAA,EAAA;AAGN;AAEO,SAASE,IAAmB;AACjC,QAAM,EAAE,SAAAjB,GAAS,cAAAO,GAAc,gBAAAQ,EAAA,IAAmBb,EAAA;AAClD,SACE,gBAAAC;AAAA,IAACe;AAAA,IAAA;AAAA,MACC,SAAAlB;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,gBAAAQ;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASI,IAAiB;AAC/B,QAAM,EAAE,SAAAnB,EAAA,IAAYE,EAAA,GACd,EAAE,QAAAkB,EAAA,IAAWC,EAAA;AACnB,EAAAC,EAAQ,2BAA2B;AACnC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,2BAA2B;AACxD,SACE,gBAAArB;AAAA,IAACiB;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AACb,QAAApB,EAAQyB,EAAgB,MAAM;AAAA,MAChC;AAAA,MACA,SAAQ;AAAA,MAEP,YAAE,gBAAgB;AAAA,IAAA;AAAA,EAAA;AAGzB;"}
@@ -1,136 +1,206 @@
1
- import { state as a, transition as t, reduce as r, guard as i } from "robot3";
2
- import { ContractorListContextual as l, AddressContextual as T, NewHireReportContextual as O, ProfileContextual as p, ProgressBarCta as R, SubmitContextual as C, PaymentMethodContextual as m } from "./OnboardingFlowComponents.js";
3
- import { componentEvents as n } from "../../../shared/constants.js";
4
- const u = 5, E = 3, s = (o, e = u) => ({
5
- type: "progress",
6
- currentStep: o,
7
- totalSteps: e,
8
- cta: R
9
- }), d = (o) => (e) => ({
10
- ...e,
11
- ...o
12
- }), c = () => t(
1
+ import { state as d, transition as r, reduce as t, guard as i } from "robot3";
2
+ import { ContractorListContextual as f, SubmitContextual as l, NewHireReportContextual as R, PaymentMethodContextual as h, AddressContextual as g, ProfileContextual as N, ProgressBarCta as b } from "./OnboardingFlowComponents.js";
3
+ import { componentEvents as n, ContractorOnboardingStatus as u } from "../../../shared/constants.js";
4
+ const T = /* @__PURE__ */ new Set([
5
+ u.ADMIN_ONBOARDING_INCOMPLETE,
6
+ u.SELF_ONBOARDING_NOT_INVITED
7
+ ]), O = (e) => !e || T.has(e), m = (e, o) => {
8
+ const a = ["profile"];
9
+ return e || a.push("address", "paymentMethod"), o && a.push("newHireReport"), a.push("submit"), a;
10
+ }, s = (e, {
11
+ selfOnboarding: o = !1,
12
+ showNewHireReport: a = !0
13
+ } = {}) => {
14
+ const c = m(o, a);
15
+ return {
16
+ type: "progress",
17
+ currentStep: c.indexOf(e) + 1,
18
+ totalSteps: c.length,
19
+ cta: b
20
+ };
21
+ }, w = (e) => (o) => ({
22
+ ...o,
23
+ ...e
24
+ }), p = () => r(
13
25
  n.CANCEL,
14
26
  "list",
15
- r(
16
- d({
17
- component: l,
27
+ t(
28
+ w({
29
+ component: f,
18
30
  header: null,
19
31
  contractorId: void 0,
20
32
  successMessage: void 0
21
33
  })
22
34
  )
23
- ), g = {
24
- list: a(
25
- t(
35
+ ), H = {
36
+ list: d(
37
+ r(
26
38
  n.CONTRACTOR_CREATE,
27
39
  "profile",
28
- r(
29
- d({
30
- component: p,
31
- header: s(1),
40
+ t(
41
+ w({
42
+ component: N,
43
+ header: s("profile"),
32
44
  contractorId: void 0,
33
45
  successMessage: void 0
34
46
  })
35
47
  )
36
48
  ),
37
- t(
49
+ r(
38
50
  n.CONTRACTOR_UPDATE,
39
51
  "profile",
40
- r(
41
- (o, e) => ({
42
- ...o,
43
- component: p,
44
- header: s(1),
45
- contractorId: e.payload.contractorId,
52
+ t(
53
+ (e, o) => ({
54
+ ...e,
55
+ component: N,
56
+ header: s("profile"),
57
+ contractorId: o.payload.contractorId,
46
58
  successMessage: void 0
47
59
  })
48
60
  )
49
61
  )
50
62
  ),
51
- profile: a(
52
- c(),
53
- t(
63
+ profile: d(
64
+ p(),
65
+ r(
54
66
  n.CONTRACTOR_PROFILE_DONE,
55
67
  "address",
56
- r(
57
- (o, e) => ({
58
- ...o,
59
- component: T,
60
- header: s(2),
61
- contractorId: e.payload.contractorId,
62
- selfOnboarding: e.payload.selfOnboarding
63
- })
68
+ t(
69
+ (e, o) => {
70
+ const a = O(o.payload.onboardingStatus);
71
+ return {
72
+ ...e,
73
+ component: g,
74
+ header: s("address", {
75
+ selfOnboarding: o.payload.selfOnboarding,
76
+ showNewHireReport: a
77
+ }),
78
+ contractorId: o.payload.contractorId,
79
+ selfOnboarding: o.payload.selfOnboarding,
80
+ showNewHireReport: a
81
+ };
82
+ }
64
83
  ),
65
- i((o, e) => !e.payload.selfOnboarding)
84
+ i((e, o) => !o.payload.selfOnboarding)
66
85
  ),
67
- t(
86
+ r(
68
87
  n.CONTRACTOR_PROFILE_DONE,
69
88
  "newHireReport",
70
- r(
71
- (o, e) => ({
72
- ...o,
73
- component: O,
74
- header: s(2, E),
75
- contractorId: e.payload.contractorId,
76
- selfOnboarding: e.payload.selfOnboarding
89
+ t(
90
+ (e, o) => ({
91
+ ...e,
92
+ component: R,
93
+ header: s("newHireReport", {
94
+ selfOnboarding: o.payload.selfOnboarding,
95
+ showNewHireReport: !0
96
+ }),
97
+ contractorId: o.payload.contractorId,
98
+ selfOnboarding: o.payload.selfOnboarding,
99
+ showNewHireReport: !0
77
100
  })
78
101
  ),
79
- i((o, e) => e.payload.selfOnboarding)
102
+ i(
103
+ (e, o) => o.payload.selfOnboarding && O(o.payload.onboardingStatus)
104
+ )
105
+ ),
106
+ r(
107
+ n.CONTRACTOR_PROFILE_DONE,
108
+ "submit",
109
+ t(
110
+ (e, o) => ({
111
+ ...e,
112
+ component: l,
113
+ header: s("submit", {
114
+ selfOnboarding: o.payload.selfOnboarding,
115
+ showNewHireReport: !1
116
+ }),
117
+ contractorId: o.payload.contractorId,
118
+ selfOnboarding: o.payload.selfOnboarding,
119
+ showNewHireReport: !1
120
+ })
121
+ ),
122
+ i(
123
+ (e, o) => o.payload.selfOnboarding && !O(o.payload.onboardingStatus)
124
+ )
80
125
  )
81
126
  ),
82
- address: a(
83
- c(),
84
- t(
127
+ address: d(
128
+ p(),
129
+ r(
85
130
  n.CONTRACTOR_ADDRESS_DONE,
86
131
  "paymentMethod",
87
- r(d({ component: m, header: s(3) }))
132
+ t((e) => ({
133
+ ...e,
134
+ component: h,
135
+ header: s("paymentMethod", {
136
+ selfOnboarding: e.selfOnboarding,
137
+ showNewHireReport: e.showNewHireReport
138
+ })
139
+ }))
88
140
  )
89
141
  ),
90
- paymentMethod: a(
91
- c(),
92
- t(
142
+ paymentMethod: d(
143
+ p(),
144
+ r(
93
145
  n.CONTRACTOR_PAYMENT_METHOD_DONE,
94
146
  "newHireReport",
95
- r(
96
- d({
97
- component: O,
98
- header: s(4)
147
+ t((e) => ({
148
+ ...e,
149
+ component: R,
150
+ header: s("newHireReport", {
151
+ selfOnboarding: e.selfOnboarding,
152
+ showNewHireReport: e.showNewHireReport
99
153
  })
100
- )
154
+ })),
155
+ i((e) => e.showNewHireReport !== !1)
156
+ ),
157
+ r(
158
+ n.CONTRACTOR_PAYMENT_METHOD_DONE,
159
+ "submit",
160
+ t((e) => ({
161
+ ...e,
162
+ component: l,
163
+ header: s("submit", {
164
+ selfOnboarding: e.selfOnboarding,
165
+ showNewHireReport: e.showNewHireReport
166
+ })
167
+ })),
168
+ i((e) => e.showNewHireReport === !1)
101
169
  )
102
170
  ),
103
- newHireReport: a(
104
- c(),
105
- t(
171
+ newHireReport: d(
172
+ p(),
173
+ r(
106
174
  n.CONTRACTOR_NEW_HIRE_REPORT_DONE,
107
175
  "submit",
108
- r(
109
- d({
110
- component: C,
111
- header: s(5)
176
+ t((e) => ({
177
+ ...e,
178
+ component: l,
179
+ header: s("submit", {
180
+ selfOnboarding: e.selfOnboarding,
181
+ showNewHireReport: e.showNewHireReport
112
182
  })
113
- )
183
+ }))
114
184
  )
115
185
  ),
116
- submit: a(
117
- c(),
118
- t(
186
+ submit: d(
187
+ p(),
188
+ r(
119
189
  n.CONTRACTOR_SUBMIT_DONE,
120
190
  "list",
121
- r(
122
- (o, e) => ({
123
- ...o,
124
- component: l,
191
+ t(
192
+ (e, o) => ({
193
+ ...e,
194
+ component: f,
125
195
  header: null,
126
- successMessage: e.payload.message
196
+ successMessage: o.payload.message
127
197
  })
128
198
  )
129
199
  )
130
200
  ),
131
- final: a()
201
+ final: d()
132
202
  };
133
203
  export {
134
- g as onboardingMachine
204
+ H as onboardingMachine
135
205
  };
136
206
  //# sourceMappingURL=onboardingStateMachine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"onboardingStateMachine.js","sources":["../../../../src/components/Contractor/OnboardingFlow/onboardingStateMachine.ts"],"sourcesContent":["import { transition, reduce, state, guard } from 'robot3'\nimport {\n AddressContextual,\n ContractorListContextual,\n NewHireReportContextual,\n PaymentMethodContextual,\n ProfileContextual,\n ProgressBarCta,\n SubmitContextual,\n type OnboardingFlowContextInterface,\n} from './OnboardingFlowComponents'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport type { FlowHeaderConfig } from '@/components/Flow/useFlow'\n\ntype EventPayloads = {\n [componentEvents.CONTRACTOR_UPDATE]: {\n contractorId: string\n }\n [componentEvents.CONTRACTOR_PROFILE_DONE]: { contractorId: string; selfOnboarding: boolean }\n [componentEvents.CONTRACTOR_SUBMIT_DONE]: { message?: string }\n}\n\nconst TOTAL_STEPS_DEFAULT = 5\nconst TOTAL_STEPS_SELF_ONBOARDING = 3\n\nconst progressHeader = (\n currentStep: number,\n totalSteps: number = TOTAL_STEPS_DEFAULT,\n): FlowHeaderConfig => ({\n type: 'progress',\n currentStep,\n totalSteps,\n cta: ProgressBarCta,\n})\n\nconst createReducer = (props: Partial<OnboardingFlowContextInterface>) => {\n return (ctx: OnboardingFlowContextInterface): OnboardingFlowContextInterface => ({\n ...ctx,\n ...props,\n })\n}\n\nconst cancelTransition = () =>\n transition(\n componentEvents.CANCEL,\n 'list',\n reduce(\n createReducer({\n component: ContractorListContextual,\n header: null,\n contractorId: undefined,\n successMessage: undefined,\n }),\n ),\n )\n\n/** @internal */\nexport const onboardingMachine = {\n list: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_CREATE,\n 'profile',\n reduce(\n createReducer({\n component: ProfileContextual,\n header: progressHeader(1),\n contractorId: undefined,\n successMessage: undefined,\n }),\n ),\n ),\n transition(\n componentEvents.CONTRACTOR_UPDATE,\n 'profile',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_UPDATE>,\n ): OnboardingFlowContextInterface => {\n return {\n ...ctx,\n component: ProfileContextual,\n header: progressHeader(1),\n contractorId: ev.payload.contractorId,\n successMessage: undefined,\n }\n },\n ),\n ),\n ),\n profile: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_PROFILE_DONE,\n 'address',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_PROFILE_DONE>,\n ): OnboardingFlowContextInterface => {\n return {\n ...ctx,\n component: AddressContextual,\n header: progressHeader(2),\n contractorId: ev.payload.contractorId,\n selfOnboarding: ev.payload.selfOnboarding,\n }\n },\n ),\n guard((ctx, ev) => !ev.payload.selfOnboarding),\n ),\n transition(\n componentEvents.CONTRACTOR_PROFILE_DONE,\n 'newHireReport',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_PROFILE_DONE>,\n ): OnboardingFlowContextInterface => {\n return {\n ...ctx,\n component: NewHireReportContextual,\n header: progressHeader(2, TOTAL_STEPS_SELF_ONBOARDING),\n contractorId: ev.payload.contractorId,\n selfOnboarding: ev.payload.selfOnboarding,\n }\n },\n ),\n guard((ctx, ev) => ev.payload.selfOnboarding),\n ),\n ),\n address: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_ADDRESS_DONE,\n 'paymentMethod',\n reduce(createReducer({ component: PaymentMethodContextual, header: progressHeader(3) })),\n ),\n ),\n paymentMethod: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_PAYMENT_METHOD_DONE,\n 'newHireReport',\n reduce(\n createReducer({\n component: NewHireReportContextual,\n header: progressHeader(4),\n }),\n ),\n ),\n ),\n newHireReport: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_NEW_HIRE_REPORT_DONE,\n 'submit',\n reduce(\n createReducer({\n component: SubmitContextual,\n header: progressHeader(5),\n }),\n ),\n ),\n ),\n submit: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_SUBMIT_DONE,\n 'list',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_SUBMIT_DONE>,\n ): OnboardingFlowContextInterface => {\n return {\n ...ctx,\n component: ContractorListContextual,\n header: null,\n successMessage: ev.payload.message,\n }\n },\n ),\n ),\n ),\n final: state<MachineTransition>(),\n}\n"],"names":["TOTAL_STEPS_DEFAULT","TOTAL_STEPS_SELF_ONBOARDING","progressHeader","currentStep","totalSteps","ProgressBarCta","createReducer","props","ctx","cancelTransition","transition","componentEvents","reduce","ContractorListContextual","onboardingMachine","state","ProfileContextual","ev","AddressContextual","guard","NewHireReportContextual","PaymentMethodContextual","SubmitContextual"],"mappings":"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"}
1
+ {"version":3,"file":"onboardingStateMachine.js","sources":["../../../../src/components/Contractor/OnboardingFlow/onboardingStateMachine.ts"],"sourcesContent":["import { transition, reduce, state, guard } from 'robot3'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport {\n AddressContextual,\n ContractorListContextual,\n NewHireReportContextual,\n PaymentMethodContextual,\n ProfileContextual,\n ProgressBarCta,\n SubmitContextual,\n type OnboardingFlowContextInterface,\n} from './OnboardingFlowComponents'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport type { FlowHeaderConfig } from '@/components/Flow/useFlow'\n\ntype EventPayloads = {\n [componentEvents.CONTRACTOR_UPDATE]: {\n contractorId: string\n }\n [componentEvents.CONTRACTOR_PROFILE_DONE]: {\n contractorId: string\n onboardingStatus?: Contractor['onboardingStatus']\n selfOnboarding: boolean\n }\n [componentEvents.CONTRACTOR_SUBMIT_DONE]: { message?: string }\n}\n\n// The new hire report belongs to the contractor's initial onboarding pass only.\n// These are the statuses where the admin still owns first-time setup; once the\n// contractor advances to admin review, an active self-onboarding stage, or\n// completion, the report is settled and the step is skipped. A missing status\n// (a just-created contractor) counts as initial. We read the post-save status\n// off the profile/done contractor because the API auto-advances to\n// admin_onboarding_review the instant the last required field is saved.\nconst INITIAL_ONBOARDING_STATUSES = new Set<Contractor['onboardingStatus']>([\n ContractorOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE,\n ContractorOnboardingStatus.SELF_ONBOARDING_NOT_INVITED,\n])\n\nconst showNewHireReportForStatus = (status?: Contractor['onboardingStatus']): boolean =>\n !status || INITIAL_ONBOARDING_STATUSES.has(status)\n\ntype OnboardingStep = 'profile' | 'address' | 'paymentMethod' | 'newHireReport' | 'submit'\n\n// The flow is a linear list of steps. The admin-only steps (address, payment\n// method) drop out when the contractor self-onboards, and the new hire report\n// drops out once past the initial onboarding pass.\nconst stepsForPath = (selfOnboarding: boolean, showNewHireReport: boolean): OnboardingStep[] => {\n const steps: OnboardingStep[] = ['profile']\n if (!selfOnboarding) steps.push('address', 'paymentMethod')\n if (showNewHireReport) steps.push('newHireReport')\n steps.push('submit')\n return steps\n}\n\n// The defaults describe the profile step, which renders before the path is\n// known: assume the longest path so it reads \"1 of 5\".\nconst progressHeader = (\n currentStep: OnboardingStep,\n {\n selfOnboarding = false,\n showNewHireReport = true,\n }: { selfOnboarding?: boolean; showNewHireReport?: boolean } = {},\n): FlowHeaderConfig => {\n const steps = stepsForPath(selfOnboarding, showNewHireReport)\n return {\n type: 'progress',\n currentStep: steps.indexOf(currentStep) + 1,\n totalSteps: steps.length,\n cta: ProgressBarCta,\n }\n}\n\nconst createReducer = (props: Partial<OnboardingFlowContextInterface>) => {\n return (ctx: OnboardingFlowContextInterface): OnboardingFlowContextInterface => ({\n ...ctx,\n ...props,\n })\n}\n\nconst cancelTransition = () =>\n transition(\n componentEvents.CANCEL,\n 'list',\n reduce(\n createReducer({\n component: ContractorListContextual,\n header: null,\n contractorId: undefined,\n successMessage: undefined,\n }),\n ),\n )\n\n/** @internal */\nexport const onboardingMachine = {\n list: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_CREATE,\n 'profile',\n reduce(\n createReducer({\n component: ProfileContextual,\n header: progressHeader('profile'),\n contractorId: undefined,\n successMessage: undefined,\n }),\n ),\n ),\n transition(\n componentEvents.CONTRACTOR_UPDATE,\n 'profile',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_UPDATE>,\n ): OnboardingFlowContextInterface => {\n return {\n ...ctx,\n component: ProfileContextual,\n header: progressHeader('profile'),\n contractorId: ev.payload.contractorId,\n successMessage: undefined,\n }\n },\n ),\n ),\n ),\n profile: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_PROFILE_DONE,\n 'address',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_PROFILE_DONE>,\n ): OnboardingFlowContextInterface => {\n const showNewHireReport = showNewHireReportForStatus(ev.payload.onboardingStatus)\n return {\n ...ctx,\n component: AddressContextual,\n header: progressHeader('address', {\n selfOnboarding: ev.payload.selfOnboarding,\n showNewHireReport,\n }),\n contractorId: ev.payload.contractorId,\n selfOnboarding: ev.payload.selfOnboarding,\n showNewHireReport,\n }\n },\n ),\n guard((ctx, ev) => !ev.payload.selfOnboarding),\n ),\n transition(\n componentEvents.CONTRACTOR_PROFILE_DONE,\n 'newHireReport',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_PROFILE_DONE>,\n ): OnboardingFlowContextInterface => {\n return {\n ...ctx,\n component: NewHireReportContextual,\n header: progressHeader('newHireReport', {\n selfOnboarding: ev.payload.selfOnboarding,\n showNewHireReport: true,\n }),\n contractorId: ev.payload.contractorId,\n selfOnboarding: ev.payload.selfOnboarding,\n showNewHireReport: true,\n }\n },\n ),\n guard(\n (ctx, ev) =>\n ev.payload.selfOnboarding && showNewHireReportForStatus(ev.payload.onboardingStatus),\n ),\n ),\n transition(\n componentEvents.CONTRACTOR_PROFILE_DONE,\n 'submit',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_PROFILE_DONE>,\n ): OnboardingFlowContextInterface => {\n return {\n ...ctx,\n component: SubmitContextual,\n header: progressHeader('submit', {\n selfOnboarding: ev.payload.selfOnboarding,\n showNewHireReport: false,\n }),\n contractorId: ev.payload.contractorId,\n selfOnboarding: ev.payload.selfOnboarding,\n showNewHireReport: false,\n }\n },\n ),\n guard(\n (ctx, ev) =>\n ev.payload.selfOnboarding && !showNewHireReportForStatus(ev.payload.onboardingStatus),\n ),\n ),\n ),\n address: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_ADDRESS_DONE,\n 'paymentMethod',\n reduce((ctx: OnboardingFlowContextInterface): OnboardingFlowContextInterface => ({\n ...ctx,\n component: PaymentMethodContextual,\n header: progressHeader('paymentMethod', {\n selfOnboarding: ctx.selfOnboarding,\n showNewHireReport: ctx.showNewHireReport,\n }),\n })),\n ),\n ),\n paymentMethod: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_PAYMENT_METHOD_DONE,\n 'newHireReport',\n reduce((ctx: OnboardingFlowContextInterface): OnboardingFlowContextInterface => ({\n ...ctx,\n component: NewHireReportContextual,\n header: progressHeader('newHireReport', {\n selfOnboarding: ctx.selfOnboarding,\n showNewHireReport: ctx.showNewHireReport,\n }),\n })),\n guard((ctx: OnboardingFlowContextInterface) => ctx.showNewHireReport !== false),\n ),\n transition(\n componentEvents.CONTRACTOR_PAYMENT_METHOD_DONE,\n 'submit',\n reduce((ctx: OnboardingFlowContextInterface): OnboardingFlowContextInterface => ({\n ...ctx,\n component: SubmitContextual,\n header: progressHeader('submit', {\n selfOnboarding: ctx.selfOnboarding,\n showNewHireReport: ctx.showNewHireReport,\n }),\n })),\n guard((ctx: OnboardingFlowContextInterface) => ctx.showNewHireReport === false),\n ),\n ),\n newHireReport: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_NEW_HIRE_REPORT_DONE,\n 'submit',\n reduce((ctx: OnboardingFlowContextInterface): OnboardingFlowContextInterface => ({\n ...ctx,\n component: SubmitContextual,\n header: progressHeader('submit', {\n selfOnboarding: ctx.selfOnboarding,\n showNewHireReport: ctx.showNewHireReport,\n }),\n })),\n ),\n ),\n submit: state<MachineTransition>(\n cancelTransition(),\n transition(\n componentEvents.CONTRACTOR_SUBMIT_DONE,\n 'list',\n reduce(\n (\n ctx: OnboardingFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_SUBMIT_DONE>,\n ): OnboardingFlowContextInterface => {\n return {\n ...ctx,\n component: ContractorListContextual,\n header: null,\n successMessage: ev.payload.message,\n }\n },\n ),\n ),\n ),\n final: state<MachineTransition>(),\n}\n"],"names":["INITIAL_ONBOARDING_STATUSES","ContractorOnboardingStatus","showNewHireReportForStatus","status","stepsForPath","selfOnboarding","showNewHireReport","steps","progressHeader","currentStep","ProgressBarCta","createReducer","props","ctx","cancelTransition","transition","componentEvents","reduce","ContractorListContextual","onboardingMachine","state","ProfileContextual","ev","AddressContextual","guard","NewHireReportContextual","SubmitContextual","PaymentMethodContextual"],"mappings":"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"}
@@ -36,7 +36,7 @@ export type ContractorAccountType = (typeof ACCOUNT_TYPES)[number];
36
36
  *
37
37
  * @public
38
38
  */
39
- export type ContractorBankAccountFormField = "name" | "accountNumber" | "routingNumber" | "accountType";
39
+ export type ContractorBankAccountFormField = "accountNumber" | "accountType" | "name" | "routingNumber";
40
40
  /**
41
41
  * Shape of the values managed by the contractor bank account form.
42
42
  *
@@ -27,7 +27,7 @@ export declare const PAYMENT_METHOD_TYPES: readonly ["Direct Deposit", "Check"];
27
27
  *
28
28
  * @public
29
29
  */
30
- export type ContractorPaymentMethodFormType = (typeof PAYMENT_METHOD_TYPES)[number];
30
+ export type ContractorPaymentMethodFormType = "Check" | "Direct Deposit";
31
31
  /**
32
32
  * Field names accepted by the contractor payment method form.
33
33
  *
@@ -1 +1 @@
1
- {"version":3,"file":"contractorPaymentMethodSchema.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n buildFormSchema,\n type RequiredFieldConfig,\n} from '@/partner-hook-utils/form/buildFormSchema'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/**\n * Validation error codes emitted by the contractor payment method form schema.\n * Map these codes to localized copy in `validationMessages` when composing the\n * hook.\n *\n * @public\n */\nexport const ContractorPaymentMethodErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the contractor payment\n * method form schema.\n *\n * @public\n */\nexport type ContractorPaymentMethodErrorCode =\n (typeof ContractorPaymentMethodErrorCodes)[keyof typeof ContractorPaymentMethodErrorCodes]\n\n/**\n * Supported payment method type values: direct deposit and check.\n *\n * @public\n */\nexport const PAYMENT_METHOD_TYPES = [PAYMENT_METHODS.directDeposit, PAYMENT_METHODS.check] as const\n\n/**\n * Union of payment method type values that the form accepts.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormType = (typeof PAYMENT_METHOD_TYPES)[number]\n\nconst fieldValidators = {\n type: z.enum(PAYMENT_METHOD_TYPES),\n}\n\n/**\n * Field names accepted by the contractor payment method form.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormField = keyof typeof fieldValidators\n\n/**\n * Shape of the values managed by the contractor payment method form.\n *\n * @public\n * @interface\n */\nexport type ContractorPaymentMethodFormData = {\n [K in keyof typeof fieldValidators]: z.infer<(typeof fieldValidators)[K]>\n}\n\n/**\n * Shape of the validated values produced by the contractor payment method form\n * on submit. Internal seam between the form's input and parsed-output types; the\n * two coincide today, and partners consume the parsed values through\n * `form.getFormSubmissionValues` (typed as the form-data shape).\n *\n * @internal\n */\nexport type ContractorPaymentMethodFormOutputs = ContractorPaymentMethodFormData\n\nconst requiredFieldsConfig = {} satisfies RequiredFieldConfig<typeof fieldValidators>\n\n/** @internal */\nexport function createContractorPaymentMethodSchema() {\n return buildFormSchema(fieldValidators, {\n requiredFieldsConfig,\n requiredErrorCode: ContractorPaymentMethodErrorCodes.REQUIRED,\n mode: 'update',\n })\n}\n"],"names":["ContractorPaymentMethodErrorCodes","PAYMENT_METHOD_TYPES","PAYMENT_METHODS","fieldValidators","z","requiredFieldsConfig","createContractorPaymentMethodSchema","buildFormSchema"],"mappings":";;;AAcO,MAAMA,IAAoC;AAAA,EAC/C,UAAU;AACZ,GAgBaC,IAAuB,CAACC,EAAgB,eAAeA,EAAgB,KAAK,GASnFC,IAAkB;AAAA,EACtB,MAAMC,EAAE,KAAKH,CAAoB;AACnC,GA6BMI,IAAuB,CAAA;AAGtB,SAASC,IAAsC;AACpD,SAAOC,EAAgBJ,GAAiB;AAAA,IACtC,sBAAAE;AAAA,IACA,mBAAmBL,EAAkC;AAAA,IACrD,MAAM;AAAA,EAAA,CACP;AACH;"}
1
+ {"version":3,"file":"contractorPaymentMethodSchema.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n buildFormSchema,\n type RequiredFieldConfig,\n} from '@/partner-hook-utils/form/buildFormSchema'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/**\n * Validation error codes emitted by the contractor payment method form schema.\n * Map these codes to localized copy in `validationMessages` when composing the\n * hook.\n *\n * @public\n */\nexport const ContractorPaymentMethodErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the contractor payment\n * method form schema.\n *\n * @public\n */\nexport type ContractorPaymentMethodErrorCode =\n (typeof ContractorPaymentMethodErrorCodes)[keyof typeof ContractorPaymentMethodErrorCodes]\n\n/**\n * Supported payment method type values: direct deposit and check.\n *\n * @public\n */\nexport const PAYMENT_METHOD_TYPES = [PAYMENT_METHODS.directDeposit, PAYMENT_METHODS.check] as const\n\n/**\n * Union of payment method type values that the form accepts.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormType = (typeof PAYMENT_METHODS)[keyof typeof PAYMENT_METHODS]\n\nconst fieldValidators = {\n type: z.enum(PAYMENT_METHOD_TYPES),\n}\n\n/**\n * Field names accepted by the contractor payment method form.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormField = keyof typeof fieldValidators\n\n/**\n * Shape of the values managed by the contractor payment method form.\n *\n * @public\n * @interface\n */\nexport type ContractorPaymentMethodFormData = {\n [K in keyof typeof fieldValidators]: z.infer<(typeof fieldValidators)[K]>\n}\n\n/**\n * Shape of the validated values produced by the contractor payment method form\n * on submit. Internal seam between the form's input and parsed-output types; the\n * two coincide today, and partners consume the parsed values through\n * `form.getFormSubmissionValues` (typed as the form-data shape).\n *\n * @internal\n */\nexport type ContractorPaymentMethodFormOutputs = ContractorPaymentMethodFormData\n\nconst requiredFieldsConfig = {} satisfies RequiredFieldConfig<typeof fieldValidators>\n\n/** @internal */\nexport function createContractorPaymentMethodSchema() {\n return buildFormSchema(fieldValidators, {\n requiredFieldsConfig,\n requiredErrorCode: ContractorPaymentMethodErrorCodes.REQUIRED,\n mode: 'update',\n })\n}\n"],"names":["ContractorPaymentMethodErrorCodes","PAYMENT_METHOD_TYPES","PAYMENT_METHODS","fieldValidators","z","requiredFieldsConfig","createContractorPaymentMethodSchema","buildFormSchema"],"mappings":";;;AAcO,MAAMA,IAAoC;AAAA,EAC/C,UAAU;AACZ,GAgBaC,IAAuB,CAACC,EAAgB,eAAeA,EAAgB,KAAK,GASnFC,IAAkB;AAAA,EACtB,MAAMC,EAAE,KAAKH,CAAoB;AACnC,GA6BMI,IAAuB,CAAA;AAGtB,SAASC,IAAsC;AACpD,SAAOC,EAAgBJ,GAAiB;AAAA,IACtC,sBAAAE;AAAA,IACA,mBAAmBL,EAAkC;AAAA,IACrD,MAAM;AAAA,EAAA,CACP;AACH;"}
@@ -1,7 +1,7 @@
1
1
  import { ComponentType } from 'react';
2
2
  import { UseFormProps } from 'react-hook-form';
3
3
  import { ContractorPaymentMethod } from '@gusto/embedded-api/models/components/contractorpaymentmethod';
4
- import { ContractorPaymentMethodFormData } from './contractorPaymentMethodSchema';
4
+ import { ContractorPaymentMethodFormData, ContractorPaymentMethodFormType } from './contractorPaymentMethodSchema';
5
5
  import { TypeFieldProps } from './fields';
6
6
  import { BaseFormHookReady, FieldMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
7
7
  /**
@@ -114,5 +114,5 @@ export type UseContractorPaymentMethodFormResult = HookLoadingResult | UseContra
114
114
  *
115
115
  * @public
116
116
  */
117
- export type ContractorPaymentMethodFieldsMetadata = { type: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<"Check" | "Direct Deposit">; };
117
+ export type ContractorPaymentMethodFieldsMetadata = { type: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<ContractorPaymentMethodFormType>; };
118
118
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePayment.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type {\n ContractorPayments,\n PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport { useBankAccountsGet } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { EditContractorPaymentPresentation } from './EditContractorPaymentPresentation'\nimport {\n createEditContractorPaymentFormSchema,\n type EditContractorPaymentFormValues,\n} from './EditContractorPaymentFormSchema'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport { addBusinessDays } from '@/helpers/dateFormatting'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n payrollSubmitHandler,\n type ApiPayrollBlocker,\n} from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nfunction formatLocalDate(date: Date): string {\n return [\n String(date.getFullYear()).padStart(4, '0'),\n String(date.getMonth() + 1).padStart(2, '0'),\n String(date.getDate()).padStart(2, '0'),\n ].join('-')\n}\n\nfunction calculateInitialPaymentDate(speedDays: number): string {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n return formatLocalDate(addBusinessDays(today, speedDays))\n}\n\n/**\n * Props for {@link CreatePayment}.\n *\n * @public\n */\nexport interface CreatePaymentProps extends BaseComponentInterface<'Contractor.Payments.CreatePayment'> {\n /** UUID of the company for which to create a contractor payment group. */\n companyId: string\n}\n\n/**\n * Form for creating a contractor payment group, including date selection, per-contractor edits, preview, and submission blockers.\n *\n * @remarks\n * Active, fully onboarded contractors are listed for the given company. Hours and bonuses apply to hourly contractors; wages apply to fixed contractors; reimbursements apply to both. The form previews the payment group before final submission and surfaces Fast ACH submission blockers when applicable.\n *\n * Features:\n *\n * - **Payment date selection** — choose the payment date; a notice shows the resulting payment speed.\n * - **Per-contractor editing** — edit hours and bonus (hourly contractors), wage (fixed contractors), and reimbursement (all) in a modal, with a running total.\n * - **Payment method** — choose Check or Direct Deposit per contractor.\n * - **Live totals** — wage, bonus, reimbursement, and overall totals update as amounts change.\n * - **Preview before submit** — review per-contractor amounts, debit amount, debit account, debit date, contractor pay date, and the submission deadline before finalizing.\n * - **Submission blockers** — Fast ACH blockers surface inline with selectable unblock options (wire transfer or slower direct deposit); submission stays disabled until every blocker is resolved.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/payments/edit` | The edit modal was opened for a contractor. | — |\n * | `contractor/payments/update` | A contractor's payment values were updated locally. | The updated form values (hours, wage, bonus, reimbursement, payment method, etc.). |\n * | `contractor/payments/preview` | The preview API call succeeded. | The contractor payment group preview response. |\n * | `contractor/payments/backToEdit` | The user returned from preview to continue editing. | — |\n * | `contractor/payments/created` | The payment group was successfully created. | The created contractor payment group response. |\n * | `contractor/payments/rfi/respond` | The user clicked to respond to a payment blocker. | — |\n *\n * @param props - Component props including the company identifier and event handler.\n * @returns The rendered create-payment form, preview, and edit modal.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function CreateContractorPayment() {\n * return (\n * <ContractorManagement.CreatePayment\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function CreatePayment(props: CreatePaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreatePayment\">\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ companyId, dictionary, onEvent }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const [isModalOpen, setIsModalOpen] = useState(false)\n const { baseSubmitHandler } = useBase()\n const [alerts, setAlerts] = useState<Record<string, InternalAlert>>({})\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreatingContractorPaymentGroup } =\n useContractorPaymentGroupsCreateMutation()\n const {\n mutateAsync: previewContractorPaymentGroup,\n isPending: isPreviewingContractorPaymentGroup,\n } = useContractorPaymentGroupsPreviewMutation()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n const { data: bankAccounts } = useBankAccountsGet({ companyId })\n const { paymentSpeed, paymentSpeedDays } = useCompanyPaymentSpeed(companyId)\n const bankAccount = bankAccounts?.companyBankAccounts?.[0]\n\n const [paymentDate, setPaymentDate] = useState(calculateInitialPaymentDate(paymentSpeedDays))\n const hasInitializedPaymentDateRef = useRef(false)\n\n useEffect(() => {\n if (paymentSpeed && !hasInitializedPaymentDateRef.current) {\n setPaymentDate(calculateInitialPaymentDate(paymentSpeedDays))\n hasInitializedPaymentDateRef.current = true\n }\n }, [paymentSpeed, paymentSpeedDays])\n\n const initialContractorPayments: (ContractorPayments & { isTouched: boolean })[] = useMemo(\n () =>\n contractors.map(contractor => {\n const paymentMethod = contractor.paymentMethod ? contractor.paymentMethod : 'Direct Deposit'\n\n return {\n contractorUuid: contractor.uuid,\n paymentMethod,\n wage: '0',\n hours: '0',\n bonus: '0',\n reimbursement: '0',\n isTouched: false,\n }\n }),\n [contractors],\n )\n const [virtualContractorPayments, setVirtualContractorPayments] =\n useState(initialContractorPayments)\n const totals = useMemo(\n () =>\n virtualContractorPayments.reduce(\n (acc, payment) => {\n const contractor = contractors.find(c => c.uuid === payment.contractorUuid)\n const isHourly = contractor?.wageType === 'Hourly'\n const hours = Number(payment.hours || '0')\n const wage = Number(payment.wage || '0')\n const bonus = Number(payment.bonus || '0')\n const reimbursement = Number(payment.reimbursement || '0')\n const hourlyAmount = isHourly ? hours * Number(contractor.hourlyRate || '0') : 0\n const fixedWage = isHourly ? 0 : wage\n\n return {\n wage: acc.wage + fixedWage,\n bonus: acc.bonus + bonus,\n reimbursement: acc.reimbursement + reimbursement,\n total: acc.total + hourlyAmount + fixedWage + bonus + reimbursement,\n }\n },\n { wage: 0, bonus: 0, reimbursement: 0, total: 0 },\n ),\n [virtualContractorPayments, contractors],\n )\n\n const formMethods = useForm<EditContractorPaymentFormValues>({\n resolver: zodResolver(createEditContractorPaymentFormSchema()),\n defaultValues: {\n wageType: 'Hourly',\n hours: 0,\n wage: 0,\n bonus: 0,\n reimbursement: 0,\n paymentMethod: 'Direct Deposit',\n hourlyRate: 0,\n contractorUuid: '',\n contractorPaymentMethod: undefined,\n },\n })\n\n const onCreatePaymentGroup = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0 || !previewData?.creationToken) {\n return\n }\n const creationToken = previewData.creationToken\n\n const submissionBlockers: SubmissionBlockers[] = Object.entries(selectedUnblockOptions).map(\n ([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n }),\n )\n\n const requestBody: PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody = {\n checkDate: new RFCDate(paymentDate),\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n creationToken,\n ...(submissionBlockers.length > 0 && { submissionBlockers }),\n }\n\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CREATED, response.contractorPaymentGroup || {})\n })\n }\n\n const onUnblockOptionChange = (blockerType: string, value: string) => {\n setSelectedUnblockOptions(prev => ({\n ...prev,\n [blockerType]: value,\n }))\n }\n const onEditContractor = (contractorUuid: string) => {\n const contractor = contractors.find(contractor => contractor.uuid === contractorUuid)\n const contractorPayment = virtualContractorPayments.find(\n payment => payment.contractorUuid === contractorUuid,\n )\n\n const rawPaymentMethod = contractorPayment?.paymentMethod || 'Direct Deposit'\n const sanitizedPaymentMethod = ['Check', 'Direct Deposit'].includes(rawPaymentMethod)\n ? (rawPaymentMethod as 'Check' | 'Direct Deposit')\n : 'Check'\n\n formMethods.reset(\n {\n wageType: contractor?.wageType || 'Hourly',\n hours: Number(contractorPayment?.hours || '0'),\n wage: Number(contractorPayment?.wage || '0'),\n bonus: Number(contractorPayment?.bonus || '0'),\n reimbursement: Number(contractorPayment?.reimbursement || '0'),\n paymentMethod: sanitizedPaymentMethod,\n hourlyRate: Number(contractor?.hourlyRate || '0'),\n contractorUuid: contractorUuid,\n contractorPaymentMethod: contractor?.paymentMethod || undefined,\n },\n { keepDirty: false, keepValues: false },\n )\n setAlerts({})\n setIsModalOpen(true)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n }\n\n const onEditContractorSubmit = (data: EditContractorPaymentFormValues) => {\n const currentContractor = contractors.find(c => c.uuid === data.contractorUuid)\n const currentContractorPaymentMethod = currentContractor?.paymentMethod\n\n if (!['Check', 'Direct Deposit'].includes(data.paymentMethod)) {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.unsupportedPaymentMethod'),\n })\n return\n }\n\n if (currentContractorPaymentMethod === 'Check' && data.paymentMethod === 'Direct Deposit') {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.directDepositNotAvailable'),\n })\n return\n }\n\n const hasAnyPayment =\n (data.wage ?? 0) > 0 ||\n (data.hours ?? 0) > 0 ||\n (data.bonus ?? 0) > 0 ||\n (data.reimbursement ?? 0) > 0\n\n setVirtualContractorPayments(prevPayments =>\n prevPayments.map(payment =>\n payment.contractorUuid === data.contractorUuid\n ? {\n contractorUuid: payment.contractorUuid,\n wage: String(data.wage ?? 0),\n hours: String(data.hours ?? 0),\n bonus: String(data.bonus ?? 0),\n reimbursement: String(data.reimbursement ?? 0),\n paymentMethod: data.paymentMethod,\n isTouched: hasAnyPayment,\n }\n : payment,\n ),\n )\n const displayContractor = contractors.find(\n contractor => contractor.uuid === data.contractorUuid,\n )\n const displayName = DOMPurify.sanitize(\n displayContractor?.type === 'Individual'\n ? firstLastName({\n first_name: displayContractor.firstName,\n last_name: displayContractor.lastName,\n })\n : displayContractor?.businessName || '',\n )\n setAlerts(prevAlerts => ({\n ...prevAlerts,\n [data.contractorUuid]: {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlerts(prevAlerts => {\n const { [data.contractorUuid]: _, ...rest } = prevAlerts\n return rest\n })\n },\n },\n }))\n setIsModalOpen(false)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\n }\n\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlerts({\n ...alerts,\n error: {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n },\n })\n return\n }\n setAlerts({})\n setPayrollBlockers([])\n\n const result = await payrollSubmitHandler(async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n checkDate: new RFCDate(paymentDate),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_PREVIEW, response.contractorPaymentGroupPreview)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onBackToEdit = () => {\n setPreviewData(null)\n setPayrollBlockers([])\n setSelectedUnblockOptions({})\n onEvent(componentEvents.CONTRACTOR_PAYMENT_BACK_TO_EDIT)\n }\n const onViewBlockers = () => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND)\n }\n\n return (\n <>\n {previewData && (\n <PreviewPresentation\n contractorPaymentGroup={previewData}\n contractors={contractors}\n onBackToEdit={onBackToEdit}\n onSubmit={onCreatePaymentGroup}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n bankAccount={bankAccount}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={onUnblockOptionChange}\n paymentSpeed={paymentSpeed}\n />\n )}\n {!previewData && (\n <CreatePaymentPresentation\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n onEditContractor={onEditContractor}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n paymentSpeedDays={paymentSpeedDays}\n />\n )}\n <EditContractorPaymentPresentation\n isOpen={isModalOpen}\n onClose={() => {\n setIsModalOpen(false)\n }}\n formMethods={formMethods}\n onSubmit={onEditContractorSubmit}\n contractorPaymentMethod={\n contractors.find(c => c.uuid === formMethods.getValues('contractorUuid'))\n ?.paymentMethod ?? undefined\n }\n />\n </>\n )\n}\n"],"names":["formatLocalDate","date","calculateInitialPaymentDate","speedDays","today","addBusinessDays","CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","useComponentDictionary","t","useTranslation","isModalOpen","setIsModalOpen","useState","baseSubmitHandler","useBase","alerts","setAlerts","previewData","setPreviewData","payrollBlockers","setPayrollBlockers","selectedUnblockOptions","setSelectedUnblockOptions","createContractorPaymentGroup","isCreatingContractorPaymentGroup","useContractorPaymentGroupsCreateMutation","previewContractorPaymentGroup","isPreviewingContractorPaymentGroup","useContractorPaymentGroupsPreviewMutation","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","bankAccounts","useBankAccountsGet","paymentSpeed","paymentSpeedDays","useCompanyPaymentSpeed","bankAccount","paymentDate","setPaymentDate","hasInitializedPaymentDateRef","useRef","useEffect","initialContractorPayments","useMemo","paymentMethod","virtualContractorPayments","setVirtualContractorPayments","totals","acc","payment","c","isHourly","hours","wage","bonus","reimbursement","hourlyAmount","fixedWage","formMethods","useForm","zodResolver","createEditContractorPaymentFormSchema","jsxs","Fragment","PreviewPresentation","componentEvents","contractorPayments","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","rest","response","value","prev","CreatePaymentPresentation","result","payrollSubmitHandler","contractorUuid","contractorPayment","rawPaymentMethod","sanitizedPaymentMethod","EditContractorPaymentPresentation","data","currentContractorPaymentMethod","hasAnyPayment","prevPayments","displayContractor","displayName","DOMPurify","firstLastName","prevAlerts","_"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAASA,GAAgBC,GAAoB;AAC3C,SAAO;AAAA,IACL,OAAOA,EAAK,YAAA,CAAa,EAAE,SAAS,GAAG,GAAG;AAAA,IAC1C,OAAOA,EAAK,SAAA,IAAa,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,IAC3C,OAAOA,EAAK,QAAA,CAAS,EAAE,SAAS,GAAG,GAAG;AAAA,EAAA,EACtC,KAAK,GAAG;AACZ;AAEA,SAASC,EAA4BC,GAA2B;AAC9D,QAAMC,wBAAY,KAAA;AAClB,SAAAA,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAClBJ,GAAgBK,GAAgBD,GAAOD,CAAS,CAAC;AAC1D;AAuDO,SAASG,GAAcC,GAA2B;AACvD,SACE,gBAAAC,EAACC,IAAA,EAAe,GAAGF,GAAO,eAAc,qCACtC,UAAA,gBAAAC,EAACE,IAAA,EAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,GACnC;AAEJ;AAEA,MAAMG,KAAO,CAAC,EAAE,WAAAC,GAAW,YAAAC,GAAY,SAAAC,QAAkC;AACvE,EAAAC,GAAuB,qCAAqCF,CAAU;AACtE,QAAM,EAAE,GAAAG,EAAA,IAAMC,GAAe,mCAAmC,GAC1D,CAACC,GAAaC,CAAc,IAAIC,EAAS,EAAK,GAC9C,EAAE,mBAAAC,EAAA,IAAsBC,GAAA,GACxB,CAACC,GAAQC,CAAS,IAAIJ,EAAwC,CAAA,CAAE,GAChE,CAACK,GAAaC,CAAc,IAAIN,EAA+C,IAAI,GACnF,CAACO,GAAiBC,CAAkB,IAAIR,EAA8B,CAAA,CAAE,GACxE,CAACS,GAAwBC,CAAyB,IAAIV,EAAiC,CAAA,CAAE,GAEzF,EAAE,aAAaW,GAA8B,WAAWC,EAAA,IAC5DC,EAAA,GACI;AAAA,IACJ,aAAaC;AAAA,IACb,WAAWC;AAAA,EAAA,IACTC,GAAA,GAEE,EAAE,MAAMC,EAAA,IAAmBC,EAA2B,EAAE,aAAa1B,GAAW,GAChF2B,KAAeF,EAAe,eAAe,CAAA,GAAI;AAAA,IACrD,CAAAG,MACEA,EAAW,YACXA,EAAW,qBAAqBC,GAA2B;AAAA,EAAA,GAEzD,EAAE,MAAMC,EAAA,IAAiBC,GAAmB,EAAE,WAAA/B,GAAW,GACzD,EAAE,cAAAgC,GAAc,kBAAAC,MAAqBC,GAAuBlC,CAAS,GACrEmC,IAAcL,GAAc,sBAAsB,CAAC,GAEnD,CAACM,GAAaC,CAAc,IAAI7B,EAASjB,EAA4B0C,CAAgB,CAAC,GACtFK,IAA+BC,GAAO,EAAK;AAEjD,EAAAC,GAAU,MAAM;AACd,IAAIR,KAAgB,CAACM,EAA6B,YAChDD,EAAe9C,EAA4B0C,CAAgB,CAAC,GAC5DK,EAA6B,UAAU;AAAA,EAE3C,GAAG,CAACN,GAAcC,CAAgB,CAAC;AAEnC,QAAMQ,IAA6EC;AAAA,IACjF,MACEf,EAAY,IAAI,CAAAC,MAAc;AAC5B,YAAMe,IAAgBf,EAAW,gBAAgBA,EAAW,gBAAgB;AAE5E,aAAO;AAAA,QACL,gBAAgBA,EAAW;AAAA,QAC3B,eAAAe;AAAA,QACA,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,eAAe;AAAA,QACf,WAAW;AAAA,MAAA;AAAA,IAEf,CAAC;AAAA,IACH,CAAChB,CAAW;AAAA,EAAA,GAER,CAACiB,GAA2BC,CAA4B,IAC5DrC,EAASiC,CAAyB,GAC9BK,IAASJ;AAAA,IACb,MACEE,EAA0B;AAAA,MACxB,CAACG,GAAKC,MAAY;AAChB,cAAMpB,IAAaD,EAAY,KAAK,OAAKsB,EAAE,SAASD,EAAQ,cAAc,GACpEE,IAAWtB,GAAY,aAAa,UACpCuB,IAAQ,OAAOH,EAAQ,SAAS,GAAG,GACnCI,IAAO,OAAOJ,EAAQ,QAAQ,GAAG,GACjCK,IAAQ,OAAOL,EAAQ,SAAS,GAAG,GACnCM,IAAgB,OAAON,EAAQ,iBAAiB,GAAG,GACnDO,IAAeL,IAAWC,IAAQ,OAAOvB,EAAW,cAAc,GAAG,IAAI,GACzE4B,IAAYN,IAAW,IAAIE;AAEjC,eAAO;AAAA,UACL,MAAML,EAAI,OAAOS;AAAA,UACjB,OAAOT,EAAI,QAAQM;AAAA,UACnB,eAAeN,EAAI,gBAAgBO;AAAA,UACnC,OAAOP,EAAI,QAAQQ,IAAeC,IAAYH,IAAQC;AAAA,QAAA;AAAA,MAE1D;AAAA,MACA,EAAE,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,OAAO,EAAA;AAAA,IAAE;AAAA,IAEpD,CAACV,GAA2BjB,CAAW;AAAA,EAAA,GAGnC8B,IAAcC,GAAyC;AAAA,IAC3D,UAAUC,GAAYC,IAAuC;AAAA,IAC7D,eAAe;AAAA,MACb,UAAU;AAAA,MACV,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,yBAAyB;AAAA,IAAA;AAAA,EAC3B,CACD;AA4LD,SACE,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAjD,KACC,gBAAAhB;AAAA,MAACkE;AAAA,MAAA;AAAA,QACC,wBAAwBlD;AAAA,QACxB,aAAAc;AAAA,QACA,cAhBa,MAAM;AACzB,UAAAb,EAAe,IAAI,GACnBE,EAAmB,CAAA,CAAE,GACrBE,EAA0B,CAAA,CAAE,GAC5BhB,EAAQ8D,EAAgB,+BAA+B;AAAA,QACzD;AAAA,QAYQ,UAjMqB,YAAY;AACvC,gBAAMvD,EAAkB,MAAM,YAAY;AACxC,kBAAMwD,IAAqBrB,EAA0B,OAAO,CAAAI,MAAWA,EAAQ,SAAS;AACxF,gBAAIiB,EAAmB,WAAW,KAAK,CAACpD,GAAa;AACnD;AAEF,kBAAMqD,IAAgBrD,EAAY,eAE5BsD,IAA2C,OAAO,QAAQlD,CAAsB,EAAE;AAAA,cACtF,CAAC,CAACmD,GAAaC,CAAc,OAAO;AAAA,gBAClC,aAAAD;AAAA,gBACA,gBAAAC;AAAA,cAAA;AAAA,YACF,GAGIC,IAA0E;AAAA,cAC9E,WAAW,IAAIC,EAAQnC,CAAW;AAAA,cAClC,oBAAoB6B,EAAmB,IAAI,CAAC,EAAE,WAAAO,GAAW,GAAGC,EAAA,MAAWA,CAAI;AAAA,cAC3E,eAAAP;AAAA,cACA,GAAIC,EAAmB,SAAS,KAAK,EAAE,oBAAAA,EAAA;AAAA,YAAmB,GAGtDO,IAAW,MAAMvD,EAA6B;AAAA,cAClD,SAAS;AAAA,gBACP,WAAAnB;AAAA,gBACA,aAAAsE;AAAA,cAAA;AAAA,YACF,CACD;AAED,YAAApE,EAAQ8D,EAAgB,4BAA4BU,EAAS,0BAA0B,CAAA,CAAE;AAAA,UAC3F,CAAC;AAAA,QACH;AAAA,QAmKQ,WAAWtD,KAAoCG;AAAA,QAC/C,aAAAY;AAAA,QACA,wBAAAlB;AAAA,QACA,uBApKsB,CAACmD,GAAqBO,MAAkB;AACpE,UAAAzD,EAA0B,CAAA0D,OAAS;AAAA,YACjC,GAAGA;AAAA,YACH,CAACR,CAAW,GAAGO;AAAA,UAAA,EACf;AAAA,QACJ;AAAA,QAgKQ,cAAA3C;AAAA,MAAA;AAAA,IAAA;AAAA,IAGH,CAACnB,KACA,gBAAAhB;AAAA,MAACgF;AAAA,MAAA;AAAA,QACC,aAAAlD;AAAA,QACA,oBAAoBiB;AAAA,QACpB,aAAAR;AAAA,QACA,qBAAqBC;AAAA,QACrB,mBAlEoB,YAAY;AACtC,gBAAM5B,EAAkB,MAAM,YAAY;AACxC,kBAAMwD,IAAqBrB,EAA0B,OAAO,CAAAI,MAAWA,EAAQ,SAAS;AACxF,gBAAIiB,EAAmB,WAAW,GAAG;AACnC,cAAArD,EAAU;AAAA,gBACR,GAAGD;AAAA,gBACH,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,OAAOP,EAAE,6BAA6B;AAAA,gBAAA;AAAA,cACxC,CACD;AACD;AAAA,YACF;AACA,YAAAQ,EAAU,CAAA,CAAE,GACZI,EAAmB,CAAA,CAAE;AAErB,kBAAM8D,IAAS,MAAMC,GAAqB,YAAY;AACpD,oBAAML,IAAW,MAAMpD,EAA8B;AAAA,gBACnD,SAAS;AAAA,kBACP,WAAAtB;AAAA,kBACA,aAAa;AAAA,oBACX,oBAAoBiE,EAAmB,IAAI,CAAC,EAAE,WAAAO,GAAW,GAAGC,EAAA,MAAWA,CAAI;AAAA,oBAC3E,WAAW,IAAIF,EAAQnC,CAAW;AAAA,kBAAA;AAAA,gBACpC;AAAA,cACF,CACD;AACD,cAAAtB,EAAe4D,EAAS,iCAAiC,IAAI,GAC7DxE,EAAQ8D,EAAgB,4BAA4BU,EAAS,6BAA6B;AAAA,YAC5F,CAAC;AAED,YAAI,CAACI,EAAO,WAAWA,EAAO,SAAS,SAAS,KAC9C9D,EAAmB8D,EAAO,QAAQ;AAAA,UAEtC,CAAC;AAAA,QACH;AAAA,QAiCQ,kBAzKiB,CAACE,MAA2B;AACnD,gBAAMpD,IAAaD,EAAY,KAAK,CAAAC,MAAcA,EAAW,SAASoD,CAAc,GAC9EC,IAAoBrC,EAA0B;AAAA,YAClD,CAAAI,MAAWA,EAAQ,mBAAmBgC;AAAA,UAAA,GAGlCE,IAAmBD,GAAmB,iBAAiB,kBACvDE,IAAyB,CAAC,SAAS,gBAAgB,EAAE,SAASD,CAAgB,IAC/EA,IACD;AAEJ,UAAAzB,EAAY;AAAA,YACV;AAAA,cACE,UAAU7B,GAAY,YAAY;AAAA,cAClC,OAAO,OAAOqD,GAAmB,SAAS,GAAG;AAAA,cAC7C,MAAM,OAAOA,GAAmB,QAAQ,GAAG;AAAA,cAC3C,OAAO,OAAOA,GAAmB,SAAS,GAAG;AAAA,cAC7C,eAAe,OAAOA,GAAmB,iBAAiB,GAAG;AAAA,cAC7D,eAAeE;AAAA,cACf,YAAY,OAAOvD,GAAY,cAAc,GAAG;AAAA,cAChD,gBAAAoD;AAAA,cACA,yBAAyBpD,GAAY,iBAAiB;AAAA,YAAA;AAAA,YAExD,EAAE,WAAW,IAAO,YAAY,GAAA;AAAA,UAAM,GAExChB,EAAU,CAAA,CAAE,GACZL,EAAe,EAAI,GACnBL,EAAQ8D,EAAgB,uBAAuB;AAAA,QACjD;AAAA,QA8IQ,QAAAlB;AAAA,QACA,QAAAnC;AAAA,QACA,iBAAAI;AAAA,QACA,gBA9Be,MAAM;AAC3B,UAAAb,EAAQ8D,EAAgB,8BAA8B;AAAA,QACxD;AAAA,QA6BQ,WAAW5C,KAAoCG;AAAA,QAC/C,kBAAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ,gBAAApC;AAAA,MAACuF;AAAA,MAAA;AAAA,QACC,QAAQ9E;AAAA,QACR,SAAS,MAAM;AACb,UAAAC,EAAe,EAAK;AAAA,QACtB;AAAA,QACA,aAAAkD;AAAA,QACA,UA1JyB,CAAC4B,MAA0C;AAExE,gBAAMC,IADoB3D,EAAY,KAAK,OAAKsB,EAAE,SAASoC,EAAK,cAAc,GACpB;AAE1D,cAAI,CAAC,CAAC,SAAS,gBAAgB,EAAE,SAASA,EAAK,aAAa,GAAG;AAC7D,YAAA5B,EAAY,SAAS,iBAAiB;AAAA,cACpC,MAAM;AAAA,cACN,SAASrD,EAAE,uDAAuD;AAAA,YAAA,CACnE;AACD;AAAA,UACF;AAEA,cAAIkF,MAAmC,WAAWD,EAAK,kBAAkB,kBAAkB;AACzF,YAAA5B,EAAY,SAAS,iBAAiB;AAAA,cACpC,MAAM;AAAA,cACN,SAASrD,EAAE,wDAAwD;AAAA,YAAA,CACpE;AACD;AAAA,UACF;AAEA,gBAAMmF,KACHF,EAAK,QAAQ,KAAK,MAClBA,EAAK,SAAS,KAAK,MACnBA,EAAK,SAAS,KAAK,MACnBA,EAAK,iBAAiB,KAAK;AAE9B,UAAAxC;AAAA,YAA6B,OAC3B2C,EAAa;AAAA,cAAI,CAAAxC,MACfA,EAAQ,mBAAmBqC,EAAK,iBAC5B;AAAA,gBACE,gBAAgBrC,EAAQ;AAAA,gBACxB,MAAM,OAAOqC,EAAK,QAAQ,CAAC;AAAA,gBAC3B,OAAO,OAAOA,EAAK,SAAS,CAAC;AAAA,gBAC7B,OAAO,OAAOA,EAAK,SAAS,CAAC;AAAA,gBAC7B,eAAe,OAAOA,EAAK,iBAAiB,CAAC;AAAA,gBAC7C,eAAeA,EAAK;AAAA,gBACpB,WAAWE;AAAA,cAAA,IAEbvC;AAAA,YAAA;AAAA,UACN;AAEF,gBAAMyC,IAAoB9D,EAAY;AAAA,YACpC,CAAAC,MAAcA,EAAW,SAASyD,EAAK;AAAA,UAAA,GAEnCK,IAAcC,GAAU;AAAA,YAC5BF,GAAmB,SAAS,eACxBG,GAAc;AAAA,cACZ,YAAYH,EAAkB;AAAA,cAC9B,WAAWA,EAAkB;AAAA,YAAA,CAC9B,IACDA,GAAmB,gBAAgB;AAAA,UAAA;AAEzC,UAAA7E,EAAU,CAAAiF,OAAe;AAAA,YACvB,GAAGA;AAAA,YACH,CAACR,EAAK,cAAc,GAAG;AAAA,cACrB,MAAM;AAAA,cACN,OAAOjF,EAAE,mCAAmC;AAAA,gBAC1C,gBAAgBsF;AAAA,gBAChB,eAAe,EAAE,aAAa,GAAA;AAAA,cAAM,CACrC;AAAA,cACD,WAAW,MAAM;AACf,gBAAA9E,EAAU,CAAAiF,MAAc;AACtB,wBAAM,EAAE,CAACR,EAAK,cAAc,GAAGS,GAAG,GAAGrB,MAASoB;AAC9C,yBAAOpB;AAAA,gBACT,CAAC;AAAA,cACH;AAAA,YAAA;AAAA,UACF,EACA,GACFlE,EAAe,EAAK,GACpBL,EAAQ8D,EAAgB,2BAA2BqB,CAAI;AAAA,QACzD;AAAA,QAqFM,yBACE1D,EAAY,KAAK,CAAAsB,MAAKA,EAAE,SAASQ,EAAY,UAAU,gBAAgB,CAAC,GACpE,iBAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,EAEzB,GACF;AAEJ;"}
1
+ {"version":3,"file":"CreatePayment.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type {\n PostV1CompaniesCompanyIdContractorPaymentGroupsContractorPayments as ContractorPayments,\n PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport { useBankAccountsGet } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { EditContractorPaymentPresentation } from './EditContractorPaymentPresentation'\nimport {\n createEditContractorPaymentFormSchema,\n type EditContractorPaymentFormValues,\n} from './EditContractorPaymentFormSchema'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport { addBusinessDays } from '@/helpers/dateFormatting'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n payrollSubmitHandler,\n type ApiPayrollBlocker,\n} from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nfunction formatLocalDate(date: Date): string {\n return [\n String(date.getFullYear()).padStart(4, '0'),\n String(date.getMonth() + 1).padStart(2, '0'),\n String(date.getDate()).padStart(2, '0'),\n ].join('-')\n}\n\nfunction calculateInitialPaymentDate(speedDays: number): string {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n return formatLocalDate(addBusinessDays(today, speedDays))\n}\n\n/**\n * Props for {@link CreatePayment}.\n *\n * @public\n */\nexport interface CreatePaymentProps extends BaseComponentInterface<'Contractor.Payments.CreatePayment'> {\n /** UUID of the company for which to create a contractor payment group. */\n companyId: string\n}\n\n/**\n * Form for creating a contractor payment group, including date selection, per-contractor edits, preview, and submission blockers.\n *\n * @remarks\n * Active, fully onboarded contractors are listed for the given company. Hours and bonuses apply to hourly contractors; wages apply to fixed contractors; reimbursements apply to both. The form previews the payment group before final submission and surfaces Fast ACH submission blockers when applicable.\n *\n * Features:\n *\n * - **Payment date selection** — choose the payment date; a notice shows the resulting payment speed.\n * - **Per-contractor editing** — edit hours and bonus (hourly contractors), wage (fixed contractors), and reimbursement (all) in a modal, with a running total.\n * - **Payment method** — choose Check or Direct Deposit per contractor.\n * - **Live totals** — wage, bonus, reimbursement, and overall totals update as amounts change.\n * - **Preview before submit** — review per-contractor amounts, debit amount, debit account, debit date, contractor pay date, and the submission deadline before finalizing.\n * - **Submission blockers** — Fast ACH blockers surface inline with selectable unblock options (wire transfer or slower direct deposit); submission stays disabled until every blocker is resolved.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/payments/edit` | The edit modal was opened for a contractor. | — |\n * | `contractor/payments/update` | A contractor's payment values were updated locally. | The updated form values (hours, wage, bonus, reimbursement, payment method, etc.). |\n * | `contractor/payments/preview` | The preview API call succeeded. | The contractor payment group preview response. |\n * | `contractor/payments/backToEdit` | The user returned from preview to continue editing. | — |\n * | `contractor/payments/created` | The payment group was successfully created. | The created contractor payment group response. |\n * | `contractor/payments/rfi/respond` | The user clicked to respond to a payment blocker. | — |\n *\n * @param props - Component props including the company identifier and event handler.\n * @returns The rendered create-payment form, preview, and edit modal.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function CreateContractorPayment() {\n * return (\n * <ContractorManagement.CreatePayment\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function CreatePayment(props: CreatePaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreatePayment\">\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ companyId, dictionary, onEvent }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const [isModalOpen, setIsModalOpen] = useState(false)\n const { baseSubmitHandler } = useBase()\n const [alerts, setAlerts] = useState<Record<string, InternalAlert>>({})\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreatingContractorPaymentGroup } =\n useContractorPaymentGroupsCreateMutation()\n const {\n mutateAsync: previewContractorPaymentGroup,\n isPending: isPreviewingContractorPaymentGroup,\n } = useContractorPaymentGroupsPreviewMutation()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n const { data: bankAccounts } = useBankAccountsGet({ companyId })\n const { paymentSpeed, paymentSpeedDays } = useCompanyPaymentSpeed(companyId)\n const bankAccount = bankAccounts?.companyBankAccounts?.[0]\n\n const [paymentDate, setPaymentDate] = useState(calculateInitialPaymentDate(paymentSpeedDays))\n const hasInitializedPaymentDateRef = useRef(false)\n\n useEffect(() => {\n if (paymentSpeed && !hasInitializedPaymentDateRef.current) {\n setPaymentDate(calculateInitialPaymentDate(paymentSpeedDays))\n hasInitializedPaymentDateRef.current = true\n }\n }, [paymentSpeed, paymentSpeedDays])\n\n const initialContractorPayments: (ContractorPayments & { isTouched: boolean })[] = useMemo(\n () =>\n contractors.map(contractor => {\n const paymentMethod = contractor.paymentMethod ? contractor.paymentMethod : 'Direct Deposit'\n\n return {\n contractorUuid: contractor.uuid,\n paymentMethod,\n wage: '0',\n hours: '0',\n bonus: '0',\n reimbursement: '0',\n isTouched: false,\n }\n }),\n [contractors],\n )\n const [virtualContractorPayments, setVirtualContractorPayments] =\n useState(initialContractorPayments)\n const totals = useMemo(\n () =>\n virtualContractorPayments.reduce(\n (acc, payment) => {\n const contractor = contractors.find(c => c.uuid === payment.contractorUuid)\n const isHourly = contractor?.wageType === 'Hourly'\n const hours = Number(payment.hours || '0')\n const wage = Number(payment.wage || '0')\n const bonus = Number(payment.bonus || '0')\n const reimbursement = Number(payment.reimbursement || '0')\n const hourlyAmount = isHourly ? hours * Number(contractor.hourlyRate || '0') : 0\n const fixedWage = isHourly ? 0 : wage\n\n return {\n wage: acc.wage + fixedWage,\n bonus: acc.bonus + bonus,\n reimbursement: acc.reimbursement + reimbursement,\n total: acc.total + hourlyAmount + fixedWage + bonus + reimbursement,\n }\n },\n { wage: 0, bonus: 0, reimbursement: 0, total: 0 },\n ),\n [virtualContractorPayments, contractors],\n )\n\n const formMethods = useForm<EditContractorPaymentFormValues>({\n resolver: zodResolver(createEditContractorPaymentFormSchema()),\n defaultValues: {\n wageType: 'Hourly',\n hours: 0,\n wage: 0,\n bonus: 0,\n reimbursement: 0,\n paymentMethod: 'Direct Deposit',\n hourlyRate: 0,\n contractorUuid: '',\n contractorPaymentMethod: undefined,\n },\n })\n\n const onCreatePaymentGroup = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0 || !previewData?.creationToken) {\n return\n }\n const creationToken = previewData.creationToken\n\n const submissionBlockers: SubmissionBlockers[] = Object.entries(selectedUnblockOptions).map(\n ([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n }),\n )\n\n const requestBody: PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody = {\n checkDate: new RFCDate(paymentDate),\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n creationToken,\n ...(submissionBlockers.length > 0 && { submissionBlockers }),\n }\n\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CREATED, response.contractorPaymentGroup || {})\n })\n }\n\n const onUnblockOptionChange = (blockerType: string, value: string) => {\n setSelectedUnblockOptions(prev => ({\n ...prev,\n [blockerType]: value,\n }))\n }\n const onEditContractor = (contractorUuid: string) => {\n const contractor = contractors.find(contractor => contractor.uuid === contractorUuid)\n const contractorPayment = virtualContractorPayments.find(\n payment => payment.contractorUuid === contractorUuid,\n )\n\n const rawPaymentMethod = contractorPayment?.paymentMethod || 'Direct Deposit'\n const sanitizedPaymentMethod = ['Check', 'Direct Deposit'].includes(rawPaymentMethod)\n ? (rawPaymentMethod as 'Check' | 'Direct Deposit')\n : 'Check'\n\n formMethods.reset(\n {\n wageType: contractor?.wageType || 'Hourly',\n hours: Number(contractorPayment?.hours || '0'),\n wage: Number(contractorPayment?.wage || '0'),\n bonus: Number(contractorPayment?.bonus || '0'),\n reimbursement: Number(contractorPayment?.reimbursement || '0'),\n paymentMethod: sanitizedPaymentMethod,\n hourlyRate: Number(contractor?.hourlyRate || '0'),\n contractorUuid: contractorUuid,\n contractorPaymentMethod: contractor?.paymentMethod || undefined,\n },\n { keepDirty: false, keepValues: false },\n )\n setAlerts({})\n setIsModalOpen(true)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n }\n\n const onEditContractorSubmit = (data: EditContractorPaymentFormValues) => {\n const currentContractor = contractors.find(c => c.uuid === data.contractorUuid)\n const currentContractorPaymentMethod = currentContractor?.paymentMethod\n\n if (!['Check', 'Direct Deposit'].includes(data.paymentMethod)) {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.unsupportedPaymentMethod'),\n })\n return\n }\n\n if (currentContractorPaymentMethod === 'Check' && data.paymentMethod === 'Direct Deposit') {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.directDepositNotAvailable'),\n })\n return\n }\n\n const hasAnyPayment =\n (data.wage ?? 0) > 0 ||\n (data.hours ?? 0) > 0 ||\n (data.bonus ?? 0) > 0 ||\n (data.reimbursement ?? 0) > 0\n\n setVirtualContractorPayments(prevPayments =>\n prevPayments.map(payment =>\n payment.contractorUuid === data.contractorUuid\n ? {\n contractorUuid: payment.contractorUuid,\n wage: String(data.wage ?? 0),\n hours: String(data.hours ?? 0),\n bonus: String(data.bonus ?? 0),\n reimbursement: String(data.reimbursement ?? 0),\n paymentMethod: data.paymentMethod,\n isTouched: hasAnyPayment,\n }\n : payment,\n ),\n )\n const displayContractor = contractors.find(\n contractor => contractor.uuid === data.contractorUuid,\n )\n const displayName = DOMPurify.sanitize(\n displayContractor?.type === 'Individual'\n ? firstLastName({\n first_name: displayContractor.firstName,\n last_name: displayContractor.lastName,\n })\n : displayContractor?.businessName || '',\n )\n setAlerts(prevAlerts => ({\n ...prevAlerts,\n [data.contractorUuid]: {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlerts(prevAlerts => {\n const { [data.contractorUuid]: _, ...rest } = prevAlerts\n return rest\n })\n },\n },\n }))\n setIsModalOpen(false)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\n }\n\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlerts({\n ...alerts,\n error: {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n },\n })\n return\n }\n setAlerts({})\n setPayrollBlockers([])\n\n const result = await payrollSubmitHandler(async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n checkDate: new RFCDate(paymentDate),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_PREVIEW, response.contractorPaymentGroupPreview)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onBackToEdit = () => {\n setPreviewData(null)\n setPayrollBlockers([])\n setSelectedUnblockOptions({})\n onEvent(componentEvents.CONTRACTOR_PAYMENT_BACK_TO_EDIT)\n }\n const onViewBlockers = () => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND)\n }\n\n return (\n <>\n {previewData && (\n <PreviewPresentation\n contractorPaymentGroup={previewData}\n contractors={contractors}\n onBackToEdit={onBackToEdit}\n onSubmit={onCreatePaymentGroup}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n bankAccount={bankAccount}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={onUnblockOptionChange}\n paymentSpeed={paymentSpeed}\n />\n )}\n {!previewData && (\n <CreatePaymentPresentation\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n onEditContractor={onEditContractor}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n paymentSpeedDays={paymentSpeedDays}\n />\n )}\n <EditContractorPaymentPresentation\n isOpen={isModalOpen}\n onClose={() => {\n setIsModalOpen(false)\n }}\n formMethods={formMethods}\n onSubmit={onEditContractorSubmit}\n contractorPaymentMethod={\n contractors.find(c => c.uuid === formMethods.getValues('contractorUuid'))\n ?.paymentMethod ?? undefined\n }\n />\n </>\n )\n}\n"],"names":["formatLocalDate","date","calculateInitialPaymentDate","speedDays","today","addBusinessDays","CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","useComponentDictionary","t","useTranslation","isModalOpen","setIsModalOpen","useState","baseSubmitHandler","useBase","alerts","setAlerts","previewData","setPreviewData","payrollBlockers","setPayrollBlockers","selectedUnblockOptions","setSelectedUnblockOptions","createContractorPaymentGroup","isCreatingContractorPaymentGroup","useContractorPaymentGroupsCreateMutation","previewContractorPaymentGroup","isPreviewingContractorPaymentGroup","useContractorPaymentGroupsPreviewMutation","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","bankAccounts","useBankAccountsGet","paymentSpeed","paymentSpeedDays","useCompanyPaymentSpeed","bankAccount","paymentDate","setPaymentDate","hasInitializedPaymentDateRef","useRef","useEffect","initialContractorPayments","useMemo","paymentMethod","virtualContractorPayments","setVirtualContractorPayments","totals","acc","payment","c","isHourly","hours","wage","bonus","reimbursement","hourlyAmount","fixedWage","formMethods","useForm","zodResolver","createEditContractorPaymentFormSchema","jsxs","Fragment","PreviewPresentation","componentEvents","contractorPayments","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","rest","response","value","prev","CreatePaymentPresentation","result","payrollSubmitHandler","contractorUuid","contractorPayment","rawPaymentMethod","sanitizedPaymentMethod","EditContractorPaymentPresentation","data","currentContractorPaymentMethod","hasAnyPayment","prevPayments","displayContractor","displayName","DOMPurify","firstLastName","prevAlerts","_"],"mappings":"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"}