@gusto/embedded-react-sdk 0.55.0 → 0.55.2

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 (174) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/components/Common/TaxInputs/TaxInputs.js +65 -64
  3. package/dist/components/Common/TaxInputs/TaxInputs.js.map +1 -1
  4. package/dist/components/Common/UI/Select/Select.module.scss.js +5 -5
  5. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.d.ts +4 -2
  6. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +148 -117
  7. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
  8. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js +56 -55
  9. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
  10. package/dist/components/Contractor/Payments/CreatePaymentFlow/CreatePaymentFlow.d.ts +1 -1
  11. package/dist/components/Contractor/Payments/CreatePaymentFlow/CreatePaymentFlow.js +15 -12
  12. package/dist/components/Contractor/Payments/CreatePaymentFlow/CreatePaymentFlow.js.map +1 -1
  13. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/HistoricalPaymentFlow.d.ts +69 -0
  14. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/HistoricalPaymentFlow.js +48 -0
  15. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/HistoricalPaymentFlow.js.map +1 -0
  16. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/HistoricalPaymentFlowComponents.d.ts +20 -0
  17. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/HistoricalPaymentFlowComponents.js +25 -0
  18. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/HistoricalPaymentFlowComponents.js.map +1 -0
  19. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/historicalPaymentMachine.d.ts +20 -0
  20. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/historicalPaymentMachine.js +24 -0
  21. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/historicalPaymentMachine.js.map +1 -0
  22. package/dist/components/Contractor/Payments/HistoricalPaymentFlow/index.d.ts +2 -0
  23. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +16 -15
  24. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
  25. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.d.ts +2 -0
  26. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js +36 -23
  27. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js.map +1 -1
  28. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.d.ts +10 -8
  29. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js +46 -25
  30. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
  31. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js +53 -52
  32. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
  33. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +37 -47
  34. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
  35. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +47 -44
  36. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  37. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +2 -1
  38. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +65 -53
  39. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  40. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.module.scss.js +6 -4
  41. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.module.scss.js.map +1 -1
  42. package/dist/components/Contractor/Payments/ViewPaymentFlow/ViewPaymentFlow.d.ts +1 -1
  43. package/dist/components/Contractor/Payments/ViewPaymentFlow/ViewPaymentFlow.js +22 -19
  44. package/dist/components/Contractor/Payments/ViewPaymentFlow/ViewPaymentFlow.js.map +1 -1
  45. package/dist/components/Contractor/Payments/shared/PaymentSummaryBlock/PaymentSummaryBlock.d.ts +2 -8
  46. package/dist/components/Contractor/Payments/shared/PaymentSummaryBlock/PaymentSummaryBlock.js +43 -42
  47. package/dist/components/Contractor/Payments/shared/PaymentSummaryBlock/PaymentSummaryBlock.js.map +1 -1
  48. package/dist/components/Contractor/Payments/shared/paymentAmounts.d.ts +32 -0
  49. package/dist/components/Contractor/Payments/shared/paymentAmounts.js +11 -0
  50. package/dist/components/Contractor/Payments/shared/paymentAmounts.js.map +1 -0
  51. package/dist/components/Contractor/Payments/shared/paymentAmounts.test.d.ts +1 -0
  52. package/dist/components/Contractor/Payments/shared/usePaymentAmountsEditor.d.ts +13 -4
  53. package/dist/components/Contractor/Payments/shared/usePaymentAmountsEditor.js +43 -38
  54. package/dist/components/Contractor/Payments/shared/usePaymentAmountsEditor.js.map +1 -1
  55. package/dist/components/Contractor/exports/contractorManagement.d.ts +1 -0
  56. package/dist/components/Contractor/exports/contractorManagement.js +34 -32
  57. package/dist/components/Contractor/exports/contractorManagement.js.map +1 -1
  58. package/dist/components/Contractor/shared/SelectContractors/SelectContractors.d.ts +6 -1
  59. package/dist/components/Contractor/shared/SelectContractors/SelectContractors.js +13 -12
  60. package/dist/components/Contractor/shared/SelectContractors/SelectContractors.js.map +1 -1
  61. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.d.ts +5 -1
  62. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js +34 -32
  63. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js.map +1 -1
  64. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +7 -0
  65. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +191 -153
  66. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  67. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +1 -0
  68. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +87 -81
  69. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  70. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +1 -0
  71. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
  72. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +73 -48
  73. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
  74. package/dist/components/Payroll/PayrollFlow/PayrollFlow.d.ts +1 -1
  75. package/dist/components/Payroll/PayrollFlow/PayrollFlow.js +22 -20
  76. package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
  77. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +3 -0
  78. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +22 -20
  79. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
  80. package/dist/components/Payroll/PayrollLanding/PayrollLanding.d.ts +2 -0
  81. package/dist/components/Payroll/PayrollLanding/PayrollLanding.js +34 -26
  82. package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
  83. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.d.ts +4 -0
  84. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +51 -43
  85. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  86. package/dist/components/Payroll/PayrollList/PayrollList.d.ts +2 -0
  87. package/dist/components/Payroll/PayrollList/PayrollList.js +48 -47
  88. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  89. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -1
  90. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +44 -43
  91. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  92. package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +7 -0
  93. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +115 -112
  94. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  95. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
  96. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +94 -103
  97. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  98. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +22 -16
  99. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
  100. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +58 -49
  101. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  102. package/dist/components/Payroll/PrintChecks/PrintChecks.d.ts +21 -0
  103. package/dist/components/Payroll/PrintChecks/PrintChecks.js +68 -0
  104. package/dist/components/Payroll/PrintChecks/PrintChecks.js.map +1 -0
  105. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.d.ts +9 -0
  106. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js +34 -0
  107. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js.map +1 -0
  108. package/dist/components/Payroll/PrintChecks/PrintChecksBanner/index.d.ts +1 -0
  109. package/dist/components/Payroll/PrintChecks/PrintChecksComponents.d.ts +48 -0
  110. package/dist/components/Payroll/PrintChecks/PrintChecksComponents.js +26 -0
  111. package/dist/components/Payroll/PrintChecks/PrintChecksComponents.js.map +1 -0
  112. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.d.ts +14 -0
  113. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js +47 -0
  114. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js.map +1 -0
  115. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/index.d.ts +1 -0
  116. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.d.ts +16 -0
  117. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +144 -0
  118. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -0
  119. package/dist/components/Payroll/PrintChecks/PrintChecksForm/index.d.ts +1 -0
  120. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.d.ts +14 -0
  121. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js +39 -0
  122. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js.map +1 -0
  123. package/dist/components/Payroll/PrintChecks/PrintChecksSummary/index.d.ts +1 -0
  124. package/dist/components/Payroll/PrintChecks/index.d.ts +2 -0
  125. package/dist/components/Payroll/PrintChecks/printChecksStateMachine.d.ts +33 -0
  126. package/dist/components/Payroll/PrintChecks/printChecksStateMachine.js +93 -0
  127. package/dist/components/Payroll/PrintChecks/printChecksStateMachine.js.map +1 -0
  128. package/dist/components/Payroll/PrintChecks/types.d.ts +14 -0
  129. package/dist/components/Payroll/index.d.ts +2 -0
  130. package/dist/components/Payroll/index.js +26 -24
  131. package/dist/components/Payroll/index.js.map +1 -1
  132. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +6 -0
  133. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +36 -34
  134. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  135. package/dist/contexts/UnstableFeaturesProvider/UnstableFeaturesProvider.d.ts +22 -0
  136. package/dist/contexts/UnstableFeaturesProvider/UnstableFeaturesProvider.js +14 -0
  137. package/dist/contexts/UnstableFeaturesProvider/UnstableFeaturesProvider.js.map +1 -0
  138. package/dist/contexts/UnstableFeaturesProvider/WithUnstableFeature.d.ts +19 -0
  139. package/dist/contexts/UnstableFeaturesProvider/WithUnstableFeature.js +8 -0
  140. package/dist/contexts/UnstableFeaturesProvider/WithUnstableFeature.js.map +1 -0
  141. package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +41 -0
  142. package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js +14 -0
  143. package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -0
  144. package/dist/contexts/index.d.ts +1 -0
  145. package/dist/i18n/I18n.js +4 -0
  146. package/dist/i18n/I18n.js.map +1 -1
  147. package/dist/i18n/en/Contractor.Payments.CreateHistoricalPayment.json.js +34 -32
  148. package/dist/i18n/en/Contractor.Payments.CreateHistoricalPayment.json.js.map +1 -1
  149. package/dist/i18n/en/Contractor.Payments.PaymentsList.json.js +20 -18
  150. package/dist/i18n/en/Contractor.Payments.PaymentsList.json.js.map +1 -1
  151. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +9 -9
  152. package/dist/i18n/en/Payroll.PayrollOverview.json.js +38 -38
  153. package/dist/i18n/en/Payroll.PayrollReceipts.json.js +2 -2
  154. package/dist/i18n/en/Payroll.PrintChecksBanner.json.js +14 -0
  155. package/dist/i18n/en/Payroll.PrintChecksBanner.json.js.map +1 -0
  156. package/dist/i18n/en/Payroll.PrintChecksFailure.json.js +12 -0
  157. package/dist/i18n/en/Payroll.PrintChecksFailure.json.js.map +1 -0
  158. package/dist/i18n/en/Payroll.PrintChecksForm.json.js +28 -0
  159. package/dist/i18n/en/Payroll.PrintChecksForm.json.js.map +1 -0
  160. package/dist/i18n/en/Payroll.PrintChecksSummary.json.js +14 -0
  161. package/dist/i18n/en/Payroll.PrintChecksSummary.json.js.map +1 -0
  162. package/dist/i18n/en/common.json.d.ts +0 -21
  163. package/dist/i18n/types.d.ts +75 -9
  164. package/dist/models/external.d.ts +3 -0
  165. package/dist/partner-hook-utils/form/buildFormSchema.js +60 -54
  166. package/dist/partner-hook-utils/form/buildFormSchema.js.map +1 -1
  167. package/dist/shared/constants.d.ts +30 -0
  168. package/dist/shared/constants.js +62 -50
  169. package/dist/shared/constants.js.map +1 -1
  170. package/dist/style.css +1 -1
  171. package/dist/test-utils/renderWithProviders.d.ts +4 -1
  172. package/dist/test-utils/tableQueries.d.ts +9 -0
  173. package/docs/guides/endpoint-inventory.json +33 -0
  174. package/package.json +18 -18
