@gusto/embedded-react-sdk 0.12.3 → 0.13.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 (182) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/assets/icons/spinner_small.svg.js +10 -0
  3. package/dist/assets/icons/spinner_small.svg.js.map +1 -0
  4. package/dist/components/Base/Base.js +27 -26
  5. package/dist/components/Base/Base.js.map +1 -1
  6. package/dist/components/Base/useBase.d.ts +2 -0
  7. package/dist/components/Base/useBase.js.map +1 -1
  8. package/dist/components/Common/DataView/DataView.d.ts +2 -1
  9. package/dist/components/Common/DataView/DataView.js +20 -19
  10. package/dist/components/Common/DataView/DataView.js.map +1 -1
  11. package/dist/components/Common/DataView/useDataView.d.ts +3 -1
  12. package/dist/components/Common/DataView/useDataView.js +13 -11
  13. package/dist/components/Common/DataView/useDataView.js.map +1 -1
  14. package/dist/components/Common/EmptyData/EmptyData.module.scss.js +1 -1
  15. package/dist/components/Common/InlineSpinner/InlineSpinner.d.ts +6 -0
  16. package/dist/components/Common/InlineSpinner/InlineSpinner.js +25 -0
  17. package/dist/components/Common/InlineSpinner/InlineSpinner.js.map +1 -0
  18. package/dist/components/Common/InlineSpinner/InlineSpinner.module.scss.js +10 -0
  19. package/dist/components/Common/InlineSpinner/InlineSpinner.module.scss.js.map +1 -0
  20. package/dist/components/Common/InlineSpinner/index.d.ts +2 -0
  21. package/dist/components/Common/PaginationControl/PaginationControl.js +31 -28
  22. package/dist/components/Common/PaginationControl/PaginationControl.js.map +1 -1
  23. package/dist/components/Common/PaginationControl/PaginationControlTypes.d.ts +1 -0
  24. package/dist/components/Common/SignatureForm/SignatureForm.js +3 -2
  25. package/dist/components/Common/SignatureForm/SignatureForm.js.map +1 -1
  26. package/dist/components/Common/SignatureForm/SignatureFormActions.js +7 -6
  27. package/dist/components/Common/SignatureForm/SignatureFormActions.js.map +1 -1
  28. package/dist/components/Common/SignatureForm/SignatureFormFields.js +8 -7
  29. package/dist/components/Common/SignatureForm/SignatureFormFields.js.map +1 -1
  30. package/dist/components/Common/UI/Table/Table.module.scss.js +1 -1
  31. package/dist/components/Common/index.d.ts +1 -0
  32. package/dist/components/Company/AssignSignatory/AssignSignatory.js +7 -6
  33. package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
  34. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +3 -2
  35. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  36. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +3 -2
  37. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  38. package/dist/components/Company/AssignSignatory/CreateSignatory/Schema.d.ts +2 -2
  39. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
  40. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  41. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +6 -5
  42. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  43. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +10 -9
  44. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  45. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
  46. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  47. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
  48. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  49. package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
  50. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  51. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +9 -8
  52. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  53. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  54. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  55. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +7 -6
  56. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  57. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
  58. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  59. package/dist/components/Company/FederalTaxes/FederalTaxes.js +13 -12
  60. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  61. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +12 -11
  62. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  63. package/dist/components/Company/Industry/Context.js +7 -6
  64. package/dist/components/Company/Industry/Context.js.map +1 -1
  65. package/dist/components/Company/Locations/LocationForm/Form.js +5 -4
  66. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  67. package/dist/components/Company/Locations/LocationForm/LocationForm.js +10 -9
  68. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  69. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
  70. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  71. package/dist/components/Company/Locations/LocationsList/LocationsList.js +7 -6
  72. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  73. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
  74. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  75. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +3 -2
  76. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  77. package/dist/components/Company/OnboardingOverview/context.js +4 -3
  78. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  79. package/dist/components/Company/PaySchedule/PaySchedule.js +33 -32
  80. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  81. package/dist/components/Company/PaySchedule/_parts/Edit.js +3 -2
  82. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  83. package/dist/components/Company/PaySchedule/usePaySchedule.js +6 -5
  84. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  85. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
  86. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  87. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
  88. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  89. package/dist/components/Contractor/Address/Address.js +4 -3
  90. package/dist/components/Contractor/Address/Address.js.map +1 -1
  91. package/dist/components/Contractor/Address/Form.js +3 -2
  92. package/dist/components/Contractor/Address/Form.js.map +1 -1
  93. package/dist/components/Contractor/Address/useAddress.js +6 -5
  94. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  95. package/dist/components/Contractor/NewHireReport/NewHireReport.js +51 -49
  96. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  97. package/dist/components/Contractor/NewHireReport/types.d.ts +1 -0
  98. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js +19 -12
  99. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js.map +1 -1
  100. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js +6 -5
  101. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  102. package/dist/components/Contractor/PaymentMethod/PaymentMethod.d.ts +4 -4
  103. package/dist/components/Contractor/Profile/useContractorProfile.d.ts +19 -19
  104. package/dist/components/Contractor/Profile/useContractorProfile.js +2 -2
  105. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  106. package/dist/components/Contractor/Submit/Submit.js +24 -24
  107. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  108. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +8 -7
  109. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  110. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  111. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  112. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +10 -9
  113. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  114. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
  115. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  116. package/dist/components/Employee/EmployeeList/EmployeeList.js +75 -62
  117. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  118. package/dist/components/Employee/EmployeeList/List.js +27 -25
  119. package/dist/components/Employee/EmployeeList/List.js.map +1 -1
  120. package/dist/components/Employee/EmployeeList/useEmployeeList.d.ts +1 -0
  121. package/dist/components/Employee/EmployeeList/useEmployeeList.js +4 -3
  122. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  123. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +4 -3
  124. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  125. package/dist/components/Employee/PaymentMethod/BankAccount.d.ts +2 -2
  126. package/dist/components/Employee/PaymentMethod/usePaymentMethod.d.ts +8 -8
  127. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +6 -5
  128. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  129. package/dist/components/Employee/Profile/AdminPersonalDetails.d.ts +2 -2
  130. package/dist/components/Employee/Profile/HomeAddress.js +5 -4
  131. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  132. package/dist/components/Employee/Profile/PersonalDetailsInputs.d.ts +2 -2
  133. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +21 -20
  134. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  135. package/dist/components/Employee/Profile/Profile.js +2 -0
  136. package/dist/components/Employee/Profile/Profile.js.map +1 -1
  137. package/dist/components/Employee/Profile/useProfile.js +4 -3
  138. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  139. package/dist/components/Employee/StateTaxes/useStateTaxes.js +4 -3
  140. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  141. package/dist/components/Employee/Taxes/useTaxes.js +4 -3
  142. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  143. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +4 -2
  144. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +75 -34
  145. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  146. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +10 -5
  147. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +116 -50
  148. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  149. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +6 -5
  150. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  151. package/dist/components/Payroll/PayrollList/PayrollList.d.ts +1 -1
  152. package/dist/components/Payroll/PayrollList/PayrollList.js +24 -11
  153. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  154. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +8 -6
  155. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +34 -25
  156. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  157. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +3 -2
  158. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  159. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.d.ts +2 -1
  160. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js +4 -4
  161. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js.map +1 -1
  162. package/dist/components/Payroll/helpers.d.ts +20 -0
  163. package/dist/components/Payroll/helpers.js +208 -0
  164. package/dist/components/Payroll/helpers.js.map +1 -0
  165. package/dist/components/Payroll/helpers.test.d.ts +1 -0
  166. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +3 -2
  167. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  168. package/dist/helpers/formattedStrings.d.ts +9 -0
  169. package/dist/helpers/formattedStrings.js +55 -16
  170. package/dist/helpers/formattedStrings.js.map +1 -1
  171. package/dist/i18n/I18n.js +11 -11
  172. package/dist/i18n/I18n.js.map +1 -1
  173. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +30 -0
  174. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js.map +1 -0
  175. package/dist/i18n/en/Payroll.PayrollList.json.js +14 -0
  176. package/dist/i18n/en/Payroll.PayrollList.json.js.map +1 -0
  177. package/dist/i18n/en/common.json.d.ts +8 -0
  178. package/dist/i18n/en/common.json.js +15 -13
  179. package/dist/i18n/en/common.json.js.map +1 -1
  180. package/dist/style.css +1 -1
  181. package/dist/types/i18next.d.ts +45 -1
  182. package/package.json +28 -28
