@gusto/embedded-react-sdk 0.55.7 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/components/Common/FadeIn/FadeIn.module.scss.js +4 -4
  3. package/dist/components/Common/FieldCaption/FieldCaption.js +22 -18
  4. package/dist/components/Common/FieldCaption/FieldCaption.js.map +1 -1
  5. package/dist/components/Common/Flex/Flex.js +17 -15
  6. package/dist/components/Common/Flex/Flex.js.map +1 -1
  7. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
  8. package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
  9. package/dist/components/Common/UI/Heading/Heading.module.scss.js +7 -7
  10. package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
  11. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +43 -42
  12. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
  13. package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
  14. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +5 -3
  15. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  16. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +5 -3
  17. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  18. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +7 -5
  19. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  20. package/dist/components/Company/BankAccount/BankAccountForm/context.js +5 -3
  21. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  22. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +5 -3
  23. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  24. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +27 -27
  25. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  26. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +10 -8
  27. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  28. package/dist/components/Company/Industry/Context.js +8 -6
  29. package/dist/components/Company/Industry/Context.js.map +1 -1
  30. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +5 -3
  31. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  32. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +5 -3
  33. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  34. package/dist/components/Company/OnboardingOverview/context.js +5 -3
  35. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  36. package/dist/components/Company/PaySchedule/PaySchedule.js +45 -30
  37. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  38. package/dist/components/Company/PaySchedule/PayScheduleComponents.js +12 -11
  39. package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
  40. package/dist/components/Company/PaySchedule/PayScheduleForm.js +72 -55
  41. package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
  42. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js +24 -20
  43. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
  44. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js +33 -29
  45. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
  46. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +131 -115
  47. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
  48. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +5 -3
  49. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  50. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +5 -3
  51. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  52. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +5 -3
  53. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  54. package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +31 -29
  55. package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
  56. package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +110 -109
  57. package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
  58. package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js +21 -19
  59. package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js.map +1 -1
  60. package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js +56 -55
  61. package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js.map +1 -1
  62. package/dist/components/Contractor/Dashboard/Dashboard.js +34 -33
  63. package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
  64. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +117 -115
  65. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
  66. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +77 -75
  67. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  68. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js +44 -43
  69. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
  70. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js +40 -39
  71. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
  72. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +35 -29
  73. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
  74. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +21 -20
  75. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
  76. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js +41 -40
  77. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
  78. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +21 -20
  79. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
  80. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +33 -32
  81. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
  82. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +80 -78
  83. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  84. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +44 -43
  85. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  86. package/dist/components/Contractor/Submit/Submit.js +113 -105
  87. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  88. package/dist/components/Contractor/Submit/SubmitDone.js +11 -11
  89. package/dist/components/Contractor/Submit/SubmitDone.js.map +1 -1
  90. package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js +20 -18
  91. package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js.map +1 -1
  92. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +18 -15
  93. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
  94. package/dist/components/Employee/Dashboard/Dashboard.js +33 -32
  95. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  96. package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js +21 -19
  97. package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js.map +1 -1
  98. package/dist/components/Employee/Documents/management/DocumentManager.js +34 -26
  99. package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
  100. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +5 -3
  101. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  102. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +30 -29
  103. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
  104. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +54 -53
  105. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
  106. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +29 -28
  107. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  108. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js +16 -15
  109. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js.map +1 -1
  110. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js +27 -25
  111. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js.map +1 -1
  112. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js +121 -111
  113. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
  114. package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js +22 -20
  115. package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
  116. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js +24 -23
  117. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
  118. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +52 -43
  119. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
  120. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js +29 -26
  121. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -1
  122. package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
  123. package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js +19 -17
  124. package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
  125. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +79 -78
  126. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
  127. package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js +4 -4
  128. package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js +4 -4
  129. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +40 -39
  130. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  131. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +31 -30
  132. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
  133. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +43 -41
  134. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
  135. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +20 -19
  136. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
  137. package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js +19 -17
  138. package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
  139. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +49 -48
  140. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
  141. package/dist/components/Flow/Flow.js +1 -1
  142. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +28 -28
  143. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
  144. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +37 -36
  145. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
  146. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +36 -35
  147. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
  148. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +35 -28
  149. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
  150. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +23 -22
  151. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
  152. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +48 -45
  153. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  154. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +85 -77
  155. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  156. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +63 -59
  157. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
  158. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js +23 -21
  159. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js.map +1 -1
  160. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.js +26 -19
  161. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.js.map +1 -1
  162. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +14 -12
  163. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
  164. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +184 -162
  165. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  166. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +67 -65
  167. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  168. package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js +48 -34
  169. package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js.map +1 -1
  170. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +43 -41
  171. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  172. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +225 -223
  173. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  174. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +78 -75
  175. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
  176. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js +27 -27
  177. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js.map +1 -1
  178. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js +19 -19
  179. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js.map +1 -1
  180. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +51 -48
  181. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
  182. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +58 -48
  183. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  184. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +58 -57
  185. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  186. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +83 -69
  187. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  188. package/dist/components/Payroll/PayrollList/PayrollList.js +62 -60
  189. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  190. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +119 -117
  191. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  192. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +187 -171
  193. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  194. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +120 -110
  195. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  196. package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js +45 -34
  197. package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js.map +1 -1
  198. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +20 -14
  199. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
  200. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +62 -61
  201. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  202. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.module.scss.js +14 -14
  203. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js +24 -17
  204. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js.map +1 -1
  205. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js +22 -22
  206. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js.map +1 -1
  207. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +88 -80
  208. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
  209. package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js +52 -37
  210. package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js.map +1 -1
  211. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js +26 -26
  212. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js.map +1 -1
  213. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +32 -32
  214. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
  215. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +50 -48
  216. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
  217. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +34 -33
  218. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +1 -1
  219. package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +1 -1
  220. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +28 -24
  221. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
  222. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +255 -228
  223. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -1
  224. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js +8 -4
  225. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +1 -1
  226. package/dist/components/Payroll/usePreparedPayrollData.js +10 -8
  227. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  228. package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js +5 -5
  229. package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js.map +1 -1
  230. package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js +8 -7
  231. package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js.map +1 -1
  232. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +51 -50
  233. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
  234. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +20 -18
  235. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
  236. package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js +51 -49
  237. package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js.map +1 -1
  238. package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.js +20 -20
  239. package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.js.map +1 -1
  240. package/dist/components/TimeOff/PolicyList/PolicyList.js +50 -49
  241. package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
  242. package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js +34 -33
  243. package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js.map +1 -1
  244. package/dist/components/TimeOff/PolicySettings/PolicySettings.js +46 -45
  245. package/dist/components/TimeOff/PolicySettings/PolicySettings.js.map +1 -1
  246. package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js +152 -143
  247. package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js.map +1 -1
  248. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js +14 -13
  249. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js.map +1 -1
  250. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js +44 -35
  251. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js.map +1 -1
  252. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +88 -71
  253. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
  254. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js +164 -155
  255. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js.map +1 -1
  256. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +57 -55
  257. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
  258. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js +25 -24
  259. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js.map +1 -1
  260. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +94 -92
  261. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
  262. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +156 -155
  263. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
  264. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.js +21 -19
  265. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.js.map +1 -1
  266. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +28 -26
  267. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
  268. package/dist/contexts/ApiProvider/ApiProvider.js +29 -28
  269. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  270. package/dist/contexts/ApiProvider/apiVersionMismatchHook.js +15 -0
  271. package/dist/contexts/ApiProvider/apiVersionMismatchHook.js.map +1 -0
  272. package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
  273. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  274. package/dist/contexts/ThemeProvider/ThemeProvider.js +32 -26
  275. package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
  276. package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
  277. package/dist/hooks/usePollingTask/usePollingTask.js +53 -41
  278. package/dist/hooks/usePollingTask/usePollingTask.js.map +1 -1
  279. package/dist/i18n/en/Company.PaySchedule.json.js +22 -20
  280. package/dist/i18n/en/Company.PaySchedule.json.js.map +1 -1
  281. package/dist/i18n/en/Employee.ManagementEmployeeList.json.js +28 -24
  282. package/dist/i18n/en/Employee.ManagementEmployeeList.json.js.map +1 -1
  283. package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -10
  284. package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
  285. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +8 -8
  286. package/dist/i18n/en/Payroll.PayrollOverview.json.js +15 -15
  287. package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +62 -58
  288. package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +1 -1
  289. package/dist/package.json.js +1 -1
  290. package/dist/src/components/Common/FieldCaption/FieldCaption.d.ts +2 -16
  291. package/dist/src/components/Common/FieldCaption/FieldCaptionTypes.d.ts +22 -0
  292. package/dist/src/components/Common/FieldCaption/index.d.ts +1 -0
  293. package/dist/src/components/Common/Flex/Flex.d.ts +3 -1
  294. package/dist/src/components/Common/UI/ComboBox/ComboBoxTypes.d.ts +1 -1
  295. package/dist/src/components/Common/UI/DatePicker/DatePickerTypes.d.ts +2 -1
  296. package/dist/src/components/Common/UI/Menu/MenuTypes.d.ts +1 -1
  297. package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.d.ts +1 -1
  298. package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +5 -0
  299. package/dist/src/components/Common/UI/Select/SelectTypes.d.ts +2 -1
  300. package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +10 -2
  301. package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +1 -0
  302. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +9 -1
  303. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/index.d.ts +2 -2
  304. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +21 -5
  305. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +21 -3
  306. package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +3 -1
  307. package/dist/src/components/Contractor/ContractorList/onboarding/ContractorListView.d.ts +3 -1
  308. package/dist/src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +3 -1
  309. package/dist/src/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +3 -1
  310. package/dist/src/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +3 -1
  311. package/dist/src/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +3 -1
  312. package/dist/src/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +3 -1
  313. package/dist/src/components/Contractor/Submit/SubmitDone.d.ts +3 -1
  314. package/dist/src/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.d.ts +1 -1
  315. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.d.ts +3 -1
  316. package/dist/src/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.d.ts +3 -1
  317. package/dist/src/components/Employee/EmployeeList/management/ManagementEmployeeListView.d.ts +3 -1
  318. package/dist/src/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +3 -1
  319. package/dist/src/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +11 -2
  320. package/dist/src/components/Employee/EmployeeListFlow/employeeListStateMachine.test.d.ts +1 -0
  321. package/dist/src/components/Employee/HomeAddress/management/HomeAddressView.d.ts +3 -1
  322. package/dist/src/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +3 -1
  323. package/dist/src/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.d.ts +3 -1
  324. package/dist/src/components/Employee/WorkAddress/management/WorkAddressView.d.ts +3 -1
  325. package/dist/src/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.d.ts +3 -1
  326. package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
  327. package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +8 -0
  328. package/dist/src/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.d.ts +3 -1
  329. package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +3 -1
  330. package/dist/src/components/Payroll/PayrollConfiguration/useCalculationPoll.d.ts +6 -1
  331. package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +3 -1
  332. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +9 -9
  333. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.d.ts +2 -2
  334. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.d.ts +4 -4
  335. package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +3 -1
  336. package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +3 -1
  337. package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
  338. package/dist/src/components/Payroll/PayrollOverview/useSubmissionPoll.d.ts +10 -1
  339. package/dist/src/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +2 -1
  340. package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +1 -1
  341. package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +2 -0
  342. package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.d.ts +3 -1
  343. package/dist/src/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts +1 -1
  344. package/dist/src/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.d.ts +1 -1
  345. package/dist/src/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.d.ts +1 -1
  346. package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.d.ts +1 -1
  347. package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailTypes.d.ts +2 -0
  348. package/dist/src/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormTypes.d.ts +2 -0
  349. package/dist/src/components/TimeOff/PolicyList/PolicyListPresentation.d.ts +1 -1
  350. package/dist/src/components/TimeOff/PolicyList/PolicyListTypes.d.ts +2 -0
  351. package/dist/src/components/TimeOff/PolicySettings/PolicySettingsPresentation.d.ts +1 -1
  352. package/dist/src/components/TimeOff/PolicySettings/PolicySettingsTypes.d.ts +2 -0
  353. package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.d.ts +1 -1
  354. package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorTypes.d.ts +2 -0
  355. package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.d.ts +1 -1
  356. package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormTypes.d.ts +2 -0
  357. package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.d.ts +2 -0
  358. package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.d.ts +1 -1
  359. package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +2 -0
  360. package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.d.ts +2 -0
  361. package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.d.ts +1 -1
  362. package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailTypes.d.ts +3 -0
  363. package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.d.ts +1 -1
  364. package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayoutTypes.d.ts +2 -0
  365. package/dist/src/contexts/ApiProvider/ApiProvider.d.ts +5 -3
  366. package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.d.ts +3 -0
  367. package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.test.d.ts +1 -0
  368. package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -0
  369. package/dist/src/contexts/ComponentAdapter/useComponentContext.d.ts +4 -1
  370. package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +9 -1
  371. package/dist/src/contexts/ThemeProvider/ThemeProvider.d.ts +8 -3
  372. package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +4 -1
  373. package/dist/src/hooks/usePollingTask/usePollingTask.d.ts +55 -14
  374. package/dist/src/i18n/types.d.ts +42 -2
  375. package/dist/src/index.d.ts +1 -1
  376. package/dist/src/models/external.d.ts +1 -0
  377. package/dist/style.css +1 -1
  378. package/docs/guides/endpoint-inventory.json +5 -0
  379. package/package.json +20 -19
