@gusto/embedded-react-sdk 0.56.2 → 0.56.4

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 (154) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/components/Common/FieldCaption/FieldCaption.js +19 -22
  3. package/dist/components/Common/FieldCaption/FieldCaption.js.map +1 -1
  4. package/dist/components/Common/FieldCaption/FieldCaption.module.scss.js +6 -6
  5. package/dist/components/Common/PaginationControl/PaginationControl.js +66 -62
  6. package/dist/components/Common/PaginationControl/PaginationControl.js.map +1 -1
  7. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
  8. package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
  9. package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
  10. package/dist/components/Company/PaySchedule/management/PaySchedule.js +60 -0
  11. package/dist/components/Company/PaySchedule/management/PaySchedule.js.map +1 -0
  12. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.js +67 -0
  13. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.js.map +1 -0
  14. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +59 -0
  15. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -0
  16. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +57 -0
  17. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -0
  18. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +46 -0
  19. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -0
  20. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +101 -0
  21. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -0
  22. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +81 -0
  23. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -0
  24. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.js +18 -0
  25. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.js.map +1 -0
  26. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +56 -0
  27. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -0
  28. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +34 -0
  29. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -0
  30. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js +77 -0
  31. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -0
  32. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.module.scss.js +10 -0
  33. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.module.scss.js.map +1 -0
  34. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js +66 -0
  35. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -0
  36. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +75 -57
  37. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  38. package/dist/components/Company/StateTaxes/shared/requirementSetError.js +15 -0
  39. package/dist/components/Company/StateTaxes/shared/requirementSetError.js.map +1 -0
  40. package/dist/components/Company/exports/companyManagement.js +7 -0
  41. package/dist/components/Company/exports/companyManagement.js.map +1 -0
  42. package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
  43. package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js +4 -4
  44. package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js +4 -4
  45. package/dist/components/Flow/Flow.js +1 -1
  46. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +28 -28
  47. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  48. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +51 -58
  49. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
  50. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +12 -7
  51. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -1
  52. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +87 -85
  53. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  54. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +1 -1
  55. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  56. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +55 -54
  57. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  58. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +66 -62
  59. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  60. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +129 -125
  61. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  62. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +30 -27
  63. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
  64. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +41 -30
  65. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
  66. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js.map +1 -1
  67. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +159 -152
  68. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
  69. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +61 -59
  70. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  71. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +32 -31
  72. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  73. package/dist/components/Payroll/PayrollList/PayrollList.js +16 -16
  74. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  75. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  76. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +61 -61
  77. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  78. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +192 -193
  79. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  80. package/dist/components/Payroll/Transition/TransitionFlow.js +27 -22
  81. package/dist/components/Payroll/Transition/TransitionFlow.js.map +1 -1
  82. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +55 -53
  83. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
  84. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +44 -41
  85. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
  86. package/dist/components/Payroll/helpers.js +72 -67
  87. package/dist/components/Payroll/helpers.js.map +1 -1
  88. package/dist/components/Payroll/usePreparedPayrollData.js +34 -25
  89. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  90. package/dist/contexts/ApiProvider/ApiProvider.js +23 -22
  91. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  92. package/dist/contexts/ApiProvider/informationRequestEnumHook.js +30 -0
  93. package/dist/contexts/ApiProvider/informationRequestEnumHook.js.map +1 -0
  94. package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
  95. package/dist/helpers/dateFormatting.js.map +1 -1
  96. package/dist/helpers/formattedStrings.js +9 -8
  97. package/dist/helpers/formattedStrings.js.map +1 -1
  98. package/dist/i18n/I18n.js +2 -0
  99. package/dist/i18n/I18n.js.map +1 -1
  100. package/dist/i18n/en/Company.Management.PaySchedule.json.js +24 -0
  101. package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -0
  102. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +18 -0
  103. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -0
  104. package/dist/i18n/en/Company.StateTaxes.json.js +1 -1
  105. package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -14
  106. package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
  107. package/dist/i18n/en/Payroll.PayrollOverview.json.js +1 -1
  108. package/dist/i18n/en/common.json.js +36 -38
  109. package/dist/i18n/en/common.json.js.map +1 -1
  110. package/dist/index.js +137 -135
  111. package/dist/index.js.map +1 -1
  112. package/dist/package.json.js +1 -1
  113. package/dist/shared/constants.js +39 -31
  114. package/dist/shared/constants.js.map +1 -1
  115. package/dist/src/components/Company/PaySchedule/management/PaySchedule.d.ts +24 -0
  116. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.d.ts +10 -0
  117. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +11 -0
  118. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +9 -0
  119. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +35 -0
  120. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +29 -0
  121. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/index.d.ts +1 -0
  122. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.d.ts +7 -0
  123. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.d.ts +12 -0
  124. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +9 -0
  125. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +20 -0
  126. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverview.d.ts +11 -0
  127. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +18 -0
  128. package/dist/src/components/Company/PaySchedule/management/index.d.ts +1 -0
  129. package/dist/src/components/Company/PaySchedule/management/payScheduleManagementStateMachine.d.ts +12 -0
  130. package/dist/src/components/Company/StateTaxes/shared/requirementSetError.d.ts +18 -0
  131. package/dist/src/components/Company/StateTaxes/shared/requirementSetError.test.d.ts +1 -0
  132. package/dist/src/components/Company/exports/companyManagement.d.ts +2 -0
  133. package/dist/src/components/Payroll/PayrollBlocker/payrollHelpers.d.ts +12 -0
  134. package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +6 -1
  135. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.d.ts +2 -2
  136. package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.d.ts +6 -1
  137. package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +7 -1
  138. package/dist/src/components/Payroll/helpers.d.ts +34 -0
  139. package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +6 -1
  140. package/dist/src/components/index.d.ts +12 -0
  141. package/dist/src/contexts/ApiProvider/informationRequestEnumHook.d.ts +14 -0
  142. package/dist/src/contexts/ApiProvider/informationRequestEnumHook.test.d.ts +1 -0
  143. package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +2 -0
  144. package/dist/src/helpers/dateFormatting.d.ts +2 -2
  145. package/dist/src/helpers/formattedStrings.d.ts +15 -0
  146. package/dist/src/i18n/en/common.json.d.ts +0 -1
  147. package/dist/src/i18n/types.d.ts +96 -6
  148. package/dist/src/models/external.d.ts +12 -0
  149. package/dist/src/shared/constants.d.ts +16 -0
  150. package/dist/style.css +1 -1
  151. package/dist/types/sdkError.js +32 -21
  152. package/dist/types/sdkError.js.map +1 -1
  153. package/docs/guides/endpoint-inventory.json +59 -10
  154. package/package.json +7 -7
@@ -1,6 +1,6 @@
1
1
  import { jsx as l, jsxs as _e } from "react/jsx-runtime";
2
- import { usePayrollsSubmitMutation as Oe } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
- import { usePayrollsCancelMutation as Ce } from "@gusto/embedded-api/react-query/payrollsCancel";
2
+ import { usePayrollsSubmitMutation as Ce } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
+ import { usePayrollsCancelMutation as Oe } from "@gusto/embedded-api/react-query/payrollsCancel";
4
4
  import { usePayrollsGet as ke } from "@gusto/embedded-api/react-query/payrollsGet";
5
5
  import { useEmployeesList as Ae } from "@gusto/embedded-api/react-query/employeesList";
6
6
  import { keepPreviousData as Ue } from "@tanstack/react-query";
@@ -12,51 +12,51 @@ import { useGustoEmbeddedContext as qe } from "@gusto/embedded-api/react-query/_
12
12
  import { payrollsGetPayStub as We } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
13
13
  import { useErrorBoundary as Fe } from "react-error-boundary";
14
14
  import { ConfirmWireDetails as Ye } from "../ConfirmWireDetails/ConfirmWireDetails.js";
15
- import { canCancelPayroll as Me } from "../helpers.js";
15
+ import { isTaxReconciliationPayroll as Me, canCancelPayroll as xe } from "../helpers.js";
16
16
  import { PrintChecks as Ie } from "../PrintChecks/PrintChecks.js";
