@gusto/embedded-react-sdk 0.10.1 → 0.10.3

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 (120) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/components/Base/Base.d.ts +3 -2
  3. package/dist/components/Base/Base.js +56 -50
  4. package/dist/components/Base/Base.js.map +1 -1
  5. package/dist/components/Common/InternalError/InternalError.js.map +1 -1
  6. package/dist/components/Common/UI/ComboBox/ComboBox.js +31 -33
  7. package/dist/components/Common/UI/ComboBox/ComboBox.js.map +1 -1
  8. package/dist/components/Common/UI/ComboBox/ComboBox.module.scss.js +1 -1
  9. package/dist/components/Common/UI/Text/TextTypes.d.ts +1 -1
  10. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
  11. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  12. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
  13. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  14. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
  15. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  16. package/dist/components/Company/BankAccount/BankAccount.d.ts +2 -2
  17. package/dist/components/Company/BankAccount/BankAccount.js +25 -20
  18. package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
  19. package/dist/components/Company/BankAccount/BankAccountComponents.js +16 -9
  20. package/dist/components/Company/BankAccount/BankAccountComponents.js.map +1 -1
  21. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +22 -8
  22. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  23. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.d.ts +1 -0
  24. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +30 -30
  25. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js.map +1 -1
  26. package/dist/components/Company/BankAccount/BankAccountForm/context.d.ts +4 -0
  27. package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
  28. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  29. package/dist/components/Company/BankAccount/BankAccountList/AccountView.js +14 -13
  30. package/dist/components/Company/BankAccount/BankAccountList/AccountView.js.map +1 -1
  31. package/dist/components/Company/BankAccount/stateMachine.d.ts +1 -1
  32. package/dist/components/Company/BankAccount/stateMachine.js +13 -5
  33. package/dist/components/Company/BankAccount/stateMachine.js.map +1 -1
  34. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  35. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  36. package/dist/components/Company/DocumentSigner/DocumentSigner.d.ts +5 -7
  37. package/dist/components/Company/DocumentSigner/DocumentSigner.js +24 -24
  38. package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
  39. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +41 -42
  40. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  41. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
  42. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  43. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +6 -5
  44. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  45. package/dist/components/Company/Industry/Context.js +7 -6
  46. package/dist/components/Company/Industry/Context.js.map +1 -1
  47. package/dist/components/Company/Industry/Industry.js +30 -31
  48. package/dist/components/Company/Industry/Industry.js.map +1 -1
  49. package/dist/components/Company/Locations/LocationForm/LocationForm.js +34 -37
  50. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  51. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
  52. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  53. package/dist/components/Company/Locations/LocationsList/List.js +4 -1
  54. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  55. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
  56. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  57. package/dist/components/Company/OnboardingOverview/context.js +4 -3
  58. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  59. package/dist/components/Company/PaySchedule/PaySchedule.js +70 -71
  60. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  61. package/dist/components/Company/PaySchedule/usePaySchedule.js +6 -5
  62. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  63. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
  64. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  65. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
  66. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  67. package/dist/components/Contractor/Address/Address.js +37 -38
  68. package/dist/components/Contractor/Address/Address.js.map +1 -1
  69. package/dist/components/Contractor/Address/useAddress.js +6 -5
  70. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  71. package/dist/components/Contractor/NewHireReport/NewHireReport.js +57 -58
  72. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  73. package/dist/components/Contractor/PaymentMethod/PaymentMethod.js.map +1 -1
  74. package/dist/components/Employee/Compensation/Compensation.js +123 -132
  75. package/dist/components/Employee/Compensation/Compensation.js.map +1 -1
  76. package/dist/components/Employee/Deductions/Deductions.js +74 -79
  77. package/dist/components/Employee/Deductions/Deductions.js.map +1 -1
  78. package/dist/components/Employee/Deductions/useDeductions.js +6 -5
  79. package/dist/components/Employee/Deductions/useDeductions.js.map +1 -1
  80. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  81. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  82. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +36 -42
  83. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  84. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
  85. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  86. package/dist/components/Employee/EmployeeList/EmployeeList.js +57 -58
  87. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  88. package/dist/components/Employee/EmployeeList/useEmployeeList.js +4 -3
  89. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  90. package/dist/components/Employee/PaymentMethod/PaymentMethod.js +95 -97
  91. package/dist/components/Employee/PaymentMethod/PaymentMethod.js.map +1 -1
  92. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +6 -5
  93. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  94. package/dist/components/Employee/Profile/Profile.js +118 -124
  95. package/dist/components/Employee/Profile/Profile.js.map +1 -1
  96. package/dist/components/Employee/Profile/useProfile.js +4 -3
  97. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  98. package/dist/components/Employee/Taxes/FederalForm.js +4 -4
  99. package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
  100. package/dist/components/Employee/Taxes/Taxes.js +59 -60
  101. package/dist/components/Employee/Taxes/Taxes.js.map +1 -1
  102. package/dist/components/Employee/Taxes/useTaxes.js +4 -3
  103. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  104. package/dist/contexts/ApiProvider/ApiProvider.js +16 -14
  105. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  106. package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +5 -0
  107. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +2 -0
  108. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +19 -17
  109. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  110. package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.d.ts +7 -0
  111. package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.js +10 -0
  112. package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.js.map +1 -0
  113. package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.d.ts +6 -0
  114. package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js +11 -0
  115. package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js.map +1 -0
  116. package/dist/shared/constants.d.ts +2 -0
  117. package/dist/shared/constants.js +10 -9
  118. package/dist/shared/constants.js.map +1 -1
  119. package/dist/style.css +1 -1
  120. package/package.json +5 -1