@@ -1,274 +1,290 @@
1
- import { jsx as l, jsxs as De } from "react/jsx-runtime";
2
- import { usePayrollsSubmitMutation as Le } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
- import { usePayrollsCancelMutation as _e } from "@gusto/embedded-api/react-query/payrollsCancel";
4
- import { usePayrollsGet as Oe } from "@gusto/embedded-api/react-query/payrollsGet";
5
- import { useEmployeesList as Ce } from "@gusto/embedded-api/react-query/employeesList";
6
- import { keepPreviousData as Ee } from "@tanstack/react-query";
7
- import { useTranslation as ke } from "react-i18next";
8
- import { useBankAccountsGetSuspense as Ae } from "@gusto/embedded-api/react-query/bankAccountsGet";
9
- import { useWireInRequestsGet as Ue } from "@gusto/embedded-api/react-query/wireInRequestsGet";
10
- import { useState as m, useMemo as Be, useEffect as L } from "react";
11
- import { useGustoEmbeddedContext as Te } from "@gusto/embedded-api/react-query/_context";
12
- import { payrollsGetPayStub as ve } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
13
- import { useErrorBoundary as Ne } from "react-error-boundary";
14
- import { ConfirmWireDetails as qe } from "../ConfirmWireDetails/ConfirmWireDetails.js";
15
- import { canCancelPayroll as We } from "../helpers.js";
16
- import { PrintChecks as Ye } from "../PrintChecks/PrintChecks.js";
17
- import { PayrollOverviewPresentation as Fe } from "./PayrollOverviewPresentation.js";
1
+ import { jsx as l, jsxs as _e } from "react/jsx-runtime";
2
+ import { usePayrollsSubmitMutation as Oe } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
+ import { usePayrollsCancelMutation as Ce } from "@gusto/embedded-api/react-query/payrollsCancel";
4
+ import { usePayrollsGet as ke } from "@gusto/embedded-api/react-query/payrollsGet";
5
+ import { useEmployeesList as Ae } from "@gusto/embedded-api/react-query/employeesList";
6
+ import { keepPreviousData as Ue } from "@tanstack/react-query";
7
+ import { useTranslation as Be } from "react-i18next";
8
+ import { useBankAccountsGetSuspense as Te } from "@gusto/embedded-api/react-query/bankAccountsGet";
9
+ import { useWireInRequestsGet as ve } from "@gusto/embedded-api/react-query/wireInRequestsGet";
10
+ import { useState as m, useMemo as Ne, useEffect as E } from "react";
11
+ import { useGustoEmbeddedContext as qe } from "@gusto/embedded-api/react-query/_context";
12
+ import { payrollsGetPayStub as We } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
13
+ import { useErrorBoundary as Fe } from "react-error-boundary";
14
+ import { ConfirmWireDetails as Ye } from "../ConfirmWireDetails/ConfirmWireDetails.js";
15
+ import { canCancelPayroll as Me } from "../helpers.js";
16
+ import { PrintChecks as Ie } from "../PrintChecks/PrintChecks.js";
17
+ import { PayrollOverviewPresentation as xe } from "./PayrollOverviewPresentation.js";
18
18
  import { PayrollOverviewStatus as d } from "./PayrollOverviewTypes.js";
