@gusto/embedded-react-sdk 0.13.4 → 0.14.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.
- package/CHANGELOG.md +20 -0
- package/dist/assets/icons/spinner_large.svg.js +10 -0
- package/dist/assets/icons/spinner_large.svg.js.map +1 -0
- package/dist/components/Common/Flex/Flex.js +16 -12
- package/dist/components/Common/Flex/Flex.js.map +1 -1
- package/dist/components/Common/Loading/Loading.d.ts +5 -1
- package/dist/components/Common/Loading/Loading.js +9 -9
- package/dist/components/Common/Loading/Loading.js.map +1 -1
- package/dist/components/Common/Loading/Loading.module.scss.js +1 -1
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.d.ts +3 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.js +25 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.js.map +1 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.module.scss.js +10 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.module.scss.js.map +1 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes.d.ts +18 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes.js +8 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes.js.map +1 -0
- package/dist/components/Common/UI/LoadingSpinner/index.d.ts +4 -0
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js +0 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
- package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +9 -8
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +7 -6
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +4 -3
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/usePaySchedule.js +6 -5
- package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Contractor/Address/useAddress.js +6 -5
- package/dist/components/Contractor/Address/useAddress.js.map +1 -1
- package/dist/components/Contractor/Profile/useContractorProfile.js +3 -2
- package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +3 -2
- package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +25 -24
- package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +4 -3
- package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
- package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
- package/dist/components/Employee/EmployeeList/useEmployeeList.js +4 -3
- package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +4 -3
- package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +6 -5
- package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
- package/dist/components/Employee/Profile/useProfile.js +4 -3
- package/dist/components/Employee/Profile/useProfile.js.map +1 -1
- package/dist/components/Employee/StateTaxes/useStateTaxes.js +4 -3
- package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
- package/dist/components/Employee/Taxes/useTaxes.js +4 -3
- package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerAlerts.d.ts +10 -3
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerAlerts.js +54 -0
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerAlerts.js.map +1 -0
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerList.d.ts +14 -1
- package/dist/components/Payroll/PayrollBlocker/index.d.ts +1 -2
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.d.ts +27 -0
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +39 -0
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -0
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +76 -66
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +4 -2
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +157 -122
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.module.scss.js +8 -0
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +39 -36
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.d.ts +2 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js +28 -36
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.d.ts +15 -0
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +62 -0
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -0
- package/dist/components/Payroll/PayrollLanding/payrollLandingStateMachine.d.ts +5 -0
- package/dist/components/Payroll/PayrollLanding/payrollLandingStateMachine.js +93 -0
- package/dist/components/Payroll/PayrollLanding/payrollLandingStateMachine.js.map +1 -0
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +2 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +49 -45
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +309 -263
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.d.ts +2 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +26 -12
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +2 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +44 -40
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/index.d.ts +1 -1
- package/dist/components/Payroll/index.js +6 -8
- package/dist/components/Payroll/index.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +40 -24
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +28 -26
- package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.d.ts +5 -0
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js +28 -23
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js.map +1 -1
- package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +2 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.d.ts +3 -1
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js +8 -8
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js.map +1 -1
- package/dist/hooks/useContainerBreakpoints/useContainerBreakpoints.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +19 -19
- package/dist/i18n/en/Payroll.PayrollOverview.json.js +50 -44
- package/dist/i18n/en/Payroll.PayrollOverview.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollReceipts.json.js +14 -12
- package/dist/i18n/en/Payroll.PayrollReceipts.json.js.map +1 -1
- package/dist/i18n/en/PayrollBlocker.json.js +17 -11
- package/dist/i18n/en/PayrollBlocker.json.js.map +1 -1
- package/dist/shared/constants.d.ts +1 -1
- package/dist/shared/constants.js +1 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/i18next.d.ts +145 -3
- package/package.json +16 -16
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerTypes.d.ts +0 -101
- package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js +0 -126
- package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js.map +0 -1
- package/dist/components/Payroll/RunPayrollFlow/RunPayrollFlow.js +0 -22
- package/dist/components/Payroll/RunPayrollFlow/RunPayrollFlow.js.map +0 -1
|
@@ -1,143 +1,178 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useTranslation as k } from "react-i18next";
|
|
3
|
-
import { useFormatEmployeePayRate as
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
1
|
+
import { jsxs as a, jsx as e, Fragment as I } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as M, Trans as k } from "react-i18next";
|
|
3
|
+
import { useFormatEmployeePayRate as R, getRegularHours as S, getOvertimeHours as j, formatHoursDisplay as C, getTotalPtoHours as G, getAdditionalEarnings as O, getReimbursements as _, calculateGrossPay as z } from "../helpers.js";
|
|
4
|
+
import { PayrollBlockerAlerts as K } from "../PayrollBlocker/PayrollBlockerAlerts.js";
|
|
5
|
+
import V from "./PayrollConfigurationPresentation.module.scss.js";
|
|
6
|
+
import { useI18n as W } from "../../../i18n/I18n.js";
|
|
7
|
+
import { Flex as u, FlexItem as w } from "../../Common/Flex/Flex.js";
|
|
8
|
+
import { Grid as q } from "../../Common/Grid/Grid.js";
|
|
9
|
+
import { useComponentContext as J } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
10
|
+
import { HamburgerMenu as Q } from "../../Common/HamburgerMenu/HamburgerMenu.js";
|
|
11
|
+
import X from "../../../assets/icons/pencil.svg.js";
|
|
12
|
+
import { formatNumberAsCurrency as f, firstLastName as Y } from "../../../helpers/formattedStrings.js";
|
|
11
13
|
import { parseDateStringToLocal as P } from "../../../helpers/dateFormatting.js";
|
|
12
|
-
import { useLocale as
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
import { useLocale as Z } from "../../../contexts/LocaleProvider/useLocale.js";
|
|
15
|
+
import { useLoadingIndicator as $ } from "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
16
|
+
import { DataView as ee } from "../../Common/DataView/DataView.js";
|
|
17
|
+
const te = ({
|
|
18
|
+
payPeriod: s,
|
|
19
|
+
locale: c
|
|
18
20
|
}) => {
|
|
19
|
-
if (
|
|
20
|
-
const
|
|
21
|
-
if (
|
|
22
|
-
const
|
|
21
|
+
if (s?.startDate && s.endDate) {
|
|
22
|
+
const m = P(s.startDate), d = P(s.endDate);
|
|
23
|
+
if (m && d) {
|
|
24
|
+
const p = m.toLocaleDateString(c, {
|
|
23
25
|
month: "long",
|
|
24
26
|
day: "numeric"
|
|
25
|
-
}),
|
|
27
|
+
}), g = d.toLocaleDateString(c, {
|
|
26
28
|
month: "short",
|
|
27
29
|
day: "numeric",
|
|
28
30
|
year: "numeric"
|
|
29
31
|
});
|
|
30
|
-
return
|
|
32
|
+
return { startDate: p, endDate: g };
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
|
-
return
|
|
34
|
-
},
|
|
35
|
-
employeeCompensations:
|
|
36
|
-
employeeDetails:
|
|
37
|
-
payPeriod:
|
|
38
|
-
paySchedule:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
onCalculatePayroll: p,
|
|
35
|
+
return { startDate: "", endDate: "" };
|
|
36
|
+
}, be = ({
|
|
37
|
+
employeeCompensations: s,
|
|
38
|
+
employeeDetails: c,
|
|
39
|
+
payPeriod: m,
|
|
40
|
+
paySchedule: d,
|
|
41
|
+
onEdit: p,
|
|
42
|
+
onCalculatePayroll: g,
|
|
42
43
|
isOffCycle: T = !1,
|
|
43
|
-
alerts:
|
|
44
|
+
alerts: y,
|
|
45
|
+
isPending: b,
|
|
46
|
+
payrollBlockers: D = []
|
|
44
47
|
}) => {
|
|
45
|
-
const { Button:
|
|
46
|
-
|
|
47
|
-
const { t: n } =
|
|
48
|
-
const
|
|
49
|
-
return
|
|
48
|
+
const { Button: x, Heading: h, Text: o, Badge: N, LoadingSpinner: L } = J();
|
|
49
|
+
W("Payroll.PayrollConfiguration");
|
|
50
|
+
const { t: n } = M("Payroll.PayrollConfiguration"), { locale: H } = Z(), { LoadingIndicator: U } = $(), A = R(), i = new Map(c.map((t) => [t.uuid, t])), E = (t) => {
|
|
51
|
+
const r = i.get(t);
|
|
52
|
+
return r ? Y({ first_name: r.firstName, last_name: r.lastName }) : null;
|
|
50
53
|
};
|
|
51
|
-
return /* @__PURE__ */
|
|
52
|
-
/* @__PURE__ */
|
|
53
|
-
/* @__PURE__ */
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
f && /* @__PURE__ */ r(G, { gap: 16, gridTemplateColumns: "1fr", children: f }),
|
|
58
|
-
/* @__PURE__ */ r(C, { as: "h3", children: n("hoursAndEarningsTitle") }),
|
|
59
|
-
/* @__PURE__ */ r(o, { children: n("hoursAndEarningsDescription") }),
|
|
60
|
-
/* @__PURE__ */ r(
|
|
61
|
-
z,
|
|
62
|
-
{
|
|
63
|
-
label: n("employeeCompensationsTitle"),
|
|
64
|
-
columns: [
|
|
65
|
-
{
|
|
66
|
-
title: /* @__PURE__ */ r(o, { weight: "semibold", children: n("tableColumns.employees") }),
|
|
67
|
-
render: (e) => {
|
|
68
|
-
const t = a.get(e.employeeUuid || ""), l = N(t);
|
|
69
|
-
return /* @__PURE__ */ g(h, { flexDirection: "column", gap: 8, children: [
|
|
70
|
-
/* @__PURE__ */ r(o, { weight: "semibold", children: H(e.employeeUuid || "") }),
|
|
71
|
-
l && /* @__PURE__ */ r(o, { variant: "supporting", children: l }),
|
|
72
|
-
e.excluded && /* @__PURE__ */ r(w, { status: "warning", children: n("skippedBadge") })
|
|
73
|
-
] });
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
title: /* @__PURE__ */ r(o, { weight: "semibold", children: n("tableColumns.hours") }),
|
|
78
|
-
render: (e) => {
|
|
79
|
-
const t = L(e), l = M(e);
|
|
80
|
-
return /* @__PURE__ */ r(o, { children: D(t + l) });
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
title: /* @__PURE__ */ r(o, { weight: "semibold", children: n("tableColumns.timeOff") }),
|
|
85
|
-
render: (e) => {
|
|
86
|
-
const t = v(e);
|
|
87
|
-
return /* @__PURE__ */ r(o, { children: D(t) });
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
title: /* @__PURE__ */ r(o, { weight: "semibold", children: n("tableColumns.additionalEarnings") }),
|
|
92
|
-
render: (e) => {
|
|
93
|
-
const t = R(e);
|
|
94
|
-
return /* @__PURE__ */ r(o, { children: y(t) });
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
title: /* @__PURE__ */ r(o, { weight: "semibold", children: n("tableColumns.reimbursements") }),
|
|
99
|
-
render: (e) => {
|
|
100
|
-
const t = F(e);
|
|
101
|
-
return /* @__PURE__ */ r(o, { children: y(t) });
|
|
102
|
-
}
|
|
103
|
-
},
|
|
54
|
+
return /* @__PURE__ */ a(u, { flexDirection: "column", gap: 16, children: [
|
|
55
|
+
/* @__PURE__ */ a(u, { justifyContent: "space-between", alignItems: "center", children: [
|
|
56
|
+
/* @__PURE__ */ a(w, { children: [
|
|
57
|
+
/* @__PURE__ */ e(h, { as: "h1", children: n("pageTitle") }),
|
|
58
|
+
/* @__PURE__ */ e(o, { children: /* @__PURE__ */ e(
|
|
59
|
+
k,
|
|
104
60
|
{
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
61
|
+
i18nKey: "description",
|
|
62
|
+
t: n,
|
|
63
|
+
components: { dateWrapper: /* @__PURE__ */ e(o, { weight: "bold", as: "span" }) },
|
|
64
|
+
values: te({ payPeriod: m, locale: H })
|
|
110
65
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
66
|
+
) })
|
|
67
|
+
] }),
|
|
68
|
+
/* @__PURE__ */ e(
|
|
69
|
+
x,
|
|
70
|
+
{
|
|
71
|
+
title: n("calculatePayrollTitle"),
|
|
72
|
+
onClick: g,
|
|
73
|
+
isDisabled: b,
|
|
74
|
+
children: n("calculatePayroll")
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
] }),
|
|
78
|
+
y && /* @__PURE__ */ e(q, { gap: 16, gridTemplateColumns: "1fr", children: y }),
|
|
79
|
+
b ? /* @__PURE__ */ e(U, { children: /* @__PURE__ */ a(u, { flexDirection: "column", alignItems: "center", gap: 4, children: [
|
|
80
|
+
/* @__PURE__ */ e(L, { size: "lg" }),
|
|
81
|
+
/* @__PURE__ */ e(h, { as: "h4", children: n("loadingTitle") }),
|
|
82
|
+
/* @__PURE__ */ e(o, { children: n("loadingDescription") })
|
|
83
|
+
] }) }) : /* @__PURE__ */ a(I, { children: [
|
|
84
|
+
/* @__PURE__ */ e("div", { className: V.payrollBlockerContainer, children: D.length > 0 && /* @__PURE__ */ e(K, { blockers: D }) }),
|
|
85
|
+
/* @__PURE__ */ a(w, { children: [
|
|
86
|
+
/* @__PURE__ */ e(h, { as: "h3", children: n("hoursAndEarningsTitle") }),
|
|
87
|
+
/* @__PURE__ */ e(o, { children: n("hoursAndEarningsDescription") })
|
|
88
|
+
] }),
|
|
89
|
+
/* @__PURE__ */ e(
|
|
90
|
+
ee,
|
|
91
|
+
{
|
|
92
|
+
label: n("employeeCompensationsTitle"),
|
|
93
|
+
columns: [
|
|
94
|
+
{
|
|
95
|
+
title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.employees") }),
|
|
96
|
+
render: (t) => {
|
|
97
|
+
const r = i.get(t.employeeUuid || ""), l = A(r);
|
|
98
|
+
return /* @__PURE__ */ a(u, { flexDirection: "column", gap: 8, children: [
|
|
99
|
+
/* @__PURE__ */ e(o, { weight: "semibold", children: E(t.employeeUuid || "") }),
|
|
100
|
+
l && /* @__PURE__ */ e(o, { variant: "supporting", children: l }),
|
|
101
|
+
t.excluded && /* @__PURE__ */ e(N, { status: "warning", children: n("skippedBadge") })
|
|
102
|
+
] });
|
|
130
103
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.hours") }),
|
|
107
|
+
render: (t) => {
|
|
108
|
+
const r = S(t), l = j(t);
|
|
109
|
+
return /* @__PURE__ */ e(o, { children: C(r + l) });
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.timeOff") }),
|
|
114
|
+
render: (t) => {
|
|
115
|
+
const r = G(t);
|
|
116
|
+
return /* @__PURE__ */ e(o, { children: C(r) });
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.additionalEarnings") }),
|
|
121
|
+
render: (t) => {
|
|
122
|
+
const r = O(t);
|
|
123
|
+
return /* @__PURE__ */ e(o, { children: f(r) });
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.reimbursements") }),
|
|
128
|
+
render: (t) => {
|
|
129
|
+
const r = _(t);
|
|
130
|
+
return /* @__PURE__ */ e(o, { children: f(r) });
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.totalPay") }),
|
|
135
|
+
render: (t) => {
|
|
136
|
+
const r = i.get(t.employeeUuid || ""), l = r ? z(
|
|
137
|
+
t,
|
|
138
|
+
r,
|
|
139
|
+
m?.startDate,
|
|
140
|
+
d,
|
|
141
|
+
T
|
|
142
|
+
) : 0;
|
|
143
|
+
return /* @__PURE__ */ e(o, { children: f(l) });
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
data: s.filter((t) => {
|
|
148
|
+
const r = t.employeeUuid;
|
|
149
|
+
return r ? i.has(r) : !1;
|
|
150
|
+
}).sort((t, r) => {
|
|
151
|
+
const l = i.get(t.employeeUuid || ""), v = i.get(r.employeeUuid || ""), B = l?.lastName || "", F = v?.lastName || "";
|
|
152
|
+
return B.localeCompare(F);
|
|
153
|
+
}),
|
|
154
|
+
itemMenu: (t) => /* @__PURE__ */ e(
|
|
155
|
+
Q,
|
|
156
|
+
{
|
|
157
|
+
items: [
|
|
158
|
+
{
|
|
159
|
+
label: n("editMenu.edit"),
|
|
160
|
+
icon: /* @__PURE__ */ e(X, { "aria-hidden": !0 }),
|
|
161
|
+
onClick: () => {
|
|
162
|
+
const r = i.get(t.employeeUuid || "");
|
|
163
|
+
r && p(r);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
triggerLabel: n("editMenu.edit")
|
|
168
|
+
}
|
|
169
|
+
)
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
] })
|
|
138
173
|
] });
|
|
139
174
|
};
|
|
140
175
|
export {
|
|
141
|
-
|
|
176
|
+
be as PayrollConfigurationPresentation
|
|
142
177
|
};
|
|
143
178
|
//# sourceMappingURL=PayrollConfigurationPresentation.js.map
|
package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport 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 type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, Grid } 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 alerts?: ReactNode\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 alerts,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\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 {alerts && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {alerts}\n </Grid>\n )}\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 const overtimeHours = getOvertimeHours(item)\n return <Text>{formatHoursDisplay(hours + overtimeHours)}</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: PayrollEmployeeCompensationsType) => {\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","alerts","Button","Heading","Text","Badge","useComponentContext","useI18n","useTranslation","useLocale","formatEmployeePayRate","useFormatEmployeePayRate","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsxs","Flex","jsx","Grid","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","compensation","a","b","employeeA","employeeB","lastNameA","lastNameB","HamburgerMenu","PencilSvg"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport 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 { Trans, useTranslation } from 'react-i18next'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '../PayrollBlocker/PayrollBlockerAlerts'\nimport styles from './PayrollConfigurationPresentation.module.scss'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, FlexItem, Grid } 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'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\n\ninterface PayrollConfigurationPresentationProps {\n employeeCompensations: EmployeeCompensations[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n isOffCycle?: boolean\n alerts?: ReactNode\n isPending?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n}\n\nconst getPayrollConfigurationTitle = ({\n payPeriod,\n locale,\n}: {\n payPeriod?: PayrollPayPeriodType\n locale: string\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 { startDate: startFormatted, endDate: endFormatted }\n }\n }\n return { startDate: '', endDate: '' }\n}\n\nexport const PayrollConfigurationPresentation = ({\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onCalculatePayroll,\n isOffCycle = false,\n alerts,\n isPending,\n payrollBlockers = [],\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, LoadingSpinner } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { locale } = useLocale()\n const { LoadingIndicator } = useLoadingIndicator()\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 <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n <Text>\n <Trans\n i18nKey=\"description\"\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={getPayrollConfigurationTitle({ payPeriod, locale })}\n />\n </Text>\n </FlexItem>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n </Flex>\n\n {alerts && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <LoadingIndicator>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={4}>\n <LoadingSpinner size=\"lg\" />\n <Heading as=\"h4\">{t('loadingTitle')}</Heading>\n <Text>{t('loadingDescription')}</Text>\n </Flex>\n </LoadingIndicator>\n ) : (\n <>\n <div className={styles.payrollBlockerContainer}>\n {payrollBlockers.length > 0 && <PayrollBlockerAlerts blockers={payrollBlockers} />}\n </div>\n <FlexItem>\n <Heading as=\"h3\">{t('hoursAndEarningsTitle')}</Heading>\n <Text>{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\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 const overtimeHours = getOvertimeHours(item)\n return <Text>{formatHoursDisplay(hours + overtimeHours)}</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: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate,\n paySchedule,\n isOffCycle,\n )\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 )}\n </Flex>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","locale","startDate","parseDateStringToLocal","endDate","startFormatted","endFormatted","PayrollConfigurationPresentation","employeeCompensations","employeeDetails","paySchedule","onEdit","onCalculatePayroll","isOffCycle","alerts","isPending","payrollBlockers","Button","Heading","Text","Badge","LoadingSpinner","useComponentContext","useI18n","t","useTranslation","useLocale","LoadingIndicator","useLoadingIndicator","formatEmployeePayRate","useFormatEmployeePayRate","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsxs","Flex","FlexItem","jsx","Trans","Grid","Fragment","styles","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","compensation","a","b","employeeA","employeeB","lastNameA","lastNameB","HamburgerMenu","PencilSvg"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayrollConfigurationPresentation.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -2,68 +2,71 @@ import { jsx as n } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEmployeesGetSuspense as A } from "@gusto/embedded-api/react-query/employeesGet";
|
|
3
3
|
import { usePayrollsUpdateMutation as O } from "@gusto/embedded-api/react-query/payrollsUpdate";
|
|
4
4
|
import { usePreparedPayrollData as R } from "../usePreparedPayrollData.js";
|
|
5
|
-
import { PayrollEditEmployeePresentation as
|
|
6
|
-
import { componentEvents as
|
|
7
|
-
import { BaseComponent as
|
|
8
|
-
import { useComponentDictionary as
|
|
9
|
-
import { useBase as
|
|
10
|
-
function
|
|
11
|
-
return /* @__PURE__ */ n(
|
|
5
|
+
import { PayrollEditEmployeePresentation as U } from "./PayrollEditEmployeePresentation.js";
|
|
6
|
+
import { componentEvents as m } from "../../../shared/constants.js";
|
|
7
|
+
import { BaseComponent as x } from "../../Base/Base.js";
|
|
8
|
+
import { useComponentDictionary as Y } from "../../../i18n/I18n.js";
|
|
9
|
+
import { useBase as g } from "../../Base/useBase.js";
|
|
10
|
+
function G(o) {
|
|
11
|
+
return /* @__PURE__ */ n(x, { ...o, children: /* @__PURE__ */ n(N, { ...o, children: o.children }) });
|
|
12
12
|
}
|
|
13
|
-
const
|
|
13
|
+
const N = ({
|
|
14
14
|
employeeId: o,
|
|
15
15
|
companyId: a,
|
|
16
16
|
payrollId: s,
|
|
17
17
|
onEvent: i,
|
|
18
18
|
dictionary: p
|
|
19
19
|
}) => {
|
|
20
|
-
|
|
21
|
-
const { LoadingIndicator: y } =
|
|
20
|
+
Y("Payroll.PayrollEditEmployee", p);
|
|
21
|
+
const { LoadingIndicator: y, baseSubmitHandler: c } = g(), { data: d } = A({ employeeId: o }), { preparedPayroll: t, paySchedule: f, isLoading: u } = R({
|
|
22
22
|
companyId: a,
|
|
23
23
|
payrollId: s
|
|
24
|
-
}), { mutateAsync: P, isPending:
|
|
24
|
+
}), { mutateAsync: P, isPending: E } = O(), l = d.employee, C = t?.employeeCompensations?.find(
|
|
25
25
|
(e) => e.employeeUuid === o
|
|
26
|
-
),
|
|
26
|
+
), L = ({
|
|
27
27
|
paymentMethod: e,
|
|
28
28
|
...r
|
|
29
29
|
}) => ({
|
|
30
30
|
...r,
|
|
31
31
|
...e && e !== "Historical" ? { paymentMethod: e } : {},
|
|
32
32
|
memo: r.memo || void 0
|
|
33
|
-
}),
|
|
34
|
-
const r =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
}), D = async (e) => {
|
|
34
|
+
const r = L(e);
|
|
35
|
+
await c(null, async () => {
|
|
36
|
+
const _ = await P({
|
|
37
|
+
request: {
|
|
38
|
+
companyId: a,
|
|
39
|
+
payrollId: s,
|
|
40
|
+
payrollUpdate: {
|
|
41
|
+
employeeCompensations: [r]
|
|
42
|
+
}
|
|
40
43
|
}
|
|
41
|
-
}
|
|
44
|
+
});
|
|
45
|
+
i(m.RUN_PAYROLL_EMPLOYEE_SAVED, {
|
|
46
|
+
payrollPrepared: _.payrollPrepared,
|
|
47
|
+
employee: l
|
|
48
|
+
});
|
|
42
49
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
employee: m
|
|
46
|
-
});
|
|
47
|
-
}, D = () => {
|
|
48
|
-
i(l.RUN_PAYROLL_EMPLOYEE_CANCELLED);
|
|
50
|
+
}, S = () => {
|
|
51
|
+
i(m.RUN_PAYROLL_EMPLOYEE_CANCELLED);
|
|
49
52
|
};
|
|
50
|
-
return
|
|
51
|
-
|
|
53
|
+
return u ? /* @__PURE__ */ n(y, {}) : /* @__PURE__ */ n(
|
|
54
|
+
U,
|
|
52
55
|
{
|
|
53
|
-
onSave:
|
|
54
|
-
onCancel:
|
|
55
|
-
employee:
|
|
56
|
-
isPending:
|
|
57
|
-
employeeCompensation:
|
|
56
|
+
onSave: D,
|
|
57
|
+
onCancel: S,
|
|
58
|
+
employee: l,
|
|
59
|
+
isPending: E,
|
|
60
|
+
employeeCompensation: C,
|
|
58
61
|
fixedCompensationTypes: t?.fixedCompensationTypes || [],
|
|
59
62
|
payPeriodStartDate: t?.payPeriod?.startDate,
|
|
60
|
-
paySchedule:
|
|
63
|
+
paySchedule: f,
|
|
61
64
|
isOffCycle: t?.offCycle
|
|
62
65
|
}
|
|
63
66
|
);
|
|
64
67
|
};
|
|
65
68
|
export {
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
G as PayrollEditEmployee,
|
|
70
|
+
N as Root
|
|
68
71
|
};
|
|
69
72
|
//# sourceMappingURL=PayrollEditEmployee.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.tsx"],"sourcesContent":["import { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { PayrollEditEmployeePresentation } from './PayrollEditEmployeePresentation'\nimport { componentEvents } from '@/shared/constants'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useComponentDictionary } from '@/i18n'\nimport { useBase } from '@/components/Base/useBase'\n\ninterface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.PayrollEditEmployee'> {\n employeeId: string\n companyId: string\n payrollId: string\n}\n\nexport function PayrollEditEmployee(props: PayrollEditEmployeeProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n employeeId,\n companyId,\n payrollId,\n onEvent,\n dictionary,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.PayrollEditEmployee', dictionary)\n\n const { LoadingIndicator } = useBase()\n\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const { preparedPayroll, paySchedule, isLoading } = usePreparedPayrollData({\n companyId,\n payrollId,\n })\n\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const employee = employeeData.employee!\n\n const employeeCompensation = preparedPayroll?.employeeCompensations?.find(\n compensation => compensation.employeeUuid === employeeId,\n )\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n\n const onSave = async (updatedCompensation: PayrollEmployeeCompensationsType) => {\n const transformedCompensation = transformEmployeeCompensation(updatedCompensation)\n\n
|
|
1
|
+
{"version":3,"file":"PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.tsx"],"sourcesContent":["import { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { PayrollEditEmployeePresentation } from './PayrollEditEmployeePresentation'\nimport { componentEvents } from '@/shared/constants'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useComponentDictionary } from '@/i18n'\nimport { useBase } from '@/components/Base/useBase'\n\ninterface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.PayrollEditEmployee'> {\n employeeId: string\n companyId: string\n payrollId: string\n}\n\nexport function PayrollEditEmployee(props: PayrollEditEmployeeProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n employeeId,\n companyId,\n payrollId,\n onEvent,\n dictionary,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.PayrollEditEmployee', dictionary)\n\n const { LoadingIndicator, baseSubmitHandler } = useBase()\n\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const { preparedPayroll, paySchedule, isLoading } = usePreparedPayrollData({\n companyId,\n payrollId,\n })\n\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const employee = employeeData.employee!\n\n const employeeCompensation = preparedPayroll?.employeeCompensations?.find(\n compensation => compensation.employeeUuid === employeeId,\n )\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n\n const onSave = async (updatedCompensation: PayrollEmployeeCompensationsType) => {\n const transformedCompensation = transformEmployeeCompensation(updatedCompensation)\n await baseSubmitHandler(null, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [transformedCompensation],\n },\n },\n })\n\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n employee,\n })\n })\n }\n\n const onCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n if (isLoading) {\n return <LoadingIndicator />\n }\n\n return (\n <PayrollEditEmployeePresentation\n onSave={onSave}\n onCancel={onCancel}\n employee={employee}\n isPending={isPending}\n employeeCompensation={employeeCompensation}\n fixedCompensationTypes={preparedPayroll?.fixedCompensationTypes || []}\n payPeriodStartDate={preparedPayroll?.payPeriod?.startDate}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n />\n )\n}\n"],"names":["PayrollEditEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","payrollId","onEvent","dictionary","useComponentDictionary","LoadingIndicator","baseSubmitHandler","useBase","employeeData","useEmployeesGetSuspense","preparedPayroll","paySchedule","isLoading","usePreparedPayrollData","updatePayroll","isPending","usePayrollsUpdateMutation","employee","employeeCompensation","compensation","transformEmployeeCompensation","paymentMethod","onSave","updatedCompensation","transformedCompensation","result","componentEvents","onCancel","PayrollEditEmployeePresentation"],"mappings":";;;;;;;;;AAkBO,SAASA,EAAoBC,GAA0D;AAC5F,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEO,MAAMG,IAAO,CAAC;AAAA,EACnB,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AACF,MAAgC;AAC9B,EAAAC,EAAuB,+BAA+BD,CAAU;AAEhE,QAAM,EAAE,kBAAAE,GAAkB,mBAAAC,EAAA,IAAsBC,EAAA,GAE1C,EAAE,MAAMC,EAAA,IAAiBC,EAAwB,EAAE,YAAAV,GAAY,GAC/D,EAAE,iBAAAW,GAAiB,aAAAC,GAAa,WAAAC,EAAA,IAAcC,EAAuB;AAAA,IACzE,WAAAb;AAAA,IACA,WAAAC;AAAA,EAAA,CACD,GAEK,EAAE,aAAaa,GAAe,WAAAC,EAAA,IAAcC,EAAA,GAE5CC,IAAWT,EAAa,UAExBU,IAAuBR,GAAiB,uBAAuB;AAAA,IACnE,CAAAS,MAAgBA,EAAa,iBAAiBpB;AAAA,EAAA,GAG1CqB,IAAgC,CAAC;AAAA,IACrC,eAAAC;AAAA,IACA,GAAGF;AAAA,EAAA,OAEI;AAAA,IACL,GAAGA;AAAA,IACH,GAAIE,KAAiBA,MAAkB,eAAe,EAAE,eAAAA,EAAA,IAAkB,CAAA;AAAA,IAC1E,MAAMF,EAAa,QAAQ;AAAA,EAAA,IAIzBG,IAAS,OAAOC,MAA0D;AAC9E,UAAMC,IAA0BJ,EAA8BG,CAAmB;AACjF,UAAMjB,EAAkB,MAAM,YAAY;AACxC,YAAMmB,IAAS,MAAMX,EAAc;AAAA,QACjC,SAAS;AAAA,UACP,WAAAd;AAAA,UACA,WAAAC;AAAA,UACA,eAAe;AAAA,YACb,uBAAuB,CAACuB,CAAuB;AAAA,UAAA;AAAA,QACjD;AAAA,MACF,CACD;AAED,MAAAtB,EAAQwB,EAAgB,4BAA4B;AAAA,QAClD,iBAAiBD,EAAO;AAAA,QACxB,UAAAR;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAAA,EACH,GAEMU,IAAW,MAAM;AACrB,IAAAzB,EAAQwB,EAAgB,8BAA8B;AAAA,EACxD;AAEA,SAAId,sBACMP,GAAA,EAAiB,IAIzB,gBAAAT;AAAA,IAACgC;AAAA,IAAA;AAAA,MACC,QAAAN;AAAA,MACA,UAAAK;AAAA,MACA,UAAAV;AAAA,MACA,WAAAF;AAAA,MACA,sBAAAG;AAAA,MACA,wBAAwBR,GAAiB,0BAA0B,CAAA;AAAA,MACnE,oBAAoBA,GAAiB,WAAW;AAAA,MAChD,aAAAC;AAAA,MACA,YAAYD,GAAiB;AAAA,IAAA;AAAA,EAAA;AAGnC;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { PayrollLandingFlowProps } from './PayrollLandingFlowComponents';
|
|
1
2
|
import { BaseComponentInterface } from '../../Base/Base';
|
|
2
3
|
interface PayrollLandingProps extends BaseComponentInterface<'Payroll.PayrollLanding'> {
|
|
3
4
|
companyId: string;
|
|
4
5
|
}
|
|
5
6
|
export declare function PayrollLanding(props: PayrollLandingProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
export declare
|
|
7
|
+
export declare function PayrollLandingFlow({ companyId, onEvent, dictionary }: PayrollLandingFlowProps): import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export {};
|
|
@@ -1,41 +1,33 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
function
|
|
10
|
-
return /* @__PURE__ */
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as e } from "react";
|
|
3
|
+
import { createMachine as m } from "robot3";
|
|
4
|
+
import { payrollLandingMachine as l } from "./payrollLandingStateMachine.js";
|
|
5
|
+
import { PayrollLandingTabsContextual as p } from "./PayrollLandingFlowComponents.js";
|
|
6
|
+
import { Flow as c } from "../../Flow/Flow.js";
|
|
7
|
+
import { BaseComponent as f } from "../../Base/Base.js";
|
|
8
|
+
import { useComponentDictionary as u } from "../../../i18n/I18n.js";
|
|
9
|
+
function C(o) {
|
|
10
|
+
return /* @__PURE__ */ r(f, { ...o, children: /* @__PURE__ */ r(s, { ...o }) });
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
];
|
|
27
|
-
return /* @__PURE__ */ t(
|
|
28
|
-
e,
|
|
29
|
-
{
|
|
30
|
-
tabs: i,
|
|
31
|
-
selectedId: a,
|
|
32
|
-
onSelectionChange: n,
|
|
33
|
-
"aria-label": r("aria.tabNavigation")
|
|
34
|
-
}
|
|
12
|
+
function s({ companyId: o, onEvent: n, dictionary: t }) {
|
|
13
|
+
u("Payroll.PayrollLanding", t);
|
|
14
|
+
const a = e(
|
|
15
|
+
() => m(
|
|
16
|
+
"tabs",
|
|
17
|
+
l,
|
|
18
|
+
(i) => ({
|
|
19
|
+
...i,
|
|
20
|
+
component: p,
|
|
21
|
+
companyId: o,
|
|
22
|
+
selectedTab: "run-payroll"
|
|
23
|
+
})
|
|
24
|
+
),
|
|
25
|
+
[o]
|
|
35
26
|
);
|
|
36
|
-
};
|
|
27
|
+
return /* @__PURE__ */ r(c, { onEvent: n, machine: a });
|
|
28
|
+
}
|
|
37
29
|
export {
|
|
38
|
-
|
|
39
|
-
|
|
30
|
+
C as PayrollLanding,
|
|
31
|
+
s as PayrollLandingFlow
|
|
40
32
|
};
|
|
41
33
|
//# sourceMappingURL=PayrollLanding.js.map
|