@gusto/embedded-react-sdk 0.14.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/assets/icons/plus-circle.svg.js +10 -0
  3. package/dist/assets/icons/plus-circle.svg.js.map +1 -0
  4. package/dist/assets/icons/x-circle.svg.js +10 -0
  5. package/dist/assets/icons/x-circle.svg.js.map +1 -0
  6. package/dist/components/Common/SignatureForm/SignatureForm.js +1 -1
  7. package/dist/components/Common/SignatureForm/SignatureFormActions.js +1 -1
  8. package/dist/components/Common/SignatureForm/SignatureFormFields.js +1 -1
  9. package/dist/components/Common/UI/Alert/Alert.module.scss.js +14 -14
  10. package/dist/components/Common/UI/Button/ButtonIcon.module.scss.js +1 -1
  11. package/dist/components/Common/index.d.ts +1 -0
  12. package/dist/components/Company/AssignSignatory/AssignSignatory.js +7 -6
  13. package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
  14. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +2 -3
  15. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  16. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +2 -3
  17. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  18. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +3 -2
  19. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  20. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +14 -13
  21. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  22. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
  23. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  24. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +2 -3
  25. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  26. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +6 -5
  27. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  28. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +11 -10
  29. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  30. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
  31. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  32. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
  33. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  34. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +6 -6
  35. package/dist/components/Company/BankAccount/BankAccountForm/Form.js +8 -9
  36. package/dist/components/Company/BankAccount/BankAccountForm/Form.js.map +1 -1
  37. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
  38. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  39. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +8 -9
  40. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  41. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +7 -8
  42. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  43. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js +4 -5
  44. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js.map +1 -1
  45. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +2 -3
  46. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  47. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +3 -2
  48. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  49. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
  50. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  51. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +7 -6
  52. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  53. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +3 -4
  54. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  55. package/dist/components/Company/FederalTaxes/Actions.js +5 -6
  56. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  57. package/dist/components/Company/FederalTaxes/FederalTaxes.js +13 -12
  58. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  59. package/dist/components/Company/FederalTaxes/Form.js +3 -4
  60. package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
  61. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +8 -9
  62. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  63. package/dist/components/Company/Industry/Actions.js +2 -3
  64. package/dist/components/Company/Industry/Actions.js.map +1 -1
  65. package/dist/components/Company/Industry/Context.js +6 -7
  66. package/dist/components/Company/Industry/Context.js.map +1 -1
  67. package/dist/components/Company/Industry/Edit.js +4 -5
  68. package/dist/components/Company/Industry/Edit.js.map +1 -1
  69. package/dist/components/Company/Locations/LocationForm/Actions.js +6 -7
  70. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  71. package/dist/components/Company/Locations/LocationForm/Form.js +6 -5
  72. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  73. package/dist/components/Company/Locations/LocationForm/LocationForm.js +11 -10
  74. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  75. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
  76. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  77. package/dist/components/Company/Locations/LocationsList/Actions.js +6 -7
  78. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  79. package/dist/components/Company/Locations/LocationsList/List.js +9 -10
  80. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  81. package/dist/components/Company/Locations/LocationsList/LocationsList.js +7 -6
  82. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  83. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
  84. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  85. package/dist/components/Company/OnboardingOverview/Completed.js +10 -11
  86. package/dist/components/Company/OnboardingOverview/Completed.js.map +1 -1
  87. package/dist/components/Company/OnboardingOverview/MissingRequirements.js +6 -7
  88. package/dist/components/Company/OnboardingOverview/MissingRequirements.js.map +1 -1
  89. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +3 -2
  90. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  91. package/dist/components/Company/OnboardingOverview/context.js +3 -4
  92. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  93. package/dist/components/Company/PaySchedule/PaySchedule.js +34 -33
  94. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  95. package/dist/components/Company/PaySchedule/_parts/Actions.js +9 -10
  96. package/dist/components/Company/PaySchedule/_parts/Actions.js.map +1 -1
  97. package/dist/components/Company/PaySchedule/_parts/Edit.js +17 -16
  98. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  99. package/dist/components/Company/PaySchedule/_parts/Head.js +6 -7
  100. package/dist/components/Company/PaySchedule/_parts/Head.js.map +1 -1
  101. package/dist/components/Company/PaySchedule/_parts/List.js +14 -15
  102. package/dist/components/Company/PaySchedule/_parts/List.js.map +1 -1
  103. package/dist/components/Company/PaySchedule/usePaySchedule.js +5 -6
  104. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  105. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +2 -3
  106. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  107. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
  108. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  109. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +2 -3
  110. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  111. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +2 -3
  112. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  113. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
  114. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  115. package/dist/components/Contractor/Address/Address.js +5 -4
  116. package/dist/components/Contractor/Address/Address.js.map +1 -1
  117. package/dist/components/Contractor/Address/Form.js +4 -3
  118. package/dist/components/Contractor/Address/Form.js.map +1 -1
  119. package/dist/components/Contractor/Address/useAddress.js +5 -6
  120. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  121. package/dist/components/Contractor/ContractorList/index.js +17 -17
  122. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +5 -6
  123. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js.map +1 -1
  124. package/dist/components/Contractor/Profile/ContractorProfileForm.js +13 -13
  125. package/dist/components/Contractor/Profile/useContractorProfile.js +2 -3
  126. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  127. package/dist/components/Contractor/Submit/Submit.js +1 -1
  128. package/dist/components/Employee/Compensation/Actions.js +1 -1
  129. package/dist/components/Employee/Compensation/Compensation.js +144 -147
  130. package/dist/components/Employee/Compensation/Compensation.js.map +1 -1
  131. package/dist/components/Employee/Compensation/Edit.js +38 -37
  132. package/dist/components/Employee/Compensation/Edit.js.map +1 -1
  133. package/dist/components/Employee/Compensation/List.js +22 -23
  134. package/dist/components/Employee/Compensation/List.js.map +1 -1
  135. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +10 -11
  136. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
  137. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +32 -33
  138. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
  139. package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js +8 -8
  140. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js +7 -7
  141. package/dist/components/Employee/Deductions/IncludeDeductionsForm/IncludeDeductionsForm.js +8 -8
  142. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js +6 -7
  143. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js.map +1 -1
  144. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +8 -7
  145. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  146. package/dist/components/Employee/DocumentSigner/DocumentList/List.js +2 -3
  147. package/dist/components/Employee/DocumentSigner/DocumentList/List.js.map +1 -1
  148. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +3 -4
  149. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  150. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +10 -9
  151. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  152. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +3 -4
  153. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  154. package/dist/components/Employee/EmployeeList/Actions.js +2 -3
  155. package/dist/components/Employee/EmployeeList/Actions.js.map +1 -1
  156. package/dist/components/Employee/EmployeeList/EmployeeList.js +3 -4
  157. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  158. package/dist/components/Employee/EmployeeList/Head.js +5 -6
  159. package/dist/components/Employee/EmployeeList/Head.js.map +1 -1
  160. package/dist/components/Employee/EmployeeList/List.js +14 -14
  161. package/dist/components/Employee/EmployeeList/useEmployeeList.js +3 -4
  162. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  163. package/dist/components/Employee/FederalTaxes/Actions.js +6 -7
  164. package/dist/components/Employee/FederalTaxes/Actions.js.map +1 -1
  165. package/dist/components/Employee/FederalTaxes/FederalForm.js +11 -12
  166. package/dist/components/Employee/FederalTaxes/FederalForm.js.map +1 -1
  167. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +3 -4
  168. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  169. package/dist/components/Employee/Landing/Landing.js +8 -8
  170. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +7 -7
  171. package/dist/components/Employee/PaymentMethod/Actions.js +5 -6
  172. package/dist/components/Employee/PaymentMethod/Actions.js.map +1 -1
  173. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js +1 -1
  174. package/dist/components/Employee/PaymentMethod/BankAccountsList.js +8 -9
  175. package/dist/components/Employee/PaymentMethod/BankAccountsList.js.map +1 -1
  176. package/dist/components/Employee/PaymentMethod/Split.js +8 -8
  177. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +5 -6
  178. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  179. package/dist/components/Employee/Profile/Actions.js +6 -7
  180. package/dist/components/Employee/Profile/Actions.js.map +1 -1
  181. package/dist/components/Employee/Profile/HomeAddress.js +6 -5
  182. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  183. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +22 -21
  184. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  185. package/dist/components/Employee/Profile/useProfile.js +3 -4
  186. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  187. package/dist/components/Employee/StateTaxes/Actions.js +7 -8
  188. package/dist/components/Employee/StateTaxes/Actions.js.map +1 -1
  189. package/dist/components/Employee/StateTaxes/useStateTaxes.js +3 -4
  190. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  191. package/dist/components/Employee/Taxes/Actions.js +8 -9
  192. package/dist/components/Employee/Taxes/Actions.js.map +1 -1
  193. package/dist/components/Employee/Taxes/FederalForm.js +12 -13
  194. package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
  195. package/dist/components/Employee/Taxes/useTaxes.js +3 -4
  196. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  197. package/dist/components/Payroll/PayrollBlocker/PayrollBlocker.d.ts +6 -0
  198. package/dist/components/Payroll/PayrollBlocker/PayrollBlocker.js +32 -0
  199. package/dist/components/Payroll/PayrollBlocker/PayrollBlocker.js.map +1 -0
  200. package/dist/components/Payroll/PayrollBlocker/{PayrollBlockerAlerts.d.ts → components/PayrollBlockerAlerts.d.ts} +1 -1
  201. package/dist/components/Payroll/PayrollBlocker/{PayrollBlockerAlerts.js → components/PayrollBlockerAlerts.js} +6 -7
  202. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js.map +1 -0
  203. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +39 -0
  204. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -0
  205. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.module.scss.js +8 -0
  206. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.module.scss.js.map +1 -0
  207. package/dist/components/Payroll/PayrollBlocker/index.d.ts +3 -1
  208. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +91 -59
  209. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  210. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +4 -1
  211. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +69 -51
  212. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  213. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +66 -65
  214. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  215. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +8 -9
  216. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
  217. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +1 -0
  218. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +32 -26
  219. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
  220. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.d.ts +1 -0
  221. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +72 -48
  222. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
  223. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +10 -11
  224. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  225. package/dist/components/Payroll/PayrollList/PayrollList.d.ts +1 -1
  226. package/dist/components/Payroll/PayrollList/PayrollList.js +65 -24
  227. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  228. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +13 -1
  229. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +149 -52
  230. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  231. package/dist/components/Payroll/PayrollList/PayrollListPresentation.module.scss.js +10 -0
  232. package/dist/components/Payroll/PayrollList/PayrollListPresentation.module.scss.js.map +1 -0
  233. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +98 -74
  234. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  235. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +9 -9
  236. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +2 -3
  237. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  238. package/dist/components/Payroll/usePreparedPayrollData.js +5 -6
  239. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  240. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +2 -3
  241. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  242. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +9 -9
  243. package/dist/i18n/en/Payroll.PayrollList.json.js +24 -14
  244. package/dist/i18n/en/Payroll.PayrollList.json.js.map +1 -1
  245. package/dist/i18n/en/Payroll.PayrollOverview.json.js +16 -16
  246. package/dist/shared/constants.d.ts +6 -0
  247. package/dist/shared/constants.js +11 -8
  248. package/dist/shared/constants.js.map +1 -1
  249. package/dist/style.css +1 -1
  250. package/dist/types/i18next.d.ts +14 -0
  251. package/package.json +9 -9
  252. package/dist/components/Payroll/PayrollBlocker/PayrollBlockerAlerts.js.map +0 -1
  253. /package/dist/components/Payroll/PayrollBlocker/{PayrollBlockerList.d.ts → components/PayrollBlockerList.d.ts} +0 -0