19
- import { useSubmissionPoll as Me } from "./useSubmissionPoll.js";
20
- import { useCompanyPaymentSpeed as Ie } from "../../../hooks/useCompanyPaymentSpeed.js";
21
- import { PAYROLL_PROCESSING_STATUS as Y, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as xe, payrollWireEvents as Ge } from "../../../shared/constants.js";
22
- import { BaseComponent as Ve } from "../../Base/Base.js";
23
- import { useBase as je } from "../../Base/useBase.js";
24
- import { useComponentDictionary as He, useI18n as Ke } from "../../../i18n/I18n.js";
25
- import { readableStreamToBlob as ze } from "../../../helpers/readableStreamToBlob.js";
26
- import { openPdfInNewTab as Je } from "../../../helpers/openPdfInNewTab.js";
27
- import Qe from "../../../hooks/useNumberFormatter.js";
28
- import { useDateFormatter as Xe } from "../../../hooks/useDateFormatter.js";
29
- import { useComponentContext as Ze } from "../../../contexts/ComponentAdapter/useComponentContext.js";
30
- import { renderErrorList as $e } from "../../../helpers/apiErrorToList.js";
31
- import { Flex as et } from "../../Common/Flex/Flex.js";
32
- import { usePagination as tt } from "../../../hooks/usePagination/usePagination.js";
33
- import { useNonce as st } from "../../../contexts/NonceProvider/useNonce.js";
34
- import { PayrollLoading as ot } from "../../Common/PayrollLoading/PayrollLoading.js";
35
- const rt = (r = []) => r.filter(
19
+ import { useSubmissionPoll as Ge } from "./useSubmissionPoll.js";
20
+ import { useCompanyPaymentSpeed as Ve } from "../../../hooks/useCompanyPaymentSpeed.js";
21
+ import { PAYROLL_PROCESSING_STATUS as M, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as je, payrollWireEvents as He } from "../../../shared/constants.js";
22
+ import { BaseComponent as Ke } from "../../Base/Base.js";
23
+ import { useBase as ze } from "../../Base/useBase.js";
24
+ import { useComponentDictionary as Je, useI18n as Qe } from "../../../i18n/I18n.js";
25
+ import { readableStreamToBlob as Xe } from "../../../helpers/readableStreamToBlob.js";
26
+ import { openPdfInNewTab as Ze } from "../../../helpers/openPdfInNewTab.js";
27
+ import $e from "../../../hooks/useNumberFormatter.js";
28
+ import { useDateFormatter as et } from "../../../hooks/useDateFormatter.js";
29
+ import { useComponentContext as tt } from "../../../contexts/ComponentAdapter/useComponentContext.js";
30
+ import { isNonRetryablePollError as ot } from "../../../hooks/usePollingTask/usePollingTask.js";
31
+ import { renderErrorList as rt } from "../../../helpers/apiErrorToList.js";
32
+ import { Flex as st } from "../../Common/Flex/Flex.js";
33
+ import { usePagination as nt } from "../../../hooks/usePagination/usePagination.js";
34
+ import { useNonce as it } from "../../../contexts/NonceProvider/useNonce.js";
35
+ import { PayrollLoading as at } from "../../Common/PayrollLoading/PayrollLoading.js";
36
+ const lt = (s = []) => s.filter(
36
37
  (n) => n.status === "unresolved" && n.unblockOptions && n.unblockOptions.length > 0
37
- ), nt = (r = []) => {
38
- const n = r.find((i) => i.status === "unresolved");
38
+ ), ct = (s = []) => {
39
+ const n = s.find((a) => a.status === "unresolved");
39
40
  return n?.unblockOptions ? n.unblockOptions.find(
40
- (i) => i.unblockType === "submit_wire"
41
+ (a) => a.unblockType === "submit_wire"
41
42
  )?.metadata.wireInRequestUuid : void 0;
42
43
  };
43
- function xt(r) {
44
- return /* @__PURE__ */ l(Ve, { ...r, children: /* @__PURE__ */ l(it, { ...r, children: r.children }) });
44
+ function Kt(s) {
45
+ return /* @__PURE__ */ l(Ke, { ...s, children: /* @__PURE__ */ l(ut, { ...s, children: s.children }) });
45
46
  }
46
- const it = ({
47
- companyId: r,
47
+ const ut = ({
48
+ companyId: s,
48
49
  payrollId: n,
49
- dictionary: _,
50
- onEvent: i,
51
- alerts: F,
52
- withReimbursements: M = !0,
53
- ConfirmWireDetailsComponent: I = qe,
54
- readOnly: b = !1
50
+ dictionary: L,
51
+ onEvent: a,
52
+ alerts: I,
53
+ withReimbursements: x = !0,
54
+ ConfirmWireDetailsComponent: G = Ye,
55
+ readOnly: b = !1,
56
+ className: V
55
57
  }) => {
56
- He("Payroll.PayrollOverview", _), Ke("Payroll.PayrollOverview");
57
- const { baseSubmitHandler: O } = je(), { t: a } = ke("Payroll.PayrollOverview"), [C, w] = m(!1), [x, h] = m(F || []), [E, G] = m({}), [P, p] = m(!1), { showBoundary: V } = Ne(), j = Qe("currency"), f = Xe(), { Button: H, UnorderedList: K, Text: k } = Ze(), [A, g] = m(d.Viewing), { currentPage: U, itemsPerPage: B, getPaginationProps: z } = tt({
58
+ Je("Payroll.PayrollOverview", L), Qe("Payroll.PayrollOverview");
59
+ const { baseSubmitHandler: _ } = ze(), { t: i } = Be("Payroll.PayrollOverview"), [O, S] = m(!1), [j, h] = m(I || []), [C, H] = m({}), [P, p] = m(!1), { showBoundary: K } = Fe(), z = $e("currency"), f = et(), { Button: J, UnorderedList: Q, Text: k } = tt(), [A, g] = m(d.Viewing), { currentPage: U, itemsPerPage: B, getPaginationProps: X } = nt({
58
60
  defaultItemsPerPage: 25
59
- }), J = Te(), Q = Be(
61
+ }), Z = qe(), $ = Ne(
60
62
  () => ({
61
- companyId: r,
63
+ companyId: s,
62
64
  payrollId: n,
63
65
  include: ["taxes", "benefits", "deductions", "totals", "payroll_taxes"],
64
66
  page: U,
65
67
  per: B,
66
68
  sortBy: "last_name"
67
69
  }),
68
- [r, n, U, B]
70
+ [s, n, U, B]
69
71
  ), {
70
72
  data: y,
71
- isFetching: X,
72
- refetch: Z
73
- } = Oe(Q, {
74
- placeholderData: Ee
75
- }), s = y?.payrollShow, $ = rt(s?.submissionBlockers), S = nt(s?.creditBlockers), { data: ee } = Ue(
73
+ isFetching: ee,
74
+ isError: T,
75
+ error: te,
76
+ refetch: oe
77
+ } = ke($, {
78
+ placeholderData: Ue
79
+ }), o = y?.payrollShow, re = lt(o?.submissionBlockers), w = ct(o?.creditBlockers), { data: se } = ve(
76
80
  {
77
- wireInRequestUuid: S || ""
81
+ wireInRequestUuid: w || ""
78
82
  },
79
- { enabled: !!S }
80
- ), T = ee?.wireInRequest, v = (s?.employeeCompensations ?? []).map((e) => e.employeeUuid).filter((e) => !!e), { data: te } = Ce(
81
- { companyId: r, uuids: v },
82
- { enabled: v.length > 0 }
83
- ), se = (te?.showEmployees ?? []).reduce((e, t) => (e[t.uuid] = t.flsaStatus, e), {}), N = () => {
84
- i(c.RUN_PAYROLL_EDIT);
85
- }, oe = S && /* @__PURE__ */ l(
86
- I,
83
+ { enabled: !!w }
84
+ ), v = se?.wireInRequest, N = (o?.employeeCompensations ?? []).map((e) => e.employeeUuid).filter((e) => !!e), { data: ne } = Ae(
85
+ { companyId: s, uuids: N },
86
+ { enabled: N.length > 0 }
87
+ ), ie = (ne?.showEmployees ?? []).reduce((e, t) => (e[t.uuid] = t.flsaStatus, e), {}), q = () => {
88
+ a(c.RUN_PAYROLL_EDIT);
89
+ }, ae = w && /* @__PURE__ */ l(
90
+ G,
87
91
  {
88
- companyId: r,
89
- wireInId: S,
92
+ companyId: s,
93
+ wireInId: w,
90
94
  onEvent: (e, t) => {
91
- e === Ge.PAYROLL_WIRE_FORM_DONE && p(!0), i(e, t);
95
+ e === He.PAYROLL_WIRE_FORM_DONE && p(!0), a(e, t);
92
96
  }
93
97
  }
94
- ), re = /* @__PURE__ */ l(Ye, { companyId: r, payrollId: n, onEvent: i });
95
- L(() => {
96
- T?.status === "pending_review" && !P && p(!0);
97
- }, [T?.status, P]);
98
- const R = s?.checkDate;
99
- L(() => {
98
+ ), le = /* @__PURE__ */ l(Ie, { companyId: s, payrollId: n, onEvent: a });
99
+ E(() => {
100
+ v?.status === "pending_review" && !P && p(!0);
101
+ }, [v?.status, P]);
102
+ const R = o?.checkDate;
103
+ E(() => {
100
104
  if (R && P) {
101
105
  const e = f.formatShortWithYear(R);
102
106
  h([
103
107
  {
104
108
  type: "success",
105
- title: a("alerts.wireDetailsSubmittedTitle"),
106
- content: /* @__PURE__ */ l(k, { children: a("alerts.wireDetailsSubmittedMessage", { checkDate: e }) }),
109
+ title: i("alerts.wireDetailsSubmittedTitle"),
110
+ content: /* @__PURE__ */ l(k, { children: i("alerts.wireDetailsSubmittedMessage", { checkDate: e }) }),
107
111
  onDismiss: () => {
108
112
  p(!1);
109
113
  }
110
114
  }
111
115
  ]);
112
116
  }
113
- }, [P, R, a, f, k]);
114
- const ne = (e) => {
115
- i(c.RUN_PAYROLL_PROCESSED, {
117
+ }, [P, R, i, f, k]);
118
+ const ce = (e) => {
119
+ a(c.RUN_PAYROLL_PROCESSED, {
116
120
  payPeriod: e?.payPeriod,
117
121
  payrollUuid: n
118
122
  }), h([
119
123
  {
120
124
  type: "success",
121
- title: a("alerts.payrollProcessedTitle"),
122
- content: a("alerts.payrollProcessedMessage", {
123
- amount: j(Number(e?.totals?.companyDebit)),
125
+ title: i("alerts.payrollProcessedTitle"),
126
+ content: i("alerts.payrollProcessedMessage", {
127
+ amount: z(Number(e?.totals?.companyDebit)),
124
128
  date: f.formatShortWithYear(
125
129
  e?.payrollStatusMeta?.expectedDebitTime ?? e?.payrollDeadline
126
130
  )
127
131
  })
128
132
  }
129
- ]), p(!1), w(!1);
130
- }, ie = (e) => {
131
- i(c.RUN_PAYROLL_PROCESSING_FAILED), h([
133
+ ]), p(!1), S(!1);
134
+ }, W = (e) => {
135
+ a(c.RUN_PAYROLL_PROCESSING_FAILED), h([
132
136
  {
133
137
  type: "error",
134
- title: a("alerts.payrollProcessingFailedTitle"),
135
- content: /* @__PURE__ */ De(et, { flexDirection: "column", gap: 16, children: [
136
- /* @__PURE__ */ l(K, { items: $e(e?.processingRequest?.errors ?? []) }),
137
- !b && /* @__PURE__ */ l(H, { variant: "secondary", onClick: N, children: a("alerts.payrollProcessingFailedCtaLabel") })
138
+ title: i("alerts.payrollProcessingFailedTitle"),
139
+ content: /* @__PURE__ */ _e(st, { flexDirection: "column", gap: 16, children: [
140
+ /* @__PURE__ */ l(Q, { items: rt(e?.processingRequest?.errors ?? []) }),
141
+ !b && /* @__PURE__ */ l(J, { variant: "secondary", onClick: q, children: i("alerts.payrollProcessingFailedCtaLabel") })
138
142
  ] })
139
143
  }
140
- ]), p(!1), w(!1);
141
- }, { start: D, isPolling: ae } = Me({
142
- refetch: Z,
143
- onProcessed: ne,
144
- onProcessingFailed: ie
144
+ ]), p(!1), S(!1);
145
+ }, { start: D, isPolling: ue } = Ge({
146
+ refetch: oe,
147
+ onProcessed: ce,
148
+ onProcessingFailed: W,
149
+ // Unlike the calculation poll, a second Submit click here is safe even if this fires on a
150
+ // payroll that actually did process successfully — payrollsSubmit only operates on an
151
+ // unprocessed payroll, so the API itself rejects a resubmit rather than double-running it.
152
+ onError: () => {
153
+ W(void 0);
154
+ }
145
155
  });
146
- L(() => {
156
+ E(() => {
147
157
  D({ baseline: null, sawSubmitting: !1 });
148
158
  }, [D]);
149
- const { data: le } = Ae({
150
- companyId: r
151
- }), ce = le.companyBankAccounts?.[0], { paymentSpeed: ue } = Ie(r), { mutateAsync: me, isPending: de } = Le(), { mutateAsync: pe } = _e(), fe = st(), [Pe, q] = m(
159
+ const { data: me } = Te({
160
+ companyId: s
161
+ }), de = me.companyBankAccounts?.[0], { paymentSpeed: pe } = Ve(s), { mutateAsync: fe, isPending: Pe } = Oe(), { mutateAsync: ye } = Ce(), we = it(), [be, F] = m(
152
162
  () => /* @__PURE__ */ new Set()
153
163
  );
154
- if (!s)
155
- return /* @__PURE__ */ l(ot, { title: a("dataLoadingTitle") });
156
- if (A === d.Viewing && !s.calculatedAt)
157
- throw new Error(a("alerts.payrollNotCalculated"));
158
- const ye = z(y.httpMeta.response.headers, X), Se = s.payrollTaxes?.reduce(
164
+ if (!o) {
165
+ if (T)
166
+ throw new Error(i("alerts.payrollLoadFailed"));
167
+ return /* @__PURE__ */ l(at, { title: i("dataLoadingTitle") });
168
+ }
169
+ if (T && ot(te))
170
+ throw new Error(i("alerts.payrollLoadFailed"));
171
+ if (A === d.Viewing && !o.calculatedAt)
172
+ throw new Error(i("alerts.payrollNotCalculated"));
173
+ const Se = X(y.httpMeta.response.headers, ee), he = o.payrollTaxes?.reduce(
159
174
  (e, t) => {
160
175
  if (!t.name) return e;
161
- const o = t.amount ?? 0;
176
+ const r = t.amount ?? 0;
162
177
  return e[t.name] = {
163
- employee: (e[t.name]?.employee ?? 0) + (t.employer ? 0 : o),
164
- employer: (e[t.name]?.employer ?? 0) + (t.employer ? o : 0)
178
+ employee: (e[t.name]?.employee ?? 0) + (t.employer ? 0 : r),
179
+ employer: (e[t.name]?.employer ?? 0) + (t.employer ? r : 0)
165
180
  }, e;
166
181
  },
167
182
  {}
168
- ) || {}, be = async () => {
169
- g(d.Cancelling), await O(y, async () => {
183
+ ) || {}, ge = async () => {
184
+ g(d.Cancelling), await _(y, async () => {
170
185
  try {
171
- const e = await pe({
186
+ const e = await ye({
172
187
  request: {
173
- companyId: r,
188
+ companyId: s,
174
189
  payrollId: n
175
190
  }
176
191
  });
177
- g(d.Cancelled), i(c.RUN_PAYROLL_CANCELLED, e);
192
+ g(d.Cancelled), a(c.RUN_PAYROLL_CANCELLED, e);
178
193
  } catch (e) {
179
194
  throw g(d.Viewing), e;
180
195
  }
181
196
  });
182
- }, we = () => {
183
- i(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: n });
184
- }, he = async (e) => {
185
- const t = Je({ loadingMessage: a("downloadLoadingMessage"), nonce: fe });
186
- q((o) => {
187
- const u = new Set(o);
197
+ }, Re = () => {
198
+ a(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: n });
199
+ }, De = async (e) => {
200
+ const t = Ze({ loadingMessage: i("downloadLoadingMessage"), nonce: we });
201
+ F((r) => {
202
+ const u = new Set(r);
188
203
  return u.add(e), u;
189
204
  });
190
205
  try {
191
- const o = await ve(J, { payrollId: n, employeeId: e });
192
- if (!o.value?.responseStream)
193
- throw t.close(), new Error(a("alerts.paystubPdfError"));
194
- const u = await ze(o.value.responseStream, "application/pdf");
195
- t.navigate(u), i(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: e });
196
- } catch (o) {
197
- t.close(), V(o instanceof Error ? o : new Error(String(o)));
206
+ const r = await We(Z, { payrollId: n, employeeId: e });
207
+ if (!r.value?.responseStream)
208
+ throw t.close(), new Error(i("alerts.paystubPdfError"));
209
+ const u = await Xe(r.value.responseStream, "application/pdf");
210
+ t.navigate(u), a(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: e });
211
+ } catch (r) {
212
+ t.close(), K(r instanceof Error ? r : new Error(String(r)));
198
213
  } finally {
199
- q((o) => {
200
- if (!o.has(e)) return o;
201
- const u = new Set(o);
214
+ F((r) => {
215
+ if (!r.has(e)) return r;
216
+ const u = new Set(r);
202
217
  return u.delete(e), u;
203
218
  });
204
219
  }
205
- }, ge = async () => {
206
- await O(y, async () => {
207
- const e = await me({
220
+ }, Ee = async () => {
221
+ await _(y, async () => {
222
+ const e = await fe({
208
223
  request: {
209
- companyId: r,
224
+ companyId: s,
210
225
  payrollId: n,
211
226
  requestBody: {
212
- submissionBlockers: Object.entries(E).filter(
213
- ([t]) => xe.includes(t)
214
- ).map(([t, o]) => ({
227
+ submissionBlockers: Object.entries(C).filter(
228
+ ([t]) => je.includes(t)
229
+ ).map(([t, r]) => ({
215
230
  blockerType: t,
216
- selectedOption: o
231
+ selectedOption: r
217
232
  }))
218
233
  }
219
234
  }
220
235
  });
221
- i(c.RUN_PAYROLL_SUBMITTING), i(c.RUN_PAYROLL_SUBMITTED, e), D({
236
+ a(c.RUN_PAYROLL_SUBMITTING), a(c.RUN_PAYROLL_SUBMITTED, e), D({
222
237
  baseline: {
223
- processed: s.processed ?? !1,
224
- status: s.processingRequest?.status
238
+ processed: o.processed ?? !1,
239
+ status: o.processingRequest?.status
225
240
  },
226
241
  sawSubmitting: !1
227
- }), w(!0);
242
+ }), S(!0);
228
243
  });
229
- }, W = (() => {
230
- if (!(C || ae) && !(s.processed || s.processingRequest?.status === Y.submit_success) && s.checkDate && s.payrollDeadline)
244
+ }, Y = (() => {
245
+ if (!(O || ue) && !(o.processed || o.processingRequest?.status === M.submit_success) && o.checkDate && o.payrollDeadline)
231
246
  return {
232
247
  type: "info",
233
- title: a("alerts.directDepositDeadline", {
234
- payDate: f.formatShortWithWeekday(s.checkDate),
235
- ...f.formatWithTime(s.payrollDeadline)
248
+ title: i("alerts.directDepositDeadline", {
249
+ payDate: f.formatShortWithWeekday(o.checkDate),
250
+ ...f.formatWithTime(o.payrollDeadline)
236
251
  }),
237
- content: a("alerts.directDepositDeadlineText")
252
+ content: i("alerts.directDepositDeadlineText")
238
253
  };
239
- })(), Re = [...x, ...W ? [W] : []];
254
+ })(), Le = [...j, ...Y ? [Y] : []];
240
255
  return /* @__PURE__ */ l(
241
- Fe,
256
+ xe,
242
257
  {
243
- onEdit: N,
244
- onSubmit: ge,
245
- onCancel: be,
246
- onPayrollReceipt: we,
247
- onPaystubDownload: he,
248
- status: de || C ? d.Submitting : A,
249
- isProcessed: s.processed === !0 || s.processingRequest?.status === Y.submit_success,
250
- canCancel: We(s) && !b,
258
+ className: V,
259
+ onEdit: q,
260
+ onSubmit: Ee,
261
+ onCancel: ge,
262
+ onPayrollReceipt: Re,
263
+ onPaystubDownload: De,
264
+ status: Pe || O ? d.Submitting : A,
265
+ isProcessed: o.processed === !0 || o.processingRequest?.status === M.submit_success,
266
+ canCancel: Me(o) && !b,
251
267
  canEdit: !b,
252
- payrollData: s,
253
- employeeFlsaStatusByUuid: se,
254
- bankAccount: ce,
255
- taxes: Se,
256
- alerts: Re,
257
- submissionBlockers: $,
258
- selectedUnblockOptions: E,
268
+ payrollData: o,
269
+ employeeFlsaStatusByUuid: ie,
270
+ bankAccount: de,
271
+ taxes: he,
272
+ alerts: Le,
273
+ submissionBlockers: re,
274
+ selectedUnblockOptions: C,
259
275
  onUnblockOptionChange: (e, t) => {
260
- G((o) => ({ ...o, [e]: t }));
276
+ H((r) => ({ ...r, [e]: t }));
261
277
  },
262
- wireInConfirmationRequest: oe,
263
- printChecksBanner: re,
264
- withReimbursements: M,
265
- paymentSpeed: ue,
266
- pagination: ye,
267
- downloadingEmployeeIds: Pe
278
+ wireInConfirmationRequest: ae,
279
+ printChecksBanner: le,
280
+ withReimbursements: x,
281
+ paymentSpeed: pe,
282
+ pagination: Se,
283
+ downloadingEmployeeIds: be
268
284
  }
269
285
  );
270
286
  };
271
287
  export {
272
- xt as PayrollOverview
288
+ Kt as PayrollOverview
273
289
  };
274
290
  //# sourceMappingURL=PayrollOverview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollOverview.js","sources":["../../../../src/components/Payroll/PayrollOverview/PayrollOverview.tsx"],"sourcesContent":["import { usePayrollsSubmitMutation } from '@gusto/embedded-api/react-query/payrollsSubmit'\nimport { usePayrollsCancelMutation } from '@gusto/embedded-api/react-query/payrollsCancel'\nimport { usePayrollsGet } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useBankAccountsGetSuspense } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport { useWireInRequestsGet } from '@gusto/embedded-api/react-query/wireInRequestsGet'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsGetPayStub } from '@gusto/embedded-api/funcs/payrollsGetPayStub'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport type { GetV1CompaniesCompanyIdPayrollsPayrollIdRequest } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrollspayrollid'\nimport type { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype'\nimport type {\n PayrollCreditBlockerType,\n PayrollCreditBlockerTypeUnblockOptions,\n} from '@gusto/embedded-api/models/components/payrollcreditblockertype'\nimport type { PayrollFlowAlert } from '../PayrollFlow/PayrollFlowComponents'\nimport {\n ConfirmWireDetails,\n type ConfirmWireDetailsComponentType,\n} from '../ConfirmWireDetails/ConfirmWireDetails'\nimport { canCancelPayroll } from '../helpers'\nimport { PrintChecks } from '../PrintChecks/PrintChecks'\nimport { PayrollOverviewPresentation } from './PayrollOverviewPresentation'\nimport { PayrollOverviewStatus } from './PayrollOverviewTypes'\nimport { useSubmissionPoll, type PayrollShow } from './useSubmissionPoll'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n componentEvents,\n payrollWireEvents,\n PAYROLL_PROCESSING_STATUS,\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES,\n type EventType,\n} from '@/shared/constants'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { readableStreamToBlob } from '@/helpers/readableStreamToBlob'\nimport { openPdfInNewTab } from '@/helpers/openPdfInNewTab'\nimport { useNonce } from '@/contexts/NonceProvider'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\nimport { Flex, PayrollLoading } from '@/components/Common'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\n/**\n * Props for {@link PayrollOverview}.\n *\n * @public\n */\nexport interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.PayrollOverview'> {\n /** Identifier of the company that owns the payroll. */\n companyId: string\n /** Identifier of the payroll being reviewed. The payroll must already be calculated. */\n payrollId: string\n /** Alert banners to display above the payroll summary. */\n alerts?: PayrollFlowAlert[]\n /** Whether reimbursement fields are shown in the totals and per-employee tables. Defaults to `true`. */\n withReimbursements?: boolean\n /** Custom component to replace the default wire details confirmation UI. */\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n /**\n * Hides the edit and cancel actions, leaving submit and receipt/paystub actions available.\n * Use for a deep link to a specific payroll where editing shouldn't be offered. Defaults to\n * `false`.\n */\n readOnly?: boolean\n}\n\nconst findUnresolvedBlockersWithOptions = (\n blockers: PayrollSubmissionBlockerType[] = [],\n): PayrollSubmissionBlockerType[] => {\n return blockers.filter(\n blocker =>\n blocker.status === 'unresolved' &&\n blocker.unblockOptions &&\n blocker.unblockOptions.length > 0,\n )\n}\n\nconst findWireInRequestUuid = (\n creditBlockers: PayrollCreditBlockerType[] = [],\n): string | undefined => {\n const unresolvedCreditBlocker = creditBlockers.find(blocker => blocker.status === 'unresolved')\n\n if (!unresolvedCreditBlocker?.unblockOptions) {\n return undefined\n }\n\n const wireUnblockOption = unresolvedCreditBlocker.unblockOptions.find(\n (option: PayrollCreditBlockerTypeUnblockOptions) => option.unblockType === 'submit_wire',\n )\n\n return wireUnblockOption?.metadata.wireInRequestUuid\n}\n\n/**\n * Final review screen for a calculated payroll before submission, with submit, cancel,\n * and edit controls. After submission, tracks processing status and surfaces the receipt\n * and per-employee paystub downloads once complete.\n *\n * @remarks\n * The payroll referenced by `payrollId` must already be calculated; rendering with an\n * uncalculated payroll throws. Unresolved submission blockers (e.g. fast-ACH threshold,\n * wire-in funding) are surfaced inline and the submit action stays disabled until each\n * blocker has a selected unblock option. While the payroll is processing, the component\n * polls until success or failure and emits the corresponding event. Pass `readOnly` to hide\n * the edit and cancel actions while keeping submit available.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/edit` | User chose to edit the payroll before submitting | — |\n * | `runPayroll/submitting` | Submit request was sent to the API | — |\n * | `runPayroll/submitted` | Payroll was successfully submitted | Submit payroll response |\n * | `runPayroll/processed` | Payroll finished processing successfully | `{ payPeriod, payrollUuid }` |\n * | `runPayroll/processingFailed` | Payroll processing failed | — |\n * | `runPayroll/cancelled` | Payroll was cancelled | Cancel payroll response |\n * | `runPayroll/receipt/get` | User requested the payroll receipt | `{ payrollId }` |\n * | `runPayroll/pdfPaystub/viewed` | User opened an employee's paystub PDF | `{ employeeId }` |\n * | `payroll/wire/form/done` | Wire-in details were confirmed via the embedded wire form | Submit wire-in response |\n * | `payroll/printChecks/start` | User opened the print-checks modal from the embedded print-checks banner | — |\n * | `payroll/printChecks/generate/start` | User submitted the print-checks form | — |\n * | `payroll/printChecks/generate/succeeded` | Printable checks finished generating | `{ documentUrl }` |\n * | `payroll/printChecks/generate/failed` | The print-checks request was rejected or generation failed | `{ errorMessage }` |\n * | `payroll/printChecks/retry` | User retried after a failed check generation | — |\n * | `payroll/printChecks/cancel` | User cancelled the print-checks form | — |\n * | `payroll/printChecks/close` | User closed the print-checks failure or summary screen | — |\n *\n * @param props - See {@link PayrollOverviewProps}.\n * @returns The payroll overview surface.\n * @public\n */\nexport function PayrollOverview(props: PayrollOverviewProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n companyId,\n payrollId,\n dictionary,\n onEvent,\n alerts,\n withReimbursements = true,\n ConfirmWireDetailsComponent = ConfirmWireDetails,\n readOnly = false,\n}: PayrollOverviewProps) => {\n useComponentDictionary('Payroll.PayrollOverview', dictionary)\n useI18n('Payroll.PayrollOverview')\n const { baseSubmitHandler } = useBase()\n const { t } = useTranslation('Payroll.PayrollOverview')\n const [hasSubmittedInSession, setHasSubmittedInSession] = useState(false)\n const [internalAlerts, setInternalAlerts] = useState(alerts || [])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n const [showWireDetailsConfirmation, setShowWireDetailsConfirmation] = useState(false)\n const { showBoundary } = useErrorBoundary()\n const formatCurrency = useNumberFormatter('currency')\n const dateFormatter = useDateFormatter()\n const { Button, UnorderedList, Text } = useComponentContext()\n const [status, setStatus] = useState(PayrollOverviewStatus.Viewing)\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const gustoEmbedded = useGustoEmbeddedContext()\n\n const payrollRequest = useMemo<GetV1CompaniesCompanyIdPayrollsPayrollIdRequest>(\n () => ({\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions', 'totals', 'payroll_taxes'],\n page: currentPage,\n per: itemsPerPage,\n sortBy: 'last_name',\n }),\n [companyId, payrollId, currentPage, itemsPerPage],\n )\n\n const {\n data,\n isFetching,\n refetch: refetchPayroll,\n } = usePayrollsGet(payrollRequest, {\n placeholderData: keepPreviousData,\n })\n const payrollData = data?.payrollShow\n const submissionBlockers = findUnresolvedBlockersWithOptions(payrollData?.submissionBlockers)\n const wireInId = findWireInRequestUuid(payrollData?.creditBlockers)\n\n const { data: wireInRequestData } = useWireInRequestsGet(\n {\n wireInRequestUuid: wireInId || '',\n },\n { enabled: !!wireInId },\n )\n const wireInRequest = wireInRequestData?.wireInRequest\n\n // Scoped to the current page's employees so this stays bounded regardless of company size,\n // since `flsaStatus` (compensation type) isn't available on employeeCompensations for\n // employees without an hourlyCompensations line item (e.g. salaried employees).\n const employeeUuids = (payrollData?.employeeCompensations ?? [])\n .map(employeeCompensation => employeeCompensation.employeeUuid)\n .filter((uuid): uuid is string => !!uuid)\n\n const { data: employeesData } = useEmployeesList(\n { companyId, uuids: employeeUuids },\n { enabled: employeeUuids.length > 0 },\n )\n const employeeFlsaStatusByUuid = (employeesData?.showEmployees ?? []).reduce<\n Record<string, string | undefined>\n >((acc, employee) => {\n acc[employee.uuid] = employee.flsaStatus\n return acc\n }, {})\n\n const onEdit = () => {\n onEvent(componentEvents.RUN_PAYROLL_EDIT)\n }\n\n const handleWireEvent = (type: EventType, data?: unknown) => {\n if (type === payrollWireEvents.PAYROLL_WIRE_FORM_DONE) {\n setShowWireDetailsConfirmation(true)\n }\n onEvent(type, data)\n }\n\n const wireInConfirmationRequest = wireInId && (\n <ConfirmWireDetailsComponent\n companyId={companyId}\n wireInId={wireInId}\n onEvent={handleWireEvent}\n />\n )\n\n const printChecksBanner = (\n <PrintChecks companyId={companyId} payrollId={payrollId} onEvent={onEvent} />\n )\n\n useEffect(() => {\n if (wireInRequest?.status === 'pending_review' && !showWireDetailsConfirmation) {\n setShowWireDetailsConfirmation(true)\n }\n }, [wireInRequest?.status, showWireDetailsConfirmation])\n\n const checkDate = payrollData?.checkDate\n useEffect(() => {\n if (checkDate && showWireDetailsConfirmation) {\n const formattedCheckDate = dateFormatter.formatShortWithYear(checkDate)\n\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.wireDetailsSubmittedTitle'),\n content: (\n <Text>\n {t('alerts.wireDetailsSubmittedMessage', { checkDate: formattedCheckDate })}\n </Text>\n ),\n onDismiss: () => {\n setShowWireDetailsConfirmation(false)\n },\n },\n ])\n }\n }, [showWireDetailsConfirmation, checkDate, t, dateFormatter, Text])\n\n const emitProcessed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSED, {\n payPeriod: payroll?.payPeriod,\n payrollUuid: payrollId,\n })\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.payrollProcessedTitle'),\n content: t('alerts.payrollProcessedMessage', {\n amount: formatCurrency(Number(payroll?.totals?.companyDebit)),\n date: dateFormatter.formatShortWithYear(\n payroll?.payrollStatusMeta?.expectedDebitTime ?? payroll?.payrollDeadline,\n ),\n }),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const emitProcessingFailed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setInternalAlerts([\n {\n type: 'error',\n title: t('alerts.payrollProcessingFailedTitle'),\n content: (\n <Flex flexDirection=\"column\" gap={16}>\n <UnorderedList items={renderErrorList(payroll?.processingRequest?.errors ?? [])} />\n {!readOnly && (\n <Button variant=\"secondary\" onClick={onEdit}>\n {t('alerts.payrollProcessingFailedCtaLabel')}\n </Button>\n )}\n </Flex>\n ),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const { start: startPayrollPoll, isPolling } = useSubmissionPoll({\n refetch: refetchPayroll,\n onProcessed: emitProcessed,\n onProcessingFailed: emitProcessingFailed,\n })\n\n // Always poll from mount, not just after Submit: the initial read is a non-suspense query, so\n // if its notification never arrives the component is stuck on `!payrollData` forever with no\n // other render source. This also doubles as picking up a submission already in flight\n // (another tab, another admin) — the poll's own evaluate rules keep the loop going for as long\n // as it reads `submitting`, regardless of why the loop started.\n useEffect(() => {\n startPayrollPoll({ baseline: null, sawSubmitting: false })\n }, [startPayrollPoll])\n\n const { data: bankAccountData } = useBankAccountsGetSuspense({\n companyId,\n })\n const bankAccount = bankAccountData.companyBankAccounts?.[0]\n\n const { paymentSpeed } = useCompanyPaymentSpeed(companyId)\n\n const { mutateAsync: submitPayroll, isPending } = usePayrollsSubmitMutation()\n\n const { mutateAsync: cancelPayroll } = usePayrollsCancelMutation()\n\n const nonce = useNonce()\n\n const [downloadingEmployeeIds, setDownloadingEmployeeIds] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n if (!payrollData) {\n return <PayrollLoading title={t('dataLoadingTitle')} />\n }\n\n if (status === PayrollOverviewStatus.Viewing && !payrollData.calculatedAt) {\n throw new Error(t('alerts.payrollNotCalculated'))\n }\n\n const pagination = getPaginationProps(data.httpMeta.response.headers, isFetching)\n\n // Per-tax totals come from the payroll-level `payrollTaxes` aggregate so they stay\n // correct when `employeeCompensations` is paginated (only a single page is loaded).\n const taxes =\n payrollData.payrollTaxes?.reduce(\n (acc, tax) => {\n if (!tax.name) return acc\n const amount = tax.amount ?? 0\n acc[tax.name] = {\n employee: (acc[tax.name]?.employee ?? 0) + (tax.employer ? 0 : amount),\n employer: (acc[tax.name]?.employer ?? 0) + (tax.employer ? amount : 0),\n }\n return acc\n },\n {} as Record<string, { employee: number; employer: number }>,\n ) || {}\n\n const onCancel = async () => {\n setStatus(PayrollOverviewStatus.Cancelling)\n await baseSubmitHandler(data, async () => {\n try {\n const result = await cancelPayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setStatus(PayrollOverviewStatus.Cancelled)\n onEvent(componentEvents.RUN_PAYROLL_CANCELLED, result)\n } catch (error) {\n setStatus(PayrollOverviewStatus.Viewing)\n throw error\n }\n })\n }\n const onPayrollReceipt = () => {\n onEvent(componentEvents.RUN_PAYROLL_RECEIPT_GET, { payrollId })\n }\n\n const onPaystubDownload = async (employeeId: string) => {\n const tab = openPdfInNewTab({ loadingMessage: t('downloadLoadingMessage'), nonce })\n setDownloadingEmployeeIds(prev => {\n const next = new Set(prev)\n next.add(employeeId)\n return next\n })\n try {\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId, employeeId })\n if (!response.value?.responseStream) {\n tab.close()\n throw new Error(t('alerts.paystubPdfError'))\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n tab.navigate(pdfBlob)\n onEvent(componentEvents.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId })\n } catch (err) {\n tab.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingEmployeeIds(prev => {\n if (!prev.has(employeeId)) return prev\n const next = new Set(prev)\n next.delete(employeeId)\n return next\n })\n }\n }\n const onSubmit = async () => {\n await baseSubmitHandler(data, async () => {\n const result = await submitPayroll({\n request: {\n companyId,\n payrollId,\n requestBody: {\n submissionBlockers: Object.entries(selectedUnblockOptions)\n .filter(([blockerType]) =>\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES.includes(blockerType),\n )\n .map(([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n })),\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTING)\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTED, result)\n startPayrollPoll({\n baseline: {\n processed: payrollData.processed ?? false,\n status: payrollData.processingRequest?.status,\n },\n sawSubmitting: false,\n })\n setHasSubmittedInSession(true)\n })\n }\n\n const deadlineAlert: PayrollFlowAlert | undefined = (() => {\n if (hasSubmittedInSession || isPolling) return undefined\n if (\n payrollData.processed ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n )\n return undefined\n\n if (payrollData.checkDate && payrollData.payrollDeadline) {\n return {\n type: 'info' as const,\n title: t('alerts.directDepositDeadline', {\n payDate: dateFormatter.formatShortWithWeekday(payrollData.checkDate),\n ...dateFormatter.formatWithTime(payrollData.payrollDeadline),\n }),\n content: t('alerts.directDepositDeadlineText'),\n }\n }\n return undefined\n })()\n\n const combinedAlerts = [...internalAlerts, ...(deadlineAlert ? [deadlineAlert] : [])]\n\n return (\n <PayrollOverviewPresentation\n onEdit={onEdit}\n onSubmit={onSubmit}\n onCancel={onCancel}\n onPayrollReceipt={onPayrollReceipt}\n onPaystubDownload={onPaystubDownload}\n status={isPending || hasSubmittedInSession ? PayrollOverviewStatus.Submitting : status}\n isProcessed={\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n }\n canCancel={canCancelPayroll(payrollData) && !readOnly}\n canEdit={!readOnly}\n payrollData={payrollData}\n employeeFlsaStatusByUuid={employeeFlsaStatusByUuid}\n bankAccount={bankAccount}\n taxes={taxes}\n alerts={combinedAlerts}\n submissionBlockers={submissionBlockers}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={(blockerType, value) => {\n setSelectedUnblockOptions(prev => ({ ...prev, [blockerType]: value }))\n }}\n wireInConfirmationRequest={wireInConfirmationRequest}\n printChecksBanner={printChecksBanner}\n withReimbursements={withReimbursements}\n paymentSpeed={paymentSpeed}\n pagination={pagination}\n downloadingEmployeeIds={downloadingEmployeeIds}\n />\n )\n}\n"],"names":["findUnresolvedBlockersWithOptions","blockers","blocker","findWireInRequestUuid","creditBlockers","unresolvedCreditBlocker","option","PayrollOverview","props","jsx","BaseComponent","Root","companyId","payrollId","dictionary","onEvent","alerts","withReimbursements","ConfirmWireDetailsComponent","ConfirmWireDetails","readOnly","useComponentDictionary","useI18n","baseSubmitHandler","useBase","t","useTranslation","hasSubmittedInSession","setHasSubmittedInSession","useState","internalAlerts","setInternalAlerts","selectedUnblockOptions","setSelectedUnblockOptions","showWireDetailsConfirmation","setShowWireDetailsConfirmation","showBoundary","useErrorBoundary","formatCurrency","useNumberFormatter","dateFormatter","useDateFormatter","Button","UnorderedList","Text","useComponentContext","status","setStatus","PayrollOverviewStatus","currentPage","itemsPerPage","getPaginationProps","usePagination","gustoEmbedded","useGustoEmbeddedContext","payrollRequest","useMemo","data","isFetching","refetchPayroll","usePayrollsGet","keepPreviousData","payrollData","submissionBlockers","wireInId","wireInRequestData","useWireInRequestsGet","wireInRequest","employeeUuids","employeeCompensation","uuid","employeesData","useEmployeesList","employeeFlsaStatusByUuid","acc","employee","onEdit","componentEvents","wireInConfirmationRequest","type","payrollWireEvents","printChecksBanner","PrintChecks","useEffect","checkDate","formattedCheckDate","emitProcessed","payroll","emitProcessingFailed","jsxs","Flex","renderErrorList","startPayrollPoll","isPolling","useSubmissionPoll","bankAccountData","useBankAccountsGetSuspense","bankAccount","paymentSpeed","useCompanyPaymentSpeed","submitPayroll","isPending","usePayrollsSubmitMutation","cancelPayroll","usePayrollsCancelMutation","nonce","useNonce","downloadingEmployeeIds","setDownloadingEmployeeIds","PayrollLoading","pagination","taxes","tax","amount","onCancel","result","error","onPayrollReceipt","onPaystubDownload","employeeId","tab","openPdfInNewTab","prev","next","response","payrollsGetPayStub","pdfBlob","readableStreamToBlob","err","onSubmit","blockerType","PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES","selectedOption","deadlineAlert","PAYROLL_PROCESSING_STATUS","combinedAlerts","PayrollOverviewPresentation","canCancelPayroll","value"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollOverview.js","sources":["../../../../src/components/Payroll/PayrollOverview/PayrollOverview.tsx"],"sourcesContent":["import { usePayrollsSubmitMutation } from '@gusto/embedded-api/react-query/payrollsSubmit'\nimport { usePayrollsCancelMutation } from '@gusto/embedded-api/react-query/payrollsCancel'\nimport { usePayrollsGet } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useBankAccountsGetSuspense } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport { useWireInRequestsGet } from '@gusto/embedded-api/react-query/wireInRequestsGet'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsGetPayStub } from '@gusto/embedded-api/funcs/payrollsGetPayStub'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport type { GetV1CompaniesCompanyIdPayrollsPayrollIdRequest } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrollspayrollid'\nimport type { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype'\nimport type {\n PayrollCreditBlockerType,\n PayrollCreditBlockerTypeUnblockOptions,\n} from '@gusto/embedded-api/models/components/payrollcreditblockertype'\nimport type { PayrollFlowAlert } from '../PayrollFlow/PayrollFlowComponents'\nimport {\n ConfirmWireDetails,\n type ConfirmWireDetailsComponentType,\n} from '../ConfirmWireDetails/ConfirmWireDetails'\nimport { canCancelPayroll } from '../helpers'\nimport { PrintChecks } from '../PrintChecks/PrintChecks'\nimport { PayrollOverviewPresentation } from './PayrollOverviewPresentation'\nimport { PayrollOverviewStatus } from './PayrollOverviewTypes'\nimport { useSubmissionPoll, type PayrollShow } from './useSubmissionPoll'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n componentEvents,\n payrollWireEvents,\n PAYROLL_PROCESSING_STATUS,\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES,\n type EventType,\n} from '@/shared/constants'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { readableStreamToBlob } from '@/helpers/readableStreamToBlob'\nimport { openPdfInNewTab } from '@/helpers/openPdfInNewTab'\nimport { useNonce } from '@/contexts/NonceProvider'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { isNonRetryablePollError } from '@/hooks/usePollingTask/usePollingTask'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\nimport { Flex, PayrollLoading } from '@/components/Common'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\n/**\n * Props for {@link PayrollOverview}.\n *\n * @public\n */\nexport interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.PayrollOverview'> {\n /** Identifier of the company that owns the payroll. */\n companyId: string\n /** Identifier of the payroll being reviewed. The payroll must already be calculated. */\n payrollId: string\n /** Alert banners to display above the payroll summary. */\n alerts?: PayrollFlowAlert[]\n /** Whether reimbursement fields are shown in the totals and per-employee tables. Defaults to `true`. */\n withReimbursements?: boolean\n /** Custom component to replace the default wire details confirmation UI. */\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n /**\n * Hides the edit and cancel actions, leaving submit and receipt/paystub actions available.\n * Use for a deep link to a specific payroll where editing shouldn't be offered. Defaults to\n * `false`.\n */\n readOnly?: boolean\n}\n\nconst findUnresolvedBlockersWithOptions = (\n blockers: PayrollSubmissionBlockerType[] = [],\n): PayrollSubmissionBlockerType[] => {\n return blockers.filter(\n blocker =>\n blocker.status === 'unresolved' &&\n blocker.unblockOptions &&\n blocker.unblockOptions.length > 0,\n )\n}\n\nconst findWireInRequestUuid = (\n creditBlockers: PayrollCreditBlockerType[] = [],\n): string | undefined => {\n const unresolvedCreditBlocker = creditBlockers.find(blocker => blocker.status === 'unresolved')\n\n if (!unresolvedCreditBlocker?.unblockOptions) {\n return undefined\n }\n\n const wireUnblockOption = unresolvedCreditBlocker.unblockOptions.find(\n (option: PayrollCreditBlockerTypeUnblockOptions) => option.unblockType === 'submit_wire',\n )\n\n return wireUnblockOption?.metadata.wireInRequestUuid\n}\n\n/**\n * Final review screen for a calculated payroll before submission, with submit, cancel,\n * and edit controls. After submission, tracks processing status and surfaces the receipt\n * and per-employee paystub downloads once complete.\n *\n * @remarks\n * The payroll referenced by `payrollId` must already be calculated; rendering with an\n * uncalculated payroll throws. Unresolved submission blockers (e.g. fast-ACH threshold,\n * wire-in funding) are surfaced inline and the submit action stays disabled until each\n * blocker has a selected unblock option. While the payroll is processing, the component\n * polls until success or failure and emits the corresponding event. Pass `readOnly` to hide\n * the edit and cancel actions while keeping submit available.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/edit` | User chose to edit the payroll before submitting | — |\n * | `runPayroll/submitting` | Submit request was sent to the API | — |\n * | `runPayroll/submitted` | Payroll was successfully submitted | Submit payroll response |\n * | `runPayroll/processed` | Payroll finished processing successfully | `{ payPeriod, payrollUuid }` |\n * | `runPayroll/processingFailed` | Payroll processing failed | — |\n * | `runPayroll/cancelled` | Payroll was cancelled | Cancel payroll response |\n * | `runPayroll/receipt/get` | User requested the payroll receipt | `{ payrollId }` |\n * | `runPayroll/pdfPaystub/viewed` | User opened an employee's paystub PDF | `{ employeeId }` |\n * | `payroll/wire/form/done` | Wire-in details were confirmed via the embedded wire form | Submit wire-in response |\n * | `payroll/printChecks/start` | User opened the print-checks modal from the embedded print-checks banner | — |\n * | `payroll/printChecks/generate/start` | User submitted the print-checks form | — |\n * | `payroll/printChecks/generate/succeeded` | Printable checks finished generating | `{ documentUrl }` |\n * | `payroll/printChecks/generate/failed` | The print-checks request was rejected or generation failed | `{ errorMessage }` |\n * | `payroll/printChecks/retry` | User retried after a failed check generation | — |\n * | `payroll/printChecks/cancel` | User cancelled the print-checks form | — |\n * | `payroll/printChecks/close` | User closed the print-checks failure or summary screen | — |\n *\n * @param props - See {@link PayrollOverviewProps}.\n * @returns The payroll overview surface.\n * @public\n */\nexport function PayrollOverview(props: PayrollOverviewProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n companyId,\n payrollId,\n dictionary,\n onEvent,\n alerts,\n withReimbursements = true,\n ConfirmWireDetailsComponent = ConfirmWireDetails,\n readOnly = false,\n className,\n}: PayrollOverviewProps) => {\n useComponentDictionary('Payroll.PayrollOverview', dictionary)\n useI18n('Payroll.PayrollOverview')\n const { baseSubmitHandler } = useBase()\n const { t } = useTranslation('Payroll.PayrollOverview')\n const [hasSubmittedInSession, setHasSubmittedInSession] = useState(false)\n const [internalAlerts, setInternalAlerts] = useState(alerts || [])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n const [showWireDetailsConfirmation, setShowWireDetailsConfirmation] = useState(false)\n const { showBoundary } = useErrorBoundary()\n const formatCurrency = useNumberFormatter('currency')\n const dateFormatter = useDateFormatter()\n const { Button, UnorderedList, Text } = useComponentContext()\n const [status, setStatus] = useState(PayrollOverviewStatus.Viewing)\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const gustoEmbedded = useGustoEmbeddedContext()\n\n const payrollRequest = useMemo<GetV1CompaniesCompanyIdPayrollsPayrollIdRequest>(\n () => ({\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions', 'totals', 'payroll_taxes'],\n page: currentPage,\n per: itemsPerPage,\n sortBy: 'last_name',\n }),\n [companyId, payrollId, currentPage, itemsPerPage],\n )\n\n const {\n data,\n isFetching,\n isError,\n error,\n refetch: refetchPayroll,\n } = usePayrollsGet(payrollRequest, {\n placeholderData: keepPreviousData,\n })\n const payrollData = data?.payrollShow\n const submissionBlockers = findUnresolvedBlockersWithOptions(payrollData?.submissionBlockers)\n const wireInId = findWireInRequestUuid(payrollData?.creditBlockers)\n\n const { data: wireInRequestData } = useWireInRequestsGet(\n {\n wireInRequestUuid: wireInId || '',\n },\n { enabled: !!wireInId },\n )\n const wireInRequest = wireInRequestData?.wireInRequest\n\n // Scoped to the current page's employees so this stays bounded regardless of company size,\n // since `flsaStatus` (compensation type) isn't available on employeeCompensations for\n // employees without an hourlyCompensations line item (e.g. salaried employees).\n const employeeUuids = (payrollData?.employeeCompensations ?? [])\n .map(employeeCompensation => employeeCompensation.employeeUuid)\n .filter((uuid): uuid is string => !!uuid)\n\n const { data: employeesData } = useEmployeesList(\n { companyId, uuids: employeeUuids },\n { enabled: employeeUuids.length > 0 },\n )\n const employeeFlsaStatusByUuid = (employeesData?.showEmployees ?? []).reduce<\n Record<string, string | undefined>\n >((acc, employee) => {\n acc[employee.uuid] = employee.flsaStatus\n return acc\n }, {})\n\n const onEdit = () => {\n onEvent(componentEvents.RUN_PAYROLL_EDIT)\n }\n\n const handleWireEvent = (type: EventType, data?: unknown) => {\n if (type === payrollWireEvents.PAYROLL_WIRE_FORM_DONE) {\n setShowWireDetailsConfirmation(true)\n }\n onEvent(type, data)\n }\n\n const wireInConfirmationRequest = wireInId && (\n <ConfirmWireDetailsComponent\n companyId={companyId}\n wireInId={wireInId}\n onEvent={handleWireEvent}\n />\n )\n\n const printChecksBanner = (\n <PrintChecks companyId={companyId} payrollId={payrollId} onEvent={onEvent} />\n )\n\n useEffect(() => {\n if (wireInRequest?.status === 'pending_review' && !showWireDetailsConfirmation) {\n setShowWireDetailsConfirmation(true)\n }\n }, [wireInRequest?.status, showWireDetailsConfirmation])\n\n const checkDate = payrollData?.checkDate\n useEffect(() => {\n if (checkDate && showWireDetailsConfirmation) {\n const formattedCheckDate = dateFormatter.formatShortWithYear(checkDate)\n\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.wireDetailsSubmittedTitle'),\n content: (\n <Text>\n {t('alerts.wireDetailsSubmittedMessage', { checkDate: formattedCheckDate })}\n </Text>\n ),\n onDismiss: () => {\n setShowWireDetailsConfirmation(false)\n },\n },\n ])\n }\n }, [showWireDetailsConfirmation, checkDate, t, dateFormatter, Text])\n\n const emitProcessed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSED, {\n payPeriod: payroll?.payPeriod,\n payrollUuid: payrollId,\n })\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.payrollProcessedTitle'),\n content: t('alerts.payrollProcessedMessage', {\n amount: formatCurrency(Number(payroll?.totals?.companyDebit)),\n date: dateFormatter.formatShortWithYear(\n payroll?.payrollStatusMeta?.expectedDebitTime ?? payroll?.payrollDeadline,\n ),\n }),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const emitProcessingFailed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setInternalAlerts([\n {\n type: 'error',\n title: t('alerts.payrollProcessingFailedTitle'),\n content: (\n <Flex flexDirection=\"column\" gap={16}>\n <UnorderedList items={renderErrorList(payroll?.processingRequest?.errors ?? [])} />\n {!readOnly && (\n <Button variant=\"secondary\" onClick={onEdit}>\n {t('alerts.payrollProcessingFailedCtaLabel')}\n </Button>\n )}\n </Flex>\n ),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const { start: startPayrollPoll, isPolling } = useSubmissionPoll({\n refetch: refetchPayroll,\n onProcessed: emitProcessed,\n onProcessingFailed: emitProcessingFailed,\n // Unlike the calculation poll, a second Submit click here is safe even if this fires on a\n // payroll that actually did process successfully — payrollsSubmit only operates on an\n // unprocessed payroll, so the API itself rejects a resubmit rather than double-running it.\n onError: () => {\n emitProcessingFailed(undefined)\n },\n })\n\n // The initial read is a non-suspense query; if its notification never arrives, the component\n // is stuck on `!payrollData` forever with no other render source. This one read forces that\n // render -- it only keeps tracking to completion if it happens to land on `submitting`, not as\n // a durable watcher for a submission started elsewhere.\n useEffect(() => {\n startPayrollPoll({ baseline: null, sawSubmitting: false })\n }, [startPayrollPoll])\n\n const { data: bankAccountData } = useBankAccountsGetSuspense({\n companyId,\n })\n const bankAccount = bankAccountData.companyBankAccounts?.[0]\n\n const { paymentSpeed } = useCompanyPaymentSpeed(companyId)\n\n const { mutateAsync: submitPayroll, isPending } = usePayrollsSubmitMutation()\n\n const { mutateAsync: cancelPayroll } = usePayrollsCancelMutation()\n\n const nonce = useNonce()\n\n const [downloadingEmployeeIds, setDownloadingEmployeeIds] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n if (!payrollData) {\n if (isError) {\n throw new Error(t('alerts.payrollLoadFailed'))\n }\n return <PayrollLoading title={t('dataLoadingTitle')} />\n }\n\n // `keepPreviousData` can leave stale data in place while the query is erroring in the\n // background. A retryable error (network blip, transient 5xx) is fine to ride out on stale\n // data, but a non-retryable one (expired session, schema mismatch) never recovers on its own --\n // continuing to render stale data would hide that from the partner indefinitely.\n if (isError && isNonRetryablePollError(error)) {\n throw new Error(t('alerts.payrollLoadFailed'))\n }\n\n if (status === PayrollOverviewStatus.Viewing && !payrollData.calculatedAt) {\n throw new Error(t('alerts.payrollNotCalculated'))\n }\n\n const pagination = getPaginationProps(data.httpMeta.response.headers, isFetching)\n\n // Per-tax totals come from the payroll-level `payrollTaxes` aggregate so they stay\n // correct when `employeeCompensations` is paginated (only a single page is loaded).\n const taxes =\n payrollData.payrollTaxes?.reduce(\n (acc, tax) => {\n if (!tax.name) return acc\n const amount = tax.amount ?? 0\n acc[tax.name] = {\n employee: (acc[tax.name]?.employee ?? 0) + (tax.employer ? 0 : amount),\n employer: (acc[tax.name]?.employer ?? 0) + (tax.employer ? amount : 0),\n }\n return acc\n },\n {} as Record<string, { employee: number; employer: number }>,\n ) || {}\n\n const onCancel = async () => {\n setStatus(PayrollOverviewStatus.Cancelling)\n await baseSubmitHandler(data, async () => {\n try {\n const result = await cancelPayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setStatus(PayrollOverviewStatus.Cancelled)\n onEvent(componentEvents.RUN_PAYROLL_CANCELLED, result)\n } catch (error) {\n setStatus(PayrollOverviewStatus.Viewing)\n throw error\n }\n })\n }\n const onPayrollReceipt = () => {\n onEvent(componentEvents.RUN_PAYROLL_RECEIPT_GET, { payrollId })\n }\n\n const onPaystubDownload = async (employeeId: string) => {\n const tab = openPdfInNewTab({ loadingMessage: t('downloadLoadingMessage'), nonce })\n setDownloadingEmployeeIds(prev => {\n const next = new Set(prev)\n next.add(employeeId)\n return next\n })\n try {\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId, employeeId })\n if (!response.value?.responseStream) {\n tab.close()\n throw new Error(t('alerts.paystubPdfError'))\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n tab.navigate(pdfBlob)\n onEvent(componentEvents.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId })\n } catch (err) {\n tab.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingEmployeeIds(prev => {\n if (!prev.has(employeeId)) return prev\n const next = new Set(prev)\n next.delete(employeeId)\n return next\n })\n }\n }\n const onSubmit = async () => {\n await baseSubmitHandler(data, async () => {\n const result = await submitPayroll({\n request: {\n companyId,\n payrollId,\n requestBody: {\n submissionBlockers: Object.entries(selectedUnblockOptions)\n .filter(([blockerType]) =>\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES.includes(blockerType),\n )\n .map(([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n })),\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTING)\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTED, result)\n startPayrollPoll({\n baseline: {\n processed: payrollData.processed ?? false,\n status: payrollData.processingRequest?.status,\n },\n sawSubmitting: false,\n })\n setHasSubmittedInSession(true)\n })\n }\n\n const deadlineAlert: PayrollFlowAlert | undefined = (() => {\n if (hasSubmittedInSession || isPolling) return undefined\n if (\n payrollData.processed ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n )\n return undefined\n\n if (payrollData.checkDate && payrollData.payrollDeadline) {\n return {\n type: 'info' as const,\n title: t('alerts.directDepositDeadline', {\n payDate: dateFormatter.formatShortWithWeekday(payrollData.checkDate),\n ...dateFormatter.formatWithTime(payrollData.payrollDeadline),\n }),\n content: t('alerts.directDepositDeadlineText'),\n }\n }\n return undefined\n })()\n\n const combinedAlerts = [...internalAlerts, ...(deadlineAlert ? [deadlineAlert] : [])]\n\n return (\n <PayrollOverviewPresentation\n className={className}\n onEdit={onEdit}\n onSubmit={onSubmit}\n onCancel={onCancel}\n onPayrollReceipt={onPayrollReceipt}\n onPaystubDownload={onPaystubDownload}\n status={isPending || hasSubmittedInSession ? PayrollOverviewStatus.Submitting : status}\n isProcessed={\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n }\n canCancel={canCancelPayroll(payrollData) && !readOnly}\n canEdit={!readOnly}\n payrollData={payrollData}\n employeeFlsaStatusByUuid={employeeFlsaStatusByUuid}\n bankAccount={bankAccount}\n taxes={taxes}\n alerts={combinedAlerts}\n submissionBlockers={submissionBlockers}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={(blockerType, value) => {\n setSelectedUnblockOptions(prev => ({ ...prev, [blockerType]: value }))\n }}\n wireInConfirmationRequest={wireInConfirmationRequest}\n printChecksBanner={printChecksBanner}\n withReimbursements={withReimbursements}\n paymentSpeed={paymentSpeed}\n pagination={pagination}\n downloadingEmployeeIds={downloadingEmployeeIds}\n />\n )\n}\n"],"names":["findUnresolvedBlockersWithOptions","blockers","blocker","findWireInRequestUuid","creditBlockers","unresolvedCreditBlocker","option","PayrollOverview","props","jsx","BaseComponent","Root","companyId","payrollId","dictionary","onEvent","alerts","withReimbursements","ConfirmWireDetailsComponent","ConfirmWireDetails","readOnly","className","useComponentDictionary","useI18n","baseSubmitHandler","useBase","t","useTranslation","hasSubmittedInSession","setHasSubmittedInSession","useState","internalAlerts","setInternalAlerts","selectedUnblockOptions","setSelectedUnblockOptions","showWireDetailsConfirmation","setShowWireDetailsConfirmation","showBoundary","useErrorBoundary","formatCurrency","useNumberFormatter","dateFormatter","useDateFormatter","Button","UnorderedList","Text","useComponentContext","status","setStatus","PayrollOverviewStatus","currentPage","itemsPerPage","getPaginationProps","usePagination","gustoEmbedded","useGustoEmbeddedContext","payrollRequest","useMemo","data","isFetching","isError","error","refetchPayroll","usePayrollsGet","keepPreviousData","payrollData","submissionBlockers","wireInId","wireInRequestData","useWireInRequestsGet","wireInRequest","employeeUuids","employeeCompensation","uuid","employeesData","useEmployeesList","employeeFlsaStatusByUuid","acc","employee","onEdit","componentEvents","wireInConfirmationRequest","type","payrollWireEvents","printChecksBanner","PrintChecks","useEffect","checkDate","formattedCheckDate","emitProcessed","payroll","emitProcessingFailed","jsxs","Flex","renderErrorList","startPayrollPoll","isPolling","useSubmissionPoll","bankAccountData","useBankAccountsGetSuspense","bankAccount","paymentSpeed","useCompanyPaymentSpeed","submitPayroll","isPending","usePayrollsSubmitMutation","cancelPayroll","usePayrollsCancelMutation","nonce","useNonce","downloadingEmployeeIds","setDownloadingEmployeeIds","PayrollLoading","isNonRetryablePollError","pagination","taxes","tax","amount","onCancel","result","onPayrollReceipt","onPaystubDownload","employeeId","tab","openPdfInNewTab","prev","next","response","payrollsGetPayStub","pdfBlob","readableStreamToBlob","err","onSubmit","blockerType","PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES","selectedOption","deadlineAlert","PAYROLL_PROCESSING_STATUS","combinedAlerts","PayrollOverviewPresentation","canCancelPayroll","value"],"mappings":"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"}