@@ -1,107 +1,109 @@
1
- import { jsx as l, jsxs as ae } from "react/jsx-runtime";
2
- import { usePayrollsSubmitMutation as le } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
- import { usePayrollsCancelMutation as ce } from "@gusto/embedded-api/react-query/payrollsCancel";
4
- import { usePayrollsGet as ue } from "@gusto/embedded-api/react-query/payrollsGet";
5
- import { keepPreviousData as me } from "@tanstack/react-query";
6
- import { useTranslation as pe } from "react-i18next";
1
+ import { jsx as l, jsxs as le } from "react/jsx-runtime";
2
+ import { usePayrollsSubmitMutation as ce } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
+ import { usePayrollsCancelMutation as ue } from "@gusto/embedded-api/react-query/payrollsCancel";
4
+ import { usePayrollsGet as me } from "@gusto/embedded-api/react-query/payrollsGet";
5
+ import { keepPreviousData as pe } from "@tanstack/react-query";
6
+ import { useTranslation as fe } from "react-i18next";
7
7
  import { useBankAccountsGetSuspense as de } from "@gusto/embedded-api/react-query/bankAccountsGet";
8
- import { useWireInRequestsGet as fe } from "@gusto/embedded-api/react-query/wireInRequestsGet";
9
- import { useState as u, useEffect as h } from "react";
8
+ import { useWireInRequestsGet as Pe } from "@gusto/embedded-api/react-query/wireInRequestsGet";
9
+ import { useState as u, useEffect as L } from "react";
10
10
  import { useGustoEmbeddedContext as ye } from "@gusto/embedded-api/react-query/_context";
