@gusto/embedded-react-sdk 0.56.7-rc.1 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +1 -1
  3. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +5 -3
  4. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  5. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +5 -3
  6. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  7. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +7 -5
  8. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  9. package/dist/components/Company/BankAccount/BankAccountForm/context.js +5 -3
  10. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  11. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +5 -3
  12. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  13. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +10 -8
  14. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  15. package/dist/components/Company/Industry/Context.js +8 -6
  16. package/dist/components/Company/Industry/Context.js.map +1 -1
  17. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +5 -3
  18. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  19. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +5 -3
  20. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  21. package/dist/components/Company/OnboardingOverview/context.js +5 -3
  22. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  23. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +5 -3
  24. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  25. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +5 -3
  26. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  27. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +5 -3
  28. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  29. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +5 -3
  30. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  31. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js +113 -111
  32. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js.map +1 -1
  33. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +27 -31
  34. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  35. package/dist/components/Payroll/PayrollList/PayrollList.js +31 -35
  36. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  37. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +5 -9
  38. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +1 -1
  39. package/dist/components/Payroll/usePreparedPayrollData.js +4 -2
  40. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  41. package/dist/contexts/ObservabilityProvider/sanitization.js +98 -47
  42. package/dist/contexts/ObservabilityProvider/sanitization.js.map +1 -1
  43. package/dist/package.json.js +1 -1
  44. package/dist/src/contexts/ObservabilityProvider/sanitization.d.ts +8 -17
  45. package/dist/src/contexts/ObservabilityProvider/useSanitizedObservability.test.d.ts +1 -0
  46. package/dist/src/types/observability.d.ts +59 -20
  47. package/package.json +6 -6
@@ -1,19 +1,19 @@
1
- import { jsx as o } from "react/jsx-runtime";
1
+ import { jsx as r } from "react/jsx-runtime";
2
2
  import { useState as U, useCallback as F } from "react";
3
3
  import { keepPreviousData as T } from "@tanstack/react-query";
4
4
  import { usePayrollsList as N } from "@gusto/embedded-api/react-query/payrollsList";
5
5
  import { usePayrollsCancelMutation as V } from "@gusto/embedded-api/react-query/payrollsCancel";
6
6
  import { useWireInRequestsListSuspense as q } from "@gusto/embedded-api/react-query/wireInRequestsList";
7
- import { QueryParamSortOrder as B, QueryParamPayrollTypes as i, ProcessingStatuses as Y } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls";
7
+ import { QueryParamSortOrder as B, QueryParamPayrollTypes as p, ProcessingStatuses as Y } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls";
8
8
  import { PayrollHistoryPresentation as b } from "./PayrollHistoryPresentation.js";
9
- import { BaseComponent as x, BaseLayout as K } from "../../Base/Base.js";
10
- import { useBase as W } from "../../Base/useBase.js";
11
- import { componentEvents as c } from "../../../shared/constants.js";
12
- import { useComponentDictionary as k, useI18n as Q } from "../../../i18n/I18n.js";
9
+ import { BaseComponent as K, BaseLayout as W } from "../../Base/Base.js";
10
+ import { useBase as k } from "../../Base/useBase.js";
11
+ import { componentEvents as i } from "../../../shared/constants.js";
12
+ import { useComponentDictionary as x, useI18n as Q } from "../../../i18n/I18n.js";
13
13
  import { usePagination as j } from "../../../hooks/usePagination/usePagination.js";
14
14
  import { useDateRangeFilter as v } from "../../../hooks/useDateRangeFilter/useDateRangeFilter.js";
15
15
  function yt(t) {
16
- return /* @__PURE__ */ o(x, { ...t, children: /* @__PURE__ */ o(Z, { ...t, children: t.children }) });
16
+ return /* @__PURE__ */ r(K, { ...t, children: /* @__PURE__ */ r(Z, { ...t, children: t.children }) });
17
17
  }