17
- import { PayrollOverviewPresentation as xe } from "./PayrollOverviewPresentation.js";
17
+ import { PayrollOverviewPresentation as Ge } from "./PayrollOverviewPresentation.js";
18
18
  import { PayrollOverviewStatus as d } from "./PayrollOverviewTypes.js";
19
- import { useSubmissionPoll as Ge } from "./useSubmissionPoll.js";
20
- import { useCompanyPaymentSpeed as Ve } from "../../../hooks/useCompanyPaymentSpeed.js";
21
- import { PAYROLL_PROCESSING_STATUS as M, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as je, payrollWireEvents as He } from "../../../shared/constants.js";
22
- import { BaseComponent as Ke } from "../../Base/Base.js";
23
- import { useBase as ze } from "../../Base/useBase.js";
24
- import { useComponentDictionary as Je, useI18n as Qe } from "../../../i18n/I18n.js";
25
- import { readableStreamToBlob as Xe } from "../../../helpers/readableStreamToBlob.js";
26
- import { openPdfInNewTab as Ze } from "../../../helpers/openPdfInNewTab.js";
27
- import $e from "../../../hooks/useNumberFormatter.js";
28
- import { useDateFormatter as et } from "../../../hooks/useDateFormatter.js";
29
- import { useComponentContext as tt } from "../../../contexts/ComponentAdapter/useComponentContext.js";
30
- import { isNonRetryablePollError as ot } from "../../../hooks/usePollingTask/usePollingTask.js";
31
- import { renderErrorList as rt } from "../../../helpers/apiErrorToList.js";
32
- import { Flex as st } from "../../Common/Flex/Flex.js";
33
- import { usePagination as nt } from "../../../hooks/usePagination/usePagination.js";
34
- import { useNonce as it } from "../../../contexts/NonceProvider/useNonce.js";
35
- import { PayrollLoading as at } from "../../Common/PayrollLoading/PayrollLoading.js";
36
- const lt = (s = []) => s.filter(
19
+ import { useSubmissionPoll as Ve } from "./useSubmissionPoll.js";
20
+ import { useCompanyPaymentSpeed as je } from "../../../hooks/useCompanyPaymentSpeed.js";
21
+ import { PAYROLL_PROCESSING_STATUS as M, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as He, payrollWireEvents as Ke } from "../../../shared/constants.js";
22
+ import { BaseComponent as ze } from "../../Base/Base.js";
23
+ import { useBase as Je } from "../../Base/useBase.js";
24
+ import { useComponentDictionary as Qe, useI18n as Xe } from "../../../i18n/I18n.js";
25
+ import { readableStreamToBlob as Ze } from "../../../helpers/readableStreamToBlob.js";
26
+ import { openPdfInNewTab as $e } from "../../../helpers/openPdfInNewTab.js";
27
+ import et from "../../../hooks/useNumberFormatter.js";
28
+ import { useDateFormatter as tt } from "../../../hooks/useDateFormatter.js";
29
+ import { useComponentContext as ot } from "../../../contexts/ComponentAdapter/useComponentContext.js";
30
+ import { isNonRetryablePollError as rt } from "../../../hooks/usePollingTask/usePollingTask.js";
31
+ import { renderErrorList as st } from "../../../helpers/apiErrorToList.js";
32
+ import { Flex as nt } from "../../Common/Flex/Flex.js";
33
+ import { usePagination as it } from "../../../hooks/usePagination/usePagination.js";
34
+ import { useNonce as at } from "../../../contexts/NonceProvider/useNonce.js";
35
+ import { PayrollLoading as lt } from "../../Common/PayrollLoading/PayrollLoading.js";
36
+ const ct = (s = []) => s.filter(
37
37
  (n) => n.status === "unresolved" && n.unblockOptions && n.unblockOptions.length > 0
38
- ), ct = (s = []) => {
38
+ ), ut = (s = []) => {
39
39
  const n = s.find((a) => a.status === "unresolved");
40
40
  return n?.unblockOptions ? n.unblockOptions.find(
41
41
  (a) => a.unblockType === "submit_wire"
42
42
  )?.metadata.wireInRequestUuid : void 0;
43
43
  };
44
- function Kt(s) {
45
- return /* @__PURE__ */ l(Ke, { ...s, children: /* @__PURE__ */ l(ut, { ...s, children: s.children }) });
44
+ function zt(s) {
45
+ return /* @__PURE__ */ l(ze, { ...s, children: /* @__PURE__ */ l(mt, { ...s, children: s.children }) });
46
46
  }
47
- const ut = ({
47
+ const mt = ({
48
48
  companyId: s,
49
49
  payrollId: n,
50
50
  dictionary: L,
51
51
  onEvent: a,
52
- alerts: I,
53
- withReimbursements: x = !0,
52
+ alerts: x,
53
+ withReimbursements: I = !0,
54
54
  ConfirmWireDetailsComponent: G = Ye,
55
55
  readOnly: b = !1,
56
56
  className: V
57
57
  }) => {
58
- Je("Payroll.PayrollOverview", L), Qe("Payroll.PayrollOverview");
59
- const { baseSubmitHandler: _ } = ze(), { t: i } = Be("Payroll.PayrollOverview"), [O, S] = m(!1), [j, h] = m(I || []), [C, H] = m({}), [P, p] = m(!1), { showBoundary: K } = Fe(), z = $e("currency"), f = et(), { Button: J, UnorderedList: Q, Text: k } = tt(), [A, g] = m(d.Viewing), { currentPage: U, itemsPerPage: B, getPaginationProps: X } = nt({
58
+ Qe("Payroll.PayrollOverview", L), Xe("Payroll.PayrollOverview");
59
+ const { baseSubmitHandler: _ } = Je(), { t: i } = Be("Payroll.PayrollOverview"), [C, S] = m(!1), [j, h] = m(x || []), [O, H] = m({}), [P, p] = m(!1), { showBoundary: K } = Fe(), z = et("currency"), f = tt(), { Button: J, UnorderedList: Q, Text: k } = ot(), [A, R] = m(d.Viewing), { currentPage: U, itemsPerPage: B, getPaginationProps: X } = it({
60
60
  defaultItemsPerPage: 25
61
61
  }), Z = qe(), $ = Ne(
62
62
  () => ({
@@ -76,7 +76,7 @@ const ut = ({
76
76
  refetch: oe
77
77
  } = ke($, {
78
78
  placeholderData: Ue
79
- }), o = y?.payrollShow, re = lt(o?.submissionBlockers), w = ct(o?.creditBlockers), { data: se } = ve(
79
+ }), o = y?.payrollShow, re = ct(o?.submissionBlockers), w = ut(o?.creditBlockers), { data: se } = ve(
80
80
  {
81
81
  wireInRequestUuid: w || ""
82
82
  },
@@ -92,17 +92,17 @@ const ut = ({
92
92
  companyId: s,
93
93
  wireInId: w,
94
94
  onEvent: (e, t) => {
95
- e === He.PAYROLL_WIRE_FORM_DONE && p(!0), a(e, t);
95
+ e === Ke.PAYROLL_WIRE_FORM_DONE && p(!0), a(e, t);
96
96
  }
97
97
  }
98
98
  ), le = /* @__PURE__ */ l(Ie, { companyId: s, payrollId: n, onEvent: a });
99
99
  E(() => {
100
100
  v?.status === "pending_review" && !P && p(!0);
101
101
  }, [v?.status, P]);
102
- const R = o?.checkDate;
102
+ const g = o?.checkDate;
103
103
  E(() => {
104
- if (R && P) {
105
- const e = f.formatShortWithYear(R);
104
+ if (g && P) {
105
+ const e = f.formatShortWithYear(g);
106
106
  h([
107
107
  {
108
108
  type: "success",
@@ -114,7 +114,7 @@ const ut = ({
114
114
  }
115
115
  ]);
116
116
  }
117
- }, [P, R, i, f, k]);
117
+ }, [P, g, i, f, k]);
118
118
  const ce = (e) => {
119
119
  a(c.RUN_PAYROLL_PROCESSED, {
120
120
  payPeriod: e?.payPeriod,
@@ -136,13 +136,13 @@ const ut = ({
136
136
  {
137
137
  type: "error",
138
138
  title: i("alerts.payrollProcessingFailedTitle"),
139
- content: /* @__PURE__ */ _e(st, { flexDirection: "column", gap: 16, children: [
140
- /* @__PURE__ */ l(Q, { items: rt(e?.processingRequest?.errors ?? []) }),
139
+ content: /* @__PURE__ */ _e(nt, { flexDirection: "column", gap: 16, children: [
140
+ /* @__PURE__ */ l(Q, { items: st(e?.processingRequest?.errors ?? []) }),
141
141
  !b && /* @__PURE__ */ l(J, { variant: "secondary", onClick: q, children: i("alerts.payrollProcessingFailedCtaLabel") })
142
142
  ] })
143
143
  }
144
144
  ]), p(!1), S(!1);
145
- }, { start: D, isPolling: ue } = Ge({
145
+ }, { start: D, isPolling: ue } = Ve({
146
146
  refetch: oe,
147
147
  onProcessed: ce,
148
148
  onProcessingFailed: W,
@@ -158,17 +158,17 @@ const ut = ({
158
158
  }, [D]);
159
159
  const { data: me } = Te({
160
160
  companyId: s
161
- }), de = me.companyBankAccounts?.[0], { paymentSpeed: pe } = Ve(s), { mutateAsync: fe, isPending: Pe } = Oe(), { mutateAsync: ye } = Ce(), we = it(), [be, F] = m(
161
+ }), de = me.companyBankAccounts?.[0], { paymentSpeed: pe } = je(s), { mutateAsync: fe, isPending: Pe } = Ce(), { mutateAsync: ye } = Oe(), we = at(), [be, F] = m(
162
162
  () => /* @__PURE__ */ new Set()
163
163
  );
164
164
  if (!o) {
165
165
  if (T)
166
166
  throw new Error(i("alerts.payrollLoadFailed"));
167
- return /* @__PURE__ */ l(at, { title: i("dataLoadingTitle") });
167
+ return /* @__PURE__ */ l(lt, { title: i("dataLoadingTitle") });
168
168
  }
169
- if (T && ot(te))
169
+ if (T && rt(te))
170
170
  throw new Error(i("alerts.payrollLoadFailed"));
171
- if (A === d.Viewing && !o.calculatedAt)
171
+ if (A === d.Viewing && !o.calculatedAt && !Me(o.offCycleReason))
172
172
  throw new Error(i("alerts.payrollNotCalculated"));
173
173
  const Se = X(y.httpMeta.response.headers, ee), he = o.payrollTaxes?.reduce(
174
174
  (e, t) => {
@@ -180,8 +180,8 @@ const ut = ({
180
180
  }, e;
181
181
  },
182
182
  {}
183
- ) || {}, ge = async () => {
184
- g(d.Cancelling), await _(y, async () => {
183
+ ) || {}, Re = async () => {
184
+ R(d.Cancelling), await _(y, async () => {
185
185
  try {
186
186
  const e = await ye({
187
187
  request: {
@@ -189,15 +189,15 @@ const ut = ({
189
189
  payrollId: n
190
190
  }
191
191
  });
192
- g(d.Cancelled), a(c.RUN_PAYROLL_CANCELLED, e);
192
+ R(d.Cancelled), a(c.RUN_PAYROLL_CANCELLED, e);
193
193
  } catch (e) {
194
- throw g(d.Viewing), e;
194
+ throw R(d.Viewing), e;
195
195
  }
196
196
  });
197
- }, Re = () => {
197
+ }, ge = () => {
198
198
  a(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: n });
199
199
  }, De = async (e) => {
200
- const t = Ze({ loadingMessage: i("downloadLoadingMessage"), nonce: we });
200
+ const t = $e({ loadingMessage: i("downloadLoadingMessage"), nonce: we });
201
201
  F((r) => {
202
202
  const u = new Set(r);
203
203
  return u.add(e), u;
@@ -206,7 +206,7 @@ const ut = ({
206
206
  const r = await We(Z, { payrollId: n, employeeId: e });
207
207
  if (!r.value?.responseStream)
208
208
  throw t.close(), new Error(i("alerts.paystubPdfError"));
209
- const u = await Xe(r.value.responseStream, "application/pdf");
209
+ const u = await Ze(r.value.responseStream, "application/pdf");
210
210
  t.navigate(u), a(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: e });
211
211
  } catch (r) {
212
212
  t.close(), K(r instanceof Error ? r : new Error(String(r)));
@@ -224,8 +224,8 @@ const ut = ({
224
224
  companyId: s,
225
225
  payrollId: n,
226
226
  requestBody: {
227
- submissionBlockers: Object.entries(C).filter(
228
- ([t]) => je.includes(t)
227
+ submissionBlockers: Object.entries(O).filter(
228
+ ([t]) => He.includes(t)
229
229
  ).map(([t, r]) => ({
230
230
  blockerType: t,
231
231
  selectedOption: r
@@ -242,7 +242,7 @@ const ut = ({
242
242
  }), S(!0);
243
243
  });
244
244
  }, Y = (() => {
245
- if (!(O || ue) && !(o.processed || o.processingRequest?.status === M.submit_success) && o.checkDate && o.payrollDeadline)
245
+ if (!(C || ue) && !(o.processed || o.processingRequest?.status === M.submit_success) && o.checkDate && o.payrollDeadline)
246
246
  return {
247
247
  type: "info",
248
248
  title: i("alerts.directDepositDeadline", {
@@ -253,17 +253,17 @@ const ut = ({
253
253
  };
254
254
  })(), Le = [...j, ...Y ? [Y] : []];
255
255
  return /* @__PURE__ */ l(
256
- xe,
256
+ Ge,
257
257
  {
258
258
  className: V,
259
259
  onEdit: q,
260
260
  onSubmit: Ee,
261
- onCancel: ge,
262
- onPayrollReceipt: Re,
261
+ onCancel: Re,
262
+ onPayrollReceipt: ge,
263
263
  onPaystubDownload: De,
264
- status: Pe || O ? d.Submitting : A,
264
+ status: Pe || C ? d.Submitting : A,
265
265
  isProcessed: o.processed === !0 || o.processingRequest?.status === M.submit_success,
266
- canCancel: Me(o) && !b,
266
+ canCancel: xe(o) && !b,
267
267
  canEdit: !b,
268
268
  payrollData: o,
269
269
  employeeFlsaStatusByUuid: ie,
@@ -271,13 +271,13 @@ const ut = ({
271
271
  taxes: he,
272
272
  alerts: Le,
273
273
  submissionBlockers: re,
274
- selectedUnblockOptions: C,
274
+ selectedUnblockOptions: O,
275
275
  onUnblockOptionChange: (e, t) => {
276
276
  H((r) => ({ ...r, [e]: t }));
277
277
  },
278
278
  wireInConfirmationRequest: ae,
279
279
  printChecksBanner: le,
280
- withReimbursements: x,
280
+ withReimbursements: I,
281
281
  paymentSpeed: pe,
282
282
  pagination: Se,
283
283
  downloadingEmployeeIds: be
@@ -285,6 +285,6 @@ const ut = ({
285
285
  );
286
286
  };
287
287
  export {
288
- Kt as PayrollOverview
288
+ zt as PayrollOverview
289
289
  };
290
290
  //# sourceMappingURL=PayrollOverview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollOverview.js","sources":["../../../../src/components/Payroll/PayrollOverview/PayrollOverview.tsx"],"sourcesContent":["import { usePayrollsSubmitMutation } from '@gusto/embedded-api/react-query/payrollsSubmit'\nimport { usePayrollsCancelMutation } from '@gusto/embedded-api/react-query/payrollsCancel'\nimport { usePayrollsGet } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useBankAccountsGetSuspense } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport { useWireInRequestsGet } from '@gusto/embedded-api/react-query/wireInRequestsGet'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsGetPayStub } from '@gusto/embedded-api/funcs/payrollsGetPayStub'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport type { GetV1CompaniesCompanyIdPayrollsPayrollIdRequest } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrollspayrollid'\nimport type { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype'\nimport type {\n PayrollCreditBlockerType,\n PayrollCreditBlockerTypeUnblockOptions,\n} from '@gusto/embedded-api/models/components/payrollcreditblockertype'\nimport type { PayrollFlowAlert } from '../PayrollFlow/PayrollFlowComponents'\nimport {\n ConfirmWireDetails,\n type ConfirmWireDetailsComponentType,\n} from '../ConfirmWireDetails/ConfirmWireDetails'\nimport { canCancelPayroll } from '../helpers'\nimport { PrintChecks } from '../PrintChecks/PrintChecks'\nimport { PayrollOverviewPresentation } from './PayrollOverviewPresentation'\nimport { PayrollOverviewStatus } from './PayrollOverviewTypes'\nimport { useSubmissionPoll, type PayrollShow } from './useSubmissionPoll'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n componentEvents,\n payrollWireEvents,\n PAYROLL_PROCESSING_STATUS,\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES,\n type EventType,\n} from '@/shared/constants'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { readableStreamToBlob } from '@/helpers/readableStreamToBlob'\nimport { openPdfInNewTab } from '@/helpers/openPdfInNewTab'\nimport { useNonce } from '@/contexts/NonceProvider'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { isNonRetryablePollError } from '@/hooks/usePollingTask/usePollingTask'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\nimport { Flex, PayrollLoading } from '@/components/Common'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\n/**\n * Props for {@link PayrollOverview}.\n *\n * @public\n */\nexport interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.PayrollOverview'> {\n /** Identifier of the company that owns the payroll. */\n companyId: string\n /** Identifier of the payroll being reviewed. The payroll must already be calculated. */\n payrollId: string\n /** Alert banners to display above the payroll summary. */\n alerts?: PayrollFlowAlert[]\n /** Whether reimbursement fields are shown in the totals and per-employee tables. Defaults to `true`. */\n withReimbursements?: boolean\n /** Custom component to replace the default wire details confirmation UI. */\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n /**\n * Hides the edit and cancel actions, leaving submit and receipt/paystub actions available.\n * Use for a deep link to a specific payroll where editing shouldn't be offered. Defaults to\n * `false`.\n */\n readOnly?: boolean\n}\n\nconst findUnresolvedBlockersWithOptions = (\n blockers: PayrollSubmissionBlockerType[] = [],\n): PayrollSubmissionBlockerType[] => {\n return blockers.filter(\n blocker =>\n blocker.status === 'unresolved' &&\n blocker.unblockOptions &&\n blocker.unblockOptions.length > 0,\n )\n}\n\nconst findWireInRequestUuid = (\n creditBlockers: PayrollCreditBlockerType[] = [],\n): string | undefined => {\n const unresolvedCreditBlocker = creditBlockers.find(blocker => blocker.status === 'unresolved')\n\n if (!unresolvedCreditBlocker?.unblockOptions) {\n return undefined\n }\n\n const wireUnblockOption = unresolvedCreditBlocker.unblockOptions.find(\n (option: PayrollCreditBlockerTypeUnblockOptions) => option.unblockType === 'submit_wire',\n )\n\n return wireUnblockOption?.metadata.wireInRequestUuid\n}\n\n/**\n * Final review screen for a calculated payroll before submission, with submit, cancel,\n * and edit controls. After submission, tracks processing status and surfaces the receipt\n * and per-employee paystub downloads once complete.\n *\n * @remarks\n * The payroll referenced by `payrollId` must already be calculated; rendering with an\n * uncalculated payroll throws. Unresolved submission blockers (e.g. fast-ACH threshold,\n * wire-in funding) are surfaced inline and the submit action stays disabled until each\n * blocker has a selected unblock option. While the payroll is processing, the component\n * polls until success or failure and emits the corresponding event. Pass `readOnly` to hide\n * the edit and cancel actions while keeping submit available.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/edit` | User chose to edit the payroll before submitting | — |\n * | `runPayroll/submitting` | Submit request was sent to the API | — |\n * | `runPayroll/submitted` | Payroll was successfully submitted | Submit payroll response |\n * | `runPayroll/processed` | Payroll finished processing successfully | `{ payPeriod, payrollUuid }` |\n * | `runPayroll/processingFailed` | Payroll processing failed | — |\n * | `runPayroll/cancelled` | Payroll was cancelled | Cancel payroll response |\n * | `runPayroll/receipt/get` | User requested the payroll receipt | `{ payrollId }` |\n * | `runPayroll/pdfPaystub/viewed` | User opened an employee's paystub PDF | `{ employeeId }` |\n * | `payroll/wire/form/done` | Wire-in details were confirmed via the embedded wire form | Submit wire-in response |\n * | `payroll/printChecks/start` | User opened the print-checks modal from the embedded print-checks banner | — |\n * | `payroll/printChecks/generate/start` | User submitted the print-checks form | — |\n * | `payroll/printChecks/generate/succeeded` | Printable checks finished generating | `{ documentUrl }` |\n * | `payroll/printChecks/generate/failed` | The print-checks request was rejected or generation failed | `{ errorMessage }` |\n * | `payroll/printChecks/retry` | User retried after a failed check generation | — |\n * | `payroll/printChecks/cancel` | User cancelled the print-checks form | — |\n * | `payroll/printChecks/close` | User closed the print-checks failure or summary screen | — |\n *\n * @param props - See {@link PayrollOverviewProps}.\n * @returns The payroll overview surface.\n * @public\n */\nexport function PayrollOverview(props: PayrollOverviewProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n companyId,\n payrollId,\n dictionary,\n onEvent,\n alerts,\n withReimbursements = true,\n ConfirmWireDetailsComponent = ConfirmWireDetails,\n readOnly = false,\n className,\n}: PayrollOverviewProps) => {\n useComponentDictionary('Payroll.PayrollOverview', dictionary)\n useI18n('Payroll.PayrollOverview')\n const { baseSubmitHandler } = useBase()\n const { t } = useTranslation('Payroll.PayrollOverview')\n const [hasSubmittedInSession, setHasSubmittedInSession] = useState(false)\n const [internalAlerts, setInternalAlerts] = useState(alerts || [])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n const [showWireDetailsConfirmation, setShowWireDetailsConfirmation] = useState(false)\n const { showBoundary } = useErrorBoundary()\n const formatCurrency = useNumberFormatter('currency')\n const dateFormatter = useDateFormatter()\n const { Button, UnorderedList, Text } = useComponentContext()\n const [status, setStatus] = useState(PayrollOverviewStatus.Viewing)\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const gustoEmbedded = useGustoEmbeddedContext()\n\n const payrollRequest = useMemo<GetV1CompaniesCompanyIdPayrollsPayrollIdRequest>(\n () => ({\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions', 'totals', 'payroll_taxes'],\n page: currentPage,\n per: itemsPerPage,\n sortBy: 'last_name',\n }),\n [companyId, payrollId, currentPage, itemsPerPage],\n )\n\n const {\n data,\n isFetching,\n isError,\n error,\n refetch: refetchPayroll,\n } = usePayrollsGet(payrollRequest, {\n placeholderData: keepPreviousData,\n })\n const payrollData = data?.payrollShow\n const submissionBlockers = findUnresolvedBlockersWithOptions(payrollData?.submissionBlockers)\n const wireInId = findWireInRequestUuid(payrollData?.creditBlockers)\n\n const { data: wireInRequestData } = useWireInRequestsGet(\n {\n wireInRequestUuid: wireInId || '',\n },\n { enabled: !!wireInId },\n )\n const wireInRequest = wireInRequestData?.wireInRequest\n\n // Scoped to the current page's employees so this stays bounded regardless of company size,\n // since `flsaStatus` (compensation type) isn't available on employeeCompensations for\n // employees without an hourlyCompensations line item (e.g. salaried employees).\n const employeeUuids = (payrollData?.employeeCompensations ?? [])\n .map(employeeCompensation => employeeCompensation.employeeUuid)\n .filter((uuid): uuid is string => !!uuid)\n\n const { data: employeesData } = useEmployeesList(\n { companyId, uuids: employeeUuids },\n { enabled: employeeUuids.length > 0 },\n )\n const employeeFlsaStatusByUuid = (employeesData?.showEmployees ?? []).reduce<\n Record<string, string | undefined>\n >((acc, employee) => {\n acc[employee.uuid] = employee.flsaStatus\n return acc\n }, {})\n\n const onEdit = () => {\n onEvent(componentEvents.RUN_PAYROLL_EDIT)\n }\n\n const handleWireEvent = (type: EventType, data?: unknown) => {\n if (type === payrollWireEvents.PAYROLL_WIRE_FORM_DONE) {\n setShowWireDetailsConfirmation(true)\n }\n onEvent(type, data)\n }\n\n const wireInConfirmationRequest = wireInId && (\n <ConfirmWireDetailsComponent\n companyId={companyId}\n wireInId={wireInId}\n onEvent={handleWireEvent}\n />\n )\n\n const printChecksBanner = (\n <PrintChecks companyId={companyId} payrollId={payrollId} onEvent={onEvent} />\n )\n\n useEffect(() => {\n if (wireInRequest?.status === 'pending_review' && !showWireDetailsConfirmation) {\n setShowWireDetailsConfirmation(true)\n }\n }, [wireInRequest?.status, showWireDetailsConfirmation])\n\n const checkDate = payrollData?.checkDate\n useEffect(() => {\n if (checkDate && showWireDetailsConfirmation) {\n const formattedCheckDate = dateFormatter.formatShortWithYear(checkDate)\n\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.wireDetailsSubmittedTitle'),\n content: (\n <Text>\n {t('alerts.wireDetailsSubmittedMessage', { checkDate: formattedCheckDate })}\n </Text>\n ),\n onDismiss: () => {\n setShowWireDetailsConfirmation(false)\n },\n },\n ])\n }\n }, [showWireDetailsConfirmation, checkDate, t, dateFormatter, Text])\n\n const emitProcessed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSED, {\n payPeriod: payroll?.payPeriod,\n payrollUuid: payrollId,\n })\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.payrollProcessedTitle'),\n content: t('alerts.payrollProcessedMessage', {\n amount: formatCurrency(Number(payroll?.totals?.companyDebit)),\n date: dateFormatter.formatShortWithYear(\n payroll?.payrollStatusMeta?.expectedDebitTime ?? payroll?.payrollDeadline,\n ),\n }),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const emitProcessingFailed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setInternalAlerts([\n {\n type: 'error',\n title: t('alerts.payrollProcessingFailedTitle'),\n content: (\n <Flex flexDirection=\"column\" gap={16}>\n <UnorderedList items={renderErrorList(payroll?.processingRequest?.errors ?? [])} />\n {!readOnly && (\n <Button variant=\"secondary\" onClick={onEdit}>\n {t('alerts.payrollProcessingFailedCtaLabel')}\n </Button>\n )}\n </Flex>\n ),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const { start: startPayrollPoll, isPolling } = useSubmissionPoll({\n refetch: refetchPayroll,\n onProcessed: emitProcessed,\n onProcessingFailed: emitProcessingFailed,\n // Unlike the calculation poll, a second Submit click here is safe even if this fires on a\n // payroll that actually did process successfully — payrollsSubmit only operates on an\n // unprocessed payroll, so the API itself rejects a resubmit rather than double-running it.\n onError: () => {\n emitProcessingFailed(undefined)\n },\n })\n\n // The initial read is a non-suspense query; if its notification never arrives, the component\n // is stuck on `!payrollData` forever with no other render source. This one read forces that\n // render -- it only keeps tracking to completion if it happens to land on `submitting`, not as\n // a durable watcher for a submission started elsewhere.\n useEffect(() => {\n startPayrollPoll({ baseline: null, sawSubmitting: false })\n }, [startPayrollPoll])\n\n const { data: bankAccountData } = useBankAccountsGetSuspense({\n companyId,\n })\n const bankAccount = bankAccountData.companyBankAccounts?.[0]\n\n const { paymentSpeed } = useCompanyPaymentSpeed(companyId)\n\n const { mutateAsync: submitPayroll, isPending } = usePayrollsSubmitMutation()\n\n const { mutateAsync: cancelPayroll } = usePayrollsCancelMutation()\n\n const nonce = useNonce()\n\n const [downloadingEmployeeIds, setDownloadingEmployeeIds] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n if (!payrollData) {\n if (isError) {\n throw new Error(t('alerts.payrollLoadFailed'))\n }\n return <PayrollLoading title={t('dataLoadingTitle')} />\n }\n\n // `keepPreviousData` can leave stale data in place while the query is erroring in the\n // background. A retryable error (network blip, transient 5xx) is fine to ride out on stale\n // data, but a non-retryable one (expired session, schema mismatch) never recovers on its own --\n // continuing to render stale data would hide that from the partner indefinitely.\n if (isError && isNonRetryablePollError(error)) {\n throw new Error(t('alerts.payrollLoadFailed'))\n }\n\n if (status === PayrollOverviewStatus.Viewing && !payrollData.calculatedAt) {\n throw new Error(t('alerts.payrollNotCalculated'))\n }\n\n const pagination = getPaginationProps(data.httpMeta.response.headers, isFetching)\n\n // Per-tax totals come from the payroll-level `payrollTaxes` aggregate so they stay\n // correct when `employeeCompensations` is paginated (only a single page is loaded).\n const taxes =\n payrollData.payrollTaxes?.reduce(\n (acc, tax) => {\n if (!tax.name) return acc\n const amount = tax.amount ?? 0\n acc[tax.name] = {\n employee: (acc[tax.name]?.employee ?? 0) + (tax.employer ? 0 : amount),\n employer: (acc[tax.name]?.employer ?? 0) + (tax.employer ? amount : 0),\n }\n return acc\n },\n {} as Record<string, { employee: number; employer: number }>,\n ) || {}\n\n const onCancel = async () => {\n setStatus(PayrollOverviewStatus.Cancelling)\n await baseSubmitHandler(data, async () => {\n try {\n const result = await cancelPayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setStatus(PayrollOverviewStatus.Cancelled)\n onEvent(componentEvents.RUN_PAYROLL_CANCELLED, result)\n } catch (error) {\n setStatus(PayrollOverviewStatus.Viewing)\n throw error\n }\n })\n }\n const onPayrollReceipt = () => {\n onEvent(componentEvents.RUN_PAYROLL_RECEIPT_GET, { payrollId })\n }\n\n const onPaystubDownload = async (employeeId: string) => {\n const tab = openPdfInNewTab({ loadingMessage: t('downloadLoadingMessage'), nonce })\n setDownloadingEmployeeIds(prev => {\n const next = new Set(prev)\n next.add(employeeId)\n return next\n })\n try {\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId, employeeId })\n if (!response.value?.responseStream) {\n tab.close()\n throw new Error(t('alerts.paystubPdfError'))\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n tab.navigate(pdfBlob)\n onEvent(componentEvents.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId })\n } catch (err) {\n tab.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingEmployeeIds(prev => {\n if (!prev.has(employeeId)) return prev\n const next = new Set(prev)\n next.delete(employeeId)\n return next\n })\n }\n }\n const onSubmit = async () => {\n await baseSubmitHandler(data, async () => {\n const result = await submitPayroll({\n request: {\n companyId,\n payrollId,\n requestBody: {\n submissionBlockers: Object.entries(selectedUnblockOptions)\n .filter(([blockerType]) =>\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES.includes(blockerType),\n )\n .map(([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n })),\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTING)\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTED, result)\n startPayrollPoll({\n baseline: {\n processed: payrollData.processed ?? false,\n status: payrollData.processingRequest?.status,\n },\n sawSubmitting: false,\n })\n setHasSubmittedInSession(true)\n })\n }\n\n const deadlineAlert: PayrollFlowAlert | undefined = (() => {\n if (hasSubmittedInSession || isPolling) return undefined\n if (\n payrollData.processed ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n )\n return undefined\n\n if (payrollData.checkDate && payrollData.payrollDeadline) {\n return {\n type: 'info' as const,\n title: t('alerts.directDepositDeadline', {\n payDate: dateFormatter.formatShortWithWeekday(payrollData.checkDate),\n ...dateFormatter.formatWithTime(payrollData.payrollDeadline),\n }),\n content: t('alerts.directDepositDeadlineText'),\n }\n }\n return undefined\n })()\n\n const combinedAlerts = [...internalAlerts, ...(deadlineAlert ? [deadlineAlert] : [])]\n\n return (\n <PayrollOverviewPresentation\n className={className}\n onEdit={onEdit}\n onSubmit={onSubmit}\n onCancel={onCancel}\n onPayrollReceipt={onPayrollReceipt}\n onPaystubDownload={onPaystubDownload}\n status={isPending || hasSubmittedInSession ? PayrollOverviewStatus.Submitting : status}\n isProcessed={\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n }\n canCancel={canCancelPayroll(payrollData) && !readOnly}\n canEdit={!readOnly}\n payrollData={payrollData}\n employeeFlsaStatusByUuid={employeeFlsaStatusByUuid}\n bankAccount={bankAccount}\n taxes={taxes}\n alerts={combinedAlerts}\n submissionBlockers={submissionBlockers}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={(blockerType, value) => {\n setSelectedUnblockOptions(prev => ({ ...prev, [blockerType]: value }))\n }}\n wireInConfirmationRequest={wireInConfirmationRequest}\n printChecksBanner={printChecksBanner}\n withReimbursements={withReimbursements}\n paymentSpeed={paymentSpeed}\n pagination={pagination}\n downloadingEmployeeIds={downloadingEmployeeIds}\n />\n )\n}\n"],"names":["findUnresolvedBlockersWithOptions","blockers","blocker","findWireInRequestUuid","creditBlockers","unresolvedCreditBlocker","option","PayrollOverview","props","jsx","BaseComponent","Root","companyId","payrollId","dictionary","onEvent","alerts","withReimbursements","ConfirmWireDetailsComponent","ConfirmWireDetails","readOnly","className","useComponentDictionary","useI18n","baseSubmitHandler","useBase","t","useTranslation","hasSubmittedInSession","setHasSubmittedInSession","useState","internalAlerts","setInternalAlerts","selectedUnblockOptions","setSelectedUnblockOptions","showWireDetailsConfirmation","setShowWireDetailsConfirmation","showBoundary","useErrorBoundary","formatCurrency","useNumberFormatter","dateFormatter","useDateFormatter","Button","UnorderedList","Text","useComponentContext","status","setStatus","PayrollOverviewStatus","currentPage","itemsPerPage","getPaginationProps","usePagination","gustoEmbedded","useGustoEmbeddedContext","payrollRequest","useMemo","data","isFetching","isError","error","refetchPayroll","usePayrollsGet","keepPreviousData","payrollData","submissionBlockers","wireInId","wireInRequestData","useWireInRequestsGet","wireInRequest","employeeUuids","employeeCompensation","uuid","employeesData","useEmployeesList","employeeFlsaStatusByUuid","acc","employee","onEdit","componentEvents","wireInConfirmationRequest","type","payrollWireEvents","printChecksBanner","PrintChecks","useEffect","checkDate","formattedCheckDate","emitProcessed","payroll","emitProcessingFailed","jsxs","Flex","renderErrorList","startPayrollPoll","isPolling","useSubmissionPoll","bankAccountData","useBankAccountsGetSuspense","bankAccount","paymentSpeed","useCompanyPaymentSpeed","submitPayroll","isPending","usePayrollsSubmitMutation","cancelPayroll","usePayrollsCancelMutation","nonce","useNonce","downloadingEmployeeIds","setDownloadingEmployeeIds","PayrollLoading","isNonRetryablePollError","pagination","taxes","tax","amount","onCancel","result","onPayrollReceipt","onPaystubDownload","employeeId","tab","openPdfInNewTab","prev","next","response","payrollsGetPayStub","pdfBlob","readableStreamToBlob","err","onSubmit","blockerType","PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES","selectedOption","deadlineAlert","PAYROLL_PROCESSING_STATUS","combinedAlerts","PayrollOverviewPresentation","canCancelPayroll","value"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollOverview.js","sources":["../../../../src/components/Payroll/PayrollOverview/PayrollOverview.tsx"],"sourcesContent":["import { usePayrollsSubmitMutation } from '@gusto/embedded-api/react-query/payrollsSubmit'\nimport { usePayrollsCancelMutation } from '@gusto/embedded-api/react-query/payrollsCancel'\nimport { usePayrollsGet } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useBankAccountsGetSuspense } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport { useWireInRequestsGet } from '@gusto/embedded-api/react-query/wireInRequestsGet'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsGetPayStub } from '@gusto/embedded-api/funcs/payrollsGetPayStub'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport type { GetV1CompaniesCompanyIdPayrollsPayrollIdRequest } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrollspayrollid'\nimport type { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype'\nimport type {\n PayrollCreditBlockerType,\n PayrollCreditBlockerTypeUnblockOptions,\n} from '@gusto/embedded-api/models/components/payrollcreditblockertype'\nimport type { PayrollFlowAlert } from '../PayrollFlow/PayrollFlowComponents'\nimport {\n ConfirmWireDetails,\n type ConfirmWireDetailsComponentType,\n} from '../ConfirmWireDetails/ConfirmWireDetails'\nimport { canCancelPayroll, isTaxReconciliationPayroll } from '../helpers'\nimport { PrintChecks } from '../PrintChecks/PrintChecks'\nimport { PayrollOverviewPresentation } from './PayrollOverviewPresentation'\nimport { PayrollOverviewStatus } from './PayrollOverviewTypes'\nimport { useSubmissionPoll, type PayrollShow } from './useSubmissionPoll'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n componentEvents,\n payrollWireEvents,\n PAYROLL_PROCESSING_STATUS,\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES,\n type EventType,\n} from '@/shared/constants'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { readableStreamToBlob } from '@/helpers/readableStreamToBlob'\nimport { openPdfInNewTab } from '@/helpers/openPdfInNewTab'\nimport { useNonce } from '@/contexts/NonceProvider'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { isNonRetryablePollError } from '@/hooks/usePollingTask/usePollingTask'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\nimport { Flex, PayrollLoading } from '@/components/Common'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\n/**\n * Props for {@link PayrollOverview}.\n *\n * @public\n */\nexport interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.PayrollOverview'> {\n /** Identifier of the company that owns the payroll. */\n companyId: string\n /** Identifier of the payroll being reviewed. The payroll must already be calculated. */\n payrollId: string\n /** Alert banners to display above the payroll summary. */\n alerts?: PayrollFlowAlert[]\n /** Whether reimbursement fields are shown in the totals and per-employee tables. Defaults to `true`. */\n withReimbursements?: boolean\n /** Custom component to replace the default wire details confirmation UI. */\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n /**\n * Hides the edit and cancel actions, leaving submit and receipt/paystub actions available.\n * Use for a deep link to a specific payroll where editing shouldn't be offered. Defaults to\n * `false`.\n */\n readOnly?: boolean\n}\n\nconst findUnresolvedBlockersWithOptions = (\n blockers: PayrollSubmissionBlockerType[] = [],\n): PayrollSubmissionBlockerType[] => {\n return blockers.filter(\n blocker =>\n blocker.status === 'unresolved' &&\n blocker.unblockOptions &&\n blocker.unblockOptions.length > 0,\n )\n}\n\nconst findWireInRequestUuid = (\n creditBlockers: PayrollCreditBlockerType[] = [],\n): string | undefined => {\n const unresolvedCreditBlocker = creditBlockers.find(blocker => blocker.status === 'unresolved')\n\n if (!unresolvedCreditBlocker?.unblockOptions) {\n return undefined\n }\n\n const wireUnblockOption = unresolvedCreditBlocker.unblockOptions.find(\n (option: PayrollCreditBlockerTypeUnblockOptions) => option.unblockType === 'submit_wire',\n )\n\n return wireUnblockOption?.metadata.wireInRequestUuid\n}\n\n/**\n * Final review screen for a calculated payroll before submission, with submit, cancel,\n * and edit controls. After submission, tracks processing status and surfaces the receipt\n * and per-employee paystub downloads once complete.\n *\n * @remarks\n * The payroll referenced by `payrollId` must already be calculated; rendering with an\n * uncalculated payroll throws. Unresolved submission blockers (e.g. fast-ACH threshold,\n * wire-in funding) are surfaced inline and the submit action stays disabled until each\n * blocker has a selected unblock option. While the payroll is processing, the component\n * polls until success or failure and emits the corresponding event. Pass `readOnly` to hide\n * the edit and cancel actions while keeping submit available.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/edit` | User chose to edit the payroll before submitting | — |\n * | `runPayroll/submitting` | Submit request was sent to the API | — |\n * | `runPayroll/submitted` | Payroll was successfully submitted | Submit payroll response |\n * | `runPayroll/processed` | Payroll finished processing successfully | `{ payPeriod, payrollUuid }` |\n * | `runPayroll/processingFailed` | Payroll processing failed | — |\n * | `runPayroll/cancelled` | Payroll was cancelled | Cancel payroll response |\n * | `runPayroll/receipt/get` | User requested the payroll receipt | `{ payrollId }` |\n * | `runPayroll/pdfPaystub/viewed` | User opened an employee's paystub PDF | `{ employeeId }` |\n * | `payroll/wire/form/done` | Wire-in details were confirmed via the embedded wire form | Submit wire-in response |\n * | `payroll/printChecks/start` | User opened the print-checks modal from the embedded print-checks banner | — |\n * | `payroll/printChecks/generate/start` | User submitted the print-checks form | — |\n * | `payroll/printChecks/generate/succeeded` | Printable checks finished generating | `{ documentUrl }` |\n * | `payroll/printChecks/generate/failed` | The print-checks request was rejected or generation failed | `{ errorMessage }` |\n * | `payroll/printChecks/retry` | User retried after a failed check generation | — |\n * | `payroll/printChecks/cancel` | User cancelled the print-checks form | — |\n * | `payroll/printChecks/close` | User closed the print-checks failure or summary screen | — |\n *\n * @param props - See {@link PayrollOverviewProps}.\n * @returns The payroll overview surface.\n * @public\n */\nexport function PayrollOverview(props: PayrollOverviewProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n companyId,\n payrollId,\n dictionary,\n onEvent,\n alerts,\n withReimbursements = true,\n ConfirmWireDetailsComponent = ConfirmWireDetails,\n readOnly = false,\n className,\n}: PayrollOverviewProps) => {\n useComponentDictionary('Payroll.PayrollOverview', dictionary)\n useI18n('Payroll.PayrollOverview')\n const { baseSubmitHandler } = useBase()\n const { t } = useTranslation('Payroll.PayrollOverview')\n const [hasSubmittedInSession, setHasSubmittedInSession] = useState(false)\n const [internalAlerts, setInternalAlerts] = useState(alerts || [])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n const [showWireDetailsConfirmation, setShowWireDetailsConfirmation] = useState(false)\n const { showBoundary } = useErrorBoundary()\n const formatCurrency = useNumberFormatter('currency')\n const dateFormatter = useDateFormatter()\n const { Button, UnorderedList, Text } = useComponentContext()\n const [status, setStatus] = useState(PayrollOverviewStatus.Viewing)\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const gustoEmbedded = useGustoEmbeddedContext()\n\n const payrollRequest = useMemo<GetV1CompaniesCompanyIdPayrollsPayrollIdRequest>(\n () => ({\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions', 'totals', 'payroll_taxes'],\n page: currentPage,\n per: itemsPerPage,\n sortBy: 'last_name',\n }),\n [companyId, payrollId, currentPage, itemsPerPage],\n )\n\n const {\n data,\n isFetching,\n isError,\n error,\n refetch: refetchPayroll,\n } = usePayrollsGet(payrollRequest, {\n placeholderData: keepPreviousData,\n })\n const payrollData = data?.payrollShow\n const submissionBlockers = findUnresolvedBlockersWithOptions(payrollData?.submissionBlockers)\n const wireInId = findWireInRequestUuid(payrollData?.creditBlockers)\n\n const { data: wireInRequestData } = useWireInRequestsGet(\n {\n wireInRequestUuid: wireInId || '',\n },\n { enabled: !!wireInId },\n )\n const wireInRequest = wireInRequestData?.wireInRequest\n\n // Scoped to the current page's employees so this stays bounded regardless of company size,\n // since `flsaStatus` (compensation type) isn't available on employeeCompensations for\n // employees without an hourlyCompensations line item (e.g. salaried employees).\n const employeeUuids = (payrollData?.employeeCompensations ?? [])\n .map(employeeCompensation => employeeCompensation.employeeUuid)\n .filter((uuid): uuid is string => !!uuid)\n\n const { data: employeesData } = useEmployeesList(\n { companyId, uuids: employeeUuids },\n { enabled: employeeUuids.length > 0 },\n )\n const employeeFlsaStatusByUuid = (employeesData?.showEmployees ?? []).reduce<\n Record<string, string | undefined>\n >((acc, employee) => {\n acc[employee.uuid] = employee.flsaStatus\n return acc\n }, {})\n\n const onEdit = () => {\n onEvent(componentEvents.RUN_PAYROLL_EDIT)\n }\n\n const handleWireEvent = (type: EventType, data?: unknown) => {\n if (type === payrollWireEvents.PAYROLL_WIRE_FORM_DONE) {\n setShowWireDetailsConfirmation(true)\n }\n onEvent(type, data)\n }\n\n const wireInConfirmationRequest = wireInId && (\n <ConfirmWireDetailsComponent\n companyId={companyId}\n wireInId={wireInId}\n onEvent={handleWireEvent}\n />\n )\n\n const printChecksBanner = (\n <PrintChecks companyId={companyId} payrollId={payrollId} onEvent={onEvent} />\n )\n\n useEffect(() => {\n if (wireInRequest?.status === 'pending_review' && !showWireDetailsConfirmation) {\n setShowWireDetailsConfirmation(true)\n }\n }, [wireInRequest?.status, showWireDetailsConfirmation])\n\n const checkDate = payrollData?.checkDate\n useEffect(() => {\n if (checkDate && showWireDetailsConfirmation) {\n const formattedCheckDate = dateFormatter.formatShortWithYear(checkDate)\n\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.wireDetailsSubmittedTitle'),\n content: (\n <Text>\n {t('alerts.wireDetailsSubmittedMessage', { checkDate: formattedCheckDate })}\n </Text>\n ),\n onDismiss: () => {\n setShowWireDetailsConfirmation(false)\n },\n },\n ])\n }\n }, [showWireDetailsConfirmation, checkDate, t, dateFormatter, Text])\n\n const emitProcessed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSED, {\n payPeriod: payroll?.payPeriod,\n payrollUuid: payrollId,\n })\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.payrollProcessedTitle'),\n content: t('alerts.payrollProcessedMessage', {\n amount: formatCurrency(Number(payroll?.totals?.companyDebit)),\n date: dateFormatter.formatShortWithYear(\n payroll?.payrollStatusMeta?.expectedDebitTime ?? payroll?.payrollDeadline,\n ),\n }),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const emitProcessingFailed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setInternalAlerts([\n {\n type: 'error',\n title: t('alerts.payrollProcessingFailedTitle'),\n content: (\n <Flex flexDirection=\"column\" gap={16}>\n <UnorderedList items={renderErrorList(payroll?.processingRequest?.errors ?? [])} />\n {!readOnly && (\n <Button variant=\"secondary\" onClick={onEdit}>\n {t('alerts.payrollProcessingFailedCtaLabel')}\n </Button>\n )}\n </Flex>\n ),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const { start: startPayrollPoll, isPolling } = useSubmissionPoll({\n refetch: refetchPayroll,\n onProcessed: emitProcessed,\n onProcessingFailed: emitProcessingFailed,\n // Unlike the calculation poll, a second Submit click here is safe even if this fires on a\n // payroll that actually did process successfully — payrollsSubmit only operates on an\n // unprocessed payroll, so the API itself rejects a resubmit rather than double-running it.\n onError: () => {\n emitProcessingFailed(undefined)\n },\n })\n\n // The initial read is a non-suspense query; if its notification never arrives, the component\n // is stuck on `!payrollData` forever with no other render source. This one read forces that\n // render -- it only keeps tracking to completion if it happens to land on `submitting`, not as\n // a durable watcher for a submission started elsewhere.\n useEffect(() => {\n startPayrollPoll({ baseline: null, sawSubmitting: false })\n }, [startPayrollPoll])\n\n const { data: bankAccountData } = useBankAccountsGetSuspense({\n companyId,\n })\n const bankAccount = bankAccountData.companyBankAccounts?.[0]\n\n const { paymentSpeed } = useCompanyPaymentSpeed(companyId)\n\n const { mutateAsync: submitPayroll, isPending } = usePayrollsSubmitMutation()\n\n const { mutateAsync: cancelPayroll } = usePayrollsCancelMutation()\n\n const nonce = useNonce()\n\n const [downloadingEmployeeIds, setDownloadingEmployeeIds] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n if (!payrollData) {\n if (isError) {\n throw new Error(t('alerts.payrollLoadFailed'))\n }\n return <PayrollLoading title={t('dataLoadingTitle')} />\n }\n\n // `keepPreviousData` can leave stale data in place while the query is erroring in the\n // background. A retryable error (network blip, transient 5xx) is fine to ride out on stale\n // data, but a non-retryable one (expired session, schema mismatch) never recovers on its own --\n // continuing to render stale data would hide that from the partner indefinitely.\n if (isError && isNonRetryablePollError(error)) {\n throw new Error(t('alerts.payrollLoadFailed'))\n }\n\n if (\n status === PayrollOverviewStatus.Viewing &&\n !payrollData.calculatedAt &&\n !isTaxReconciliationPayroll(payrollData.offCycleReason)\n ) {\n throw new Error(t('alerts.payrollNotCalculated'))\n }\n\n const pagination = getPaginationProps(data.httpMeta.response.headers, isFetching)\n\n // Per-tax totals come from the payroll-level `payrollTaxes` aggregate so they stay\n // correct when `employeeCompensations` is paginated (only a single page is loaded).\n const taxes =\n payrollData.payrollTaxes?.reduce(\n (acc, tax) => {\n if (!tax.name) return acc\n const amount = tax.amount ?? 0\n acc[tax.name] = {\n employee: (acc[tax.name]?.employee ?? 0) + (tax.employer ? 0 : amount),\n employer: (acc[tax.name]?.employer ?? 0) + (tax.employer ? amount : 0),\n }\n return acc\n },\n {} as Record<string, { employee: number; employer: number }>,\n ) || {}\n\n const onCancel = async () => {\n setStatus(PayrollOverviewStatus.Cancelling)\n await baseSubmitHandler(data, async () => {\n try {\n const result = await cancelPayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setStatus(PayrollOverviewStatus.Cancelled)\n onEvent(componentEvents.RUN_PAYROLL_CANCELLED, result)\n } catch (error) {\n setStatus(PayrollOverviewStatus.Viewing)\n throw error\n }\n })\n }\n const onPayrollReceipt = () => {\n onEvent(componentEvents.RUN_PAYROLL_RECEIPT_GET, { payrollId })\n }\n\n const onPaystubDownload = async (employeeId: string) => {\n const tab = openPdfInNewTab({ loadingMessage: t('downloadLoadingMessage'), nonce })\n setDownloadingEmployeeIds(prev => {\n const next = new Set(prev)\n next.add(employeeId)\n return next\n })\n try {\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId, employeeId })\n if (!response.value?.responseStream) {\n tab.close()\n throw new Error(t('alerts.paystubPdfError'))\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n tab.navigate(pdfBlob)\n onEvent(componentEvents.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId })\n } catch (err) {\n tab.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingEmployeeIds(prev => {\n if (!prev.has(employeeId)) return prev\n const next = new Set(prev)\n next.delete(employeeId)\n return next\n })\n }\n }\n const onSubmit = async () => {\n await baseSubmitHandler(data, async () => {\n const result = await submitPayroll({\n request: {\n companyId,\n payrollId,\n requestBody: {\n submissionBlockers: Object.entries(selectedUnblockOptions)\n .filter(([blockerType]) =>\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES.includes(blockerType),\n )\n .map(([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n })),\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTING)\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTED, result)\n startPayrollPoll({\n baseline: {\n processed: payrollData.processed ?? false,\n status: payrollData.processingRequest?.status,\n },\n sawSubmitting: false,\n })\n setHasSubmittedInSession(true)\n })\n }\n\n const deadlineAlert: PayrollFlowAlert | undefined = (() => {\n if (hasSubmittedInSession || isPolling) return undefined\n if (\n payrollData.processed ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n )\n return undefined\n\n if (payrollData.checkDate && payrollData.payrollDeadline) {\n return {\n type: 'info' as const,\n title: t('alerts.directDepositDeadline', {\n payDate: dateFormatter.formatShortWithWeekday(payrollData.checkDate),\n ...dateFormatter.formatWithTime(payrollData.payrollDeadline),\n }),\n content: t('alerts.directDepositDeadlineText'),\n }\n }\n return undefined\n })()\n\n const combinedAlerts = [...internalAlerts, ...(deadlineAlert ? [deadlineAlert] : [])]\n\n return (\n <PayrollOverviewPresentation\n className={className}\n onEdit={onEdit}\n onSubmit={onSubmit}\n onCancel={onCancel}\n onPayrollReceipt={onPayrollReceipt}\n onPaystubDownload={onPaystubDownload}\n status={isPending || hasSubmittedInSession ? PayrollOverviewStatus.Submitting : status}\n isProcessed={\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n }\n canCancel={canCancelPayroll(payrollData) && !readOnly}\n canEdit={!readOnly}\n payrollData={payrollData}\n employeeFlsaStatusByUuid={employeeFlsaStatusByUuid}\n bankAccount={bankAccount}\n taxes={taxes}\n alerts={combinedAlerts}\n submissionBlockers={submissionBlockers}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={(blockerType, value) => {\n setSelectedUnblockOptions(prev => ({ ...prev, [blockerType]: value }))\n }}\n wireInConfirmationRequest={wireInConfirmationRequest}\n printChecksBanner={printChecksBanner}\n withReimbursements={withReimbursements}\n paymentSpeed={paymentSpeed}\n pagination={pagination}\n downloadingEmployeeIds={downloadingEmployeeIds}\n />\n )\n}\n"],"names":["findUnresolvedBlockersWithOptions","blockers","blocker","findWireInRequestUuid","creditBlockers","unresolvedCreditBlocker","option","PayrollOverview","props","jsx","BaseComponent","Root","companyId","payrollId","dictionary","onEvent","alerts","withReimbursements","ConfirmWireDetailsComponent","ConfirmWireDetails","readOnly","className","useComponentDictionary","useI18n","baseSubmitHandler","useBase","t","useTranslation","hasSubmittedInSession","setHasSubmittedInSession","useState","internalAlerts","setInternalAlerts","selectedUnblockOptions","setSelectedUnblockOptions","showWireDetailsConfirmation","setShowWireDetailsConfirmation","showBoundary","useErrorBoundary","formatCurrency","useNumberFormatter","dateFormatter","useDateFormatter","Button","UnorderedList","Text","useComponentContext","status","setStatus","PayrollOverviewStatus","currentPage","itemsPerPage","getPaginationProps","usePagination","gustoEmbedded","useGustoEmbeddedContext","payrollRequest","useMemo","data","isFetching","isError","error","refetchPayroll","usePayrollsGet","keepPreviousData","payrollData","submissionBlockers","wireInId","wireInRequestData","useWireInRequestsGet","wireInRequest","employeeUuids","employeeCompensation","uuid","employeesData","useEmployeesList","employeeFlsaStatusByUuid","acc","employee","onEdit","componentEvents","wireInConfirmationRequest","type","payrollWireEvents","printChecksBanner","PrintChecks","useEffect","checkDate","formattedCheckDate","emitProcessed","payroll","emitProcessingFailed","jsxs","Flex","renderErrorList","startPayrollPoll","isPolling","useSubmissionPoll","bankAccountData","useBankAccountsGetSuspense","bankAccount","paymentSpeed","useCompanyPaymentSpeed","submitPayroll","isPending","usePayrollsSubmitMutation","cancelPayroll","usePayrollsCancelMutation","nonce","useNonce","downloadingEmployeeIds","setDownloadingEmployeeIds","PayrollLoading","isNonRetryablePollError","isTaxReconciliationPayroll","pagination","taxes","tax","amount","onCancel","result","onPayrollReceipt","onPaystubDownload","employeeId","tab","openPdfInNewTab","prev","next","response","payrollsGetPayStub","pdfBlob","readableStreamToBlob","err","onSubmit","blockerType","PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES","selectedOption","deadlineAlert","PAYROLL_PROCESSING_STATUS","combinedAlerts","PayrollOverviewPresentation","canCancelPayroll","value"],"mappings":"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"}