@gusto/embedded-react-sdk 0.57.1 → 0.57.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/components/Base/Base.js +2 -3
  3. package/dist/components/Base/Base.js.map +1 -1
  4. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js +32 -32
  5. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js.map +1 -1
  6. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  7. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +6 -8
  8. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  9. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +8 -10
  10. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  11. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -6
  12. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  13. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +6 -8
  14. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  15. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -6
  16. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  17. package/dist/components/Company/AssignSignatory/TitleSelect.js +10 -11
  18. package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
  19. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -8
  20. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  21. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +8 -9
  22. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  23. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -6
  24. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  25. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +10 -12
  26. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  27. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +11 -13
  28. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  29. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +5 -7
  30. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  31. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -6
  32. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  33. package/dist/components/Company/FederalTaxes/Actions.js +7 -9
  34. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  35. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +8 -11
  36. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  37. package/dist/components/Company/Industry/Actions.js +5 -7
  38. package/dist/components/Company/Industry/Actions.js.map +1 -1
  39. package/dist/components/Company/Industry/Context.js +6 -9
  40. package/dist/components/Company/Industry/Context.js.map +1 -1
  41. package/dist/components/Company/Industry/Edit.js +10 -12
  42. package/dist/components/Company/Industry/Edit.js.map +1 -1
  43. package/dist/components/Company/Locations/LocationForm/Actions.js +8 -10
  44. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  45. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -6
  46. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  47. package/dist/components/Company/Locations/LocationsList/Actions.js +6 -8
  48. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  49. package/dist/components/Company/Locations/LocationsList/List.js +11 -13
  50. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  51. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -6
  52. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  53. package/dist/components/Company/OnboardingOverview/context.js +3 -6
  54. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  55. package/dist/components/Company/PaySchedule/PayScheduleForm.js +66 -62
  56. package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
  57. package/dist/components/Company/PaySchedule/PayScheduleForm.module.scss.js +2 -2
  58. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -1
  59. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -1
  60. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js +34 -14
  61. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js.map +1 -1
  62. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js +106 -0
  63. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js.map +1 -0
  64. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js +136 -0
  65. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js.map +1 -0
  66. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +38 -20
  67. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -1
  68. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +78 -44
  69. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -1
  70. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +45 -37
  71. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -1
  72. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +253 -92
  73. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -1
  74. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js +22 -0
  75. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js.map +1 -0
  76. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js +13 -0
  77. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js.map +1 -0
  78. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +48 -43
  79. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -1
  80. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.js.map +1 -1
  81. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js +57 -0
  82. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js.map +1 -0
  83. package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js +11 -13
  84. package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js.map +1 -1
  85. package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js +83 -0
  86. package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js.map +1 -0
  87. package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js +84 -0
  88. package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js.map +1 -0
  89. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +49 -44
  90. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
  91. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +109 -39
  92. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
  93. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -1
  94. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
  95. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
  96. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +5 -7
  97. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  98. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -6
  99. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  100. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +6 -8
  101. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  102. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -6
  103. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  104. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -6
  105. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  106. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +5 -5
  107. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
  108. package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js +1 -1
  109. package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js.map +1 -1
  110. package/dist/components/Contractor/Compensation/management/CompensationCard/CompensationCard.js +16 -17
  111. package/dist/components/Contractor/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
  112. package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js +4 -4
  113. package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js.map +1 -1
  114. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js +3 -3
  115. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js.map +1 -1
  116. package/dist/components/Contractor/ContractorList/shared/useContractorList.js +6 -6
  117. package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
  118. package/dist/components/Contractor/Dashboard/Dashboard.js +20 -20
  119. package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
  120. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +10 -10
  121. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -1
  122. package/dist/components/Contractor/Documents/management/DocumentsCard/DocumentsCard.js +8 -9
  123. package/dist/components/Contractor/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  124. package/dist/components/Contractor/Landing/Landing.js +43 -39
  125. package/dist/components/Contractor/Landing/Landing.js.map +1 -1
  126. package/dist/components/Contractor/NewHireReport/NewHireReport.js +3 -3
  127. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  128. package/dist/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.js +6 -8
  129. package/dist/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.js.map +1 -1
  130. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +1 -1
  131. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
  132. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +10 -10
  133. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  134. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +4 -4
  135. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
  136. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +8 -8
  137. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
  138. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +5 -5
  139. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
  140. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +3 -3
  141. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
  142. package/dist/components/Contractor/Profile/management/ProfileCard/ProfileCard.js +26 -27
  143. package/dist/components/Contractor/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
  144. package/dist/components/Contractor/Profile/management/ProfileEditForm.js +11 -11
  145. package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js +1 -1
  146. package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js.map +1 -1
  147. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +1 -1
  148. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
  149. package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js +1 -1
  150. package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js.map +1 -1
  151. package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js +2 -9
  152. package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  153. package/dist/components/Contractor/Submit/Submit.js +18 -18
  154. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  155. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js +6 -6
  156. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js.map +1 -1
  157. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +25 -25
  158. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
  159. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +15 -15
  160. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
  161. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +1 -1
  162. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  163. package/dist/components/Employee/Dashboard/Dashboard.js +25 -25
  164. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  165. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js +12 -13
  166. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
  167. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js +12 -13
  168. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  169. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js +6 -8
  170. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js.map +1 -1
  171. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -6
  172. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  173. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +7 -7
  174. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  175. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +1 -1
  176. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  177. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js +3 -4
  178. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js.map +1 -1
  179. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +3 -4
  180. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js.map +1 -1
  181. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +6 -6
  182. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
  183. package/dist/components/Employee/Landing/Landing.js +37 -33
  184. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  185. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +27 -27
  186. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  187. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js +22 -24
  188. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
  189. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +8 -9
  190. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
  191. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js +14 -15
  192. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
  193. package/dist/components/Employee/Profile/management/ProfileEditForm.js +1 -1
  194. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
  195. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +6 -6
  196. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
  197. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
  198. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
  199. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js +8 -15
  200. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  201. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js +7 -8
  202. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js.map +1 -1
  203. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +7 -8
  204. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js.map +1 -1
  205. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +11 -11
  206. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  207. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +12 -12
  208. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
  209. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +26 -26
  210. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
  211. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +56 -54
  212. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  213. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +14 -16
  214. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  215. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +6 -8
  216. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
  217. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +9 -11
  218. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
  219. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +66 -64
  220. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  221. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
  222. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  223. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +6 -6
  224. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  225. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  226. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +1 -1
  227. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
  228. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  229. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +75 -89
  230. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  231. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  232. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +9 -9
  233. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  234. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +44 -46
  235. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  236. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  237. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +63 -61
  238. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
  239. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +14 -13
  240. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +1 -1
  241. package/dist/components/Payroll/helpers.js +53 -49
  242. package/dist/components/Payroll/helpers.js.map +1 -1
  243. package/dist/components/Payroll/payrollTypes.js +1 -1
  244. package/dist/components/Payroll/payrollTypes.js.map +1 -1
  245. package/dist/components/Payroll/usePreparedPayrollData.js +13 -16
  246. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  247. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +2 -2
  248. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
  249. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +2 -4
  250. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
  251. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js +6 -8
  252. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js.map +1 -1
  253. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +28 -30
  254. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
  255. package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js +1 -1
  256. package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js.map +1 -1
  257. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +2 -4
  258. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  259. package/dist/helpers/dateFormatting.js +47 -40
  260. package/dist/helpers/dateFormatting.js.map +1 -1
  261. package/dist/i18n/en/Company.Management.PaySchedule.json.js +37 -17
  262. package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -1
  263. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +20 -10
  264. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -1
  265. package/dist/i18n/en/Payroll.PayrollHistory.json.js +5 -5
  266. package/dist/i18n/en/Payroll.PayrollList.json.js +5 -5
  267. package/dist/i18n/en/Payroll.PayrollOverview.json.js +1 -1
  268. package/dist/package.json.js +1 -1
  269. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js +8 -10
  270. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js.map +1 -1
  271. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js +12 -14
  272. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js.map +1 -1
  273. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +13 -15
  274. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
  275. package/dist/partner-hook-utils/form/fields/SelectHookField.js +10 -12
  276. package/dist/partner-hook-utils/form/fields/SelectHookField.js.map +1 -1
  277. package/dist/partner-hook-utils/form/fields/SwitchHookField.js +14 -16
  278. package/dist/partner-hook-utils/form/fields/SwitchHookField.js.map +1 -1
  279. package/dist/partner-hook-utils/form/fields/TextInputHookField.js +8 -10
  280. package/dist/partner-hook-utils/form/fields/TextInputHookField.js.map +1 -1
  281. package/dist/shared/constants.js +5 -5
  282. package/dist/shared/constants.js.map +1 -1
  283. package/dist/src/components/Common/DateRangeFilter/DateRangeFilter.d.ts +2 -2
  284. package/dist/src/components/Common/OnboardingStatusBadge/index.d.ts +1 -1
  285. package/dist/src/components/Company/PaySchedule/PayScheduleForm.d.ts +6 -0
  286. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +1 -1
  287. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +1 -1
  288. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.d.ts +10 -3
  289. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.d.ts +21 -0
  290. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.d.ts +34 -0
  291. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +9 -3
  292. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +5 -1
  293. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +10 -10
  294. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +12 -4
  295. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.d.ts +19 -0
  296. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.d.ts +17 -0
  297. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.d.ts +1 -1
  298. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.d.ts +34 -0
  299. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +16 -3
  300. package/dist/src/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.d.ts +1 -1
  301. package/dist/src/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.d.ts +23 -0
  302. package/dist/src/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.d.ts +25 -0
  303. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +1 -1
  304. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +1 -1
  305. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +1 -1
  306. package/dist/src/components/Contractor/Landing/Landing.d.ts +5 -2
  307. package/dist/src/components/Employee/Landing/Landing.d.ts +5 -2
  308. package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +1 -1
  309. package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +1 -1
  310. package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
  311. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.d.ts +2 -2
  312. package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
  313. package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -2
  314. package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
  315. package/dist/src/components/Payroll/helpers.d.ts +22 -2
  316. package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +2 -2
  317. package/dist/src/helpers/dateFormatting.d.ts +13 -0
  318. package/dist/src/i18n/types.d.ts +96 -6
  319. package/dist/src/models/external.d.ts +63 -48
  320. package/dist/src/shared/constants.d.ts +1 -1
  321. package/dist/style.css +1 -1
  322. package/docs/guides/endpoint-inventory.json +33 -13
  323. package/package.json +21 -21