18
18
  const z = 6, G = 3, J = () => {
19
19
  const t = /* @__PURE__ */ new Date();
@@ -28,62 +28,58 @@ const z = 6, G = 3, J = () => {
28
28
  LoaderComponent: P,
29
29
  className: d
30
30
  }) => {
31
- k("Payroll.PayrollHistory", y), Q("Payroll.PayrollHistory");
32
- const [D, s] = U(null), { baseSubmitHandler: g } = W(), { currentPage: f, itemsPerPage: L, getPaginationProps: C, resetPage: u } = j(), m = v({
31
+ x("Payroll.PayrollHistory", y), Q("Payroll.PayrollHistory");
32
+ const [D, s] = U(null), { baseSubmitHandler: g } = k(), { currentPage: f, itemsPerPage: L, getPaginationProps: C, resetPage: c } = j(), u = v({
33
33
  initialStartDate: J(),
34
34
  initialEndDate: X(),
35
35
  onFilterChange: F(() => {
36
- u();
37
- }, [u])
38
- }), p = m.getApiDateParams(), { data: l, isFetching: R } = N(
36
+ c();
37
+ }, [c])
38
+ }), m = u.getApiDateParams(), { data: l, isFetching: R } = N(
39
39
  {
40
40
  companyId: n,
41
41
  processingStatuses: [Y.Processed],
42
- payrollTypes: [
43
- i.Regular,
44
- i.OffCycle,
45
- i.External
46
- ],
42
+ payrollTypes: [p.Regular, p.OffCycle],
47
43
  includeOffCycle: !0,
48
44
  include: ["totals", "payroll_status_meta"],
49
45
  sortOrder: B.Desc,
50
- startDate: p.startDate,
51
- endDate: p.endDate,
46
+ startDate: m.startDate,
47
+ endDate: m.endDate,
52
48
  page: f,
53
49
  per: L
54
50
  },
55
51
  { placeholderData: T, throwOnError: !0 }
56
52
  ), h = l?.payrollList || [], { data: O } = q({
57
53
  companyUuid: n
58
- }), E = O.wireInRequestList ?? [], { mutateAsync: _, isPending: S } = V(), w = (e, r, a) => {
59
- t(c.RUN_PAYROLL_SUMMARY_VIEWED, { payrollId: e, startDate: r, endDate: a });
60
- }, A = (e, r, a) => {
61
- t(c.RUN_PAYROLL_RECEIPT_VIEWED, { payrollId: e, startDate: r, endDate: a });
54
+ }), _ = O.wireInRequestList ?? [], { mutateAsync: E, isPending: S } = V(), w = (e, o, a) => {
55
+ t(i.RUN_PAYROLL_SUMMARY_VIEWED, { payrollId: e, startDate: o, endDate: a });
56
+ }, A = (e, o, a) => {
57
+ t(i.RUN_PAYROLL_RECEIPT_VIEWED, { payrollId: e, startDate: o, endDate: a });
62
58
  }, I = async (e) => {
63
- const r = e.payrollUuid || e.uuid;
59
+ const o = e.payrollUuid || e.uuid;
64
60
  try {
65
- await g(r, async (a) => {
66
- const H = await _({
61
+ await g(o, async (a) => {
62
+ const H = await E({
67
63
  request: {
68
64
  companyId: n,
69
65
  payrollId: a
70
66
  }
71
67
  });
72
- t(c.RUN_PAYROLL_CANCELLED, { payrollId: a, result: H });
68
+ t(i.RUN_PAYROLL_CANCELLED, { payrollId: a, result: H });
73
69
  });
74
70
  } finally {
75
71
  s(null);
76
72
  }
77
73
  };
78
74
  if (!l)
79
- return /* @__PURE__ */ o(K, { isLoading: !0, LoaderComponent: P });
75
+ return /* @__PURE__ */ r(W, { isLoading: !0, LoaderComponent: P });
80
76
  const M = C(l.httpMeta.response.headers, R);
81
- return /* @__PURE__ */ o(
77
+ return /* @__PURE__ */ r(
82
78
  b,
83
79
  {
84
80
  className: d,
85
81
  payrollHistory: h,
86
- wireInRequests: E,
82
+ wireInRequests: _,
87
83
  pagination: M,
88
84
  onViewSummary: w,
89
85
  onViewReceipt: A,
@@ -94,7 +90,7 @@ const z = 6, G = 3, J = () => {
94
90
  s(null);
95
91
  },
96
92
  isLoading: S,
97
- dateRangeFilter: m
93
+ dateRangeFilter: u
98
94
  }
99
95
  );
100
96
  };
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollHistory.js","sources":["../../../../src/components/Payroll/PayrollHistory/PayrollHistory.tsx"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport { keepPreviousData } from '@tanstack/react-query'\nimport { usePayrollsList } from '@gusto/embedded-api/react-query/payrollsList'\nimport { usePayrollsCancelMutation } from '@gusto/embedded-api/react-query/payrollsCancel'\nimport { useWireInRequestsListSuspense } from '@gusto/embedded-api/react-query/wireInRequestsList'\nimport {\n ProcessingStatuses,\n QueryParamPayrollTypes,\n QueryParamSortOrder as SortOrder,\n} from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\nimport type { Payroll } from '@gusto/embedded-api/models/components/payrollshow'\nimport { PayrollHistoryPresentation } from './PayrollHistoryPresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent, BaseLayout } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\nimport { useDateRangeFilter } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\n\n/**\n * Props for the {@link PayrollHistory} component.\n *\n * @public\n */\nexport interface PayrollHistoryProps extends BaseComponentInterface<'Payroll.PayrollHistory'> {\n /** Identifier of the company whose processed payrolls should be listed. */\n companyId: string\n}\n\n/**\n * Displays historical payroll records with filtering and management capabilities.\n *\n * @remarks\n * Lists processed regular, off-cycle, and external payrolls for a company and supports filtering by\n * pay period, viewing payroll summaries and receipts, and cancelling processed payrolls when they\n * remain within the cancellation window. Each row shows the pay period, payroll type, pay date,\n * status, and total pay amount.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/summary/viewed` | User views a payroll summary | `{ payrollId: string; startDate?: string; endDate?: string }` |\n * | `runPayroll/receipt/viewed` | User views a payroll receipt | `{ payrollId: string; startDate?: string; endDate?: string }` |\n * | `runPayroll/cancelled` | A payroll is cancelled | `{ payrollId: string; result: PayrollsCancelResponse }` |\n *\n * @param props - See {@link PayrollHistoryProps}.\n * @returns The rendered payroll history view.\n * @public\n */\nexport function PayrollHistory(props: PayrollHistoryProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst DEFAULT_LOOKBACK_MONTHS = 6\nconst DEFAULT_LOOKAHEAD_MONTHS = 3\n\nconst getDefaultStartDate = (): Date => {\n const date = new Date()\n date.setMonth(date.getMonth() - DEFAULT_LOOKBACK_MONTHS)\n return date\n}\n\nconst getDefaultEndDate = (): Date => {\n const date = new Date()\n date.setMonth(date.getMonth() + DEFAULT_LOOKAHEAD_MONTHS)\n return date\n}\n\nconst Root = ({\n onEvent,\n companyId,\n dictionary,\n LoaderComponent,\n className,\n}: PayrollHistoryProps) => {\n useComponentDictionary('Payroll.PayrollHistory', dictionary)\n useI18n('Payroll.PayrollHistory')\n\n const [cancelDialogItem, setCancelDialogItem] = useState<Payroll | null>(null)\n const { baseSubmitHandler } = useBase()\n const { currentPage, itemsPerPage, getPaginationProps, resetPage } = usePagination()\n\n const dateRangeFilter = useDateRangeFilter({\n initialStartDate: getDefaultStartDate(),\n initialEndDate: getDefaultEndDate(),\n onFilterChange: useCallback(() => {\n resetPage()\n }, [resetPage]),\n })\n const dateFilterParams = dateRangeFilter.getApiDateParams()\n\n const { data: payrollsData, isFetching } = usePayrollsList(\n {\n companyId,\n processingStatuses: [ProcessingStatuses.Processed],\n payrollTypes: [\n QueryParamPayrollTypes.Regular,\n QueryParamPayrollTypes.OffCycle,\n QueryParamPayrollTypes.External,\n ],\n includeOffCycle: true,\n include: ['totals', 'payroll_status_meta'],\n sortOrder: SortOrder.Desc,\n startDate: dateFilterParams.startDate,\n endDate: dateFilterParams.endDate,\n page: currentPage,\n per: itemsPerPage,\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n\n const payrollHistory = payrollsData?.payrollList || []\n\n const { data: wireInRequestsData } = useWireInRequestsListSuspense({\n companyUuid: companyId,\n })\n\n const wireInRequests = wireInRequestsData.wireInRequestList ?? []\n\n const { mutateAsync: cancelPayroll, isPending: isCancelling } = usePayrollsCancelMutation()\n\n const handleViewSummary = (payrollId: string, startDate?: string, endDate?: string) => {\n onEvent(componentEvents.RUN_PAYROLL_SUMMARY_VIEWED, { payrollId, startDate, endDate })\n }\n\n const handleViewReceipt = (payrollId: string, startDate?: string, endDate?: string) => {\n onEvent(componentEvents.RUN_PAYROLL_RECEIPT_VIEWED, { payrollId, startDate, endDate })\n }\n\n const handleCancelPayroll = async (item: Payroll) => {\n const payrollId = item.payrollUuid || item.uuid!\n try {\n await baseSubmitHandler(payrollId, async id => {\n const result = await cancelPayroll({\n request: {\n companyId,\n payrollId: id,\n },\n })\n\n onEvent(componentEvents.RUN_PAYROLL_CANCELLED, { payrollId: id, result })\n })\n } finally {\n setCancelDialogItem(null)\n }\n }\n\n if (!payrollsData) {\n return <BaseLayout isLoading LoaderComponent={LoaderComponent} />\n }\n\n const paginationProps = getPaginationProps(payrollsData.httpMeta.response.headers, isFetching)\n\n return (\n <PayrollHistoryPresentation\n className={className}\n payrollHistory={payrollHistory}\n wireInRequests={wireInRequests}\n pagination={paginationProps}\n onViewSummary={handleViewSummary}\n onViewReceipt={handleViewReceipt}\n onCancelPayroll={handleCancelPayroll}\n cancelDialogItem={cancelDialogItem}\n onCancelDialogOpen={setCancelDialogItem}\n onCancelDialogClose={() => {\n setCancelDialogItem(null)\n }}\n isLoading={isCancelling}\n dateRangeFilter={dateRangeFilter}\n />\n )\n}\n"],"names":["PayrollHistory","props","jsx","BaseComponent","Root","DEFAULT_LOOKBACK_MONTHS","DEFAULT_LOOKAHEAD_MONTHS","getDefaultStartDate","date","getDefaultEndDate","onEvent","companyId","dictionary","LoaderComponent","className","useComponentDictionary","useI18n","cancelDialogItem","setCancelDialogItem","useState","baseSubmitHandler","useBase","currentPage","itemsPerPage","getPaginationProps","resetPage","usePagination","dateRangeFilter","useDateRangeFilter","useCallback","dateFilterParams","payrollsData","isFetching","usePayrollsList","ProcessingStatuses","QueryParamPayrollTypes","SortOrder","keepPreviousData","payrollHistory","wireInRequestsData","useWireInRequestsListSuspense","wireInRequests","cancelPayroll","isCancelling","usePayrollsCancelMutation","handleViewSummary","payrollId","startDate","endDate","componentEvents","handleViewReceipt","handleCancelPayroll","item","id","result","BaseLayout","paginationProps","PayrollHistoryPresentation"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollHistory.js","sources":["../../../../src/components/Payroll/PayrollHistory/PayrollHistory.tsx"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport { keepPreviousData } from '@tanstack/react-query'\nimport { usePayrollsList } from '@gusto/embedded-api/react-query/payrollsList'\nimport { usePayrollsCancelMutation } from '@gusto/embedded-api/react-query/payrollsCancel'\nimport { useWireInRequestsListSuspense } from '@gusto/embedded-api/react-query/wireInRequestsList'\nimport {\n ProcessingStatuses,\n QueryParamPayrollTypes,\n QueryParamSortOrder as SortOrder,\n} from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\nimport type { Payroll } from '@gusto/embedded-api/models/components/payrollshow'\nimport { PayrollHistoryPresentation } from './PayrollHistoryPresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent, BaseLayout } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\nimport { useDateRangeFilter } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\n\n/**\n * Props for the {@link PayrollHistory} component.\n *\n * @public\n */\nexport interface PayrollHistoryProps extends BaseComponentInterface<'Payroll.PayrollHistory'> {\n /** Identifier of the company whose processed payrolls should be listed. */\n companyId: string\n}\n\n/**\n * Displays historical payroll records with filtering and management capabilities.\n *\n * @remarks\n * Lists processed regular, off-cycle, and external payrolls for a company and supports filtering by\n * pay period, viewing payroll summaries and receipts, and cancelling processed payrolls when they\n * remain within the cancellation window. Each row shows the pay period, payroll type, pay date,\n * status, and total pay amount.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/summary/viewed` | User views a payroll summary | `{ payrollId: string; startDate?: string; endDate?: string }` |\n * | `runPayroll/receipt/viewed` | User views a payroll receipt | `{ payrollId: string; startDate?: string; endDate?: string }` |\n * | `runPayroll/cancelled` | A payroll is cancelled | `{ payrollId: string; result: PayrollsCancelResponse }` |\n *\n * @param props - See {@link PayrollHistoryProps}.\n * @returns The rendered payroll history view.\n * @public\n */\nexport function PayrollHistory(props: PayrollHistoryProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst DEFAULT_LOOKBACK_MONTHS = 6\nconst DEFAULT_LOOKAHEAD_MONTHS = 3\n\nconst getDefaultStartDate = (): Date => {\n const date = new Date()\n date.setMonth(date.getMonth() - DEFAULT_LOOKBACK_MONTHS)\n return date\n}\n\nconst getDefaultEndDate = (): Date => {\n const date = new Date()\n date.setMonth(date.getMonth() + DEFAULT_LOOKAHEAD_MONTHS)\n return date\n}\n\nconst Root = ({\n onEvent,\n companyId,\n dictionary,\n LoaderComponent,\n className,\n}: PayrollHistoryProps) => {\n useComponentDictionary('Payroll.PayrollHistory', dictionary)\n useI18n('Payroll.PayrollHistory')\n\n const [cancelDialogItem, setCancelDialogItem] = useState<Payroll | null>(null)\n const { baseSubmitHandler } = useBase()\n const { currentPage, itemsPerPage, getPaginationProps, resetPage } = usePagination()\n\n const dateRangeFilter = useDateRangeFilter({\n initialStartDate: getDefaultStartDate(),\n initialEndDate: getDefaultEndDate(),\n onFilterChange: useCallback(() => {\n resetPage()\n }, [resetPage]),\n })\n const dateFilterParams = dateRangeFilter.getApiDateParams()\n\n const { data: payrollsData, isFetching } = usePayrollsList(\n {\n companyId,\n processingStatuses: [ProcessingStatuses.Processed],\n payrollTypes: [QueryParamPayrollTypes.Regular, QueryParamPayrollTypes.OffCycle],\n includeOffCycle: true,\n include: ['totals', 'payroll_status_meta'],\n sortOrder: SortOrder.Desc,\n startDate: dateFilterParams.startDate,\n endDate: dateFilterParams.endDate,\n page: currentPage,\n per: itemsPerPage,\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n\n const payrollHistory = payrollsData?.payrollList || []\n\n const { data: wireInRequestsData } = useWireInRequestsListSuspense({\n companyUuid: companyId,\n })\n\n const wireInRequests = wireInRequestsData.wireInRequestList ?? []\n\n const { mutateAsync: cancelPayroll, isPending: isCancelling } = usePayrollsCancelMutation()\n\n const handleViewSummary = (payrollId: string, startDate?: string, endDate?: string) => {\n onEvent(componentEvents.RUN_PAYROLL_SUMMARY_VIEWED, { payrollId, startDate, endDate })\n }\n\n const handleViewReceipt = (payrollId: string, startDate?: string, endDate?: string) => {\n onEvent(componentEvents.RUN_PAYROLL_RECEIPT_VIEWED, { payrollId, startDate, endDate })\n }\n\n const handleCancelPayroll = async (item: Payroll) => {\n const payrollId = item.payrollUuid || item.uuid!\n try {\n await baseSubmitHandler(payrollId, async id => {\n const result = await cancelPayroll({\n request: {\n companyId,\n payrollId: id,\n },\n })\n\n onEvent(componentEvents.RUN_PAYROLL_CANCELLED, { payrollId: id, result })\n })\n } finally {\n setCancelDialogItem(null)\n }\n }\n\n if (!payrollsData) {\n return <BaseLayout isLoading LoaderComponent={LoaderComponent} />\n }\n\n const paginationProps = getPaginationProps(payrollsData.httpMeta.response.headers, isFetching)\n\n return (\n <PayrollHistoryPresentation\n className={className}\n payrollHistory={payrollHistory}\n wireInRequests={wireInRequests}\n pagination={paginationProps}\n onViewSummary={handleViewSummary}\n onViewReceipt={handleViewReceipt}\n onCancelPayroll={handleCancelPayroll}\n cancelDialogItem={cancelDialogItem}\n onCancelDialogOpen={setCancelDialogItem}\n onCancelDialogClose={() => {\n setCancelDialogItem(null)\n }}\n isLoading={isCancelling}\n dateRangeFilter={dateRangeFilter}\n />\n )\n}\n"],"names":["PayrollHistory","props","jsx","BaseComponent","Root","DEFAULT_LOOKBACK_MONTHS","DEFAULT_LOOKAHEAD_MONTHS","getDefaultStartDate","date","getDefaultEndDate","onEvent","companyId","dictionary","LoaderComponent","className","useComponentDictionary","useI18n","cancelDialogItem","setCancelDialogItem","useState","baseSubmitHandler","useBase","currentPage","itemsPerPage","getPaginationProps","resetPage","usePagination","dateRangeFilter","useDateRangeFilter","useCallback","dateFilterParams","payrollsData","isFetching","usePayrollsList","ProcessingStatuses","QueryParamPayrollTypes","SortOrder","keepPreviousData","payrollHistory","wireInRequestsData","useWireInRequestsListSuspense","wireInRequests","cancelPayroll","isCancelling","usePayrollsCancelMutation","handleViewSummary","payrollId","startDate","endDate","componentEvents","handleViewReceipt","handleCancelPayroll","item","id","result","BaseLayout","paginationProps","PayrollHistoryPresentation"],"mappings":"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"}
@@ -7,8 +7,8 @@ import { usePayrollsSkipMutation as $ } from "@gusto/embedded-api/react-query/pa
7
7
  import { usePayrollsDeleteMutation as ee } from "@gusto/embedded-api/react-query/payrollsDelete";
8
8
  import { usePayrollsGetBlockersSuspense as te } from "@gusto/embedded-api/react-query/payrollsGetBlockers";
9
9
  import { useWireInRequestsListSuspense as se } from "@gusto/embedded-api/react-query/wireInRequestsList";
10
- import { PayrollType as g } from "@gusto/embedded-api/models/operations/postcompaniespayrollskipcompanyuuid";
11
- import { QueryParamPayrollTypes as c, ProcessingStatuses as ae } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls";
10
+ import { PayrollType as S } from "@gusto/embedded-api/models/operations/postcompaniespayrollskipcompanyuuid";
11
+ import { QueryParamPayrollTypes as g, ProcessingStatuses as ae } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls";
12
12
  import { useUnprocessedTransitionPayPeriods as oe } from "../useUnprocessedTransitionPayPeriods.js";
13
13
  import { PayrollListPresentation as re } from "./PayrollListPresentation.js";
14
14
  import { BaseComponent as le, BaseLayout as ne } from "../../Base/Base.js";
@@ -29,29 +29,25 @@ const pe = 3, ye = () => /* @__PURE__ */ new Date(), me = () => {
29
29
  LoaderComponent: h,
30
30
  className: R
31
31
  }) => {
32
- const { baseSubmitHandler: u } = ie(), k = V(), [A, p] = r(!1), [w, y] = r(null), { currentPage: O, itemsPerPage: E, getPaginationProps: C, resetPage: m } = ce(), [T, P] = r(!1), [_, d] = r(null), f = ue({
32
+ const { baseSubmitHandler: c } = ie(), k = V(), [A, u] = r(!1), [w, p] = r(null), { currentPage: O, itemsPerPage: C, getPaginationProps: E, resetPage: y } = ce(), [T, m] = r(!1), [_, P] = r(null), d = ue({
33
33
  initialStartDate: ye(),
34
34
  initialEndDate: me(),
35
35
  onFilterChange: j(() => {
36
- m();
37
- }, [m])
38
- }), D = f.getApiDateParams(), { data: n, isFetching: F } = J(
36
+ y();
37
+ }, [y])
38
+ }), f = d.getApiDateParams(), { data: n, isFetching: F } = J(
39
39
  {
40
40
  companyId: t,
41
41
  processingStatuses: [ae.Unprocessed],
42
- startDate: D.startDate,
43
- endDate: D.endDate,
44
- payrollTypes: [
45
- c.Regular,
46
- c.OffCycle,
47
- c.External
48
- ],
42
+ startDate: f.startDate,
43
+ endDate: f.endDate,
44
+ payrollTypes: [g.Regular, g.OffCycle],
49
45
  includeOffCycle: !0,
50
46
  page: O,
51
- per: E
47
+ per: C
52
48
  },
53
49
  { placeholderData: z, throwOnError: !0 }
54
- ), S = n?.payrollList ?? [], { data: q } = Z({
50
+ ), D = n?.payrollList ?? [], { data: q } = Z({
55
51
  companyId: t
56
52
  }), B = q.payScheduleShowResponse, { data: U } = te({
57
53
  companyUuid: t
@@ -62,9 +58,9 @@ const pe = 3, ye = () => /* @__PURE__ */ new Date(), me = () => {
62
58
  })
63
59
  ), { data: M } = se({
64
60
  companyUuid: t
65
- }), Y = M.wireInRequestList ?? [], { hasUnprocessedTransitions: b } = oe(t), { mutateAsync: x } = $(), { mutateAsync: H } = ee(), N = ({ payrollUuid: e, payPeriod: s }) => {
61
+ }), Y = M.wireInRequestList ?? [], { hasUnprocessedTransitions: b } = oe(t), { mutateAsync: H } = $(), { mutateAsync: N } = ee(), v = ({ payrollUuid: e, payPeriod: s }) => {
66
62
  a(o.RUN_PAYROLL_SELECTED, { payrollUuid: e, payPeriod: s });
67
- }, v = () => {
63
+ }, x = () => {
68
64
  a(o.RUN_OFF_CYCLE_PAYROLL);
69
65
  }, G = ({
70
66
  payrollUuid: e,
@@ -72,12 +68,12 @@ const pe = 3, ye = () => /* @__PURE__ */ new Date(), me = () => {
72
68
  }) => {
73
69
  a(o.REVIEW_PAYROLL, { payrollUuid: e, payPeriod: s });
74
70
  }, K = async ({ payrollUuid: e }) => {
75
- const s = S.find((i) => i.payrollUuid === e);
71
+ const s = D.find((i) => i.payrollUuid === e);
76
72
  if (s?.payPeriod) {
77
- y(e);
78
- const i = s.offCycleReason === "Transition from old pay schedule" ? g.TransitionFromOldPaySchedule : g.Regular;
79
- await u({}, async () => {
80
- await x({
73
+ p(e);
74
+ const i = s.offCycleReason === "Transition from old pay schedule" ? S.TransitionFromOldPaySchedule : S.Regular;
75
+ await c({}, async () => {
76
+ await H({
81
77
  request: {
82
78
  companyUuid: t,
83
79
  requestBody: {
@@ -87,44 +83,44 @@ const pe = 3, ye = () => /* @__PURE__ */ new Date(), me = () => {
87
83
  payScheduleUuid: s.payPeriod?.payScheduleUuid ?? void 0
88
84
  }
89
85
  }
90
- }), p(!0), a(o.PAYROLL_SKIPPED, { payrollId: e });
91
- }), y(null);
86
+ }), u(!0), a(o.PAYROLL_SKIPPED, { payrollId: e });
87
+ }), p(null);
92
88
  }
93
89
  }, Q = async ({ payrollUuid: e }) => {
94
- e && (d(e), await u({}, async () => {
95
- await H({
90
+ e && (P(e), await c({}, async () => {
91
+ await N({
96
92
  request: { companyId: t, payrollId: e }
97
- }), await X(k), P(!0), a(o.PAYROLL_DELETED, { payrollId: e });
98
- }), d(null));
93
+ }), await X(k), m(!0), a(o.PAYROLL_DELETED, { payrollId: e });
94
+ }), P(null));
99
95
  };
100
96
  if (!n)
101
97
  return /* @__PURE__ */ l(ne, { isLoading: !0, LoaderComponent: h });
102
- const W = C(n.httpMeta.response.headers, F);
98
+ const W = E(n.httpMeta.response.headers, F);
103
99
  return /* @__PURE__ */ l(
104
100
  re,
105
101
  {
106
102
  className: R,
107
- payrolls: S,
103
+ payrolls: D,
108
104
  pagination: W,
109
105
  paySchedules: B,
110
- onRunPayroll: N,
106
+ onRunPayroll: v,
111
107
  onSubmitPayroll: G,
112
108
  onSkipPayroll: K,
113
109
  onDeletePayroll: Q,
114
- onRunOffCyclePayroll: v,
110
+ onRunOffCyclePayroll: x,
115
111
  showSkipSuccessAlert: A,
116
112
  onDismissSkipSuccessAlert: () => {
117
- p(!1);
113
+ u(!1);
118
114
  },
119
115
  showDeleteSuccessAlert: T,
120
116
  onDismissDeleteSuccessAlert: () => {
121
- P(!1);
117
+ m(!1);
122
118
  },
123
119
  skippingPayrollId: w,
124
120
  deletingPayrollId: _,
125
121
  blockers: I,
126
122
  wireInRequests: Y,
127
- dateRangeFilter: f,
123
+ dateRangeFilter: d,
128
124
  hasUnprocessedTransitions: b,
129
125
  withOffcyclePayroll: L
130
126
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollList.js","sources":["../../../../src/components/Payroll/PayrollList/PayrollList.tsx"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport { useQueryClient, keepPreviousData } from '@tanstack/react-query'\nimport {\n usePayrollsList,\n invalidateAllPayrollsList,\n} from '@gusto/embedded-api/react-query/payrollsList'\nimport { usePaySchedulesGetAllSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetAll'\nimport { usePayrollsSkipMutation } from '@gusto/embedded-api/react-query/payrollsSkip'\nimport { usePayrollsDeleteMutation } from '@gusto/embedded-api/react-query/payrollsDelete'\nimport { usePayrollsGetBlockersSuspense } from '@gusto/embedded-api/react-query/payrollsGetBlockers'\nimport { useWireInRequestsListSuspense } from '@gusto/embedded-api/react-query/wireInRequestsList'\nimport { PayrollType } from '@gusto/embedded-api/models/operations/postcompaniespayrollskipcompanyuuid'\nimport {\n ProcessingStatuses,\n QueryParamPayrollTypes,\n} from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\nimport type { Payroll } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { useUnprocessedTransitionPayPeriods } from '../useUnprocessedTransitionPayPeriods'\nimport { PayrollListPresentation } from './PayrollListPresentation'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent, BaseLayout, useBase } from '@/components/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\nimport { useDateRangeFilter } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\n\n/**\n * Props for {@link PayrollList}.\n *\n * @public\n */\nexport interface PayrollListBlockProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** Whether to show the off-cycle payroll call-to-action. Defaults to `true`. */\n withOffcyclePayroll?: boolean\n}\n\n/**\n * Lists upcoming payrolls and lets users start running them.\n *\n * Displays available payrolls with pay period dates, payroll type, check date,\n * deadline, and status. Each row offers actions to run, submit a calculated\n * payroll, skip, or delete (for cancellable off-cycle payrolls). A separate\n * call-to-action starts an off-cycle payroll.\n *\n * @remarks\n * When the company has unprocessed transition pay periods within the next\n * 90 days, the Run Payroll action on Regular rows is disabled to prevent a\n * regular payroll from being run before the transition is resolved. Off-cycle\n * rows and the Run off-cycle action remain enabled, since off-cycle is the\n * path used to run a transition payroll. {@link PayrollLanding} pairs this\n * list with an alert that lets users run or skip the pending transition; when\n * using `PayrollList` directly, render an equivalent resolution surface\n * alongside it.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/selected` | User selected a payroll to run | `{ payrollUuid, payPeriod }` |\n * | `payroll/review` | User selected a calculated payroll to review and submit | `{ payrollUuid, payPeriod }` |\n * | `payroll/skipped` | A payroll was successfully skipped | `{ payrollId }` |\n * | `payroll/deleted` | A cancellable off-cycle payroll was successfully deleted | `{ payrollId }` |\n * | `runPayroll/offCycle/start` | User clicked the Run off-cycle call-to-action | — |\n *\n * @param props - See {@link PayrollListBlockProps}.\n * @returns The rendered payroll list.\n * @public\n */\nexport function PayrollList(props: PayrollListBlockProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nconst FUTURE_LOOKAHEAD_MONTHS = 3\n\nconst getDefaultStartDate = (): Date => new Date()\n\nconst getDefaultEndDate = (): Date => {\n const date = new Date()\n date.setMonth(date.getMonth() + FUTURE_LOOKAHEAD_MONTHS)\n return date\n}\n\nconst Root = ({\n companyId,\n onEvent,\n withOffcyclePayroll = true,\n LoaderComponent,\n className,\n}: PayrollListBlockProps) => {\n const { baseSubmitHandler } = useBase()\n const queryClient = useQueryClient()\n const [showSkipSuccessAlert, setShowSkipSuccessAlert] = useState(false)\n const [skippingPayrollId, setSkippingPayrollId] = useState<string | null>(null)\n const { currentPage, itemsPerPage, getPaginationProps, resetPage } = usePagination()\n const [showDeleteSuccessAlert, setShowDeleteSuccessAlert] = useState(false)\n const [deletingPayrollId, setDeletingPayrollId] = useState<string | null>(null)\n\n const dateRangeFilter = useDateRangeFilter({\n initialStartDate: getDefaultStartDate(),\n initialEndDate: getDefaultEndDate(),\n onFilterChange: useCallback(() => {\n resetPage()\n }, [resetPage]),\n })\n const dateFilterParams = dateRangeFilter.getApiDateParams()\n\n const { data: payrollsData, isFetching } = usePayrollsList(\n {\n companyId,\n processingStatuses: [ProcessingStatuses.Unprocessed],\n startDate: dateFilterParams.startDate,\n endDate: dateFilterParams.endDate,\n payrollTypes: [\n QueryParamPayrollTypes.Regular,\n QueryParamPayrollTypes.OffCycle,\n QueryParamPayrollTypes.External,\n ],\n includeOffCycle: true,\n page: currentPage,\n per: itemsPerPage,\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n const payrollList = payrollsData?.payrollList ?? []\n const { data: paySchedulesData } = usePaySchedulesGetAllSuspense({\n companyId,\n })\n const paySchedulesList = paySchedulesData.payScheduleShowResponse!\n\n const { data: blockersData } = usePayrollsGetBlockersSuspense({\n companyUuid: companyId,\n })\n\n const payrollBlockerList = blockersData.payrollBlockers ?? []\n\n const blockers: ApiPayrollBlocker[] = payrollBlockerList.map(\n (blocker: { key?: string; message?: string }) => ({\n key: blocker.key ?? 'unknown',\n message: blocker.message,\n }),\n )\n\n const { data: wireInRequestsData } = useWireInRequestsListSuspense({\n companyUuid: companyId,\n })\n\n const wireInRequests = wireInRequestsData.wireInRequestList ?? []\n\n const { hasUnprocessedTransitions } = useUnprocessedTransitionPayPeriods(companyId)\n\n const { mutateAsync: skipPayroll } = usePayrollsSkipMutation()\n const { mutateAsync: deletePayrollMutation } = usePayrollsDeleteMutation()\n\n const onRunPayroll = ({ payrollUuid, payPeriod }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => {\n onEvent(componentEvents.RUN_PAYROLL_SELECTED, { payrollUuid, payPeriod })\n }\n const onRunOffCyclePayroll = () => {\n onEvent(componentEvents.RUN_OFF_CYCLE_PAYROLL)\n }\n const onSubmitPayroll = ({\n payrollUuid,\n payPeriod,\n }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => {\n onEvent(componentEvents.REVIEW_PAYROLL, { payrollUuid, payPeriod })\n }\n const onSkipPayroll = async ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => {\n const payroll = payrollList.find(payroll => payroll.payrollUuid === payrollUuid)\n\n if (payroll?.payPeriod) {\n setSkippingPayrollId(payrollUuid!)\n const payrollType =\n payroll.offCycleReason === 'Transition from old pay schedule'\n ? PayrollType.TransitionFromOldPaySchedule\n : PayrollType.Regular\n\n await baseSubmitHandler({}, async () => {\n await skipPayroll({\n request: {\n companyUuid: companyId,\n requestBody: {\n payrollType,\n startDate: payroll.payPeriod?.startDate ?? undefined,\n endDate: payroll.payPeriod?.endDate ?? undefined,\n payScheduleUuid: payroll.payPeriod?.payScheduleUuid ?? undefined,\n },\n },\n })\n\n setShowSkipSuccessAlert(true)\n onEvent(componentEvents.PAYROLL_SKIPPED, { payrollId: payrollUuid })\n })\n setSkippingPayrollId(null)\n }\n }\n\n const onDeletePayroll = async ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => {\n if (payrollUuid) {\n setDeletingPayrollId(payrollUuid)\n await baseSubmitHandler({}, async () => {\n await deletePayrollMutation({\n request: { companyId, payrollId: payrollUuid },\n })\n await invalidateAllPayrollsList(queryClient)\n setShowDeleteSuccessAlert(true)\n onEvent(componentEvents.PAYROLL_DELETED, { payrollId: payrollUuid })\n })\n setDeletingPayrollId(null)\n }\n }\n\n if (!payrollsData) {\n return <BaseLayout isLoading LoaderComponent={LoaderComponent} />\n }\n\n const paginationProps = getPaginationProps(payrollsData.httpMeta.response.headers, isFetching)\n\n return (\n <PayrollListPresentation\n className={className}\n payrolls={payrollList}\n pagination={paginationProps}\n paySchedules={paySchedulesList}\n onRunPayroll={onRunPayroll}\n onSubmitPayroll={onSubmitPayroll}\n onSkipPayroll={onSkipPayroll}\n onDeletePayroll={onDeletePayroll}\n onRunOffCyclePayroll={onRunOffCyclePayroll}\n showSkipSuccessAlert={showSkipSuccessAlert}\n onDismissSkipSuccessAlert={() => {\n setShowSkipSuccessAlert(false)\n }}\n showDeleteSuccessAlert={showDeleteSuccessAlert}\n onDismissDeleteSuccessAlert={() => {\n setShowDeleteSuccessAlert(false)\n }}\n skippingPayrollId={skippingPayrollId}\n deletingPayrollId={deletingPayrollId}\n blockers={blockers}\n wireInRequests={wireInRequests}\n dateRangeFilter={dateRangeFilter}\n hasUnprocessedTransitions={hasUnprocessedTransitions}\n withOffcyclePayroll={withOffcyclePayroll}\n />\n )\n}\n"],"names":["PayrollList","props","jsx","BaseComponent","Root","FUTURE_LOOKAHEAD_MONTHS","getDefaultStartDate","getDefaultEndDate","date","companyId","onEvent","withOffcyclePayroll","LoaderComponent","className","baseSubmitHandler","useBase","queryClient","useQueryClient","showSkipSuccessAlert","setShowSkipSuccessAlert","useState","skippingPayrollId","setSkippingPayrollId","currentPage","itemsPerPage","getPaginationProps","resetPage","usePagination","showDeleteSuccessAlert","setShowDeleteSuccessAlert","deletingPayrollId","setDeletingPayrollId","dateRangeFilter","useDateRangeFilter","useCallback","dateFilterParams","payrollsData","isFetching","usePayrollsList","ProcessingStatuses","QueryParamPayrollTypes","keepPreviousData","payrollList","paySchedulesData","usePaySchedulesGetAllSuspense","paySchedulesList","blockersData","usePayrollsGetBlockersSuspense","blockers","blocker","wireInRequestsData","useWireInRequestsListSuspense","wireInRequests","hasUnprocessedTransitions","useUnprocessedTransitionPayPeriods","skipPayroll","usePayrollsSkipMutation","deletePayrollMutation","usePayrollsDeleteMutation","onRunPayroll","payrollUuid","payPeriod","componentEvents","onRunOffCyclePayroll","onSubmitPayroll","onSkipPayroll","payroll","payrollType","PayrollType","onDeletePayroll","invalidateAllPayrollsList","BaseLayout","paginationProps","PayrollListPresentation"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollList.js","sources":["../../../../src/components/Payroll/PayrollList/PayrollList.tsx"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport { useQueryClient, keepPreviousData } from '@tanstack/react-query'\nimport {\n usePayrollsList,\n invalidateAllPayrollsList,\n} from '@gusto/embedded-api/react-query/payrollsList'\nimport { usePaySchedulesGetAllSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetAll'\nimport { usePayrollsSkipMutation } from '@gusto/embedded-api/react-query/payrollsSkip'\nimport { usePayrollsDeleteMutation } from '@gusto/embedded-api/react-query/payrollsDelete'\nimport { usePayrollsGetBlockersSuspense } from '@gusto/embedded-api/react-query/payrollsGetBlockers'\nimport { useWireInRequestsListSuspense } from '@gusto/embedded-api/react-query/wireInRequestsList'\nimport { PayrollType } from '@gusto/embedded-api/models/operations/postcompaniespayrollskipcompanyuuid'\nimport {\n ProcessingStatuses,\n QueryParamPayrollTypes,\n} from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\nimport type { Payroll } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { useUnprocessedTransitionPayPeriods } from '../useUnprocessedTransitionPayPeriods'\nimport { PayrollListPresentation } from './PayrollListPresentation'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent, BaseLayout, useBase } from '@/components/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\nimport { useDateRangeFilter } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\n\n/**\n * Props for {@link PayrollList}.\n *\n * @public\n */\nexport interface PayrollListBlockProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** Whether to show the off-cycle payroll call-to-action. Defaults to `true`. */\n withOffcyclePayroll?: boolean\n}\n\n/**\n * Lists upcoming payrolls and lets users start running them.\n *\n * Displays available payrolls with pay period dates, payroll type, check date,\n * deadline, and status. Each row offers actions to run, submit a calculated\n * payroll, skip, or delete (for cancellable off-cycle payrolls). A separate\n * call-to-action starts an off-cycle payroll.\n *\n * @remarks\n * When the company has unprocessed transition pay periods within the next\n * 90 days, the Run Payroll action on Regular rows is disabled to prevent a\n * regular payroll from being run before the transition is resolved. Off-cycle\n * rows and the Run off-cycle action remain enabled, since off-cycle is the\n * path used to run a transition payroll. {@link PayrollLanding} pairs this\n * list with an alert that lets users run or skip the pending transition; when\n * using `PayrollList` directly, render an equivalent resolution surface\n * alongside it.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/selected` | User selected a payroll to run | `{ payrollUuid, payPeriod }` |\n * | `payroll/review` | User selected a calculated payroll to review and submit | `{ payrollUuid, payPeriod }` |\n * | `payroll/skipped` | A payroll was successfully skipped | `{ payrollId }` |\n * | `payroll/deleted` | A cancellable off-cycle payroll was successfully deleted | `{ payrollId }` |\n * | `runPayroll/offCycle/start` | User clicked the Run off-cycle call-to-action | — |\n *\n * @param props - See {@link PayrollListBlockProps}.\n * @returns The rendered payroll list.\n * @public\n */\nexport function PayrollList(props: PayrollListBlockProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nconst FUTURE_LOOKAHEAD_MONTHS = 3\n\nconst getDefaultStartDate = (): Date => new Date()\n\nconst getDefaultEndDate = (): Date => {\n const date = new Date()\n date.setMonth(date.getMonth() + FUTURE_LOOKAHEAD_MONTHS)\n return date\n}\n\nconst Root = ({\n companyId,\n onEvent,\n withOffcyclePayroll = true,\n LoaderComponent,\n className,\n}: PayrollListBlockProps) => {\n const { baseSubmitHandler } = useBase()\n const queryClient = useQueryClient()\n const [showSkipSuccessAlert, setShowSkipSuccessAlert] = useState(false)\n const [skippingPayrollId, setSkippingPayrollId] = useState<string | null>(null)\n const { currentPage, itemsPerPage, getPaginationProps, resetPage } = usePagination()\n const [showDeleteSuccessAlert, setShowDeleteSuccessAlert] = useState(false)\n const [deletingPayrollId, setDeletingPayrollId] = useState<string | null>(null)\n\n const dateRangeFilter = useDateRangeFilter({\n initialStartDate: getDefaultStartDate(),\n initialEndDate: getDefaultEndDate(),\n onFilterChange: useCallback(() => {\n resetPage()\n }, [resetPage]),\n })\n const dateFilterParams = dateRangeFilter.getApiDateParams()\n\n const { data: payrollsData, isFetching } = usePayrollsList(\n {\n companyId,\n processingStatuses: [ProcessingStatuses.Unprocessed],\n startDate: dateFilterParams.startDate,\n endDate: dateFilterParams.endDate,\n payrollTypes: [QueryParamPayrollTypes.Regular, QueryParamPayrollTypes.OffCycle],\n includeOffCycle: true,\n page: currentPage,\n per: itemsPerPage,\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n const payrollList = payrollsData?.payrollList ?? []\n const { data: paySchedulesData } = usePaySchedulesGetAllSuspense({\n companyId,\n })\n const paySchedulesList = paySchedulesData.payScheduleShowResponse!\n\n const { data: blockersData } = usePayrollsGetBlockersSuspense({\n companyUuid: companyId,\n })\n\n const payrollBlockerList = blockersData.payrollBlockers ?? []\n\n const blockers: ApiPayrollBlocker[] = payrollBlockerList.map(\n (blocker: { key?: string; message?: string }) => ({\n key: blocker.key ?? 'unknown',\n message: blocker.message,\n }),\n )\n\n const { data: wireInRequestsData } = useWireInRequestsListSuspense({\n companyUuid: companyId,\n })\n\n const wireInRequests = wireInRequestsData.wireInRequestList ?? []\n\n const { hasUnprocessedTransitions } = useUnprocessedTransitionPayPeriods(companyId)\n\n const { mutateAsync: skipPayroll } = usePayrollsSkipMutation()\n const { mutateAsync: deletePayrollMutation } = usePayrollsDeleteMutation()\n\n const onRunPayroll = ({ payrollUuid, payPeriod }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => {\n onEvent(componentEvents.RUN_PAYROLL_SELECTED, { payrollUuid, payPeriod })\n }\n const onRunOffCyclePayroll = () => {\n onEvent(componentEvents.RUN_OFF_CYCLE_PAYROLL)\n }\n const onSubmitPayroll = ({\n payrollUuid,\n payPeriod,\n }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => {\n onEvent(componentEvents.REVIEW_PAYROLL, { payrollUuid, payPeriod })\n }\n const onSkipPayroll = async ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => {\n const payroll = payrollList.find(payroll => payroll.payrollUuid === payrollUuid)\n\n if (payroll?.payPeriod) {\n setSkippingPayrollId(payrollUuid!)\n const payrollType =\n payroll.offCycleReason === 'Transition from old pay schedule'\n ? PayrollType.TransitionFromOldPaySchedule\n : PayrollType.Regular\n\n await baseSubmitHandler({}, async () => {\n await skipPayroll({\n request: {\n companyUuid: companyId,\n requestBody: {\n payrollType,\n startDate: payroll.payPeriod?.startDate ?? undefined,\n endDate: payroll.payPeriod?.endDate ?? undefined,\n payScheduleUuid: payroll.payPeriod?.payScheduleUuid ?? undefined,\n },\n },\n })\n\n setShowSkipSuccessAlert(true)\n onEvent(componentEvents.PAYROLL_SKIPPED, { payrollId: payrollUuid })\n })\n setSkippingPayrollId(null)\n }\n }\n\n const onDeletePayroll = async ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => {\n if (payrollUuid) {\n setDeletingPayrollId(payrollUuid)\n await baseSubmitHandler({}, async () => {\n await deletePayrollMutation({\n request: { companyId, payrollId: payrollUuid },\n })\n await invalidateAllPayrollsList(queryClient)\n setShowDeleteSuccessAlert(true)\n onEvent(componentEvents.PAYROLL_DELETED, { payrollId: payrollUuid })\n })\n setDeletingPayrollId(null)\n }\n }\n\n if (!payrollsData) {\n return <BaseLayout isLoading LoaderComponent={LoaderComponent} />\n }\n\n const paginationProps = getPaginationProps(payrollsData.httpMeta.response.headers, isFetching)\n\n return (\n <PayrollListPresentation\n className={className}\n payrolls={payrollList}\n pagination={paginationProps}\n paySchedules={paySchedulesList}\n onRunPayroll={onRunPayroll}\n onSubmitPayroll={onSubmitPayroll}\n onSkipPayroll={onSkipPayroll}\n onDeletePayroll={onDeletePayroll}\n onRunOffCyclePayroll={onRunOffCyclePayroll}\n showSkipSuccessAlert={showSkipSuccessAlert}\n onDismissSkipSuccessAlert={() => {\n setShowSkipSuccessAlert(false)\n }}\n showDeleteSuccessAlert={showDeleteSuccessAlert}\n onDismissDeleteSuccessAlert={() => {\n setShowDeleteSuccessAlert(false)\n }}\n skippingPayrollId={skippingPayrollId}\n deletingPayrollId={deletingPayrollId}\n blockers={blockers}\n wireInRequests={wireInRequests}\n dateRangeFilter={dateRangeFilter}\n hasUnprocessedTransitions={hasUnprocessedTransitions}\n withOffcyclePayroll={withOffcyclePayroll}\n />\n )\n}\n"],"names":["PayrollList","props","jsx","BaseComponent","Root","FUTURE_LOOKAHEAD_MONTHS","getDefaultStartDate","getDefaultEndDate","date","companyId","onEvent","withOffcyclePayroll","LoaderComponent","className","baseSubmitHandler","useBase","queryClient","useQueryClient","showSkipSuccessAlert","setShowSkipSuccessAlert","useState","skippingPayrollId","setSkippingPayrollId","currentPage","itemsPerPage","getPaginationProps","resetPage","usePagination","showDeleteSuccessAlert","setShowDeleteSuccessAlert","deletingPayrollId","setDeletingPayrollId","dateRangeFilter","useDateRangeFilter","useCallback","dateFilterParams","payrollsData","isFetching","usePayrollsList","ProcessingStatuses","QueryParamPayrollTypes","keepPreviousData","payrollList","paySchedulesData","usePaySchedulesGetAllSuspense","paySchedulesList","blockersData","usePayrollsGetBlockersSuspense","blockers","blocker","wireInRequestsData","useWireInRequestsListSuspense","wireInRequests","hasUnprocessedTransitions","useUnprocessedTransitionPayPeriods","skipPayroll","usePayrollsSkipMutation","deletePayrollMutation","usePayrollsDeleteMutation","onRunPayroll","payrollUuid","payPeriod","componentEvents","onRunOffCyclePayroll","onSubmitPayroll","onSkipPayroll","payroll","payrollType","PayrollType","onDeletePayroll","invalidateAllPayrollsList","BaseLayout","paginationProps","PayrollListPresentation"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { usePayrollsListSuspense as i } from "@gusto/embedded-api/react-query/payrollsList";
2
- import { QueryParamPayrollTypes as s, ProcessingStatuses as u } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls";
2
+ import { QueryParamPayrollTypes as a, ProcessingStatuses as u } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls";
3
3
  const c = 28, p = "Transition from old pay schedule";
4
4
  function d() {
5
5
  const e = /* @__PURE__ */ new Date();
@@ -15,15 +15,11 @@ function S({
15
15
  companyId: e,
16
16
  processingStatuses: [u.Unprocessed],
17
17
  endDate: d(),
18
- payrollTypes: [
19
- s.Regular,
20
- s.OffCycle,
21
- s.External
22
- ]
18
+ payrollTypes: [a.Regular, a.OffCycle]
23
19
  });
24
- return l.payrollList?.find((a) => {
25
- const t = a.payPeriod;
26
- return a.offCycleReason === p && t?.startDate === o && t.endDate === r && t.payScheduleUuid === n;
20
+ return l.payrollList?.find((s) => {
21
+ const t = s.payPeriod;
22
+ return s.offCycleReason === p && t?.startDate === o && t.endDate === r && t.payScheduleUuid === n;
27
23
  })?.payrollUuid;
28
24
  }
29
25
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"useResolveTransitionPayroll.js","sources":["../../../../src/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.ts"],"sourcesContent":["import { usePayrollsListSuspense } from '@gusto/embedded-api/react-query/payrollsList'\nimport {\n ProcessingStatuses,\n QueryParamPayrollTypes,\n} from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\n\nconst FUTURE_LOOKAHEAD_DAYS = 28\n\nconst TRANSITION_OFF_CYCLE_REASON = 'Transition from old pay schedule'\n\nfunction getFutureEndDate(): string {\n const date = new Date()\n date.setDate(date.getDate() + FUTURE_LOOKAHEAD_DAYS)\n return date.toISOString().split('T')[0]!\n}\n\n/**\n * Arguments describing the transition pay period to resolve.\n *\n * @internal\n */\nexport interface ResolveTransitionPayrollArgs {\n companyId: string\n startDate: string\n endDate: string\n payScheduleUuid: string\n}\n\n/**\n * Looks up an existing unprocessed transition payroll for the given pay period.\n *\n * @remarks\n * A transition payroll is an unprocessed off-cycle payroll whose `offCycleReason` is\n * `\"Transition from old pay schedule\"` and whose pay period matches the supplied\n * `startDate`, `endDate`, and `payScheduleUuid`. When the company changed its pay schedule\n * the platform creates exactly one such payroll for the coverage gap; this hook finds it so\n * the caller can resume it instead of creating a duplicate.\n *\n * Backed by a suspense query, so callers must render it under a suspense boundary.\n *\n * @param args - The pay period to match. See {@link ResolveTransitionPayrollArgs}.\n * @returns The matching payroll's UUID, or `undefined` when none exists yet.\n * @internal\n */\nexport function useResolveTransitionPayroll({\n companyId,\n startDate,\n endDate,\n payScheduleUuid,\n}: ResolveTransitionPayrollArgs): string | undefined {\n const { data: payrollsData } = usePayrollsListSuspense({\n companyId,\n processingStatuses: [ProcessingStatuses.Unprocessed],\n endDate: getFutureEndDate(),\n payrollTypes: [\n QueryParamPayrollTypes.Regular,\n QueryParamPayrollTypes.OffCycle,\n QueryParamPayrollTypes.External,\n ],\n })\n\n const match = payrollsData.payrollList?.find(payroll => {\n const period = payroll.payPeriod\n return (\n payroll.offCycleReason === TRANSITION_OFF_CYCLE_REASON &&\n period?.startDate === startDate &&\n period.endDate === endDate &&\n period.payScheduleUuid === payScheduleUuid\n )\n })\n\n return match?.payrollUuid\n}\n"],"names":["FUTURE_LOOKAHEAD_DAYS","TRANSITION_OFF_CYCLE_REASON","getFutureEndDate","date","useResolveTransitionPayroll","companyId","startDate","endDate","payScheduleUuid","payrollsData","usePayrollsListSuspense","ProcessingStatuses","QueryParamPayrollTypes","payroll","period"],"mappings":";;AAMA,MAAMA,IAAwB,IAExBC,IAA8B;AAEpC,SAASC,IAA2B;AAClC,QAAMC,wBAAW,KAAA;AACjB,SAAAA,EAAK,QAAQA,EAAK,QAAA,IAAYH,CAAqB,GAC5CG,EAAK,YAAA,EAAc,MAAM,GAAG,EAAE,CAAC;AACxC;AA8BO,SAASC,EAA4B;AAAA,EAC1C,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,iBAAAC;AACF,GAAqD;AACnD,QAAM,EAAE,MAAMC,EAAA,IAAiBC,EAAwB;AAAA,IACrD,WAAAL;AAAA,IACA,oBAAoB,CAACM,EAAmB,WAAW;AAAA,IACnD,SAAST,EAAA;AAAA,IACT,cAAc;AAAA,MACZU,EAAuB;AAAA,MACvBA,EAAuB;AAAA,MACvBA,EAAuB;AAAA,IAAA;AAAA,EACzB,CACD;AAYD,SAVcH,EAAa,aAAa,KAAK,CAAAI,MAAW;AACtD,UAAMC,IAASD,EAAQ;AACvB,WACEA,EAAQ,mBAAmBZ,KAC3Ba,GAAQ,cAAcR,KACtBQ,EAAO,YAAYP,KACnBO,EAAO,oBAAoBN;AAAA,EAE/B,CAAC,GAEa;AAChB;"}
1
+ {"version":3,"file":"useResolveTransitionPayroll.js","sources":["../../../../src/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.ts"],"sourcesContent":["import { usePayrollsListSuspense } from '@gusto/embedded-api/react-query/payrollsList'\nimport {\n ProcessingStatuses,\n QueryParamPayrollTypes,\n} from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\n\nconst FUTURE_LOOKAHEAD_DAYS = 28\n\nconst TRANSITION_OFF_CYCLE_REASON = 'Transition from old pay schedule'\n\nfunction getFutureEndDate(): string {\n const date = new Date()\n date.setDate(date.getDate() + FUTURE_LOOKAHEAD_DAYS)\n return date.toISOString().split('T')[0]!\n}\n\n/**\n * Arguments describing the transition pay period to resolve.\n *\n * @internal\n */\nexport interface ResolveTransitionPayrollArgs {\n companyId: string\n startDate: string\n endDate: string\n payScheduleUuid: string\n}\n\n/**\n * Looks up an existing unprocessed transition payroll for the given pay period.\n *\n * @remarks\n * A transition payroll is an unprocessed off-cycle payroll whose `offCycleReason` is\n * `\"Transition from old pay schedule\"` and whose pay period matches the supplied\n * `startDate`, `endDate`, and `payScheduleUuid`. When the company changed its pay schedule\n * the platform creates exactly one such payroll for the coverage gap; this hook finds it so\n * the caller can resume it instead of creating a duplicate.\n *\n * Backed by a suspense query, so callers must render it under a suspense boundary.\n *\n * @param args - The pay period to match. See {@link ResolveTransitionPayrollArgs}.\n * @returns The matching payroll's UUID, or `undefined` when none exists yet.\n * @internal\n */\nexport function useResolveTransitionPayroll({\n companyId,\n startDate,\n endDate,\n payScheduleUuid,\n}: ResolveTransitionPayrollArgs): string | undefined {\n const { data: payrollsData } = usePayrollsListSuspense({\n companyId,\n processingStatuses: [ProcessingStatuses.Unprocessed],\n endDate: getFutureEndDate(),\n payrollTypes: [QueryParamPayrollTypes.Regular, QueryParamPayrollTypes.OffCycle],\n })\n\n const match = payrollsData.payrollList?.find(payroll => {\n const period = payroll.payPeriod\n return (\n payroll.offCycleReason === TRANSITION_OFF_CYCLE_REASON &&\n period?.startDate === startDate &&\n period.endDate === endDate &&\n period.payScheduleUuid === payScheduleUuid\n )\n })\n\n return match?.payrollUuid\n}\n"],"names":["FUTURE_LOOKAHEAD_DAYS","TRANSITION_OFF_CYCLE_REASON","getFutureEndDate","date","useResolveTransitionPayroll","companyId","startDate","endDate","payScheduleUuid","payrollsData","usePayrollsListSuspense","ProcessingStatuses","QueryParamPayrollTypes","payroll","period"],"mappings":";;AAMA,MAAMA,IAAwB,IAExBC,IAA8B;AAEpC,SAASC,IAA2B;AAClC,QAAMC,wBAAW,KAAA;AACjB,SAAAA,EAAK,QAAQA,EAAK,QAAA,IAAYH,CAAqB,GAC5CG,EAAK,YAAA,EAAc,MAAM,GAAG,EAAE,CAAC;AACxC;AA8BO,SAASC,EAA4B;AAAA,EAC1C,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,iBAAAC;AACF,GAAqD;AACnD,QAAM,EAAE,MAAMC,EAAA,IAAiBC,EAAwB;AAAA,IACrD,WAAAL;AAAA,IACA,oBAAoB,CAACM,EAAmB,WAAW;AAAA,IACnD,SAAST,EAAA;AAAA,IACT,cAAc,CAACU,EAAuB,SAASA,EAAuB,QAAQ;AAAA,EAAA,CAC/E;AAYD,SAVcH,EAAa,aAAa,KAAK,CAAAI,MAAW;AACtD,UAAMC,IAASD,EAAQ;AACvB,WACEA,EAAQ,mBAAmBZ,KAC3Ba,GAAQ,cAAcR,KACtBQ,EAAO,YAAYP,KACnBO,EAAO,oBAAoBN;AAAA,EAE/B,CAAC,GAEa;AAChB;"}
@@ -11,10 +11,12 @@ import "@gusto/embedded-api/models/errors/apierror";
11
11
  import "@gusto/embedded-api/models/errors/gustoembeddederror";
12
12
  import "@gusto/embedded-api/models/errors/sdkvalidationerror";
13
13
  import "@gusto/embedded-api/models/errors/httpclienterrors";
14
+ import "dompurify";
15
+ import "../../contexts/LocaleProvider/useLocale.js";
14
16
  import "../../shared/constants.js";
15
17
  import "../../contexts/ComponentAdapter/useComponentContext.js";
16
18
  import { retryAsync as T } from "../../helpers/retryAsync.js";
17
- const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.category === "invalid_operation") : !1, W = ({
19
+ const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.category === "invalid_operation") : !1, $ = ({
18
20
  companyId: e,
19
21
  payrollId: r,
20
22
  employeeUuids: a,
@@ -74,6 +76,6 @@ const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.catego
74
76
  };
75
77
  };
76
78
  export {
77
- W as usePreparedPayrollData
79
+ $ as usePreparedPayrollData
78
80
  };
79
81
  //# sourceMappingURL=usePreparedPayrollData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePreparedPayrollData.js","sources":["../../../src/components/Payroll/usePreparedPayrollData.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useBase } from '../Base'\nimport { retryAsync } from '@/helpers/retryAsync'\n\ninterface UsePreparedPayrollDataParams {\n companyId: string\n payrollId: string\n employeeUuids?: string[]\n sortBy?: string\n onDataReady?: (preparedPayroll: PayrollPrepared) => void\n /**\n * When true, prepare is called without a roster. A transition payroll's roster is fixed by the\n * pay-schedule transition, so the API rejects any `employeeUuids` sent to prepare.\n */\n isTransitionPayroll?: boolean\n}\n\ninterface UsePreparedPayrollDataReturn {\n handlePreparePayroll: () => Promise<void>\n preparedPayroll: PayrollPrepared | undefined\n paySchedule: PayScheduleShow | undefined\n isLoading: boolean\n isPaginating: boolean\n hasInitialData: boolean\n}\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/**\n * Wraps the prepare-payroll mutation and pay-schedule fetch, retrying while the payroll is still being processed.\n *\n * @remarks\n * Fires the prepare call once on mount, then exposes `handlePreparePayroll` for callers that need to re-prepare\n * (e.g. after sort or pagination changes). Distinguishes initial loading from subsequent pagination via\n * `isLoading` and `isPaginating`, and surfaces the pay schedule for the prepared payroll's pay period.\n *\n * @param params - The company and payroll identifiers, plus optional employee filter, sort, and ready callback.\n * @returns The prepared payroll, its pay schedule, loading flags, and a `handlePreparePayroll` callback to re-run.\n * @internal\n */\nexport const usePreparedPayrollData = ({\n companyId,\n payrollId,\n employeeUuids,\n sortBy,\n onDataReady,\n isTransitionPayroll = false,\n}: UsePreparedPayrollDataParams): UsePreparedPayrollDataReturn => {\n const { mutateAsync: preparePayroll, isPending: isPreparePayrollPending } =\n usePayrollsPrepareMutation()\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const hasInitialDataRef = useRef(false)\n const hasFiredRef = useRef(false)\n const { baseSubmitHandler } = useBase()\n\n const employeeUuidsKey = useMemo(() => employeeUuids?.join(',') ?? '', [employeeUuids])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid,\n },\n )\n\n const executePrepare = useCallback(async () => {\n const result = await preparePayroll({\n request: {\n companyId,\n payrollId,\n sortBy,\n requestBody: {\n employeeUuids: isTransitionPayroll ? undefined : employeeUuids,\n },\n },\n })\n setPreparedPayroll(result.payrollPrepared)\n if (result.payrollPrepared) {\n hasInitialDataRef.current = true\n onDataReady?.(result.payrollPrepared)\n }\n }, [\n companyId,\n payrollId,\n preparePayroll,\n employeeUuidsKey,\n sortBy,\n onDataReady,\n isTransitionPayroll,\n ])\n\n const handlePreparePayroll = useCallback(async () => {\n await baseSubmitHandler(null, () =>\n retryAsync(executePrepare, {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n }),\n )\n }, [baseSubmitHandler, executePrepare])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void handlePreparePayroll()\n }, [handlePreparePayroll])\n\n const isInitialLoading = isPreparePayrollPending && !hasInitialDataRef.current\n const isPaginating = isPreparePayrollPending && hasInitialDataRef.current\n const isLoading = isInitialLoading || isPayScheduleLoading\n\n return {\n handlePreparePayroll,\n preparedPayroll,\n paySchedule: payScheduleData?.payScheduleShow,\n isLoading,\n isPaginating,\n hasInitialData: hasInitialDataRef.current,\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","e","usePreparedPayrollData","companyId","payrollId","employeeUuids","sortBy","onDataReady","isTransitionPayroll","preparePayroll","isPreparePayrollPending","usePayrollsPrepareMutation","preparedPayroll","setPreparedPayroll","useState","hasInitialDataRef","useRef","hasFiredRef","baseSubmitHandler","useBase","employeeUuidsKey","useMemo","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","executePrepare","useCallback","result","handlePreparePayroll","retryAsync","useEffect","isInitialLoading","isPaginating","isLoading"],"mappings":";;;;;;;;;;;;;;;;AA+BA,MAAMA,IAAuB,GACvBC,IAAyB,MAEzBC,IAA+B,CAACC,MAC9BA,aAAiBC,IAChBD,EAAM,OAAO,KAAK,CAAAE,MAAKA,EAAE,aAAa,mBAAmB,IADP,IAgB9CC,IAAyB,CAAC;AAAA,EACrC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,qBAAAC,IAAsB;AACxB,MAAkE;AAChE,QAAM,EAAE,aAAaC,GAAgB,WAAWC,EAAA,IAC9CC,EAAA,GACI,CAACC,GAAiBC,CAAkB,IAAIC,EAAA,GACxCC,IAAoBC,EAAO,EAAK,GAChCC,IAAcD,EAAO,EAAK,GAC1B,EAAE,mBAAAE,EAAA,IAAsBC,EAAA,GAExBC,IAAmBC,EAAQ,MAAMhB,GAAe,KAAK,GAAG,KAAK,IAAI,CAACA,CAAa,CAAC,GAEhF,EAAE,MAAMiB,GAAiB,WAAWC,MAAyBC;AAAA,IACjE;AAAA,MACE,WAAArB;AAAA,MACA,eAAeS,GAAiB,WAAW,mBAAmB;AAAA,IAAA;AAAA,IAEhE;AAAA,MACE,SAAS,CAAC,CAACA,GAAiB,WAAW;AAAA,IAAA;AAAA,EACzC,GAGIa,IAAiBC,EAAY,YAAY;AAC7C,UAAMC,IAAS,MAAMlB,EAAe;AAAA,MAClC,SAAS;AAAA,QACP,WAAAN;AAAA,QACA,WAAAC;AAAA,QACA,QAAAE;AAAA,QACA,aAAa;AAAA,UACX,eAAeE,IAAsB,SAAYH;AAAA,QAAA;AAAA,MACnD;AAAA,IACF,CACD;AACD,IAAAQ,EAAmBc,EAAO,eAAe,GACrCA,EAAO,oBACTZ,EAAkB,UAAU,IAC5BR,IAAcoB,EAAO,eAAe;AAAA,EAExC,GAAG;AAAA,IACDxB;AAAA,IACAC;AAAA,IACAK;AAAA,IACAW;AAAA,IACAd;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,CACD,GAEKoB,IAAuBF,EAAY,YAAY;AACnD,UAAMR;AAAA,MAAkB;AAAA,MAAM,MAC5BW,EAAWJ,GAAgB;AAAA,QACzB,aAAa7B;AAAA,QACb,SAASC;AAAA,QACT,aAAaC;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL,GAAG,CAACoB,GAAmBO,CAAc,CAAC;AAEtC,EAAAK,EAAU,MAAM;AACd,IAAIb,EAAY,YAChBA,EAAY,UAAU,IACjBW,EAAA;AAAA,EACP,GAAG,CAACA,CAAoB,CAAC;AAEzB,QAAMG,IAAmBrB,KAA2B,CAACK,EAAkB,SACjEiB,IAAetB,KAA2BK,EAAkB,SAC5DkB,IAAYF,KAAoBR;AAEtC,SAAO;AAAA,IACL,sBAAAK;AAAA,IACA,iBAAAhB;AAAA,IACA,aAAaU,GAAiB;AAAA,IAC9B,WAAAW;AAAA,IACA,cAAAD;AAAA,IACA,gBAAgBjB,EAAkB;AAAA,EAAA;AAEtC;"}
1
+ {"version":3,"file":"usePreparedPayrollData.js","sources":["../../../src/components/Payroll/usePreparedPayrollData.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useBase } from '../Base'\nimport { retryAsync } from '@/helpers/retryAsync'\n\ninterface UsePreparedPayrollDataParams {\n companyId: string\n payrollId: string\n employeeUuids?: string[]\n sortBy?: string\n onDataReady?: (preparedPayroll: PayrollPrepared) => void\n /**\n * When true, prepare is called without a roster. A transition payroll's roster is fixed by the\n * pay-schedule transition, so the API rejects any `employeeUuids` sent to prepare.\n */\n isTransitionPayroll?: boolean\n}\n\ninterface UsePreparedPayrollDataReturn {\n handlePreparePayroll: () => Promise<void>\n preparedPayroll: PayrollPrepared | undefined\n paySchedule: PayScheduleShow | undefined\n isLoading: boolean\n isPaginating: boolean\n hasInitialData: boolean\n}\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/**\n * Wraps the prepare-payroll mutation and pay-schedule fetch, retrying while the payroll is still being processed.\n *\n * @remarks\n * Fires the prepare call once on mount, then exposes `handlePreparePayroll` for callers that need to re-prepare\n * (e.g. after sort or pagination changes). Distinguishes initial loading from subsequent pagination via\n * `isLoading` and `isPaginating`, and surfaces the pay schedule for the prepared payroll's pay period.\n *\n * @param params - The company and payroll identifiers, plus optional employee filter, sort, and ready callback.\n * @returns The prepared payroll, its pay schedule, loading flags, and a `handlePreparePayroll` callback to re-run.\n * @internal\n */\nexport const usePreparedPayrollData = ({\n companyId,\n payrollId,\n employeeUuids,\n sortBy,\n onDataReady,\n isTransitionPayroll = false,\n}: UsePreparedPayrollDataParams): UsePreparedPayrollDataReturn => {\n const { mutateAsync: preparePayroll, isPending: isPreparePayrollPending } =\n usePayrollsPrepareMutation()\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const hasInitialDataRef = useRef(false)\n const hasFiredRef = useRef(false)\n const { baseSubmitHandler } = useBase()\n\n const employeeUuidsKey = useMemo(() => employeeUuids?.join(',') ?? '', [employeeUuids])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid,\n },\n )\n\n const executePrepare = useCallback(async () => {\n const result = await preparePayroll({\n request: {\n companyId,\n payrollId,\n sortBy,\n requestBody: {\n employeeUuids: isTransitionPayroll ? undefined : employeeUuids,\n },\n },\n })\n setPreparedPayroll(result.payrollPrepared)\n if (result.payrollPrepared) {\n hasInitialDataRef.current = true\n onDataReady?.(result.payrollPrepared)\n }\n }, [\n companyId,\n payrollId,\n preparePayroll,\n employeeUuidsKey,\n sortBy,\n onDataReady,\n isTransitionPayroll,\n ])\n\n const handlePreparePayroll = useCallback(async () => {\n await baseSubmitHandler(null, () =>\n retryAsync(executePrepare, {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n }),\n )\n }, [baseSubmitHandler, executePrepare])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void handlePreparePayroll()\n }, [handlePreparePayroll])\n\n const isInitialLoading = isPreparePayrollPending && !hasInitialDataRef.current\n const isPaginating = isPreparePayrollPending && hasInitialDataRef.current\n const isLoading = isInitialLoading || isPayScheduleLoading\n\n return {\n handlePreparePayroll,\n preparedPayroll,\n paySchedule: payScheduleData?.payScheduleShow,\n isLoading,\n isPaginating,\n hasInitialData: hasInitialDataRef.current,\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","e","usePreparedPayrollData","companyId","payrollId","employeeUuids","sortBy","onDataReady","isTransitionPayroll","preparePayroll","isPreparePayrollPending","usePayrollsPrepareMutation","preparedPayroll","setPreparedPayroll","useState","hasInitialDataRef","useRef","hasFiredRef","baseSubmitHandler","useBase","employeeUuidsKey","useMemo","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","executePrepare","useCallback","result","handlePreparePayroll","retryAsync","useEffect","isInitialLoading","isPaginating","isLoading"],"mappings":";;;;;;;;;;;;;;;;;;AA+BA,MAAMA,IAAuB,GACvBC,IAAyB,MAEzBC,IAA+B,CAACC,MAC9BA,aAAiBC,IAChBD,EAAM,OAAO,KAAK,CAAAE,MAAKA,EAAE,aAAa,mBAAmB,IADP,IAgB9CC,IAAyB,CAAC;AAAA,EACrC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,qBAAAC,IAAsB;AACxB,MAAkE;AAChE,QAAM,EAAE,aAAaC,GAAgB,WAAWC,EAAA,IAC9CC,EAAA,GACI,CAACC,GAAiBC,CAAkB,IAAIC,EAAA,GACxCC,IAAoBC,EAAO,EAAK,GAChCC,IAAcD,EAAO,EAAK,GAC1B,EAAE,mBAAAE,EAAA,IAAsBC,EAAA,GAExBC,IAAmBC,EAAQ,MAAMhB,GAAe,KAAK,GAAG,KAAK,IAAI,CAACA,CAAa,CAAC,GAEhF,EAAE,MAAMiB,GAAiB,WAAWC,MAAyBC;AAAA,IACjE;AAAA,MACE,WAAArB;AAAA,MACA,eAAeS,GAAiB,WAAW,mBAAmB;AAAA,IAAA;AAAA,IAEhE;AAAA,MACE,SAAS,CAAC,CAACA,GAAiB,WAAW;AAAA,IAAA;AAAA,EACzC,GAGIa,IAAiBC,EAAY,YAAY;AAC7C,UAAMC,IAAS,MAAMlB,EAAe;AAAA,MAClC,SAAS;AAAA,QACP,WAAAN;AAAA,QACA,WAAAC;AAAA,QACA,QAAAE;AAAA,QACA,aAAa;AAAA,UACX,eAAeE,IAAsB,SAAYH;AAAA,QAAA;AAAA,MACnD;AAAA,IACF,CACD;AACD,IAAAQ,EAAmBc,EAAO,eAAe,GACrCA,EAAO,oBACTZ,EAAkB,UAAU,IAC5BR,IAAcoB,EAAO,eAAe;AAAA,EAExC,GAAG;AAAA,IACDxB;AAAA,IACAC;AAAA,IACAK;AAAA,IACAW;AAAA,IACAd;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,CACD,GAEKoB,IAAuBF,EAAY,YAAY;AACnD,UAAMR;AAAA,MAAkB;AAAA,MAAM,MAC5BW,EAAWJ,GAAgB;AAAA,QACzB,aAAa7B;AAAA,QACb,SAASC;AAAA,QACT,aAAaC;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL,GAAG,CAACoB,GAAmBO,CAAc,CAAC;AAEtC,EAAAK,EAAU,MAAM;AACd,IAAIb,EAAY,YAChBA,EAAY,UAAU,IACjBW,EAAA;AAAA,EACP,GAAG,CAACA,CAAoB,CAAC;AAEzB,QAAMG,IAAmBrB,KAA2B,CAACK,EAAkB,SACjEiB,IAAetB,KAA2BK,EAAkB,SAC5DkB,IAAYF,KAAoBR;AAEtC,SAAO;AAAA,IACL,sBAAAK;AAAA,IACA,iBAAAhB;AAAA,IACA,aAAaU,GAAiB;AAAA,IAC9B,WAAAW;AAAA,IACA,cAAAD;AAAA,IACA,gBAAgBjB,EAAkB;AAAA,EAAA;AAEtC;"}