@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
@@ -11,14 +11,14 @@ import { usePayrollsUpdateMutation as xe } from "@gusto/embedded-api/react-query
11
11
  import { UnprocessableEntityError as Le } from "@gusto/embedded-api/models/errors/unprocessableentityerror";
12
12
  import { createPayrollEditEmployeeSchema as je, reimbursementDraftSchema as Ne, PayrollEditEmployeeErrorCodes as He, PAYMENT_METHOD_VALUES as We, PAYMENT_METHOD_OPTIONS as Qe } from "./payrollEditEmployeeSchema.js";
13
13
  import { normalizeWorkweeks as Ye, collectOvertimeEarningNames as qe, hasExistingOvertimeHours as Ge, hasBreakdownsMatchingWorkweeks as ze, resolveEditableFixedCompensations as Je, derivePayrollEditEmployeeDefaults as J, buildPayrollUpdateEmployeeCompensation as Ke } from "./payrollEditEmployeeHelpers.js";
14
- import { createReimbursementDraftFields as Xe, createPayrollEditEmployeeFields as Ze, computeTimeOffRemaining as $e } from "./fields.js";
15
- import { withOptions as Ie } from "../../../../../partner-hook-utils/form/withOptions.js";
14
+ import { createReimbursementDraftFields as Ie, createPayrollEditEmployeeFields as Xe, computeTimeOffRemaining as Ze } from "./fields.js";
15
+ import { withOptions as $e } from "../../../../../partner-hook-utils/form/withOptions.js";
16
16
  import { derivePayrollCategory as et, isOffCyclePayroll as tt } from "../../../payrollTypes.js";
17
17
  import { PREPARE_QUERY_KEY as rt } from "../../../PayrollConfiguration/usePayrollConfigurationData.js";
18
18
  import { isOvertimeEligibleFlsaStatus as ot } from "../../../helpers.js";
19
19
  import { retryAsync as st } from "../../../../../helpers/retryAsync.js";
20
- import { useHookFormInternals as at } from "../../../../../partner-hook-utils/form/useHookFormInternals.js";
21
- import { createGetFormSubmissionValues as nt } from "../../../../../partner-hook-utils/form/getFormSubmissionValues.js";
20
+ import { useHookFormInternals as nt } from "../../../../../partner-hook-utils/form/useHookFormInternals.js";
21
+ import { createGetFormSubmissionValues as at } from "../../../../../partner-hook-utils/form/getFormSubmissionValues.js";
22
22
  import { composeErrorHandler as it } from "../../../../../partner-hook-utils/composeErrorHandler.js";
23
23
  import { useBaseSubmit as mt } from "../../../../Base/useBaseSubmit.js";
24
24
  import { SDKInternalError as ut } from "../../../../../types/sdkError.js";
