@gusto/embedded-react-sdk 0.57.1 → 0.57.3

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 (323) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/components/Base/Base.js +2 -3
  3. package/dist/components/Base/Base.js.map +1 -1
  4. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js +32 -32
  5. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js.map +1 -1
  6. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  7. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +6 -8
  8. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  9. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +8 -10
  10. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  11. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -6
  12. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  13. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +6 -8
  14. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  15. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -6
  16. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  17. package/dist/components/Company/AssignSignatory/TitleSelect.js +10 -11
  18. package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
  19. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -8
  20. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  21. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +8 -9
  22. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  23. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -6
  24. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  25. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +10 -12
  26. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  27. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +11 -13
  28. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  29. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +5 -7
  30. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  31. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -6
  32. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  33. package/dist/components/Company/FederalTaxes/Actions.js +7 -9
  34. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  35. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +8 -11
  36. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  37. package/dist/components/Company/Industry/Actions.js +5 -7
  38. package/dist/components/Company/Industry/Actions.js.map +1 -1
  39. package/dist/components/Company/Industry/Context.js +6 -9
  40. package/dist/components/Company/Industry/Context.js.map +1 -1
  41. package/dist/components/Company/Industry/Edit.js +10 -12
  42. package/dist/components/Company/Industry/Edit.js.map +1 -1
  43. package/dist/components/Company/Locations/LocationForm/Actions.js +8 -10
  44. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  45. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -6
  46. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  47. package/dist/components/Company/Locations/LocationsList/Actions.js +6 -8
  48. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  49. package/dist/components/Company/Locations/LocationsList/List.js +11 -13
  50. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  51. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -6
  52. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  53. package/dist/components/Company/OnboardingOverview/context.js +3 -6
  54. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  55. package/dist/components/Company/PaySchedule/PayScheduleForm.js +66 -62
  56. package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
  57. package/dist/components/Company/PaySchedule/PayScheduleForm.module.scss.js +2 -2
  58. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -1
  59. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -1
  60. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js +34 -14
  61. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js.map +1 -1
  62. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js +106 -0
  63. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js.map +1 -0
  64. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js +136 -0
  65. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js.map +1 -0
  66. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +38 -20
  67. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -1
  68. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +78 -44
  69. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -1
  70. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +45 -37
  71. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -1
  72. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +253 -92
  73. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -1
  74. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js +22 -0
  75. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js.map +1 -0
  76. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js +13 -0
  77. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js.map +1 -0
  78. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +48 -43
  79. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -1
  80. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.js.map +1 -1
  81. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js +57 -0
  82. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js.map +1 -0
  83. package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js +11 -13
  84. package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js.map +1 -1
  85. package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js +83 -0
  86. package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js.map +1 -0
  87. package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js +84 -0
  88. package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js.map +1 -0
  89. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +49 -44
  90. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
  91. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +109 -39
  92. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
  93. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -1
  94. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
  95. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
  96. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +5 -7
  97. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  98. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -6
  99. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  100. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +6 -8
  101. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  102. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -6
  103. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  104. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -6
  105. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  106. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +5 -5
  107. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
  108. package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js +1 -1
  109. package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js.map +1 -1
  110. package/dist/components/Contractor/Compensation/management/CompensationCard/CompensationCard.js +16 -17
  111. package/dist/components/Contractor/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
  112. package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js +4 -4
  113. package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js.map +1 -1
  114. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js +3 -3
  115. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js.map +1 -1
  116. package/dist/components/Contractor/ContractorList/shared/useContractorList.js +6 -6
  117. package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
  118. package/dist/components/Contractor/Dashboard/Dashboard.js +20 -20
  119. package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
  120. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +10 -10
  121. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -1
  122. package/dist/components/Contractor/Documents/management/DocumentsCard/DocumentsCard.js +8 -9
  123. package/dist/components/Contractor/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  124. package/dist/components/Contractor/Landing/Landing.js +43 -39
  125. package/dist/components/Contractor/Landing/Landing.js.map +1 -1
  126. package/dist/components/Contractor/NewHireReport/NewHireReport.js +3 -3
  127. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  128. package/dist/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.js +6 -8
  129. package/dist/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.js.map +1 -1
  130. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +1 -1
  131. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
  132. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +10 -10
  133. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  134. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +4 -4
  135. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
  136. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +8 -8
  137. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
  138. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +5 -5
  139. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
  140. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +3 -3
  141. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
  142. package/dist/components/Contractor/Profile/management/ProfileCard/ProfileCard.js +26 -27
  143. package/dist/components/Contractor/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
  144. package/dist/components/Contractor/Profile/management/ProfileEditForm.js +11 -11
  145. package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js +1 -1
  146. package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js.map +1 -1
  147. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +1 -1
  148. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
  149. package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js +1 -1
  150. package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js.map +1 -1
  151. package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js +2 -9
  152. package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  153. package/dist/components/Contractor/Submit/Submit.js +18 -18
  154. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  155. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js +6 -6
  156. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js.map +1 -1
  157. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +25 -25
  158. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
  159. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +15 -15
  160. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
  161. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +1 -1
  162. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  163. package/dist/components/Employee/Dashboard/Dashboard.js +25 -25
  164. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  165. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js +12 -13
  166. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
  167. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js +12 -13
  168. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  169. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js +6 -8
  170. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js.map +1 -1
  171. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -6
  172. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  173. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +7 -7
  174. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  175. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +1 -1
  176. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  177. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js +3 -4
  178. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js.map +1 -1
  179. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +3 -4
  180. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js.map +1 -1
  181. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +6 -6
  182. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
  183. package/dist/components/Employee/Landing/Landing.js +37 -33
  184. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  185. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +27 -27
  186. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  187. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js +22 -24
  188. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
  189. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +8 -9
  190. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
  191. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js +14 -15
  192. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
  193. package/dist/components/Employee/Profile/management/ProfileEditForm.js +1 -1
  194. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
  195. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +6 -6
  196. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
  197. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
  198. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
  199. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js +8 -15
  200. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  201. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js +7 -8
  202. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js.map +1 -1
  203. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +7 -8
  204. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js.map +1 -1
  205. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +11 -11
  206. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  207. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +12 -12
  208. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
  209. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +26 -26
  210. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
  211. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +56 -54
  212. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  213. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +14 -16
  214. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  215. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +6 -8
  216. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
  217. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +9 -11
  218. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
  219. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +66 -64
  220. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  221. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
  222. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  223. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +6 -6
  224. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  225. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  226. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +1 -1
  227. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
  228. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  229. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +75 -89
  230. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  231. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  232. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +9 -9
  233. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  234. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +44 -46
  235. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  236. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  237. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +63 -61
  238. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
  239. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +14 -13
  240. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +1 -1
  241. package/dist/components/Payroll/helpers.js +53 -49
  242. package/dist/components/Payroll/helpers.js.map +1 -1
  243. package/dist/components/Payroll/payrollTypes.js +1 -1
  244. package/dist/components/Payroll/payrollTypes.js.map +1 -1
  245. package/dist/components/Payroll/usePreparedPayrollData.js +13 -16
  246. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  247. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +2 -2
  248. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
  249. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +2 -4
  250. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
  251. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js +6 -8
  252. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js.map +1 -1
  253. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +28 -30
  254. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
  255. package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js +1 -1
  256. package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js.map +1 -1
  257. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +2 -4
  258. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  259. package/dist/helpers/dateFormatting.js +47 -40
  260. package/dist/helpers/dateFormatting.js.map +1 -1
  261. package/dist/i18n/en/Company.Management.PaySchedule.json.js +37 -17
  262. package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -1
  263. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +20 -10
  264. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -1
  265. package/dist/i18n/en/Payroll.PayrollHistory.json.js +5 -5
  266. package/dist/i18n/en/Payroll.PayrollList.json.js +5 -5
  267. package/dist/i18n/en/Payroll.PayrollOverview.json.js +1 -1
  268. package/dist/package.json.js +1 -1
  269. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js +8 -10
  270. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js.map +1 -1
  271. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js +12 -14
  272. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js.map +1 -1
  273. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +13 -15
  274. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
  275. package/dist/partner-hook-utils/form/fields/SelectHookField.js +10 -12
  276. package/dist/partner-hook-utils/form/fields/SelectHookField.js.map +1 -1
  277. package/dist/partner-hook-utils/form/fields/SwitchHookField.js +14 -16
  278. package/dist/partner-hook-utils/form/fields/SwitchHookField.js.map +1 -1
  279. package/dist/partner-hook-utils/form/fields/TextInputHookField.js +8 -10
  280. package/dist/partner-hook-utils/form/fields/TextInputHookField.js.map +1 -1
  281. package/dist/shared/constants.js +5 -5
  282. package/dist/shared/constants.js.map +1 -1
  283. package/dist/src/components/Common/DateRangeFilter/DateRangeFilter.d.ts +2 -2
  284. package/dist/src/components/Common/OnboardingStatusBadge/index.d.ts +1 -1
  285. package/dist/src/components/Company/PaySchedule/PayScheduleForm.d.ts +6 -0
  286. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +1 -1
  287. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +1 -1
  288. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.d.ts +10 -3
  289. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.d.ts +21 -0
  290. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.d.ts +34 -0
  291. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +9 -3
  292. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +5 -1
  293. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +10 -10
  294. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +12 -4
  295. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.d.ts +19 -0
  296. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.d.ts +17 -0
  297. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.d.ts +1 -1
  298. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.d.ts +34 -0
  299. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +16 -3
  300. package/dist/src/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.d.ts +1 -1
  301. package/dist/src/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.d.ts +23 -0
  302. package/dist/src/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.d.ts +25 -0
  303. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +1 -1
  304. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +1 -1
  305. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +1 -1
  306. package/dist/src/components/Contractor/Landing/Landing.d.ts +5 -2
  307. package/dist/src/components/Employee/Landing/Landing.d.ts +5 -2
  308. package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +1 -1
  309. package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +1 -1
  310. package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
  311. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.d.ts +2 -2
  312. package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
  313. package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -2
  314. package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
  315. package/dist/src/components/Payroll/helpers.d.ts +22 -2
  316. package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +2 -2
  317. package/dist/src/helpers/dateFormatting.d.ts +13 -0
  318. package/dist/src/i18n/types.d.ts +96 -6
  319. package/dist/src/models/external.d.ts +63 -48
  320. package/dist/src/shared/constants.d.ts +1 -1
  321. package/dist/style.css +1 -1
  322. package/docs/guides/endpoint-inventory.json +33 -13
  323. package/package.json +21 -21