@@ -1,90 +1,122 @@
1
- import { jsx as u } from "react/jsx-runtime";
2
- import { useState as f, useEffect as E } from "react";
3
- import { useEmployeesListSuspense as A } from "@gusto/embedded-api/react-query/employeesList";
4
- import { usePayrollsGetSuspense as D } from "@gusto/embedded-api/react-query/payrollsGet";
5
- import { usePayrollsCalculateMutation as _ } from "@gusto/embedded-api/react-query/payrollsCalculate";
6
- import { PayrollProcessingRequestStatus as m } from "@gusto/embedded-api/models/components/payrollprocessingrequest";
7
- import { useTranslation as b } from "react-i18next";
8
- import { usePreparedPayrollData as q } from "../usePreparedPayrollData.js";
9
- import { payrollSubmitHandler as O } from "../PayrollBlocker/payrollHelpers.js";
10
- import { PayrollConfigurationPresentation as k } from "./PayrollConfigurationPresentation.js";
11
- import { BaseComponent as B } from "../../Base/Base.js";
12
- import { componentEvents as c } from "../../../shared/constants.js";
13
- import { useComponentDictionary as N, useI18n as U } from "../../../i18n/I18n.js";
14
- import { useBase as Y } from "../../Base/useBase.js";
15
- const x = (e) => e?.status === m.Calculating, T = (e) => e?.status === m.CalculateSuccess;
16
- function $(e) {
17
- return /* @__PURE__ */ u(B, { ...e, children: /* @__PURE__ */ u(F, { ...e, children: e.children }) });
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { useState as f, useEffect as N } from "react";
3
+ import { useEmployeesListSuspense as b } from "@gusto/embedded-api/react-query/employeesList";
4
+ import { usePayrollsGetSuspense as x } from "@gusto/embedded-api/react-query/payrollsGet";
5
+ import { usePayrollsCalculateMutation as B } from "@gusto/embedded-api/react-query/payrollsCalculate";
6
+ import { PayrollProcessingRequestStatus as p } from "@gusto/embedded-api/models/components/payrollprocessingrequest";
7
+ import { useTranslation as k } from "react-i18next";
8
+ import { usePayrollsUpdateMutation as T } from "@gusto/embedded-api/react-query/payrollsUpdate";
9
+ import { usePreparedPayrollData as H } from "../usePreparedPayrollData.js";
10
+ import { payrollSubmitHandler as M } from "../PayrollBlocker/payrollHelpers.js";
11
+ import { PayrollConfigurationPresentation as V } from "./PayrollConfigurationPresentation.js";
12
+ import { BaseComponent as F } from "../../Base/Base.js";
13
+ import { componentEvents as a } from "../../../shared/constants.js";
14
+ import { useComponentDictionary as G, useI18n as K } from "../../../i18n/I18n.js";
15
+ import { useBase as j } from "../../Base/useBase.js";
16
+ const I = (e) => e?.status === p.Calculating, W = (e) => e?.status === p.CalculateSuccess;
17
+ function ce(e) {
18
+ return /* @__PURE__ */ m(F, { ...e, children: /* @__PURE__ */ m(z, { ...e, children: e.children }) });
18
19
  }
19
- const F = ({
20
+ const z = ({
20
21
  onEvent: e,
21
22
  companyId: l,
22
23
  payrollId: s,
23
- dictionary: y,
24
- alerts: P
24
+ dictionary: d,
25
+ alerts: g
25
26
  }) => {
26
- N("Payroll.PayrollConfiguration", y), U("Payroll.PayrollConfiguration");
27
- const { t: p } = b("Payroll.PayrollConfiguration"), { baseSubmitHandler: g } = Y(), [o, r] = f(!1), [C, i] = f([]), { data: d } = A({
27
+ G("Payroll.PayrollConfiguration", d), K("Payroll.PayrollConfiguration");
28
+ const { t: P } = k("Payroll.PayrollConfiguration"), { baseSubmitHandler: y } = j(), [t, n] = f(!1), [L, c] = f([]), { data: C } = b({
28
29
  companyId: l
29
- }), { data: t } = D(
30
+ }), { data: r } = x(
30
31
  {
31
32
  companyId: l,
32
33
  payrollId: s,
33
34
  include: ["taxes", "benefits", "deductions"]
34
35
  },
35
- { refetchInterval: o ? 5e3 : !1 }
36
- ), { mutateAsync: S } = _(), {
37
- preparedPayroll: n,
38
- paySchedule: L,
39
- isLoading: R
40
- } = q({
36
+ { refetchInterval: t ? 5e3 : !1 }
37
+ ), { mutateAsync: R } = B(), { mutateAsync: S, isPending: _ } = T(), {
38
+ preparedPayroll: u,
39
+ paySchedule: E,
40
+ isLoading: A,
41
+ handlePreparePayroll: w
42
+ } = H({
41
43
  companyId: l,
42
44
  payrollId: s
43
- }), h = async () => {
44
- i([]), await g({}, async () => {
45
- const a = await O(async () => {
46
- await S({
45
+ }), O = async () => {
46
+ c([]), await y({}, async () => {
47
+ const o = await M(async () => {
48
+ await R({
47
49
  request: {
48
50
  companyId: l,
49
51
  payrollId: s
50
52
  }
51
- }), r(!0);
53
+ }), n(!0);
52
54
  });
53
- !a.success && a.blockers.length > 0 && i(a.blockers);
55
+ !o.success && o.blockers.length > 0 && c(o.blockers);
54
56
  });
55
- }, w = (a) => {
56
- e(c.RUN_PAYROLL_EMPLOYEE_EDIT, { employeeId: a.uuid });
57
+ }, h = (o) => {
58
+ e(a.RUN_PAYROLL_EMPLOYEE_EDIT, { employeeId: o.uuid });
59
+ }, U = ({
60
+ paymentMethod: o,
61
+ ...i
62
+ }) => ({
63
+ ...i,
64
+ ...o && o !== "Historical" ? { paymentMethod: o } : {},
65
+ memo: i.memo || void 0
66
+ }), D = async (o) => {
67
+ e(a.RUN_PAYROLL_EMPLOYEE_SKIP, {
68
+ employeeId: o.employeeUuid
69
+ }), await y({}, async () => {
70
+ const i = U(o), q = await S({
71
+ request: {
72
+ companyId: l,
73
+ payrollId: s,
74
+ payrollUpdate: {
75
+ employeeCompensations: [
76
+ { ...i, excluded: !i.excluded }
77
+ ]
78
+ }
79
+ }
80
+ });
81
+ e(a.RUN_PAYROLL_EMPLOYEE_SAVED, {
82
+ payrollPrepared: q.payrollPrepared
83
+ }), await w();
84
+ });
85
+ }, Y = () => {
86
+ e(a.RUN_PAYROLL_BLOCKERS_VIEW_ALL);
57
87
  };
58
- return E(() => {
59
- x(t.payrollShow?.processingRequest) && !o && r(!0), o && T(t.payrollShow?.processingRequest) && (e(c.RUN_PAYROLL_CALCULATED, {
88
+ return N(() => {
89
+ I(r.payrollShow?.processingRequest) && !t && n(!0), t && W(r.payrollShow?.processingRequest) && (e(a.RUN_PAYROLL_CALCULATED, {
60
90
  payrollId: s,
61
- alert: { type: "success", title: p("alerts.progressSaved") }
62
- }), i([]), r(!1)), o && t.payrollShow?.processingRequest?.status === m.ProcessingFailed && (e(c.RUN_PAYROLL_PROCESSING_FAILED), r(!1));
91
+ alert: { type: "success", title: P("alerts.progressSaved") }
92
+ }), c([]), n(!1)), t && r.payrollShow?.processingRequest?.status === p.ProcessingFailed && (e(a.RUN_PAYROLL_PROCESSING_FAILED), n(!1));
63
93
  }, [
64
- t.payrollShow?.processingRequest,
65
- o,
94
+ r.payrollShow?.processingRequest,
95
+ t,
66
96
  e,
67
- p,
97
+ P,
68
98
  s,
69
- t.payrollShow?.calculatedAt
70
- ]), /* @__PURE__ */ u(
71
- k,
99
+ r.payrollShow?.calculatedAt
100
+ ]), /* @__PURE__ */ m(
101
+ V,
72
102
  {
73
- onCalculatePayroll: h,
74
- onEdit: w,
75
- employeeCompensations: n?.employeeCompensations || [],
76
- employeeDetails: d.showEmployees || [],
77
- payPeriod: n?.payPeriod,
78
- paySchedule: L,
79
- isOffCycle: n?.offCycle,
80
- alerts: P,
81
- isPending: o || R,
82
- payrollBlockers: C
103
+ onCalculatePayroll: O,
104
+ onEdit: h,
105
+ onToggleExclude: D,
106
+ onViewBlockers: Y,
107
+ employeeCompensations: u?.employeeCompensations || [],
108
+ employeeDetails: C.showEmployees || [],
109
+ payPeriod: u?.payPeriod,
110
+ paySchedule: E,
111
+ isOffCycle: u?.offCycle,
112
+ alerts: g,
113
+ isPending: t || A || _,
114
+ payrollBlockers: L
83
115
  }
84
116
  );
85
117
  };
86
118
  export {
87
- $ as PayrollConfiguration,
88
- F as Root
119
+ ce as PayrollConfiguration,
120
+ z as Root
89
121
  };
90
122
  //# sourceMappingURL=PayrollConfiguration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from 'react'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePayrollsCalculateMutation } from '@gusto/embedded-api/react-query/payrollsCalculate'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollProcessingRequest } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { PayrollProcessingRequestStatus } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { useTranslation } from 'react-i18next'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { payrollSubmitHandler, type ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useBase } from '@/components/Base'\n\nconst isCalculating = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.Calculating\nconst isCalculated = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.CalculateSuccess\n\ninterface PayrollConfigurationProps extends BaseComponentInterface<'Payroll.PayrollConfiguration'> {\n companyId: string\n payrollId: string\n alerts?: ReactNode\n}\n\nexport function PayrollConfiguration(props: PayrollConfigurationProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n onEvent,\n companyId,\n payrollId,\n dictionary,\n alerts,\n}: PayrollConfigurationProps) => {\n useComponentDictionary('Payroll.PayrollConfiguration', dictionary)\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { baseSubmitHandler } = useBase()\n\n const [isPolling, setIsPolling] = useState(false)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const { data: employeeData } = useEmployeesListSuspense({\n companyId,\n })\n\n const { data: payrollData } = usePayrollsGetSuspense(\n {\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions'],\n },\n { refetchInterval: isPolling ? 5_000 : false },\n )\n\n const { mutateAsync: calculatePayroll } = usePayrollsCalculateMutation()\n\n const {\n preparedPayroll,\n paySchedule,\n isLoading: isPrepareLoading,\n } = usePreparedPayrollData({\n companyId,\n payrollId,\n })\n\n const onCalculatePayroll = async () => {\n // Clear any existing blockers before attempting calculation\n setPayrollBlockers([])\n\n await baseSubmitHandler({}, async () => {\n const result = await payrollSubmitHandler(async () => {\n await calculatePayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setIsPolling(true)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onEdit = (employee: Employee) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT, { employeeId: employee.uuid })\n }\n\n useEffect(() => {\n // Start polling when payroll is calculating and not already polling\n if (isCalculating(payrollData.payrollShow?.processingRequest) && !isPolling) {\n setIsPolling(true)\n }\n // Stop polling and emit event when payroll is calculated successfully\n if (isPolling && isCalculated(payrollData.payrollShow?.processingRequest)) {\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED, {\n payrollId,\n alert: { type: 'success', title: t('alerts.progressSaved') },\n })\n // Clear blockers on successful calculation\n setPayrollBlockers([])\n setIsPolling(false)\n }\n // If we are polling and payroll is in failed state, stop polling, and emit failure event\n if (\n isPolling &&\n payrollData.payrollShow?.processingRequest?.status ===\n PayrollProcessingRequestStatus.ProcessingFailed\n ) {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setIsPolling(false)\n }\n }, [\n payrollData.payrollShow?.processingRequest,\n isPolling,\n onEvent,\n t,\n payrollId,\n payrollData.payrollShow?.calculatedAt,\n ])\n\n return (\n <PayrollConfigurationPresentation\n onCalculatePayroll={onCalculatePayroll}\n onEdit={onEdit}\n employeeCompensations={preparedPayroll?.employeeCompensations || []}\n employeeDetails={employeeData.showEmployees || []}\n payPeriod={preparedPayroll?.payPeriod}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n alerts={alerts}\n isPending={isPolling || isPrepareLoading}\n payrollBlockers={payrollBlockers}\n />\n )\n}\n"],"names":["isCalculating","processingRequest","PayrollProcessingRequestStatus","isCalculated","PayrollConfiguration","props","jsx","BaseComponent","Root","onEvent","companyId","payrollId","dictionary","alerts","useComponentDictionary","useI18n","t","useTranslation","baseSubmitHandler","useBase","isPolling","setIsPolling","useState","payrollBlockers","setPayrollBlockers","employeeData","useEmployeesListSuspense","payrollData","usePayrollsGetSuspense","calculatePayroll","usePayrollsCalculateMutation","preparedPayroll","paySchedule","isPrepareLoading","usePreparedPayrollData","onCalculatePayroll","result","payrollSubmitHandler","onEdit","employee","componentEvents","useEffect","PayrollConfigurationPresentation"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from 'react'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePayrollsCalculateMutation } from '@gusto/embedded-api/react-query/payrollsCalculate'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollProcessingRequest } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { PayrollProcessingRequestStatus } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { useTranslation } from 'react-i18next'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { payrollSubmitHandler, type ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useBase } from '@/components/Base'\n\nconst isCalculating = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.Calculating\nconst isCalculated = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.CalculateSuccess\n\ninterface PayrollConfigurationProps extends BaseComponentInterface<'Payroll.PayrollConfiguration'> {\n companyId: string\n payrollId: string\n alerts?: ReactNode\n}\n\nexport function PayrollConfiguration(props: PayrollConfigurationProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n onEvent,\n companyId,\n payrollId,\n dictionary,\n alerts,\n}: PayrollConfigurationProps) => {\n useComponentDictionary('Payroll.PayrollConfiguration', dictionary)\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { baseSubmitHandler } = useBase()\n\n const [isPolling, setIsPolling] = useState(false)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const { data: employeeData } = useEmployeesListSuspense({\n companyId,\n })\n\n const { data: payrollData } = usePayrollsGetSuspense(\n {\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions'],\n },\n { refetchInterval: isPolling ? 5_000 : false },\n )\n\n const { mutateAsync: calculatePayroll } = usePayrollsCalculateMutation()\n\n const { mutateAsync: updatePayroll, isPending: isUpdatingPayroll } = usePayrollsUpdateMutation()\n\n const {\n preparedPayroll,\n paySchedule,\n isLoading: isPrepareLoading,\n handlePreparePayroll,\n } = usePreparedPayrollData({\n companyId,\n payrollId,\n })\n\n const onCalculatePayroll = async () => {\n // Clear any existing blockers before attempting calculation\n setPayrollBlockers([])\n\n await baseSubmitHandler({}, async () => {\n const result = await payrollSubmitHandler(async () => {\n await calculatePayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setIsPolling(true)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onEdit = (employee: Employee) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT, { employeeId: employee.uuid })\n }\n const transformEmployeeCompensation = ({\n paymentMethod,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n const onToggleExclude = async (employeeCompensation: PayrollEmployeeCompensationsType) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SKIP, {\n employeeId: employeeCompensation.employeeUuid,\n })\n await baseSubmitHandler({}, async () => {\n const transformedCompensation = transformEmployeeCompensation(employeeCompensation)\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [\n { ...transformedCompensation, excluded: !transformedCompensation.excluded },\n ],\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n })\n // Refresh preparedPayroll to get updated data\n await handlePreparePayroll()\n })\n }\n\n const onViewBlockers = () => {\n onEvent(componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL)\n }\n\n useEffect(() => {\n // Start polling when payroll is calculating and not already polling\n if (isCalculating(payrollData.payrollShow?.processingRequest) && !isPolling) {\n setIsPolling(true)\n }\n // Stop polling and emit event when payroll is calculated successfully\n if (isPolling && isCalculated(payrollData.payrollShow?.processingRequest)) {\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED, {\n payrollId,\n alert: { type: 'success', title: t('alerts.progressSaved') },\n })\n // Clear blockers on successful calculation\n setPayrollBlockers([])\n setIsPolling(false)\n }\n // If we are polling and payroll is in failed state, stop polling, and emit failure event\n if (\n isPolling &&\n payrollData.payrollShow?.processingRequest?.status ===\n PayrollProcessingRequestStatus.ProcessingFailed\n ) {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setIsPolling(false)\n }\n }, [\n payrollData.payrollShow?.processingRequest,\n isPolling,\n onEvent,\n t,\n payrollId,\n payrollData.payrollShow?.calculatedAt,\n ])\n\n return (\n <PayrollConfigurationPresentation\n onCalculatePayroll={onCalculatePayroll}\n onEdit={onEdit}\n onToggleExclude={onToggleExclude}\n onViewBlockers={onViewBlockers}\n employeeCompensations={preparedPayroll?.employeeCompensations || []}\n employeeDetails={employeeData.showEmployees || []}\n payPeriod={preparedPayroll?.payPeriod}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n alerts={alerts}\n isPending={isPolling || isPrepareLoading || isUpdatingPayroll}\n payrollBlockers={payrollBlockers}\n />\n )\n}\n"],"names":["isCalculating","processingRequest","PayrollProcessingRequestStatus","isCalculated","PayrollConfiguration","props","jsx","BaseComponent","Root","onEvent","companyId","payrollId","dictionary","alerts","useComponentDictionary","useI18n","t","useTranslation","baseSubmitHandler","useBase","isPolling","setIsPolling","useState","payrollBlockers","setPayrollBlockers","employeeData","useEmployeesListSuspense","payrollData","usePayrollsGetSuspense","calculatePayroll","usePayrollsCalculateMutation","updatePayroll","isUpdatingPayroll","usePayrollsUpdateMutation","preparedPayroll","paySchedule","isPrepareLoading","handlePreparePayroll","usePreparedPayrollData","onCalculatePayroll","result","payrollSubmitHandler","onEdit","employee","componentEvents","transformEmployeeCompensation","paymentMethod","compensation","onToggleExclude","employeeCompensation","transformedCompensation","onViewBlockers","useEffect","PayrollConfigurationPresentation"],"mappings":"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"}
@@ -3,6 +3,7 @@ import { EmployeeCompensations } from '@gusto/embedded-api/models/components/pay
3
3
  import { Employee } from '@gusto/embedded-api/models/components/employee';
4
4
  import { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype';
5
5
  import { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject';
6
+ import { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype';
6
7
  import { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers';
7
8
  interface PayrollConfigurationPresentationProps {
8
9
  employeeCompensations: EmployeeCompensations[];
@@ -11,10 +12,12 @@ interface PayrollConfigurationPresentationProps {
11
12
  paySchedule?: PayScheduleObject;
12
13
  onCalculatePayroll: () => void;
13
14
  onEdit: (employee: Employee) => void;
15
+ onToggleExclude: (employeeCompensation: PayrollEmployeeCompensationsType) => void;
16
+ onViewBlockers: () => void;
14
17
  isOffCycle?: boolean;
15
18
  alerts?: ReactNode;
16
19
  isPending?: boolean;
17
20
  payrollBlockers?: ApiPayrollBlocker[];
18
21
  }
19
- export declare const PayrollConfigurationPresentation: ({ employeeCompensations, employeeDetails, payPeriod, paySchedule, onEdit, onCalculatePayroll, isOffCycle, alerts, isPending, payrollBlockers, }: PayrollConfigurationPresentationProps) => import("react/jsx-runtime").JSX.Element;
22
+ export declare const PayrollConfigurationPresentation: ({ employeeCompensations, employeeDetails, payPeriod, paySchedule, onEdit, onToggleExclude, onCalculatePayroll, onViewBlockers, isOffCycle, alerts, isPending, payrollBlockers, }: PayrollConfigurationPresentationProps) => import("react/jsx-runtime").JSX.Element;
20
23
  export {};
@@ -1,25 +1,28 @@
1
- import { jsxs as a, jsx as e, Fragment as I } from "react/jsx-runtime";
2
- import { useTranslation as M, Trans as k } from "react-i18next";
3
- import { useFormatEmployeePayRate as R, getRegularHours as S, getOvertimeHours as j, formatHoursDisplay as C, getTotalPtoHours as G, getAdditionalEarnings as O, getReimbursements as _, calculateGrossPay as z } from "../helpers.js";
4
- import { PayrollBlockerAlerts as K } from "../PayrollBlocker/PayrollBlockerAlerts.js";
5
- import V from "./PayrollConfigurationPresentation.module.scss.js";
6
- import { useI18n as W } from "../../../i18n/I18n.js";
1
+ import { jsxs as a, jsx as e, Fragment as F } from "react/jsx-runtime";
2
+ import { useTranslation as I, Trans as R } from "react-i18next";
3
+ import { useFormatEmployeePayRate as j, getRegularHours as G, getOvertimeHours as O, formatHoursDisplay as D, getTotalPtoHours as V, getAdditionalEarnings as _, getReimbursements as z, calculateGrossPay as K } from "../helpers.js";
4
+ import { PayrollBlockerAlerts as W } from "../PayrollBlocker/components/PayrollBlockerAlerts.js";
5
+ import X from "./PayrollConfigurationPresentation.module.scss.js";
6
+ import { useI18n as q } from "../../../i18n/I18n.js";
7
7
  import { Flex as u, FlexItem as w } from "../../Common/Flex/Flex.js";
8
- import { Grid as q } from "../../Common/Grid/Grid.js";
9
- import { useComponentContext as J } from "../../../contexts/ComponentAdapter/useComponentContext.js";
10
- import { HamburgerMenu as Q } from "../../Common/HamburgerMenu/HamburgerMenu.js";
11
- import X from "../../../assets/icons/pencil.svg.js";
12
- import { formatNumberAsCurrency as f, firstLastName as Y } from "../../../helpers/formattedStrings.js";
13
- import { parseDateStringToLocal as P } from "../../../helpers/dateFormatting.js";
14
- import { useLocale as Z } from "../../../contexts/LocaleProvider/useLocale.js";
15
- import { useLoadingIndicator as $ } from "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
16
- import { DataView as ee } from "../../Common/DataView/DataView.js";
17
- const te = ({
8
+ import { Grid as J } from "../../Common/Grid/Grid.js";
9
+ import "classnames";
10
+ import { useComponentContext as Q } from "../../../contexts/ComponentAdapter/useComponentContext.js";
11
+ import Y from "../../../assets/icons/pencil.svg.js";
12
+ import Z from "../../../assets/icons/x-circle.svg.js";
13
+ import $ from "../../../assets/icons/plus-circle.svg.js";
14
+ import { formatNumberAsCurrency as f, firstLastName as ee } from "../../../helpers/formattedStrings.js";
15
+ import { parseDateStringToLocal as x } from "../../../helpers/dateFormatting.js";
16
+ import { useLocale as te } from "../../../contexts/LocaleProvider/useLocale.js";
17
+ import { useLoadingIndicator as re } from "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
18
+ import { HamburgerMenu as ne } from "../../Common/HamburgerMenu/HamburgerMenu.js";
19
+ import { DataView as oe } from "../../Common/DataView/DataView.js";
20
+ const ie = ({
18
21
  payPeriod: s,
19
22
  locale: c
20
23
  }) => {
21
24
  if (s?.startDate && s.endDate) {
22
- const m = P(s.startDate), d = P(s.endDate);
25
+ const m = x(s.startDate), d = x(s.endDate);
23
26
  if (m && d) {
24
27
  const p = m.toLocaleDateString(c, {
25
28
  month: "long",
@@ -33,112 +36,120 @@ const te = ({
33
36
  }
34
37
  }
35
38
  return { startDate: "", endDate: "" };
36
- }, be = ({
39
+ }, Ne = ({
37
40
  employeeCompensations: s,
38
41
  employeeDetails: c,
39
42
  payPeriod: m,
40
43
  paySchedule: d,
41
44
  onEdit: p,
42
- onCalculatePayroll: g,
43
- isOffCycle: T = !1,
45
+ onToggleExclude: g,
46
+ onCalculatePayroll: P,
47
+ onViewBlockers: T,
48
+ isOffCycle: N = !1,
44
49
  alerts: y,
45
50
  isPending: b,
46
- payrollBlockers: D = []
51
+ payrollBlockers: C = []
47
52
  }) => {
48
- const { Button: x, Heading: h, Text: o, Badge: N, LoadingSpinner: L } = J();
49
- W("Payroll.PayrollConfiguration");
50
- const { t: n } = M("Payroll.PayrollConfiguration"), { locale: H } = Z(), { LoadingIndicator: U } = $(), A = R(), i = new Map(c.map((t) => [t.uuid, t])), E = (t) => {
53
+ const { Button: k, Heading: h, Text: o, Badge: L, LoadingSpinner: M } = Q();
54
+ q("Payroll.PayrollConfiguration");
55
+ const { t: n } = I("Payroll.PayrollConfiguration"), { locale: U } = te(), { LoadingIndicator: v } = re(), H = j(), i = new Map(c.map((t) => [t.uuid, t])), A = (t) => {
51
56
  const r = i.get(t);
52
- return r ? Y({ first_name: r.firstName, last_name: r.lastName }) : null;
57
+ return r ? ee({ first_name: r.firstName, last_name: r.lastName }) : null;
53
58
  };
54
59
  return /* @__PURE__ */ a(u, { flexDirection: "column", gap: 16, children: [
55
60
  /* @__PURE__ */ a(u, { justifyContent: "space-between", alignItems: "center", children: [
56
61
  /* @__PURE__ */ a(w, { children: [
57
62
  /* @__PURE__ */ e(h, { as: "h1", children: n("pageTitle") }),
58
63
  /* @__PURE__ */ e(o, { children: /* @__PURE__ */ e(
59
- k,
64
+ R,
60
65
  {
61
66
  i18nKey: "description",
62
67
  t: n,
63
68
  components: { dateWrapper: /* @__PURE__ */ e(o, { weight: "bold", as: "span" }) },
64
- values: te({ payPeriod: m, locale: H })
69
+ values: ie({ payPeriod: m, locale: U })
65
70
  }
66
71
  ) })
67
72
  ] }),
68
73
  /* @__PURE__ */ e(
69
- x,
74
+ k,
70
75
  {
71
76
  title: n("calculatePayrollTitle"),
72
- onClick: g,
77
+ onClick: P,
73
78
  isDisabled: b,
74
79
  children: n("calculatePayroll")
75
80
  }
76
81
  )
77
82
  ] }),
78
- y && /* @__PURE__ */ e(q, { gap: 16, gridTemplateColumns: "1fr", children: y }),
79
- b ? /* @__PURE__ */ e(U, { children: /* @__PURE__ */ a(u, { flexDirection: "column", alignItems: "center", gap: 4, children: [
80
- /* @__PURE__ */ e(L, { size: "lg" }),
83
+ y && /* @__PURE__ */ e(J, { gap: 16, gridTemplateColumns: "1fr", children: y }),
84
+ b ? /* @__PURE__ */ e(v, { children: /* @__PURE__ */ a(u, { flexDirection: "column", alignItems: "center", gap: 4, children: [
85
+ /* @__PURE__ */ e(M, { size: "lg" }),
81
86
  /* @__PURE__ */ e(h, { as: "h4", children: n("loadingTitle") }),
82
87
  /* @__PURE__ */ e(o, { children: n("loadingDescription") })
83
- ] }) }) : /* @__PURE__ */ a(I, { children: [
84
- /* @__PURE__ */ e("div", { className: V.payrollBlockerContainer, children: D.length > 0 && /* @__PURE__ */ e(K, { blockers: D }) }),
88
+ ] }) }) : /* @__PURE__ */ a(F, { children: [
89
+ /* @__PURE__ */ e("div", { className: X.payrollBlockerContainer, children: C.length > 0 && /* @__PURE__ */ e(
90
+ W,
91
+ {
92
+ blockers: C,
93
+ onMultipleViewClick: T
94
+ }
95
+ ) }),
85
96
  /* @__PURE__ */ a(w, { children: [
86
97
  /* @__PURE__ */ e(h, { as: "h3", children: n("hoursAndEarningsTitle") }),
87
98
  /* @__PURE__ */ e(o, { children: n("hoursAndEarningsDescription") })
88
99
  ] }),
89
100
  /* @__PURE__ */ e(
90
- ee,
101
+ oe,
91
102
  {
92
103
  label: n("employeeCompensationsTitle"),
93
104
  columns: [
94
105
  {
95
106
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.employees") }),
96
107
  render: (t) => {
97
- const r = i.get(t.employeeUuid || ""), l = A(r);
108
+ const r = i.get(t.employeeUuid || ""), l = H(r);
98
109
  return /* @__PURE__ */ a(u, { flexDirection: "column", gap: 8, children: [
99
- /* @__PURE__ */ e(o, { weight: "semibold", children: E(t.employeeUuid || "") }),
110
+ /* @__PURE__ */ e(o, { weight: "semibold", children: A(t.employeeUuid || "") }),
100
111
  l && /* @__PURE__ */ e(o, { variant: "supporting", children: l }),
101
- t.excluded && /* @__PURE__ */ e(N, { status: "warning", children: n("skippedBadge") })
112
+ t.excluded && /* @__PURE__ */ e(L, { status: "warning", children: n("skippedBadge") })
102
113
  ] });
103
114
  }
104
115
  },
105
116
  {
106
117
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.hours") }),
107
118
  render: (t) => {
108
- const r = S(t), l = j(t);
109
- return /* @__PURE__ */ e(o, { children: C(r + l) });
119
+ const r = G(t), l = O(t);
120
+ return /* @__PURE__ */ e(o, { children: D(r + l) });
110
121
  }
111
122
  },
112
123
  {
113
124
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.timeOff") }),
114
125
  render: (t) => {
115
- const r = G(t);
116
- return /* @__PURE__ */ e(o, { children: C(r) });
126
+ const r = V(t);
127
+ return /* @__PURE__ */ e(o, { children: D(r) });
117
128
  }
118
129
  },
119
130
  {
120
131
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.additionalEarnings") }),
121
132
  render: (t) => {
122
- const r = O(t);
133
+ const r = _(t);
123
134
  return /* @__PURE__ */ e(o, { children: f(r) });
124
135
  }
125
136
  },
126
137
  {
127
138
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.reimbursements") }),
128
139
  render: (t) => {
129
- const r = _(t);
140
+ const r = z(t);
130
141
  return /* @__PURE__ */ e(o, { children: f(r) });
131
142
  }
132
143
  },
133
144
  {
134
145
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.totalPay") }),
135
146
  render: (t) => {
136
- const r = i.get(t.employeeUuid || ""), l = r ? z(
147
+ const r = i.get(t.employeeUuid || ""), l = r ? K(
137
148
  t,
138
149
  r,
139
150
  m?.startDate,
140
151
  d,
141
- T
152
+ N
142
153
  ) : 0;
143
154
  return /* @__PURE__ */ e(o, { children: f(l) });
144
155
  }
@@ -148,20 +159,27 @@ const te = ({
148
159
  const r = t.employeeUuid;
149
160
  return r ? i.has(r) : !1;
150
161
  }).sort((t, r) => {
151
- const l = i.get(t.employeeUuid || ""), v = i.get(r.employeeUuid || ""), B = l?.lastName || "", F = v?.lastName || "";
152
- return B.localeCompare(F);
162
+ const l = i.get(t.employeeUuid || ""), E = i.get(r.employeeUuid || ""), S = l?.lastName || "", B = E?.lastName || "";
163
+ return S.localeCompare(B);
153
164
  }),
154
165
  itemMenu: (t) => /* @__PURE__ */ e(
155
- Q,
166
+ ne,
156
167
  {
157
168
  items: [
158
169
  {
159
170
  label: n("editMenu.edit"),
160
- icon: /* @__PURE__ */ e(X, { "aria-hidden": !0 }),
171
+ icon: /* @__PURE__ */ e(Y, { "aria-hidden": !0 }),
161
172
  onClick: () => {
162
173
  const r = i.get(t.employeeUuid || "");
163
174
  r && p(r);
164
175
  }
176
+ },
177
+ {
178
+ label: n(t.excluded ? "editMenu.unskip" : "editMenu.skip"),
179
+ icon: t.excluded ? /* @__PURE__ */ e($, { "aria-hidden": !0 }) : /* @__PURE__ */ e(Z, { "aria-hidden": !0 }),
180
+ onClick: () => {
181
+ i.get(t.employeeUuid || "") && g(t);
182
+ }
165
183
  }
166
184
  ],
167
185
  triggerLabel: n("editMenu.edit")
@@ -173,6 +191,6 @@ const te = ({
173
191
  ] });
174
192
  };
175
193
  export {
176
- be as PayrollConfigurationPresentation
194
+ Ne as PayrollConfigurationPresentation
177
195
  };
178
196
  //# sourceMappingURL=PayrollConfigurationPresentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport { Trans, useTranslation } from 'react-i18next'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '../PayrollBlocker/PayrollBlockerAlerts'\nimport styles from './PayrollConfigurationPresentation.module.scss'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, FlexItem, Grid } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { parseDateStringToLocal } from '@/helpers/dateFormatting'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\n\ninterface PayrollConfigurationPresentationProps {\n employeeCompensations: EmployeeCompensations[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n isOffCycle?: boolean\n alerts?: ReactNode\n isPending?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n}\n\nconst getPayrollConfigurationTitle = ({\n payPeriod,\n locale,\n}: {\n payPeriod?: PayrollPayPeriodType\n locale: string\n}) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n const startDate = parseDateStringToLocal(payPeriod.startDate)\n const endDate = parseDateStringToLocal(payPeriod.endDate)\n\n if (startDate && endDate) {\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n })\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n return { startDate: startFormatted, endDate: endFormatted }\n }\n }\n return { startDate: '', endDate: '' }\n}\n\nexport const PayrollConfigurationPresentation = ({\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onCalculatePayroll,\n isOffCycle = false,\n alerts,\n isPending,\n payrollBlockers = [],\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, LoadingSpinner } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { locale } = useLocale()\n const { LoadingIndicator } = useLoadingIndicator()\n const formatEmployeePayRate = useFormatEmployeePayRate()\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 return employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : null\n }\n\n return (\n <Flex flexDirection=\"column\" gap={16}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n <Text>\n <Trans\n i18nKey=\"description\"\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={getPayrollConfigurationTitle({ payPeriod, locale })}\n />\n </Text>\n </FlexItem>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n </Flex>\n\n {alerts && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <LoadingIndicator>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={4}>\n <LoadingSpinner size=\"lg\" />\n <Heading as=\"h4\">{t('loadingTitle')}</Heading>\n <Text>{t('loadingDescription')}</Text>\n </Flex>\n </LoadingIndicator>\n ) : (\n <>\n <div className={styles.payrollBlockerContainer}>\n {payrollBlockers.length > 0 && <PayrollBlockerAlerts blockers={payrollBlockers} />}\n </div>\n <FlexItem>\n <Heading as=\"h3\">{t('hoursAndEarningsTitle')}</Heading>\n <Text>{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: <Text weight=\"semibold\">{t('tableColumns.employees')}</Text>,\n render: (item: EmployeeCompensations) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={8 as const}>\n <Text weight=\"semibold\">{getEmployeeName(item.employeeUuid || '')}</Text>\n {payRateDisplay && <Text variant=\"supporting\">{payRateDisplay}</Text>}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.hours')}</Text>,\n render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return <Text>{formatHoursDisplay(hours + overtimeHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.timeOff')}</Text>,\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return <Text>{formatHoursDisplay(ptoHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.additionalEarnings')}</Text>,\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return <Text>{formatNumberAsCurrency(earnings)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.reimbursements')}</Text>,\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return <Text>{formatNumberAsCurrency(reimbursements)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.totalPay')}</Text>,\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate,\n paySchedule,\n isOffCycle,\n )\n : 0\n return <Text>{formatNumberAsCurrency(calculatedGrossPay)}</Text>\n },\n },\n ]}\n data={employeeCompensations\n .filter(compensation => {\n const employeeUuid = compensation.employeeUuid\n if (!employeeUuid) return false\n return employeeMap.has(employeeUuid)\n })\n .sort((a, b) => {\n const employeeA = employeeMap.get(a.employeeUuid || '')\n const employeeB = employeeMap.get(b.employeeUuid || '')\n const lastNameA = employeeA?.lastName || ''\n const lastNameB = employeeB?.lastName || ''\n return lastNameA.localeCompare(lastNameB)\n })}\n itemMenu={(item: EmployeeCompensations) => (\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 triggerLabel={t('editMenu.edit')}\n />\n )}\n />\n </>\n )}\n </Flex>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","locale","startDate","parseDateStringToLocal","endDate","startFormatted","endFormatted","PayrollConfigurationPresentation","employeeCompensations","employeeDetails","paySchedule","onEdit","onCalculatePayroll","isOffCycle","alerts","isPending","payrollBlockers","Button","Heading","Text","Badge","LoadingSpinner","useComponentContext","useI18n","t","useTranslation","useLocale","LoadingIndicator","useLoadingIndicator","formatEmployeePayRate","useFormatEmployeePayRate","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsxs","Flex","FlexItem","jsx","Trans","Grid","Fragment","styles","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","compensation","a","b","employeeA","employeeB","lastNameA","lastNameB","HamburgerMenu","PencilSvg"],"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 type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport { Trans, useTranslation } from 'react-i18next'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\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 } from '@/components/Common'\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 { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { parseDateStringToLocal } from '@/helpers/dateFormatting'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\n\ninterface PayrollConfigurationPresentationProps {\n employeeCompensations: EmployeeCompensations[]\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 isOffCycle?: boolean\n alerts?: ReactNode\n isPending?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n}\n\nconst getPayrollConfigurationTitle = ({\n payPeriod,\n locale,\n}: {\n payPeriod?: PayrollPayPeriodType\n locale: string\n}) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n const startDate = parseDateStringToLocal(payPeriod.startDate)\n const endDate = parseDateStringToLocal(payPeriod.endDate)\n\n if (startDate && endDate) {\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n })\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n return { startDate: startFormatted, endDate: endFormatted }\n }\n }\n return { startDate: '', endDate: '' }\n}\n\nexport const PayrollConfigurationPresentation = ({\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onToggleExclude,\n onCalculatePayroll,\n onViewBlockers,\n isOffCycle = false,\n alerts,\n isPending,\n payrollBlockers = [],\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, LoadingSpinner } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { locale } = useLocale()\n const { LoadingIndicator } = useLoadingIndicator()\n const formatEmployeePayRate = useFormatEmployeePayRate()\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 return employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : null\n }\n\n return (\n <Flex flexDirection=\"column\" gap={16}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n <Text>\n <Trans\n i18nKey=\"description\"\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={getPayrollConfigurationTitle({ payPeriod, locale })}\n />\n </Text>\n </FlexItem>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n </Flex>\n\n {alerts && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <LoadingIndicator>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={4}>\n <LoadingSpinner size=\"lg\" />\n <Heading as=\"h4\">{t('loadingTitle')}</Heading>\n <Text>{t('loadingDescription')}</Text>\n </Flex>\n </LoadingIndicator>\n ) : (\n <>\n <div className={styles.payrollBlockerContainer}>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onMultipleViewClick={onViewBlockers}\n />\n )}\n </div>\n <FlexItem>\n <Heading as=\"h3\">{t('hoursAndEarningsTitle')}</Heading>\n <Text>{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: <Text weight=\"semibold\">{t('tableColumns.employees')}</Text>,\n render: (item: EmployeeCompensations) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={8 as const}>\n <Text weight=\"semibold\">{getEmployeeName(item.employeeUuid || '')}</Text>\n {payRateDisplay && <Text variant=\"supporting\">{payRateDisplay}</Text>}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.hours')}</Text>,\n render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return <Text>{formatHoursDisplay(hours + overtimeHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.timeOff')}</Text>,\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return <Text>{formatHoursDisplay(ptoHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.additionalEarnings')}</Text>,\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return <Text>{formatNumberAsCurrency(earnings)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.reimbursements')}</Text>,\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return <Text>{formatNumberAsCurrency(reimbursements)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.totalPay')}</Text>,\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate,\n paySchedule,\n isOffCycle,\n )\n : 0\n return <Text>{formatNumberAsCurrency(calculatedGrossPay)}</Text>\n },\n },\n ]}\n data={employeeCompensations\n .filter(compensation => {\n const employeeUuid = compensation.employeeUuid\n if (!employeeUuid) return false\n return employeeMap.has(employeeUuid)\n })\n .sort((a, b) => {\n const employeeA = employeeMap.get(a.employeeUuid || '')\n const employeeB = employeeMap.get(b.employeeUuid || '')\n const lastNameA = employeeA?.lastName || ''\n const lastNameB = employeeB?.lastName || ''\n return lastNameA.localeCompare(lastNameB)\n })}\n itemMenu={(item: EmployeeCompensations) => (\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 ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n />\n </>\n )}\n </Flex>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","locale","startDate","parseDateStringToLocal","endDate","startFormatted","endFormatted","PayrollConfigurationPresentation","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","isOffCycle","alerts","isPending","payrollBlockers","Button","Heading","Text","Badge","LoadingSpinner","useComponentContext","useI18n","t","useTranslation","useLocale","LoadingIndicator","useLoadingIndicator","formatEmployeePayRate","useFormatEmployeePayRate","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsxs","Flex","FlexItem","jsx","Trans","Grid","Fragment","styles","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","compensation","a","b","employeeA","employeeB","lastNameA","lastNameB","HamburgerMenu","PencilSvg","PlusCircle","XCircle"],"mappings":"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"}