@@ -28,13 +28,13 @@ function Lt({
28
28
  companyId: l,
29
29
  payrollId: h,
30
30
  withReimbursements: K = !0,
31
- validationMode: X = "onSubmit",
32
- shouldFocusError: Z = !0,
31
+ validationMode: I = "onSubmit",
32
+ shouldFocusError: X = !0,
33
33
  errorMessages: P
34
34
  }) {
35
- const { data: $ } = Te({ employeeId: u }), { data: I } = Ue({
35
+ const { data: Z } = Te({ employeeId: u }), { data: $ } = Ue({
36
36
  employeeId: u
37
- }), { data: M } = Be({ companyId: l }), ee = Ae(), { mutateAsync: T } = Ve(), { mutateAsync: te, isPending: re } = xe(), [a, U] = D(), [oe, B] = D(null), V = Oe(!1), A = E(async () => {
37
+ }), { data: M } = Be({ companyId: l }), ee = Ae(), { mutateAsync: T } = Ve(), { mutateAsync: te, isPending: re } = xe(), [n, U] = D(), [oe, B] = D(null), V = Oe(!1), A = E(async () => {
38
38
  B(null);
39
39
  try {
40
40
  const e = await st(
@@ -56,11 +56,11 @@ function Lt({
56
56
  V.current || (V.current = !0, A());
57
57
  }, [A]);
58
58
  const _ = _e(
59
- { companyId: l, payScheduleId: a?.payPeriod?.payScheduleUuid ?? "" },
60
- { enabled: !!a?.payPeriod?.payScheduleUuid }
61
- ), n = $.employee, s = a?.employeeCompensations?.at(0), S = et(a ?? {}), p = (I.employeeBankAccounts?.length ?? 0) > 0, i = o(
62
- () => a ? Ye(a.workweeks, a.payPeriod) : [],
63
- [a]
59
+ { companyId: l, payScheduleId: n?.payPeriod?.payScheduleUuid ?? "" },
60
+ { enabled: !!n?.payPeriod?.payScheduleUuid }
61
+ ), a = Z.employee, s = n?.employeeCompensations?.at(0), S = et(n ?? {}), p = ($.employeeBankAccounts?.length ?? 0) > 0, i = o(
62
+ () => n ? Ye(n.workweeks, n.payPeriod) : [],
63
+ [n]
64
64
  ), f = o(
65
65
  () => qe(M.earningTypeList),
66
66
  [M.earningTypeList]
@@ -68,26 +68,26 @@ function Lt({
68
68
  const e = s?.hourlyCompensations?.find(
69
69
  (m) => m.flsaStatus
70
70
  )?.flsaStatus;
71
- return e || n?.jobs?.find((m) => m.primary)?.compensations?.[0]?.flsaStatus;
72
- }, [s, n]), c = ot(k), [se, ae] = D(!1), d = se || Ge(s?.hourlyCompensations) || ze(s?.hourlyCompensations, i), x = o(() => n?.jobs?.find((e) => e.primary)?.uuid, [n]), y = o(
71
+ return e || a?.jobs?.find((m) => m.primary)?.compensations?.[0]?.flsaStatus;
72
+ }, [s, a]), c = ot(k), [se, ne] = D(!1), d = se || Ge(s?.hourlyCompensations) || ze(s?.hourlyCompensations, i), x = o(() => a?.jobs?.find((e) => e.primary)?.uuid, [a]), y = o(
73
73
  () => Je(
74
74
  s?.fixedCompensations,
75
- a?.fixedCompensationTypes,
75
+ n?.fixedCompensationTypes,
76
76
  x,
77
77
  k
78
78
  ),
79
- [s, a?.fixedCompensationTypes, x, k]
79
+ [s, n?.fixedCompensationTypes, x, k]
80
80
  ), L = o(() => {
81
81
  const e = /* @__PURE__ */ new Map();
82
- for (const t of n?.jobs ?? [])
82
+ for (const t of a?.jobs ?? [])
83
83
  t.uuid && t.title && e.set(t.uuid, t.title);
84
84
  return e;
85
- }, [n]), g = o(() => {
85
+ }, [a]), g = o(() => {
86
86
  const e = /* @__PURE__ */ new Map();
87
- for (const t of n?.eligiblePaidTimeOff ?? [])
87
+ for (const t of a?.eligiblePaidTimeOff ?? [])
88
88
  t.name && t.accrualBalance != null && e.set(t.name, t.accrualBalance);
89
89
  return e;
90
- }, [n]), j = o(() => je(), []), N = o(
90
+ }, [a]), j = o(() => je(), []), N = o(
91
91
  () => J(
92
92
  s,
93
93
  i,
@@ -109,14 +109,14 @@ function Lt({
109
109
  ), r = ke(
110
110
  {
111
111
  resolver: Me(j),
112
- mode: X,
113
- shouldFocusError: Z,
112
+ mode: I,
113
+ shouldFocusError: X,
114
114
  defaultValues: N,
115
115
  values: N,
116
116
  resetOptions: { keepDirtyValues: !0 }
117
117
  }
118
- ), H = Fe({ control: r.control, name: "timeOff" }), ne = !tt(S), R = K && ne, {
119
- fields: v,
118
+ ), H = Fe({ control: r.control, name: "timeOff" }), ae = !tt(S), v = K && ae, {
119
+ fields: R,
120
120
  append: W,
121
121
  remove: Q,
122
122
  update: Y
@@ -124,10 +124,10 @@ function Lt({
124
124
  control: r.control,
125
125
  name: "reimbursements"
126
126
  }), [ie, F] = D(!1), me = o(
127
- () => Xe(P),
127
+ () => Ie(P),
128
128
  [P]
129
129
  ), ue = o(
130
- () => v.map((e, t) => ({
130
+ () => R.map((e, t) => ({
131
131
  key: e.id,
132
132
  index: t,
133
133
  uuid: e.uuid ?? void 0,
@@ -135,7 +135,7 @@ function Lt({
135
135
  amount: e.amount,
136
136
  recurring: e.recurring ?? !1
137
137
  })).filter((e) => parseFloat(e.amount || "0") !== 0),
138
- [v]
138
+ [R]
139
139
  ), le = E(() => {
140
140
  F(!0);
141
141
  }, []), ce = E(() => {
@@ -156,12 +156,12 @@ function Lt({
156
156
  }), r.setValue("reimbursementDraft", { description: "", amount: "" }), r.clearErrors("reimbursementDraft"), F(!1);
157
157
  }, [W, r]), de = E(
158
158
  (e) => {
159
- const t = v[e];
159
+ const t = R[e];
160
160
  t && (t.uuid ? Y(e, { ...t, amount: "0" }) : Q(e));
161
161
  },
162
- [v, Q, Y]
162
+ [R, Q, Y]
163
163
  ), C = o(
164
- () => Ze({
164
+ () => Xe({
165
165
  employeeCompensation: s,
166
166
  fixedCompensations: y,
167
167
  workweeks: i,
@@ -190,14 +190,14 @@ function Lt({
190
190
  ), fe = o(
191
191
  () => C.timeOff.map((e) => ({
192
192
  ...e,
193
- remaining: $e(
193
+ remaining: Ze(
194
194
  g.get(e.name),
195
195
  H[e.name]
196
196
  )
197
197
  })),
198
198
  [C.timeOff, g, H]
199
199
  ), ye = () => {
200
- ae(!0);
200
+ ne(!0);
201
201
  const e = J(
202
202
  s,
203
203
  i,
@@ -207,9 +207,9 @@ function Lt({
207
207
  !0,
208
208
  y
209
209
  ), t = i[0]?.startDate ?? "", m = r.getValues(), w = (O, G) => {
210
- for (const [b, Re] of Object.entries(O))
211
- for (const [ve, we] of Object.entries(Re)) {
212
- const z = G?.[b]?.[ve]?.[t];
210
+ for (const [b, ve] of Object.entries(O))
211
+ for (const [Re, we] of Object.entries(ve)) {
212
+ const z = G?.[b]?.[Re]?.[t];
213
213
  z !== void 0 && (we[t] = z);
214
214
  }
215
215
  return O;
@@ -219,13 +219,16 @@ function Lt({
219
219
  w(e.hours, m.hours),
220
220
  { shouldDirty: !0 }
221
221
  ), r.setValue(
222
- "additionalEarnings",
223
- w(e.additionalEarnings, m.additionalEarnings),
222
+ "overtimeIncludedEarnings",
223
+ w(
224
+ e.overtimeIncludedEarnings,
225
+ m.overtimeIncludedEarnings
226
+ ),
224
227
  { shouldDirty: !0 }
225
228
  );
226
229
  }, be = o(
227
230
  () => ({
228
- paymentMethod: Ie(
231
+ paymentMethod: $e(
229
232
  { name: "paymentMethod" },
230
233
  Qe,
231
234
  We
@@ -242,7 +245,7 @@ function Lt({
242
245
  }, _], {
243
246
  submitError: he,
244
247
  setSubmitError: Pe
245
- }), Se = at(r), ge = async () => {
248
+ }), Se = nt(r), ge = async () => {
246
249
  let e;
247
250
  return await new Promise((t) => {
248
251
  r.handleSubmit(
@@ -275,25 +278,25 @@ function Lt({
275
278
  )();
276
279
  }), e;
277
280
  };
278
- return !a || !n ? { isLoading: !0, errorHandling: q } : {
281
+ return !n || !a ? { isLoading: !0, errorHandling: q } : {
279
282
  isLoading: !1,
280
283
  data: {
281
- employee: n,
284
+ employee: a,
282
285
  employeeCompensation: s,
283
- preparedPayroll: a,
286
+ preparedPayroll: n,
284
287
  paySchedule: _.data?.payScheduleShow,
285
288
  isMultipleWorkweeks: i.length > 1,
286
289
  workweeks: i,
287
290
  isOvertimeEligible: c,
288
291
  withOvertime: d,
289
292
  hasDirectDepositSetup: p,
290
- ...R ? { reimbursements: ue } : {}
293
+ ...v ? { reimbursements: ue } : {}
291
294
  },
292
295
  status: { isPending: re, mode: "update" },
293
296
  actions: {
294
297
  onSubmit: ge,
295
298
  addOvertime: ye,
296
- ...R ? {
299
+ ...v ? {
297
300
  beginAddReimbursement: le,
298
301
  saveReimbursement: pe,
299
302
  cancelReimbursement: ce,
@@ -305,12 +308,12 @@ function Lt({
305
308
  Fields: {
306
309
  ...C,
307
310
  timeOff: fe,
308
- reimbursementDraft: R ? me : void 0
311
+ reimbursementDraft: v ? me : void 0
309
312
  },
310
313
  fieldsMetadata: be,
311
314
  hookFormInternals: Se,
312
- getFormSubmissionValues: nt(r, j),
313
- ...R ? { reimbursementDraft: { isAdding: ie } } : {}
315
+ getFormSubmissionValues: at(r, j),
316
+ ...v ? { reimbursementDraft: { isAdding: ie } } : {}
314
317
  }
315
318
  };
316
319
  }
@@ -1 +1 @@
1
- {"version":3,"file":"usePayrollEditEmployeeForm.js","sources":["../../../../../../src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useFieldArray, useForm, useWatch } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { useEmployeePaymentMethodsGetBankAccountsSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEarningTypesListSuspense } from '@gusto/embedded-api/react-query/earningTypesList'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport {\n createPayrollEditEmployeeSchema,\n PAYMENT_METHOD_OPTIONS,\n PAYMENT_METHOD_VALUES,\n PayrollEditEmployeeErrorCodes,\n reimbursementDraftSchema,\n type PayrollEditEmployeeFormData,\n type PayrollEditEmployeeFormOutputs,\n} from './payrollEditEmployeeSchema'\nimport {\n buildPayrollUpdateEmployeeCompensation,\n collectOvertimeEarningNames,\n derivePayrollEditEmployeeDefaults,\n hasBreakdownsMatchingWorkweeks,\n hasExistingOvertimeHours,\n normalizeWorkweeks,\n resolveEditableFixedCompensations,\n type NormalizedWorkweek,\n} from './payrollEditEmployeeHelpers'\nimport {\n computeTimeOffRemaining,\n createPayrollEditEmployeeFields,\n createReimbursementDraftFields,\n type PayrollEditEmployeeErrorMessages,\n type PayrollEditEmployeeFields,\n type ReimbursementDraftFields,\n type ReimbursementRow,\n} from './fields'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { derivePayrollCategory, isOffCyclePayroll } from '@/components/Payroll/payrollTypes'\nimport { PREPARE_QUERY_KEY } from '@/components/Payroll/PayrollConfiguration/usePayrollConfigurationData'\nimport { isOvertimeEligibleFlsaStatus } from '@/components/Payroll/helpers'\nimport { retryAsync } from '@/helpers/retryAsync'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport {\n composeErrorHandler,\n type QueryWithRefetch,\n} from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldMetadataWithOptions,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean =>\n error instanceof UnprocessableEntityError &&\n error.errors.some(issue => issue.category === 'invalid_operation')\n\n/**\n * Options accepted by {@link usePayrollEditEmployeeForm}.\n *\n * @public\n */\nexport interface UsePayrollEditEmployeeFormProps {\n /** The associated employee identifier. */\n employeeId: string\n /** The associated company identifier. */\n companyId: string\n /** The associated payroll identifier. */\n payrollId: string\n /**\n * Whether to expose reimbursement controls (`form.Fields.reimbursements`,\n * `actions.addReimbursement`/`removeReimbursement`, `form.reimbursements`).\n * Defaults to `true`. Controls are omitted for off-cycle payrolls regardless,\n * since those write reimbursements via the legacy fixed-compensation path.\n */\n withReimbursements?: boolean\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Defaults to `true`. Set to `false` when composing with other forms. */\n shouldFocusError?: boolean\n /**\n * Display copy for each validation error code, baked into every bound field so\n * it resolves and renders its own message. Supply it once, keyed by\n * {@link PayrollEditEmployeeErrorCodes}; a missing code falls back to the raw\n * code. Omit it to render raw codes.\n */\n errorMessages?: PayrollEditEmployeeErrorMessages\n}\n\n/**\n * Field metadata for {@link usePayrollEditEmployeeForm}, keyed by full form path.\n *\n * @remarks\n * Keys are minted from the prepared payroll's compensations at runtime\n * (`hours.${jobUuid}.${name}.${workweekStart}` and similar), so neither the key\n * set nor which entries carry options is known ahead of time.\n *\n * @public\n */\nexport type PayrollEditEmployeeFieldsMetadata = Record<\n string,\n FieldMetadata | FieldMetadataWithOptions\n>\n\n/**\n * Ready-state return value of {@link usePayrollEditEmployeeForm} — the\n * `isLoading: false` branch of {@link UsePayrollEditEmployeeFormResult}.\n *\n * @public\n */\nexport interface UsePayrollEditEmployeeFormReady extends BaseFormHookReady<\n PayrollEditEmployeeFieldsMetadata,\n PayrollEditEmployeeFormData,\n PayrollEditEmployeeFields\n> {\n /** Loaded entities backing the editor. */\n data: {\n /** The employee being edited. */\n employee: Employee\n /** The employee's prepared compensation for this payroll, if present. */\n employeeCompensation?: PayrollEmployeeCompensationsType\n /** The prepared payroll (server-calculated totals and workweeks). */\n preparedPayroll: PayrollPrepared\n /** The pay schedule for the payroll, if loaded. */\n paySchedule?: PayScheduleShow\n /** Whether the pay period spans more than one workweek. Raw workweeks are on `preparedPayroll.workweeks`. */\n isMultipleWorkweeks: boolean\n /**\n * The pay period's normalized workweeks (`{ startDate, endDate }` strings),\n * in order — one entry, spanning the pay period, when it's a single\n * workweek. The per-workweek split fields are keyed by start date only, so\n * this is the source for each column's date range.\n */\n workweeks: NormalizedWorkweek[]\n /** Whether the employee is overtime-eligible (nonexempt family). Drives whether hours split by workweek. */\n isOvertimeEligible: boolean\n /**\n * The single, form-wide overtime-mode flag. `false` renders one flat\n * column per line with Overtime/Double-overtime rows hidden; `true`\n * splits hours and overtime-affecting earnings into per-workweek columns\n * (for overtime-eligible employees on a multi-workweek payroll) and\n * un-hides those rows. Starts `true` when the employee already has real\n * overtime hours or matching per-workweek breakdowns (see\n * `hasExistingOvertimeHours`, `hasBreakdownsMatchingWorkweeks`), or after\n * `actions.addOvertime` is called; otherwise starts `false`.\n */\n withOvertime: boolean\n /** Whether the employee has a direct-deposit bank account set up. */\n hasDirectDepositSetup: boolean\n /**\n * Committed reimbursement rows to render in a table, present only when\n * reimbursement controls are exposed. Seeded from the employee's existing\n * reimbursements and appended to as drafts are saved. Remove a row via\n * `actions.removeReimbursement(row.index)`.\n */\n reimbursements?: ReimbursementRow[]\n }\n /** Submission status. `mode` is always `'update'` since the payroll already exists. */\n status: { isPending: boolean; mode: 'update' }\n /** Form actions. */\n actions: {\n /** Validates and submits the form, resolving to the updated prepared payroll on success or `undefined` when validation blocked the submit. */\n onSubmit: () => Promise<HookSubmitResult<PayrollPrepared> | undefined>\n /**\n * Sets `data.withOvertime` to `true`, switching the whole form to the\n * workweek split: un-hides Overtime/Double-overtime rows and splits hours\n * and overtime-affecting earnings into per-workweek columns. Populates\n * only the first workweek cell of each line with that line's current\n * total, leaving every other cell blank — no auto distribution — so the\n * per-row validation then requires the user to fill in the rest. One\n * affordance for the whole employee, not one per job. One-directional —\n * there's no corresponding \"remove overtime\" action.\n */\n addOvertime: () => void\n /** Reveals the draft reimbursement row. Present only when reimbursement controls are exposed. */\n beginAddReimbursement?: () => void\n /** Validates the draft and commits it to the reimbursement list, or flags the draft amount if invalid. Present only when reimbursement controls are exposed. */\n saveReimbursement?: () => void\n /** Discards the draft reimbursement row. Present only when reimbursement controls are exposed. */\n cancelReimbursement?: () => void\n /** Removes the committed reimbursement row at `index` (zeroing existing rows so the update clears them). Present only when reimbursement controls are exposed. */\n removeReimbursement?: (index: number) => void\n }\n /** Form internals plus the reimbursement draft state. */\n form: BaseFormHookReady<\n PayrollEditEmployeeFieldsMetadata,\n PayrollEditEmployeeFormData,\n PayrollEditEmployeeFields\n >['form'] & {\n /** Draft reimbursement state, present only when reimbursement controls are exposed. */\n reimbursementDraft?: { isAdding: boolean }\n }\n}\n\n/**\n * Discriminated union returned by {@link usePayrollEditEmployeeForm}. Loading\n * branch carries only `errorHandling`; ready branch carries form data, fields,\n * status, and actions.\n *\n * @public\n */\nexport type UsePayrollEditEmployeeFormResult = HookLoadingResult | UsePayrollEditEmployeeFormReady\n\n/**\n * Headless form hook for editing a single employee's compensation within a\n * payroll run, built for regular-rate-of-pay (RRoP) support.\n *\n * @remarks\n * Prepares the payroll for the target employee, then exposes a workweek-keyed\n * form whose submit builds a `PayrollUpdate`. Single-workweek pay periods send\n * totals without `breakdowns`; multi-workweek pay periods send `breakdowns` per\n * line once that line's every workweek cell is filled. Overtime-eligible\n * (nonexempt) employees split hours and overtime-affecting earnings per\n * workweek while the single `data.withOvertime` flag is on (see\n * `actions.addOvertime`); everyone else, and every line while `withOvertime` is\n * off, edits flat totals.\n *\n * @param props - Hook options.\n * @returns A loading result while data is fetching, or a ready result with data,\n * fields, status, actions, and error handling.\n * @public\n */\nexport function usePayrollEditEmployeeForm({\n employeeId,\n companyId,\n payrollId,\n withReimbursements = true,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n errorMessages,\n}: UsePayrollEditEmployeeFormProps): UsePayrollEditEmployeeFormResult {\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const { data: bankAccountsList } = useEmployeePaymentMethodsGetBankAccountsSuspense({\n employeeId,\n })\n const { data: earningTypesData } = useEarningTypesListSuspense({ companyId })\n\n const queryClient = useQueryClient()\n const { mutateAsync: preparePayroll } = usePayrollsPrepareMutation()\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const [prepareError, setPrepareError] = useState<Error | null>(null)\n const hasFiredRef = useRef(false)\n\n const executePrepare = useCallback(async () => {\n setPrepareError(null)\n try {\n const result = await retryAsync(\n () =>\n preparePayroll({\n request: { companyId, payrollId, requestBody: { employeeUuids: [employeeId] } },\n }),\n {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n },\n )\n setPreparedPayroll(result.payrollPrepared)\n } catch (error) {\n setPrepareError(error as Error)\n }\n }, [companyId, payrollId, employeeId, preparePayroll])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void executePrepare()\n }, [executePrepare])\n\n const payScheduleQuery = usePaySchedulesGet(\n { companyId, payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid ?? '' },\n { enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid },\n )\n\n const employee = employeeData.employee\n const employeeCompensation = preparedPayroll?.employeeCompensations?.at(0)\n const payrollCategory = derivePayrollCategory(preparedPayroll ?? {})\n const hasDirectDepositSetup = (bankAccountsList.employeeBankAccounts?.length ?? 0) > 0\n\n // Only normalize once the payroll is prepared: normalizeWorkweeks throws on a\n // payroll with neither workweeks nor a pay period, and before prepare resolves\n // both are legitimately absent (still loading, not malformed).\n const workweeks = useMemo(\n () =>\n preparedPayroll\n ? normalizeWorkweeks(preparedPayroll.workweeks, preparedPayroll.payPeriod)\n : [],\n [preparedPayroll],\n )\n\n const overtimeEarningNames = useMemo(\n () => collectOvertimeEarningNames(earningTypesData.earningTypeList),\n [earningTypesData.earningTypeList],\n )\n\n // Source of truth for the employee's FLSA status: prefer the prepared\n // compensation's hourly lines (the same data the fields are built from, so the\n // gate and the rendered lines always agree), falling back to the employee's\n // primary-job compensation. Unknown status is treated as not overtime-eligible.\n const flsaStatus = useMemo(() => {\n const fromCompensation = employeeCompensation?.hourlyCompensations?.find(\n compensation => compensation.flsaStatus,\n )?.flsaStatus\n if (fromCompensation) return fromCompensation\n const primaryJob = employee?.jobs?.find(job => job.primary)\n return primaryJob?.compensations?.[0]?.flsaStatus\n }, [employeeCompensation, employee])\n const isOvertimeEligible = isOvertimeEligibleFlsaStatus(flsaStatus)\n\n // Starts on when the employee already has real overtime hours, or already has\n // per-workweek breakdowns matching the current pay period's workweeks (nothing\n // to hide either way), otherwise starts off until the user opts in via\n // `actions.addOvertime`. One-directional: there's no \"remove overtime\" action.\n const [withOvertimeSetByUser, setWithOvertimeSetByUser] = useState(false)\n const withOvertime =\n withOvertimeSetByUser ||\n hasExistingOvertimeHours(employeeCompensation?.hourlyCompensations) ||\n hasBreakdownsMatchingWorkweeks(employeeCompensation?.hourlyCompensations, workweeks)\n\n const primaryJobUuid = useMemo(() => employee?.jobs?.find(job => job.primary)?.uuid, [employee])\n\n // Seed a blank input for every payroll fixed-compensation type (like the stable\n // editor), then let the field/defaults builders split them into additional\n // earnings vs `other` by overtime inclusion. Without this, an employee whose\n // prepared payroll carries no fixed compensations shows no earnings inputs.\n const resolvedFixedCompensations = useMemo(\n () =>\n resolveEditableFixedCompensations(\n employeeCompensation?.fixedCompensations,\n preparedPayroll?.fixedCompensationTypes,\n primaryJobUuid,\n flsaStatus,\n ),\n [employeeCompensation, preparedPayroll?.fixedCompensationTypes, primaryJobUuid, flsaStatus],\n )\n\n const jobTitlesByUuid = useMemo(() => {\n const titles = new Map<string, string>()\n for (const job of employee?.jobs ?? []) {\n if (job.uuid && job.title) titles.set(job.uuid, job.title)\n }\n return titles\n }, [employee])\n\n // Accrual balance per time-off policy, owned by the hook (rather than looked\n // up in the consumer) so the time-off field can render its own live remaining\n // balance.\n const timeOffAccrualByName = useMemo(() => {\n const balances = new Map<string, string>()\n for (const policy of employee?.eligiblePaidTimeOff ?? []) {\n if (policy.name && policy.accrualBalance != null) {\n balances.set(policy.name, policy.accrualBalance)\n }\n }\n return balances\n }, [employee])\n\n const schema = useMemo(() => createPayrollEditEmployeeSchema(), [])\n\n const resolvedDefaults = useMemo(\n () =>\n derivePayrollEditEmployeeDefaults(\n employeeCompensation,\n workweeks,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n withOvertime,\n resolvedFixedCompensations,\n ),\n [\n employeeCompensation,\n workweeks,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n withOvertime,\n resolvedFixedCompensations,\n ],\n )\n\n const formMethods = useForm<PayrollEditEmployeeFormData, unknown, PayrollEditEmployeeFormOutputs>(\n {\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n },\n )\n\n // Watched so each `Fields.timeOff[i].remaining` stays live as the user edits\n // hours. The whole form re-renders on keystroke regardless of who owns this\n // watch, so there's no cost to owning it here rather than in a per-row\n // subcomponent.\n const watchedTimeOff = useWatch({ control: formMethods.control, name: 'timeOff' })\n\n // Off-cycle payrolls write reimbursements via the legacy fixed-compensation path\n // (the itemized array is rejected server-side), so itemized reimbursement controls\n // are exposed only for regular payrolls and only when the partner opts in.\n const usesItemizedReimbursements = !isOffCyclePayroll(payrollCategory)\n const showReimbursements = withReimbursements && usesItemizedReimbursements\n\n const {\n fields: reimbursementArrayFields,\n append: appendReimbursement,\n remove: removeReimbursementRow,\n update: updateReimbursementRow,\n } = useFieldArray({\n control: formMethods.control,\n name: 'reimbursements',\n })\n\n const [isAddingReimbursement, setIsAddingReimbursement] = useState(false)\n\n const reimbursementDraftFields = useMemo<ReimbursementDraftFields>(\n () => createReimbursementDraftFields(errorMessages),\n [errorMessages],\n )\n\n // Committed rows for the consumer's table. A removed existing row (one with a\n // uuid) is zeroed rather than dropped so the update still clears it server-side;\n // those zero-amount rows are filtered out of the visible list but remain in the\n // form array for submit.\n const reimbursementRows = useMemo<ReimbursementRow[]>(\n () =>\n reimbursementArrayFields\n .map((field, index) => ({\n key: field.id,\n index,\n uuid: field.uuid ?? undefined,\n description: field.description,\n amount: field.amount,\n recurring: field.recurring ?? false,\n }))\n .filter(row => parseFloat(row.amount || '0') !== 0),\n [reimbursementArrayFields],\n )\n\n const beginAddReimbursement = useCallback(() => {\n setIsAddingReimbursement(true)\n }, [])\n\n const cancelReimbursement = useCallback(() => {\n formMethods.setValue('reimbursementDraft', { description: '', amount: '' })\n formMethods.clearErrors('reimbursementDraft')\n setIsAddingReimbursement(false)\n }, [formMethods])\n\n const saveReimbursement = useCallback(() => {\n const draft = formMethods.getValues('reimbursementDraft')\n const result = reimbursementDraftSchema.safeParse(draft)\n if (!result.success) {\n // The error code is a fallback; the field renders the consumer-supplied\n // `errorMessage` prop when present (see useField), so the copy is theirs to set.\n formMethods.setError('reimbursementDraft.amount', {\n message: PayrollEditEmployeeErrorCodes.REIMBURSEMENT_AMOUNT,\n })\n return\n }\n appendReimbursement({\n uuid: null,\n description: result.data.description.trim(),\n amount: parseFloat(result.data.amount).toFixed(2),\n recurring: false,\n })\n formMethods.setValue('reimbursementDraft', { description: '', amount: '' })\n formMethods.clearErrors('reimbursementDraft')\n setIsAddingReimbursement(false)\n }, [appendReimbursement, formMethods])\n\n const removeReimbursement = useCallback(\n (index: number) => {\n const field = reimbursementArrayFields[index]\n if (!field) return\n if (field.uuid) {\n updateReimbursementRow(index, { ...field, amount: '0' })\n } else {\n removeReimbursementRow(index)\n }\n },\n [reimbursementArrayFields, removeReimbursementRow, updateReimbursementRow],\n )\n\n const fields = useMemo(\n () =>\n createPayrollEditEmployeeFields({\n employeeCompensation,\n fixedCompensations: resolvedFixedCompensations,\n workweeks,\n payrollCategory,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n withOvertime,\n jobTitlesByUuid,\n timeOffAccrualByName,\n errorMessages,\n }),\n [\n employeeCompensation,\n resolvedFixedCompensations,\n workweeks,\n payrollCategory,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n withOvertime,\n jobTitlesByUuid,\n timeOffAccrualByName,\n errorMessages,\n ],\n )\n\n // Overlay the live remaining balance onto each time-off entry every render, so\n // it tracks the watched entered values without rebuilding (and remounting) the\n // bound field components the `fields` memo owns.\n const timeOffFields = useMemo(\n () =>\n fields.timeOff.map(entry => ({\n ...entry,\n remaining: computeTimeOffRemaining(\n timeOffAccrualByName.get(entry.name),\n watchedTimeOff[entry.name],\n ),\n })),\n [fields.timeOff, timeOffAccrualByName, watchedTimeOff],\n )\n\n // Re-derives with `withOvertime` forced `true` and pushes the result straight\n // into the form: every line's first workweek cell gets that line's current\n // total, every other cell is left blank (never auto-distributed — see\n // `derivePayrollEditEmployeeDefaults`/`buildWeekMap`). The per-row validation\n // then requires the user to fill in the rest before they can submit.\n // `setValue` (not `resetField`) is used so this overwrites even a value the\n // user already typed into the collapsed input. Plain function (not memoized):\n // it only runs on a user click, and its inputs are recomputed each render, so\n // a `useCallback` here would never actually hold a stable reference.\n const addOvertime = () => {\n setWithOvertimeSetByUser(true)\n const revealedDefaults = derivePayrollEditEmployeeDefaults(\n employeeCompensation,\n workweeks,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n true,\n resolvedFixedCompensations,\n )\n // Keep the user's edited collapsed value on the first workweek cell rather\n // than the seeded API total.\n const firstWeekStart = workweeks[0]?.startDate ?? ''\n const currentValues = formMethods.getValues()\n const overlayLiveFirstWeek = (\n revealed: PayrollEditEmployeeFormData['hours'],\n live: PayrollEditEmployeeFormData['hours'] | undefined,\n ) => {\n for (const [jobUuid, names] of Object.entries(revealed)) {\n for (const [name, weekMap] of Object.entries(names)) {\n const liveValue = live?.[jobUuid]?.[name]?.[firstWeekStart]\n if (liveValue !== undefined) weekMap[firstWeekStart] = liveValue\n }\n }\n return revealed\n }\n // `shouldDirty` so the form's `values`-prop reset (triggered by flipping\n // `withOvertimeSetByUser`) keeps these via `keepDirtyValues`.\n formMethods.setValue(\n 'hours',\n overlayLiveFirstWeek(revealedDefaults.hours, currentValues.hours),\n { shouldDirty: true },\n )\n formMethods.setValue(\n 'additionalEarnings',\n overlayLiveFirstWeek(revealedDefaults.additionalEarnings, currentValues.additionalEarnings),\n { shouldDirty: true },\n )\n }\n const fieldsMetadata = useMemo<PayrollEditEmployeeFieldsMetadata>(\n () => ({\n paymentMethod: withOptions(\n { name: 'paymentMethod' },\n PAYMENT_METHOD_OPTIONS,\n PAYMENT_METHOD_VALUES,\n ),\n }),\n [],\n )\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('PayrollEditEmployeeForm')\n\n const prepareQuerySource: QueryWithRefetch = {\n error: prepareError,\n refetch: (() => executePrepare()) as unknown as QueryWithRefetch['refetch'],\n }\n\n const errorHandling = composeErrorHandler([prepareQuerySource, payScheduleQuery], {\n submitError,\n setSubmitError,\n })\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const onSubmit = async (): Promise<HookSubmitResult<PayrollPrepared> | undefined> => {\n let submitResult: HookSubmitResult<PayrollPrepared> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async data => {\n await baseSubmitHandler(data, async payload => {\n const compensation = buildPayrollUpdateEmployeeCompensation(\n payload,\n employeeCompensation,\n workweeks,\n payrollCategory,\n isOvertimeEligible,\n withOvertime,\n )\n\n const response = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: { employeeCompensations: [compensation] },\n },\n })\n\n const updated = response.payrollPrepared\n if (!updated) {\n throw new SDKInternalError('Payroll update did not return a prepared payroll')\n }\n\n setPreparedPayroll(updated)\n\n // The payroll configuration surface caches its prepared payroll under a hand-written\n // key, which the global SDK auto-invalidation (namespaced to @gusto/embedded-api\n // queries only) does not touch. Invalidate it explicitly so configuration reflects\n // this edit without a manual refresh.\n await queryClient.invalidateQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n\n submitResult = { mode: 'update', data: updated }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n if (!preparedPayroll || !employee) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n employee,\n employeeCompensation,\n preparedPayroll,\n paySchedule: payScheduleQuery.data?.payScheduleShow,\n isMultipleWorkweeks: workweeks.length > 1,\n workweeks,\n isOvertimeEligible,\n withOvertime,\n hasDirectDepositSetup,\n ...(showReimbursements ? { reimbursements: reimbursementRows } : {}),\n },\n status: { isPending, mode: 'update' as const },\n actions: {\n onSubmit,\n addOvertime,\n ...(showReimbursements\n ? {\n beginAddReimbursement,\n saveReimbursement,\n cancelReimbursement,\n removeReimbursement,\n }\n : {}),\n },\n errorHandling,\n form: {\n Fields: {\n ...fields,\n timeOff: timeOffFields,\n reimbursementDraft: showReimbursements ? reimbursementDraftFields : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n ...(showReimbursements ? { reimbursementDraft: { isAdding: isAddingReimbursement } } : {}),\n },\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","issue","usePayrollEditEmployeeForm","employeeId","companyId","payrollId","withReimbursements","validationMode","shouldFocusError","errorMessages","employeeData","useEmployeesGetSuspense","bankAccountsList","useEmployeePaymentMethodsGetBankAccountsSuspense","earningTypesData","useEarningTypesListSuspense","queryClient","useQueryClient","preparePayroll","usePayrollsPrepareMutation","updatePayroll","isPending","usePayrollsUpdateMutation","preparedPayroll","setPreparedPayroll","useState","prepareError","setPrepareError","hasFiredRef","useRef","executePrepare","useCallback","result","retryAsync","useEffect","payScheduleQuery","usePaySchedulesGet","employee","employeeCompensation","payrollCategory","derivePayrollCategory","hasDirectDepositSetup","workweeks","useMemo","normalizeWorkweeks","overtimeEarningNames","collectOvertimeEarningNames","flsaStatus","fromCompensation","compensation","job","isOvertimeEligible","isOvertimeEligibleFlsaStatus","withOvertimeSetByUser","setWithOvertimeSetByUser","withOvertime","hasExistingOvertimeHours","hasBreakdownsMatchingWorkweeks","primaryJobUuid","resolvedFixedCompensations","resolveEditableFixedCompensations","jobTitlesByUuid","titles","timeOffAccrualByName","balances","policy","schema","createPayrollEditEmployeeSchema","resolvedDefaults","derivePayrollEditEmployeeDefaults","formMethods","useForm","zodResolver","watchedTimeOff","useWatch","usesItemizedReimbursements","isOffCyclePayroll","showReimbursements","reimbursementArrayFields","appendReimbursement","removeReimbursementRow","updateReimbursementRow","useFieldArray","isAddingReimbursement","setIsAddingReimbursement","reimbursementDraftFields","createReimbursementDraftFields","reimbursementRows","field","index","row","beginAddReimbursement","cancelReimbursement","saveReimbursement","draft","reimbursementDraftSchema","PayrollEditEmployeeErrorCodes","removeReimbursement","fields","createPayrollEditEmployeeFields","timeOffFields","entry","computeTimeOffRemaining","addOvertime","revealedDefaults","firstWeekStart","currentValues","overlayLiveFirstWeek","revealed","live","jobUuid","names","name","weekMap","liveValue","fieldsMetadata","withOptions","PAYMENT_METHOD_OPTIONS","PAYMENT_METHOD_VALUES","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","hookFormInternals","useHookFormInternals","onSubmit","submitResult","resolve","data","payload","buildPayrollUpdateEmployeeCompensation","updated","SDKInternalError","PREPARE_QUERY_KEY","createGetFormSubmissionValues"],"mappings":"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"}
1
+ {"version":3,"file":"usePayrollEditEmployeeForm.js","sources":["../../../../../../src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useFieldArray, useForm, useWatch } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { useEmployeePaymentMethodsGetBankAccountsSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEarningTypesListSuspense } from '@gusto/embedded-api/react-query/earningTypesList'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport {\n createPayrollEditEmployeeSchema,\n PAYMENT_METHOD_OPTIONS,\n PAYMENT_METHOD_VALUES,\n PayrollEditEmployeeErrorCodes,\n reimbursementDraftSchema,\n type PayrollEditEmployeeFormData,\n type PayrollEditEmployeeFormOutputs,\n} from './payrollEditEmployeeSchema'\nimport {\n buildPayrollUpdateEmployeeCompensation,\n collectOvertimeEarningNames,\n derivePayrollEditEmployeeDefaults,\n hasBreakdownsMatchingWorkweeks,\n hasExistingOvertimeHours,\n normalizeWorkweeks,\n resolveEditableFixedCompensations,\n type NormalizedWorkweek,\n} from './payrollEditEmployeeHelpers'\nimport {\n computeTimeOffRemaining,\n createPayrollEditEmployeeFields,\n createReimbursementDraftFields,\n type PayrollEditEmployeeErrorMessages,\n type PayrollEditEmployeeFields,\n type ReimbursementDraftFields,\n type ReimbursementRow,\n} from './fields'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { derivePayrollCategory, isOffCyclePayroll } from '@/components/Payroll/payrollTypes'\nimport { PREPARE_QUERY_KEY } from '@/components/Payroll/PayrollConfiguration/usePayrollConfigurationData'\nimport { isOvertimeEligibleFlsaStatus } from '@/components/Payroll/helpers'\nimport { retryAsync } from '@/helpers/retryAsync'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport {\n composeErrorHandler,\n type QueryWithRefetch,\n} from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldMetadataWithOptions,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean =>\n error instanceof UnprocessableEntityError &&\n error.errors.some(issue => issue.category === 'invalid_operation')\n\n/**\n * Options accepted by {@link usePayrollEditEmployeeForm}.\n *\n * @public\n */\nexport interface UsePayrollEditEmployeeFormProps {\n /** The associated employee identifier. */\n employeeId: string\n /** The associated company identifier. */\n companyId: string\n /** The associated payroll identifier. */\n payrollId: string\n /**\n * Whether to expose reimbursement controls (`form.Fields.reimbursements`,\n * `actions.addReimbursement`/`removeReimbursement`, `form.reimbursements`).\n * Defaults to `true`. Controls are omitted for off-cycle payrolls regardless,\n * since those write reimbursements via the legacy fixed-compensation path.\n */\n withReimbursements?: boolean\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Defaults to `true`. Set to `false` when composing with other forms. */\n shouldFocusError?: boolean\n /**\n * Display copy for each validation error code, baked into every bound field so\n * it resolves and renders its own message. Supply it once, keyed by\n * {@link PayrollEditEmployeeErrorCodes}; a missing code falls back to the raw\n * code. Omit it to render raw codes.\n */\n errorMessages?: PayrollEditEmployeeErrorMessages\n}\n\n/**\n * Field metadata for {@link usePayrollEditEmployeeForm}, keyed by full form path.\n *\n * @remarks\n * Keys are minted from the prepared payroll's compensations at runtime\n * (`hours.${jobUuid}.${name}.${workweekStart}` and similar), so neither the key\n * set nor which entries carry options is known ahead of time.\n *\n * @public\n */\nexport type PayrollEditEmployeeFieldsMetadata = Record<\n string,\n FieldMetadata | FieldMetadataWithOptions\n>\n\n/**\n * Ready-state return value of {@link usePayrollEditEmployeeForm} — the\n * `isLoading: false` branch of {@link UsePayrollEditEmployeeFormResult}.\n *\n * @public\n */\nexport interface UsePayrollEditEmployeeFormReady extends BaseFormHookReady<\n PayrollEditEmployeeFieldsMetadata,\n PayrollEditEmployeeFormData,\n PayrollEditEmployeeFields\n> {\n /** Loaded entities backing the editor. */\n data: {\n /** The employee being edited. */\n employee: Employee\n /** The employee's prepared compensation for this payroll, if present. */\n employeeCompensation?: PayrollEmployeeCompensationsType\n /** The prepared payroll (server-calculated totals and workweeks). */\n preparedPayroll: PayrollPrepared\n /** The pay schedule for the payroll, if loaded. */\n paySchedule?: PayScheduleShow\n /** Whether the pay period spans more than one workweek. Raw workweeks are on `preparedPayroll.workweeks`. */\n isMultipleWorkweeks: boolean\n /**\n * The pay period's normalized workweeks (`{ startDate, endDate }` strings),\n * in order — one entry, spanning the pay period, when it's a single\n * workweek. The per-workweek split fields are keyed by start date only, so\n * this is the source for each column's date range.\n */\n workweeks: NormalizedWorkweek[]\n /** Whether the employee is overtime-eligible (nonexempt family). Drives whether hours split by workweek. */\n isOvertimeEligible: boolean\n /**\n * The single, form-wide overtime-mode flag. `false` renders one flat\n * column per line with Overtime/Double-overtime rows hidden; `true`\n * splits hours and overtime-affecting earnings into per-workweek columns\n * (for overtime-eligible employees on a multi-workweek payroll) and\n * un-hides those rows. Starts `true` when the employee already has real\n * overtime hours or matching per-workweek breakdowns (see\n * `hasExistingOvertimeHours`, `hasBreakdownsMatchingWorkweeks`), or after\n * `actions.addOvertime` is called; otherwise starts `false`.\n */\n withOvertime: boolean\n /** Whether the employee has a direct-deposit bank account set up. */\n hasDirectDepositSetup: boolean\n /**\n * Committed reimbursement rows to render in a table, present only when\n * reimbursement controls are exposed. Seeded from the employee's existing\n * reimbursements and appended to as drafts are saved. Remove a row via\n * `actions.removeReimbursement(row.index)`.\n */\n reimbursements?: ReimbursementRow[]\n }\n /** Submission status. `mode` is always `'update'` since the payroll already exists. */\n status: { isPending: boolean; mode: 'update' }\n /** Form actions. */\n actions: {\n /** Validates and submits the form, resolving to the updated prepared payroll on success or `undefined` when validation blocked the submit. */\n onSubmit: () => Promise<HookSubmitResult<PayrollPrepared> | undefined>\n /**\n * Sets `data.withOvertime` to `true`, switching the whole form to the\n * workweek split: un-hides Overtime/Double-overtime rows and splits hours\n * and overtime-affecting earnings into per-workweek columns. Populates\n * only the first workweek cell of each line with that line's current\n * total, leaving every other cell blank — no auto distribution — so the\n * per-row validation then requires the user to fill in the rest. One\n * affordance for the whole employee, not one per job. One-directional —\n * there's no corresponding \"remove overtime\" action.\n */\n addOvertime: () => void\n /** Reveals the draft reimbursement row. Present only when reimbursement controls are exposed. */\n beginAddReimbursement?: () => void\n /** Validates the draft and commits it to the reimbursement list, or flags the draft amount if invalid. Present only when reimbursement controls are exposed. */\n saveReimbursement?: () => void\n /** Discards the draft reimbursement row. Present only when reimbursement controls are exposed. */\n cancelReimbursement?: () => void\n /** Removes the committed reimbursement row at `index` (zeroing existing rows so the update clears them). Present only when reimbursement controls are exposed. */\n removeReimbursement?: (index: number) => void\n }\n /** Form internals plus the reimbursement draft state. */\n form: BaseFormHookReady<\n PayrollEditEmployeeFieldsMetadata,\n PayrollEditEmployeeFormData,\n PayrollEditEmployeeFields\n >['form'] & {\n /** Draft reimbursement state, present only when reimbursement controls are exposed. */\n reimbursementDraft?: { isAdding: boolean }\n }\n}\n\n/**\n * Discriminated union returned by {@link usePayrollEditEmployeeForm}. Loading\n * branch carries only `errorHandling`; ready branch carries form data, fields,\n * status, and actions.\n *\n * @public\n */\nexport type UsePayrollEditEmployeeFormResult = HookLoadingResult | UsePayrollEditEmployeeFormReady\n\n/**\n * Headless form hook for editing a single employee's compensation within a\n * payroll run, built for regular-rate-of-pay (RRoP) support.\n *\n * @remarks\n * Prepares the payroll for the target employee, then exposes a workweek-keyed\n * form whose submit builds a `PayrollUpdate`. Single-workweek pay periods send\n * totals without `breakdowns`; multi-workweek pay periods send `breakdowns` per\n * line once that line's every workweek cell is filled. Overtime-eligible\n * (nonexempt) employees split hours and overtime-affecting earnings per\n * workweek while the single `data.withOvertime` flag is on (see\n * `actions.addOvertime`); everyone else, and every line while `withOvertime` is\n * off, edits flat totals.\n *\n * @param props - Hook options.\n * @returns A loading result while data is fetching, or a ready result with data,\n * fields, status, actions, and error handling.\n * @public\n */\nexport function usePayrollEditEmployeeForm({\n employeeId,\n companyId,\n payrollId,\n withReimbursements = true,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n errorMessages,\n}: UsePayrollEditEmployeeFormProps): UsePayrollEditEmployeeFormResult {\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const { data: bankAccountsList } = useEmployeePaymentMethodsGetBankAccountsSuspense({\n employeeId,\n })\n const { data: earningTypesData } = useEarningTypesListSuspense({ companyId })\n\n const queryClient = useQueryClient()\n const { mutateAsync: preparePayroll } = usePayrollsPrepareMutation()\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const [prepareError, setPrepareError] = useState<Error | null>(null)\n const hasFiredRef = useRef(false)\n\n const executePrepare = useCallback(async () => {\n setPrepareError(null)\n try {\n const result = await retryAsync(\n () =>\n preparePayroll({\n request: { companyId, payrollId, requestBody: { employeeUuids: [employeeId] } },\n }),\n {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n },\n )\n setPreparedPayroll(result.payrollPrepared)\n } catch (error) {\n setPrepareError(error as Error)\n }\n }, [companyId, payrollId, employeeId, preparePayroll])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void executePrepare()\n }, [executePrepare])\n\n const payScheduleQuery = usePaySchedulesGet(\n { companyId, payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid ?? '' },\n { enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid },\n )\n\n const employee = employeeData.employee\n const employeeCompensation = preparedPayroll?.employeeCompensations?.at(0)\n const payrollCategory = derivePayrollCategory(preparedPayroll ?? {})\n const hasDirectDepositSetup = (bankAccountsList.employeeBankAccounts?.length ?? 0) > 0\n\n // Only normalize once the payroll is prepared: normalizeWorkweeks throws on a\n // payroll with neither workweeks nor a pay period, and before prepare resolves\n // both are legitimately absent (still loading, not malformed).\n const workweeks = useMemo(\n () =>\n preparedPayroll\n ? normalizeWorkweeks(preparedPayroll.workweeks, preparedPayroll.payPeriod)\n : [],\n [preparedPayroll],\n )\n\n const overtimeEarningNames = useMemo(\n () => collectOvertimeEarningNames(earningTypesData.earningTypeList),\n [earningTypesData.earningTypeList],\n )\n\n // Source of truth for the employee's FLSA status: prefer the prepared\n // compensation's hourly lines (the same data the fields are built from, so the\n // gate and the rendered lines always agree), falling back to the employee's\n // primary-job compensation. Unknown status is treated as not overtime-eligible.\n const flsaStatus = useMemo(() => {\n const fromCompensation = employeeCompensation?.hourlyCompensations?.find(\n compensation => compensation.flsaStatus,\n )?.flsaStatus\n if (fromCompensation) return fromCompensation\n const primaryJob = employee?.jobs?.find(job => job.primary)\n return primaryJob?.compensations?.[0]?.flsaStatus\n }, [employeeCompensation, employee])\n const isOvertimeEligible = isOvertimeEligibleFlsaStatus(flsaStatus)\n\n // Starts on when the employee already has real overtime hours, or already has\n // per-workweek breakdowns matching the current pay period's workweeks (nothing\n // to hide either way), otherwise starts off until the user opts in via\n // `actions.addOvertime`. One-directional: there's no \"remove overtime\" action.\n const [withOvertimeSetByUser, setWithOvertimeSetByUser] = useState(false)\n const withOvertime =\n withOvertimeSetByUser ||\n hasExistingOvertimeHours(employeeCompensation?.hourlyCompensations) ||\n hasBreakdownsMatchingWorkweeks(employeeCompensation?.hourlyCompensations, workweeks)\n\n const primaryJobUuid = useMemo(() => employee?.jobs?.find(job => job.primary)?.uuid, [employee])\n\n // Seed a blank input for every payroll fixed-compensation type (like the stable\n // editor), then let the field/defaults builders split them into additional\n // earnings vs `overtimeExcludedEarnings` by overtime inclusion. Without this, an employee whose\n // prepared payroll carries no fixed compensations shows no earnings inputs.\n const resolvedFixedCompensations = useMemo(\n () =>\n resolveEditableFixedCompensations(\n employeeCompensation?.fixedCompensations,\n preparedPayroll?.fixedCompensationTypes,\n primaryJobUuid,\n flsaStatus,\n ),\n [employeeCompensation, preparedPayroll?.fixedCompensationTypes, primaryJobUuid, flsaStatus],\n )\n\n const jobTitlesByUuid = useMemo(() => {\n const titles = new Map<string, string>()\n for (const job of employee?.jobs ?? []) {\n if (job.uuid && job.title) titles.set(job.uuid, job.title)\n }\n return titles\n }, [employee])\n\n // Accrual balance per time-off policy, owned by the hook (rather than looked\n // up in the consumer) so the time-off field can render its own live remaining\n // balance.\n const timeOffAccrualByName = useMemo(() => {\n const balances = new Map<string, string>()\n for (const policy of employee?.eligiblePaidTimeOff ?? []) {\n if (policy.name && policy.accrualBalance != null) {\n balances.set(policy.name, policy.accrualBalance)\n }\n }\n return balances\n }, [employee])\n\n const schema = useMemo(() => createPayrollEditEmployeeSchema(), [])\n\n const resolvedDefaults = useMemo(\n () =>\n derivePayrollEditEmployeeDefaults(\n employeeCompensation,\n workweeks,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n withOvertime,\n resolvedFixedCompensations,\n ),\n [\n employeeCompensation,\n workweeks,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n withOvertime,\n resolvedFixedCompensations,\n ],\n )\n\n const formMethods = useForm<PayrollEditEmployeeFormData, unknown, PayrollEditEmployeeFormOutputs>(\n {\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n },\n )\n\n // Watched so each `Fields.timeOff[i].remaining` stays live as the user edits\n // hours. The whole form re-renders on keystroke regardless of who owns this\n // watch, so there's no cost to owning it here rather than in a per-row\n // subcomponent.\n const watchedTimeOff = useWatch({ control: formMethods.control, name: 'timeOff' })\n\n // Off-cycle payrolls write reimbursements via the legacy fixed-compensation path\n // (the itemized array is rejected server-side), so itemized reimbursement controls\n // are exposed only for regular payrolls and only when the partner opts in.\n const usesItemizedReimbursements = !isOffCyclePayroll(payrollCategory)\n const showReimbursements = withReimbursements && usesItemizedReimbursements\n\n const {\n fields: reimbursementArrayFields,\n append: appendReimbursement,\n remove: removeReimbursementRow,\n update: updateReimbursementRow,\n } = useFieldArray({\n control: formMethods.control,\n name: 'reimbursements',\n })\n\n const [isAddingReimbursement, setIsAddingReimbursement] = useState(false)\n\n const reimbursementDraftFields = useMemo<ReimbursementDraftFields>(\n () => createReimbursementDraftFields(errorMessages),\n [errorMessages],\n )\n\n // Committed rows for the consumer's table. A removed existing row (one with a\n // uuid) is zeroed rather than dropped so the update still clears it server-side;\n // those zero-amount rows are filtered out of the visible list but remain in the\n // form array for submit.\n const reimbursementRows = useMemo<ReimbursementRow[]>(\n () =>\n reimbursementArrayFields\n .map((field, index) => ({\n key: field.id,\n index,\n uuid: field.uuid ?? undefined,\n description: field.description,\n amount: field.amount,\n recurring: field.recurring ?? false,\n }))\n .filter(row => parseFloat(row.amount || '0') !== 0),\n [reimbursementArrayFields],\n )\n\n const beginAddReimbursement = useCallback(() => {\n setIsAddingReimbursement(true)\n }, [])\n\n const cancelReimbursement = useCallback(() => {\n formMethods.setValue('reimbursementDraft', { description: '', amount: '' })\n formMethods.clearErrors('reimbursementDraft')\n setIsAddingReimbursement(false)\n }, [formMethods])\n\n const saveReimbursement = useCallback(() => {\n const draft = formMethods.getValues('reimbursementDraft')\n const result = reimbursementDraftSchema.safeParse(draft)\n if (!result.success) {\n // The error code is a fallback; the field renders the consumer-supplied\n // `errorMessage` prop when present (see useField), so the copy is theirs to set.\n formMethods.setError('reimbursementDraft.amount', {\n message: PayrollEditEmployeeErrorCodes.REIMBURSEMENT_AMOUNT,\n })\n return\n }\n appendReimbursement({\n uuid: null,\n description: result.data.description.trim(),\n amount: parseFloat(result.data.amount).toFixed(2),\n recurring: false,\n })\n formMethods.setValue('reimbursementDraft', { description: '', amount: '' })\n formMethods.clearErrors('reimbursementDraft')\n setIsAddingReimbursement(false)\n }, [appendReimbursement, formMethods])\n\n const removeReimbursement = useCallback(\n (index: number) => {\n const field = reimbursementArrayFields[index]\n if (!field) return\n if (field.uuid) {\n updateReimbursementRow(index, { ...field, amount: '0' })\n } else {\n removeReimbursementRow(index)\n }\n },\n [reimbursementArrayFields, removeReimbursementRow, updateReimbursementRow],\n )\n\n const fields = useMemo(\n () =>\n createPayrollEditEmployeeFields({\n employeeCompensation,\n fixedCompensations: resolvedFixedCompensations,\n workweeks,\n payrollCategory,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n withOvertime,\n jobTitlesByUuid,\n timeOffAccrualByName,\n errorMessages,\n }),\n [\n employeeCompensation,\n resolvedFixedCompensations,\n workweeks,\n payrollCategory,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n withOvertime,\n jobTitlesByUuid,\n timeOffAccrualByName,\n errorMessages,\n ],\n )\n\n // Overlay the live remaining balance onto each time-off entry every render, so\n // it tracks the watched entered values without rebuilding (and remounting) the\n // bound field components the `fields` memo owns.\n const timeOffFields = useMemo(\n () =>\n fields.timeOff.map(entry => ({\n ...entry,\n remaining: computeTimeOffRemaining(\n timeOffAccrualByName.get(entry.name),\n watchedTimeOff[entry.name],\n ),\n })),\n [fields.timeOff, timeOffAccrualByName, watchedTimeOff],\n )\n\n // Re-derives with `withOvertime` forced `true` and pushes the result straight\n // into the form: every line's first workweek cell gets that line's current\n // total, every other cell is left blank (never auto-distributed — see\n // `derivePayrollEditEmployeeDefaults`/`buildWeekMap`). The per-row validation\n // then requires the user to fill in the rest before they can submit.\n // `setValue` (not `resetField`) is used so this overwrites even a value the\n // user already typed into the collapsed input. Plain function (not memoized):\n // it only runs on a user click, and its inputs are recomputed each render, so\n // a `useCallback` here would never actually hold a stable reference.\n const addOvertime = () => {\n setWithOvertimeSetByUser(true)\n const revealedDefaults = derivePayrollEditEmployeeDefaults(\n employeeCompensation,\n workweeks,\n hasDirectDepositSetup,\n overtimeEarningNames,\n isOvertimeEligible,\n true,\n resolvedFixedCompensations,\n )\n // Keep the user's edited collapsed value on the first workweek cell rather\n // than the seeded API total.\n const firstWeekStart = workweeks[0]?.startDate ?? ''\n const currentValues = formMethods.getValues()\n const overlayLiveFirstWeek = (\n revealed: PayrollEditEmployeeFormData['hours'],\n live: PayrollEditEmployeeFormData['hours'] | undefined,\n ) => {\n for (const [jobUuid, names] of Object.entries(revealed)) {\n for (const [name, weekMap] of Object.entries(names)) {\n const liveValue = live?.[jobUuid]?.[name]?.[firstWeekStart]\n if (liveValue !== undefined) weekMap[firstWeekStart] = liveValue\n }\n }\n return revealed\n }\n // `shouldDirty` so the form's `values`-prop reset (triggered by flipping\n // `withOvertimeSetByUser`) keeps these via `keepDirtyValues`.\n formMethods.setValue(\n 'hours',\n overlayLiveFirstWeek(revealedDefaults.hours, currentValues.hours),\n { shouldDirty: true },\n )\n formMethods.setValue(\n 'overtimeIncludedEarnings',\n overlayLiveFirstWeek(\n revealedDefaults.overtimeIncludedEarnings,\n currentValues.overtimeIncludedEarnings,\n ),\n { shouldDirty: true },\n )\n }\n const fieldsMetadata = useMemo<PayrollEditEmployeeFieldsMetadata>(\n () => ({\n paymentMethod: withOptions(\n { name: 'paymentMethod' },\n PAYMENT_METHOD_OPTIONS,\n PAYMENT_METHOD_VALUES,\n ),\n }),\n [],\n )\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('PayrollEditEmployeeForm')\n\n const prepareQuerySource: QueryWithRefetch = {\n error: prepareError,\n refetch: (() => executePrepare()) as unknown as QueryWithRefetch['refetch'],\n }\n\n const errorHandling = composeErrorHandler([prepareQuerySource, payScheduleQuery], {\n submitError,\n setSubmitError,\n })\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const onSubmit = async (): Promise<HookSubmitResult<PayrollPrepared> | undefined> => {\n let submitResult: HookSubmitResult<PayrollPrepared> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async data => {\n await baseSubmitHandler(data, async payload => {\n const compensation = buildPayrollUpdateEmployeeCompensation(\n payload,\n employeeCompensation,\n workweeks,\n payrollCategory,\n isOvertimeEligible,\n withOvertime,\n )\n\n const response = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: { employeeCompensations: [compensation] },\n },\n })\n\n const updated = response.payrollPrepared\n if (!updated) {\n throw new SDKInternalError('Payroll update did not return a prepared payroll')\n }\n\n setPreparedPayroll(updated)\n\n // The payroll configuration surface caches its prepared payroll under a hand-written\n // key, which the global SDK auto-invalidation (namespaced to @gusto/embedded-api\n // queries only) does not touch. Invalidate it explicitly so configuration reflects\n // this edit without a manual refresh.\n await queryClient.invalidateQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n\n submitResult = { mode: 'update', data: updated }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n if (!preparedPayroll || !employee) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n employee,\n employeeCompensation,\n preparedPayroll,\n paySchedule: payScheduleQuery.data?.payScheduleShow,\n isMultipleWorkweeks: workweeks.length > 1,\n workweeks,\n isOvertimeEligible,\n withOvertime,\n hasDirectDepositSetup,\n ...(showReimbursements ? { reimbursements: reimbursementRows } : {}),\n },\n status: { isPending, mode: 'update' as const },\n actions: {\n onSubmit,\n addOvertime,\n ...(showReimbursements\n ? {\n beginAddReimbursement,\n saveReimbursement,\n cancelReimbursement,\n removeReimbursement,\n }\n : {}),\n },\n errorHandling,\n form: {\n Fields: {\n ...fields,\n timeOff: timeOffFields,\n reimbursementDraft: showReimbursements ? reimbursementDraftFields : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n ...(showReimbursements ? { reimbursementDraft: { isAdding: isAddingReimbursement } } : {}),\n },\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","issue","usePayrollEditEmployeeForm","employeeId","companyId","payrollId","withReimbursements","validationMode","shouldFocusError","errorMessages","employeeData","useEmployeesGetSuspense","bankAccountsList","useEmployeePaymentMethodsGetBankAccountsSuspense","earningTypesData","useEarningTypesListSuspense","queryClient","useQueryClient","preparePayroll","usePayrollsPrepareMutation","updatePayroll","isPending","usePayrollsUpdateMutation","preparedPayroll","setPreparedPayroll","useState","prepareError","setPrepareError","hasFiredRef","useRef","executePrepare","useCallback","result","retryAsync","useEffect","payScheduleQuery","usePaySchedulesGet","employee","employeeCompensation","payrollCategory","derivePayrollCategory","hasDirectDepositSetup","workweeks","useMemo","normalizeWorkweeks","overtimeEarningNames","collectOvertimeEarningNames","flsaStatus","fromCompensation","compensation","job","isOvertimeEligible","isOvertimeEligibleFlsaStatus","withOvertimeSetByUser","setWithOvertimeSetByUser","withOvertime","hasExistingOvertimeHours","hasBreakdownsMatchingWorkweeks","primaryJobUuid","resolvedFixedCompensations","resolveEditableFixedCompensations","jobTitlesByUuid","titles","timeOffAccrualByName","balances","policy","schema","createPayrollEditEmployeeSchema","resolvedDefaults","derivePayrollEditEmployeeDefaults","formMethods","useForm","zodResolver","watchedTimeOff","useWatch","usesItemizedReimbursements","isOffCyclePayroll","showReimbursements","reimbursementArrayFields","appendReimbursement","removeReimbursementRow","updateReimbursementRow","useFieldArray","isAddingReimbursement","setIsAddingReimbursement","reimbursementDraftFields","createReimbursementDraftFields","reimbursementRows","field","index","row","beginAddReimbursement","cancelReimbursement","saveReimbursement","draft","reimbursementDraftSchema","PayrollEditEmployeeErrorCodes","removeReimbursement","fields","createPayrollEditEmployeeFields","timeOffFields","entry","computeTimeOffRemaining","addOvertime","revealedDefaults","firstWeekStart","currentValues","overlayLiveFirstWeek","revealed","live","jobUuid","names","name","weekMap","liveValue","fieldsMetadata","withOptions","PAYMENT_METHOD_OPTIONS","PAYMENT_METHOD_VALUES","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","hookFormInternals","useHookFormInternals","onSubmit","submitResult","resolve","data","payload","buildPayrollUpdateEmployeeCompensation","updated","SDKInternalError","PREPARE_QUERY_KEY","createGetFormSubmissionValues"],"mappings":"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"}
@@ -1,35 +1,44 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import { useState as M, useCallback as U } from "react";
3
- import { keepPreviousData as F } from "@tanstack/react-query";
4
- import { usePayrollsList as V } from "@gusto/embedded-api/react-query/payrollsList";
5
- import { usePayrollsCancelMutation as q } from "@gusto/embedded-api/react-query/payrollsCancel";
6
- import { useWireInRequestsListSuspense as N } from "@gusto/embedded-api/react-query/wireInRequestsList";
7
- import { QueryParamSortOrder as T, QueryParamPayrollTypes as i, ProcessingStatuses as B } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls";
8
- import { PayrollHistoryPresentation as Y } from "./PayrollHistoryPresentation.js";
9
- import { BaseComponent as b, BaseLayout as x } from "../../Base/Base.js";
2
+ import { useState as U, useCallback as F } from "react";
3
+ import { keepPreviousData as T } from "@tanstack/react-query";
4
+ import { usePayrollsList as N } from "@gusto/embedded-api/react-query/payrollsList";
5
+ import { usePayrollsCancelMutation as V } from "@gusto/embedded-api/react-query/payrollsCancel";
6
+ import { useWireInRequestsListSuspense as q } from "@gusto/embedded-api/react-query/wireInRequestsList";
7
+ import { QueryParamSortOrder as B, QueryParamPayrollTypes as i, ProcessingStatuses as Y } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls";
8
+ import { PayrollHistoryPresentation as b } from "./PayrollHistoryPresentation.js";
9
+ import { BaseComponent as x, BaseLayout as K } from "../../Base/Base.js";
10
10
  import { useBase as W } from "../../Base/useBase.js";
11
11
  import { componentEvents as c } from "../../../shared/constants.js";
12
- import { useComponentDictionary as k, useI18n as K } from "../../../i18n/I18n.js";
13
- import { usePagination as Q } from "../../../hooks/usePagination/usePagination.js";
14
- import { useDateRangeFilter as j } from "../../../hooks/useDateRangeFilter/useDateRangeFilter.js";
15
- function me(e) {
16
- return /* @__PURE__ */ o(b, { ...e, children: /* @__PURE__ */ o(J, { ...e, children: e.children }) });
12
+ import { useComponentDictionary as k, useI18n as Q } from "../../../i18n/I18n.js";
13
+ import { usePagination as j } from "../../../hooks/usePagination/usePagination.js";
14
+ import { useDateRangeFilter as v } from "../../../hooks/useDateRangeFilter/useDateRangeFilter.js";
15
+ function yt(t) {
16
+ return /* @__PURE__ */ o(x, { ...t, children: /* @__PURE__ */ o(Z, { ...t, children: t.children }) });
17
17
  }
18
- const v = 3, z = () => {
19
- const e = /* @__PURE__ */ new Date();
20
- return e.setMonth(e.getMonth() - v), e;
21
- }, G = () => /* @__PURE__ */ new Date(), J = ({ onEvent: e, companyId: n, dictionary: y, LoaderComponent: P }) => {
22
- k("Payroll.PayrollHistory", y), K("Payroll.PayrollHistory");
23
- const [d, s] = M(null), { baseSubmitHandler: g } = W(), { currentPage: D, itemsPerPage: f, getPaginationProps: C, resetPage: u } = Q(), m = j({
24
- initialStartDate: z(),
25
- initialEndDate: G(),
26
- onFilterChange: U(() => {
18
+ const z = 6, G = 3, J = () => {
19
+ const t = /* @__PURE__ */ new Date();
20
+ return t.setMonth(t.getMonth() - z), t;
21
+ }, X = () => {
22
+ const t = /* @__PURE__ */ new Date();
23
+ return t.setMonth(t.getMonth() + G), t;
24
+ }, Z = ({
25
+ onEvent: t,
26
+ companyId: n,
27
+ dictionary: y,
28
+ LoaderComponent: P,
29
+ className: d
30
+ }) => {
31
+ k("Payroll.PayrollHistory", y), Q("Payroll.PayrollHistory");
32
+ const [D, s] = U(null), { baseSubmitHandler: g } = W(), { currentPage: f, itemsPerPage: L, getPaginationProps: C, resetPage: u } = j(), m = v({
33
+ initialStartDate: J(),
34
+ initialEndDate: X(),
35
+ onFilterChange: F(() => {
27
36
  u();
28
37
  }, [u])
29
- }), p = m.getApiDateParams(), { data: l, isFetching: R } = V(
38
+ }), p = m.getApiDateParams(), { data: l, isFetching: R } = N(
30
39
  {
31
40
  companyId: n,
32
- processingStatuses: [B.Processed],
41
+ processingStatuses: [Y.Processed],
33
42
  payrollTypes: [
34
43
  i.Regular,
35
44
  i.OffCycle,
@@ -37,58 +46,59 @@ const v = 3, z = () => {
37
46
  ],
38
47
  includeOffCycle: !0,
39
48
  include: ["totals", "payroll_status_meta"],
40
- sortOrder: T.Desc,
49
+ sortOrder: B.Desc,
41
50
  startDate: p.startDate,
42
51
  endDate: p.endDate,
43
- page: D,
44
- per: f
52
+ page: f,
53
+ per: L
45
54
  },
46
- { placeholderData: F, throwOnError: !0 }
47
- ), L = l?.payrollList || [], { data: h } = N({
55
+ { placeholderData: T, throwOnError: !0 }
56
+ ), h = l?.payrollList || [], { data: O } = q({
48
57
  companyUuid: n
49
- }), w = h.wireInRequestList ?? [], { mutateAsync: E, isPending: O } = q(), S = (t, r, a) => {
50
- e(c.RUN_PAYROLL_SUMMARY_VIEWED, { payrollId: t, startDate: r, endDate: a });
51
- }, _ = (t, r, a) => {
52
- e(c.RUN_PAYROLL_RECEIPT_VIEWED, { payrollId: t, startDate: r, endDate: a });
53
- }, I = async (t) => {
54
- const r = t.payrollUuid || t.uuid;
58
+ }), E = O.wireInRequestList ?? [], { mutateAsync: _, isPending: S } = V(), w = (e, r, a) => {
59
+ t(c.RUN_PAYROLL_SUMMARY_VIEWED, { payrollId: e, startDate: r, endDate: a });
60
+ }, A = (e, r, a) => {
61
+ t(c.RUN_PAYROLL_RECEIPT_VIEWED, { payrollId: e, startDate: r, endDate: a });
62
+ }, I = async (e) => {
63
+ const r = e.payrollUuid || e.uuid;
55
64
  try {
56
65
  await g(r, async (a) => {
57
- const H = await E({
66
+ const H = await _({
58
67
  request: {
59
68
  companyId: n,
60
69
  payrollId: a
61
70
  }
62
71
  });
63
- e(c.RUN_PAYROLL_CANCELLED, { payrollId: a, result: H });
72
+ t(c.RUN_PAYROLL_CANCELLED, { payrollId: a, result: H });
64
73
  });
65
74
  } finally {
66
75
  s(null);
67
76
  }
68
77
  };
69
78
  if (!l)
70
- return /* @__PURE__ */ o(x, { isLoading: !0, LoaderComponent: P });
71
- const A = C(l.httpMeta.response.headers, R);
79
+ return /* @__PURE__ */ o(K, { isLoading: !0, LoaderComponent: P });
80
+ const M = C(l.httpMeta.response.headers, R);
72
81
  return /* @__PURE__ */ o(
73
- Y,
82
+ b,
74
83
  {
75
- payrollHistory: L,
76
- wireInRequests: w,
77
- pagination: A,
78
- onViewSummary: S,
79
- onViewReceipt: _,
84
+ className: d,
85
+ payrollHistory: h,
86
+ wireInRequests: E,
87
+ pagination: M,
88
+ onViewSummary: w,
89
+ onViewReceipt: A,
80
90
  onCancelPayroll: I,
81
- cancelDialogItem: d,
91
+ cancelDialogItem: D,
82
92
  onCancelDialogOpen: s,
83
93
  onCancelDialogClose: () => {
84
94
  s(null);
85
95
  },
86
- isLoading: O,
96
+ isLoading: S,
87
97
  dateRangeFilter: m
88
98
  }
89
99
  );
90
100
  };
91
101
  export {
92
- me as PayrollHistory
102
+ yt as PayrollHistory
93
103
  };
94
104
  //# sourceMappingURL=PayrollHistory.js.map