@@ -1,41 +1,82 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import { useState as s } from "react";
3
- import { PayrollEditEmployee as d } from "../PayrollEditEmployee/PayrollEditEmployee.js";
4
- import { PayrollConfigurationPresentation as E } from "./PayrollConfigurationPresentation.js";
5
- import { BaseComponent as y } from "../../Base/Base.js";
6
- import { componentEvents as e } from "../../../shared/constants.js";
7
- const u = ({ payrollId: o }) => ({
8
- data: {
9
- employees: [{ employeeId: "cdef" }]
10
- }
11
- }), P = ({ payrollId: o }) => ({ mutate: async () => {
12
- } }), D = ({
13
- onEvent: o,
14
- payrollId: n,
15
- ...i
16
- }) => {
17
- const {
18
- data: { employees: m }
19
- } = u({ payrollId: n }), { mutate: c } = P({ payrollId: n }), [r, l] = s(void 0);
20
- return /* @__PURE__ */ a(y, { ...i, onEvent: o, children: r ? /* @__PURE__ */ a(d, { onEvent: (t, p) => {
21
- t === e.RUN_PAYROLL_EMPLOYEE_SAVED && l(void 0), o(t, p);
22
- }, employeeId: r }) : /* @__PURE__ */ a(
23
- E,
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { useState as m, useEffect as P } from "react";
3
+ import { useEmployeesListSuspense as U } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/employeesList.js";
4
+ import { usePayrollsPrepareMutation as w } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/payrollsPrepare.js";
5
+ import { usePayrollsGetSuspense as Y } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/payrollsGet.js";
6
+ import { usePayrollsCalculateMutation as q } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/payrollsCalculate.js";
7
+ import { usePaySchedulesGet as B } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/paySchedulesGet.js";
8
+ import { PayrollProcessingRequestStatus as d } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/models/components/payrollprocessingrequest.js";
9
+ import { PayrollEditEmployee as M } from "../PayrollEditEmployee/PayrollEditEmployee.js";
10
+ import { PayrollConfigurationPresentation as N } from "./PayrollConfigurationPresentation.js";
11
+ import { BaseComponent as b } from "../../Base/Base.js";
12
+ import { useBase as j } from "../../Base/useBase.js";
13
+ import { componentEvents as s } from "../../../shared/constants.js";
14
+ import { useComponentDictionary as v, useI18n as x } from "../../../i18n/I18n.js";
15
+ function ee(e) {
16
+ return /* @__PURE__ */ r(b, { ...e, children: /* @__PURE__ */ r(G, { ...e, children: e.children }) });
17
+ }
18
+ const G = ({ onEvent: e, companyId: o, payrollId: l, dictionary: f }) => {
19
+ v("Payroll.PayrollConfiguration", f), x("Payroll.PayrollConfiguration");
20
+ const { LoadingIndicator: C } = j(), { data: n } = Y(
24
21
  {
25
- employees: m,
26
- onBack: () => {
27
- o(e.RUN_PAYROLL_BACK);
28
- },
29
- onCalculatePayroll: async () => {
30
- await c(), o(e.RUN_PAYROLL_CALCULATED);
31
- },
32
- onEdit: ({ employeeId: t }) => {
33
- l(t), o(e.RUN_PAYROLL_EMPLOYEE_EDITED, { employeeId: t });
22
+ companyId: o,
23
+ payrollId: l
24
+ },
25
+ { refetchInterval: 5e3 }
26
+ ), { data: E } = U({
27
+ companyId: o
28
+ }), { mutateAsync: u, isPending: h } = w(), { mutateAsync: S } = q(), [a, L] = m(), [c, p] = m(void 0), { data: g } = B(
29
+ {
30
+ companyId: o,
31
+ payScheduleId: a?.payPeriod?.payScheduleUuid || ""
32
+ },
33
+ {
34
+ enabled: !!a?.payPeriod?.payScheduleUuid
35
+ }
36
+ );
37
+ P(() => {
38
+ (async () => {
39
+ const i = await u({
40
+ request: {
41
+ companyId: o,
42
+ payrollId: l
43
+ }
44
+ });
45
+ L(i.payrollPrepared);
46
+ })();
47
+ }, [o, l, u]);
48
+ const R = () => {
49
+ e(s.RUN_PAYROLL_BACK);
50
+ }, A = async () => {
51
+ await S({
52
+ request: {
53
+ companyId: o,
54
+ payrollId: l
34
55
  }
56
+ });
57
+ }, _ = (t) => {
58
+ p(t.uuid), e(s.RUN_PAYROLL_EMPLOYEE_EDITED, { employeeId: t.uuid });
59
+ }, D = (t, i) => {
60
+ t === s.RUN_PAYROLL_EMPLOYEE_SAVED && p(void 0), e(t, i);
61
+ }, O = n.payrollShow?.processingRequest?.status === d.Calculating, y = n.payrollShow?.processingRequest?.status === d.CalculateSuccess;
62
+ return P(() => {
63
+ y && e(s.RUN_PAYROLL_CALCULATED);
64
+ }, [y, e]), h || O ? /* @__PURE__ */ r(C, {}) : c ? /* @__PURE__ */ r(M, { onEvent: D, employeeId: c }) : /* @__PURE__ */ r(
65
+ N,
66
+ {
67
+ onBack: R,
68
+ onCalculatePayroll: A,
69
+ onEdit: _,
70
+ employeeCompensations: a?.employeeCompensations || [],
71
+ employeeDetails: E.showEmployees || [],
72
+ payPeriod: a?.payPeriod,
73
+ paySchedule: g?.payScheduleObject,
74
+ isOffCycle: a?.offCycle
35
75
  }
36
- ) });
76
+ );
37
77
  };
38
78
  export {
39
- D as PayrollConfiguration
79
+ ee as PayrollConfiguration,
80
+ G as Root
40
81
  };
41
82
  //# sourceMappingURL=PayrollConfiguration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { PayrollEditEmployee } from '../PayrollEditEmployee/PayrollEditEmployee'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport type { EventType } from '@/shared/constants'\nimport { componentEvents } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\n\n//TODO: Use Speakeasy type\ninterface PayrollItem {\n payrollId: string\n}\n\n// TODO: Replace this hook with call to Speakeasy instead\nconst usePayrollApi = ({ payrollId }: PayrollItem) => {\n return {\n data: {\n employees: [{ employeeId: 'cdef' }],\n },\n }\n}\n// TODO: Replace this hook with call to Speakeasy instead\nconst useCalculatePayrollApi = ({ payrollId }: PayrollItem) => {\n const mutate = async () => {}\n return { mutate }\n}\n\ninterface PayrollConfigurationProps extends BaseComponentInterface {\n payrollId: string\n}\nexport const PayrollConfiguration = ({\n onEvent,\n payrollId,\n ...baseProps\n}: PayrollConfigurationProps) => {\n const {\n data: { employees },\n } = usePayrollApi({ payrollId })\n const { mutate } = useCalculatePayrollApi({ payrollId })\n const [editedEmployeeId, setEditedEmployeeId] = useState<string | undefined>(undefined)\n const onBack = () => {\n onEvent(componentEvents.RUN_PAYROLL_BACK)\n }\n const onCalculatePayroll = async () => {\n await mutate()\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED)\n }\n const onEdit = ({ employeeId }: { employeeId: string }) => {\n setEditedEmployeeId(employeeId)\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_EDITED, { employeeId })\n }\n\n const wrappedOnEvent: OnEventType<string, unknown> = (event, payload) => {\n if (event === componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED) {\n setEditedEmployeeId(undefined)\n }\n onEvent(event as EventType, payload)\n }\n\n const childComponent = editedEmployeeId ? (\n <PayrollEditEmployee onEvent={wrappedOnEvent} employeeId={editedEmployeeId} />\n ) : (\n <PayrollConfigurationPresentation\n employees={employees}\n onBack={onBack}\n onCalculatePayroll={onCalculatePayroll}\n onEdit={onEdit}\n />\n )\n\n return (\n <BaseComponent {...baseProps} onEvent={onEvent}>\n {childComponent}\n </BaseComponent>\n )\n}\n"],"names":["usePayrollApi","payrollId","useCalculatePayrollApi","PayrollConfiguration","onEvent","baseProps","employees","mutate","editedEmployeeId","setEditedEmployeeId","useState","jsx","BaseComponent","PayrollEditEmployee","event","payload","componentEvents","PayrollConfigurationPresentation","employeeId"],"mappings":";;;;;;AAeA,MAAMA,IAAgB,CAAC,EAAE,WAAAC,SAChB;AAAA,EACL,MAAM;AAAA,IACJ,WAAW,CAAC,EAAE,YAAY,QAAQ;AAAA,EAAA;AACpC,IAIEC,IAAyB,CAAC,EAAE,WAAAD,SAEzB,EAAE,QADM,YAAY;AAAC,EACnB,IAMEE,IAAuB,CAAC;AAAA,EACnC,SAAAC;AAAA,EACA,WAAAH;AAAA,EACA,GAAGI;AACL,MAAiC;AAC/B,QAAM;AAAA,IACJ,MAAM,EAAE,WAAAC,EAAA;AAAA,EAAU,IAChBN,EAAc,EAAE,WAAAC,GAAW,GACzB,EAAE,QAAAM,EAAA,IAAWL,EAAuB,EAAE,WAAAD,GAAW,GACjD,CAACO,GAAkBC,CAAmB,IAAIC,EAA6B,MAAS;AA+BtF,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGP,GAAW,SAAAD,GAC3B,UAbkBI,IACrB,gBAAAG,EAACE,GAAA,EAAoB,SAR8B,CAACC,GAAOC,MAAY;AACvE,IAAID,MAAUE,EAAgB,8BAC5BP,EAAoB,MAAS,GAE/BL,EAAQU,GAAoBC,CAAO;AAAA,EACrC,GAGgD,YAAYP,GAAkB,IAE5E,gBAAAG;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,WAAAX;AAAA,MACA,QAxBW,MAAM;AACnB,QAAAF,EAAQY,EAAgB,gBAAgB;AAAA,MAC1C;AAAA,MAuBI,oBAtBuB,YAAY;AACrC,cAAMT,EAAA,GACNH,EAAQY,EAAgB,sBAAsB;AAAA,MAChD;AAAA,MAoBI,QAnBW,CAAC,EAAE,YAAAE,QAAyC;AACzD,QAAAT,EAAoBS,CAAU,GAC9Bd,EAAQY,EAAgB,6BAA6B,EAAE,YAAAE,EAAA,CAAY;AAAA,MACrE;AAAA,IAgBI;AAAA,EAAA,GAOF;AAEJ;"}
1
+ {"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useState, useEffect } from 'react'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePayrollsCalculateMutation } from '@gusto/embedded-api/react-query/payrollsCalculate'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/payrollprepared'\nimport { PayrollProcessingRequestStatus } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { PayrollEditEmployee } from '../PayrollEditEmployee/PayrollEditEmployee'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport type { EventType } from '@/shared/constants'\nimport { componentEvents } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport { useComponentDictionary, useI18n } from '@/i18n'\n\ninterface PayrollConfigurationProps extends BaseComponentInterface<'Payroll.PayrollConfiguration'> {\n companyId: string\n payrollId: string\n}\n\nexport function PayrollConfiguration(props: PayrollConfigurationProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({ onEvent, companyId, payrollId, dictionary }: PayrollConfigurationProps) => {\n useComponentDictionary('Payroll.PayrollConfiguration', dictionary)\n useI18n('Payroll.PayrollConfiguration')\n\n const { LoadingIndicator } = useBase()\n\n const { data: payrollData } = usePayrollsGetSuspense(\n {\n companyId,\n payrollId,\n },\n { refetchInterval: 5_000 },\n )\n\n const { data: employeeData } = useEmployeesListSuspense({\n companyId,\n })\n\n const { mutateAsync: preparePayroll, isPending: isPreparePayrollPending } =\n usePayrollsPrepareMutation()\n const { mutateAsync: calculatePayroll } = usePayrollsCalculateMutation()\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const [editedEmployeeId, setEditedEmployeeId] = useState<string | undefined>(undefined)\n\n const { data: payScheduleData } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: Boolean(preparedPayroll?.payPeriod?.payScheduleUuid),\n },\n )\n\n useEffect(() => {\n const handlePreparePayroll = async () => {\n const result = await preparePayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setPreparedPayroll(result.payrollPrepared)\n }\n\n void handlePreparePayroll()\n }, [companyId, payrollId, preparePayroll])\n\n const onBack = () => {\n onEvent(componentEvents.RUN_PAYROLL_BACK)\n }\n const onCalculatePayroll = async () => {\n await calculatePayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n }\n const onEdit = (employee: Employee) => {\n setEditedEmployeeId(employee.uuid)\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_EDITED, { employeeId: employee.uuid })\n }\n\n const wrappedOnEvent: OnEventType<string, unknown> = (event, payload) => {\n if (event === componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED) {\n setEditedEmployeeId(undefined)\n }\n onEvent(event as EventType, payload)\n }\n\n const isCalculating =\n payrollData.payrollShow?.processingRequest?.status ===\n PayrollProcessingRequestStatus.Calculating\n const isCalculated =\n payrollData.payrollShow?.processingRequest?.status ===\n PayrollProcessingRequestStatus.CalculateSuccess\n\n useEffect(() => {\n if (isCalculated) {\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED)\n }\n }, [isCalculated, onEvent])\n\n if (isPreparePayrollPending || isCalculating) {\n return <LoadingIndicator />\n }\n\n return editedEmployeeId ? (\n <PayrollEditEmployee onEvent={wrappedOnEvent} employeeId={editedEmployeeId} />\n ) : (\n <PayrollConfigurationPresentation\n onBack={onBack}\n onCalculatePayroll={onCalculatePayroll}\n onEdit={onEdit}\n employeeCompensations={preparedPayroll?.employeeCompensations || []}\n employeeDetails={employeeData.showEmployees || []}\n payPeriod={preparedPayroll?.payPeriod}\n paySchedule={payScheduleData?.payScheduleObject}\n isOffCycle={preparedPayroll?.offCycle}\n />\n )\n}\n"],"names":["PayrollConfiguration","props","jsx","BaseComponent","Root","onEvent","companyId","payrollId","dictionary","useComponentDictionary","useI18n","LoadingIndicator","useBase","payrollData","usePayrollsGetSuspense","employeeData","useEmployeesListSuspense","preparePayroll","isPreparePayrollPending","usePayrollsPrepareMutation","calculatePayroll","usePayrollsCalculateMutation","preparedPayroll","setPreparedPayroll","useState","editedEmployeeId","setEditedEmployeeId","payScheduleData","usePaySchedulesGet","useEffect","result","onBack","componentEvents","onCalculatePayroll","onEdit","employee","wrappedOnEvent","event","payload","isCalculating","PayrollProcessingRequestStatus","isCalculated","PayrollEditEmployee","PayrollConfigurationPresentation"],"mappings":";;;;;;;;;;;;;;AAwBO,SAASA,GAAqBC,GAA2D;AAC9F,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEO,MAAMG,IAAO,CAAC,EAAE,SAAAC,GAAS,WAAAC,GAAW,WAAAC,GAAW,YAAAC,QAA4C;AAChG,EAAAC,EAAuB,gCAAgCD,CAAU,GACjEE,EAAQ,8BAA8B;AAEtC,QAAM,EAAE,kBAAAC,EAAA,IAAqBC,EAAA,GAEvB,EAAE,MAAMC,EAAA,IAAgBC;AAAA,IAC5B;AAAA,MACE,WAAAR;AAAA,MACA,WAAAC;AAAA,IAAA;AAAA,IAEF,EAAE,iBAAiB,IAAA;AAAA,EAAM,GAGrB,EAAE,MAAMQ,EAAA,IAAiBC,EAAyB;AAAA,IACtD,WAAAV;AAAA,EAAA,CACD,GAEK,EAAE,aAAaW,GAAgB,WAAWC,EAAA,IAC9CC,EAAA,GACI,EAAE,aAAaC,EAAA,IAAqBC,EAAA,GACpC,CAACC,GAAiBC,CAAkB,IAAIC,EAAA,GACxC,CAACC,GAAkBC,CAAmB,IAAIF,EAA6B,MAAS,GAEhF,EAAE,MAAMG,EAAA,IAAoBC;AAAA,IAChC;AAAA,MACE,WAAAtB;AAAA,MACA,eAAegB,GAAiB,WAAW,mBAAmB;AAAA,IAAA;AAAA,IAEhE;AAAA,MACE,SAAS,EAAQA,GAAiB,WAAW;AAAA,IAAe;AAAA,EAC9D;AAGF,EAAAO,EAAU,MAAM;AAWd,KAV6B,YAAY;AACvC,YAAMC,IAAS,MAAMb,EAAe;AAAA,QAClC,SAAS;AAAA,UACP,WAAAX;AAAA,UACA,WAAAC;AAAA,QAAA;AAAA,MACF,CACD;AACD,MAAAgB,EAAmBO,EAAO,eAAe;AAAA,IAC3C,GAEK;AAAA,EACP,GAAG,CAACxB,GAAWC,GAAWU,CAAc,CAAC;AAEzC,QAAMc,IAAS,MAAM;AACnB,IAAA1B,EAAQ2B,EAAgB,gBAAgB;AAAA,EAC1C,GACMC,IAAqB,YAAY;AACrC,UAAMb,EAAiB;AAAA,MACrB,SAAS;AAAA,QACP,WAAAd;AAAA,QACA,WAAAC;AAAA,MAAA;AAAA,IACF,CACD;AAAA,EACH,GACM2B,IAAS,CAACC,MAAuB;AACrC,IAAAT,EAAoBS,EAAS,IAAI,GACjC9B,EAAQ2B,EAAgB,6BAA6B,EAAE,YAAYG,EAAS,MAAM;AAAA,EACpF,GAEMC,IAA+C,CAACC,GAAOC,MAAY;AACvE,IAAID,MAAUL,EAAgB,8BAC5BN,EAAoB,MAAS,GAE/BrB,EAAQgC,GAAoBC,CAAO;AAAA,EACrC,GAEMC,IACJ1B,EAAY,aAAa,mBAAmB,WAC5C2B,EAA+B,aAC3BC,IACJ5B,EAAY,aAAa,mBAAmB,WAC5C2B,EAA+B;AAQjC,SANAX,EAAU,MAAM;AACd,IAAIY,KACFpC,EAAQ2B,EAAgB,sBAAsB;AAAA,EAElD,GAAG,CAACS,GAAcpC,CAAO,CAAC,GAEtBa,KAA2BqB,sBACrB5B,GAAA,EAAiB,IAGpBc,IACL,gBAAAvB,EAACwC,GAAA,EAAoB,SAASN,GAAgB,YAAYX,GAAkB,IAE5E,gBAAAvB;AAAA,IAACyC;AAAA,IAAA;AAAA,MACC,QAAAZ;AAAA,MACA,oBAAAE;AAAA,MACA,QAAAC;AAAA,MACA,uBAAuBZ,GAAiB,yBAAyB,CAAA;AAAA,MACjE,iBAAiBP,EAAa,iBAAiB,CAAA;AAAA,MAC/C,WAAWO,GAAiB;AAAA,MAC5B,aAAaK,GAAiB;AAAA,MAC9B,YAAYL,GAAiB;AAAA,IAAA;AAAA,EAAA;AAGnC;"}
@@ -1,11 +1,16 @@
1
- interface Employee {
2
- employeeId: string;
3
- }
1
+ import { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow';
2
+ import { Employee } from '@gusto/embedded-api/models/components/employee';
3
+ import { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype';
4
+ import { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject';
4
5
  interface PayrollConfigurationPresentationProps {
5
- employees: Employee[];
6
+ employeeCompensations: EmployeeCompensations[];
7
+ employeeDetails: Employee[];
8
+ payPeriod?: PayrollPayPeriodType;
9
+ paySchedule?: PayScheduleObject;
6
10
  onBack: () => void;
7
11
  onCalculatePayroll: () => void;
8
12
  onEdit: (employee: Employee) => void;
13
+ isOffCycle?: boolean;
9
14
  }
10
- export declare const PayrollConfigurationPresentation: ({ employees, onBack, onEdit, onCalculatePayroll, }: PayrollConfigurationPresentationProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const PayrollConfigurationPresentation: ({ employeeCompensations, employeeDetails, payPeriod, paySchedule, onBack, onEdit, onCalculatePayroll, isOffCycle, }: PayrollConfigurationPresentationProps) => import("react/jsx-runtime").JSX.Element;
11
16
  export {};
@@ -1,80 +1,146 @@
1
- import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
- import { Flex as r } from "../../Common/Flex/Flex.js";
1
+ import { jsxs as m, jsx as e } from "react/jsx-runtime";
2
+ import { useTranslation as B } from "react-i18next";
3
+ import { useFormatEmployeePayRate as H, getRegularHours as L, formatHoursDisplay as C, getTotalPtoHours as M, getAdditionalEarnings as v, getReimbursements as R, calculateGrossPay as S } from "../helpers.js";
4
+ import { Flex as p } from "../../Common/Flex/Flex.js";
3
5
  import "classnames";
4
6
  import "../../../shared/constants.js";
5
- import { useComponentContext as m } from "../../../contexts/ComponentAdapter/useComponentContext.js";
6
- import { HamburgerMenu as h } from "../../Common/HamburgerMenu/HamburgerMenu.js";
7
- import p from "../../../assets/icons/pencil.svg.js";
8
- import { DataView as y } from "../../Common/DataView/DataView.js";
9
- const E = ({
10
- employees: a,
11
- onBack: d,
12
- onEdit: c,
13
- onCalculatePayroll: s
7
+ import { useComponentContext as F } from "../../../contexts/ComponentAdapter/useComponentContext.js";
8
+ import { HamburgerMenu as j } from "../../Common/HamburgerMenu/HamburgerMenu.js";
9
+ import G from "../../../assets/icons/pencil.svg.js";
10
+ import { formatNumberAsCurrency as y, firstLastName as _ } from "../../../helpers/formattedStrings.js";
11
+ import { parseDateStringToLocal as w } from "../../../helpers/dateFormatting.js";
12
+ import { useLocale as I } from "../../../contexts/LocaleProvider/useLocale.js";
13
+ import { DataView as O } from "../../Common/DataView/DataView.js";
14
+ const V = ({
15
+ payPeriod: i,
16
+ locale: c,
17
+ t: s
14
18
  }) => {
15
- const { Alert: n, Button: o, Heading: t, Text: l } = m();
16
- return /* @__PURE__ */ i(r, { flexDirection: "column", children: [
17
- /* @__PURE__ */ i(r, { justifyContent: "space-between", children: [
18
- /* @__PURE__ */ e(t, { as: "h1", children: "Run payroll for Jul 5 - Jul 18, 2025" }),
19
- /* @__PURE__ */ e(o, { title: "Calculate payroll", onClick: s, children: "Calculate payroll" })
19
+ if (i?.startDate && i.endDate) {
20
+ const d = w(i.startDate), u = w(i.endDate);
21
+ if (d && u) {
22
+ const h = d.toLocaleDateString(c, {
23
+ month: "long",
24
+ day: "numeric"
25
+ }), g = u.toLocaleDateString(c, {
26
+ month: "short",
27
+ day: "numeric",
28
+ year: "numeric"
29
+ });
30
+ return s("pageTitle", { startDate: h, endDate: g });
31
+ }
32
+ }
33
+ return s("pageTitle", { startDate: "", endDate: "" });
34
+ }, ne = ({
35
+ employeeCompensations: i,
36
+ employeeDetails: c,
37
+ payPeriod: s,
38
+ paySchedule: d,
39
+ onBack: u,
40
+ onEdit: h,
41
+ onCalculatePayroll: g,
42
+ isOffCycle: P = !1
43
+ }) => {
44
+ const { Alert: f, Button: b, Heading: D, Text: l, Badge: T } = F(), { t: n } = B("Payroll.PayrollConfiguration"), { locale: x } = I(), E = H(), o = new Map(c.map((t) => [t.uuid, t])), N = (t) => {
45
+ const r = o.get(t);
46
+ return r ? _({ first_name: r.firstName, last_name: r.lastName }) : null;
47
+ };
48
+ return /* @__PURE__ */ m(p, { flexDirection: "column", gap: 16, children: [
49
+ /* @__PURE__ */ m(p, { justifyContent: "space-between", alignItems: "center", children: [
50
+ /* @__PURE__ */ e(D, { as: "h1", children: V({ payPeriod: s, locale: x, t: n }) }),
51
+ /* @__PURE__ */ e(b, { title: n("calculatePayrollTitle"), onClick: g, children: n("calculatePayroll") })
20
52
  ] }),
21
- /* @__PURE__ */ e(l, { children: "Regular payroll" }),
22
- /* @__PURE__ */ i(r, { flexDirection: "column", alignItems: "stretch", children: [
23
- /* @__PURE__ */ e(
24
- n,
25
- {
26
- label: "To pay your employees with direct deposit on Fri, Jul 25, you'll need to run payroll by 7:00 PM EDT on Wed, Jul 23",
27
- status: "info",
28
- children: "If you miss this deadline, your employees' direct deposit will be delayed."
29
- }
30
- ),
31
- /* @__PURE__ */ e(n, { label: "2 employees will be skipped this payroll", status: "warning", children: /* @__PURE__ */ i("ul", { children: [
32
- /* @__PURE__ */ e("li", { children: "John Smith - Employee address not verified" }),
33
- /* @__PURE__ */ e("li", { children: "Jensen Cooper - Employee address not verified" })
53
+ /* @__PURE__ */ e(l, { children: n("regularPayroll") }),
54
+ /* @__PURE__ */ m(p, { flexDirection: "column", gap: 16, children: [
55
+ /* @__PURE__ */ e(f, { label: "Payroll Deadline", status: "info", children: "To pay your employees with direct deposit on the check date, you'll need to run payroll by the deadline." }),
56
+ /* @__PURE__ */ e(f, { label: "Skipped Employees", status: "warning", children: /* @__PURE__ */ m("ul", { children: [
57
+ /* @__PURE__ */ e("li", { children: "Employee address not verified" }),
58
+ /* @__PURE__ */ e("li", { children: "Employee address not verified" })
34
59
  ] }) })
35
60
  ] }),
36
- /* @__PURE__ */ e(t, { as: "h3", children: "Hours and additional earnings" }),
37
- /* @__PURE__ */ e(l, { children: "Review and update..." }),
61
+ /* @__PURE__ */ e(D, { as: "h3", children: n("hoursAndEarningsTitle") }),
62
+ /* @__PURE__ */ e(l, { children: n("hoursAndEarningsDescription") }),
38
63
  /* @__PURE__ */ e(
39
- y,
64
+ O,
40
65
  {
41
- label: "Configuration",
66
+ label: n("employeeCompensationsTitle"),
42
67
  columns: [
43
68
  {
44
- title: "Employees",
45
- render: () => /* @__PURE__ */ i(r, { flexDirection: "column", children: [
46
- /* @__PURE__ */ e(l, { children: "John Smith" }),
47
- /* @__PURE__ */ e(l, { children: "$22.00/hr" })
48
- ] })
69
+ title: /* @__PURE__ */ e(l, { weight: "semibold", children: n("tableColumns.employees") }),
70
+ render: (t) => {
71
+ const r = o.get(t.employeeUuid || ""), a = E(r);
72
+ return /* @__PURE__ */ m(p, { flexDirection: "column", gap: 8, children: [
73
+ /* @__PURE__ */ e(l, { weight: "semibold", children: N(t.employeeUuid || "") }),
74
+ a && /* @__PURE__ */ e(l, { variant: "supporting", children: a }),
75
+ t.excluded && /* @__PURE__ */ e(T, { status: "warning", children: n("skippedBadge") })
76
+ ] });
77
+ }
78
+ },
79
+ {
80
+ title: /* @__PURE__ */ e(l, { weight: "semibold", children: n("tableColumns.hours") }),
81
+ render: (t) => {
82
+ const r = L(t);
83
+ return /* @__PURE__ */ e(l, { children: C(r) });
84
+ }
85
+ },
86
+ {
87
+ title: /* @__PURE__ */ e(l, { weight: "semibold", children: n("tableColumns.timeOff") }),
88
+ render: (t) => {
89
+ const r = M(t);
90
+ return /* @__PURE__ */ e(l, { children: C(r) });
91
+ }
92
+ },
93
+ {
94
+ title: /* @__PURE__ */ e(l, { weight: "semibold", children: n("tableColumns.additionalEarnings") }),
95
+ render: (t) => {
96
+ const r = v(t);
97
+ return /* @__PURE__ */ e(l, { children: y(r) });
98
+ }
99
+ },
100
+ {
101
+ title: /* @__PURE__ */ e(l, { weight: "semibold", children: n("tableColumns.reimbursements") }),
102
+ render: (t) => {
103
+ const r = R(t);
104
+ return /* @__PURE__ */ e(l, { children: y(r) });
105
+ }
49
106
  },
50
107
  {
51
- title: "Hours",
52
- render: () => /* @__PURE__ */ e(l, { children: "40" })
108
+ title: /* @__PURE__ */ e(l, { weight: "semibold", children: n("tableColumns.totalPay") }),
109
+ render: (t) => {
110
+ const r = o.get(t.employeeUuid || ""), a = r ? S(t, r, s?.startDate, d, P) : 0;
111
+ return /* @__PURE__ */ e(l, { children: y(a) });
112
+ }
53
113
  }
54
114
  ],
55
- data: a,
56
- itemMenu: ({ employeeId: u }) => /* @__PURE__ */ e(
57
- h,
115
+ data: i.filter((t) => {
116
+ const r = t.employeeUuid;
117
+ return r ? o.has(r) : !1;
118
+ }).sort((t, r) => {
119
+ const a = o.get(t.employeeUuid || ""), k = o.get(r.employeeUuid || ""), U = a?.lastName || "", A = k?.lastName || "";
120
+ return U.localeCompare(A);
121
+ }),
122
+ itemMenu: (t) => /* @__PURE__ */ e(
123
+ j,
58
124
  {
59
125
  items: [
60
126
  {
61
- label: "Edit",
62
- icon: /* @__PURE__ */ e(p, { "aria-hidden": !0 }),
127
+ label: n("editMenu.edit"),
128
+ icon: /* @__PURE__ */ e(G, { "aria-hidden": !0 }),
63
129
  onClick: () => {
64
- c({ employeeId: u });
130
+ const r = o.get(t.employeeUuid || "");
131
+ r && h(r);
65
132
  }
66
133
  }
67
134
  ],
68
- triggerLabel: "Edit",
69
- isLoading: !1
135
+ triggerLabel: n("editMenu.edit")
70
136
  }
71
137
  )
72
138
  }
73
139
  ),
74
- /* @__PURE__ */ e(o, { title: "Back", onClick: d, children: "Back" })
140
+ /* @__PURE__ */ e(b, { title: n("backButtonTitle"), onClick: u, variant: "secondary", children: n("backButton") })
75
141
  ] });
76
142
  };
77
143
  export {
78
- E as PayrollConfigurationPresentation
144
+ ne as PayrollConfigurationPresentation
79
145
  };
80
146
  //# sourceMappingURL=PayrollConfigurationPresentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import { DataView, Flex } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\n\n//TODO: Use Speakeasy type\ninterface Employee {\n employeeId: string\n}\n\ninterface PayrollConfigurationPresentationProps {\n employees: Employee[]\n onBack: () => void\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n}\n\nexport const PayrollConfigurationPresentation = ({\n employees,\n onBack,\n onEdit,\n onCalculatePayroll,\n}: PayrollConfigurationPresentationProps) => {\n const { Alert, Button, Heading, Text } = useComponentContext()\n\n return (\n <Flex flexDirection=\"column\">\n <Flex justifyContent=\"space-between\">\n <Heading as=\"h1\">Run payroll for Jul 5 - Jul 18, 2025</Heading>\n <Button title=\"Calculate payroll\" onClick={onCalculatePayroll}>\n Calculate payroll\n </Button>\n </Flex>\n <Text>Regular payroll</Text>\n <Flex flexDirection=\"column\" alignItems=\"stretch\">\n <Alert\n label=\"To pay your employees with direct deposit on Fri, Jul 25, you'll need to run payroll by 7:00 PM EDT on Wed, Jul 23\"\n status=\"info\"\n >\n {\"If you miss this deadline, your employees' direct deposit will be delayed.\"}\n </Alert>\n <Alert label=\"2 employees will be skipped this payroll\" status=\"warning\">\n <ul>\n <li>John Smith - Employee address not verified</li>\n <li>Jensen Cooper - Employee address not verified</li>\n </ul>\n </Alert>\n </Flex>\n\n <Heading as=\"h3\">Hours and additional earnings</Heading>\n <Text>Review and update...</Text>\n <DataView\n label=\"Configuration\"\n columns={[\n {\n title: 'Employees',\n render: () => (\n <Flex flexDirection=\"column\">\n <Text>John Smith</Text>\n <Text>$22.00/hr</Text>\n </Flex>\n ),\n },\n {\n title: 'Hours',\n render: () => <Text>40</Text>,\n },\n ]}\n data={employees}\n itemMenu={({ employeeId }) => (\n <HamburgerMenu\n items={[\n {\n label: 'Edit',\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n onEdit({ employeeId })\n },\n },\n ]}\n triggerLabel=\"Edit\"\n isLoading={false}\n />\n )}\n />\n <Button title=\"Back\" onClick={onBack}>\n Back\n </Button>\n </Flex>\n )\n}\n"],"names":["PayrollConfigurationPresentation","employees","onBack","onEdit","onCalculatePayroll","Alert","Button","Heading","Text","useComponentContext","jsxs","Flex","jsx","DataView","employeeId","HamburgerMenu","PencilSvg"],"mappings":";;;;;;;;AAiBO,MAAMA,IAAmC,CAAC;AAAA,EAC/C,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,oBAAAC;AACF,MAA6C;AAC3C,QAAM,EAAE,OAAAC,GAAO,QAAAC,GAAQ,SAAAC,GAAS,MAAAC,EAAA,IAASC,EAAA;AAEzC,SACE,gBAAAC,EAACC,GAAA,EAAK,eAAc,UAClB,UAAA;AAAA,IAAA,gBAAAD,EAACC,GAAA,EAAK,gBAAe,iBACnB,UAAA;AAAA,MAAA,gBAAAC,EAACL,GAAA,EAAQ,IAAG,MAAK,UAAA,wCAAoC;AAAA,wBACpDD,GAAA,EAAO,OAAM,qBAAoB,SAASF,GAAoB,UAAA,oBAAA,CAE/D;AAAA,IAAA,GACF;AAAA,IACA,gBAAAQ,EAACJ,KAAK,UAAA,kBAAA,CAAe;AAAA,IACrB,gBAAAE,EAACC,GAAA,EAAK,eAAc,UAAS,YAAW,WACtC,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACP;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO;AAAA,UAEN,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,wBAEFA,GAAA,EAAM,OAAM,4CAA2C,QAAO,WAC7D,4BAAC,MAAA,EACC,UAAA;AAAA,QAAA,gBAAAO,EAAC,QAAG,UAAA,6CAAA,CAA0C;AAAA,QAC9C,gBAAAA,EAAC,QAAG,UAAA,gDAAA,CAA6C;AAAA,MAAA,EAAA,CACnD,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IAEA,gBAAAA,EAACL,GAAA,EAAQ,IAAG,MAAK,UAAA,iCAA6B;AAAA,IAC9C,gBAAAK,EAACJ,KAAK,UAAA,uBAAA,CAAoB;AAAA,IAC1B,gBAAAI;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,SAAS;AAAA,UACP;AAAA,YACE,OAAO;AAAA,YACP,QAAQ,MACN,gBAAAH,EAACC,GAAA,EAAK,eAAc,UAClB,UAAA;AAAA,cAAA,gBAAAC,EAACJ,KAAK,UAAA,aAAA,CAAU;AAAA,cAChB,gBAAAI,EAACJ,KAAK,UAAA,YAAA,CAAS;AAAA,YAAA,EAAA,CACjB;AAAA,UAAA;AAAA,UAGJ;AAAA,YACE,OAAO;AAAA,YACP,QAAQ,MAAM,gBAAAI,EAACJ,GAAA,EAAK,UAAA,KAAA,CAAE;AAAA,UAAA;AAAA,QACxB;AAAA,QAEF,MAAMP;AAAA,QACN,UAAU,CAAC,EAAE,YAAAa,EAAA,MACX,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL;AAAA,gBACE,OAAO;AAAA,gBACP,MAAM,gBAAAH,EAACI,GAAA,EAAU,eAAW,GAAA,CAAC;AAAA,gBAC7B,SAAS,MAAM;AACb,kBAAAb,EAAO,EAAE,YAAAW,GAAY;AAAA,gBACvB;AAAA,cAAA;AAAA,YACF;AAAA,YAEF,cAAa;AAAA,YACb,WAAW;AAAA,UAAA;AAAA,QAAA;AAAA,MACb;AAAA,IAAA;AAAA,sBAGHR,GAAA,EAAO,OAAM,QAAO,SAASJ,GAAQ,UAAA,OAAA,CAEtC;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport { useTranslation } from 'react-i18next'\nimport type { TFunction } from 'i18next'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport { DataView, Flex } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { parseDateStringToLocal } from '@/helpers/dateFormatting'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\n\ninterface PayrollConfigurationPresentationProps {\n employeeCompensations: EmployeeCompensations[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onBack: () => void\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n isOffCycle?: boolean\n}\n\nconst getPayrollConfigurationTitle = ({\n payPeriod,\n locale,\n t,\n}: {\n payPeriod?: PayrollPayPeriodType\n locale: string\n t: TFunction<'Payroll.PayrollConfiguration'>\n}) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n const startDate = parseDateStringToLocal(payPeriod.startDate)\n const endDate = parseDateStringToLocal(payPeriod.endDate)\n\n if (startDate && endDate) {\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n })\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n return t('pageTitle', { startDate: startFormatted, endDate: endFormatted })\n }\n }\n return t('pageTitle', { startDate: '', endDate: '' })\n}\n\nexport const PayrollConfigurationPresentation = ({\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onBack,\n onEdit,\n onCalculatePayroll,\n isOffCycle = false,\n}: PayrollConfigurationPresentationProps) => {\n const { Alert, Button, Heading, Text, Badge } = useComponentContext()\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { locale } = useLocale()\n const formatEmployeePayRate = useFormatEmployeePayRate()\n\n const employeeMap = new Map(employeeDetails.map(employee => [employee.uuid, employee]))\n\n const getEmployeeName = (employeeUuid: string) => {\n const employee = employeeMap.get(employeeUuid)\n return employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : null\n }\n\n return (\n <Flex flexDirection=\"column\" gap={16}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Heading as=\"h1\">{getPayrollConfigurationTitle({ payPeriod, locale, t })}</Heading>\n <Button title={t('calculatePayrollTitle')} onClick={onCalculatePayroll}>\n {t('calculatePayroll')}\n </Button>\n </Flex>\n\n <Text>{t('regularPayroll')}</Text>\n\n <Flex flexDirection=\"column\" gap={16}>\n {/* TODO: Replace with actual deadline information from payroll data */}\n <Alert label=\"Payroll Deadline\" status=\"info\">\n To pay your employees with direct deposit on the check date, you&apos;ll need to run\n payroll by the deadline.\n </Alert>\n\n {/* TODO: Replace with actual skipped employees list from payroll data */}\n <Alert label=\"Skipped Employees\" status=\"warning\">\n <ul>\n <li>Employee address not verified</li>\n <li>Employee address not verified</li>\n </ul>\n </Alert>\n </Flex>\n\n <Heading as=\"h3\">{t('hoursAndEarningsTitle')}</Heading>\n <Text>{t('hoursAndEarningsDescription')}</Text>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: <Text weight=\"semibold\">{t('tableColumns.employees')}</Text>,\n render: (item: EmployeeCompensations) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={8 as const}>\n <Text weight=\"semibold\">{getEmployeeName(item.employeeUuid || '')}</Text>\n {payRateDisplay && <Text variant=\"supporting\">{payRateDisplay}</Text>}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.hours')}</Text>,\n render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n return <Text>{formatHoursDisplay(hours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.timeOff')}</Text>,\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return <Text>{formatHoursDisplay(ptoHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.additionalEarnings')}</Text>,\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return <Text>{formatNumberAsCurrency(earnings)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.reimbursements')}</Text>,\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return <Text>{formatNumberAsCurrency(reimbursements)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.totalPay')}</Text>,\n render: (item: EmployeeCompensations) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(item, employee, payPeriod?.startDate, paySchedule, isOffCycle)\n : 0\n return <Text>{formatNumberAsCurrency(calculatedGrossPay)}</Text>\n },\n },\n ]}\n data={employeeCompensations\n .filter(compensation => {\n const employeeUuid = compensation.employeeUuid\n if (!employeeUuid) return false\n return employeeMap.has(employeeUuid)\n })\n .sort((a, b) => {\n const employeeA = employeeMap.get(a.employeeUuid || '')\n const employeeB = employeeMap.get(b.employeeUuid || '')\n const lastNameA = employeeA?.lastName || ''\n const lastNameB = employeeB?.lastName || ''\n return lastNameA.localeCompare(lastNameB)\n })}\n itemMenu={(item: EmployeeCompensations) => (\n <HamburgerMenu\n items={[\n {\n label: t('editMenu.edit'),\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onEdit(employee)\n }\n },\n },\n ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n />\n\n <Button title={t('backButtonTitle')} onClick={onBack} variant=\"secondary\">\n {t('backButton')}\n </Button>\n </Flex>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","locale","t","startDate","parseDateStringToLocal","endDate","startFormatted","endFormatted","PayrollConfigurationPresentation","employeeCompensations","employeeDetails","paySchedule","onBack","onEdit","onCalculatePayroll","isOffCycle","Alert","Button","Heading","Text","Badge","useComponentContext","useTranslation","useLocale","formatEmployeePayRate","useFormatEmployeePayRate","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsxs","Flex","jsx","DataView","item","payRateDisplay","hours","getRegularHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","compensation","a","b","employeeA","employeeB","lastNameA","lastNameB","HamburgerMenu","PencilSvg"],"mappings":"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"}
@@ -3,21 +3,22 @@ import { useForm as m, FormProvider as s } from "react-hook-form";
3
3
  import { Flex as a } from "../../Common/Flex/Flex.js";
4
4
  import "classnames";
5
5
  import "../../../shared/constants.js";
6
+ import "react-i18next";
6
7
  import { NumberInputField as d } from "../../Common/Fields/NumberInputField/NumberInputField.js";
7
8
  import { useComponentContext as p } from "../../../contexts/ComponentAdapter/useComponentContext.js";
8
9
  import { Form as u } from "../../Common/Form/Form.js";
9
- const C = ({ onDone: e }) => {
10
- const { Button: n, Heading: o, Text: t } = p(), i = m();
10
+ const D = ({ onDone: e }) => {
11
+ const { Button: t, Heading: o, Text: n } = p(), i = m();
11
12
  return /* @__PURE__ */ l(a, { flexDirection: "column", gap: 20, children: [
12
13
  /* @__PURE__ */ r(o, { as: "h2", children: "Edit Hannah Arendt's payroll" }),
13
14
  /* @__PURE__ */ r(o, { as: "h1", children: "$1,173.08" }),
14
- /* @__PURE__ */ r(t, { children: "Gross pay" }),
15
+ /* @__PURE__ */ r(n, { children: "Gross pay" }),
15
16
  /* @__PURE__ */ r(o, { as: "h3", children: "Regular hours" }),
16
17
  /* @__PURE__ */ r(s, { ...i, children: /* @__PURE__ */ r(u, { children: /* @__PURE__ */ r(d, { defaultValue: 40, isRequired: !0, label: "Hours", name: "hours" }) }) }),
17
- /* @__PURE__ */ r(n, { onClick: e, title: "Done", children: "Done" })
18
+ /* @__PURE__ */ r(t, { onClick: e, title: "Done", children: "Done" })
18
19
  ] });
19
20
  };
20
21
  export {
21
- C as PayrollEditEmployeePresentation
22
+ D as PayrollEditEmployeePresentation
22
23
  };
23
24
  //# sourceMappingURL=PayrollEditEmployeePresentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollEditEmployeePresentation.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.tsx"],"sourcesContent":["import { FormProvider, useForm } from 'react-hook-form'\nimport { Flex, NumberInputField } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Form } from '@/components/Common/Form'\n\ninterface PayrollEditEmployeeProps {\n onDone: () => void\n}\n\nexport const PayrollEditEmployeePresentation = ({ onDone }: PayrollEditEmployeeProps) => {\n const { Button, Heading, Text } = useComponentContext()\n const formHandlers = useForm()\n return (\n <Flex flexDirection=\"column\" gap={20}>\n <Heading as=\"h2\">{`Edit Hannah Arendt's payroll`}</Heading>\n <Heading as=\"h1\">$1,173.08</Heading>\n <Text>Gross pay</Text>\n <Heading as=\"h3\">Regular hours</Heading>\n <FormProvider {...formHandlers}>\n <Form>\n <NumberInputField defaultValue={40} isRequired label=\"Hours\" name=\"hours\" />\n </Form>\n </FormProvider>\n\n <Button onClick={onDone} title=\"Done\">\n Done\n </Button>\n </Flex>\n )\n}\n"],"names":["PayrollEditEmployeePresentation","onDone","Button","Heading","Text","useComponentContext","formHandlers","useForm","jsxs","Flex","jsx","FormProvider","Form","NumberInputField"],"mappings":";;;;;;;;AASO,MAAMA,IAAkC,CAAC,EAAE,QAAAC,QAAuC;AACvF,QAAM,EAAE,QAAAC,GAAQ,SAAAC,GAAS,MAAAC,EAAA,IAASC,EAAA,GAC5BC,IAAeC,EAAA;AACrB,SACE,gBAAAC,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAC,EAACP,GAAA,EAAQ,IAAG,MAAM,UAAA,gCAA+B;AAAA,IACjD,gBAAAO,EAACP,GAAA,EAAQ,IAAG,MAAK,UAAA,aAAS;AAAA,IAC1B,gBAAAO,EAACN,KAAK,UAAA,YAAA,CAAS;AAAA,IACf,gBAAAM,EAACP,GAAA,EAAQ,IAAG,MAAK,UAAA,iBAAa;AAAA,sBAC7BQ,GAAA,EAAc,GAAGL,GAChB,UAAA,gBAAAI,EAACE,KACC,UAAA,gBAAAF,EAACG,GAAA,EAAiB,cAAc,IAAI,YAAU,IAAC,OAAM,SAAQ,MAAK,QAAA,CAAQ,GAC5E,GACF;AAAA,sBAECX,GAAA,EAAO,SAASD,GAAQ,OAAM,QAAO,UAAA,OAAA,CAEtC;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"PayrollEditEmployeePresentation.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.tsx"],"sourcesContent":["import { FormProvider, useForm } from 'react-hook-form'\nimport { Flex, NumberInputField } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Form } from '@/components/Common/Form'\n\ninterface PayrollEditEmployeeProps {\n onDone: () => void\n}\n\nexport const PayrollEditEmployeePresentation = ({ onDone }: PayrollEditEmployeeProps) => {\n const { Button, Heading, Text } = useComponentContext()\n const formHandlers = useForm()\n return (\n <Flex flexDirection=\"column\" gap={20}>\n <Heading as=\"h2\">{`Edit Hannah Arendt's payroll`}</Heading>\n <Heading as=\"h1\">$1,173.08</Heading>\n <Text>Gross pay</Text>\n <Heading as=\"h3\">Regular hours</Heading>\n <FormProvider {...formHandlers}>\n <Form>\n <NumberInputField defaultValue={40} isRequired label=\"Hours\" name=\"hours\" />\n </Form>\n </FormProvider>\n\n <Button onClick={onDone} title=\"Done\">\n Done\n </Button>\n </Flex>\n )\n}\n"],"names":["PayrollEditEmployeePresentation","onDone","Button","Heading","Text","useComponentContext","formHandlers","useForm","jsxs","Flex","jsx","FormProvider","Form","NumberInputField"],"mappings":";;;;;;;;;AASO,MAAMA,IAAkC,CAAC,EAAE,QAAAC,QAAuC;AACvF,QAAM,EAAE,QAAAC,GAAQ,SAAAC,GAAS,MAAAC,EAAA,IAASC,EAAA,GAC5BC,IAAeC,EAAA;AACrB,SACE,gBAAAC,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAC,EAACP,GAAA,EAAQ,IAAG,MAAM,UAAA,gCAA+B;AAAA,IACjD,gBAAAO,EAACP,GAAA,EAAQ,IAAG,MAAK,UAAA,aAAS;AAAA,IAC1B,gBAAAO,EAACN,KAAK,UAAA,YAAA,CAAS;AAAA,IACf,gBAAAM,EAACP,GAAA,EAAQ,IAAG,MAAK,UAAA,iBAAa;AAAA,sBAC7BQ,GAAA,EAAc,GAAGL,GAChB,UAAA,gBAAAI,EAACE,KACC,UAAA,gBAAAF,EAACG,GAAA,EAAiB,cAAc,IAAI,YAAU,IAAC,OAAM,SAAQ,MAAK,QAAA,CAAQ,GAC5E,GACF;AAAA,sBAECX,GAAA,EAAO,SAASD,GAAQ,OAAM,QAAO,UAAA,OAAA,CAEtC;AAAA,EAAA,GACF;AAEJ;"}
@@ -2,5 +2,5 @@ import { BaseComponentInterface } from '../../Base';
2
2
  interface PayrollListBlockProps extends BaseComponentInterface {
3
3
  companyId: string;
4
4
  }
5
- export declare const PayrollList: ({ companyId, onEvent, ...baseProps }: PayrollListBlockProps) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const PayrollList: ({ companyId, onEvent }: PayrollListBlockProps) => import("react/jsx-runtime").JSX.Element;
6
6
  export {};
@@ -1,17 +1,30 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { PayrollListPresentation as s } from "./PayrollListPresentation.js";
3
- import { BaseComponent as m } from "../../Base/Base.js";
2
+ import { usePayrollsListSuspense as n } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/payrollsList.js";
3
+ import { usePaySchedulesGetAllSuspense as i } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/paySchedulesGetAll.js";
4
+ import { ProcessingStatuses as m } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/models/operations/getv1companiescompanyidpayrolls.js";
5
+ import { PayrollListPresentation as c } from "./PayrollListPresentation.js";
6
+ import { BaseComponent as u } from "../../Base/Base.js";
4
7
  import "../../Base/useBase.js";
5
- import { componentEvents as p } from "../../../shared/constants.js";
6
- const i = ({ companyId: o }) => ({
7
- data: [{ payrollId: "abcd" }]
8
- }), u = ({ companyId: o, onEvent: r, ...n }) => {
9
- const { data: a } = i({ companyId: o });
10
- return /* @__PURE__ */ t(m, { ...n, onEvent: r, children: /* @__PURE__ */ t(s, { payrolls: a, onRunPayroll: ({ payrollId: l }) => {
11
- r(p.RUN_PAYROLL_SELECTED, { payrollId: l });
12
- } }) });
8
+ import { componentEvents as y } from "../../../shared/constants.js";
9
+ const g = ({ companyId: s, onEvent: o }) => {
10
+ const { data: r } = n({
11
+ companyId: s,
12
+ processingStatuses: [m.Unprocessed]
13
+ }), e = r.payrollList, { data: l } = i({
14
+ companyId: s
15
+ }), a = l.payScheduleList;
16
+ return /* @__PURE__ */ t(u, { onEvent: o, children: /* @__PURE__ */ t(
17
+ c,
18
+ {
19
+ payrolls: e,
20
+ paySchedules: a,
21
+ onRunPayroll: ({ payrollId: p }) => {
22
+ o(y.RUN_PAYROLL_SELECTED, { payrollId: p });
23
+ }
24
+ }
25
+ ) });
13
26
  };
14
27
  export {
15
- u as PayrollList
28
+ g as PayrollList
16
29
  };
17
30
  //# sourceMappingURL=PayrollList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollList.js","sources":["../../../../src/components/Payroll/PayrollList/PayrollList.tsx"],"sourcesContent":["import { PayrollListPresentation } from './PayrollListPresentation'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent } from '@/components/Base'\nimport { componentEvents } from '@/shared/constants'\n\n//TODO: Use Speakeasy type\ninterface Company {\n companyId: string\n}\n\n// TODO: Replace this hook with call to Speakeasy instead\nconst useListCompanyPayrollsApi = ({ companyId }: Company) => {\n return {\n data: [{ payrollId: 'abcd' }],\n }\n}\n\ninterface PayrollListBlockProps extends BaseComponentInterface {\n companyId: string\n}\n\nexport const PayrollList = ({ companyId, onEvent, ...baseProps }: PayrollListBlockProps) => {\n const { data: payrolls } = useListCompanyPayrollsApi({ companyId })\n const onRunPayroll = ({ payrollId }: { payrollId: string }) => {\n onEvent(componentEvents.RUN_PAYROLL_SELECTED, { payrollId })\n }\n return (\n <BaseComponent {...baseProps} onEvent={onEvent}>\n <PayrollListPresentation payrolls={payrolls} onRunPayroll={onRunPayroll} />\n </BaseComponent>\n )\n}\n"],"names":["useListCompanyPayrollsApi","companyId","PayrollList","onEvent","baseProps","payrolls","jsx","BaseComponent","PayrollListPresentation","payrollId","componentEvents"],"mappings":";;;;;AAWA,MAAMA,IAA4B,CAAC,EAAE,WAAAC,SAC5B;AAAA,EACL,MAAM,CAAC,EAAE,WAAW,QAAQ;AAAA,IAQnBC,IAAc,CAAC,EAAE,WAAAD,GAAW,SAAAE,GAAS,GAAGC,QAAuC;AAC1F,QAAM,EAAE,MAAMC,EAAA,IAAaL,EAA0B,EAAE,WAAAC,GAAW;AAIlE,SACE,gBAAAK,EAACC,KAAe,GAAGH,GAAW,SAAAD,GAC5B,UAAA,gBAAAG,EAACE,GAAA,EAAwB,UAAAH,GAAoB,cAL5B,CAAC,EAAE,WAAAI,QAAuC;AAC7D,IAAAN,EAAQO,EAAgB,sBAAsB,EAAE,WAAAD,EAAA,CAAW;AAAA,EAC7D,EAGiD,CAA4B,EAAA,CAC3E;AAEJ;"}
1
+ {"version":3,"file":"PayrollList.js","sources":["../../../../src/components/Payroll/PayrollList/PayrollList.tsx"],"sourcesContent":["import { usePayrollsListSuspense } from '@gusto/embedded-api/react-query/payrollsList'\nimport { usePaySchedulesGetAllSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetAll'\nimport { ProcessingStatuses } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\nimport { PayrollListPresentation } from './PayrollListPresentation'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent } from '@/components/Base'\nimport { componentEvents } from '@/shared/constants'\n\ninterface PayrollListBlockProps extends BaseComponentInterface {\n companyId: string\n}\n\nexport const PayrollList = ({ companyId, onEvent }: PayrollListBlockProps) => {\n const { data: payrollsData } = usePayrollsListSuspense({\n companyId,\n processingStatuses: [ProcessingStatuses.Unprocessed],\n })\n const payrollList = payrollsData.payrollList!\n const { data: paySchedulesData } = usePaySchedulesGetAllSuspense({\n companyId,\n })\n const paySchedulesList = paySchedulesData.payScheduleList!\n\n const onRunPayroll = ({ payrollId }: { payrollId: string }) => {\n onEvent(componentEvents.RUN_PAYROLL_SELECTED, { payrollId })\n }\n return (\n <BaseComponent onEvent={onEvent}>\n <PayrollListPresentation\n payrolls={payrollList}\n paySchedules={paySchedulesList}\n onRunPayroll={onRunPayroll}\n />\n </BaseComponent>\n )\n}\n"],"names":["PayrollList","companyId","onEvent","payrollsData","usePayrollsListSuspense","ProcessingStatuses","payrollList","paySchedulesData","usePaySchedulesGetAllSuspense","paySchedulesList","jsx","BaseComponent","PayrollListPresentation","payrollId","componentEvents"],"mappings":";;;;;;;;AAYO,MAAMA,IAAc,CAAC,EAAE,WAAAC,GAAW,SAAAC,QAAqC;AAC5E,QAAM,EAAE,MAAMC,EAAA,IAAiBC,EAAwB;AAAA,IACrD,WAAAH;AAAA,IACA,oBAAoB,CAACI,EAAmB,WAAW;AAAA,EAAA,CACpD,GACKC,IAAcH,EAAa,aAC3B,EAAE,MAAMI,EAAA,IAAqBC,EAA8B;AAAA,IAC/D,WAAAP;AAAA,EAAA,CACD,GACKQ,IAAmBF,EAAiB;AAK1C,SACE,gBAAAG,EAACC,KAAc,SAAAT,GACb,UAAA,gBAAAQ;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,UAAUN;AAAA,MACV,cAAcG;AAAA,MACd,cARe,CAAC,EAAE,WAAAI,QAAuC;AAC7D,QAAAX,EAAQY,EAAgB,sBAAsB,EAAE,WAAAD,EAAA,CAAW;AAAA,MAC7D;AAAA,IAMM;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -1,9 +1,11 @@
1
- interface PayrollItem {
2
- payrollId: string;
3
- }
1
+ import { Payroll } from '@gusto/embedded-api/models/components/payroll';
2
+ import { PayScheduleList } from '@gusto/embedded-api/models/components/payschedulelist';
4
3
  interface PayrollListPresentationProps {
5
- onRunPayroll: ({ payrollId }: PayrollItem) => void;
6
- payrolls: PayrollItem[];
4
+ onRunPayroll: ({ payrollId }: {
5
+ payrollId: NonNullable<Payroll['payrollUuid']>;
6
+ }) => void;
7
+ payrolls: Payroll[];
8
+ paySchedules: PayScheduleList[];
7
9
  }
8
- export declare const PayrollListPresentation: ({ onRunPayroll, payrolls, }: PayrollListPresentationProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const PayrollListPresentation: ({ onRunPayroll, payrolls, paySchedules, }: PayrollListPresentationProps) => import("react/jsx-runtime").JSX.Element;
9
11
  export {};