@@ -1 +1 @@
1
- {"version":3,"file":"NewHireReport.js","sources":["../../../../src/components/Contractor/NewHireReport/NewHireReport.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { SubmitHandler } from 'react-hook-form'\nimport { FormProvider, useForm, useWatch } from 'react-hook-form'\nimport { useMemo } from 'react'\nimport z from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useContractorsGetSuspense } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsUpdateMutation } from '@gusto/embedded-api/react-query/contractorsUpdate'\nimport type { NewHireReportProps } from './types'\nimport { useI18n } from '@/i18n'\nimport { BaseComponent, useBase } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Form } from '@/components/Common/Form'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { componentEvents, STATES_ABBR } from '@/shared/constants'\nimport { ActionsLayout } from '@/components/Common/ActionsLayout'\nimport { Flex, RadioGroupField, SelectField } from '@/components/Common'\n\nconst NewHireReportSchema = z.union([\n z.object({\n fileNewHireReport: z.boolean().refine(v => v),\n state: z.string().min(1),\n }),\n z.object({\n fileNewHireReport: z.boolean().refine(v => !v),\n }),\n])\n\ntype NewHireReportSchemaInputs = z.input<typeof NewHireReportSchema>\n\n/**\n * Collects new hire reporting information for a contractor and persists it to the contractor record.\n *\n * Asks whether a new hire report should be filed and, when the answer is yes, captures the\n * work state used for filing. Submitting writes both values back to the contractor.\n *\n * @remarks\n * Set `selfOnboarding` to `true` when this component is rendered as part of the contractor's\n * own self-onboarding flow rather than admin onboarding.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/newHireReport/updated` | Fired when the new hire report is saved | The API response object; access the updated contractor at `.contractor` |\n * | `contractor/newHireReport/done` | Fired after the new hire report step completes | — |\n *\n * @param props - Component configuration; see {@link NewHireReportProps}.\n * @returns The rendered new hire report form.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorOnboarding } from '@gusto/embedded-react-sdk'\n *\n * function NewHireReportStep() {\n * return (\n * <ContractorOnboarding.NewHireReport\n * contractorId=\"contractor-uuid\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function NewHireReport(props: NewHireReportProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nfunction Root({ contractorId, className, dictionary, selfOnboarding = false }: NewHireReportProps) {\n useComponentDictionary('Contractor.NewHireReport', dictionary)\n useI18n('Contractor.NewHireReport')\n const { t } = useTranslation('Contractor.NewHireReport')\n const { onEvent, baseSubmitHandler } = useBase()\n const Components = useComponentContext()\n\n const {\n data: { contractor },\n } = useContractorsGetSuspense({ contractorUuid: contractorId })\n const contractorDetails = contractor!\n\n const { mutateAsync: updateContractor, isPending: updateContractorPending } =\n useContractorsUpdateMutation()\n\n const defaultValues = useMemo(\n () => ({\n fileNewHireReport: contractorDetails.fileNewHireReport || false,\n state: contractorDetails.workState || null,\n }),\n [contractorDetails],\n )\n\n const formMethods = useForm({\n resolver: zodResolver(NewHireReportSchema),\n defaultValues: defaultValues,\n })\n\n const watchedDoFile = useWatch({ control: formMethods.control, name: 'fileNewHireReport' })\n const onSubmit: SubmitHandler<NewHireReportSchemaInputs> = async data => {\n await baseSubmitHandler(data, async payload => {\n const contractorResponse = await updateContractor({\n request: {\n contractorUuid: contractorId,\n contractorUpdateRequestBody: {\n type: contractorDetails.type,\n selfOnboarding: selfOnboarding,\n fileNewHireReport: payload.fileNewHireReport,\n workState: 'state' in payload ? payload.state : null,\n version: contractorDetails.version!,\n },\n },\n })\n onEvent(componentEvents.CONTRACTOR_NEW_HIRE_REPORT_UPDATED, contractorResponse)\n onEvent(componentEvents.CONTRACTOR_NEW_HIRE_REPORT_DONE)\n })\n }\n\n return (\n <section className={className}>\n <FormProvider {...formMethods}>\n <Form onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Flex flexDirection=\"column\" alignItems=\"stretch\">\n <header>\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Text variant=\"supporting\">{t('description')}</Components.Text>\n </Flex>\n </header>\n <RadioGroupField\n name=\"fileNewHireReport\"\n label={t('doFileLegend')}\n shouldVisuallyHideLabel\n options={[\n {\n value: true,\n label: t('yesOption'),\n },\n {\n value: false,\n label: t('noOption'),\n },\n ]}\n />\n {watchedDoFile && (\n <SelectField\n name=\"state\"\n options={STATES_ABBR.map((stateAbbr: (typeof STATES_ABBR)[number]) => ({\n label: t(`statesHash.${stateAbbr}`, { ns: 'common' }),\n value: stateAbbr,\n }))}\n label={t('stateSelectionLabel')}\n placeholder={t('statePlaceholder')}\n errorMessage={t('validations.state')}\n isRequired\n />\n )}\n <ActionsLayout>\n <Components.Button\n type=\"submit\"\n variant=\"primary\"\n isDisabled={updateContractorPending}\n >\n {t('submitCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </Form>\n </FormProvider>\n </section>\n )\n}\n"],"names":["NewHireReportSchema","z","v","NewHireReport","props","jsx","BaseComponent","Root","contractorId","className","dictionary","selfOnboarding","useComponentDictionary","useI18n","t","useTranslation","onEvent","baseSubmitHandler","useBase","Components","useComponentContext","contractor","useContractorsGetSuspense","contractorDetails","updateContractor","updateContractorPending","useContractorsUpdateMutation","defaultValues","useMemo","formMethods","useForm","zodResolver","watchedDoFile","useWatch","onSubmit","data","payload","contractorResponse","componentEvents","FormProvider","Form","jsxs","Flex","RadioGroupField","SelectField","STATES_ABBR","stateAbbr","ActionsLayout"],"mappings":"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"}
1
+ {"version":3,"file":"NewHireReport.js","sources":["../../../../src/components/Contractor/NewHireReport/NewHireReport.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { SubmitHandler } from 'react-hook-form'\nimport { FormProvider, useForm, useWatch } from 'react-hook-form'\nimport { useMemo } from 'react'\nimport z from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useContractorsGetSuspense } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsUpdateMutation } from '@gusto/embedded-api/react-query/contractorsUpdate'\nimport type { NewHireReportProps } from './types'\nimport { useI18n } from '@/i18n'\nimport { BaseComponent, useBase } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Form } from '@/components/Common/Form'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { componentEvents, STATES_ABBR } from '@/shared/constants'\nimport { ActionsLayout } from '@/components/Common/ActionsLayout'\nimport { Flex, RadioGroupField, SelectField } from '@/components/Common'\n\nconst NewHireReportSchema = z.union([\n z.object({\n fileNewHireReport: z.boolean().refine(v => v),\n state: z.string().min(1),\n }),\n z.object({\n fileNewHireReport: z.boolean().refine(v => !v),\n }),\n])\n\ntype NewHireReportSchemaInputs = z.input<typeof NewHireReportSchema>\n\n/**\n * Collects new hire reporting information for a contractor and persists it to the contractor record.\n *\n * Asks whether a new hire report should be filed and, when the answer is yes, captures the\n * work state used for filing. Submitting writes both values back to the contractor.\n *\n * @remarks\n * Set `selfOnboarding` to `true` when this component is rendered as part of the contractor's\n * own self-onboarding flow rather than admin onboarding.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/newHireReport/updated` | Fired when the new hire report is saved | The API response object; access the updated contractor at `.contractor` |\n * | `contractor/newHireReport/done` | Fired after the new hire report step completes | — |\n *\n * @param props - Component configuration; see {@link NewHireReportProps}.\n * @returns The rendered new hire report form.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorOnboarding } from '@gusto/embedded-react-sdk'\n *\n * function NewHireReportStep() {\n * return (\n * <ContractorOnboarding.NewHireReport\n * contractorId=\"contractor-uuid\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function NewHireReport(props: NewHireReportProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nfunction Root({ contractorId, className, dictionary, selfOnboarding = false }: NewHireReportProps) {\n useComponentDictionary('Contractor.NewHireReport', dictionary)\n useI18n('Contractor.NewHireReport')\n const { t } = useTranslation('Contractor.NewHireReport')\n const { onEvent, baseSubmitHandler } = useBase()\n const Components = useComponentContext()\n\n const {\n data: { contractorShow: contractor },\n } = useContractorsGetSuspense({ contractorUuid: contractorId })\n const contractorDetails = contractor!\n\n const { mutateAsync: updateContractor, isPending: updateContractorPending } =\n useContractorsUpdateMutation()\n\n const defaultValues = useMemo(\n () => ({\n fileNewHireReport: contractorDetails.fileNewHireReport || false,\n state: contractorDetails.workState || null,\n }),\n [contractorDetails],\n )\n\n const formMethods = useForm({\n resolver: zodResolver(NewHireReportSchema),\n defaultValues: defaultValues,\n })\n\n const watchedDoFile = useWatch({ control: formMethods.control, name: 'fileNewHireReport' })\n const onSubmit: SubmitHandler<NewHireReportSchemaInputs> = async data => {\n await baseSubmitHandler(data, async payload => {\n const contractorResponse = await updateContractor({\n request: {\n contractorUuid: contractorId,\n contractorUpdateRequestBody: {\n type: contractorDetails.type,\n selfOnboarding: selfOnboarding,\n fileNewHireReport: payload.fileNewHireReport,\n workState: 'state' in payload ? payload.state : null,\n version: contractorDetails.version!,\n },\n },\n })\n onEvent(componentEvents.CONTRACTOR_NEW_HIRE_REPORT_UPDATED, contractorResponse)\n onEvent(componentEvents.CONTRACTOR_NEW_HIRE_REPORT_DONE)\n })\n }\n\n return (\n <section className={className}>\n <FormProvider {...formMethods}>\n <Form onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Flex flexDirection=\"column\" alignItems=\"stretch\">\n <header>\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Text variant=\"supporting\">{t('description')}</Components.Text>\n </Flex>\n </header>\n <RadioGroupField\n name=\"fileNewHireReport\"\n label={t('doFileLegend')}\n shouldVisuallyHideLabel\n options={[\n {\n value: true,\n label: t('yesOption'),\n },\n {\n value: false,\n label: t('noOption'),\n },\n ]}\n />\n {watchedDoFile && (\n <SelectField\n name=\"state\"\n options={STATES_ABBR.map((stateAbbr: (typeof STATES_ABBR)[number]) => ({\n label: t(`statesHash.${stateAbbr}`, { ns: 'common' }),\n value: stateAbbr,\n }))}\n label={t('stateSelectionLabel')}\n placeholder={t('statePlaceholder')}\n errorMessage={t('validations.state')}\n isRequired\n />\n )}\n <ActionsLayout>\n <Components.Button\n type=\"submit\"\n variant=\"primary\"\n isDisabled={updateContractorPending}\n >\n {t('submitCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </Form>\n </FormProvider>\n </section>\n )\n}\n"],"names":["NewHireReportSchema","z","v","NewHireReport","props","jsx","BaseComponent","Root","contractorId","className","dictionary","selfOnboarding","useComponentDictionary","useI18n","t","useTranslation","onEvent","baseSubmitHandler","useBase","Components","useComponentContext","contractor","useContractorsGetSuspense","contractorDetails","updateContractor","updateContractorPending","useContractorsUpdateMutation","defaultValues","useMemo","formMethods","useForm","zodResolver","watchedDoFile","useWatch","onSubmit","data","payload","contractorResponse","componentEvents","FormProvider","Form","jsxs","Flex","RadioGroupField","SelectField","STATES_ABBR","stateAbbr","ActionsLayout"],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  import { jsx as r, jsxs as s } from "react/jsx-runtime";
2
2
  import { useTranslation as f } from "react-i18next";
3
3
  import { useContractorBankAccountForm as C } from "../useContractorBankAccountForm/useContractorBankAccountForm.js";
4
- import "classnames";
5
- import "../../../../../shared/constants.js";
6
4
  import { ActionsLayout as B } from "../../../../Common/ActionsLayout/ActionsLayout.js";
7
5
  import { Form as k } from "../../../../Common/Form/Form.js";
8
6
  import { BaseLayout as m } from "../../../../Base/Base.js";
@@ -11,16 +9,16 @@ import { SDKFormProvider as F } from "../../../../../partner-hook-utils/form/SDK
11
9
  import { useI18n as A, useComponentDictionary as h } from "../../../../../i18n/I18n.js";
12
10
  import { useComponentContext as y } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
13
11
  import { ContractorBankAccountFields as b } from "../ContractorBankAccountFields/ContractorBankAccountFields.js";
14
- function T({
12
+ function K({
15
13
  contractorId: u,
16
14
  dictionary: t,
17
15
  onSaved: d,
18
16
  onCancel: n,
19
17
  LoaderComponent: i,
20
- ...p
18
+ ...l
21
19
  }) {
22
20
  A("Contractor.BankAccountFields"), h("Contractor.BankAccountFields", t);
23
- const o = C({ contractorId: u, ...p }), { t: c } = f("Contractor.BankAccountFields"), e = y();
21
+ const o = C({ contractorId: u, ...l }), { t: c } = f("Contractor.BankAccountFields"), e = y();
24
22
  if (o.isLoading)
25
23
  return /* @__PURE__ */ r(
26
24
  m,
@@ -30,11 +28,11 @@ function T({
30
28
  LoaderComponent: i
31
29
  }
32
30
  );
33
- const l = async () => {
31
+ const p = async () => {
34
32
  const a = await o.actions.onSubmit();
35
33
  a && d(a.data);
36
34
  };
37
- return /* @__PURE__ */ r(m, { error: o.errorHandling.errors, LoaderComponent: i, children: /* @__PURE__ */ r(F, { formHookResult: o, children: /* @__PURE__ */ s(k, { onSubmit: l, children: [
35
+ return /* @__PURE__ */ r(m, { error: o.errorHandling.errors, LoaderComponent: i, children: /* @__PURE__ */ r(F, { formHookResult: o, children: /* @__PURE__ */ s(k, { onSubmit: p, children: [
38
36
  /* @__PURE__ */ r(b, { bankAccountForm: o, dictionary: t }),
39
37
  /* @__PURE__ */ s(B, { children: [
40
38
  n && /* @__PURE__ */ r(e.Button, { variant: "secondary", type: "button", onClick: n, children: c("cancelCta") }),
@@ -43,6 +41,6 @@ function T({
43
41
  ] }) }) });
44
42
  }
45
43
  export {
46
- T as ContractorBankAccountFormBody
44
+ K as ContractorBankAccountFormBody
47
45
  };
48
46
  //# sourceMappingURL=ContractorBankAccountFormBody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContractorBankAccountFormBody.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { ContractorBankAccount } from '@gusto/embedded-api/models/components/contractorbankaccount'\nimport { useContractorBankAccountForm } from '../useContractorBankAccountForm'\nimport type { UseContractorBankAccountFormProps } from '../useContractorBankAccountForm'\nimport {\n ContractorBankAccountFields,\n type ContractorBankAccountFieldsDictionary,\n} from '../ContractorBankAccountFields'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { BaseLayout } from '@/components/Base'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { LoaderComponentType } from '@/components/Base'\n\n/** @internal */\nexport interface ContractorBankAccountFormBodyProps extends Omit<\n UseContractorBankAccountFormProps,\n 'contractorId'\n> {\n /** The associated contractor identifier. */\n contractorId: string\n /**\n * Translation overrides for the form's strings. Each consuming surface\n * passes the dictionary it resolved from its own namespace so a partner\n * override on one surface doesn't leak into the other.\n */\n dictionary?: ContractorBankAccountFieldsDictionary\n /** Called with the created bank account after a successful submit. */\n onSaved: (bankAccount: ContractorBankAccount) => void\n onCancel?: () => void\n /** Custom loading indicator rendered while this component's async data is fetching. Overrides the indicator configured on `GustoProvider` for this instance only. */\n LoaderComponent?: LoaderComponentType\n}\n\n/**\n * Shared bank-account form body. Owns the `useContractorBankAccountForm`\n * composition, the shared field set, and the submit/cancel actions. Reads\n * its copy from the internal `Contractor.BankAccountFields` namespace;\n * consuming surfaces inject their own copy via the `dictionary` prop and map\n * the `onSaved`/`onCancel` callbacks onto their surface-specific events.\n *\n * @internal\n */\nexport function ContractorBankAccountFormBody({\n contractorId,\n dictionary,\n onSaved,\n onCancel,\n LoaderComponent,\n ...hookProps\n}: ContractorBankAccountFormBodyProps) {\n useI18n('Contractor.BankAccountFields')\n useComponentDictionary('Contractor.BankAccountFields', dictionary)\n const bankAccountForm = useContractorBankAccountForm({ contractorId, ...hookProps })\n const { t } = useTranslation('Contractor.BankAccountFields')\n const Components = useComponentContext()\n\n if (bankAccountForm.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={bankAccountForm.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n const handleSubmit = async () => {\n const result = await bankAccountForm.actions.onSubmit()\n if (result) {\n onSaved(result.data)\n }\n }\n\n return (\n <BaseLayout error={bankAccountForm.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <SDKFormProvider formHookResult={bankAccountForm}>\n <Form onSubmit={handleSubmit}>\n <ContractorBankAccountFields bankAccountForm={bankAccountForm} dictionary={dictionary} />\n <ActionsLayout>\n {onCancel && (\n <Components.Button variant=\"secondary\" type=\"button\" onClick={onCancel}>\n {t('cancelCta')}\n </Components.Button>\n )}\n <Components.Button type=\"submit\" isLoading={bankAccountForm.status.isPending}>\n {t('saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n )\n}\n"],"names":["ContractorBankAccountFormBody","contractorId","dictionary","onSaved","onCancel","LoaderComponent","hookProps","useI18n","useComponentDictionary","bankAccountForm","useContractorBankAccountForm","t","useTranslation","Components","useComponentContext","jsx","BaseLayout","handleSubmit","result","SDKFormProvider","jsxs","Form","ContractorBankAccountFields","ActionsLayout"],"mappings":";;;;;;;;;;;;;AA6CO,SAASA,EAA8B;AAAA,EAC5C,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,GAAGC;AACL,GAAuC;AACrC,EAAAC,EAAQ,8BAA8B,GACtCC,EAAuB,gCAAgCN,CAAU;AACjE,QAAMO,IAAkBC,EAA6B,EAAE,cAAAT,GAAc,GAAGK,GAAW,GAC7E,EAAE,GAAAK,EAAA,IAAMC,EAAe,8BAA8B,GACrDC,IAAaC,EAAA;AAEnB,MAAIL,EAAgB;AAClB,WACE,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAS;AAAA,QACT,OAAOP,EAAgB,cAAc;AAAA,QACrC,iBAAAJ;AAAA,MAAA;AAAA,IAAA;AAKN,QAAMY,IAAe,YAAY;AAC/B,UAAMC,IAAS,MAAMT,EAAgB,QAAQ,SAAA;AAC7C,IAAIS,KACFf,EAAQe,EAAO,IAAI;AAAA,EAEvB;AAEA,SACE,gBAAAH,EAACC,GAAA,EAAW,OAAOP,EAAgB,cAAc,QAAQ,iBAAAJ,GACvD,UAAA,gBAAAU,EAACI,GAAA,EAAgB,gBAAgBV,GAC/B,UAAA,gBAAAW,EAACC,GAAA,EAAK,UAAUJ,GACd,UAAA;AAAA,IAAA,gBAAAF,EAACO,GAAA,EAA4B,iBAAAb,GAAkC,YAAAP,EAAA,CAAwB;AAAA,sBACtFqB,GAAA,EACE,UAAA;AAAA,MAAAnB,KACC,gBAAAW,EAACF,EAAW,QAAX,EAAkB,SAAQ,aAAY,MAAK,UAAS,SAAST,GAC3D,UAAAO,EAAE,WAAW,EAAA,CAChB;AAAA,MAEF,gBAAAI,EAACF,EAAW,QAAX,EAAkB,MAAK,UAAS,WAAWJ,EAAgB,OAAO,WAChE,UAAAE,EAAE,SAAS,EAAA,CACd;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;"}
1
+ {"version":3,"file":"ContractorBankAccountFormBody.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { ContractorBankAccount } from '@gusto/embedded-api/models/components/contractorbankaccount'\nimport { useContractorBankAccountForm } from '../useContractorBankAccountForm'\nimport type { UseContractorBankAccountFormProps } from '../useContractorBankAccountForm'\nimport {\n ContractorBankAccountFields,\n type ContractorBankAccountFieldsDictionary,\n} from '../ContractorBankAccountFields'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { BaseLayout } from '@/components/Base'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { LoaderComponentType } from '@/components/Base'\n\n/** @internal */\nexport interface ContractorBankAccountFormBodyProps extends Omit<\n UseContractorBankAccountFormProps,\n 'contractorId'\n> {\n /** The associated contractor identifier. */\n contractorId: string\n /**\n * Translation overrides for the form's strings. Each consuming surface\n * passes the dictionary it resolved from its own namespace so a partner\n * override on one surface doesn't leak into the other.\n */\n dictionary?: ContractorBankAccountFieldsDictionary\n /** Called with the created bank account after a successful submit. */\n onSaved: (bankAccount: ContractorBankAccount) => void\n onCancel?: () => void\n /** Custom loading indicator rendered while this component's async data is fetching. Overrides the indicator configured on `GustoProvider` for this instance only. */\n LoaderComponent?: LoaderComponentType\n}\n\n/**\n * Shared bank-account form body. Owns the `useContractorBankAccountForm`\n * composition, the shared field set, and the submit/cancel actions. Reads\n * its copy from the internal `Contractor.BankAccountFields` namespace;\n * consuming surfaces inject their own copy via the `dictionary` prop and map\n * the `onSaved`/`onCancel` callbacks onto their surface-specific events.\n *\n * @internal\n */\nexport function ContractorBankAccountFormBody({\n contractorId,\n dictionary,\n onSaved,\n onCancel,\n LoaderComponent,\n ...hookProps\n}: ContractorBankAccountFormBodyProps) {\n useI18n('Contractor.BankAccountFields')\n useComponentDictionary('Contractor.BankAccountFields', dictionary)\n const bankAccountForm = useContractorBankAccountForm({ contractorId, ...hookProps })\n const { t } = useTranslation('Contractor.BankAccountFields')\n const Components = useComponentContext()\n\n if (bankAccountForm.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={bankAccountForm.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n const handleSubmit = async () => {\n const result = await bankAccountForm.actions.onSubmit()\n if (result) {\n onSaved(result.data)\n }\n }\n\n return (\n <BaseLayout error={bankAccountForm.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <SDKFormProvider formHookResult={bankAccountForm}>\n <Form onSubmit={handleSubmit}>\n <ContractorBankAccountFields bankAccountForm={bankAccountForm} dictionary={dictionary} />\n <ActionsLayout>\n {onCancel && (\n <Components.Button variant=\"secondary\" type=\"button\" onClick={onCancel}>\n {t('cancelCta')}\n </Components.Button>\n )}\n <Components.Button type=\"submit\" isLoading={bankAccountForm.status.isPending}>\n {t('saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n )\n}\n"],"names":["ContractorBankAccountFormBody","contractorId","dictionary","onSaved","onCancel","LoaderComponent","hookProps","useI18n","useComponentDictionary","bankAccountForm","useContractorBankAccountForm","t","useTranslation","Components","useComponentContext","jsx","BaseLayout","handleSubmit","result","SDKFormProvider","jsxs","Form","ContractorBankAccountFields","ActionsLayout"],"mappings":";;;;;;;;;;;AA6CO,SAASA,EAA8B;AAAA,EAC5C,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,GAAGC;AACL,GAAuC;AACrC,EAAAC,EAAQ,8BAA8B,GACtCC,EAAuB,gCAAgCN,CAAU;AACjE,QAAMO,IAAkBC,EAA6B,EAAE,cAAAT,GAAc,GAAGK,GAAW,GAC7E,EAAE,GAAAK,EAAA,IAAMC,EAAe,8BAA8B,GACrDC,IAAaC,EAAA;AAEnB,MAAIL,EAAgB;AAClB,WACE,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAS;AAAA,QACT,OAAOP,EAAgB,cAAc;AAAA,QACrC,iBAAAJ;AAAA,MAAA;AAAA,IAAA;AAKN,QAAMY,IAAe,YAAY;AAC/B,UAAMC,IAAS,MAAMT,EAAgB,QAAQ,SAAA;AAC7C,IAAIS,KACFf,EAAQe,EAAO,IAAI;AAAA,EAEvB;AAEA,SACE,gBAAAH,EAACC,GAAA,EAAW,OAAOP,EAAgB,cAAc,QAAQ,iBAAAJ,GACvD,UAAA,gBAAAU,EAACI,GAAA,EAAgB,gBAAgBV,GAC/B,UAAA,gBAAAW,EAACC,GAAA,EAAK,UAAUJ,GACd,UAAA;AAAA,IAAA,gBAAAF,EAACO,GAAA,EAA4B,iBAAAb,GAAkC,YAAAP,EAAA,CAAwB;AAAA,sBACtFqB,GAAA,EACE,UAAA;AAAA,MAAAnB,KACC,gBAAAW,EAACF,EAAW,QAAX,EAAkB,SAAQ,aAAY,MAAK,UAAS,SAAST,GAC3D,UAAAO,EAAE,WAAW,EAAA,CAChB;AAAA,MAEF,gBAAAI,EAACF,EAAW,QAAX,EAAkB,MAAK,UAAS,WAAWJ,EAAgB,OAAO,WAChE,UAAAE,EAAE,SAAS,EAAA,CACd;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;"}
@@ -90,7 +90,7 @@ function yt({
90
90
  preservedContractorPayments: E,
91
91
  onBack: H
92
92
  }) {
93
- const { t: o } = O("Contractor.Payments.CreateHistoricalPayment"), { Heading: g, Text: u, Button: p, Alert: a } = B(), { baseSubmitHandler: v } = ot(), { formatLongWithYear: h } = ct(), _ = Z(), P = $(), { data: A } = K({ companyUuid: l }), f = (A.contractors ?? []).filter(
93
+ const { t: o } = O("Contractor.Payments.CreateHistoricalPayment"), { Heading: g, Text: u, Button: p, Alert: a } = B(), { baseSubmitHandler: v } = ot(), { formatLongWithYear: h } = ct(), _ = Z(), P = $(), { data: A } = K({ companyUuid: l }), f = (A.showContractors ?? []).filter(
94
94
  (n) => C.includes(n.uuid)
95
95
  ), { virtualContractorPayments: D, totals: i, editModal: w } = Q({
96
96
  contractors: f,
@@ -1 +1 @@
1
- {"version":3,"file":"CreateHistoricalPayment.js","sources":["../../../../../src/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport type { PostV1CompaniesCompanyIdContractorPaymentGroupsPaymentMethod as ContractorPaymentMethod } from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport {\n usePaymentAmountsEditor,\n type VirtualContractorPayment,\n} from '../shared/usePaymentAmountsEditor'\nimport { SetPaymentAmounts } from '../shared/SetPaymentAmounts'\nimport { PaymentSummaryBlock } from '../shared/PaymentSummaryBlock'\nimport { getHistoricalPaymentCheckDateBounds } from '../shared/historicalPaymentDateBounds'\nimport {\n useCreateHistoricalPaymentDictionary,\n useCreateHistoricalPaymentReviewDictionary,\n} from './useFormDictionary'\nimport { formatDateToStringDate } from '@/helpers/dateFormatting'\nimport { ActionsLayout, Flex, FlexItem } from '@/components/Common'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { componentEvents } from '@/shared/constants'\nimport { SelectContractors } from '@/components/Contractor/shared/SelectContractors/SelectContractors'\nimport CaretLeftIcon from '@/assets/icons/caret-left.svg?react'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\n\nconst ALLOWED_PAYMENT_METHODS: ContractorPaymentMethod[] = ['Historical Payment']\n\n/**\n * Props for {@link CreateHistoricalPayment}.\n *\n * @alpha\n */\nexport interface CreateHistoricalPaymentProps extends BaseComponentInterface<'Contractor.Payments.CreateHistoricalPayment'> {\n /** UUID of the company recording the historical payment. */\n companyId: string\n}\n\n/**\n * Records a historical contractor payment — one that already happened outside Gusto and does not\n * move money — by picking a paid date and the contractors being paid, entering hours, wages,\n * bonuses, and reimbursements for them, then reviewing and submitting.\n *\n * @remarks\n * Every contractor payment is fixed to the `Historical Payment` payment method, so there is no\n * payment method choice or debit information to review.\n * Continue on the contractor-selection step is disabled until the paid date is valid and at least\n * one contractor is selected. Continue on the amounts step is disabled until at least one selected\n * contractor has a payment total greater than zero, and swaps the amounts grid for an in-place\n * review (mirroring `CreatePayment`'s preview step); Back returns to the grid without losing\n * entered amounts, and Submit creates the contractor payment group. Once creation succeeds, the\n * Back and Submit buttons are replaced with a success message, since the creation token has been\n * consumed and the host is expected to navigate away (e.g. to `HistoricalPaymentSummary`).\n * The amounts step also has its own Back button, returning to contractor selection without losing\n * the selected paid date, contractors, or any amounts already entered.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/historicalPayments/edit` | The edit modal was opened for a contractor. | — |\n * | `contractor/historicalPayments/update` | A contractor's payment values were updated locally. | The updated form values (hours, wage, bonus, reimbursement, payment method, etc.). |\n * | `contractor/historicalPayments/preview` | The preview API call succeeded. | The contractor payment group preview response. |\n * | `contractor/historicalPayments/backToEdit` | The user returned from preview to continue editing. | — |\n * | `contractor/historicalPayments/created` | The payment group was successfully created. | The created contractor payment group response. |\n *\n * @param props - See {@link CreateHistoricalPaymentProps}.\n * @returns The rendered contractor-selection screen, the payment-amounts entry screen, or its\n * in-place review.\n * @alpha\n */\nexport function CreateHistoricalPayment(props: CreateHistoricalPaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreateHistoricalPayment\">\n <Root {...props} />\n </BaseComponent>\n )\n}\n\ninterface ContractorSelection {\n contractorIds: string[]\n checkDate: string\n}\n\nfunction Root({ companyId, dictionary, onEvent, className }: CreateHistoricalPaymentProps) {\n useUnstableFeature('historicalPayments', { throwIfDisabled: true })\n useI18n('Contractor.Payments.CreateHistoricalPayment')\n useComponentDictionary('Contractor.Payments.CreateHistoricalPayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreateHistoricalPayment')\n const { Heading, Text, Button, DatePicker } = useComponentContext()\n\n const { minDate, maxDate } = useMemo(() => getHistoricalPaymentCheckDateBounds(), [])\n const [checkDate, setCheckDate] = useState<Date | null>(null)\n const [selectedIds, setSelectedIds] = useState<string[]>([])\n const [selection, setSelection] = useState<ContractorSelection | null>(null)\n const [savedContractorPayments, setSavedContractorPayments] = useState<\n VirtualContractorPayment[] | undefined\n >(undefined)\n\n let dateError: string | null = null\n if (checkDate !== null && checkDate > maxDate) {\n dateError = t('select.dateInFutureError')\n } else if (checkDate !== null && checkDate < minDate) {\n dateError = t('select.dateTooEarlyError', {\n year: checkDate.getFullYear(),\n allowedYear: minDate.getFullYear(),\n })\n }\n\n const canContinue = selectedIds.length > 0 && checkDate !== null && dateError === null\n\n const handleContinue = () => {\n if (!canContinue) return\n const checkDateString = formatDateToStringDate(checkDate)\n if (!checkDateString) return\n setSelection({ contractorIds: selectedIds, checkDate: checkDateString })\n }\n\n if (!selection) {\n return (\n <Flex className={className} flexDirection=\"column\" gap={32}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('select.heading')}</Heading>\n <Text variant=\"supporting\">{t('select.subtitle')}</Text>\n </Flex>\n\n <DatePicker\n label={t('select.dateLabel')}\n isRequired\n value={checkDate}\n onChange={setCheckDate}\n minDate={minDate}\n maxDate={maxDate}\n isInvalid={dateError !== null}\n errorMessage={dateError ?? undefined}\n />\n\n <SelectContractors\n companyId={companyId}\n onSelectionChange={setSelectedIds}\n initialSelectedIds={selectedIds}\n />\n\n <ActionsLayout>\n <Button onClick={handleContinue} variant=\"primary\" isDisabled={!canContinue}>\n {t('select.continueButton')}\n </Button>\n </ActionsLayout>\n </Flex>\n )\n }\n\n return (\n <AmountsAndReview\n className={className}\n companyId={companyId}\n contractorIds={selection.contractorIds}\n checkDate={selection.checkDate}\n onEvent={onEvent}\n preservedContractorPayments={savedContractorPayments}\n onBack={payments => {\n setSavedContractorPayments(payments)\n setSelection(null)\n }}\n />\n )\n}\n\ninterface AmountsAndReviewProps {\n /** CSS class name applied to the root element. */\n className?: string\n companyId: string\n contractorIds: string[]\n checkDate: string\n onEvent: CreateHistoricalPaymentProps['onEvent']\n preservedContractorPayments?: VirtualContractorPayment[]\n onBack: (payments: VirtualContractorPayment[]) => void\n}\n\nfunction AmountsAndReview({\n className,\n companyId,\n contractorIds,\n checkDate,\n onEvent,\n preservedContractorPayments,\n onBack,\n}: AmountsAndReviewProps) {\n const { t } = useTranslation('Contractor.Payments.CreateHistoricalPayment')\n const { Heading, Text, Button, Alert } = useComponentContext()\n const { baseSubmitHandler } = useBase()\n const { formatLongWithYear } = useDateFormatter()\n const paymentAmountsDictionary = useCreateHistoricalPaymentDictionary()\n const reviewDictionary = useCreateHistoricalPaymentReviewDictionary()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors ?? []).filter(contractor =>\n contractorIds.includes(contractor.uuid),\n )\n\n const { virtualContractorPayments, totals, editModal } = usePaymentAmountsEditor({\n contractors,\n allowedPaymentMethods: ALLOWED_PAYMENT_METHODS,\n preservedContractorPayments,\n onEditOpen: () => {\n onEvent(componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_EDIT)\n },\n onEditSave: data => {\n onEvent(componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_UPDATE, data)\n },\n })\n\n const canContinue = totals.total > 0\n\n const { mutateAsync: previewContractorPaymentGroup, isPending: isPreviewing } =\n useContractorPaymentGroupsPreviewMutation()\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreating } =\n useContractorPaymentGroupsCreateMutation()\n\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [isCreated, setIsCreated] = useState(false)\n\n const touchedContractorPayments = () =>\n virtualContractorPayments\n .filter(payment => payment.isTouched)\n .map(({ isTouched: _isTouched, ...rest }) => rest)\n\n const handleContinue = async () => {\n if (!canContinue) return\n\n await baseSubmitHandler(null, async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n checkDate: new RFCDate(checkDate),\n contractorPayments: touchedContractorPayments(),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(\n componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_PREVIEW,\n response.contractorPaymentGroupPreview,\n )\n })\n }\n\n const handleBackToEdit = () => {\n setPreviewData(null)\n onEvent(componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_BACK_TO_EDIT)\n }\n\n const handleSubmit = async () => {\n const creationToken = previewData?.creationToken\n if (!creationToken || isCreated) return\n\n await baseSubmitHandler(null, async () => {\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n checkDate: new RFCDate(checkDate),\n creationToken,\n contractorPayments: touchedContractorPayments(),\n },\n },\n })\n\n if (!response.contractorPaymentGroup) return\n\n setIsCreated(true)\n onEvent(\n componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_CREATED,\n response.contractorPaymentGroup,\n )\n })\n }\n\n if (previewData) {\n return (\n <Flex className={className} flexDirection=\"column\" gap={32}>\n {!isCreated && <BackButton onClick={handleBackToEdit} />}\n\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\" gap={16}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('review.title')}</Heading>\n <Text variant=\"supporting\">\n {t('review.subtitle', {\n checkDate: formatLongWithYear(previewData.checkDate ?? ''),\n })}\n </Text>\n </Flex>\n {!isCreated && (\n <Button onClick={handleSubmit} variant=\"primary\" isLoading={isCreating}>\n {t('review.submitButton')}\n </Button>\n )}\n </Flex>\n\n {isCreated && (\n <Alert status=\"success\" label={t('review.successTitle')}>\n <Text>{t('review.successMessage')}</Text>\n </Alert>\n )}\n\n <PaymentSummaryBlock\n contractorPaymentGroup={previewData}\n contractors={contractors}\n showDebitColumns={false}\n dictionary={reviewDictionary}\n />\n </Flex>\n )\n }\n\n return (\n <Flex className={className} flexDirection=\"column\" gap={32}>\n <BackButton\n onClick={() => {\n onBack(virtualContractorPayments)\n }}\n />\n\n <Flex justifyContent=\"flex-end\" gap={16}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('amounts.heading')}</Heading>\n <Text variant=\"supporting\">{t('amounts.subtitle')}</Text>\n </Flex>\n <FlexItem>\n <Button\n onClick={handleContinue}\n variant=\"primary\"\n isDisabled={!canContinue}\n isLoading={isPreviewing}\n >\n {t('amounts.continueButton')}\n </Button>\n </FlexItem>\n </Flex>\n\n <SetPaymentAmounts\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n totals={totals}\n allowedPaymentMethods={ALLOWED_PAYMENT_METHODS}\n editModal={editModal}\n dictionary={paymentAmountsDictionary}\n />\n </Flex>\n )\n}\n\nfunction BackButton({ onClick }: { onClick: () => void }) {\n const { t } = useTranslation('Contractor.Payments.CreateHistoricalPayment')\n const { Button } = useComponentContext()\n\n return (\n <Button variant=\"secondary\" icon={<CaretLeftIcon aria-hidden=\"true\" />} onClick={onClick}>\n {t('backButton')}\n </Button>\n )\n}\n"],"names":["ALLOWED_PAYMENT_METHODS","CreateHistoricalPayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","className","useUnstableFeature","useI18n","useComponentDictionary","t","useTranslation","Heading","Text","Button","DatePicker","useComponentContext","minDate","maxDate","useMemo","getHistoricalPaymentCheckDateBounds","checkDate","setCheckDate","useState","selectedIds","setSelectedIds","selection","setSelection","savedContractorPayments","setSavedContractorPayments","dateError","canContinue","handleContinue","checkDateString","formatDateToStringDate","AmountsAndReview","payments","Flex","jsxs","SelectContractors","ActionsLayout","contractorIds","preservedContractorPayments","onBack","Alert","baseSubmitHandler","useBase","formatLongWithYear","useDateFormatter","paymentAmountsDictionary","useCreateHistoricalPaymentDictionary","reviewDictionary","useCreateHistoricalPaymentReviewDictionary","contractorList","useContractorsListSuspense","contractors","contractor","virtualContractorPayments","totals","editModal","usePaymentAmountsEditor","componentEvents","data","previewContractorPaymentGroup","isPreviewing","useContractorPaymentGroupsPreviewMutation","createContractorPaymentGroup","isCreating","useContractorPaymentGroupsCreateMutation","previewData","setPreviewData","isCreated","setIsCreated","touchedContractorPayments","payment","_isTouched","rest","response","RFCDate","handleBackToEdit","handleSubmit","creationToken","BackButton","PaymentSummaryBlock","FlexItem","SetPaymentAmounts","onClick","CaretLeftIcon"],"mappings":"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"}
1
+ {"version":3,"file":"CreateHistoricalPayment.js","sources":["../../../../../src/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport type { PostV1CompaniesCompanyIdContractorPaymentGroupsPaymentMethod as ContractorPaymentMethod } from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport {\n usePaymentAmountsEditor,\n type VirtualContractorPayment,\n} from '../shared/usePaymentAmountsEditor'\nimport { SetPaymentAmounts } from '../shared/SetPaymentAmounts'\nimport { PaymentSummaryBlock } from '../shared/PaymentSummaryBlock'\nimport { getHistoricalPaymentCheckDateBounds } from '../shared/historicalPaymentDateBounds'\nimport {\n useCreateHistoricalPaymentDictionary,\n useCreateHistoricalPaymentReviewDictionary,\n} from './useFormDictionary'\nimport { formatDateToStringDate } from '@/helpers/dateFormatting'\nimport { ActionsLayout, Flex, FlexItem } from '@/components/Common'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { componentEvents } from '@/shared/constants'\nimport { SelectContractors } from '@/components/Contractor/shared/SelectContractors/SelectContractors'\nimport CaretLeftIcon from '@/assets/icons/caret-left.svg?react'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\n\nconst ALLOWED_PAYMENT_METHODS: ContractorPaymentMethod[] = ['Historical Payment']\n\n/**\n * Props for {@link CreateHistoricalPayment}.\n *\n * @alpha\n */\nexport interface CreateHistoricalPaymentProps extends BaseComponentInterface<'Contractor.Payments.CreateHistoricalPayment'> {\n /** UUID of the company recording the historical payment. */\n companyId: string\n}\n\n/**\n * Records a historical contractor payment — one that already happened outside Gusto and does not\n * move money — by picking a paid date and the contractors being paid, entering hours, wages,\n * bonuses, and reimbursements for them, then reviewing and submitting.\n *\n * @remarks\n * Every contractor payment is fixed to the `Historical Payment` payment method, so there is no\n * payment method choice or debit information to review.\n * Continue on the contractor-selection step is disabled until the paid date is valid and at least\n * one contractor is selected. Continue on the amounts step is disabled until at least one selected\n * contractor has a payment total greater than zero, and swaps the amounts grid for an in-place\n * review (mirroring `CreatePayment`'s preview step); Back returns to the grid without losing\n * entered amounts, and Submit creates the contractor payment group. Once creation succeeds, the\n * Back and Submit buttons are replaced with a success message, since the creation token has been\n * consumed and the host is expected to navigate away (e.g. to `HistoricalPaymentSummary`).\n * The amounts step also has its own Back button, returning to contractor selection without losing\n * the selected paid date, contractors, or any amounts already entered.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/historicalPayments/edit` | The edit modal was opened for a contractor. | — |\n * | `contractor/historicalPayments/update` | A contractor's payment values were updated locally. | The updated form values (hours, wage, bonus, reimbursement, payment method, etc.). |\n * | `contractor/historicalPayments/preview` | The preview API call succeeded. | The contractor payment group preview response. |\n * | `contractor/historicalPayments/backToEdit` | The user returned from preview to continue editing. | — |\n * | `contractor/historicalPayments/created` | The payment group was successfully created. | The created contractor payment group response. |\n *\n * @param props - See {@link CreateHistoricalPaymentProps}.\n * @returns The rendered contractor-selection screen, the payment-amounts entry screen, or its\n * in-place review.\n * @alpha\n */\nexport function CreateHistoricalPayment(props: CreateHistoricalPaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreateHistoricalPayment\">\n <Root {...props} />\n </BaseComponent>\n )\n}\n\ninterface ContractorSelection {\n contractorIds: string[]\n checkDate: string\n}\n\nfunction Root({ companyId, dictionary, onEvent, className }: CreateHistoricalPaymentProps) {\n useUnstableFeature('historicalPayments', { throwIfDisabled: true })\n useI18n('Contractor.Payments.CreateHistoricalPayment')\n useComponentDictionary('Contractor.Payments.CreateHistoricalPayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreateHistoricalPayment')\n const { Heading, Text, Button, DatePicker } = useComponentContext()\n\n const { minDate, maxDate } = useMemo(() => getHistoricalPaymentCheckDateBounds(), [])\n const [checkDate, setCheckDate] = useState<Date | null>(null)\n const [selectedIds, setSelectedIds] = useState<string[]>([])\n const [selection, setSelection] = useState<ContractorSelection | null>(null)\n const [savedContractorPayments, setSavedContractorPayments] = useState<\n VirtualContractorPayment[] | undefined\n >(undefined)\n\n let dateError: string | null = null\n if (checkDate !== null && checkDate > maxDate) {\n dateError = t('select.dateInFutureError')\n } else if (checkDate !== null && checkDate < minDate) {\n dateError = t('select.dateTooEarlyError', {\n year: checkDate.getFullYear(),\n allowedYear: minDate.getFullYear(),\n })\n }\n\n const canContinue = selectedIds.length > 0 && checkDate !== null && dateError === null\n\n const handleContinue = () => {\n if (!canContinue) return\n const checkDateString = formatDateToStringDate(checkDate)\n if (!checkDateString) return\n setSelection({ contractorIds: selectedIds, checkDate: checkDateString })\n }\n\n if (!selection) {\n return (\n <Flex className={className} flexDirection=\"column\" gap={32}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('select.heading')}</Heading>\n <Text variant=\"supporting\">{t('select.subtitle')}</Text>\n </Flex>\n\n <DatePicker\n label={t('select.dateLabel')}\n isRequired\n value={checkDate}\n onChange={setCheckDate}\n minDate={minDate}\n maxDate={maxDate}\n isInvalid={dateError !== null}\n errorMessage={dateError ?? undefined}\n />\n\n <SelectContractors\n companyId={companyId}\n onSelectionChange={setSelectedIds}\n initialSelectedIds={selectedIds}\n />\n\n <ActionsLayout>\n <Button onClick={handleContinue} variant=\"primary\" isDisabled={!canContinue}>\n {t('select.continueButton')}\n </Button>\n </ActionsLayout>\n </Flex>\n )\n }\n\n return (\n <AmountsAndReview\n className={className}\n companyId={companyId}\n contractorIds={selection.contractorIds}\n checkDate={selection.checkDate}\n onEvent={onEvent}\n preservedContractorPayments={savedContractorPayments}\n onBack={payments => {\n setSavedContractorPayments(payments)\n setSelection(null)\n }}\n />\n )\n}\n\ninterface AmountsAndReviewProps {\n /** CSS class name applied to the root element. */\n className?: string\n companyId: string\n contractorIds: string[]\n checkDate: string\n onEvent: CreateHistoricalPaymentProps['onEvent']\n preservedContractorPayments?: VirtualContractorPayment[]\n onBack: (payments: VirtualContractorPayment[]) => void\n}\n\nfunction AmountsAndReview({\n className,\n companyId,\n contractorIds,\n checkDate,\n onEvent,\n preservedContractorPayments,\n onBack,\n}: AmountsAndReviewProps) {\n const { t } = useTranslation('Contractor.Payments.CreateHistoricalPayment')\n const { Heading, Text, Button, Alert } = useComponentContext()\n const { baseSubmitHandler } = useBase()\n const { formatLongWithYear } = useDateFormatter()\n const paymentAmountsDictionary = useCreateHistoricalPaymentDictionary()\n const reviewDictionary = useCreateHistoricalPaymentReviewDictionary()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.showContractors ?? []).filter(contractor =>\n contractorIds.includes(contractor.uuid),\n )\n\n const { virtualContractorPayments, totals, editModal } = usePaymentAmountsEditor({\n contractors,\n allowedPaymentMethods: ALLOWED_PAYMENT_METHODS,\n preservedContractorPayments,\n onEditOpen: () => {\n onEvent(componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_EDIT)\n },\n onEditSave: data => {\n onEvent(componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_UPDATE, data)\n },\n })\n\n const canContinue = totals.total > 0\n\n const { mutateAsync: previewContractorPaymentGroup, isPending: isPreviewing } =\n useContractorPaymentGroupsPreviewMutation()\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreating } =\n useContractorPaymentGroupsCreateMutation()\n\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [isCreated, setIsCreated] = useState(false)\n\n const touchedContractorPayments = () =>\n virtualContractorPayments\n .filter(payment => payment.isTouched)\n .map(({ isTouched: _isTouched, ...rest }) => rest)\n\n const handleContinue = async () => {\n if (!canContinue) return\n\n await baseSubmitHandler(null, async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n checkDate: new RFCDate(checkDate),\n contractorPayments: touchedContractorPayments(),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(\n componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_PREVIEW,\n response.contractorPaymentGroupPreview,\n )\n })\n }\n\n const handleBackToEdit = () => {\n setPreviewData(null)\n onEvent(componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_BACK_TO_EDIT)\n }\n\n const handleSubmit = async () => {\n const creationToken = previewData?.creationToken\n if (!creationToken || isCreated) return\n\n await baseSubmitHandler(null, async () => {\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n checkDate: new RFCDate(checkDate),\n creationToken,\n contractorPayments: touchedContractorPayments(),\n },\n },\n })\n\n if (!response.contractorPaymentGroup) return\n\n setIsCreated(true)\n onEvent(\n componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_CREATED,\n response.contractorPaymentGroup,\n )\n })\n }\n\n if (previewData) {\n return (\n <Flex className={className} flexDirection=\"column\" gap={32}>\n {!isCreated && <BackButton onClick={handleBackToEdit} />}\n\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\" gap={16}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('review.title')}</Heading>\n <Text variant=\"supporting\">\n {t('review.subtitle', {\n checkDate: formatLongWithYear(previewData.checkDate ?? ''),\n })}\n </Text>\n </Flex>\n {!isCreated && (\n <Button onClick={handleSubmit} variant=\"primary\" isLoading={isCreating}>\n {t('review.submitButton')}\n </Button>\n )}\n </Flex>\n\n {isCreated && (\n <Alert status=\"success\" label={t('review.successTitle')}>\n <Text>{t('review.successMessage')}</Text>\n </Alert>\n )}\n\n <PaymentSummaryBlock\n contractorPaymentGroup={previewData}\n contractors={contractors}\n showDebitColumns={false}\n dictionary={reviewDictionary}\n />\n </Flex>\n )\n }\n\n return (\n <Flex className={className} flexDirection=\"column\" gap={32}>\n <BackButton\n onClick={() => {\n onBack(virtualContractorPayments)\n }}\n />\n\n <Flex justifyContent=\"flex-end\" gap={16}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('amounts.heading')}</Heading>\n <Text variant=\"supporting\">{t('amounts.subtitle')}</Text>\n </Flex>\n <FlexItem>\n <Button\n onClick={handleContinue}\n variant=\"primary\"\n isDisabled={!canContinue}\n isLoading={isPreviewing}\n >\n {t('amounts.continueButton')}\n </Button>\n </FlexItem>\n </Flex>\n\n <SetPaymentAmounts\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n totals={totals}\n allowedPaymentMethods={ALLOWED_PAYMENT_METHODS}\n editModal={editModal}\n dictionary={paymentAmountsDictionary}\n />\n </Flex>\n )\n}\n\nfunction BackButton({ onClick }: { onClick: () => void }) {\n const { t } = useTranslation('Contractor.Payments.CreateHistoricalPayment')\n const { Button } = useComponentContext()\n\n return (\n <Button variant=\"secondary\" icon={<CaretLeftIcon aria-hidden=\"true\" />} onClick={onClick}>\n {t('backButton')}\n </Button>\n )\n}\n"],"names":["ALLOWED_PAYMENT_METHODS","CreateHistoricalPayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","className","useUnstableFeature","useI18n","useComponentDictionary","t","useTranslation","Heading","Text","Button","DatePicker","useComponentContext","minDate","maxDate","useMemo","getHistoricalPaymentCheckDateBounds","checkDate","setCheckDate","useState","selectedIds","setSelectedIds","selection","setSelection","savedContractorPayments","setSavedContractorPayments","dateError","canContinue","handleContinue","checkDateString","formatDateToStringDate","AmountsAndReview","payments","Flex","jsxs","SelectContractors","ActionsLayout","contractorIds","preservedContractorPayments","onBack","Alert","baseSubmitHandler","useBase","formatLongWithYear","useDateFormatter","paymentAmountsDictionary","useCreateHistoricalPaymentDictionary","reviewDictionary","useCreateHistoricalPaymentReviewDictionary","contractorList","useContractorsListSuspense","contractors","contractor","virtualContractorPayments","totals","editModal","usePaymentAmountsEditor","componentEvents","data","previewContractorPaymentGroup","isPreviewing","useContractorPaymentGroupsPreviewMutation","createContractorPaymentGroup","isCreating","useContractorPaymentGroupsCreateMutation","previewData","setPreviewData","isCreated","setIsCreated","touchedContractorPayments","payment","_isTouched","rest","response","RFCDate","handleBackToEdit","handleSubmit","creationToken","BackButton","PaymentSummaryBlock","FlexItem","SetPaymentAmounts","onClick","CaretLeftIcon"],"mappings":"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"}
@@ -36,10 +36,10 @@ function Ht(e) {
36
36
  }
37
37
  const Ct = ({ companyId: e, dictionary: u, onEvent: r, className: O }) => {
38
38
  mt("Contractor.Payments.CreatePayment", u);
39
- const { t: k } = tt("Contractor.Payments.CreatePayment"), { baseSubmitHandler: g } = lt(), [i, h] = m(null), [U, C] = m([]), [w, N] = m({}), { mutateAsync: L, isPending: S } = J(), {
39
+ const { t: h } = tt("Contractor.Payments.CreatePayment"), { baseSubmitHandler: k } = lt(), [i, w] = m(null), [U, C] = m([]), [g, N] = m({}), { mutateAsync: L, isPending: S } = J(), {
40
40
  mutateAsync: Y,
41
41
  isPending: E
42
- } = Q(), { data: j } = K({ companyUuid: e }), l = (j.contractors || []).filter(
42
+ } = Q(), { data: j } = K({ companyUuid: e }), l = (j.showContractors || []).filter(
43
43
  (t) => t.isActive && t.onboardingStatus === pt.ONBOARDING_COMPLETED
44
44
  ), { data: q } = et({ companyId: e }), { paymentSpeed: d, paymentSpeedDays: p } = ct(e), F = q?.companyBankAccounts?.[0], [f, R] = m(v(p)), _ = X(!1);
45
45
  Z(() => {
@@ -64,7 +64,7 @@ const Ct = ({ companyId: e, dictionary: u, onEvent: r, className: O }) => {
64
64
  );
65
65
  b(t.contractorUuid, {
66
66
  type: "success",
67
- title: k("alerts.contractorPaymentUpdated", {
67
+ title: h("alerts.contractorPaymentUpdated", {
68
68
  contractorName: n,
69
69
  interpolation: { escapeValue: !1 }
70
70
  }),
@@ -85,14 +85,14 @@ const Ct = ({ companyId: e, dictionary: u, onEvent: r, className: O }) => {
85
85
  contractorPaymentGroup: i,
86
86
  contractors: l,
87
87
  onBackToEdit: () => {
88
- h(null), C([]), N({}), r(c.CONTRACTOR_PAYMENT_BACK_TO_EDIT);
88
+ w(null), C([]), N({}), r(c.CONTRACTOR_PAYMENT_BACK_TO_EDIT);
89
89
  },
90
90
  onSubmit: async () => {
91
- await g(null, async () => {
91
+ await k(null, async () => {
92
92
  const t = A.filter((s) => s.isTouched);
93
93
  if (t.length === 0 || !i?.creationToken)
94
94
  return;
95
- const o = i.creationToken, n = Object.entries(w).map(
95
+ const o = i.creationToken, n = Object.entries(g).map(
96
96
  ([s, D]) => ({
97
97
  blockerType: s,
98
98
  selectedOption: D
@@ -113,7 +113,7 @@ const Ct = ({ companyId: e, dictionary: u, onEvent: r, className: O }) => {
113
113
  },
114
114
  isLoading: S || E,
115
115
  bankAccount: F,
116
- selectedUnblockOptions: w,
116
+ selectedUnblockOptions: g,
117
117
  onUnblockOptionChange: (t, o) => {
118
118
  N((n) => ({
119
119
  ...n,
@@ -132,12 +132,12 @@ const Ct = ({ companyId: e, dictionary: u, onEvent: r, className: O }) => {
132
132
  paymentDate: f,
133
133
  onPaymentDateChange: R,
134
134
  onSaveAndContinue: async () => {
135
- await g(null, async () => {
135
+ await k(null, async () => {
136
136
  const t = A.filter((n) => n.isTouched);
137
137
  if (t.length === 0) {
138
138
  b("error", {
139
139
  type: "error",
140
- title: k("alerts.noContractorPayments")
140
+ title: h("alerts.noContractorPayments")
141
141
  });
142
142
  return;
143
143
  }
@@ -152,7 +152,7 @@ const Ct = ({ companyId: e, dictionary: u, onEvent: r, className: O }) => {
152
152
  }
153
153
  }
154
154
  });
155
- h(n.contractorPaymentGroupPreview || null), r(c.CONTRACTOR_PAYMENT_PREVIEW, n.contractorPaymentGroupPreview);
155
+ w(n.contractorPaymentGroupPreview || null), r(c.CONTRACTOR_PAYMENT_PREVIEW, n.contractorPaymentGroupPreview);
156
156
  });
157
157
  !o.success && o.blockers.length > 0 && C(o.blockers);
158
158
  });
@@ -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 PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n PostV1CompaniesCompanyIdContractorPaymentGroupsPaymentMethod as ContractorPaymentMethod,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\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 { usePaymentAmountsEditor } from '../shared/usePaymentAmountsEditor'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport { useCreatePaymentAmountsDictionary } from './useFormDictionary'\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\nconst ALLOWED_PAYMENT_METHODS: ContractorPaymentMethod[] = ['Check', 'Direct Deposit']\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, className }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const { baseSubmitHandler } = useBase()\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 [alerts, setAlertsState] = useState<Record<string, InternalAlert>>({})\n const setAlert = (key: string, alert: InternalAlert) => {\n setAlertsState(prev => ({ ...prev, [key]: alert }))\n }\n const clearAlerts = () => {\n setAlertsState({})\n }\n\n const paymentAmountsDictionary = useCreatePaymentAmountsDictionary()\n\n const { virtualContractorPayments, totals, editModal } = usePaymentAmountsEditor({\n contractors,\n allowedPaymentMethods: ALLOWED_PAYMENT_METHODS,\n onEditOpen: () => {\n clearAlerts()\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n },\n onEditSave: data => {\n const displayContractor = contractors.find(c => c.uuid === data.contractorUuid)\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\n setAlert(data.contractorUuid, {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlertsState(prev => {\n const { [data.contractorUuid]: _, ...rest } = prev\n return rest\n })\n },\n })\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\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\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlert('error', {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n })\n return\n }\n clearAlerts()\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 className={className}\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 className={className}\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n editModal={editModal}\n allowedPaymentMethods={ALLOWED_PAYMENT_METHODS}\n paymentAmountsDictionary={paymentAmountsDictionary}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n paymentSpeedDays={paymentSpeedDays}\n />\n )}\n </>\n )\n}\n"],"names":["ALLOWED_PAYMENT_METHODS","formatLocalDate","date","calculateInitialPaymentDate","speedDays","today","addBusinessDays","CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","className","useComponentDictionary","t","useTranslation","baseSubmitHandler","useBase","previewData","setPreviewData","useState","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","alerts","setAlertsState","setAlert","key","alert","prev","clearAlerts","paymentAmountsDictionary","useCreatePaymentAmountsDictionary","virtualContractorPayments","totals","editModal","usePaymentAmountsEditor","componentEvents","data","displayContractor","c","displayName","DOMPurify","firstLastName","_","rest","jsxs","Fragment","PreviewPresentation","contractorPayments","payment","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","response","value","CreatePaymentPresentation","result","payrollSubmitHandler"],"mappings":"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"}
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 PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n PostV1CompaniesCompanyIdContractorPaymentGroupsPaymentMethod as ContractorPaymentMethod,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\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 { usePaymentAmountsEditor } from '../shared/usePaymentAmountsEditor'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport { useCreatePaymentAmountsDictionary } from './useFormDictionary'\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\nconst ALLOWED_PAYMENT_METHODS: ContractorPaymentMethod[] = ['Check', 'Direct Deposit']\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, className }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const { baseSubmitHandler } = useBase()\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.showContractors || []).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 [alerts, setAlertsState] = useState<Record<string, InternalAlert>>({})\n const setAlert = (key: string, alert: InternalAlert) => {\n setAlertsState(prev => ({ ...prev, [key]: alert }))\n }\n const clearAlerts = () => {\n setAlertsState({})\n }\n\n const paymentAmountsDictionary = useCreatePaymentAmountsDictionary()\n\n const { virtualContractorPayments, totals, editModal } = usePaymentAmountsEditor({\n contractors,\n allowedPaymentMethods: ALLOWED_PAYMENT_METHODS,\n onEditOpen: () => {\n clearAlerts()\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n },\n onEditSave: data => {\n const displayContractor = contractors.find(c => c.uuid === data.contractorUuid)\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\n setAlert(data.contractorUuid, {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlertsState(prev => {\n const { [data.contractorUuid]: _, ...rest } = prev\n return rest\n })\n },\n })\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\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\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlert('error', {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n })\n return\n }\n clearAlerts()\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 className={className}\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 className={className}\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n editModal={editModal}\n allowedPaymentMethods={ALLOWED_PAYMENT_METHODS}\n paymentAmountsDictionary={paymentAmountsDictionary}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n paymentSpeedDays={paymentSpeedDays}\n />\n )}\n </>\n )\n}\n"],"names":["ALLOWED_PAYMENT_METHODS","formatLocalDate","date","calculateInitialPaymentDate","speedDays","today","addBusinessDays","CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","className","useComponentDictionary","t","useTranslation","baseSubmitHandler","useBase","previewData","setPreviewData","useState","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","alerts","setAlertsState","setAlert","key","alert","prev","clearAlerts","paymentAmountsDictionary","useCreatePaymentAmountsDictionary","virtualContractorPayments","totals","editModal","usePaymentAmountsEditor","componentEvents","data","displayContractor","c","displayName","DOMPurify","firstLastName","_","rest","jsxs","Fragment","PreviewPresentation","contractorPayments","payment","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","response","value","CreatePaymentPresentation","result","payrollSubmitHandler"],"mappings":"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"}
@@ -17,16 +17,16 @@ function K(r) {
17
17
  }
18
18
  function k({
19
19
  paymentGroupId: r,
20
- companyId: s,
20
+ companyId: i,
21
21
  dictionary: c,
22
22
  onEvent: u,
23
23
  className: l
24
24
  }) {
25
25
  N("historicalPayments", { throwIfDisabled: !0 }), I("Contractor.Payments.HistoricalPaymentSummary"), O("Contractor.Payments.HistoricalPaymentSummary", c);
26
- const { t: o } = g("Contractor.Payments.HistoricalPaymentSummary"), { Heading: y, Text: m, Button: p, Alert: f } = G(), { formatLongWithYear: d } = A(), C = b(), { data: P } = T({
26
+ const { t: o } = g("Contractor.Payments.HistoricalPaymentSummary"), { Heading: y, Text: m, Button: p, Alert: f } = G(), { formatLongWithYear: d } = A(), C = b(), { data: h } = T({
27
27
  contractorPaymentGroupUuid: r
28
- }), n = P.contractorPaymentGroup, { data: h } = x({ companyUuid: s }), D = (h.contractors || []).filter(
29
- (i) => i.isActive && i.onboardingStatus === E.ONBOARDING_COMPLETED
28
+ }), n = h.contractorPaymentGroup, { data: P } = x({ companyUuid: i }), D = (P.showContractors || []).filter(
29
+ (s) => s.isActive && s.onboardingStatus === E.ONBOARDING_COMPLETED
30
30
  );
31
31
  if (!n)
32
32
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"HistoricalPaymentSummary.js","sources":["../../../../../src/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useContractorPaymentGroupsGetSuspense } from '@gusto/embedded-api/react-query/contractorPaymentGroupsGet'\nimport { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { PaymentSummaryBlock } from '../shared/PaymentSummaryBlock'\nimport { useHistoricalPaymentSummaryDictionary } from './useFormDictionary'\nimport { Flex } from '@/components/Common'\nimport { BaseComponent, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\n\n/**\n * Props for {@link HistoricalPaymentSummary}.\n *\n * @alpha\n */\nexport interface HistoricalPaymentSummaryProps extends BaseComponentInterface<'Contractor.Payments.HistoricalPaymentSummary'> {\n /** UUID of the historical contractor payment group to summarize. */\n paymentGroupId: string\n /** UUID of the company that owns the payment group. */\n companyId: string\n}\n\n/**\n * Displays the summary of a successfully recorded historical contractor payment.\n *\n * @remarks\n * Fetches the created contractor payment group by ID and renders a per-contractor breakdown.\n * Historical payments don't move money, so unlike `PaymentSummary` there is no debit account,\n * debit date, or wire-transfer confirmation to show.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/historicalPayments/exit` | User is done reviewing the summary. | — |\n *\n * @param props - See {@link HistoricalPaymentSummaryProps}.\n * @returns The rendered payment summary, or `null` when the payment group cannot be loaded.\n * @alpha\n */\nexport function HistoricalPaymentSummary(props: HistoricalPaymentSummaryProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.HistoricalPaymentSummary\">\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({\n paymentGroupId,\n companyId,\n dictionary,\n onEvent,\n className,\n}: HistoricalPaymentSummaryProps) {\n useUnstableFeature('historicalPayments', { throwIfDisabled: true })\n useI18n('Contractor.Payments.HistoricalPaymentSummary')\n useComponentDictionary('Contractor.Payments.HistoricalPaymentSummary', dictionary)\n const { t } = useTranslation('Contractor.Payments.HistoricalPaymentSummary')\n const { Heading, Text, Button, Alert } = useComponentContext()\n const { formatLongWithYear } = useDateFormatter()\n const summaryDictionary = useHistoricalPaymentSummaryDictionary()\n\n const { data: paymentGroupData } = useContractorPaymentGroupsGetSuspense({\n contractorPaymentGroupUuid: paymentGroupId,\n })\n const contractorPaymentGroup = paymentGroupData.contractorPaymentGroup\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\n if (!contractorPaymentGroup) {\n return null\n }\n\n const handleDone = () => {\n onEvent(componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_EXIT)\n }\n\n return (\n <Flex className={className} flexDirection=\"column\" gap={24}>\n <Alert status=\"success\" label={t('successTitle')}>\n <Text>\n {t('successMessage', {\n count: contractorPaymentGroup.contractorPayments?.length ?? 0,\n })}\n </Text>\n </Alert>\n\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Flex flexDirection=\"column\" gap={2}>\n <Heading as=\"h2\">{t('summaryTitle')}</Heading>\n <Text variant=\"supporting\">\n {t('summarySubtitle', {\n checkDate: formatLongWithYear(contractorPaymentGroup.checkDate ?? ''),\n })}\n </Text>\n </Flex>\n <Button onClick={handleDone} variant=\"primary\">\n {t('doneCta')}\n </Button>\n </Flex>\n\n <PaymentSummaryBlock\n contractorPaymentGroup={contractorPaymentGroup}\n contractors={contractors}\n showDebitColumns={false}\n dictionary={summaryDictionary}\n />\n </Flex>\n )\n}\n"],"names":["HistoricalPaymentSummary","props","jsx","BaseComponent","Root","paymentGroupId","companyId","dictionary","onEvent","className","useUnstableFeature","useI18n","useComponentDictionary","t","useTranslation","Heading","Text","Button","Alert","useComponentContext","formatLongWithYear","useDateFormatter","summaryDictionary","useHistoricalPaymentSummaryDictionary","paymentGroupData","useContractorPaymentGroupsGetSuspense","contractorPaymentGroup","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","handleDone","componentEvents","Flex","jsxs","PaymentSummaryBlock"],"mappings":";;;;;;;;;;;;;;AA0CO,SAASA,EAAyBC,GAAsC;AAC7E,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GAAO,eAAc,gDACtC,UAAA,gBAAAC,EAACE,GAAA,EAAM,GAAGH,EAAA,CAAO,EAAA,CACnB;AAEJ;AAEA,SAASG,EAAK;AAAA,EACZ,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GAAkC;AAChC,EAAAC,EAAmB,sBAAsB,EAAE,iBAAiB,GAAA,CAAM,GAClEC,EAAQ,8CAA8C,GACtDC,EAAuB,gDAAgDL,CAAU;AACjF,QAAM,EAAE,GAAAM,EAAA,IAAMC,EAAe,8CAA8C,GACrE,EAAE,SAAAC,GAAS,MAAAC,GAAM,QAAAC,GAAQ,OAAAC,EAAA,IAAUC,EAAA,GACnC,EAAE,oBAAAC,EAAA,IAAuBC,EAAA,GACzBC,IAAoBC,EAAA,GAEpB,EAAE,MAAMC,EAAA,IAAqBC,EAAsC;AAAA,IACvE,4BAA4BpB;AAAA,EAAA,CAC7B,GACKqB,IAAyBF,EAAiB,wBAE1C,EAAE,MAAMG,EAAA,IAAmBC,EAA2B,EAAE,aAAatB,GAAW,GAChFuB,KAAeF,EAAe,eAAe,CAAA,GAAI;AAAA,IACrD,CAAAG,MACEA,EAAW,YACXA,EAAW,qBAAqBC,EAA2B;AAAA,EAAA;AAG/D,MAAI,CAACL;AACH,WAAO;AAGT,QAAMM,IAAa,MAAM;AACvB,IAAAxB,EAAQyB,EAAgB,kCAAkC;AAAA,EAC5D;AAEA,2BACGC,GAAA,EAAK,WAAAzB,GAAsB,eAAc,UAAS,KAAK,IACtD,UAAA;AAAA,IAAA,gBAAAP,EAACgB,GAAA,EAAM,QAAO,WAAU,OAAOL,EAAE,cAAc,GAC7C,UAAA,gBAAAX,EAACc,GAAA,EACE,UAAAH,EAAE,kBAAkB;AAAA,MACnB,OAAOa,EAAuB,oBAAoB,UAAU;AAAA,IAAA,CAC7D,GACH,EAAA,CACF;AAAA,IAEA,gBAAAS,EAACD,GAAA,EAAK,gBAAe,iBAAgB,YAAW,cAC9C,UAAA;AAAA,MAAA,gBAAAC,EAACD,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,QAAA,gBAAAhC,EAACa,GAAA,EAAQ,IAAG,MAAM,UAAAF,EAAE,cAAc,GAAE;AAAA,QACpC,gBAAAX,EAACc,GAAA,EAAK,SAAQ,cACX,YAAE,mBAAmB;AAAA,UACpB,WAAWI,EAAmBM,EAAuB,aAAa,EAAE;AAAA,QAAA,CACrE,EAAA,CACH;AAAA,MAAA,GACF;AAAA,MACA,gBAAAxB,EAACe,KAAO,SAASe,GAAY,SAAQ,WAClC,UAAAnB,EAAE,SAAS,EAAA,CACd;AAAA,IAAA,GACF;AAAA,IAEA,gBAAAX;AAAA,MAACkC;AAAA,MAAA;AAAA,QACC,wBAAAV;AAAA,QACA,aAAAG;AAAA,QACA,kBAAkB;AAAA,QAClB,YAAYP;AAAA,MAAA;AAAA,IAAA;AAAA,EACd,GACF;AAEJ;"}
1
+ {"version":3,"file":"HistoricalPaymentSummary.js","sources":["../../../../../src/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useContractorPaymentGroupsGetSuspense } from '@gusto/embedded-api/react-query/contractorPaymentGroupsGet'\nimport { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { PaymentSummaryBlock } from '../shared/PaymentSummaryBlock'\nimport { useHistoricalPaymentSummaryDictionary } from './useFormDictionary'\nimport { Flex } from '@/components/Common'\nimport { BaseComponent, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\n\n/**\n * Props for {@link HistoricalPaymentSummary}.\n *\n * @alpha\n */\nexport interface HistoricalPaymentSummaryProps extends BaseComponentInterface<'Contractor.Payments.HistoricalPaymentSummary'> {\n /** UUID of the historical contractor payment group to summarize. */\n paymentGroupId: string\n /** UUID of the company that owns the payment group. */\n companyId: string\n}\n\n/**\n * Displays the summary of a successfully recorded historical contractor payment.\n *\n * @remarks\n * Fetches the created contractor payment group by ID and renders a per-contractor breakdown.\n * Historical payments don't move money, so unlike `PaymentSummary` there is no debit account,\n * debit date, or wire-transfer confirmation to show.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/historicalPayments/exit` | User is done reviewing the summary. | — |\n *\n * @param props - See {@link HistoricalPaymentSummaryProps}.\n * @returns The rendered payment summary, or `null` when the payment group cannot be loaded.\n * @alpha\n */\nexport function HistoricalPaymentSummary(props: HistoricalPaymentSummaryProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.HistoricalPaymentSummary\">\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({\n paymentGroupId,\n companyId,\n dictionary,\n onEvent,\n className,\n}: HistoricalPaymentSummaryProps) {\n useUnstableFeature('historicalPayments', { throwIfDisabled: true })\n useI18n('Contractor.Payments.HistoricalPaymentSummary')\n useComponentDictionary('Contractor.Payments.HistoricalPaymentSummary', dictionary)\n const { t } = useTranslation('Contractor.Payments.HistoricalPaymentSummary')\n const { Heading, Text, Button, Alert } = useComponentContext()\n const { formatLongWithYear } = useDateFormatter()\n const summaryDictionary = useHistoricalPaymentSummaryDictionary()\n\n const { data: paymentGroupData } = useContractorPaymentGroupsGetSuspense({\n contractorPaymentGroupUuid: paymentGroupId,\n })\n const contractorPaymentGroup = paymentGroupData.contractorPaymentGroup\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.showContractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n\n if (!contractorPaymentGroup) {\n return null\n }\n\n const handleDone = () => {\n onEvent(componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_EXIT)\n }\n\n return (\n <Flex className={className} flexDirection=\"column\" gap={24}>\n <Alert status=\"success\" label={t('successTitle')}>\n <Text>\n {t('successMessage', {\n count: contractorPaymentGroup.contractorPayments?.length ?? 0,\n })}\n </Text>\n </Alert>\n\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Flex flexDirection=\"column\" gap={2}>\n <Heading as=\"h2\">{t('summaryTitle')}</Heading>\n <Text variant=\"supporting\">\n {t('summarySubtitle', {\n checkDate: formatLongWithYear(contractorPaymentGroup.checkDate ?? ''),\n })}\n </Text>\n </Flex>\n <Button onClick={handleDone} variant=\"primary\">\n {t('doneCta')}\n </Button>\n </Flex>\n\n <PaymentSummaryBlock\n contractorPaymentGroup={contractorPaymentGroup}\n contractors={contractors}\n showDebitColumns={false}\n dictionary={summaryDictionary}\n />\n </Flex>\n )\n}\n"],"names":["HistoricalPaymentSummary","props","jsx","BaseComponent","Root","paymentGroupId","companyId","dictionary","onEvent","className","useUnstableFeature","useI18n","useComponentDictionary","t","useTranslation","Heading","Text","Button","Alert","useComponentContext","formatLongWithYear","useDateFormatter","summaryDictionary","useHistoricalPaymentSummaryDictionary","paymentGroupData","useContractorPaymentGroupsGetSuspense","contractorPaymentGroup","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","handleDone","componentEvents","Flex","jsxs","PaymentSummaryBlock"],"mappings":";;;;;;;;;;;;;;AA0CO,SAASA,EAAyBC,GAAsC;AAC7E,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GAAO,eAAc,gDACtC,UAAA,gBAAAC,EAACE,GAAA,EAAM,GAAGH,EAAA,CAAO,EAAA,CACnB;AAEJ;AAEA,SAASG,EAAK;AAAA,EACZ,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GAAkC;AAChC,EAAAC,EAAmB,sBAAsB,EAAE,iBAAiB,GAAA,CAAM,GAClEC,EAAQ,8CAA8C,GACtDC,EAAuB,gDAAgDL,CAAU;AACjF,QAAM,EAAE,GAAAM,EAAA,IAAMC,EAAe,8CAA8C,GACrE,EAAE,SAAAC,GAAS,MAAAC,GAAM,QAAAC,GAAQ,OAAAC,EAAA,IAAUC,EAAA,GACnC,EAAE,oBAAAC,EAAA,IAAuBC,EAAA,GACzBC,IAAoBC,EAAA,GAEpB,EAAE,MAAMC,EAAA,IAAqBC,EAAsC;AAAA,IACvE,4BAA4BpB;AAAA,EAAA,CAC7B,GACKqB,IAAyBF,EAAiB,wBAE1C,EAAE,MAAMG,EAAA,IAAmBC,EAA2B,EAAE,aAAatB,GAAW,GAChFuB,KAAeF,EAAe,mBAAmB,CAAA,GAAI;AAAA,IACzD,CAAAG,MACEA,EAAW,YACXA,EAAW,qBAAqBC,EAA2B;AAAA,EAAA;AAG/D,MAAI,CAACL;AACH,WAAO;AAGT,QAAMM,IAAa,MAAM;AACvB,IAAAxB,EAAQyB,EAAgB,kCAAkC;AAAA,EAC5D;AAEA,2BACGC,GAAA,EAAK,WAAAzB,GAAsB,eAAc,UAAS,KAAK,IACtD,UAAA;AAAA,IAAA,gBAAAP,EAACgB,GAAA,EAAM,QAAO,WAAU,OAAOL,EAAE,cAAc,GAC7C,UAAA,gBAAAX,EAACc,GAAA,EACE,UAAAH,EAAE,kBAAkB;AAAA,MACnB,OAAOa,EAAuB,oBAAoB,UAAU;AAAA,IAAA,CAC7D,GACH,EAAA,CACF;AAAA,IAEA,gBAAAS,EAACD,GAAA,EAAK,gBAAe,iBAAgB,YAAW,cAC9C,UAAA;AAAA,MAAA,gBAAAC,EAACD,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,QAAA,gBAAAhC,EAACa,GAAA,EAAQ,IAAG,MAAM,UAAAF,EAAE,cAAc,GAAE;AAAA,QACpC,gBAAAX,EAACc,GAAA,EAAK,SAAQ,cACX,YAAE,mBAAmB;AAAA,UACpB,WAAWI,EAAmBM,EAAuB,aAAa,EAAE;AAAA,QAAA,CACrE,EAAA,CACH;AAAA,MAAA,GACF;AAAA,MACA,gBAAAxB,EAACe,KAAO,SAASe,GAAY,SAAQ,WAClC,UAAAnB,EAAE,SAAS,EAAA,CACd;AAAA,IAAA,GACF;AAAA,IAEA,gBAAAX;AAAA,MAACkC;AAAA,MAAA;AAAA,QACC,wBAAAV;AAAA,QACA,aAAAG;AAAA,QACA,kBAAkB;AAAA,QAClB,YAAYP;AAAA,MAAA;AAAA,IAAA;AAAA,EACd,GACF;AAEJ;"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { useContractorPaymentGroupsGetSuspense as G } from "@gusto/embedded-api/react-query/contractorPaymentGroupsGet";
3
3
  import { useContractorsListSuspense as T } from "@gusto/embedded-api/react-query/contractorsList";
4
- import { useContractorPaymentsDeleteMutation as A } from "@gusto/embedded-api/react-query/contractorPaymentsDelete";
5
- import { useTranslation as h } from "react-i18next";
6
- import { PaymentHistoryPresentation as w } from "./PaymentHistoryPresentation.js";
4
+ import { useContractorPaymentsDeleteMutation as h } from "@gusto/embedded-api/react-query/contractorPaymentsDelete";
5
+ import { useTranslation as w } from "react-i18next";
6
+ import { PaymentHistoryPresentation as A } from "./PaymentHistoryPresentation.js";
7
7
  import { useComponentDictionary as E } from "../../../../i18n/I18n.js";
8
8
  import { BaseComponent as N } from "../../../Base/Base.js";
9
9
  import { useBase as R } from "../../../Base/useBase.js";
@@ -13,12 +13,12 @@ function g(t) {
13
13
  }
14
14
  const H = ({ paymentId: t, dictionary: s, onEvent: e, className: i }) => {
15
15
  E("Contractor.Payments.PaymentHistory", s);
16
- const { t: y } = h("Contractor.Payments.PaymentHistory"), { baseSubmitHandler: u } = R(), { data: n } = G({
16
+ const { t: y } = w("Contractor.Payments.PaymentHistory"), { baseSubmitHandler: u } = R(), { data: n } = G({
17
17
  contractorPaymentGroupUuid: t
18
18
  });
19
19
  if (!n.contractorPaymentGroup)
20
20
  throw new Error(y("errors.paymentGroupNotFound"));
21
- const a = n.contractorPaymentGroup.companyUuid, { data: p } = T({ companyUuid: a }), c = p.contractors || [], { mutateAsync: P, isPending: d } = A(), C = (o) => {
21
+ const a = n.contractorPaymentGroup.companyUuid, { data: p } = T({ companyUuid: a }), c = p.showContractors || [], { mutateAsync: P, isPending: C } = h(), d = (o) => {
22
22
  e(m.CONTRACTOR_PAYMENT_VIEW_DETAILS, {
23
23
  contractor: c.find((l) => l.uuid === o),
24
24
  paymentGroupId: t
@@ -34,13 +34,13 @@ const H = ({ paymentId: t, dictionary: s, onEvent: e, className: i }) => {
34
34
  }), e(m.CONTRACTOR_PAYMENT_CANCEL, { paymentId: o });
35
35
  };
36
36
  return /* @__PURE__ */ r(
37
- w,
37
+ A,
38
38
  {
39
39
  className: i,
40
40
  paymentGroup: n.contractorPaymentGroup,
41
41
  contractors: c,
42
- isCancelling: d,
43
- onViewPayment: C,
42
+ isCancelling: C,
43
+ onViewPayment: d,
44
44
  onCancelPayment: f
45
45
  }
46
46
  );
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentHistory.js","sources":["../../../../../src/components/Contractor/Payments/PaymentHistory/PaymentHistory.tsx"],"sourcesContent":["import { useContractorPaymentGroupsGetSuspense } from '@gusto/embedded-api/react-query/contractorPaymentGroupsGet'\nimport { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentsDeleteMutation } from '@gusto/embedded-api/react-query/contractorPaymentsDelete'\nimport { useTranslation } from 'react-i18next'\nimport { PaymentHistoryPresentation } from './PaymentHistoryPresentation'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents } from '@/shared/constants'\n\n/**\n * Props for {@link PaymentHistory}.\n *\n * @public\n */\nexport interface PaymentHistoryProps extends BaseComponentInterface<'Contractor.Payments.PaymentHistory'> {\n /** UUID of the contractor payment group to display. */\n paymentId: string\n}\n\n/**\n * Displays a contractor payment group, including each individual contractor payment, with actions to view details or cancel.\n *\n * @remarks\n * Features:\n *\n * - **Payment group overview** — debit date and group context in the header.\n * - **Per-contractor table** — contractor, wage type, payment method, hours, wage, bonus, reimbursement, and total for each payment.\n * - **Row actions** — view an individual contractor payment, or cancel it when the payment is cancelable.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/payments/view/details` | A row's view-details action was triggered. | `{ contractor: Contractor \\| undefined, paymentGroupId: string }` — `contractor` is `undefined` if the contractor UUID is not found in the loaded list |\n * | `contractor/payments/cancel` | An individual contractor payment was successfully canceled. | `{ paymentId: string }` — the individual contractor payment UUID, not the payment group UUID passed as `paymentId` prop |\n *\n * @param props - Component props including the payment group `paymentId` and the standard `onEvent` callback.\n * @returns The rendered payment history view for the payment group.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * <ContractorManagement.PaymentHistory\n * paymentId=\"payment-group-uuid\"\n * onEvent={() => {}}\n * />\n * ```\n */\nexport function PaymentHistory(props: PaymentHistoryProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ paymentId, dictionary, onEvent, className }: PaymentHistoryProps) => {\n useComponentDictionary('Contractor.Payments.PaymentHistory', dictionary)\n const { t } = useTranslation('Contractor.Payments.PaymentHistory')\n const { baseSubmitHandler } = useBase()\n\n const { data: paymentGroupResponse } = useContractorPaymentGroupsGetSuspense({\n contractorPaymentGroupUuid: paymentId,\n })\n if (!paymentGroupResponse.contractorPaymentGroup) {\n throw new Error(t('errors.paymentGroupNotFound'))\n }\n\n const companyId = paymentGroupResponse.contractorPaymentGroup.companyUuid!\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = contractorList.contractors || []\n\n const { mutateAsync: cancelPayment, isPending: isCancelling } =\n useContractorPaymentsDeleteMutation()\n\n const handleViewPayment = (contractorUuid: string) => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_VIEW_DETAILS, {\n contractor: contractors.find(c => c.uuid === contractorUuid),\n paymentGroupId: paymentId,\n })\n }\n\n const handleCancelPayment = async (paymentId: string) => {\n await baseSubmitHandler(paymentId, async () => {\n await cancelPayment({\n request: {\n contractorPaymentId: paymentId,\n companyId,\n },\n })\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CANCEL, { paymentId })\n }\n\n return (\n <PaymentHistoryPresentation\n className={className}\n paymentGroup={paymentGroupResponse.contractorPaymentGroup}\n contractors={contractors}\n isCancelling={isCancelling}\n onViewPayment={handleViewPayment}\n onCancelPayment={handleCancelPayment}\n />\n )\n}\n"],"names":["PaymentHistory","props","jsx","BaseComponent","Root","paymentId","dictionary","onEvent","className","useComponentDictionary","t","useTranslation","baseSubmitHandler","useBase","paymentGroupResponse","useContractorPaymentGroupsGetSuspense","companyId","contractorList","useContractorsListSuspense","contractors","cancelPayment","isCancelling","useContractorPaymentsDeleteMutation","handleViewPayment","contractorUuid","componentEvents","c","handleCancelPayment","PaymentHistoryPresentation"],"mappings":";;;;;;;;;;AAiDO,SAASA,EAAeC,GAA4B;AACzD,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEA,MAAMG,IAAO,CAAC,EAAE,WAAAC,GAAW,YAAAC,GAAY,SAAAC,GAAS,WAAAC,QAAqC;AACnF,EAAAC,EAAuB,sCAAsCH,CAAU;AACvE,QAAM,EAAE,GAAAI,EAAA,IAAMC,EAAe,oCAAoC,GAC3D,EAAE,mBAAAC,EAAA,IAAsBC,EAAA,GAExB,EAAE,MAAMC,EAAA,IAAyBC,EAAsC;AAAA,IAC3E,4BAA4BV;AAAA,EAAA,CAC7B;AACD,MAAI,CAACS,EAAqB;AACxB,UAAM,IAAI,MAAMJ,EAAE,6BAA6B,CAAC;AAGlD,QAAMM,IAAYF,EAAqB,uBAAuB,aAExD,EAAE,MAAMG,EAAA,IAAmBC,EAA2B,EAAE,aAAaF,GAAW,GAChFG,IAAcF,EAAe,eAAe,CAAA,GAE5C,EAAE,aAAaG,GAAe,WAAWC,EAAA,IAC7CC,EAAA,GAEIC,IAAoB,CAACC,MAA2B;AACpD,IAAAjB,EAAQkB,EAAgB,iCAAiC;AAAA,MACvD,YAAYN,EAAY,KAAK,CAAAO,MAAKA,EAAE,SAASF,CAAc;AAAA,MAC3D,gBAAgBnB;AAAA,IAAA,CACjB;AAAA,EACH,GAEMsB,IAAsB,OAAOtB,MAAsB;AACvD,UAAMO,EAAkBP,GAAW,YAAY;AAC7C,YAAMe,EAAc;AAAA,QAClB,SAAS;AAAA,UACP,qBAAqBf;AAAAA,UACrB,WAAAW;AAAA,QAAA;AAAA,MACF,CACD;AAAA,IACH,CAAC,GAEDT,EAAQkB,EAAgB,2BAA2B,EAAE,WAAApB,GAAW;AAAA,EAClE;AAEA,SACE,gBAAAH;AAAA,IAAC0B;AAAA,IAAA;AAAA,MACC,WAAApB;AAAA,MACA,cAAcM,EAAqB;AAAA,MACnC,aAAAK;AAAA,MACA,cAAAE;AAAA,MACA,eAAeE;AAAA,MACf,iBAAiBI;AAAA,IAAA;AAAA,EAAA;AAGvB;"}
1
+ {"version":3,"file":"PaymentHistory.js","sources":["../../../../../src/components/Contractor/Payments/PaymentHistory/PaymentHistory.tsx"],"sourcesContent":["import { useContractorPaymentGroupsGetSuspense } from '@gusto/embedded-api/react-query/contractorPaymentGroupsGet'\nimport { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentsDeleteMutation } from '@gusto/embedded-api/react-query/contractorPaymentsDelete'\nimport { useTranslation } from 'react-i18next'\nimport { PaymentHistoryPresentation } from './PaymentHistoryPresentation'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents } from '@/shared/constants'\n\n/**\n * Props for {@link PaymentHistory}.\n *\n * @public\n */\nexport interface PaymentHistoryProps extends BaseComponentInterface<'Contractor.Payments.PaymentHistory'> {\n /** UUID of the contractor payment group to display. */\n paymentId: string\n}\n\n/**\n * Displays a contractor payment group, including each individual contractor payment, with actions to view details or cancel.\n *\n * @remarks\n * Features:\n *\n * - **Payment group overview** — debit date and group context in the header.\n * - **Per-contractor table** — contractor, wage type, payment method, hours, wage, bonus, reimbursement, and total for each payment.\n * - **Row actions** — view an individual contractor payment, or cancel it when the payment is cancelable.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/payments/view/details` | A row's view-details action was triggered. | `{ contractor: Contractor \\| undefined, paymentGroupId: string }` — `contractor` is `undefined` if the contractor UUID is not found in the loaded list |\n * | `contractor/payments/cancel` | An individual contractor payment was successfully canceled. | `{ paymentId: string }` — the individual contractor payment UUID, not the payment group UUID passed as `paymentId` prop |\n *\n * @param props - Component props including the payment group `paymentId` and the standard `onEvent` callback.\n * @returns The rendered payment history view for the payment group.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * <ContractorManagement.PaymentHistory\n * paymentId=\"payment-group-uuid\"\n * onEvent={() => {}}\n * />\n * ```\n */\nexport function PaymentHistory(props: PaymentHistoryProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ paymentId, dictionary, onEvent, className }: PaymentHistoryProps) => {\n useComponentDictionary('Contractor.Payments.PaymentHistory', dictionary)\n const { t } = useTranslation('Contractor.Payments.PaymentHistory')\n const { baseSubmitHandler } = useBase()\n\n const { data: paymentGroupResponse } = useContractorPaymentGroupsGetSuspense({\n contractorPaymentGroupUuid: paymentId,\n })\n if (!paymentGroupResponse.contractorPaymentGroup) {\n throw new Error(t('errors.paymentGroupNotFound'))\n }\n\n const companyId = paymentGroupResponse.contractorPaymentGroup.companyUuid!\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = contractorList.showContractors || []\n\n const { mutateAsync: cancelPayment, isPending: isCancelling } =\n useContractorPaymentsDeleteMutation()\n\n const handleViewPayment = (contractorUuid: string) => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_VIEW_DETAILS, {\n contractor: contractors.find(c => c.uuid === contractorUuid),\n paymentGroupId: paymentId,\n })\n }\n\n const handleCancelPayment = async (paymentId: string) => {\n await baseSubmitHandler(paymentId, async () => {\n await cancelPayment({\n request: {\n contractorPaymentId: paymentId,\n companyId,\n },\n })\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CANCEL, { paymentId })\n }\n\n return (\n <PaymentHistoryPresentation\n className={className}\n paymentGroup={paymentGroupResponse.contractorPaymentGroup}\n contractors={contractors}\n isCancelling={isCancelling}\n onViewPayment={handleViewPayment}\n onCancelPayment={handleCancelPayment}\n />\n )\n}\n"],"names":["PaymentHistory","props","jsx","BaseComponent","Root","paymentId","dictionary","onEvent","className","useComponentDictionary","t","useTranslation","baseSubmitHandler","useBase","paymentGroupResponse","useContractorPaymentGroupsGetSuspense","companyId","contractorList","useContractorsListSuspense","contractors","cancelPayment","isCancelling","useContractorPaymentsDeleteMutation","handleViewPayment","contractorUuid","componentEvents","c","handleCancelPayment","PaymentHistoryPresentation"],"mappings":";;;;;;;;;;AAiDO,SAASA,EAAeC,GAA4B;AACzD,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEA,MAAMG,IAAO,CAAC,EAAE,WAAAC,GAAW,YAAAC,GAAY,SAAAC,GAAS,WAAAC,QAAqC;AACnF,EAAAC,EAAuB,sCAAsCH,CAAU;AACvE,QAAM,EAAE,GAAAI,EAAA,IAAMC,EAAe,oCAAoC,GAC3D,EAAE,mBAAAC,EAAA,IAAsBC,EAAA,GAExB,EAAE,MAAMC,EAAA,IAAyBC,EAAsC;AAAA,IAC3E,4BAA4BV;AAAA,EAAA,CAC7B;AACD,MAAI,CAACS,EAAqB;AACxB,UAAM,IAAI,MAAMJ,EAAE,6BAA6B,CAAC;AAGlD,QAAMM,IAAYF,EAAqB,uBAAuB,aAExD,EAAE,MAAMG,EAAA,IAAmBC,EAA2B,EAAE,aAAaF,GAAW,GAChFG,IAAcF,EAAe,mBAAmB,CAAA,GAEhD,EAAE,aAAaG,GAAe,WAAWC,EAAA,IAC7CC,EAAA,GAEIC,IAAoB,CAACC,MAA2B;AACpD,IAAAjB,EAAQkB,EAAgB,iCAAiC;AAAA,MACvD,YAAYN,EAAY,KAAK,CAAAO,MAAKA,EAAE,SAASF,CAAc;AAAA,MAC3D,gBAAgBnB;AAAA,IAAA,CACjB;AAAA,EACH,GAEMsB,IAAsB,OAAOtB,MAAsB;AACvD,UAAMO,EAAkBP,GAAW,YAAY;AAC7C,YAAMe,EAAc;AAAA,QAClB,SAAS;AAAA,UACP,qBAAqBf;AAAAA,UACrB,WAAAW;AAAA,QAAA;AAAA,MACF,CACD;AAAA,IACH,CAAC,GAEDT,EAAQkB,EAAgB,2BAA2B,EAAE,WAAApB,GAAW;AAAA,EAClE;AAEA,SACE,gBAAAH;AAAA,IAAC0B;AAAA,IAAA;AAAA,MACC,WAAApB;AAAA,MACA,cAAcM,EAAqB;AAAA,MACnC,aAAAK;AAAA,MACA,cAAAE;AAAA,MACA,eAAeE;AAAA,MACf,iBAAiBI;AAAA,IAAA;AAAA,EAAA;AAGvB;"}