@@ -1,143 +1,134 @@
1
- import { jsx as s, jsxs as ue, Fragment as me } from "react/jsx-runtime";
2
- import { zodResolver as de } from "@hookform/resolvers/zod";
3
- import { useState as N, useMemo as j, useEffect as le } from "react";
4
- import { useForm as ce, FormProvider as fe } from "react-hook-form";
5
- import { useTranslation as pe } from "react-i18next";
6
- import { useJobsAndCompensationsGetJobsSuspense as Ce, invalidateJobsAndCompensationsGetJobs as T } from "@gusto/embedded-api/react-query/jobsAndCompensationsGetJobs";
7
- import { useJobsAndCompensationsCreateJobMutation as Ee } from "@gusto/embedded-api/react-query/jobsAndCompensationsCreateJob";
8
- import { useJobsAndCompensationsUpdateMutation as Se } from "@gusto/embedded-api/react-query/jobsAndCompensationsUpdate";
9
- import { useJobsAndCompensationsDeleteMutation as he } from "@gusto/embedded-api/react-query/jobsAndCompensationsDelete";
10
- import { useJobsAndCompensationsUpdateCompensationMutation as Ae } from "@gusto/embedded-api/react-query/jobsAndCompensationsUpdateCompensation";
11
- import { useLocationsGetMinimumWagesSuspense as De } from "@gusto/embedded-api/react-query/locationsGetMinimumWages";
12
- import { useEmployeeAddressesGetWorkAddressesSuspense as Oe } from "@gusto/embedded-api/react-query/employeeAddressesGetWorkAddresses";
13
- import { useQueryClient as ye } from "@tanstack/react-query";
14
- import { useFederalTaxDetailsGetSuspense as be } from "@gusto/embedded-api/react-query/federalTaxDetailsGet";
15
- import { useEmployeesGetSuspense as Te } from "@gusto/embedded-api/react-query/employeesGet";
16
- import { List as Y } from "./List.js";
17
- import { Head as k } from "./Head.js";
18
- import { Edit as q } from "./Edit.js";
19
- import { Actions as x } from "./Actions.js";
20
- import { CompensationSchema as Ie, CompensationProvider as Me } from "./useCompensation.js";
21
- import { Form as Pe } from "../../Common/Form/Form.js";
22
- import { FlsaStatus as S, componentEvents as C } from "../../../shared/constants.js";
23
- import { useComponentDictionary as We, useI18n as ge } from "../../../i18n/I18n.js";
24
- import { BaseComponent as Ne } from "../../Base/Base.js";
25
- import { useBase as _e } from "../../Base/useBase.js";
26
- import { useFlow as Le } from "../../Flow/useFlow.js";
27
- function h(e) {
28
- return We("Employee.Compensation", e.dictionary), /* @__PURE__ */ s(Ne, { ...e, children: /* @__PURE__ */ s(Je, { ...e, children: e.children }) });
1
+ import { jsx as s, jsxs as re, Fragment as ie } from "react/jsx-runtime";
2
+ import { zodResolver as me } from "@hookform/resolvers/zod";
3
+ import { useState as W, useMemo as F, useEffect as ue } from "react";
4
+ import { useForm as de, FormProvider as le } from "react-hook-form";
5
+ import { useTranslation as ce } from "react-i18next";
6
+ import { useJobsAndCompensationsGetJobsSuspense as pe } from "@gusto/embedded-api/react-query/jobsAndCompensationsGetJobs";
7
+ import { useJobsAndCompensationsCreateJobMutation as fe } from "@gusto/embedded-api/react-query/jobsAndCompensationsCreateJob";
8
+ import { useJobsAndCompensationsUpdateMutation as Ee } from "@gusto/embedded-api/react-query/jobsAndCompensationsUpdate";
9
+ import { useJobsAndCompensationsDeleteMutation as Ce } from "@gusto/embedded-api/react-query/jobsAndCompensationsDelete";
10
+ import { useJobsAndCompensationsUpdateCompensationMutation as he } from "@gusto/embedded-api/react-query/jobsAndCompensationsUpdateCompensation";
11
+ import { useLocationsGetMinimumWagesSuspense as Ae } from "@gusto/embedded-api/react-query/locationsGetMinimumWages";
12
+ import { useEmployeeAddressesGetWorkAddressesSuspense as De } from "@gusto/embedded-api/react-query/employeeAddressesGetWorkAddresses";
13
+ import { useFederalTaxDetailsGetSuspense as Oe } from "@gusto/embedded-api/react-query/federalTaxDetailsGet";
14
+ import { useEmployeesGetSuspense as Se } from "@gusto/embedded-api/react-query/employeesGet";
15
+ import { List as j } from "./List.js";
16
+ import { Head as V } from "./Head.js";
17
+ import { Edit as Y } from "./Edit.js";
18
+ import { Actions as k } from "./Actions.js";
19
+ import { CompensationSchema as ye, CompensationProvider as Ie } from "./useCompensation.js";
20
+ import { Form as Te } from "../../Common/Form/Form.js";
21
+ import { FlsaStatus as h, componentEvents as E } from "../../../shared/constants.js";
22
+ import { useComponentDictionary as be, useI18n as Me } from "../../../i18n/I18n.js";
23
+ import { BaseComponent as Pe } from "../../Base/Base.js";
24
+ import { useBase as We } from "../../Base/useBase.js";
25
+ import { useFlow as ge } from "../../Flow/useFlow.js";
26
+ function A(t) {
27
+ return be("Employee.Compensation", t.dictionary), /* @__PURE__ */ s(Pe, { ...t, children: /* @__PURE__ */ s(Ne, { ...t, children: t.children }) });
29
28
  }
30
- const V = (e) => e?.compensations?.find((l) => l.uuid === e.currentCompensationUuid), Je = ({ employeeId: e, startDate: l, className: A, children: D, ...u }) => {
31
- ge("Employee.Compensation");
32
- const { baseSubmitHandler: G, onEvent: c } = _e(), O = ye(), { data: R } = Ce({ employeeId: e }), n = R.jobList, { data: H } = Oe({ employeeId: e }), _ = H.employeeWorkAddressesList.find((t) => t.active), {
33
- data: { minimumWageList: X }
34
- } = De({
35
- locationUuid: _.locationUuid
36
- }), z = X, {
37
- data: { employee: L }
38
- } = Te({ employeeId: e });
39
- if (!L)
29
+ const B = (t) => t?.compensations?.find((l) => l.uuid === t.currentCompensationUuid), Ne = ({ employeeId: t, startDate: l, className: D, children: O, ...m }) => {
30
+ Me("Employee.Compensation");
31
+ const { baseSubmitHandler: x, onEvent: c } = We(), { data: q } = pe({ employeeId: t }), n = q.jobList, { data: G } = De({ employeeId: t }), g = G.employeeWorkAddressesList.find((e) => e.active), {
32
+ data: { minimumWageList: R }
33
+ } = Ae({
34
+ locationUuid: g.locationUuid
35
+ }), H = R, {
36
+ data: { employee: N }
37
+ } = Se({ employeeId: t });
38
+ if (!N)
40
39
  throw new Error("Employee not found");
41
- const { data: Q } = be({ companyId: L.companyUuid }), K = Q.federalTaxDetails.taxPayerType === "S-Corporation", J = Ae({
42
- onSettled: () => T(O, [e])
43
- }), v = Ee({
44
- onSettled: () => T(O, [e])
45
- }), w = Se({
46
- onSettled: () => T(O, [e])
47
- }), U = he({
48
- onSettled: () => T(O, [e])
49
- }), [o, y] = N(
40
+ const { data: X } = Oe({ companyId: N.companyUuid }), z = X.federalTaxDetails.taxPayerType === "S-Corporation", _ = he(), L = fe(), J = Ee(), w = Ce(), [o, S] = W(
50
41
  n.length === 1 ? n[0] ?? null : null
51
- ), [I, f] = N(() => {
42
+ ), [I, p] = W(() => {
52
43
  if (!n.length)
53
44
  return "ADD_INITIAL_JOB";
54
- const t = V(n[0]);
55
- return n.length === 1 && t?.flsaStatus !== S.NONEXEMPT ? "EDIT_INITIAL_JOB" : "LIST";
56
- }), [Z, F] = N(!1), a = V(o), M = j(() => n.reduce((t, r) => {
57
- const m = r.compensations?.find(
58
- (b) => b.uuid === r.currentCompensationUuid
45
+ const e = B(n[0]);
46
+ return n.length === 1 && e?.flsaStatus !== h.NONEXEMPT ? "EDIT_INITIAL_JOB" : "LIST";
47
+ }), [K, v] = W(!1), a = B(o), T = F(() => n.reduce((e, r) => {
48
+ const u = r.compensations?.find(
49
+ (y) => y.uuid === r.currentCompensationUuid
59
50
  );
60
- return !r.primary || !m ? t : m.flsaStatus ?? t;
61
- }, void 0), [n]), p = j(() => ({
62
- jobTitle: o?.title && o.title !== "" ? o.title : u.defaultValues?.title ?? "",
63
- flsaStatus: a?.flsaStatus ?? M ?? u.defaultValues?.flsaStatus,
64
- rate: Number(a?.rate ?? u.defaultValues?.rate ?? 0),
51
+ return !r.primary || !u ? e : u.flsaStatus ?? e;
52
+ }, void 0), [n]), f = F(() => ({
53
+ jobTitle: o?.title && o.title !== "" ? o.title : m.defaultValues?.title ?? "",
54
+ flsaStatus: a?.flsaStatus ?? T ?? m.defaultValues?.flsaStatus,
55
+ rate: Number(a?.rate ?? m.defaultValues?.rate ?? 0),
65
56
  adjustForMinimumWage: a?.adjustForMinimumWage ?? !1,
66
57
  minimumWageId: a?.minimumWages?.[0]?.uuid ?? "",
67
- paymentUnit: a?.paymentUnit ?? u.defaultValues?.paymentUnit ?? "Hour",
58
+ paymentUnit: a?.paymentUnit ?? m.defaultValues?.paymentUnit ?? "Hour",
68
59
  stateWcCovered: o?.stateWcCovered ?? !1,
69
60
  stateWcClassCode: o?.stateWcClassCode ?? ""
70
- }), [o, a, M, u.defaultValues]), B = ce({
71
- resolver: de(Ie),
72
- defaultValues: p
73
- }), { resetField: P, setValue: W, handleSubmit: $, reset: E } = B;
74
- le(() => {
75
- E(p);
76
- }, [o, p, E]);
77
- const ee = async (t) => {
78
- if (I === "LIST" && t === "PROCEED") {
79
- c(C.EMPLOYEE_COMPENSATION_DONE);
61
+ }), [o, a, T, m.defaultValues]), U = de({
62
+ resolver: me(ye),
63
+ defaultValues: f
64
+ }), { resetField: b, setValue: M, handleSubmit: Q, reset: C } = U;
65
+ ue(() => {
66
+ C(f);
67
+ }, [o, f, C]);
68
+ const Z = async (e) => {
69
+ if (I === "LIST" && e === "PROCEED") {
70
+ c(E.EMPLOYEE_COMPENSATION_DONE);
80
71
  return;
81
72
  }
82
73
  if (!o && I === "LIST") {
83
- f("ADD_ADDITIONAL_JOB");
74
+ p("ADD_ADDITIONAL_JOB");
84
75
  return;
85
76
  }
86
- await $(async (r) => {
87
- switch (await re(r), t) {
77
+ await Q(async (r) => {
78
+ switch (await se(r), e) {
88
79
  case "LIST":
89
- f("LIST"), y(null), E(p);
80
+ p("LIST"), S(null), C(f);
90
81
  break;
91
82
  default:
92
- c(C.EMPLOYEE_COMPENSATION_DONE);
83
+ c(E.EMPLOYEE_COMPENSATION_DONE);
93
84
  }
94
85
  })();
95
- }, te = () => {
96
- f("ADD_ADDITIONAL_JOB"), y(null), E(p);
97
- }, oe = () => {
98
- n.length > 0 ? f("LIST") : f("ADD_INITIAL_JOB"), y(null), E(p);
99
- }, ne = (t) => {
100
- const r = n.find((m) => t === m.uuid);
101
- r && (f("EDIT_ADDITIONAL_JOB"), y(r));
102
- }, se = async (t) => {
103
- await U.mutateAsync({ request: { jobId: t } }), c(C.EMPLOYEE_JOB_DELETED);
104
- }, ae = (t) => {
105
- a?.flsaStatus === S.NONEXEMPT && n.length > 1 && F(!0), t === S.OWNER ? (W("paymentUnit", "Paycheck"), P("rate", { defaultValue: Number(a?.rate) })) : t === S.COMMISSION_ONLY_NONEXEMPT || t === S.COMMISSION_ONLY_EXEMPT ? (W("paymentUnit", "Year"), W("rate", 0)) : (P("paymentUnit", { defaultValue: a?.paymentUnit }), P("rate", { defaultValue: Number(a?.rate) }));
106
- }, re = async (t) => {
107
- await G(t, async (r) => {
108
- const { jobTitle: m, twoPercentShareholder: b, ...i } = r;
86
+ }, $ = () => {
87
+ p("ADD_ADDITIONAL_JOB"), S(null), C(f);
88
+ }, ee = () => {
89
+ n.length > 0 ? p("LIST") : p("ADD_INITIAL_JOB"), S(null), C(f);
90
+ }, te = (e) => {
91
+ const r = n.find((u) => e === u.uuid);
92
+ r && (p("EDIT_ADDITIONAL_JOB"), S(r));
93
+ }, oe = async (e) => {
94
+ await w.mutateAsync({ request: { jobId: e } }), c(E.EMPLOYEE_JOB_DELETED);
95
+ }, ne = (e) => {
96
+ a?.flsaStatus === h.NONEXEMPT && n.length > 1 && v(!0), e === h.OWNER ? (M("paymentUnit", "Paycheck"), b("rate", { defaultValue: Number(a?.rate) })) : e === h.COMMISSION_ONLY_NONEXEMPT || e === h.COMMISSION_ONLY_EXEMPT ? (M("paymentUnit", "Year"), M("rate", 0)) : (b("paymentUnit", { defaultValue: a?.paymentUnit }), b("rate", { defaultValue: Number(a?.rate) }));
97
+ }, se = async (e) => {
98
+ await x(e, async (r) => {
99
+ const { jobTitle: u, twoPercentShareholder: y, ...i } = r;
109
100
  let d;
110
- o ? (d = (await w.mutateAsync({
101
+ o ? (d = (await J.mutateAsync({
111
102
  request: {
112
103
  jobId: o.uuid,
113
104
  requestBody: {
114
- title: m,
105
+ title: u,
115
106
  version: o.version,
116
107
  hireDate: l,
117
108
  stateWcClassCode: i.stateWcCovered ? i.stateWcClassCode : null,
118
109
  stateWcCovered: i.stateWcCovered,
119
- twoPercentShareholder: b ?? !1
110
+ twoPercentShareholder: y ?? !1
120
111
  }
121
112
  }
122
- })).job, c(C.EMPLOYEE_JOB_UPDATED, d)) : (d = (await v.mutateAsync({
113
+ })).job, c(E.EMPLOYEE_JOB_UPDATED, d)) : (d = (await L.mutateAsync({
123
114
  request: {
124
- employeeId: e,
115
+ employeeId: t,
125
116
  requestBody: {
126
- title: m,
117
+ title: u,
127
118
  hireDate: l,
128
119
  stateWcCovered: i.stateWcCovered,
129
120
  stateWcClassCode: i.stateWcCovered ? i.stateWcClassCode : null,
130
- twoPercentShareholder: b ?? !1
121
+ twoPercentShareholder: y ?? !1
131
122
  }
132
123
  }
133
- })).job, c(C.EMPLOYEE_JOB_CREATED, d));
134
- const { compensation: ie } = await J.mutateAsync({
124
+ })).job, c(E.EMPLOYEE_JOB_CREATED, d));
125
+ const { compensation: ae } = await _.mutateAsync({
135
126
  request: {
136
127
  compensationId: d.currentCompensationUuid,
137
128
  requestBody: {
138
129
  // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
139
130
  version: d.compensations?.find(
140
- (g) => g.uuid === d.currentCompensationUuid
131
+ (P) => P.uuid === d.currentCompensationUuid
141
132
  )?.version,
142
133
  ...i,
143
134
  rate: String(i.rate),
@@ -145,64 +136,64 @@ const V = (e) => e?.compensations?.find((l) => l.uuid === e.currentCompensationU
145
136
  }
146
137
  }
147
138
  });
148
- F(!1), c(C.EMPLOYEE_COMPENSATION_UPDATED, ie);
139
+ v(!1), c(E.EMPLOYEE_COMPENSATION_UPDATED, ae);
149
140
  });
150
141
  };
151
- return /* @__PURE__ */ s("section", { className: A, children: /* @__PURE__ */ s(
152
- Me,
142
+ return /* @__PURE__ */ s("section", { className: D, children: /* @__PURE__ */ s(
143
+ Ie,
153
144
  {
154
145
  value: {
155
146
  employeeJobs: n,
156
147
  currentJob: o,
157
- primaryFlsaStatus: M,
158
- showFlsaChangeWarning: Z,
148
+ primaryFlsaStatus: T,
149
+ showFlsaChangeWarning: K,
159
150
  mode: I,
160
- minimumWages: z,
161
- handleFlsaChange: ae,
162
- handleDelete: se,
163
- handleEdit: ne,
164
- handleAdd: te,
165
- submitWithEffect: ee,
166
- handleCancelAddJob: oe,
167
- isPending: J.isPending || v.isPending || w.isPending || U.isPending,
168
- state: _.state,
169
- showTwoPercentStakeholder: K
151
+ minimumWages: H,
152
+ handleFlsaChange: ne,
153
+ handleDelete: oe,
154
+ handleEdit: te,
155
+ handleAdd: $,
156
+ submitWithEffect: Z,
157
+ handleCancelAddJob: ee,
158
+ isPending: _.isPending || L.isPending || J.isPending || w.isPending,
159
+ state: g.state,
160
+ showTwoPercentStakeholder: z
170
161
  },
171
- children: /* @__PURE__ */ s(fe, { ...B, children: /* @__PURE__ */ s(Pe, { children: D || /* @__PURE__ */ ue(me, { children: [
172
- /* @__PURE__ */ s(k, {}),
162
+ children: /* @__PURE__ */ s(le, { ...U, children: /* @__PURE__ */ s(Te, { children: O || /* @__PURE__ */ re(ie, { children: [
163
+ /* @__PURE__ */ s(V, {}),
164
+ /* @__PURE__ */ s(j, {}),
173
165
  /* @__PURE__ */ s(Y, {}),
174
- /* @__PURE__ */ s(q, {}),
175
- /* @__PURE__ */ s(x, {})
166
+ /* @__PURE__ */ s(k, {})
176
167
  ] }) }) })
177
168
  }
178
169
  ) });
179
170
  };
180
- h.Head = k;
181
- h.List = Y;
182
- h.Actions = x;
183
- h.Edit = q;
184
- const it = () => {
185
- const { employeeId: e, onEvent: l, startDate: A, defaultValues: D } = Le(), { t: u } = pe("common");
186
- if (!e || !A)
171
+ A.Head = V;
172
+ A.List = j;
173
+ A.Actions = k;
174
+ A.Edit = Y;
175
+ const nt = () => {
176
+ const { employeeId: t, onEvent: l, startDate: D, defaultValues: O } = ge(), { t: m } = ce("common");
177
+ if (!t || !D)
187
178
  throw new Error(
188
- u("errors.missingParamsOrContext", {
179
+ m("errors.missingParamsOrContext", {
189
180
  component: "Compensation",
190
- param: e ? "startDate" : "employeeId",
181
+ param: t ? "startDate" : "employeeId",
191
182
  provider: "FlowProvider"
192
183
  })
193
184
  );
194
185
  return /* @__PURE__ */ s(
195
- h,
186
+ A,
196
187
  {
197
- employeeId: e,
198
- startDate: A,
188
+ employeeId: t,
189
+ startDate: D,
199
190
  onEvent: l,
200
- defaultValues: D?.compensation
191
+ defaultValues: O?.compensation
201
192
  }
202
193
  );
203
194
  };
204
195
  export {
205
- h as Compensation,
206
- it as CompensationContextual
196
+ A as Compensation,
197
+ nt as CompensationContextual
207
198
  };
208
199
  //# sourceMappingURL=Compensation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Compensation.js","sources":["../../../../src/components/Employee/Compensation/Compensation.tsx"],"sourcesContent":["import { zodResolver } from '@hookform/resolvers/zod'\nimport { useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm, type SubmitHandler } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport {\n useJobsAndCompensationsGetJobsSuspense,\n invalidateJobsAndCompensationsGetJobs,\n} from '@gusto/embedded-api/react-query/jobsAndCompensationsGetJobs'\nimport { useJobsAndCompensationsCreateJobMutation } from '@gusto/embedded-api/react-query/jobsAndCompensationsCreateJob'\nimport { useJobsAndCompensationsUpdateMutation } from '@gusto/embedded-api/react-query/jobsAndCompensationsUpdate'\nimport { useJobsAndCompensationsDeleteMutation } from '@gusto/embedded-api/react-query/jobsAndCompensationsDelete'\nimport { useJobsAndCompensationsUpdateCompensationMutation } from '@gusto/embedded-api/react-query/jobsAndCompensationsUpdateCompensation'\nimport { useLocationsGetMinimumWagesSuspense } from '@gusto/embedded-api/react-query/locationsGetMinimumWages'\nimport { useEmployeeAddressesGetWorkAddressesSuspense } from '@gusto/embedded-api/react-query/employeeAddressesGetWorkAddresses'\nimport { type Job } from '@gusto/embedded-api/models/components/job'\nimport { useQueryClient } from '@tanstack/react-query'\nimport type { FlsaStatusType } from '@gusto/embedded-api/models/components/flsastatustype'\nimport { useFederalTaxDetailsGetSuspense } from '@gusto/embedded-api/react-query/federalTaxDetailsGet'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlow'\nimport { List } from './List'\nimport { Head } from './Head'\nimport { Edit } from './Edit'\nimport { Actions } from './Actions'\nimport {\n type CompensationInputs,\n type CompensationOutputs,\n CompensationProvider,\n CompensationSchema,\n type MODE,\n} from './useCompensation'\nimport { Form } from '@/components/Common/Form'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\nimport type { PAY_PERIODS } from '@/shared/constants'\nimport { componentEvents, FlsaStatus } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport {\n BaseComponent,\n type BaseComponentInterface,\n useBase,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { useFlow } from '@/components/Flow/useFlow'\n\nexport type CompensationDefaultValues = RequireAtLeastOne<{\n rate?: Job['rate']\n title?: Job['title']\n paymentUnit?: (typeof PAY_PERIODS)[keyof typeof PAY_PERIODS]\n flsaStatus?: FlsaStatusType\n}>\n\ninterface CompensationProps extends CommonComponentInterface<'Employee.Compensation'> {\n employeeId: string\n startDate: string\n defaultValues?: CompensationDefaultValues\n}\n\nexport function Compensation(props: CompensationProps & BaseComponentInterface) {\n useComponentDictionary('Employee.Compensation', props.dictionary)\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst findCurrentCompensation = (employeeJob?: Job | null) => {\n return employeeJob?.compensations?.find(comp => comp.uuid === employeeJob.currentCompensationUuid)\n}\n\nconst Root = ({ employeeId, startDate, className, children, ...props }: CompensationProps) => {\n useI18n('Employee.Compensation')\n const { baseSubmitHandler, onEvent } = useBase()\n const queryClient = useQueryClient()\n\n const { data: jobsData } = useJobsAndCompensationsGetJobsSuspense({ employeeId })\n const employeeJobs = jobsData.jobList!\n\n const { data: addressesData } = useEmployeeAddressesGetWorkAddressesSuspense({ employeeId })\n const workAddresses = addressesData.employeeWorkAddressesList!\n\n const currentWorkAddress = workAddresses.find(address => address.active)!\n\n const {\n data: { minimumWageList },\n } = useLocationsGetMinimumWagesSuspense({\n locationUuid: currentWorkAddress.locationUuid!,\n })\n const minimumWages = minimumWageList!\n\n const {\n data: { employee },\n } = useEmployeesGetSuspense({ employeeId })\n\n if (!employee) {\n throw new Error('Employee not found')\n }\n\n const { data } = useFederalTaxDetailsGetSuspense({ companyId: employee.companyUuid! })\n const showTwoPercentStakeholder = data.federalTaxDetails!.taxPayerType === 'S-Corporation'\n\n const updateCompensationMutation = useJobsAndCompensationsUpdateCompensationMutation({\n onSettled: () => invalidateJobsAndCompensationsGetJobs(queryClient, [employeeId]),\n })\n const createEmployeeJobMutation = useJobsAndCompensationsCreateJobMutation({\n onSettled: () => invalidateJobsAndCompensationsGetJobs(queryClient, [employeeId]),\n })\n const updateEmployeeJobMutation = useJobsAndCompensationsUpdateMutation({\n onSettled: () => invalidateJobsAndCompensationsGetJobs(queryClient, [employeeId]),\n })\n const deleteEmployeeJobMutation = useJobsAndCompensationsDeleteMutation({\n onSettled: () => invalidateJobsAndCompensationsGetJobs(queryClient, [employeeId]),\n })\n\n //Job being edited/created\n const [currentJob, setCurrentJob] = useState<Job | null>(\n employeeJobs.length === 1 ? (employeeJobs[0] ?? null) : null,\n )\n\n const [mode, setMode] = useState<MODE>(() => {\n if (!employeeJobs.length) {\n return 'ADD_INITIAL_JOB'\n }\n\n const currentCompensation = findCurrentCompensation(employeeJobs[0])\n\n if (employeeJobs.length === 1 && currentCompensation?.flsaStatus !== FlsaStatus.NONEXEMPT) {\n return 'EDIT_INITIAL_JOB'\n }\n\n return 'LIST'\n })\n\n const [showFlsaChangeWarning, setShowFlsaChangeWarning] = useState(false)\n //Getting current compensation for a job -> the one with the most recent effective date\n const currentCompensation = findCurrentCompensation(currentJob)\n /** Returns FLSA status of a current compensation of a primary job:\n * Employees can have multiple jobs, with multiple compensations, but only 1 job is primary with 1 current compensation\n */\n const primaryFlsaStatus = useMemo<string | undefined>(() => {\n return employeeJobs.reduce<string | undefined>((prev, curr) => {\n const compensation = curr.compensations?.find(\n comp => comp.uuid === curr.currentCompensationUuid,\n )\n if (!curr.primary || !compensation) return prev\n return compensation.flsaStatus ?? prev\n }, undefined)\n }, [employeeJobs])\n\n const defaultValues: CompensationInputs = useMemo(() => {\n return {\n jobTitle:\n currentJob?.title && currentJob.title !== ''\n ? currentJob.title\n : (props.defaultValues?.title ?? ''),\n flsaStatus:\n currentCompensation?.flsaStatus ?? primaryFlsaStatus ?? props.defaultValues?.flsaStatus,\n rate: Number(currentCompensation?.rate ?? props.defaultValues?.rate ?? 0),\n adjustForMinimumWage: currentCompensation?.adjustForMinimumWage ?? false,\n minimumWageId: currentCompensation?.minimumWages?.[0]?.uuid ?? '',\n paymentUnit: currentCompensation?.paymentUnit ?? props.defaultValues?.paymentUnit ?? 'Hour',\n stateWcCovered: currentJob?.stateWcCovered ?? false,\n stateWcClassCode: currentJob?.stateWcClassCode ?? '',\n } as CompensationInputs\n }, [currentJob, currentCompensation, primaryFlsaStatus, props.defaultValues])\n\n const formMethods = useForm<CompensationInputs, unknown, CompensationOutputs>({\n resolver: zodResolver(CompensationSchema),\n defaultValues,\n })\n const { resetField, setValue, handleSubmit, reset } = formMethods\n useEffect(() => {\n reset(defaultValues)\n }, [currentJob, defaultValues, reset])\n\n const submitWithEffect = async (newMode?: MODE) => {\n if (mode === 'LIST' && newMode === 'PROCEED') {\n onEvent(componentEvents.EMPLOYEE_COMPENSATION_DONE)\n return\n }\n //If no job has been modified, switch to edit mode\n if (!currentJob && mode === 'LIST') {\n setMode('ADD_ADDITIONAL_JOB')\n return\n }\n //Performing post-submit state setting only on success\n await handleSubmit(async (data: CompensationOutputs) => {\n await onSubmit(data)\n switch (newMode) {\n case 'LIST':\n setMode('LIST')\n setCurrentJob(null)\n reset(defaultValues)\n break\n default:\n onEvent(componentEvents.EMPLOYEE_COMPENSATION_DONE)\n }\n })()\n }\n const handleAdd = () => {\n setMode('ADD_ADDITIONAL_JOB')\n setCurrentJob(null)\n reset(defaultValues)\n }\n\n const handleCancelAddJob = () => {\n if (employeeJobs.length > 0) {\n setMode('LIST')\n } else {\n setMode('ADD_INITIAL_JOB')\n }\n\n setCurrentJob(null)\n reset(defaultValues)\n }\n\n const handleEdit = (uuid: string) => {\n const selectedJob = employeeJobs.find(job => uuid === job.uuid)\n if (selectedJob) {\n setMode('EDIT_ADDITIONAL_JOB')\n setCurrentJob(selectedJob)\n }\n }\n\n const handleDelete = async (jobId: string) => {\n await deleteEmployeeJobMutation.mutateAsync({ request: { jobId } })\n onEvent(componentEvents.EMPLOYEE_JOB_DELETED)\n }\n\n /**Update dependent field values upon change in FLSA type */\n const handleFlsaChange = (value: string | number) => {\n //Attempting to change flsa status from nonexempt should prompt user about deletion of other jobs associated with the employee\n if (currentCompensation?.flsaStatus === FlsaStatus.NONEXEMPT && employeeJobs.length > 1) {\n setShowFlsaChangeWarning(true)\n }\n if (value === FlsaStatus.OWNER) {\n setValue('paymentUnit', 'Paycheck')\n resetField('rate', { defaultValue: Number(currentCompensation?.rate) })\n } else if (\n value === FlsaStatus.COMMISSION_ONLY_NONEXEMPT ||\n value === FlsaStatus.COMMISSION_ONLY_EXEMPT\n ) {\n setValue('paymentUnit', 'Year')\n setValue('rate', 0)\n } else {\n //reset fields\n resetField('paymentUnit', { defaultValue: currentCompensation?.paymentUnit })\n resetField('rate', { defaultValue: Number(currentCompensation?.rate) })\n }\n }\n\n const onSubmit: SubmitHandler<CompensationOutputs> = async data => {\n await baseSubmitHandler(data, async payload => {\n const { jobTitle, twoPercentShareholder, ...compensationData } = payload\n let updatedJobData\n //Note: some of the type fixes below are due to the fact that API incorrectly defines current_compensation_uuid as optional\n if (!currentJob) {\n //Adding new job for NONEXEMPT\n const data = await createEmployeeJobMutation.mutateAsync({\n request: {\n employeeId,\n requestBody: {\n title: jobTitle,\n hireDate: startDate,\n stateWcCovered: compensationData.stateWcCovered,\n stateWcClassCode: compensationData.stateWcCovered\n ? compensationData.stateWcClassCode\n : null,\n twoPercentShareholder: twoPercentShareholder ?? false,\n },\n },\n })\n updatedJobData = data.job!\n onEvent(componentEvents.EMPLOYEE_JOB_CREATED, updatedJobData)\n } else {\n const data = await updateEmployeeJobMutation.mutateAsync({\n request: {\n jobId: currentJob.uuid,\n requestBody: {\n title: jobTitle,\n version: currentJob.version as string,\n hireDate: startDate,\n stateWcClassCode: compensationData.stateWcCovered\n ? compensationData.stateWcClassCode\n : null,\n stateWcCovered: compensationData.stateWcCovered,\n twoPercentShareholder: twoPercentShareholder ?? false,\n },\n },\n })\n updatedJobData = data.job!\n onEvent(componentEvents.EMPLOYEE_JOB_UPDATED, updatedJobData)\n }\n\n const { compensation } = await updateCompensationMutation.mutateAsync({\n request: {\n compensationId: updatedJobData.currentCompensationUuid!,\n requestBody: {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n version: updatedJobData.compensations?.find(\n comp => comp.uuid === updatedJobData.currentCompensationUuid,\n )?.version!,\n ...compensationData,\n rate: String(compensationData.rate),\n minimumWages: compensationData.adjustForMinimumWage\n ? [{ uuid: compensationData.minimumWageId }]\n : [],\n },\n },\n })\n setShowFlsaChangeWarning(false)\n onEvent(componentEvents.EMPLOYEE_COMPENSATION_UPDATED, compensation)\n })\n }\n return (\n <section className={className}>\n <CompensationProvider\n value={{\n employeeJobs,\n currentJob,\n primaryFlsaStatus,\n showFlsaChangeWarning,\n mode,\n minimumWages,\n handleFlsaChange,\n handleDelete,\n handleEdit,\n handleAdd,\n submitWithEffect,\n handleCancelAddJob,\n isPending:\n updateCompensationMutation.isPending ||\n createEmployeeJobMutation.isPending ||\n updateEmployeeJobMutation.isPending ||\n deleteEmployeeJobMutation.isPending,\n state: currentWorkAddress.state,\n showTwoPercentStakeholder,\n }}\n >\n <FormProvider {...formMethods}>\n <Form>\n {children ? (\n children\n ) : (\n <>\n <Head />\n <List />\n <Edit />\n <Actions />\n </>\n )}\n </Form>\n </FormProvider>\n </CompensationProvider>\n </section>\n )\n}\n\nCompensation.Head = Head\nCompensation.List = List\nCompensation.Actions = Actions\nCompensation.Edit = Edit\n\nexport const CompensationContextual = () => {\n const { employeeId, onEvent, startDate, defaultValues } = useFlow<OnboardingContextInterface>()\n const { t } = useTranslation('common')\n\n if (!employeeId || !startDate) {\n throw new Error(\n t('errors.missingParamsOrContext', {\n component: 'Compensation',\n param: !employeeId ? 'employeeId' : 'startDate',\n provider: 'FlowProvider',\n }),\n )\n }\n return (\n <Compensation\n employeeId={employeeId}\n startDate={startDate}\n onEvent={onEvent}\n defaultValues={defaultValues?.compensation}\n />\n )\n}\n"],"names":["Compensation","props","useComponentDictionary","jsx","BaseComponent","Root","findCurrentCompensation","employeeJob","comp","employeeId","startDate","className","children","useI18n","baseSubmitHandler","onEvent","useBase","queryClient","useQueryClient","jobsData","useJobsAndCompensationsGetJobsSuspense","employeeJobs","addressesData","useEmployeeAddressesGetWorkAddressesSuspense","currentWorkAddress","address","minimumWageList","useLocationsGetMinimumWagesSuspense","minimumWages","employee","useEmployeesGetSuspense","data","useFederalTaxDetailsGetSuspense","showTwoPercentStakeholder","updateCompensationMutation","useJobsAndCompensationsUpdateCompensationMutation","invalidateJobsAndCompensationsGetJobs","createEmployeeJobMutation","useJobsAndCompensationsCreateJobMutation","updateEmployeeJobMutation","useJobsAndCompensationsUpdateMutation","deleteEmployeeJobMutation","useJobsAndCompensationsDeleteMutation","currentJob","setCurrentJob","useState","mode","setMode","currentCompensation","FlsaStatus","showFlsaChangeWarning","setShowFlsaChangeWarning","primaryFlsaStatus","useMemo","prev","curr","compensation","defaultValues","formMethods","useForm","zodResolver","CompensationSchema","resetField","setValue","handleSubmit","reset","useEffect","submitWithEffect","newMode","componentEvents","onSubmit","handleAdd","handleCancelAddJob","handleEdit","uuid","selectedJob","job","handleDelete","jobId","handleFlsaChange","value","payload","jobTitle","twoPercentShareholder","compensationData","updatedJobData","CompensationProvider","FormProvider","Form","jsxs","Fragment","Head","List","Edit","Actions","CompensationContextual","useFlow","t","useTranslation"],"mappings":"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"}
1
+ {"version":3,"file":"Compensation.js","sources":["../../../../src/components/Employee/Compensation/Compensation.tsx"],"sourcesContent":["import { zodResolver } from '@hookform/resolvers/zod'\nimport { useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm, type SubmitHandler } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { useJobsAndCompensationsGetJobsSuspense } from '@gusto/embedded-api/react-query/jobsAndCompensationsGetJobs'\nimport { useJobsAndCompensationsCreateJobMutation } from '@gusto/embedded-api/react-query/jobsAndCompensationsCreateJob'\nimport { useJobsAndCompensationsUpdateMutation } from '@gusto/embedded-api/react-query/jobsAndCompensationsUpdate'\nimport { useJobsAndCompensationsDeleteMutation } from '@gusto/embedded-api/react-query/jobsAndCompensationsDelete'\nimport { useJobsAndCompensationsUpdateCompensationMutation } from '@gusto/embedded-api/react-query/jobsAndCompensationsUpdateCompensation'\nimport { useLocationsGetMinimumWagesSuspense } from '@gusto/embedded-api/react-query/locationsGetMinimumWages'\nimport { useEmployeeAddressesGetWorkAddressesSuspense } from '@gusto/embedded-api/react-query/employeeAddressesGetWorkAddresses'\nimport { type Job } from '@gusto/embedded-api/models/components/job'\nimport type { FlsaStatusType } from '@gusto/embedded-api/models/components/flsastatustype'\nimport { useFederalTaxDetailsGetSuspense } from '@gusto/embedded-api/react-query/federalTaxDetailsGet'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlow'\nimport { List } from './List'\nimport { Head } from './Head'\nimport { Edit } from './Edit'\nimport { Actions } from './Actions'\nimport {\n type CompensationInputs,\n type CompensationOutputs,\n CompensationProvider,\n CompensationSchema,\n type MODE,\n} from './useCompensation'\nimport { Form } from '@/components/Common/Form'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\nimport type { PAY_PERIODS } from '@/shared/constants'\nimport { componentEvents, FlsaStatus } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport {\n BaseComponent,\n type BaseComponentInterface,\n useBase,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { useFlow } from '@/components/Flow/useFlow'\n\nexport type CompensationDefaultValues = RequireAtLeastOne<{\n rate?: Job['rate']\n title?: Job['title']\n paymentUnit?: (typeof PAY_PERIODS)[keyof typeof PAY_PERIODS]\n flsaStatus?: FlsaStatusType\n}>\n\ninterface CompensationProps extends CommonComponentInterface<'Employee.Compensation'> {\n employeeId: string\n startDate: string\n defaultValues?: CompensationDefaultValues\n}\n\nexport function Compensation(props: CompensationProps & BaseComponentInterface) {\n useComponentDictionary('Employee.Compensation', props.dictionary)\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst findCurrentCompensation = (employeeJob?: Job | null) => {\n return employeeJob?.compensations?.find(comp => comp.uuid === employeeJob.currentCompensationUuid)\n}\n\nconst Root = ({ employeeId, startDate, className, children, ...props }: CompensationProps) => {\n useI18n('Employee.Compensation')\n const { baseSubmitHandler, onEvent } = useBase()\n\n const { data: jobsData } = useJobsAndCompensationsGetJobsSuspense({ employeeId })\n const employeeJobs = jobsData.jobList!\n\n const { data: addressesData } = useEmployeeAddressesGetWorkAddressesSuspense({ employeeId })\n const workAddresses = addressesData.employeeWorkAddressesList!\n\n const currentWorkAddress = workAddresses.find(address => address.active)!\n\n const {\n data: { minimumWageList },\n } = useLocationsGetMinimumWagesSuspense({\n locationUuid: currentWorkAddress.locationUuid!,\n })\n const minimumWages = minimumWageList!\n\n const {\n data: { employee },\n } = useEmployeesGetSuspense({ employeeId })\n\n if (!employee) {\n throw new Error('Employee not found')\n }\n\n const { data } = useFederalTaxDetailsGetSuspense({ companyId: employee.companyUuid! })\n const showTwoPercentStakeholder = data.federalTaxDetails!.taxPayerType === 'S-Corporation'\n\n const updateCompensationMutation = useJobsAndCompensationsUpdateCompensationMutation()\n const createEmployeeJobMutation = useJobsAndCompensationsCreateJobMutation()\n const updateEmployeeJobMutation = useJobsAndCompensationsUpdateMutation()\n const deleteEmployeeJobMutation = useJobsAndCompensationsDeleteMutation()\n\n //Job being edited/created\n const [currentJob, setCurrentJob] = useState<Job | null>(\n employeeJobs.length === 1 ? (employeeJobs[0] ?? null) : null,\n )\n\n const [mode, setMode] = useState<MODE>(() => {\n if (!employeeJobs.length) {\n return 'ADD_INITIAL_JOB'\n }\n\n const currentCompensation = findCurrentCompensation(employeeJobs[0])\n\n if (employeeJobs.length === 1 && currentCompensation?.flsaStatus !== FlsaStatus.NONEXEMPT) {\n return 'EDIT_INITIAL_JOB'\n }\n\n return 'LIST'\n })\n\n const [showFlsaChangeWarning, setShowFlsaChangeWarning] = useState(false)\n //Getting current compensation for a job -> the one with the most recent effective date\n const currentCompensation = findCurrentCompensation(currentJob)\n /** Returns FLSA status of a current compensation of a primary job:\n * Employees can have multiple jobs, with multiple compensations, but only 1 job is primary with 1 current compensation\n */\n const primaryFlsaStatus = useMemo<string | undefined>(() => {\n return employeeJobs.reduce<string | undefined>((prev, curr) => {\n const compensation = curr.compensations?.find(\n comp => comp.uuid === curr.currentCompensationUuid,\n )\n if (!curr.primary || !compensation) return prev\n return compensation.flsaStatus ?? prev\n }, undefined)\n }, [employeeJobs])\n\n const defaultValues: CompensationInputs = useMemo(() => {\n return {\n jobTitle:\n currentJob?.title && currentJob.title !== ''\n ? currentJob.title\n : (props.defaultValues?.title ?? ''),\n flsaStatus:\n currentCompensation?.flsaStatus ?? primaryFlsaStatus ?? props.defaultValues?.flsaStatus,\n rate: Number(currentCompensation?.rate ?? props.defaultValues?.rate ?? 0),\n adjustForMinimumWage: currentCompensation?.adjustForMinimumWage ?? false,\n minimumWageId: currentCompensation?.minimumWages?.[0]?.uuid ?? '',\n paymentUnit: currentCompensation?.paymentUnit ?? props.defaultValues?.paymentUnit ?? 'Hour',\n stateWcCovered: currentJob?.stateWcCovered ?? false,\n stateWcClassCode: currentJob?.stateWcClassCode ?? '',\n } as CompensationInputs\n }, [currentJob, currentCompensation, primaryFlsaStatus, props.defaultValues])\n\n const formMethods = useForm<CompensationInputs, unknown, CompensationOutputs>({\n resolver: zodResolver(CompensationSchema),\n defaultValues,\n })\n const { resetField, setValue, handleSubmit, reset } = formMethods\n useEffect(() => {\n reset(defaultValues)\n }, [currentJob, defaultValues, reset])\n\n const submitWithEffect = async (newMode?: MODE) => {\n if (mode === 'LIST' && newMode === 'PROCEED') {\n onEvent(componentEvents.EMPLOYEE_COMPENSATION_DONE)\n return\n }\n //If no job has been modified, switch to edit mode\n if (!currentJob && mode === 'LIST') {\n setMode('ADD_ADDITIONAL_JOB')\n return\n }\n //Performing post-submit state setting only on success\n await handleSubmit(async (data: CompensationOutputs) => {\n await onSubmit(data)\n switch (newMode) {\n case 'LIST':\n setMode('LIST')\n setCurrentJob(null)\n reset(defaultValues)\n break\n default:\n onEvent(componentEvents.EMPLOYEE_COMPENSATION_DONE)\n }\n })()\n }\n const handleAdd = () => {\n setMode('ADD_ADDITIONAL_JOB')\n setCurrentJob(null)\n reset(defaultValues)\n }\n\n const handleCancelAddJob = () => {\n if (employeeJobs.length > 0) {\n setMode('LIST')\n } else {\n setMode('ADD_INITIAL_JOB')\n }\n\n setCurrentJob(null)\n reset(defaultValues)\n }\n\n const handleEdit = (uuid: string) => {\n const selectedJob = employeeJobs.find(job => uuid === job.uuid)\n if (selectedJob) {\n setMode('EDIT_ADDITIONAL_JOB')\n setCurrentJob(selectedJob)\n }\n }\n\n const handleDelete = async (jobId: string) => {\n await deleteEmployeeJobMutation.mutateAsync({ request: { jobId } })\n onEvent(componentEvents.EMPLOYEE_JOB_DELETED)\n }\n\n /**Update dependent field values upon change in FLSA type */\n const handleFlsaChange = (value: string | number) => {\n //Attempting to change flsa status from nonexempt should prompt user about deletion of other jobs associated with the employee\n if (currentCompensation?.flsaStatus === FlsaStatus.NONEXEMPT && employeeJobs.length > 1) {\n setShowFlsaChangeWarning(true)\n }\n if (value === FlsaStatus.OWNER) {\n setValue('paymentUnit', 'Paycheck')\n resetField('rate', { defaultValue: Number(currentCompensation?.rate) })\n } else if (\n value === FlsaStatus.COMMISSION_ONLY_NONEXEMPT ||\n value === FlsaStatus.COMMISSION_ONLY_EXEMPT\n ) {\n setValue('paymentUnit', 'Year')\n setValue('rate', 0)\n } else {\n //reset fields\n resetField('paymentUnit', { defaultValue: currentCompensation?.paymentUnit })\n resetField('rate', { defaultValue: Number(currentCompensation?.rate) })\n }\n }\n\n const onSubmit: SubmitHandler<CompensationOutputs> = async data => {\n await baseSubmitHandler(data, async payload => {\n const { jobTitle, twoPercentShareholder, ...compensationData } = payload\n let updatedJobData\n //Note: some of the type fixes below are due to the fact that API incorrectly defines current_compensation_uuid as optional\n if (!currentJob) {\n //Adding new job for NONEXEMPT\n const data = await createEmployeeJobMutation.mutateAsync({\n request: {\n employeeId,\n requestBody: {\n title: jobTitle,\n hireDate: startDate,\n stateWcCovered: compensationData.stateWcCovered,\n stateWcClassCode: compensationData.stateWcCovered\n ? compensationData.stateWcClassCode\n : null,\n twoPercentShareholder: twoPercentShareholder ?? false,\n },\n },\n })\n updatedJobData = data.job!\n onEvent(componentEvents.EMPLOYEE_JOB_CREATED, updatedJobData)\n } else {\n const data = await updateEmployeeJobMutation.mutateAsync({\n request: {\n jobId: currentJob.uuid,\n requestBody: {\n title: jobTitle,\n version: currentJob.version as string,\n hireDate: startDate,\n stateWcClassCode: compensationData.stateWcCovered\n ? compensationData.stateWcClassCode\n : null,\n stateWcCovered: compensationData.stateWcCovered,\n twoPercentShareholder: twoPercentShareholder ?? false,\n },\n },\n })\n updatedJobData = data.job!\n onEvent(componentEvents.EMPLOYEE_JOB_UPDATED, updatedJobData)\n }\n\n const { compensation } = await updateCompensationMutation.mutateAsync({\n request: {\n compensationId: updatedJobData.currentCompensationUuid!,\n requestBody: {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n version: updatedJobData.compensations?.find(\n comp => comp.uuid === updatedJobData.currentCompensationUuid,\n )?.version!,\n ...compensationData,\n rate: String(compensationData.rate),\n minimumWages: compensationData.adjustForMinimumWage\n ? [{ uuid: compensationData.minimumWageId }]\n : [],\n },\n },\n })\n setShowFlsaChangeWarning(false)\n onEvent(componentEvents.EMPLOYEE_COMPENSATION_UPDATED, compensation)\n })\n }\n return (\n <section className={className}>\n <CompensationProvider\n value={{\n employeeJobs,\n currentJob,\n primaryFlsaStatus,\n showFlsaChangeWarning,\n mode,\n minimumWages,\n handleFlsaChange,\n handleDelete,\n handleEdit,\n handleAdd,\n submitWithEffect,\n handleCancelAddJob,\n isPending:\n updateCompensationMutation.isPending ||\n createEmployeeJobMutation.isPending ||\n updateEmployeeJobMutation.isPending ||\n deleteEmployeeJobMutation.isPending,\n state: currentWorkAddress.state,\n showTwoPercentStakeholder,\n }}\n >\n <FormProvider {...formMethods}>\n <Form>\n {children ? (\n children\n ) : (\n <>\n <Head />\n <List />\n <Edit />\n <Actions />\n </>\n )}\n </Form>\n </FormProvider>\n </CompensationProvider>\n </section>\n )\n}\n\nCompensation.Head = Head\nCompensation.List = List\nCompensation.Actions = Actions\nCompensation.Edit = Edit\n\nexport const CompensationContextual = () => {\n const { employeeId, onEvent, startDate, defaultValues } = useFlow<OnboardingContextInterface>()\n const { t } = useTranslation('common')\n\n if (!employeeId || !startDate) {\n throw new Error(\n t('errors.missingParamsOrContext', {\n component: 'Compensation',\n param: !employeeId ? 'employeeId' : 'startDate',\n provider: 'FlowProvider',\n }),\n )\n }\n return (\n <Compensation\n employeeId={employeeId}\n startDate={startDate}\n onEvent={onEvent}\n defaultValues={defaultValues?.compensation}\n />\n )\n}\n"],"names":["Compensation","props","useComponentDictionary","jsx","BaseComponent","Root","findCurrentCompensation","employeeJob","comp","employeeId","startDate","className","children","useI18n","baseSubmitHandler","onEvent","useBase","jobsData","useJobsAndCompensationsGetJobsSuspense","employeeJobs","addressesData","useEmployeeAddressesGetWorkAddressesSuspense","currentWorkAddress","address","minimumWageList","useLocationsGetMinimumWagesSuspense","minimumWages","employee","useEmployeesGetSuspense","data","useFederalTaxDetailsGetSuspense","showTwoPercentStakeholder","updateCompensationMutation","useJobsAndCompensationsUpdateCompensationMutation","createEmployeeJobMutation","useJobsAndCompensationsCreateJobMutation","updateEmployeeJobMutation","useJobsAndCompensationsUpdateMutation","deleteEmployeeJobMutation","useJobsAndCompensationsDeleteMutation","currentJob","setCurrentJob","useState","mode","setMode","currentCompensation","FlsaStatus","showFlsaChangeWarning","setShowFlsaChangeWarning","primaryFlsaStatus","useMemo","prev","curr","compensation","defaultValues","formMethods","useForm","zodResolver","CompensationSchema","resetField","setValue","handleSubmit","reset","useEffect","submitWithEffect","newMode","componentEvents","onSubmit","handleAdd","handleCancelAddJob","handleEdit","uuid","selectedJob","job","handleDelete","jobId","handleFlsaChange","value","payload","jobTitle","twoPercentShareholder","compensationData","updatedJobData","CompensationProvider","FormProvider","Form","jsxs","Fragment","Head","List","Edit","Actions","CompensationContextual","useFlow","t","useTranslation"],"mappings":"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"}