@@ -1 +1 @@
1
- {"version":3,"file":"OffCycleReasonSelectionPresentation.js","sources":["../../../../src/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { OffCycleReason } from './types'\nimport { RadioGroupField } from '@/components/Common'\n\ninterface OffCycleReasonSelectionPresentationProps {\n name: string\n onChange?: (value: OffCycleReason) => void\n /** CSS class name applied to the root element. */\n className?: string\n}\n\n/** @internal */\nexport function OffCycleReasonSelectionPresentation({\n name,\n onChange,\n className,\n}: OffCycleReasonSelectionPresentationProps) {\n const { t } = useTranslation('Payroll.OffCycleReasonSelection')\n\n const options = useMemo(\n () => [\n {\n value: 'correction' as OffCycleReason,\n label: t('options.correction.label'),\n description: t('options.correction.description'),\n },\n {\n value: 'bonus' as OffCycleReason,\n label: t('options.bonus.label'),\n description: t('options.bonus.description'),\n },\n ],\n [t],\n )\n\n return (\n <RadioGroupField<OffCycleReason>\n name={name}\n label={t('title')}\n options={options}\n isRequired\n onChange={onChange}\n className={className}\n />\n )\n}\n"],"names":["OffCycleReasonSelectionPresentation","name","onChange","className","t","useTranslation","options","useMemo","jsx","RadioGroupField"],"mappings":";;;;;;AAaO,SAASA,EAAoC;AAAA,EAClD,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAA6C;AAC3C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,iCAAiC,GAExDC,IAAUC;AAAA,IACd,MAAM;AAAA,MACJ;AAAA,QACE,OAAO;AAAA,QACP,OAAOH,EAAE,0BAA0B;AAAA,QACnC,aAAaA,EAAE,gCAAgC;AAAA,MAAA;AAAA,MAEjD;AAAA,QACE,OAAO;AAAA,QACP,OAAOA,EAAE,qBAAqB;AAAA,QAC9B,aAAaA,EAAE,2BAA2B;AAAA,MAAA;AAAA,IAC5C;AAAA,IAEF,CAACA,CAAC;AAAA,EAAA;AAGJ,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAR;AAAA,MACA,OAAOG,EAAE,OAAO;AAAA,MAChB,SAAAE;AAAA,MACA,YAAU;AAAA,MACV,UAAAJ;AAAA,MACA,WAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"OffCycleReasonSelectionPresentation.js","sources":["../../../../src/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { OffCycleReason } from './types'\nimport { RadioGroupField } from '@/components/Common'\n\ninterface OffCycleReasonSelectionPresentationProps {\n name: string\n onChange?: (value: OffCycleReason) => void\n /** CSS class name applied to the root element. */\n className?: string\n}\n\n/** @internal */\nexport function OffCycleReasonSelectionPresentation({\n name,\n onChange,\n className,\n}: OffCycleReasonSelectionPresentationProps) {\n const { t } = useTranslation('Payroll.OffCycleReasonSelection')\n\n const options = useMemo(\n () => [\n {\n value: 'correction' as OffCycleReason,\n label: t('options.correction.label'),\n description: t('options.correction.description'),\n },\n {\n value: 'bonus' as OffCycleReason,\n label: t('options.bonus.label'),\n description: t('options.bonus.description'),\n },\n ],\n [t],\n )\n\n return (\n <RadioGroupField<OffCycleReason>\n name={name}\n label={t('title')}\n options={options}\n isRequired\n onChange={onChange}\n className={className}\n />\n )\n}\n"],"names":["OffCycleReasonSelectionPresentation","name","onChange","className","t","useTranslation","options","useMemo","jsx","RadioGroupField"],"mappings":";;;;AAaO,SAASA,EAAoC;AAAA,EAClD,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAA6C;AAC3C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,iCAAiC,GAExDC,IAAUC;AAAA,IACd,MAAM;AAAA,MACJ;AAAA,QACE,OAAO;AAAA,QACP,OAAOH,EAAE,0BAA0B;AAAA,QACnC,aAAaA,EAAE,gCAAgC;AAAA,MAAA;AAAA,MAEjD;AAAA,QACE,OAAO;AAAA,QACP,OAAOA,EAAE,qBAAqB;AAAA,QAC9B,aAAaA,EAAE,2BAA2B;AAAA,MAAA;AAAA,IAC5C;AAAA,IAEF,CAACA,CAAC;AAAA,EAAA;AAGJ,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAR;AAAA,MACA,OAAOG,EAAE,OAAO;AAAA,MAChB,SAAAE;AAAA,MACA,YAAU;AAAA,MACV,UAAAJ;AAAA,MACA,WAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -5,24 +5,22 @@ import { useTranslation as L } from "react-i18next";
5
5
  import { WithholdingPayPeriod as N } from "@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls";
6
6
  import { WITHHOLDING_PAY_PERIOD_I18N_KEY as p } from "../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js";
7
7
  import t from "./OffCycleTaxWithholdingModal.module.scss.js";
8
- import "classnames";
9
- import "../../../shared/constants.js";
10
8
  import { ActionsLayout as T } from "../../Common/ActionsLayout/ActionsLayout.js";
11
9
  import { useComponentContext as W } from "../../../contexts/ComponentAdapter/useComponentContext.js";
12
10
  import { useI18n as w } from "../../../i18n/I18n.js";
13
11
  import { SelectField as D } from "../../Common/Fields/SelectField/SelectField.js";
14
12
  import { RadioGroupField as H } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
15
- function z({
13
+ function Y({
16
14
  isOpen: h,
17
15
  defaultConfig: f,
18
16
  onDone: g,
19
- onCancel: n
17
+ onCancel: r
20
18
  }) {
21
19
  w("Payroll.OffCycleTaxWithholding");
22
- const { t: e } = L("Payroll.OffCycleTaxWithholding"), { Modal: y, Heading: i, Text: a, Button: d } = W(), s = R(null), r = C({
20
+ const { t: e } = L("Payroll.OffCycleTaxWithholding"), { Modal: y, Heading: i, Text: a, Button: d } = W(), s = R(null), n = C({
23
21
  defaultValues: f
24
22
  }), S = x({
25
- control: r.control,
23
+ control: n.control,
26
24
  name: "withholdingPayPeriod"
27
25
  }), b = u(
28
26
  () => Object.values(N).map((m) => ({
@@ -48,18 +46,18 @@ function z({
48
46
  }
49
47
  ],
50
48
  [e, c]
51
- ), v = r.handleSubmit(g);
49
+ ), v = n.handleSubmit(g);
52
50
  return /* @__PURE__ */ o(
53
51
  y,
54
52
  {
55
53
  isOpen: h,
56
- onClose: n,
54
+ onClose: r,
57
55
  containerRef: s,
58
56
  footer: /* @__PURE__ */ l(T, { children: [
59
- /* @__PURE__ */ o(d, { variant: "secondary", onClick: n, children: e("modal.cancelButton") }),
57
+ /* @__PURE__ */ o(d, { variant: "secondary", onClick: r, children: e("modal.cancelButton") }),
60
58
  /* @__PURE__ */ o(d, { variant: "primary", onClick: v, children: e("modal.doneButton") })
61
59
  ] }),
62
- children: /* @__PURE__ */ o(O, { ...r, children: /* @__PURE__ */ l("div", { className: t.content, children: [
60
+ children: /* @__PURE__ */ o(O, { ...n, children: /* @__PURE__ */ l("div", { className: t.content, children: [
63
61
  /* @__PURE__ */ o(i, { as: "h2", children: e("modal.title") }),
64
62
  /* @__PURE__ */ l("div", { className: t.section, children: [
65
63
  /* @__PURE__ */ o(i, { as: "h3", children: e("modal.regularSection.title") }),
@@ -98,6 +96,6 @@ function z({
98
96
  );
99
97
  }
100
98
  export {
101
- z as OffCycleTaxWithholdingModal
99
+ Y as OffCycleTaxWithholdingModal
102
100
  };
103
101
  //# sourceMappingURL=OffCycleTaxWithholdingModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OffCycleTaxWithholdingModal.js","sources":["../../../../src/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react'\nimport { FormProvider, useForm, useWatch } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { WithholdingPayPeriod } from '@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls'\nimport { WITHHOLDING_PAY_PERIOD_I18N_KEY } from '../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes'\nimport type { OffCycleTaxWithholdingConfig } from '../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes'\nimport styles from './OffCycleTaxWithholdingModal.module.scss'\nimport type { OffCycleTaxWithholdingModalProps } from './OffCycleTaxWithholdingModalTypes'\nimport { ActionsLayout, SelectField, RadioGroupField } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\n\n/** @internal */\nexport function OffCycleTaxWithholdingModal({\n isOpen,\n defaultConfig,\n onDone,\n onCancel,\n}: OffCycleTaxWithholdingModalProps) {\n useI18n('Payroll.OffCycleTaxWithholding')\n const { t } = useTranslation('Payroll.OffCycleTaxWithholding')\n const { Modal, Heading, Text, Button } = useComponentContext()\n const modalContainerRef = useRef<HTMLDivElement>(null)\n\n const formHandlers = useForm<OffCycleTaxWithholdingConfig>({\n defaultValues: defaultConfig,\n })\n\n const currentWithholdingPayPeriod = useWatch({\n control: formHandlers.control,\n name: 'withholdingPayPeriod',\n })\n\n const frequencyOptions = useMemo(\n () =>\n Object.values(WithholdingPayPeriod).map(value => ({\n value,\n label: t(WITHHOLDING_PAY_PERIOD_I18N_KEY[value]),\n })),\n [t],\n )\n\n const frequencyDisplayText = t(\n WITHHOLDING_PAY_PERIOD_I18N_KEY[currentWithholdingPayPeriod],\n ).toLowerCase()\n\n const withholdingRateOptions = useMemo(\n () => [\n {\n value: 'supplemental' as const,\n label: t('modal.supplementalSection.useSupplementalRate'),\n description: t('modal.supplementalSection.useSupplementalRateDescription'),\n },\n {\n value: 'regular' as const,\n label: t('modal.supplementalSection.useRegularRate', {\n frequency: frequencyDisplayText,\n }),\n description: t('modal.supplementalSection.useRegularRateDescription'),\n },\n ],\n [t, frequencyDisplayText],\n )\n\n const handleSubmit = formHandlers.handleSubmit(onDone)\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onCancel}\n containerRef={modalContainerRef}\n footer={\n <ActionsLayout>\n <Button variant=\"secondary\" onClick={onCancel}>\n {t('modal.cancelButton')}\n </Button>\n <Button variant=\"primary\" onClick={handleSubmit}>\n {t('modal.doneButton')}\n </Button>\n </ActionsLayout>\n }\n >\n <FormProvider {...formHandlers}>\n <div className={styles.content}>\n <Heading as=\"h2\">{t('modal.title')}</Heading>\n\n <div className={styles.section}>\n <Heading as=\"h3\">{t('modal.regularSection.title')}</Heading>\n <Text variant=\"supporting\">{t('modal.regularSection.subtitle')}</Text>\n\n <div className={styles.rateInfo}>\n <Text weight=\"semibold\">{t('modal.regularSection.rateLabel')}</Text>\n <Text variant=\"supporting\">{t('modal.regularSection.rateDescription')}</Text>\n </div>\n\n <SelectField\n name=\"withholdingPayPeriod\"\n label={t('modal.regularSection.rateLabel')}\n placeholder={t('modal.regularSection.ratePlaceholder')}\n options={frequencyOptions}\n shouldVisuallyHideLabel\n portalContainer={modalContainerRef.current ?? undefined}\n />\n </div>\n\n <hr className={styles.divider} />\n\n <div className={styles.section}>\n <Heading as=\"h3\">{t('modal.supplementalSection.title')}</Heading>\n <RadioGroupField\n name=\"withholdingRate\"\n label={t('modal.supplementalSection.title')}\n options={withholdingRateOptions}\n shouldVisuallyHideLabel\n />\n </div>\n </div>\n </FormProvider>\n </Modal>\n )\n}\n"],"names":["OffCycleTaxWithholdingModal","isOpen","defaultConfig","onDone","onCancel","useI18n","t","useTranslation","Modal","Heading","Text","Button","useComponentContext","modalContainerRef","useRef","formHandlers","useForm","currentWithholdingPayPeriod","useWatch","frequencyOptions","useMemo","WithholdingPayPeriod","value","WITHHOLDING_PAY_PERIOD_I18N_KEY","frequencyDisplayText","withholdingRateOptions","handleSubmit","jsx","ActionsLayout","FormProvider","styles","jsxs","SelectField","RadioGroupField"],"mappings":"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"}
1
+ {"version":3,"file":"OffCycleTaxWithholdingModal.js","sources":["../../../../src/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react'\nimport { FormProvider, useForm, useWatch } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { WithholdingPayPeriod } from '@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls'\nimport { WITHHOLDING_PAY_PERIOD_I18N_KEY } from '../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes'\nimport type { OffCycleTaxWithholdingConfig } from '../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes'\nimport styles from './OffCycleTaxWithholdingModal.module.scss'\nimport type { OffCycleTaxWithholdingModalProps } from './OffCycleTaxWithholdingModalTypes'\nimport { ActionsLayout, SelectField, RadioGroupField } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\n\n/** @internal */\nexport function OffCycleTaxWithholdingModal({\n isOpen,\n defaultConfig,\n onDone,\n onCancel,\n}: OffCycleTaxWithholdingModalProps) {\n useI18n('Payroll.OffCycleTaxWithholding')\n const { t } = useTranslation('Payroll.OffCycleTaxWithholding')\n const { Modal, Heading, Text, Button } = useComponentContext()\n const modalContainerRef = useRef<HTMLDivElement>(null)\n\n const formHandlers = useForm<OffCycleTaxWithholdingConfig>({\n defaultValues: defaultConfig,\n })\n\n const currentWithholdingPayPeriod = useWatch({\n control: formHandlers.control,\n name: 'withholdingPayPeriod',\n })\n\n const frequencyOptions = useMemo(\n () =>\n Object.values(WithholdingPayPeriod).map(value => ({\n value,\n label: t(WITHHOLDING_PAY_PERIOD_I18N_KEY[value]),\n })),\n [t],\n )\n\n const frequencyDisplayText = t(\n WITHHOLDING_PAY_PERIOD_I18N_KEY[currentWithholdingPayPeriod],\n ).toLowerCase()\n\n const withholdingRateOptions = useMemo(\n () => [\n {\n value: 'supplemental' as const,\n label: t('modal.supplementalSection.useSupplementalRate'),\n description: t('modal.supplementalSection.useSupplementalRateDescription'),\n },\n {\n value: 'regular' as const,\n label: t('modal.supplementalSection.useRegularRate', {\n frequency: frequencyDisplayText,\n }),\n description: t('modal.supplementalSection.useRegularRateDescription'),\n },\n ],\n [t, frequencyDisplayText],\n )\n\n const handleSubmit = formHandlers.handleSubmit(onDone)\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onCancel}\n containerRef={modalContainerRef}\n footer={\n <ActionsLayout>\n <Button variant=\"secondary\" onClick={onCancel}>\n {t('modal.cancelButton')}\n </Button>\n <Button variant=\"primary\" onClick={handleSubmit}>\n {t('modal.doneButton')}\n </Button>\n </ActionsLayout>\n }\n >\n <FormProvider {...formHandlers}>\n <div className={styles.content}>\n <Heading as=\"h2\">{t('modal.title')}</Heading>\n\n <div className={styles.section}>\n <Heading as=\"h3\">{t('modal.regularSection.title')}</Heading>\n <Text variant=\"supporting\">{t('modal.regularSection.subtitle')}</Text>\n\n <div className={styles.rateInfo}>\n <Text weight=\"semibold\">{t('modal.regularSection.rateLabel')}</Text>\n <Text variant=\"supporting\">{t('modal.regularSection.rateDescription')}</Text>\n </div>\n\n <SelectField\n name=\"withholdingPayPeriod\"\n label={t('modal.regularSection.rateLabel')}\n placeholder={t('modal.regularSection.ratePlaceholder')}\n options={frequencyOptions}\n shouldVisuallyHideLabel\n portalContainer={modalContainerRef.current ?? undefined}\n />\n </div>\n\n <hr className={styles.divider} />\n\n <div className={styles.section}>\n <Heading as=\"h3\">{t('modal.supplementalSection.title')}</Heading>\n <RadioGroupField\n name=\"withholdingRate\"\n label={t('modal.supplementalSection.title')}\n options={withholdingRateOptions}\n shouldVisuallyHideLabel\n />\n </div>\n </div>\n </FormProvider>\n </Modal>\n )\n}\n"],"names":["OffCycleTaxWithholdingModal","isOpen","defaultConfig","onDone","onCancel","useI18n","t","useTranslation","Modal","Heading","Text","Button","useComponentContext","modalContainerRef","useRef","formHandlers","useForm","currentWithholdingPayPeriod","useWatch","frequencyOptions","useMemo","WithholdingPayPeriod","value","WITHHOLDING_PAY_PERIOD_I18N_KEY","frequencyDisplayText","withholdingRateOptions","handleSubmit","jsx","ActionsLayout","FormProvider","styles","jsxs","SelectField","RadioGroupField"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { jsx as r, jsxs as o, Fragment as _ } from "react/jsx-runtime";
2
- import { useRef as z } from "react";
3
- import K from "classnames";
4
- import { useTranslation as W, Trans as X } from "react-i18next";
5
- import { useFormatEmployeePayRate as q, getRegularHours as J, getOvertimeHours as Q, formatHoursDisplay as R, getTotalPtoHours as Y, getAdditionalEarnings as Z, getReimbursements as $, calculateGrossPay as ee } from "../helpers.js";
6
- import { PayrollCategory as E } from "../payrollTypes.js";
1
+ import { jsx as r, jsxs as o, Fragment as z } from "react/jsx-runtime";
2
+ import { useRef as K } from "react";
3
+ import W from "classnames";
4
+ import { useTranslation as X, Trans as q } from "react-i18next";
5
+ import { useFormatEmployeePayRate as J, getRegularHours as Q, getOvertimeHours as Y, formatHoursDisplay as E, getTotalPtoHours as Z, getAdditionalEarnings as $, getReimbursements as b, calculateGrossPay as ee } from "../helpers.js";
6
+ import { PayrollCategory as j } from "../payrollTypes.js";
7
7
  import { PayrollBlockerAlerts as te } from "../PayrollBlocker/components/PayrollBlockerAlerts.js";
8
8
  import re from "./PayrollConfigurationPresentation.module.scss.js";
9
9
  import { useI18n as ne } from "../../../i18n/I18n.js";
10
- import { Flex as u, FlexItem as b } from "../../Common/Flex/Flex.js";
10
+ import { Flex as u, FlexItem as D } from "../../Common/Flex/Flex.js";
11
11
  import { Grid as oe } from "../../Common/Grid/Grid.js";
12
12
  import { HamburgerMenu as ie } from "../../Common/HamburgerMenu/HamburgerMenu.js";
13
13
  import { useComponentContext as le } from "../../../contexts/ComponentAdapter/useComponentContext.js";
@@ -24,32 +24,32 @@ import { DataView as ye } from "../../Common/DataView/DataView.js";
24
24
  const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate, l.endDate) : { startDate: "", endDate: "" }, Ve = ({
25
25
  className: l,
26
26
  employeeCompensations: f,
27
- employeeDetails: j,
27
+ employeeDetails: w,
28
28
  payPeriod: g,
29
- paySchedule: w,
30
- onEdit: H,
31
- onToggleExclude: M,
32
- onCalculatePayroll: D,
33
- onViewBlockers: N,
34
- payrollCategory: y = E.Regular,
35
- alerts: P,
29
+ paySchedule: H,
30
+ onEdit: M,
31
+ onToggleExclude: N,
32
+ onCalculatePayroll: P,
33
+ onViewBlockers: F,
34
+ payrollCategory: y = j.Regular,
35
+ alerts: C,
36
36
  payrollAlert: m,
37
37
  isPending: h,
38
38
  isCalculating: a,
39
- payrollBlockers: C = [],
40
- pagination: F,
41
- withReimbursements: U = !0,
42
- isCalculateDisabled: k = !1,
43
- grossUpEnabled: B = !1,
44
- onGrossUpSelect: G
39
+ payrollBlockers: k = [],
40
+ pagination: U,
41
+ withReimbursements: B = !0,
42
+ isCalculateDisabled: x = !1,
43
+ grossUpEnabled: G = !1,
44
+ onGrossUpSelect: I
45
45
  }) => {
46
- const { Button: x, Heading: T, Text: d, Badge: I, Alert: O } = le();
46
+ const { Button: T, Heading: v, Text: d, Badge: O, Alert: S } = le();
47
47
  ne("Payroll.PayrollConfiguration");
48
- const { t } = W("Payroll.PayrollConfiguration"), S = de(), A = q(), L = fe("payrollRegularRateOfPay"), v = z(null), s = pe({ ref: v }).includes("small"), c = new Map(j.map((e) => [e.uuid, e])), V = (e) => {
48
+ const { t } = X("Payroll.PayrollConfiguration"), A = de(), L = J(), V = fe("payrollRegularRateOfPay"), R = K(null), s = pe({ ref: R }).includes("small"), c = new Map(w.map((e) => [e.uuid, e])), _ = (e) => {
49
49
  const n = c.get(e);
50
50
  return (n ? ue({ first_name: n.firstName, last_name: n.lastName }) : "") || t("unknownEmployeeFallback");
51
51
  };
52
- return /* @__PURE__ */ r("div", { ref: v, className: K(re.container, l), children: /* @__PURE__ */ o(u, { flexDirection: "column", gap: 32, children: [
52
+ return /* @__PURE__ */ r("div", { ref: R, className: W(re.container, l), children: /* @__PURE__ */ o(u, { flexDirection: "column", gap: 32, children: [
53
53
  /* @__PURE__ */ o(
54
54
  u,
55
55
  {
@@ -58,44 +58,44 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
58
58
  alignItems: s ? "center" : "stretch",
59
59
  gap: s ? 0 : 16,
60
60
  children: [
61
- /* @__PURE__ */ o(b, { children: [
62
- /* @__PURE__ */ r(T, { as: "h1", children: t("pageTitle") }),
61
+ /* @__PURE__ */ o(D, { children: [
62
+ /* @__PURE__ */ r(v, { as: "h1", children: t("pageTitle") }),
63
63
  g && /* @__PURE__ */ r(d, { variant: "supporting", children: /* @__PURE__ */ r(
64
- X,
64
+ q,
65
65
  {
66
- i18nKey: y === E.Dismissal ? "descriptionDismissal" : "description",
66
+ i18nKey: y === j.Dismissal ? "descriptionDismissal" : "description",
67
67
  t,
68
68
  components: { dateWrapper: /* @__PURE__ */ r(d, { weight: "bold", as: "span" }) },
69
69
  values: {
70
- ...he(g, S),
70
+ ...he(g, A),
71
71
  payrollType: y
72
72
  }
73
73
  }
74
74
  ) })
75
75
  ] }),
76
- /* @__PURE__ */ r(b, { flexGrow: 0, children: s ? /* @__PURE__ */ r(
77
- x,
76
+ /* @__PURE__ */ r(D, { flexGrow: 0, children: s ? /* @__PURE__ */ r(
77
+ T,
78
78
  {
79
79
  title: t("calculatePayrollTitle"),
80
- onClick: D,
81
- isDisabled: k || h || a,
80
+ onClick: P,
81
+ isDisabled: x || h || a,
82
82
  children: t(a ? "calculatingPayroll" : "calculatePayroll")
83
83
  }
84
84
  ) : /* @__PURE__ */ r(u, { flexDirection: "column", justifyContent: "normal", alignItems: "stretch", gap: 12, children: /* @__PURE__ */ r(
85
- x,
85
+ T,
86
86
  {
87
87
  title: t("calculatePayrollTitle"),
88
- onClick: D,
89
- isDisabled: k || h || a,
88
+ onClick: P,
89
+ isDisabled: x || h || a,
90
90
  children: t(a ? "calculatingPayroll" : "calculatePayroll")
91
91
  }
92
92
  ) }) })
93
93
  ]
94
94
  }
95
95
  ),
96
- (P || m) && /* @__PURE__ */ o(oe, { gap: 16, gridTemplateColumns: "1fr", children: [
97
- m && /* @__PURE__ */ r(O, { label: m.label, status: m.variant, children: m.content }),
98
- P
96
+ (C || m) && /* @__PURE__ */ o(oe, { gap: 16, gridTemplateColumns: "1fr", children: [
97
+ m && /* @__PURE__ */ r(S, { label: m.label, status: m.variant, children: m.content }),
98
+ C
99
99
  ] }),
100
100
  h ? /* @__PURE__ */ r(
101
101
  ge,
@@ -103,17 +103,17 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
103
103
  title: t(a ? "calculatingTitle" : "loadingTitle"),
104
104
  description: t(a ? "calculatingDescription" : "loadingDescription")
105
105
  }
106
- ) : /* @__PURE__ */ o(_, { children: [
107
- C.length > 0 && /* @__PURE__ */ r(
106
+ ) : /* @__PURE__ */ o(z, { children: [
107
+ k.length > 0 && /* @__PURE__ */ r(
108
108
  te,
109
109
  {
110
- blockers: C,
111
- onViewBlockersClick: N
110
+ blockers: k,
111
+ onViewBlockersClick: F
112
112
  }
113
113
  ),
114
114
  /* @__PURE__ */ o(u, { flexDirection: "column", gap: 20, children: [
115
- /* @__PURE__ */ o(b, { children: [
116
- /* @__PURE__ */ r(T, { as: "h2", styledAs: "h3", children: t("hoursAndEarningsTitle") }),
115
+ /* @__PURE__ */ o(D, { children: [
116
+ /* @__PURE__ */ r(v, { as: "h2", styledAs: "h3", children: t("hoursAndEarningsTitle") }),
117
117
  /* @__PURE__ */ r(d, { variant: "supporting", children: t("hoursAndEarningsDescription") })
118
118
  ] }),
119
119
  /* @__PURE__ */ r(
@@ -124,11 +124,11 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
124
124
  {
125
125
  title: t("tableColumns.employees"),
126
126
  render: (e) => {
127
- const n = c.get(e.employeeUuid || ""), i = A(n);
127
+ const n = c.get(e.employeeUuid || ""), i = L(n);
128
128
  return /* @__PURE__ */ o(u, { flexDirection: "column", gap: 0, children: [
129
- V(e.employeeUuid || ""),
129
+ _(e.employeeUuid || ""),
130
130
  i && /* @__PURE__ */ r(d, { size: "xs", variant: "supporting", children: i }),
131
- e.excluded && /* @__PURE__ */ r(I, { status: "warning", children: t("skippedBadge") })
131
+ e.excluded && /* @__PURE__ */ r(O, { status: "warning", children: t("skippedBadge") })
132
132
  ] });
133
133
  }
134
134
  },
@@ -136,32 +136,32 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
136
136
  title: t("tableColumns.hours"),
137
137
  justify: "end",
138
138
  render: (e) => {
139
- const n = J(e), i = Q(e);
140
- return R(n + i);
139
+ const n = Q(e), i = Y(e);
140
+ return E(n + i);
141
141
  }
142
142
  },
143
143
  {
144
144
  title: t("tableColumns.timeOff"),
145
145
  justify: "end",
146
146
  render: (e) => {
147
- const n = Y(e);
148
- return R(n);
147
+ const n = Z(e);
148
+ return E(n);
149
149
  }
150
150
  },
151
151
  {
152
152
  title: t("tableColumns.additionalEarnings"),
153
153
  justify: "end",
154
154
  render: (e) => {
155
- const n = Z(e);
155
+ const n = $(e);
156
156
  return p(n);
157
157
  }
158
158
  },
159
- ...U ? [
159
+ ...B ? [
160
160
  {
161
161
  title: t("tableColumns.reimbursements"),
162
162
  justify: "end",
163
163
  render: (e) => {
164
- const n = $(e);
164
+ const n = b(e);
165
165
  return p(n);
166
166
  }
167
167
  }
@@ -170,16 +170,18 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
170
170
  title: t("tableColumns.totalPay"),
171
171
  justify: "end",
172
172
  render: (e) => {
173
- if (L)
174
- return p(Number(e.grossPay ?? 0));
173
+ if (V)
174
+ return p(
175
+ Number(e.grossPay ?? 0) + b(e)
176
+ );
175
177
  const n = c.get(e.employeeUuid || ""), i = n ? ee(
176
178
  e,
177
179
  n,
178
180
  g?.startDate ?? void 0,
179
- w,
181
+ H,
180
182
  y
181
183
  ) : 0;
182
- return p(i);
184
+ return p(i + b(e));
183
185
  }
184
186
  }
185
187
  ],
@@ -193,22 +195,22 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
193
195
  icon: /* @__PURE__ */ r(ae, { "aria-hidden": !0 }),
194
196
  onClick: () => {
195
197
  const n = c.get(e.employeeUuid || "");
196
- n && H(n);
198
+ n && M(n);
197
199
  }
198
200
  },
199
201
  {
200
202
  label: t(e.excluded ? "editMenu.unskip" : "editMenu.skip"),
201
203
  icon: e.excluded ? /* @__PURE__ */ r(me, { "aria-hidden": !0 }) : /* @__PURE__ */ r(se, { "aria-hidden": !0 }),
202
204
  onClick: () => {
203
- c.get(e.employeeUuid || "") && M(e);
205
+ c.get(e.employeeUuid || "") && N(e);
204
206
  }
205
207
  },
206
- ...B ? [
208
+ ...G ? [
207
209
  {
208
210
  label: t("editMenu.setNetEarnings"),
209
211
  icon: /* @__PURE__ */ r(ce, { "aria-hidden": !0 }),
210
212
  onClick: () => {
211
- e.employeeUuid && G?.(e.employeeUuid);
213
+ e.employeeUuid && I?.(e.employeeUuid);
212
214
  }
213
215
  }
214
216
  ] : []
@@ -216,7 +218,7 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
216
218
  triggerLabel: t("editMenu.edit")
217
219
  }
218
220
  ),
219
- pagination: F
221
+ pagination: U
220
222
  }
221
223
  )
222
224
  ] })
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { useRef } from 'react'\nimport classNames from 'classnames'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleShow as PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport { Trans, useTranslation } from 'react-i18next'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport { PayrollCategory } from '../payrollTypes'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '../PayrollBlocker/components/PayrollBlockerAlerts'\nimport styles from './PayrollConfigurationPresentation.module.scss'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, FlexItem, Grid, PayrollLoading } from '@/components/Common'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport XCircle from '@/assets/icons/x-circle.svg?react'\nimport PlusCircle from '@/assets/icons/plus-circle.svg?react'\nimport CoinsHandSvg from '@/assets/icons/coins-hand.svg?react'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\n\ninterface PayrollConfigurationPresentationProps {\n /** CSS class name applied to the root element. */\n className?: string\n employeeCompensations: PayrollEmployeeCompensationsType[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n onToggleExclude: (employeeCompensation: PayrollEmployeeCompensationsType) => void\n onViewBlockers: () => void\n payrollCategory?: PayrollCategory\n alerts?: ReactNode\n payrollAlert?: {\n label: string\n content?: ReactNode\n variant: 'info' | 'warning'\n }\n isPending?: boolean\n isCalculating?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n pagination?: PaginationControlProps\n withReimbursements?: boolean\n isCalculateDisabled?: boolean\n grossUpEnabled?: boolean\n onGrossUpSelect?: (employeeUuid: string) => void\n}\n\nconst getPayrollConfigurationTitle = (\n payPeriod: PayrollPayPeriodType | undefined,\n dateFormatter: ReturnType<typeof useDateFormatter>,\n) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n return dateFormatter.formatPayPeriod(payPeriod.startDate, payPeriod.endDate)\n }\n return { startDate: '', endDate: '' }\n}\n\n/** @internal */\nexport const PayrollConfigurationPresentation = ({\n className,\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onToggleExclude,\n onCalculatePayroll,\n onViewBlockers,\n payrollCategory = PayrollCategory.Regular,\n alerts,\n payrollAlert,\n isPending,\n isCalculating,\n payrollBlockers = [],\n pagination,\n withReimbursements = true,\n isCalculateDisabled = false,\n grossUpEnabled = false,\n onGrossUpSelect,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, Alert } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const dateFormatter = useDateFormatter()\n const formatEmployeePayRate = useFormatEmployeePayRate()\n const isRegularRateOfPayEnabled = useUnstableFeature('payrollRegularRateOfPay')\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isDesktop = breakpoints.includes('small')\n\n const employeeMap = new Map(employeeDetails.map(employee => [employee.uuid, employee]))\n\n const getEmployeeName = (employeeUuid: string) => {\n const employee = employeeMap.get(employeeUuid)\n const name = employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : ''\n return name || t('unknownEmployeeFallback')\n }\n\n return (\n <div ref={containerRef} className={classNames(styles.container, className)}>\n <Flex flexDirection=\"column\" gap={32}>\n <Flex\n flexDirection={isDesktop ? 'row' : 'column'}\n justifyContent={isDesktop ? 'space-between' : 'normal'}\n alignItems={isDesktop ? 'center' : 'stretch'}\n gap={isDesktop ? 0 : 16}\n >\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n {payPeriod && (\n <Text variant=\"supporting\">\n <Trans\n i18nKey={\n payrollCategory === PayrollCategory.Dismissal\n ? 'descriptionDismissal'\n : 'description'\n }\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={{\n ...getPayrollConfigurationTitle(payPeriod, dateFormatter),\n payrollType: payrollCategory,\n }}\n />\n </Text>\n )}\n </FlexItem>\n <FlexItem flexGrow={isDesktop ? 0 : 0}>\n {isDesktop ? (\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isCalculateDisabled || isPending || isCalculating}\n >\n {isCalculating ? t('calculatingPayroll') : t('calculatePayroll')}\n </Button>\n ) : (\n <Flex flexDirection=\"column\" justifyContent=\"normal\" alignItems=\"stretch\" gap={12}>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isCalculateDisabled || isPending || isCalculating}\n >\n {isCalculating ? t('calculatingPayroll') : t('calculatePayroll')}\n </Button>\n </Flex>\n )}\n </FlexItem>\n </Flex>\n\n {(alerts || payrollAlert) && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {payrollAlert && (\n <Alert label={payrollAlert.label} status={payrollAlert.variant}>\n {payrollAlert.content}\n </Alert>\n )}\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <PayrollLoading\n title={isCalculating ? t('calculatingTitle') : t('loadingTitle')}\n description={isCalculating ? t('calculatingDescription') : t('loadingDescription')}\n />\n ) : (\n <>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onViewBlockersClick={onViewBlockers}\n />\n )}\n <Flex flexDirection=\"column\" gap={20}>\n <FlexItem>\n <Heading as=\"h2\" styledAs=\"h3\">\n {t('hoursAndEarningsTitle')}\n </Heading>\n <Text variant=\"supporting\">{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: t('tableColumns.employees'),\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={0}>\n {getEmployeeName(item.employeeUuid || '')}\n {payRateDisplay && (\n <Text size=\"xs\" variant=\"supporting\">\n {payRateDisplay}\n </Text>\n )}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: t('tableColumns.hours'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return formatHoursDisplay(hours + overtimeHours)\n },\n },\n {\n title: t('tableColumns.timeOff'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const ptoHours = getTotalPtoHours(item)\n return formatHoursDisplay(ptoHours)\n },\n },\n {\n title: t('tableColumns.additionalEarnings'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const earnings = getAdditionalEarnings(item)\n return formatNumberAsCurrency(earnings)\n },\n },\n ...(withReimbursements\n ? [\n {\n title: t('tableColumns.reimbursements'),\n justify: 'end' as const,\n render: (item: PayrollEmployeeCompensationsType) => {\n const reimbursements = getReimbursements(item)\n return formatNumberAsCurrency(reimbursements)\n },\n },\n ]\n : []),\n {\n title: t('tableColumns.totalPay'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n if (isRegularRateOfPayEnabled) {\n return formatNumberAsCurrency(Number(item.grossPay ?? 0))\n }\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate ?? undefined,\n paySchedule,\n payrollCategory,\n )\n : 0\n return formatNumberAsCurrency(calculatedGrossPay)\n },\n },\n ]}\n data={employeeCompensations}\n itemMenu={(item: PayrollEmployeeCompensationsType) => (\n <HamburgerMenu\n items={[\n {\n label: t('editMenu.edit'),\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onEdit(employee)\n }\n },\n },\n {\n label: t(item.excluded ? 'editMenu.unskip' : 'editMenu.skip'),\n icon: item.excluded ? <PlusCircle aria-hidden /> : <XCircle aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onToggleExclude(item)\n }\n },\n },\n ...(grossUpEnabled\n ? [\n {\n label: t('editMenu.setNetEarnings'),\n icon: <CoinsHandSvg aria-hidden />,\n onClick: () => {\n if (item.employeeUuid) {\n onGrossUpSelect?.(item.employeeUuid)\n }\n },\n },\n ]\n : []),\n ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n pagination={pagination}\n />\n </Flex>\n </>\n )}\n </Flex>\n </div>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","dateFormatter","PayrollConfigurationPresentation","className","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","payrollCategory","PayrollCategory","alerts","payrollAlert","isPending","isCalculating","payrollBlockers","pagination","withReimbursements","isCalculateDisabled","grossUpEnabled","onGrossUpSelect","Button","Heading","Text","Badge","Alert","useComponentContext","useI18n","useTranslation","useDateFormatter","formatEmployeePayRate","useFormatEmployeePayRate","isRegularRateOfPayEnabled","useUnstableFeature","containerRef","useRef","isDesktop","useContainerBreakpoints","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsx","classNames","styles","jsxs","Flex","FlexItem","Trans","Grid","PayrollLoading","Fragment","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","HamburgerMenu","PencilSvg","PlusCircle","XCircle","CoinsHandSvg"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { useRef } from 'react'\nimport classNames from 'classnames'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleShow as PayScheduleObject } from '@gusto/embedded-api/models/components/payschedulelistitem'\nimport { Trans, useTranslation } from 'react-i18next'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport { PayrollCategory } from '../payrollTypes'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '../PayrollBlocker/components/PayrollBlockerAlerts'\nimport styles from './PayrollConfigurationPresentation.module.scss'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, FlexItem, Grid, PayrollLoading } from '@/components/Common'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport XCircle from '@/assets/icons/x-circle.svg?react'\nimport PlusCircle from '@/assets/icons/plus-circle.svg?react'\nimport CoinsHandSvg from '@/assets/icons/coins-hand.svg?react'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\n\ninterface PayrollConfigurationPresentationProps {\n /** CSS class name applied to the root element. */\n className?: string\n employeeCompensations: PayrollEmployeeCompensationsType[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n onToggleExclude: (employeeCompensation: PayrollEmployeeCompensationsType) => void\n onViewBlockers: () => void\n payrollCategory?: PayrollCategory\n alerts?: ReactNode\n payrollAlert?: {\n label: string\n content?: ReactNode\n variant: 'info' | 'warning'\n }\n isPending?: boolean\n isCalculating?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n pagination?: PaginationControlProps\n withReimbursements?: boolean\n isCalculateDisabled?: boolean\n grossUpEnabled?: boolean\n onGrossUpSelect?: (employeeUuid: string) => void\n}\n\nconst getPayrollConfigurationTitle = (\n payPeriod: PayrollPayPeriodType | undefined,\n dateFormatter: ReturnType<typeof useDateFormatter>,\n) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n return dateFormatter.formatPayPeriod(payPeriod.startDate, payPeriod.endDate)\n }\n return { startDate: '', endDate: '' }\n}\n\n/** @internal */\nexport const PayrollConfigurationPresentation = ({\n className,\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onToggleExclude,\n onCalculatePayroll,\n onViewBlockers,\n payrollCategory = PayrollCategory.Regular,\n alerts,\n payrollAlert,\n isPending,\n isCalculating,\n payrollBlockers = [],\n pagination,\n withReimbursements = true,\n isCalculateDisabled = false,\n grossUpEnabled = false,\n onGrossUpSelect,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, Alert } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const dateFormatter = useDateFormatter()\n const formatEmployeePayRate = useFormatEmployeePayRate()\n const isRegularRateOfPayEnabled = useUnstableFeature('payrollRegularRateOfPay')\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isDesktop = breakpoints.includes('small')\n\n const employeeMap = new Map(employeeDetails.map(employee => [employee.uuid, employee]))\n\n const getEmployeeName = (employeeUuid: string) => {\n const employee = employeeMap.get(employeeUuid)\n const name = employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : ''\n return name || t('unknownEmployeeFallback')\n }\n\n return (\n <div ref={containerRef} className={classNames(styles.container, className)}>\n <Flex flexDirection=\"column\" gap={32}>\n <Flex\n flexDirection={isDesktop ? 'row' : 'column'}\n justifyContent={isDesktop ? 'space-between' : 'normal'}\n alignItems={isDesktop ? 'center' : 'stretch'}\n gap={isDesktop ? 0 : 16}\n >\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n {payPeriod && (\n <Text variant=\"supporting\">\n <Trans\n i18nKey={\n payrollCategory === PayrollCategory.Dismissal\n ? 'descriptionDismissal'\n : 'description'\n }\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={{\n ...getPayrollConfigurationTitle(payPeriod, dateFormatter),\n payrollType: payrollCategory,\n }}\n />\n </Text>\n )}\n </FlexItem>\n <FlexItem flexGrow={isDesktop ? 0 : 0}>\n {isDesktop ? (\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isCalculateDisabled || isPending || isCalculating}\n >\n {isCalculating ? t('calculatingPayroll') : t('calculatePayroll')}\n </Button>\n ) : (\n <Flex flexDirection=\"column\" justifyContent=\"normal\" alignItems=\"stretch\" gap={12}>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isCalculateDisabled || isPending || isCalculating}\n >\n {isCalculating ? t('calculatingPayroll') : t('calculatePayroll')}\n </Button>\n </Flex>\n )}\n </FlexItem>\n </Flex>\n\n {(alerts || payrollAlert) && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {payrollAlert && (\n <Alert label={payrollAlert.label} status={payrollAlert.variant}>\n {payrollAlert.content}\n </Alert>\n )}\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <PayrollLoading\n title={isCalculating ? t('calculatingTitle') : t('loadingTitle')}\n description={isCalculating ? t('calculatingDescription') : t('loadingDescription')}\n />\n ) : (\n <>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onViewBlockersClick={onViewBlockers}\n />\n )}\n <Flex flexDirection=\"column\" gap={20}>\n <FlexItem>\n <Heading as=\"h2\" styledAs=\"h3\">\n {t('hoursAndEarningsTitle')}\n </Heading>\n <Text variant=\"supporting\">{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: t('tableColumns.employees'),\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={0}>\n {getEmployeeName(item.employeeUuid || '')}\n {payRateDisplay && (\n <Text size=\"xs\" variant=\"supporting\">\n {payRateDisplay}\n </Text>\n )}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: t('tableColumns.hours'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return formatHoursDisplay(hours + overtimeHours)\n },\n },\n {\n title: t('tableColumns.timeOff'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const ptoHours = getTotalPtoHours(item)\n return formatHoursDisplay(ptoHours)\n },\n },\n {\n title: t('tableColumns.additionalEarnings'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const earnings = getAdditionalEarnings(item)\n return formatNumberAsCurrency(earnings)\n },\n },\n ...(withReimbursements\n ? [\n {\n title: t('tableColumns.reimbursements'),\n justify: 'end' as const,\n render: (item: PayrollEmployeeCompensationsType) => {\n const reimbursements = getReimbursements(item)\n return formatNumberAsCurrency(reimbursements)\n },\n },\n ]\n : []),\n {\n title: t('tableColumns.totalPay'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n if (isRegularRateOfPayEnabled) {\n return formatNumberAsCurrency(\n Number(item.grossPay ?? 0) + getReimbursements(item),\n )\n }\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate ?? undefined,\n paySchedule,\n payrollCategory,\n )\n : 0\n return formatNumberAsCurrency(calculatedGrossPay + getReimbursements(item))\n },\n },\n ]}\n data={employeeCompensations}\n itemMenu={(item: PayrollEmployeeCompensationsType) => (\n <HamburgerMenu\n items={[\n {\n label: t('editMenu.edit'),\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onEdit(employee)\n }\n },\n },\n {\n label: t(item.excluded ? 'editMenu.unskip' : 'editMenu.skip'),\n icon: item.excluded ? <PlusCircle aria-hidden /> : <XCircle aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onToggleExclude(item)\n }\n },\n },\n ...(grossUpEnabled\n ? [\n {\n label: t('editMenu.setNetEarnings'),\n icon: <CoinsHandSvg aria-hidden />,\n onClick: () => {\n if (item.employeeUuid) {\n onGrossUpSelect?.(item.employeeUuid)\n }\n },\n },\n ]\n : []),\n ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n pagination={pagination}\n />\n </Flex>\n </>\n )}\n </Flex>\n </div>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","dateFormatter","PayrollConfigurationPresentation","className","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","payrollCategory","PayrollCategory","alerts","payrollAlert","isPending","isCalculating","payrollBlockers","pagination","withReimbursements","isCalculateDisabled","grossUpEnabled","onGrossUpSelect","Button","Heading","Text","Badge","Alert","useComponentContext","useI18n","useTranslation","useDateFormatter","formatEmployeePayRate","useFormatEmployeePayRate","isRegularRateOfPayEnabled","useUnstableFeature","containerRef","useRef","isDesktop","useContainerBreakpoints","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsx","classNames","styles","jsxs","Flex","FlexItem","Trans","Grid","PayrollLoading","Fragment","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","HamburgerMenu","PencilSvg","PlusCircle","XCircle","CoinsHandSvg"],"mappings":"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"}
@@ -81,7 +81,7 @@ function De({
81
81
  ), t = e.find((s) => !s.ok);
82
82
  if (t)
83
83
  throw t.error;
84
- return e.filter((s) => s.ok).map((s) => s.value.employee).filter((s) => s != null);
84
+ return e.filter((s) => s.ok).map((s) => s.value.employeeShow).filter((s) => s != null);
85
85
  },
86
86
  enabled: u.length > 0 && !d,
87
87
  staleTime: A
@@ -1 +1 @@
1
- {"version":3,"file":"usePayrollConfigurationData.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData, useQuery, useQueryClient } from '@tanstack/react-query'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsPrepare } from '@gusto/embedded-api/funcs/payrollsPrepare'\nimport { employeesGet } from '@gusto/embedded-api/funcs/employeesGet'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport type { PayrollCategory } from '../payrollTypes'\nimport { derivePayrollCategory } from '../payrollTypes'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\ninterface UsePayrollConfigurationDataParams {\n companyId: string\n payrollId: string\n /** When true, don't call prepare and cancel any prepare already running. */\n disablePrepare?: boolean\n excludedEmployeeUuids?: string[]\n /**\n * When true, prepare is called without a roster. A transition payroll's roster is fixed by the\n * pay-schedule transition, so the API rejects any `employeeUuids` sent to prepare.\n */\n isTransitionPayroll?: boolean\n}\n\ninterface UsePayrollConfigurationDataReturn {\n employeeCompensations: PayrollEmployeeCompensationsType[]\n employeeDetails: Employee[]\n payPeriod: PayrollPayPeriodType | undefined\n paySchedule: PayScheduleShow | undefined\n payrollCategory: PayrollCategory\n pagination: PaginationControlProps\n isLoading: boolean\n isAlreadyProcessed: boolean\n refetch: () => Promise<void>\n}\n\n/** @internal */\nexport const PREPARE_QUERY_KEY = 'payroll-prepare'\nconst FIVE_MINUTES = 5 * 60 * 1000\nconst PREPARE_MAX_ATTEMPTS = 3\n\nconst isAlreadyProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/** @internal */\nexport function usePayrollConfigurationData({\n companyId,\n payrollId,\n disablePrepare = false,\n excludedEmployeeUuids = [],\n isTransitionPayroll = false,\n}: UsePayrollConfigurationDataParams): UsePayrollConfigurationDataReturn {\n const gustoClient = useGustoEmbeddedContext()\n const queryClient = useQueryClient()\n\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const [displayedEmployees, setDisplayedEmployees] = useState<Employee[]>([])\n const [isDataInSync, setIsDataInSync] = useState(false)\n const hasInitialDataRef = useRef(false)\n\n const { data: employeeData, isFetching: isFetchingEmployeeData } = useEmployeesList(\n {\n companyId,\n payrollUuid: payrollId,\n per: itemsPerPage,\n page: currentPage,\n sortBy: 'name',\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n\n const employeeDataRef = useRef(employeeData)\n employeeDataRef.current = employeeData\n\n const listedEmployeeUuids = useMemo(() => {\n return employeeData?.showEmployees?.map(e => e.uuid) || []\n }, [employeeData?.showEmployees])\n\n const missingExcludedUuids = useMemo(() => {\n const listedSet = new Set(listedEmployeeUuids)\n return excludedEmployeeUuids.filter(uuid => !listedSet.has(uuid))\n }, [excludedEmployeeUuids, listedEmployeeUuids])\n\n const employeeUuids = useMemo(() => {\n if (currentPage === 1) {\n return [...listedEmployeeUuids, ...missingExcludedUuids]\n }\n return listedEmployeeUuids\n }, [listedEmployeeUuids, missingExcludedUuids, currentPage])\n\n const employeeUuidsKey = useMemo(() => employeeUuids.join(','), [employeeUuids])\n\n const {\n data: prepareData,\n error: prepareError,\n isLoading: isPrepareLoading,\n isFetching: isPrepareFetching,\n } = useQuery({\n queryKey: [PREPARE_QUERY_KEY, payrollId, employeeUuidsKey],\n queryFn: async ({ signal }) => {\n const result = await payrollsPrepare(\n gustoClient,\n {\n companyId,\n payrollId,\n sortBy: 'last_name',\n requestBody: {\n employeeUuids: isTransitionPayroll ? undefined : employeeUuids,\n },\n },\n { signal },\n )\n\n if (!result.ok) {\n throw result.error\n }\n\n return result.value.payrollPrepared\n },\n enabled: employeeUuids.length > 0 && !disablePrepare,\n staleTime: FIVE_MINUTES,\n placeholderData: keepPreviousData,\n throwOnError: error => !isAlreadyProcessedError(error),\n // An \"already processed\" prepare failure is terminal — retrying it wastes time. Other\n // errors (network blips, etc.) still get the standard retry treatment.\n retry: (failureCount, error) =>\n !isAlreadyProcessedError(error) && failureCount < PREPARE_MAX_ATTEMPTS,\n })\n\n const isAlreadyProcessed = isAlreadyProcessedError(prepareError)\n\n useEffect(() => {\n return () => {\n void queryClient.cancelQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }\n }, [queryClient, payrollId])\n\n useEffect(() => {\n if (disablePrepare) {\n void queryClient.cancelQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }\n }, [disablePrepare, queryClient, payrollId])\n\n const excludedUuidsKey = useMemo(() => missingExcludedUuids.join(','), [missingExcludedUuids])\n\n const { data: excludedEmployeeDetails } = useQuery({\n queryKey: ['excluded-employee-details', excludedUuidsKey],\n queryFn: async () => {\n const results = await Promise.all(\n missingExcludedUuids.map(uuid => employeesGet(gustoClient, { employeeId: uuid })),\n )\n const failedResult = results.find(result => !result.ok)\n if (failedResult) {\n throw failedResult.error\n }\n\n return results\n .filter(result => result.ok)\n .map(result => result.value.employee)\n .filter((e): e is Employee => e != null)\n },\n enabled: missingExcludedUuids.length > 0 && !disablePrepare,\n staleTime: FIVE_MINUTES,\n })\n\n const syncData = useCallback(() => {\n const currentEmployeeData = employeeDataRef.current\n if (!currentEmployeeData?.showEmployees || !prepareData?.employeeCompensations) {\n setIsDataInSync(false)\n return\n }\n\n const currentUuids = currentEmployeeData.showEmployees.map(e => e.uuid)\n const preparedUuids = new Set(prepareData.employeeCompensations.map(c => c.employeeUuid))\n const allListedInSync =\n currentUuids.length > 0 && currentUuids.every(uuid => preparedUuids.has(uuid))\n\n if (allListedInSync) {\n const mergedEmployees = [...currentEmployeeData.showEmployees]\n if (currentPage === 1 && excludedEmployeeDetails?.length) {\n const listedSet = new Set(currentUuids)\n for (const employee of excludedEmployeeDetails) {\n if (!listedSet.has(employee.uuid)) {\n mergedEmployees.push(employee)\n }\n }\n }\n setDisplayedEmployees(mergedEmployees)\n setIsDataInSync(true)\n hasInitialDataRef.current = true\n } else {\n setIsDataInSync(false)\n }\n }, [prepareData?.employeeCompensations, excludedEmployeeDetails, currentPage])\n\n useEffect(() => {\n syncData()\n }, [syncData])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: prepareData?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!prepareData?.payPeriod?.payScheduleUuid,\n },\n )\n\n const handleRefetch = useCallback(async () => {\n await queryClient.invalidateQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }, [queryClient, payrollId])\n\n const isInitialLoading = isPrepareLoading && !hasInitialDataRef.current\n const isPaginating = isPrepareFetching && hasInitialDataRef.current\n const isPaginationFetching = isFetchingEmployeeData || isPaginating || !isDataInSync\n const isLoading =\n isInitialLoading || isPayScheduleLoading || (!employeeData && isFetchingEmployeeData)\n\n const headers = employeeData?.httpMeta.response.headers ?? new Headers()\n const pagination: PaginationControlProps = getPaginationProps(headers, isPaginationFetching)\n\n return {\n employeeCompensations: prepareData?.employeeCompensations ?? [],\n employeeDetails: displayedEmployees,\n payPeriod: prepareData?.payPeriod,\n paySchedule: payScheduleData?.payScheduleShow,\n payrollCategory: derivePayrollCategory(prepareData ?? {}),\n pagination,\n isLoading,\n isAlreadyProcessed,\n refetch: handleRefetch,\n }\n}\n"],"names":["PREPARE_QUERY_KEY","FIVE_MINUTES","PREPARE_MAX_ATTEMPTS","isAlreadyProcessedError","error","UnprocessableEntityError","e","usePayrollConfigurationData","companyId","payrollId","disablePrepare","excludedEmployeeUuids","isTransitionPayroll","gustoClient","useGustoEmbeddedContext","queryClient","useQueryClient","currentPage","itemsPerPage","getPaginationProps","usePagination","displayedEmployees","setDisplayedEmployees","useState","isDataInSync","setIsDataInSync","hasInitialDataRef","useRef","employeeData","isFetchingEmployeeData","useEmployeesList","keepPreviousData","employeeDataRef","listedEmployeeUuids","useMemo","missingExcludedUuids","listedSet","uuid","employeeUuids","employeeUuidsKey","prepareData","prepareError","isPrepareLoading","isPrepareFetching","useQuery","signal","result","payrollsPrepare","failureCount","isAlreadyProcessed","useEffect","excludedUuidsKey","excludedEmployeeDetails","results","employeesGet","failedResult","syncData","useCallback","currentEmployeeData","currentUuids","preparedUuids","c","mergedEmployees","employee","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","handleRefetch","isInitialLoading","isPaginating","isPaginationFetching","isLoading","headers","pagination","derivePayrollCategory"],"mappings":"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"}
1
+ {"version":3,"file":"usePayrollConfigurationData.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData, useQuery, useQueryClient } from '@tanstack/react-query'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsPrepare } from '@gusto/embedded-api/funcs/payrollsPrepare'\nimport { employeesGet } from '@gusto/embedded-api/funcs/employeesGet'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payschedulelistitem'\nimport type { PayrollCategory } from '../payrollTypes'\nimport { derivePayrollCategory } from '../payrollTypes'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\ninterface UsePayrollConfigurationDataParams {\n companyId: string\n payrollId: string\n /** When true, don't call prepare and cancel any prepare already running. */\n disablePrepare?: boolean\n excludedEmployeeUuids?: string[]\n /**\n * When true, prepare is called without a roster. A transition payroll's roster is fixed by the\n * pay-schedule transition, so the API rejects any `employeeUuids` sent to prepare.\n */\n isTransitionPayroll?: boolean\n}\n\ninterface UsePayrollConfigurationDataReturn {\n employeeCompensations: PayrollEmployeeCompensationsType[]\n employeeDetails: Employee[]\n payPeriod: PayrollPayPeriodType | undefined\n paySchedule: PayScheduleShow | undefined\n payrollCategory: PayrollCategory\n pagination: PaginationControlProps\n isLoading: boolean\n isAlreadyProcessed: boolean\n refetch: () => Promise<void>\n}\n\n/** @internal */\nexport const PREPARE_QUERY_KEY = 'payroll-prepare'\nconst FIVE_MINUTES = 5 * 60 * 1000\nconst PREPARE_MAX_ATTEMPTS = 3\n\nconst isAlreadyProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/** @internal */\nexport function usePayrollConfigurationData({\n companyId,\n payrollId,\n disablePrepare = false,\n excludedEmployeeUuids = [],\n isTransitionPayroll = false,\n}: UsePayrollConfigurationDataParams): UsePayrollConfigurationDataReturn {\n const gustoClient = useGustoEmbeddedContext()\n const queryClient = useQueryClient()\n\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const [displayedEmployees, setDisplayedEmployees] = useState<Employee[]>([])\n const [isDataInSync, setIsDataInSync] = useState(false)\n const hasInitialDataRef = useRef(false)\n\n const { data: employeeData, isFetching: isFetchingEmployeeData } = useEmployeesList(\n {\n companyId,\n payrollUuid: payrollId,\n per: itemsPerPage,\n page: currentPage,\n sortBy: 'name',\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n\n const employeeDataRef = useRef(employeeData)\n employeeDataRef.current = employeeData\n\n const listedEmployeeUuids = useMemo(() => {\n return employeeData?.showEmployees?.map(e => e.uuid) || []\n }, [employeeData?.showEmployees])\n\n const missingExcludedUuids = useMemo(() => {\n const listedSet = new Set(listedEmployeeUuids)\n return excludedEmployeeUuids.filter(uuid => !listedSet.has(uuid))\n }, [excludedEmployeeUuids, listedEmployeeUuids])\n\n const employeeUuids = useMemo(() => {\n if (currentPage === 1) {\n return [...listedEmployeeUuids, ...missingExcludedUuids]\n }\n return listedEmployeeUuids\n }, [listedEmployeeUuids, missingExcludedUuids, currentPage])\n\n const employeeUuidsKey = useMemo(() => employeeUuids.join(','), [employeeUuids])\n\n const {\n data: prepareData,\n error: prepareError,\n isLoading: isPrepareLoading,\n isFetching: isPrepareFetching,\n } = useQuery({\n queryKey: [PREPARE_QUERY_KEY, payrollId, employeeUuidsKey],\n queryFn: async ({ signal }) => {\n const result = await payrollsPrepare(\n gustoClient,\n {\n companyId,\n payrollId,\n sortBy: 'last_name',\n requestBody: {\n employeeUuids: isTransitionPayroll ? undefined : employeeUuids,\n },\n },\n { signal },\n )\n\n if (!result.ok) {\n throw result.error\n }\n\n return result.value.payrollPrepared\n },\n enabled: employeeUuids.length > 0 && !disablePrepare,\n staleTime: FIVE_MINUTES,\n placeholderData: keepPreviousData,\n throwOnError: error => !isAlreadyProcessedError(error),\n // An \"already processed\" prepare failure is terminal — retrying it wastes time. Other\n // errors (network blips, etc.) still get the standard retry treatment.\n retry: (failureCount, error) =>\n !isAlreadyProcessedError(error) && failureCount < PREPARE_MAX_ATTEMPTS,\n })\n\n const isAlreadyProcessed = isAlreadyProcessedError(prepareError)\n\n useEffect(() => {\n return () => {\n void queryClient.cancelQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }\n }, [queryClient, payrollId])\n\n useEffect(() => {\n if (disablePrepare) {\n void queryClient.cancelQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }\n }, [disablePrepare, queryClient, payrollId])\n\n const excludedUuidsKey = useMemo(() => missingExcludedUuids.join(','), [missingExcludedUuids])\n\n const { data: excludedEmployeeDetails } = useQuery({\n queryKey: ['excluded-employee-details', excludedUuidsKey],\n queryFn: async () => {\n const results = await Promise.all(\n missingExcludedUuids.map(uuid => employeesGet(gustoClient, { employeeId: uuid })),\n )\n const failedResult = results.find(result => !result.ok)\n if (failedResult) {\n throw failedResult.error\n }\n\n return results\n .filter(result => result.ok)\n .map(result => result.value.employeeShow)\n .filter((e): e is Employee => e != null)\n },\n enabled: missingExcludedUuids.length > 0 && !disablePrepare,\n staleTime: FIVE_MINUTES,\n })\n\n const syncData = useCallback(() => {\n const currentEmployeeData = employeeDataRef.current\n if (!currentEmployeeData?.showEmployees || !prepareData?.employeeCompensations) {\n setIsDataInSync(false)\n return\n }\n\n const currentUuids = currentEmployeeData.showEmployees.map(e => e.uuid)\n const preparedUuids = new Set(prepareData.employeeCompensations.map(c => c.employeeUuid))\n const allListedInSync =\n currentUuids.length > 0 && currentUuids.every(uuid => preparedUuids.has(uuid))\n\n if (allListedInSync) {\n const mergedEmployees = [...currentEmployeeData.showEmployees]\n if (currentPage === 1 && excludedEmployeeDetails?.length) {\n const listedSet = new Set(currentUuids)\n for (const employee of excludedEmployeeDetails) {\n if (!listedSet.has(employee.uuid)) {\n mergedEmployees.push(employee)\n }\n }\n }\n setDisplayedEmployees(mergedEmployees)\n setIsDataInSync(true)\n hasInitialDataRef.current = true\n } else {\n setIsDataInSync(false)\n }\n }, [prepareData?.employeeCompensations, excludedEmployeeDetails, currentPage])\n\n useEffect(() => {\n syncData()\n }, [syncData])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: prepareData?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!prepareData?.payPeriod?.payScheduleUuid,\n },\n )\n\n const handleRefetch = useCallback(async () => {\n await queryClient.invalidateQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }, [queryClient, payrollId])\n\n const isInitialLoading = isPrepareLoading && !hasInitialDataRef.current\n const isPaginating = isPrepareFetching && hasInitialDataRef.current\n const isPaginationFetching = isFetchingEmployeeData || isPaginating || !isDataInSync\n const isLoading =\n isInitialLoading || isPayScheduleLoading || (!employeeData && isFetchingEmployeeData)\n\n const headers = employeeData?.httpMeta.response.headers ?? new Headers()\n const pagination: PaginationControlProps = getPaginationProps(headers, isPaginationFetching)\n\n return {\n employeeCompensations: prepareData?.employeeCompensations ?? [],\n employeeDetails: displayedEmployees,\n payPeriod: prepareData?.payPeriod,\n paySchedule: payScheduleData?.payScheduleShow,\n payrollCategory: derivePayrollCategory(prepareData ?? {}),\n pagination,\n isLoading,\n isAlreadyProcessed,\n refetch: handleRefetch,\n }\n}\n"],"names":["PREPARE_QUERY_KEY","FIVE_MINUTES","PREPARE_MAX_ATTEMPTS","isAlreadyProcessedError","error","UnprocessableEntityError","e","usePayrollConfigurationData","companyId","payrollId","disablePrepare","excludedEmployeeUuids","isTransitionPayroll","gustoClient","useGustoEmbeddedContext","queryClient","useQueryClient","currentPage","itemsPerPage","getPaginationProps","usePagination","displayedEmployees","setDisplayedEmployees","useState","isDataInSync","setIsDataInSync","hasInitialDataRef","useRef","employeeData","isFetchingEmployeeData","useEmployeesList","keepPreviousData","employeeDataRef","listedEmployeeUuids","useMemo","missingExcludedUuids","listedSet","uuid","employeeUuids","employeeUuidsKey","prepareData","prepareError","isPrepareLoading","isPrepareFetching","useQuery","signal","result","payrollsPrepare","failureCount","isAlreadyProcessed","useEffect","excludedUuidsKey","excludedEmployeeDetails","results","employeesGet","failedResult","syncData","useCallback","currentEmployeeData","currentUuids","preparedUuids","c","mergedEmployees","employee","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","handleRefetch","isInitialLoading","isPaginating","isPaginationFetching","isLoading","headers","pagination","derivePayrollCategory"],"mappings":"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"}