11
- import { payrollsGetPayStub as Pe } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
12
- import { useErrorBoundary as be } from "react-error-boundary";
13
- import { ConfirmWireDetails as Re } from "../ConfirmWireDetails/ConfirmWireDetails.js";
14
- import { canCancelPayroll as we } from "../helpers.js";
15
- import { PayrollOverviewPresentation as Se } from "./PayrollOverviewPresentation.js";
11
+ import { payrollsGetPayStub as be } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
12
+ import { useErrorBoundary as Re } from "react-error-boundary";
13
+ import { ConfirmWireDetails as we } from "../ConfirmWireDetails/ConfirmWireDetails.js";
14
+ import { canCancelPayroll as Se } from "../helpers.js";
15
+ import { PrintChecks as Oe } from "../PrintChecks/PrintChecks.js";
16
+ import { PayrollOverviewPresentation as ge } from "./PayrollOverviewPresentation.js";
16
17
  import { PayrollOverviewStatus as m } from "./PayrollOverviewTypes.js";
17
- import { useCompanyPaymentSpeed as Oe } from "../../../hooks/useCompanyPaymentSpeed.js";
18
- import { PAYROLL_PROCESSING_STATUS as w, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as ge, payrollWireEvents as Le } from "../../../shared/constants.js";
19
- import { BaseComponent as he } from "../../Base/Base.js";
20
- import { useBase as _e } from "../../Base/useBase.js";
21
- import { useComponentDictionary as De, useI18n as Ce } from "../../../i18n/I18n.js";
22
- import { readableStreamToBlob as Ue } from "../../../helpers/readableStreamToBlob.js";
23
- import Ee from "../../../hooks/useNumberFormatter.js";
24
- import { useDateFormatter as ke } from "../../../hooks/useDateFormatter.js";
25
- import { useComponentContext as Ae } from "../../../contexts/ComponentAdapter/useComponentContext.js";
26
- import { renderErrorList as Te } from "../../../helpers/apiErrorToList.js";
27
- import { Flex as Be } from "../../Common/Flex/Flex.js";
28
- import { usePagination as ve } from "../../../hooks/usePagination/usePagination.js";
29
- import { PayrollLoading as I } from "../../Common/PayrollLoading/PayrollLoading.js";
30
- const Ie = (r = []) => r.filter(
18
+ import { useCompanyPaymentSpeed as he } from "../../../hooks/useCompanyPaymentSpeed.js";
19
+ import { PAYROLL_PROCESSING_STATUS as w, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as Le, payrollWireEvents as _e } from "../../../shared/constants.js";
20
+ import { BaseComponent as De } from "../../Base/Base.js";
21
+ import { useBase as Ce } from "../../Base/useBase.js";
22
+ import { useComponentDictionary as ke, useI18n as Ue } from "../../../i18n/I18n.js";
23
+ import { readableStreamToBlob as Ee } from "../../../helpers/readableStreamToBlob.js";
24
+ import Ae from "../../../hooks/useNumberFormatter.js";
25
+ import { useDateFormatter as Be } from "../../../hooks/useDateFormatter.js";
26
+ import { useComponentContext as Te } from "../../../contexts/ComponentAdapter/useComponentContext.js";
27
+ import { renderErrorList as ve } from "../../../helpers/apiErrorToList.js";
28
+ import { Flex as qe } from "../../Common/Flex/Flex.js";
29
+ import { usePagination as Ne } from "../../../hooks/usePagination/usePagination.js";
30
+ import { PayrollLoading as q } from "../../Common/PayrollLoading/PayrollLoading.js";
31
+ const Ie = (s = []) => s.filter(
31
32
  (n) => n.status === "unresolved" && n.unblockOptions && n.unblockOptions.length > 0
32
- ), qe = (r = []) => {
33
- const n = r.find((s) => s.status === "unresolved");
33
+ ), Ye = (s = []) => {
34
+ const n = s.find((o) => o.status === "unresolved");
34
35
  return n?.unblockOptions ? n.unblockOptions.find(
35
- (s) => s.unblockType === "submit_wire"
36
+ (o) => o.unblockType === "submit_wire"
36
37
  )?.metadata.wireInRequestUuid : void 0;
37
38
  };
38
- function Rt(r) {
39
- return /* @__PURE__ */ l(he, { ...r, children: /* @__PURE__ */ l(Ne, { ...r, children: r.children }) });
39
+ function Ot(s) {
40
+ return /* @__PURE__ */ l(De, { ...s, children: /* @__PURE__ */ l(We, { ...s, children: s.children }) });
40
41
  }
41
- const Ne = ({
42
- companyId: r,
42
+ const We = ({
43
+ companyId: s,
43
44
  payrollId: n,
44
45
  dictionary: _,
45
- onEvent: s,
46
- alerts: q,
47
- withReimbursements: N = !0,
48
- ConfirmWireDetailsComponent: Y = Re
46
+ onEvent: o,
47
+ alerts: N,
48
+ withReimbursements: I = !0,
49
+ ConfirmWireDetailsComponent: Y = we
49
50
  }) => {
50
- De("Payroll.PayrollOverview", _), Ce("Payroll.PayrollOverview");
51
- const { baseSubmitHandler: D } = _e(), { t: a } = pe("Payroll.PayrollOverview"), [p, f] = u(!1), [W, S] = u(!1), [M, O] = u(q || []), [C, F] = u({}), [y, d] = u(!1), { showBoundary: G } = be(), U = Ee("currency"), P = ke(), { Button: x, UnorderedList: j, Text: E } = Ae(), [k, g] = u(m.Viewing), { currentPage: V, itemsPerPage: H, getPaginationProps: K } = ve({
51
+ ke("Payroll.PayrollOverview", _), Ue("Payroll.PayrollOverview");
52
+ const { baseSubmitHandler: D } = Ce(), { t: a } = fe("Payroll.PayrollOverview"), [p, d] = u(!1), [W, S] = u(!1), [M, O] = u(N || []), [C, F] = u({}), [P, f] = u(!1), { showBoundary: G } = Re(), k = Ae("currency"), y = Be(), { Button: x, UnorderedList: j, Text: U } = Te(), [E, g] = u(m.Viewing), { currentPage: V, itemsPerPage: H, getPaginationProps: K } = Ne({
52
53
  defaultItemsPerPage: 10
53
- }), { data: b, isFetching: A } = ue(
54
+ }), { data: b, isFetching: A } = me(
54
55
  {
55
- companyId: r,
56
+ companyId: s,
56
57
  payrollId: n,
57
58
  include: ["taxes", "benefits", "deductions", "totals", "payroll_taxes"],
58
59
  page: V,
59
- per: H
60
+ per: H,
61
+ sortBy: "last_name"
60
62
  },
61
63
  {
62
64
  refetchInterval: p ? 5e3 : !1,
63
- placeholderData: me,
65
+ placeholderData: pe,
64
66
  // Always refetch on mount so a partner QueryClient with a non-zero `staleTime`
65
67
  // can't serve a stale pre-calculation snapshot without refetching. SDK-1018.
66
68
  refetchOnMount: "always"
67
69
  }
68
- ), e = b?.payrollShow, z = Ie(e?.submissionBlockers), R = qe(e?.creditBlockers), { data: J } = fe(
70
+ ), e = b?.payrollShow, z = Ie(e?.submissionBlockers), R = Ye(e?.creditBlockers), { data: J } = Pe(
69
71
  {
70
72
  wireInRequestUuid: R || ""
71
73
  },
72
74
  { enabled: !!R }
73
- ), T = J?.wireInRequest, B = () => {
74
- s(c.RUN_PAYROLL_EDIT);
75
+ ), B = J?.wireInRequest, T = () => {
76
+ o(c.RUN_PAYROLL_EDIT);
75
77
  }, Q = R && /* @__PURE__ */ l(
76
78
  Y,
77
79
  {
78
- companyId: r,
80
+ companyId: s,
79
81
  wireInId: R,
80
- onEvent: (t, o) => {
81
- t === Le.PAYROLL_WIRE_FORM_DONE && d(!0), s(t, o);
82
+ onEvent: (t, r) => {
83
+ t === _e.PAYROLL_WIRE_FORM_DONE && f(!0), o(t, r);
82
84
  }
83
85
  }
84
- );
85
- h(() => {
86
- T?.status === "pending_review" && !y && d(!0);
87
- }, [T?.status, y]);
88
- const L = e?.checkDate;
89
- h(() => {
90
- if (L && y) {
91
- const t = P.formatShortWithYear(L);
86
+ ), X = /* @__PURE__ */ l(Oe, { companyId: s, payrollId: n, onEvent: o });
87
+ L(() => {
88
+ B?.status === "pending_review" && !P && f(!0);
89
+ }, [B?.status, P]);
90
+ const h = e?.checkDate;
91
+ L(() => {
92
+ if (h && P) {
93
+ const t = y.formatShortWithYear(h);
92
94
  O([
93
95
  {
94
96
  type: "success",
95
97
  title: a("alerts.wireDetailsSubmittedTitle"),
96
- content: /* @__PURE__ */ l(E, { children: a("alerts.wireDetailsSubmittedMessage", { checkDate: t }) }),
98
+ content: /* @__PURE__ */ l(U, { children: a("alerts.wireDetailsSubmittedMessage", { checkDate: t }) }),
97
99
  onDismiss: () => {
98
- d(!1);
100
+ f(!1);
99
101
  }
100
102
  }
101
103
  ]);
102
104
  }
103
- }, [y, L, a, P, E]), h(() => {
104
- e && (e.processingRequest?.status === w.submitting && !p && f(!0), p && (e.processed === !0 || e.processingRequest?.status === w.submit_success) && (s(c.RUN_PAYROLL_PROCESSED, {
105
+ }, [P, h, a, y, U]), L(() => {
106
+ e && (e.processingRequest?.status === w.submitting && !p && d(!0), p && (e.processed === !0 || e.processingRequest?.status === w.submit_success) && (o(c.RUN_PAYROLL_PROCESSED, {
105
107
  payPeriod: e.payPeriod,
106
108
  payrollUuid: n
107
109
  }), O([
@@ -109,128 +111,129 @@ const Ne = ({
109
111
  type: "success",
110
112
  title: a("alerts.payrollProcessedTitle"),
111
113
  content: a("alerts.payrollProcessedMessage", {
112
- amount: U(Number(e.totals?.companyDebit)),
113
- date: P.formatShortWithYear(
114
+ amount: k(Number(e.totals?.companyDebit)),
115
+ date: y.formatShortWithYear(
114
116
  e.payrollStatusMeta?.expectedDebitTime ?? e.payrollDeadline
115
117
  )
116
118
  })
117
119
  }
118
- ]), d(!1), f(!1), S(!1)), p && e.processingRequest?.status === w.processing_failed && (s(c.RUN_PAYROLL_PROCESSING_FAILED), O([
120
+ ]), f(!1), d(!1), S(!1)), p && e.processingRequest?.status === w.processing_failed && (o(c.RUN_PAYROLL_PROCESSING_FAILED), O([
119
121
  {
120
122
  type: "error",
121
123
  title: a("alerts.payrollProcessingFailedTitle"),
122
- content: /* @__PURE__ */ ae(Be, { flexDirection: "column", gap: 16, children: [
123
- /* @__PURE__ */ l(j, { items: Te(e.processingRequest.errors ?? []) }),
124
- /* @__PURE__ */ l(x, { variant: "secondary", onClick: B, children: a("alerts.payrollProcessingFailedCtaLabel") })
124
+ content: /* @__PURE__ */ le(qe, { flexDirection: "column", gap: 16, children: [
125
+ /* @__PURE__ */ l(j, { items: ve(e.processingRequest.errors ?? []) }),
126
+ /* @__PURE__ */ l(x, { variant: "secondary", onClick: T, children: a("alerts.payrollProcessingFailedCtaLabel") })
125
127
  ] })
126
128
  }
127
- ]), d(!1), f(!1), S(!1)));
129
+ ]), f(!1), d(!1), S(!1)));
128
130
  }, [
129
131
  e?.processingRequest?.status,
130
132
  e?.processed,
131
133
  p,
132
- s,
134
+ o,
133
135
  a,
134
- P,
135
- U,
136
+ y,
137
+ k,
136
138
  e?.totals?.companyDebit,
137
139
  e?.payrollStatusMeta?.expectedDebitTime,
138
140
  e?.payrollDeadline
139
141
  ]);
140
- const { data: X } = de({
141
- companyId: r
142
- }), Z = X.companyBankAccounts?.[0], { paymentSpeed: $ } = Oe(r), { mutateAsync: ee, isPending: te } = le(), { mutateAsync: oe } = ce(), re = ye();
142
+ const { data: Z } = de({
143
+ companyId: s
144
+ }), $ = Z.companyBankAccounts?.[0], { paymentSpeed: ee } = he(s), { mutateAsync: te, isPending: re } = ce(), { mutateAsync: se } = ue(), oe = ye();
143
145
  if (!e)
144
- return /* @__PURE__ */ l(I, { title: a("dataLoadingTitle") });
145
- if (k === m.Viewing && !e.calculatedAt) {
146
+ return /* @__PURE__ */ l(q, { title: a("dataLoadingTitle") });
147
+ if (E === m.Viewing && !e.calculatedAt) {
146
148
  if (A)
147
- return /* @__PURE__ */ l(I, { title: a("dataLoadingTitle") });
149
+ return /* @__PURE__ */ l(q, { title: a("dataLoadingTitle") });
148
150
  throw new Error(a("alerts.payrollNotCalculated"));
149
151
  }
150
- const se = K(b.httpMeta.response.headers, A), ne = e.payrollTaxes?.reduce(
151
- (t, o) => {
152
- if (!o.name) return t;
153
- const i = o.amount ?? 0;
154
- return t[o.name] = {
155
- employee: (t[o.name]?.employee ?? 0) + (o.employer ? 0 : i),
156
- employer: (t[o.name]?.employer ?? 0) + (o.employer ? i : 0)
152
+ const ne = K(b.httpMeta.response.headers, A), ie = e.payrollTaxes?.reduce(
153
+ (t, r) => {
154
+ if (!r.name) return t;
155
+ const i = r.amount ?? 0;
156
+ return t[r.name] = {
157
+ employee: (t[r.name]?.employee ?? 0) + (r.employer ? 0 : i),
158
+ employer: (t[r.name]?.employer ?? 0) + (r.employer ? i : 0)
157
159
  }, t;
158
160
  },
159
161
  {}
160
162
  ) || {};
161
163
  return /* @__PURE__ */ l(
162
- Se,
164
+ ge,
163
165
  {
164
- onEdit: B,
166
+ onEdit: T,
165
167
  onSubmit: async () => {
166
168
  await D(b, async () => {
167
- const t = await ee({
169
+ const t = await te({
168
170
  request: {
169
- companyId: r,
171
+ companyId: s,
170
172
  payrollId: n,
171
173
  requestBody: {
172
174
  submissionBlockers: Object.entries(C).filter(
173
- ([o]) => ge.includes(o)
174
- ).map(([o, i]) => ({
175
- blockerType: o,
175
+ ([r]) => Le.includes(r)
176
+ ).map(([r, i]) => ({
177
+ blockerType: r,
176
178
  selectedOption: i
177
179
  }))
178
180
  }
179
181
  }
180
182
  });
181
- s(c.RUN_PAYROLL_SUBMITTING), s(c.RUN_PAYROLL_SUBMITTED, t), f(!0), S(!0);
183
+ o(c.RUN_PAYROLL_SUBMITTING), o(c.RUN_PAYROLL_SUBMITTED, t), d(!0), S(!0);
182
184
  });
183
185
  },
184
186
  onCancel: async () => {
185
187
  g(m.Cancelling), await D(b, async () => {
186
188
  try {
187
- const t = await oe({
189
+ const t = await se({
188
190
  request: {
189
- companyId: r,
191
+ companyId: s,
190
192
  payrollId: n
191
193
  }
192
194
  });
193
- g(m.Cancelled), s(c.RUN_PAYROLL_CANCELLED, t);
195
+ g(m.Cancelled), o(c.RUN_PAYROLL_CANCELLED, t);
194
196
  } catch (t) {
195
197
  throw g(m.Viewing), t;
196
198
  }
197
199
  });
198
200
  },
199
201
  onPayrollReceipt: () => {
200
- s(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: n });
202
+ o(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: n });
201
203
  },
202
204
  onPaystubDownload: async (t) => {
203
- const o = window.open("", "_blank");
205
+ const r = window.open("", "_blank");
204
206
  try {
205
- const i = await Pe(re, { payrollId: n, employeeId: t });
207
+ const i = await be(oe, { payrollId: n, employeeId: t });
206
208
  if (!i.value?.responseStream)
207
209
  throw new Error(a("alerts.paystubPdfError"));
208
- const ie = await Ue(i.value.responseStream, "application/pdf"), v = URL.createObjectURL(ie);
209
- o && (o.location.href = v), s(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: t }), URL.revokeObjectURL(v);
210
+ const ae = await Ee(i.value.responseStream, "application/pdf"), v = URL.createObjectURL(ae);
211
+ r && (r.location.href = v), o(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: t }), URL.revokeObjectURL(v);
210
212
  } catch (i) {
211
- o && o.close(), G(i instanceof Error ? i : new Error(String(i)));
213
+ r && r.close(), G(i instanceof Error ? i : new Error(String(i)));
212
214
  }
213
215
  },
214
- status: te || W ? m.Submitting : k,
216
+ status: re || W ? m.Submitting : E,
215
217
  isProcessed: e.processed === !0 || e.processingRequest?.status === w.submit_success,
216
- canCancel: we(e),
218
+ canCancel: Se(e),
217
219
  payrollData: e,
218
- bankAccount: Z,
219
- taxes: ne,
220
+ bankAccount: $,
221
+ taxes: ie,
220
222
  alerts: M,
221
223
  submissionBlockers: z,
222
224
  selectedUnblockOptions: C,
223
- onUnblockOptionChange: (t, o) => {
224
- F((i) => ({ ...i, [t]: o }));
225
+ onUnblockOptionChange: (t, r) => {
226
+ F((i) => ({ ...i, [t]: r }));
225
227
  },
226
228
  wireInConfirmationRequest: Q,
227
- withReimbursements: N,
228
- paymentSpeed: $,
229
- pagination: se
229
+ printChecksBanner: X,
230
+ withReimbursements: I,
231
+ paymentSpeed: ee,
232
+ pagination: ne
230
233
  }
231
234
  );
232
235
  };
233
236
  export {
234
- Rt as PayrollOverview
237
+ Ot as PayrollOverview
235
238
  };
236
239
  //# 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 { 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, 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 { 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 { PayrollOverviewPresentation } from './PayrollOverviewPresentation'\nimport { PayrollOverviewStatus } from './PayrollOverviewTypes'\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 useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\nimport { Flex, PayrollLoading } from '@/components/Common'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\n/**\n * Props for {@link PayrollOverview}.\n *\n * @public\n */\nexport interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.PayrollOverview'> {\n /** Identifier of the company that owns the payroll. */\n companyId: string\n /** Identifier of the payroll being reviewed. The payroll must already be calculated. */\n payrollId: string\n /** Alert banners to display above the payroll summary. */\n alerts?: PayrollFlowAlert[]\n /** Whether reimbursement fields are shown in the totals and per-employee tables. Defaults to `true`. */\n withReimbursements?: boolean\n /** Custom component to replace the default wire details confirmation UI. */\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n}\n\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.\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 *\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}: PayrollOverviewProps) => {\n useComponentDictionary('Payroll.PayrollOverview', dictionary)\n useI18n('Payroll.PayrollOverview')\n const { baseSubmitHandler } = useBase()\n const { t } = useTranslation('Payroll.PayrollOverview')\n const [isPolling, setIsPolling] = useState(false)\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: 10,\n })\n const { data, isFetching } = usePayrollsGet(\n {\n companyId,\n payrollId: payrollId,\n include: ['taxes', 'benefits', 'deductions', 'totals', 'payroll_taxes'],\n page: currentPage,\n per: itemsPerPage,\n },\n {\n refetchInterval: isPolling ? 5_000 : false,\n placeholderData: keepPreviousData,\n // Always refetch on mount so a partner QueryClient with a non-zero `staleTime`\n // can't serve a stale pre-calculation snapshot without refetching. SDK-1018.\n refetchOnMount: 'always',\n },\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 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 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 useEffect(() => {\n if (!payrollData) return\n // Start polling when payroll is submitting and not already polling\n if (\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submitting &&\n !isPolling\n ) {\n setIsPolling(true)\n }\n if (\n isPolling &&\n (payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success)\n ) {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSED, {\n payPeriod: payrollData.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(payrollData.totals?.companyDebit)),\n date: dateFormatter.formatShortWithYear(\n payrollData.payrollStatusMeta?.expectedDebitTime ?? payrollData.payrollDeadline,\n ),\n }),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setIsPolling(false)\n setHasSubmittedInSession(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.processingRequest?.status === PAYROLL_PROCESSING_STATUS.processing_failed\n ) {\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(payrollData.processingRequest.errors ?? [])} />\n <Button variant=\"secondary\" onClick={onEdit}>\n {t('alerts.payrollProcessingFailedCtaLabel')}\n </Button>\n </Flex>\n ),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setIsPolling(false)\n setHasSubmittedInSession(false)\n }\n }, [\n payrollData?.processingRequest?.status,\n payrollData?.processed,\n isPolling,\n onEvent,\n t,\n dateFormatter,\n formatCurrency,\n payrollData?.totals?.companyDebit,\n payrollData?.payrollStatusMeta?.expectedDebitTime,\n payrollData?.payrollDeadline,\n ])\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 gustoEmbedded = useGustoEmbeddedContext()\n\n if (!payrollData) {\n return <PayrollLoading title={t('dataLoadingTitle')} />\n }\n\n if (status === PayrollOverviewStatus.Viewing && !payrollData.calculatedAt) {\n // A stale snapshot can be served with a null `calculatedAt` while its refetch is\n // in flight; treat that as loading and only throw once the fetch settles. SDK-1018.\n if (isFetching) {\n return <PayrollLoading title={t('dataLoadingTitle')} />\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 // Open a blank window *synchronously* with the click\n const newWindow = window.open('', '_blank')\n\n try {\n // Fetch the PDF from your API\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId, employeeId })\n if (!response.value?.responseStream) {\n throw new Error(t('alerts.paystubPdfError'))\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n\n const url = URL.createObjectURL(pdfBlob)\n\n // Load the PDF into the new window\n if (newWindow) {\n newWindow.location.href = url\n }\n onEvent(componentEvents.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId })\n URL.revokeObjectURL(url) // Clean up the URL object after use\n } catch (err) {\n if (newWindow) {\n newWindow.close()\n }\n showBoundary(err instanceof Error ? err : new Error(String(err)))\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 setIsPolling(true)\n setHasSubmittedInSession(true)\n })\n }\n\n return (\n <PayrollOverviewPresentation\n onEdit={onEdit}\n onSubmit={onSubmit}\n onCancel={onCancel}\n onPayrollReceipt={onPayrollReceipt}\n onPaystubDownload={onPaystubDownload}\n status={isPending || hasSubmittedInSession ? PayrollOverviewStatus.Submitting : status}\n isProcessed={\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n }\n canCancel={canCancelPayroll(payrollData)}\n payrollData={payrollData}\n bankAccount={bankAccount}\n taxes={taxes}\n alerts={internalAlerts}\n submissionBlockers={submissionBlockers}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={(blockerType, value) => {\n setSelectedUnblockOptions(prev => ({ ...prev, [blockerType]: value }))\n }}\n wireInConfirmationRequest={wireInConfirmationRequest}\n withReimbursements={withReimbursements}\n paymentSpeed={paymentSpeed}\n pagination={pagination}\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","useComponentDictionary","useI18n","baseSubmitHandler","useBase","t","useTranslation","isPolling","setIsPolling","useState","hasSubmittedInSession","setHasSubmittedInSession","internalAlerts","setInternalAlerts","selectedUnblockOptions","setSelectedUnblockOptions","showWireDetailsConfirmation","setShowWireDetailsConfirmation","showBoundary","useErrorBoundary","formatCurrency","useNumberFormatter","dateFormatter","useDateFormatter","Button","UnorderedList","Text","useComponentContext","status","setStatus","PayrollOverviewStatus","currentPage","itemsPerPage","getPaginationProps","usePagination","data","isFetching","usePayrollsGet","keepPreviousData","payrollData","submissionBlockers","wireInId","wireInRequestData","useWireInRequestsGet","wireInRequest","onEdit","componentEvents","wireInConfirmationRequest","type","payrollWireEvents","useEffect","checkDate","formattedCheckDate","PAYROLL_PROCESSING_STATUS","jsxs","Flex","renderErrorList","bankAccountData","useBankAccountsGetSuspense","bankAccount","paymentSpeed","useCompanyPaymentSpeed","submitPayroll","isPending","usePayrollsSubmitMutation","cancelPayroll","usePayrollsCancelMutation","gustoEmbedded","useGustoEmbeddedContext","PayrollLoading","pagination","taxes","acc","tax","amount","PayrollOverviewPresentation","result","blockerType","PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES","selectedOption","error","employeeId","newWindow","response","payrollsGetPayStub","pdfBlob","readableStreamToBlob","url","err","canCancelPayroll","value","prev"],"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 { 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, 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 { 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 { 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 useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\nimport { Flex, PayrollLoading } from '@/components/Common'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\n/**\n * Props for {@link PayrollOverview}.\n *\n * @public\n */\nexport interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.PayrollOverview'> {\n /** Identifier of the company that owns the payroll. */\n companyId: string\n /** Identifier of the payroll being reviewed. The payroll must already be calculated. */\n payrollId: string\n /** Alert banners to display above the payroll summary. */\n alerts?: PayrollFlowAlert[]\n /** Whether reimbursement fields are shown in the totals and per-employee tables. Defaults to `true`. */\n withReimbursements?: boolean\n /** Custom component to replace the default wire details confirmation UI. */\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n}\n\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.\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}: PayrollOverviewProps) => {\n useComponentDictionary('Payroll.PayrollOverview', dictionary)\n useI18n('Payroll.PayrollOverview')\n const { baseSubmitHandler } = useBase()\n const { t } = useTranslation('Payroll.PayrollOverview')\n const [isPolling, setIsPolling] = useState(false)\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: 10,\n })\n const { data, isFetching } = usePayrollsGet(\n {\n companyId,\n payrollId: payrollId,\n include: ['taxes', 'benefits', 'deductions', 'totals', 'payroll_taxes'],\n page: currentPage,\n per: itemsPerPage,\n sortBy: 'last_name',\n },\n {\n refetchInterval: isPolling ? 5_000 : false,\n placeholderData: keepPreviousData,\n // Always refetch on mount so a partner QueryClient with a non-zero `staleTime`\n // can't serve a stale pre-calculation snapshot without refetching. SDK-1018.\n refetchOnMount: 'always',\n },\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 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 useEffect(() => {\n if (!payrollData) return\n // Start polling when payroll is submitting and not already polling\n if (\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submitting &&\n !isPolling\n ) {\n setIsPolling(true)\n }\n if (\n isPolling &&\n (payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success)\n ) {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSED, {\n payPeriod: payrollData.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(payrollData.totals?.companyDebit)),\n date: dateFormatter.formatShortWithYear(\n payrollData.payrollStatusMeta?.expectedDebitTime ?? payrollData.payrollDeadline,\n ),\n }),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setIsPolling(false)\n setHasSubmittedInSession(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.processingRequest?.status === PAYROLL_PROCESSING_STATUS.processing_failed\n ) {\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(payrollData.processingRequest.errors ?? [])} />\n <Button variant=\"secondary\" onClick={onEdit}>\n {t('alerts.payrollProcessingFailedCtaLabel')}\n </Button>\n </Flex>\n ),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setIsPolling(false)\n setHasSubmittedInSession(false)\n }\n }, [\n payrollData?.processingRequest?.status,\n payrollData?.processed,\n isPolling,\n onEvent,\n t,\n dateFormatter,\n formatCurrency,\n payrollData?.totals?.companyDebit,\n payrollData?.payrollStatusMeta?.expectedDebitTime,\n payrollData?.payrollDeadline,\n ])\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 gustoEmbedded = useGustoEmbeddedContext()\n\n if (!payrollData) {\n return <PayrollLoading title={t('dataLoadingTitle')} />\n }\n\n if (status === PayrollOverviewStatus.Viewing && !payrollData.calculatedAt) {\n // A stale snapshot can be served with a null `calculatedAt` while its refetch is\n // in flight; treat that as loading and only throw once the fetch settles. SDK-1018.\n if (isFetching) {\n return <PayrollLoading title={t('dataLoadingTitle')} />\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 // Open a blank window *synchronously* with the click\n const newWindow = window.open('', '_blank')\n\n try {\n // Fetch the PDF from your API\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId, employeeId })\n if (!response.value?.responseStream) {\n throw new Error(t('alerts.paystubPdfError'))\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n\n const url = URL.createObjectURL(pdfBlob)\n\n // Load the PDF into the new window\n if (newWindow) {\n newWindow.location.href = url\n }\n onEvent(componentEvents.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId })\n URL.revokeObjectURL(url) // Clean up the URL object after use\n } catch (err) {\n if (newWindow) {\n newWindow.close()\n }\n showBoundary(err instanceof Error ? err : new Error(String(err)))\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 setIsPolling(true)\n setHasSubmittedInSession(true)\n })\n }\n\n return (\n <PayrollOverviewPresentation\n onEdit={onEdit}\n onSubmit={onSubmit}\n onCancel={onCancel}\n onPayrollReceipt={onPayrollReceipt}\n onPaystubDownload={onPaystubDownload}\n status={isPending || hasSubmittedInSession ? PayrollOverviewStatus.Submitting : status}\n isProcessed={\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n }\n canCancel={canCancelPayroll(payrollData)}\n payrollData={payrollData}\n bankAccount={bankAccount}\n taxes={taxes}\n alerts={internalAlerts}\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 />\n )\n}\n"],"names":["findUnresolvedBlockersWithOptions","blockers","blocker","findWireInRequestUuid","creditBlockers","unresolvedCreditBlocker","option","PayrollOverview","props","jsx","BaseComponent","Root","companyId","payrollId","dictionary","onEvent","alerts","withReimbursements","ConfirmWireDetailsComponent","ConfirmWireDetails","useComponentDictionary","useI18n","baseSubmitHandler","useBase","t","useTranslation","isPolling","setIsPolling","useState","hasSubmittedInSession","setHasSubmittedInSession","internalAlerts","setInternalAlerts","selectedUnblockOptions","setSelectedUnblockOptions","showWireDetailsConfirmation","setShowWireDetailsConfirmation","showBoundary","useErrorBoundary","formatCurrency","useNumberFormatter","dateFormatter","useDateFormatter","Button","UnorderedList","Text","useComponentContext","status","setStatus","PayrollOverviewStatus","currentPage","itemsPerPage","getPaginationProps","usePagination","data","isFetching","usePayrollsGet","keepPreviousData","payrollData","submissionBlockers","wireInId","wireInRequestData","useWireInRequestsGet","wireInRequest","onEdit","componentEvents","wireInConfirmationRequest","type","payrollWireEvents","printChecksBanner","PrintChecks","useEffect","checkDate","formattedCheckDate","PAYROLL_PROCESSING_STATUS","jsxs","Flex","renderErrorList","bankAccountData","useBankAccountsGetSuspense","bankAccount","paymentSpeed","useCompanyPaymentSpeed","submitPayroll","isPending","usePayrollsSubmitMutation","cancelPayroll","usePayrollsCancelMutation","gustoEmbedded","useGustoEmbeddedContext","PayrollLoading","pagination","taxes","acc","tax","amount","PayrollOverviewPresentation","result","blockerType","PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES","selectedOption","error","employeeId","newWindow","response","payrollsGetPayStub","pdfBlob","readableStreamToBlob","url","err","canCancelPayroll","value","prev"],"mappings":"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"}
@@ -19,6 +19,7 @@ interface PayrollOverviewProps {
19
19
  submissionBlockers?: PayrollSubmissionBlockerType[];
20
20
  selectedUnblockOptions?: Record<string, string>;
21
21
  wireInConfirmationRequest?: React.ReactNode;
22
+ printChecksBanner?: React.ReactNode;
22
23
  pagination?: PaginationControlProps;
23
24
  onEdit: () => void;
24
25
  onSubmit: () => void;
@@ -30,5 +31,5 @@ interface PayrollOverviewProps {
30
31
  paymentSpeed?: PaymentSpeed;
31
32
  }
32
33
  /** @internal */
33
- export declare const PayrollOverviewPresentation: ({ onEdit, onSubmit, onCancel, onPayrollReceipt, onPaystubDownload, payrollData, bankAccount, taxes, status, isProcessed, canCancel, alerts, submissionBlockers, selectedUnblockOptions, onUnblockOptionChange, wireInConfirmationRequest, withReimbursements, paymentSpeed, pagination, }: PayrollOverviewProps) => import("react").JSX.Element;
34
+ export declare const PayrollOverviewPresentation: ({ onEdit, onSubmit, onCancel, onPayrollReceipt, onPaystubDownload, payrollData, bankAccount, taxes, status, isProcessed, canCancel, alerts, submissionBlockers, selectedUnblockOptions, onUnblockOptionChange, wireInConfirmationRequest, printChecksBanner, withReimbursements, paymentSpeed, pagination, }: PayrollOverviewProps) => import("react").JSX.Element;
34
35
  export {};