@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.
- package/CHANGELOG.md +21 -0
- package/dist/components/Base/Base.d.ts +3 -2
- package/dist/components/Base/Base.js +56 -50
- package/dist/components/Base/Base.js.map +1 -1
- package/dist/components/Common/InternalError/InternalError.js.map +1 -1
- package/dist/components/Common/UI/ComboBox/ComboBox.js +31 -33
- package/dist/components/Common/UI/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/Common/UI/ComboBox/ComboBox.module.scss.js +1 -1
- package/dist/components/Common/UI/Text/TextTypes.d.ts +1 -1
- 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/BankAccount.d.ts +2 -2
- package/dist/components/Company/BankAccount/BankAccount.js +25 -20
- package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountComponents.js +16 -9
- package/dist/components/Company/BankAccount/BankAccountComponents.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +22 -8
- package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.d.ts +1 -0
- package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +30 -30
- package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.d.ts +4 -0
- 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/BankAccount/BankAccountList/AccountView.js +14 -13
- package/dist/components/Company/BankAccount/BankAccountList/AccountView.js.map +1 -1
- package/dist/components/Company/BankAccount/stateMachine.d.ts +1 -1
- package/dist/components/Company/BankAccount/stateMachine.js +13 -5
- package/dist/components/Company/BankAccount/stateMachine.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.d.ts +5 -7
- package/dist/components/Company/DocumentSigner/DocumentSigner.js +24 -24
- package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +41 -42
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.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 +6 -5
- 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/Industry/Industry.js +30 -31
- package/dist/components/Company/Industry/Industry.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/LocationForm.js +34 -37
- package/dist/components/Company/Locations/LocationForm/LocationForm.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/List.js +4 -1
- package/dist/components/Company/Locations/LocationsList/List.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/PaySchedule.js +70 -71
- package/dist/components/Company/PaySchedule/PaySchedule.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/Address.js +37 -38
- package/dist/components/Contractor/Address/Address.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/NewHireReport/NewHireReport.js +57 -58
- package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.js.map +1 -1
- package/dist/components/Employee/Compensation/Compensation.js +123 -132
- package/dist/components/Employee/Compensation/Compensation.js.map +1 -1
- package/dist/components/Employee/Deductions/Deductions.js +74 -79
- package/dist/components/Employee/Deductions/Deductions.js.map +1 -1
- package/dist/components/Employee/Deductions/useDeductions.js +6 -5
- package/dist/components/Employee/Deductions/useDeductions.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/SignatureForm.js +36 -42
- package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.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/EmployeeList.js +57 -58
- package/dist/components/Employee/EmployeeList/EmployeeList.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/PaymentMethod/PaymentMethod.js +95 -97
- package/dist/components/Employee/PaymentMethod/PaymentMethod.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/Profile.js +118 -124
- package/dist/components/Employee/Profile/Profile.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/Taxes/FederalForm.js +4 -4
- package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
- package/dist/components/Employee/Taxes/Taxes.js +59 -60
- package/dist/components/Employee/Taxes/Taxes.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/contexts/ApiProvider/ApiProvider.js +16 -14
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +5 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +2 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +19 -17
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.d.ts +7 -0
- package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.js +10 -0
- package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.js.map +1 -0
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.d.ts +6 -0
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js +11 -0
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js.map +1 -0
- package/dist/shared/constants.d.ts +2 -0
- package/dist/shared/constants.js +10 -9
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +5 -1
|
@@ -1,67 +1,66 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as o, jsxs as Y } from "react/jsx-runtime";
|
|
2
2
|
import { useState as y } from "react";
|
|
3
|
-
import { useEmployeesListSuspense as
|
|
4
|
-
import { useEmployeesDeleteMutation as
|
|
5
|
-
import { useEmployeesUpdateOnboardingStatusMutation as
|
|
6
|
-
import {
|
|
7
|
-
import { EmployeeListProvider as k } from "./useEmployeeList.js";
|
|
3
|
+
import { useEmployeesListSuspense as F } from "@gusto/embedded-api/react-query/employeesList";
|
|
4
|
+
import { useEmployeesDeleteMutation as U } from "@gusto/embedded-api/react-query/employeesDelete";
|
|
5
|
+
import { useEmployeesUpdateOnboardingStatusMutation as W } from "@gusto/embedded-api/react-query/employeesUpdateOnboardingStatus";
|
|
6
|
+
import { EmployeeListProvider as q } from "./useEmployeeList.js";
|
|
8
7
|
import { Actions as P } from "./Actions.js";
|
|
9
|
-
import { BaseComponent as
|
|
10
|
-
import { useBase as
|
|
11
|
-
import { Flex as
|
|
12
|
-
import { useI18n as
|
|
13
|
-
import { componentEvents as s, EmployeeOnboardingStatus as
|
|
8
|
+
import { BaseComponent as H } from "../../Base/Base.js";
|
|
9
|
+
import { useBase as j } from "../../Base/useBase.js";
|
|
10
|
+
import { Flex as k } from "../../Common/Flex/Flex.js";
|
|
11
|
+
import { useI18n as V, useComponentDictionary as z } from "../../../i18n/I18n.js";
|
|
12
|
+
import { componentEvents as s, EmployeeOnboardingStatus as l } from "../../../shared/constants.js";
|
|
14
13
|
import { Head as h } from "./Head.js";
|
|
15
14
|
import { List as O } from "./List.js";
|
|
16
|
-
import { useFlow as
|
|
17
|
-
function m(
|
|
18
|
-
return /* @__PURE__ */
|
|
15
|
+
import { useFlow as J } from "../../Flow/useFlow.js";
|
|
16
|
+
function m(n) {
|
|
17
|
+
return /* @__PURE__ */ o(H, { ...n, children: /* @__PURE__ */ o(K, { ...n, children: n.children }) });
|
|
19
18
|
}
|
|
20
|
-
function
|
|
21
|
-
|
|
22
|
-
const { onEvent: a, baseSubmitHandler:
|
|
23
|
-
|
|
19
|
+
function K({ companyId: n, className: E, children: p, dictionary: g }) {
|
|
20
|
+
V("Employee.EmployeeList"), z("Employee.EmployeeList", g);
|
|
21
|
+
const { onEvent: a, baseSubmitHandler: r } = j(), [d, i] = y(1), [A, I] = y(5), { data: N } = F({ companyId: n, page: d, per: A }), { httpMeta: D, employees: L } = N, f = L, { mutateAsync: _ } = U(), { mutateAsync: M } = W(), c = Number(D.response.headers.get("x-total-pages") ?? 1), S = (e) => {
|
|
22
|
+
I(e);
|
|
23
|
+
}, w = () => {
|
|
24
|
+
i(1);
|
|
24
25
|
}, b = () => {
|
|
25
|
-
|
|
26
|
-
}, C = () => {
|
|
27
|
-
r((e) => Math.max(e - 1, 1));
|
|
26
|
+
i((e) => Math.max(e - 1, 1));
|
|
28
27
|
}, R = () => {
|
|
29
|
-
|
|
28
|
+
i((e) => Math.min(e + 1, c));
|
|
30
29
|
}, T = () => {
|
|
31
|
-
|
|
30
|
+
i(c);
|
|
32
31
|
}, x = async (e) => {
|
|
33
|
-
await
|
|
34
|
-
await
|
|
32
|
+
await r(e, async (t) => {
|
|
33
|
+
await _({
|
|
35
34
|
request: { employeeId: t }
|
|
36
|
-
}),
|
|
35
|
+
}), a(s.EMPLOYEE_DELETED, { employeeId: t });
|
|
37
36
|
});
|
|
38
|
-
},
|
|
39
|
-
await
|
|
40
|
-
await
|
|
37
|
+
}, B = async (e) => {
|
|
38
|
+
await r(e, async (t) => {
|
|
39
|
+
await u({
|
|
41
40
|
employeeId: t,
|
|
42
|
-
status:
|
|
41
|
+
status: l.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW
|
|
43
42
|
}), a(s.EMPLOYEE_UPDATE, {
|
|
44
43
|
employeeId: t,
|
|
45
|
-
onboardingStatus:
|
|
44
|
+
onboardingStatus: l.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW
|
|
46
45
|
});
|
|
47
46
|
});
|
|
48
|
-
},
|
|
49
|
-
await
|
|
50
|
-
await
|
|
47
|
+
}, C = async (e) => {
|
|
48
|
+
await r(e, async (t) => {
|
|
49
|
+
await u({
|
|
51
50
|
employeeId: t,
|
|
52
|
-
status:
|
|
51
|
+
status: l.ADMIN_ONBOARDING_INCOMPLETE
|
|
53
52
|
});
|
|
54
53
|
});
|
|
55
|
-
},
|
|
56
|
-
await
|
|
57
|
-
const { employeeOnboardingStatus:
|
|
58
|
-
request: { employeeId: t, requestBody: { onboardingStatus:
|
|
54
|
+
}, u = async (e) => {
|
|
55
|
+
await r(e, async ({ employeeId: t, status: v }) => {
|
|
56
|
+
const { employeeOnboardingStatus: G } = await M({
|
|
57
|
+
request: { employeeId: t, requestBody: { onboardingStatus: v } }
|
|
59
58
|
});
|
|
60
|
-
a(s.EMPLOYEE_ONBOARDING_STATUS_UPDATED,
|
|
59
|
+
a(s.EMPLOYEE_ONBOARDING_STATUS_UPDATED, G);
|
|
61
60
|
});
|
|
62
61
|
};
|
|
63
|
-
return /* @__PURE__ */
|
|
64
|
-
|
|
62
|
+
return /* @__PURE__ */ o("section", { className: E, children: /* @__PURE__ */ o(
|
|
63
|
+
q,
|
|
65
64
|
{
|
|
66
65
|
value: {
|
|
67
66
|
handleEdit: (e, t) => {
|
|
@@ -70,25 +69,25 @@ function Z({ companyId: o, className: l, children: p, dictionary: g }) {
|
|
|
70
69
|
handleNew: () => {
|
|
71
70
|
a(s.EMPLOYEE_CREATE);
|
|
72
71
|
},
|
|
73
|
-
handleReview:
|
|
72
|
+
handleReview: B,
|
|
74
73
|
handleDelete: x,
|
|
75
|
-
employees:
|
|
76
|
-
currentPage:
|
|
77
|
-
totalPages:
|
|
78
|
-
handleFirstPage:
|
|
79
|
-
handlePreviousPage:
|
|
74
|
+
employees: f,
|
|
75
|
+
currentPage: d,
|
|
76
|
+
totalPages: c,
|
|
77
|
+
handleFirstPage: w,
|
|
78
|
+
handlePreviousPage: b,
|
|
80
79
|
handleNextPage: R,
|
|
81
80
|
handleLastPage: T,
|
|
82
|
-
handleCancelSelfOnboarding:
|
|
83
|
-
handleItemsPerPageChange:
|
|
81
|
+
handleCancelSelfOnboarding: C,
|
|
82
|
+
handleItemsPerPageChange: S,
|
|
84
83
|
handleSkip: () => {
|
|
85
84
|
a(s.EMPLOYEE_ONBOARDING_DONE);
|
|
86
85
|
}
|
|
87
86
|
},
|
|
88
|
-
children: p || /* @__PURE__ */
|
|
89
|
-
/* @__PURE__ */
|
|
90
|
-
/* @__PURE__ */
|
|
91
|
-
/* @__PURE__ */
|
|
87
|
+
children: p || /* @__PURE__ */ Y(k, { flexDirection: "column", children: [
|
|
88
|
+
/* @__PURE__ */ o(h, {}),
|
|
89
|
+
/* @__PURE__ */ o(O, {}),
|
|
90
|
+
/* @__PURE__ */ o(P, {})
|
|
92
91
|
] })
|
|
93
92
|
}
|
|
94
93
|
) });
|
|
@@ -96,12 +95,12 @@ function Z({ companyId: o, className: l, children: p, dictionary: g }) {
|
|
|
96
95
|
m.Head = h;
|
|
97
96
|
m.List = O;
|
|
98
97
|
m.Actions = P;
|
|
99
|
-
const
|
|
100
|
-
const { companyId:
|
|
101
|
-
return /* @__PURE__ */
|
|
98
|
+
const ue = () => {
|
|
99
|
+
const { companyId: n, onEvent: E } = J();
|
|
100
|
+
return /* @__PURE__ */ o(m, { companyId: n, onEvent: E });
|
|
102
101
|
};
|
|
103
102
|
export {
|
|
104
103
|
m as EmployeeList,
|
|
105
|
-
|
|
104
|
+
ue as EmployeeListContextual
|
|
106
105
|
};
|
|
107
106
|
//# sourceMappingURL=EmployeeList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmployeeList.js","sources":["../../../../src/components/Employee/EmployeeList/EmployeeList.tsx"],"sourcesContent":["import { useState } from 'react'\nimport {\n useEmployeesListSuspense,\n invalidateEmployeesList,\n} from '@gusto/embedded-api/react-query/employeesList'\nimport type { OnboardingStatus } from '@gusto/embedded-api/models/operations/putv1employeesemployeeidonboardingstatus'\nimport { useEmployeesDeleteMutation } from '@gusto/embedded-api/react-query/employeesDelete'\nimport { useEmployeesUpdateOnboardingStatusMutation } from '@gusto/embedded-api/react-query/employeesUpdateOnboardingStatus'\nimport { useQueryClient } from '@tanstack/react-query'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlow'\nimport { EmployeeListProvider } from './useEmployeeList'\nimport { Actions } from './Actions'\nimport {\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { Flex } from '@/components/Common'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents, EmployeeOnboardingStatus } from '@/shared/constants'\nimport { Head } from '@/components/Employee/EmployeeList/Head'\nimport { List } from '@/components/Employee/EmployeeList/List'\nimport { useFlow } from '@/components/Flow/useFlow'\n\n//Interface for component specific props\ninterface EmployeeListProps extends CommonComponentInterface<'Employee.EmployeeList'> {\n companyId: string\n}\n\nexport function EmployeeList(props: EmployeeListProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\nfunction Root({ companyId, className, children, dictionary }: EmployeeListProps) {\n //Using i18n hook to directly load necessary namespace\n useI18n('Employee.EmployeeList')\n useComponentDictionary('Employee.EmployeeList', dictionary)\n //Getting props from base context\n const { onEvent, baseSubmitHandler } = useBase()\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState(5)\n const queryClient = useQueryClient()\n\n const { data } = useEmployeesListSuspense({ companyId, page: currentPage, per: itemsPerPage })\n const { httpMeta, employees: employeeList } = data\n const employees = employeeList!\n\n const { mutateAsync: deleteEmployeeMutation } = useEmployeesDeleteMutation()\n const { mutateAsync: updateEmployeeOnboardingStatusMutation } =\n useEmployeesUpdateOnboardingStatusMutation()\n\n const totalPages = Number(httpMeta.response.headers.get('x-total-pages') ?? 1)\n\n const handleItemsPerPageChange = (newCount: number) => {\n setItemsPerPage(newCount)\n }\n const handleFirstPage = () => {\n setCurrentPage(1)\n }\n const handlePreviousPage = () => {\n setCurrentPage(prevPage => Math.max(prevPage - 1, 1))\n }\n const handleNextPage = () => {\n setCurrentPage(prevPage => Math.min(prevPage + 1, totalPages))\n }\n const handleLastPage = () => {\n setCurrentPage(totalPages)\n }\n const handleDelete = async (uuid: string) => {\n await baseSubmitHandler(uuid, async payload => {\n await deleteEmployeeMutation({\n request: { employeeId: payload },\n })\n\n await invalidateEmployeesList(queryClient, [companyId])\n onEvent(componentEvents.EMPLOYEE_DELETED, { employeeId: payload })\n })\n }\n /**Set onboarding status to self_onboarding_awaiting_admin_review and proceed to edit */\n const handleReview = async (data: string) => {\n await baseSubmitHandler(data, async employeeId => {\n await updateOnboardingStatus({\n employeeId,\n status: EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW,\n })\n onEvent(componentEvents.EMPLOYEE_UPDATE, {\n employeeId,\n onboardingStatus: EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW,\n })\n })\n }\n /**Update employee onboarding status reverting it back to admin_onboarding_incomplete */\n const handleCancelSelfOnboarding = async (data: string) => {\n await baseSubmitHandler(data, async employeeId => {\n await updateOnboardingStatus({\n employeeId,\n status: EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE,\n })\n })\n }\n const updateOnboardingStatus = async (data: { employeeId: string; status: OnboardingStatus }) => {\n await baseSubmitHandler(data, async ({ employeeId, status }) => {\n const { employeeOnboardingStatus: responseData } =\n await updateEmployeeOnboardingStatusMutation({\n request: { employeeId, requestBody: { onboardingStatus: status } },\n })\n onEvent(componentEvents.EMPLOYEE_ONBOARDING_STATUS_UPDATED, responseData)\n })\n }\n const handleNew = () => {\n onEvent(componentEvents.EMPLOYEE_CREATE)\n }\n const handleSkip = () => {\n onEvent(componentEvents.EMPLOYEE_ONBOARDING_DONE)\n }\n\n const handleEdit = (uuid: string, onboardingStatus?: OnboardingStatus) => {\n onEvent(componentEvents.EMPLOYEE_UPDATE, { employeeId: uuid, onboardingStatus })\n }\n return (\n <section className={className}>\n <EmployeeListProvider\n value={{\n handleEdit,\n handleNew,\n handleReview,\n handleDelete,\n employees,\n currentPage,\n totalPages,\n handleFirstPage,\n handlePreviousPage,\n handleNextPage,\n handleLastPage,\n handleCancelSelfOnboarding,\n handleItemsPerPageChange,\n handleSkip,\n }}\n >\n {children ? (\n children\n ) : (\n <Flex flexDirection=\"column\">\n <Head />\n <List />\n <Actions />\n </Flex>\n )}\n </EmployeeListProvider>\n </section>\n )\n}\n\nEmployeeList.Head = Head\nEmployeeList.List = List\nEmployeeList.Actions = Actions\n\n/**\n * Wrapper used inside Flows -> exposes flow context for required parameters\n */\nexport const EmployeeListContextual = () => {\n const { companyId, onEvent } = useFlow<OnboardingContextInterface>()\n return <EmployeeList companyId={companyId} onEvent={onEvent} />\n}\n"],"names":["EmployeeList","props","jsx","BaseComponent","Root","companyId","className","children","dictionary","useI18n","useComponentDictionary","onEvent","baseSubmitHandler","useBase","currentPage","setCurrentPage","useState","itemsPerPage","setItemsPerPage","queryClient","useQueryClient","data","useEmployeesListSuspense","httpMeta","employeeList","employees","deleteEmployeeMutation","useEmployeesDeleteMutation","updateEmployeeOnboardingStatusMutation","useEmployeesUpdateOnboardingStatusMutation","totalPages","handleItemsPerPageChange","newCount","handleFirstPage","handlePreviousPage","prevPage","handleNextPage","handleLastPage","handleDelete","uuid","payload","invalidateEmployeesList","componentEvents","handleReview","employeeId","updateOnboardingStatus","EmployeeOnboardingStatus","handleCancelSelfOnboarding","status","responseData","EmployeeListProvider","onboardingStatus","jsxs","Flex","Head","List","Actions","EmployeeListContextual","useFlow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmployeeList.js","sources":["../../../../src/components/Employee/EmployeeList/EmployeeList.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport type { OnboardingStatus } from '@gusto/embedded-api/models/operations/putv1employeesemployeeidonboardingstatus'\nimport { useEmployeesDeleteMutation } from '@gusto/embedded-api/react-query/employeesDelete'\nimport { useEmployeesUpdateOnboardingStatusMutation } from '@gusto/embedded-api/react-query/employeesUpdateOnboardingStatus'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlow'\nimport { EmployeeListProvider } from './useEmployeeList'\nimport { Actions } from './Actions'\nimport {\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { Flex } from '@/components/Common'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents, EmployeeOnboardingStatus } from '@/shared/constants'\nimport { Head } from '@/components/Employee/EmployeeList/Head'\nimport { List } from '@/components/Employee/EmployeeList/List'\nimport { useFlow } from '@/components/Flow/useFlow'\n\n//Interface for component specific props\ninterface EmployeeListProps extends CommonComponentInterface<'Employee.EmployeeList'> {\n companyId: string\n}\n\nexport function EmployeeList(props: EmployeeListProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\nfunction Root({ companyId, className, children, dictionary }: EmployeeListProps) {\n //Using i18n hook to directly load necessary namespace\n useI18n('Employee.EmployeeList')\n useComponentDictionary('Employee.EmployeeList', dictionary)\n //Getting props from base context\n const { onEvent, baseSubmitHandler } = useBase()\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState(5)\n\n const { data } = useEmployeesListSuspense({ companyId, page: currentPage, per: itemsPerPage })\n const { httpMeta, employees: employeeList } = data\n const employees = employeeList!\n\n const { mutateAsync: deleteEmployeeMutation } = useEmployeesDeleteMutation()\n const { mutateAsync: updateEmployeeOnboardingStatusMutation } =\n useEmployeesUpdateOnboardingStatusMutation()\n\n const totalPages = Number(httpMeta.response.headers.get('x-total-pages') ?? 1)\n\n const handleItemsPerPageChange = (newCount: number) => {\n setItemsPerPage(newCount)\n }\n const handleFirstPage = () => {\n setCurrentPage(1)\n }\n const handlePreviousPage = () => {\n setCurrentPage(prevPage => Math.max(prevPage - 1, 1))\n }\n const handleNextPage = () => {\n setCurrentPage(prevPage => Math.min(prevPage + 1, totalPages))\n }\n const handleLastPage = () => {\n setCurrentPage(totalPages)\n }\n const handleDelete = async (uuid: string) => {\n await baseSubmitHandler(uuid, async payload => {\n await deleteEmployeeMutation({\n request: { employeeId: payload },\n })\n\n onEvent(componentEvents.EMPLOYEE_DELETED, { employeeId: payload })\n })\n }\n /**Set onboarding status to self_onboarding_awaiting_admin_review and proceed to edit */\n const handleReview = async (data: string) => {\n await baseSubmitHandler(data, async employeeId => {\n await updateOnboardingStatus({\n employeeId,\n status: EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW,\n })\n onEvent(componentEvents.EMPLOYEE_UPDATE, {\n employeeId,\n onboardingStatus: EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW,\n })\n })\n }\n /**Update employee onboarding status reverting it back to admin_onboarding_incomplete */\n const handleCancelSelfOnboarding = async (data: string) => {\n await baseSubmitHandler(data, async employeeId => {\n await updateOnboardingStatus({\n employeeId,\n status: EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE,\n })\n })\n }\n const updateOnboardingStatus = async (data: { employeeId: string; status: OnboardingStatus }) => {\n await baseSubmitHandler(data, async ({ employeeId, status }) => {\n const { employeeOnboardingStatus: responseData } =\n await updateEmployeeOnboardingStatusMutation({\n request: { employeeId, requestBody: { onboardingStatus: status } },\n })\n onEvent(componentEvents.EMPLOYEE_ONBOARDING_STATUS_UPDATED, responseData)\n })\n }\n const handleNew = () => {\n onEvent(componentEvents.EMPLOYEE_CREATE)\n }\n const handleSkip = () => {\n onEvent(componentEvents.EMPLOYEE_ONBOARDING_DONE)\n }\n\n const handleEdit = (uuid: string, onboardingStatus?: OnboardingStatus) => {\n onEvent(componentEvents.EMPLOYEE_UPDATE, { employeeId: uuid, onboardingStatus })\n }\n return (\n <section className={className}>\n <EmployeeListProvider\n value={{\n handleEdit,\n handleNew,\n handleReview,\n handleDelete,\n employees,\n currentPage,\n totalPages,\n handleFirstPage,\n handlePreviousPage,\n handleNextPage,\n handleLastPage,\n handleCancelSelfOnboarding,\n handleItemsPerPageChange,\n handleSkip,\n }}\n >\n {children ? (\n children\n ) : (\n <Flex flexDirection=\"column\">\n <Head />\n <List />\n <Actions />\n </Flex>\n )}\n </EmployeeListProvider>\n </section>\n )\n}\n\nEmployeeList.Head = Head\nEmployeeList.List = List\nEmployeeList.Actions = Actions\n\n/**\n * Wrapper used inside Flows -> exposes flow context for required parameters\n */\nexport const EmployeeListContextual = () => {\n const { companyId, onEvent } = useFlow<OnboardingContextInterface>()\n return <EmployeeList companyId={companyId} onEvent={onEvent} />\n}\n"],"names":["EmployeeList","props","jsx","BaseComponent","Root","companyId","className","children","dictionary","useI18n","useComponentDictionary","onEvent","baseSubmitHandler","useBase","currentPage","setCurrentPage","useState","itemsPerPage","setItemsPerPage","data","useEmployeesListSuspense","httpMeta","employeeList","employees","deleteEmployeeMutation","useEmployeesDeleteMutation","updateEmployeeOnboardingStatusMutation","useEmployeesUpdateOnboardingStatusMutation","totalPages","handleItemsPerPageChange","newCount","handleFirstPage","handlePreviousPage","prevPage","handleNextPage","handleLastPage","handleDelete","uuid","payload","componentEvents","handleReview","employeeId","updateOnboardingStatus","EmployeeOnboardingStatus","handleCancelSelfOnboarding","status","responseData","EmployeeListProvider","onboardingStatus","jsxs","Flex","Head","List","Actions","EmployeeListContextual","useFlow"],"mappings":";;;;;;;;;;;;;;;AA0BO,SAASA,EAAaC,GAAmD;AAE5E,SAAA,gBAAAC,EAACC,GAAe,EAAA,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAMA,EAAA,SAAA,CAAS,EACnC,CAAA;AAEJ;AACA,SAASG,EAAK,EAAE,WAAAC,GAAW,WAAAC,GAAW,UAAAC,GAAU,YAAAC,KAAiC;AAE/E,EAAAC,EAAQ,uBAAuB,GAC/BC,EAAuB,yBAAyBF,CAAU;AAE1D,QAAM,EAAE,SAAAG,GAAS,mBAAAC,EAAkB,IAAIC,EAAQ,GACzC,CAACC,GAAaC,CAAc,IAAIC,EAAS,CAAC,GAC1C,CAACC,GAAcC,CAAe,IAAIF,EAAS,CAAC,GAE5C,EAAE,MAAAG,MAASC,EAAyB,EAAE,WAAAf,GAAW,MAAMS,GAAa,KAAKG,GAAc,GACvF,EAAE,UAAAI,GAAU,WAAWC,EAAiB,IAAAH,GACxCI,IAAYD,GAEZ,EAAE,aAAaE,EAAuB,IAAIC,EAA2B,GACrE,EAAE,aAAaC,EAAuC,IAC1DC,EAA2C,GAEvCC,IAAa,OAAOP,EAAS,SAAS,QAAQ,IAAI,eAAe,KAAK,CAAC,GAEvEQ,IAA2B,CAACC,MAAqB;AACrD,IAAAZ,EAAgBY,CAAQ;AAAA,EAC1B,GACMC,IAAkB,MAAM;AAC5B,IAAAhB,EAAe,CAAC;AAAA,EAClB,GACMiB,IAAqB,MAAM;AAC/B,IAAAjB,EAAe,OAAY,KAAK,IAAIkB,IAAW,GAAG,CAAC,CAAC;AAAA,EACtD,GACMC,IAAiB,MAAM;AAC3B,IAAAnB,EAAe,OAAY,KAAK,IAAIkB,IAAW,GAAGL,CAAU,CAAC;AAAA,EAC/D,GACMO,IAAiB,MAAM;AAC3B,IAAApB,EAAea,CAAU;AAAA,EAC3B,GACMQ,IAAe,OAAOC,MAAiB;AACrC,UAAAzB,EAAkByB,GAAM,OAAMC,MAAW;AAC7C,YAAMd,EAAuB;AAAA,QAC3B,SAAS,EAAE,YAAYc,EAAQ;AAAA,MAAA,CAChC,GAED3B,EAAQ4B,EAAgB,kBAAkB,EAAE,YAAYD,GAAS;AAAA,IAAA,CAClE;AAAA,EACH,GAEME,IAAe,OAAOrB,MAAiB;AACrC,UAAAP,EAAkBO,GAAM,OAAMsB,MAAc;AAChD,YAAMC,EAAuB;AAAA,QAC3B,YAAAD;AAAA,QACA,QAAQE,EAAyB;AAAA,MAAA,CAClC,GACDhC,EAAQ4B,EAAgB,iBAAiB;AAAA,QACvC,YAAAE;AAAA,QACA,kBAAkBE,EAAyB;AAAA,MAAA,CAC5C;AAAA,IAAA,CACF;AAAA,EACH,GAEMC,IAA6B,OAAOzB,MAAiB;AACnD,UAAAP,EAAkBO,GAAM,OAAMsB,MAAc;AAChD,YAAMC,EAAuB;AAAA,QAC3B,YAAAD;AAAA,QACA,QAAQE,EAAyB;AAAA,MAAA,CAClC;AAAA,IAAA,CACF;AAAA,EACH,GACMD,IAAyB,OAAOvB,MAA2D;AAC/F,UAAMP,EAAkBO,GAAM,OAAO,EAAE,YAAAsB,GAAY,QAAAI,QAAa;AAC9D,YAAM,EAAE,0BAA0BC,EAAa,IAC7C,MAAMpB,EAAuC;AAAA,QAC3C,SAAS,EAAE,YAAAe,GAAY,aAAa,EAAE,kBAAkBI,EAAS,EAAA;AAAA,MAAA,CAClE;AACK,MAAAlC,EAAA4B,EAAgB,oCAAoCO,CAAY;AAAA,IAAA,CACzE;AAAA,EACH;AAYE,SAAA,gBAAA5C,EAAC,aAAQ,WAAAI,GACP,UAAA,gBAAAJ;AAAA,IAAC6C;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,YAPW,CAACV,GAAcW,MAAwC;AACxE,UAAArC,EAAQ4B,EAAgB,iBAAiB,EAAE,YAAYF,GAAM,kBAAAW,GAAkB;AAAA,QACjF;AAAA,QAMQ,WAfU,MAAM;AACtB,UAAArC,EAAQ4B,EAAgB,eAAe;AAAA,QACzC;AAAA,QAcQ,cAAAC;AAAA,QACA,cAAAJ;AAAA,QACA,WAAAb;AAAA,QACA,aAAAT;AAAA,QACA,YAAAc;AAAA,QACA,iBAAAG;AAAA,QACA,oBAAAC;AAAA,QACA,gBAAAE;AAAA,QACA,gBAAAC;AAAA,QACA,4BAAAS;AAAA,QACA,0BAAAf;AAAA,QACA,YAxBW,MAAM;AACvB,UAAAlB,EAAQ4B,EAAgB,wBAAwB;AAAA,QAClD;AAAA,MAuBM;AAAA,MAEC,UACChC,KAEC,gBAAA0C,EAAAC,GAAA,EAAK,eAAc,UAClB,UAAA;AAAA,QAAA,gBAAAhD,EAACiD,GAAK,EAAA;AAAA,0BACLC,GAAK,EAAA;AAAA,0BACLC,GAAQ,CAAA,CAAA;AAAA,MAAA,EACX,CAAA;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;AAEArD,EAAa,OAAOmD;AACpBnD,EAAa,OAAOoD;AACpBpD,EAAa,UAAUqD;AAKhB,MAAMC,KAAyB,MAAM;AAC1C,QAAM,EAAE,WAAAjD,GAAW,SAAAM,EAAQ,IAAI4C,EAAoC;AAC5D,SAAA,gBAAArD,EAACF,GAAa,EAAA,WAAAK,GAAsB,SAAAM,EAAkB,CAAA;AAC/D;"}
|
|
@@ -5,14 +5,15 @@ import "react-i18next";
|
|
|
5
5
|
import "@gusto/embedded-api/models/errors/apierror";
|
|
6
6
|
import "@gusto/embedded-api/models/errors/sdkvalidationerror";
|
|
7
7
|
import "@gusto/embedded-api/models/errors/unprocessableentityerrorobject";
|
|
8
|
+
import "@tanstack/react-query";
|
|
8
9
|
import "../../Base/useBase.js";
|
|
9
10
|
import "../../../shared/constants.js";
|
|
10
11
|
import "dompurify";
|
|
11
12
|
import "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
12
13
|
import { createCompoundContext as o } from "../../Base/createCompoundContext.js";
|
|
13
|
-
const [
|
|
14
|
+
const [L, c] = o("EmployeeListContext");
|
|
14
15
|
export {
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
c as EmployeeListProvider,
|
|
17
|
+
L as useEmployeeList
|
|
17
18
|
};
|
|
18
19
|
//# sourceMappingURL=useEmployeeList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEmployeeList.js","sources":["../../../../src/components/Employee/EmployeeList/useEmployeeList.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { OnboardingStatus } from '@gusto/embedded-api/models/operations/putv1employeesemployeeidonboardingstatus'\nimport { createCompoundContext } from '@/components/Base'\n\n//Interface for context passed down to component slots\ntype EmployeeListContextType = {\n handleEdit: (uuid: string, onboardingStatus?: OnboardingStatus) => void\n handleDelete: (uuid: string) => Promise<void>\n handleCancelSelfOnboarding: (employeeId: string) => Promise<void>\n handleReview: (employeeId: string) => Promise<void>\n handleNew: () => void\n handleSkip: () => void\n handleFirstPage: () => void\n handlePreviousPage: () => void\n handleNextPage: () => void\n handleLastPage: () => void\n handleItemsPerPageChange: (newCount: number) => void\n currentPage: number\n totalPages: number\n employees: Employee[]\n}\n\nconst [useEmployeeList, EmployeeListProvider] =\n createCompoundContext<EmployeeListContextType>('EmployeeListContext')\nexport { useEmployeeList, EmployeeListProvider }\n"],"names":["useEmployeeList","EmployeeListProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useEmployeeList.js","sources":["../../../../src/components/Employee/EmployeeList/useEmployeeList.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { OnboardingStatus } from '@gusto/embedded-api/models/operations/putv1employeesemployeeidonboardingstatus'\nimport { createCompoundContext } from '@/components/Base'\n\n//Interface for context passed down to component slots\ntype EmployeeListContextType = {\n handleEdit: (uuid: string, onboardingStatus?: OnboardingStatus) => void\n handleDelete: (uuid: string) => Promise<void>\n handleCancelSelfOnboarding: (employeeId: string) => Promise<void>\n handleReview: (employeeId: string) => Promise<void>\n handleNew: () => void\n handleSkip: () => void\n handleFirstPage: () => void\n handlePreviousPage: () => void\n handleNextPage: () => void\n handleLastPage: () => void\n handleItemsPerPageChange: (newCount: number) => void\n currentPage: number\n totalPages: number\n employees: Employee[]\n}\n\nconst [useEmployeeList, EmployeeListProvider] =\n createCompoundContext<EmployeeListContextType>('EmployeeListContext')\nexport { useEmployeeList, EmployeeListProvider }\n"],"names":["useEmployeeList","EmployeeListProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;AAsBA,MAAM,CAACA,GAAiBC,CAAoB,IAC1CC,EAA+C,qBAAqB;"}
|
|
@@ -1,42 +1,40 @@
|
|
|
1
|
-
import { jsx as n, jsxs as
|
|
2
|
-
import { zodResolver as
|
|
3
|
-
import { useEmployeePaymentMethodCreateMutation as
|
|
4
|
-
import { useEmployeePaymentMethodDeleteBankAccountMutation as
|
|
5
|
-
import { useEmployeePaymentMethodsGetBankAccountsSuspense as V
|
|
6
|
-
import { useEmployeePaymentMethodGetSuspense as
|
|
7
|
-
import { useEmployeePaymentMethodUpdateBankAccountMutation as
|
|
8
|
-
import { useEmployeePaymentMethodUpdateMutation as
|
|
9
|
-
import { useQueryClient as
|
|
10
|
-
import {
|
|
11
|
-
import { useForm as
|
|
12
|
-
import { useTranslation as
|
|
13
|
-
import { CombinedSchema as
|
|
14
|
-
import { BaseComponent as
|
|
15
|
-
import { useBase as
|
|
16
|
-
import { Form as
|
|
17
|
-
import { Actions as
|
|
18
|
-
import { BankAccountForm as
|
|
19
|
-
import { BankAccountsList as
|
|
20
|
-
import { Head as
|
|
21
|
-
import { PaymentTypeForm as
|
|
22
|
-
import { Split as
|
|
23
|
-
import { useI18n as
|
|
24
|
-
import { SPLIT_BY as
|
|
25
|
-
import { useFlow as
|
|
26
|
-
function
|
|
27
|
-
return /* @__PURE__ */ n(
|
|
1
|
+
import { jsx as n, jsxs as U } from "react/jsx-runtime";
|
|
2
|
+
import { zodResolver as x } from "@hookform/resolvers/zod";
|
|
3
|
+
import { useEmployeePaymentMethodCreateMutation as H } from "@gusto/embedded-api/react-query/employeePaymentMethodCreate";
|
|
4
|
+
import { useEmployeePaymentMethodDeleteBankAccountMutation as R } from "@gusto/embedded-api/react-query/employeePaymentMethodDeleteBankAccount";
|
|
5
|
+
import { useEmployeePaymentMethodsGetBankAccountsSuspense as V } from "@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts";
|
|
6
|
+
import { useEmployeePaymentMethodGetSuspense as j } from "@gusto/embedded-api/react-query/employeePaymentMethodGet";
|
|
7
|
+
import { useEmployeePaymentMethodUpdateBankAccountMutation as G } from "@gusto/embedded-api/react-query/employeePaymentMethodUpdateBankAccount";
|
|
8
|
+
import { useEmployeePaymentMethodUpdateMutation as K } from "@gusto/embedded-api/react-query/employeePaymentMethodUpdate";
|
|
9
|
+
import { useQueryClient as z } from "@tanstack/react-query";
|
|
10
|
+
import { useState as Q, useMemo as T, useEffect as S } from "react";
|
|
11
|
+
import { useForm as J, FormProvider as W } from "react-hook-form";
|
|
12
|
+
import { useTranslation as X } from "react-i18next";
|
|
13
|
+
import { CombinedSchema as Z, PaymentMethodProvider as $ } from "./usePaymentMethod.js";
|
|
14
|
+
import { BaseComponent as tt } from "../../Base/Base.js";
|
|
15
|
+
import { useBase as et } from "../../Base/useBase.js";
|
|
16
|
+
import { Form as ot } from "../../Common/Form/Form.js";
|
|
17
|
+
import { Actions as nt } from "./Actions.js";
|
|
18
|
+
import { BankAccountForm as st } from "./BankAccountEdit.js";
|
|
19
|
+
import { BankAccountsList as it } from "./BankAccountsList.js";
|
|
20
|
+
import { Head as rt } from "./Head.js";
|
|
21
|
+
import { PaymentTypeForm as mt } from "./PaymentTypeForm.js";
|
|
22
|
+
import { Split as at } from "./Split.js";
|
|
23
|
+
import { useI18n as ct, useComponentDictionary as ut } from "../../../i18n/I18n.js";
|
|
24
|
+
import { SPLIT_BY as v, componentEvents as y, PAYMENT_METHODS as b } from "../../../shared/constants.js";
|
|
25
|
+
import { useFlow as pt } from "../../Flow/useFlow.js";
|
|
26
|
+
function lt(o) {
|
|
27
|
+
return /* @__PURE__ */ n(tt, { ...o, children: /* @__PURE__ */ n(dt, { ...o, children: o.children }) });
|
|
28
28
|
}
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const { baseSubmitHandler:
|
|
32
|
-
data: { employeePaymentMethod:
|
|
33
|
-
} =
|
|
29
|
+
const dt = ({ employeeId: o, className: h, dictionary: A }) => {
|
|
30
|
+
ct("Employee.PaymentMethod"), ut("Employee.PaymentMethod", A);
|
|
31
|
+
const { baseSubmitHandler: k, onEvent: p } = et(), N = z(), {
|
|
32
|
+
data: { employeePaymentMethod: L }
|
|
33
|
+
} = j({ employeeId: o }), t = L, { data: g } = V({
|
|
34
34
|
employeeId: o
|
|
35
|
-
}),
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
m !== "INITIAL" && y.length < 1 && c("INITIAL");
|
|
39
|
-
const T = k(() => ({
|
|
35
|
+
}), l = g.employeeBankAccountList, f = K(), M = R(), P = H(), C = G(), [m, a] = Q(l.length < 1 ? "INITIAL" : "LIST");
|
|
36
|
+
m !== "INITIAL" && l.length < 1 && a("INITIAL");
|
|
37
|
+
const D = T(() => ({
|
|
40
38
|
type: "Direct Deposit",
|
|
41
39
|
isSplit: !1,
|
|
42
40
|
hasBankPayload: !1,
|
|
@@ -47,33 +45,33 @@ const ft = ({ employeeId: o, className: f, dictionary: E }) => {
|
|
|
47
45
|
splitBy: void 0,
|
|
48
46
|
splitAmount: {},
|
|
49
47
|
priority: {}
|
|
50
|
-
}), []),
|
|
51
|
-
...
|
|
48
|
+
}), []), c = T(() => ({
|
|
49
|
+
...D,
|
|
52
50
|
type: t.type ?? "Direct Deposit",
|
|
53
51
|
splitBy: t.splitBy ?? void 0,
|
|
54
52
|
...t.splits?.reduce(
|
|
55
|
-
(
|
|
56
|
-
splitAmount: { ...
|
|
57
|
-
priority: { ...
|
|
53
|
+
(s, { uuid: e, splitAmount: r, priority: u }) => ({
|
|
54
|
+
splitAmount: { ...s.splitAmount, [e]: r ?? null },
|
|
55
|
+
priority: { ...s.priority, [e]: Number(u) }
|
|
58
56
|
}),
|
|
59
57
|
{ splitAmount: {}, priority: {} }
|
|
60
58
|
),
|
|
61
59
|
remainder: t.type === "Direct Deposit" && t.splits ? t.splits.reduce(
|
|
62
|
-
(
|
|
60
|
+
(s, e) => e.splitAmount === null ? e.uuid : t.splits?.at(-1)?.uuid ?? s,
|
|
63
61
|
""
|
|
64
62
|
) : void 0
|
|
65
|
-
}), [
|
|
66
|
-
resolver:
|
|
67
|
-
defaultValues:
|
|
68
|
-
}), I =
|
|
63
|
+
}), [D, t.type, t.splitBy, t.splits]), i = J({
|
|
64
|
+
resolver: x(Z),
|
|
65
|
+
defaultValues: c
|
|
66
|
+
}), I = i.watch("type"), { reset: d } = i, { mutateAsync: B } = f;
|
|
69
67
|
S(() => {
|
|
70
|
-
(async () => t.splits?.length === 1 && t.type === "Direct Deposit" &&
|
|
68
|
+
(async () => t.splits?.length === 1 && t.type === "Direct Deposit" && await B({
|
|
71
69
|
request: {
|
|
72
70
|
employeeId: o,
|
|
73
71
|
requestBody: {
|
|
74
|
-
splitBy:
|
|
75
|
-
splits: t.splits.map((
|
|
76
|
-
...
|
|
72
|
+
splitBy: v.percentage,
|
|
73
|
+
splits: t.splits.map((s) => ({
|
|
74
|
+
...s,
|
|
77
75
|
splitAmount: 100,
|
|
78
76
|
priority: 1
|
|
79
77
|
})),
|
|
@@ -81,15 +79,15 @@ const ft = ({ employeeId: o, className: f, dictionary: E }) => {
|
|
|
81
79
|
type: "Direct Deposit"
|
|
82
80
|
}
|
|
83
81
|
}
|
|
84
|
-
})
|
|
85
|
-
}, [o,
|
|
86
|
-
|
|
87
|
-
}, [
|
|
88
|
-
const _ = async (
|
|
89
|
-
await
|
|
82
|
+
}))();
|
|
83
|
+
}, [o, t, N, B]), S(() => {
|
|
84
|
+
d(c);
|
|
85
|
+
}, [l.length, t, c, d]);
|
|
86
|
+
const _ = async (s) => {
|
|
87
|
+
await k(s, async (e) => {
|
|
90
88
|
const { type: r } = e;
|
|
91
89
|
if (r === "Direct Deposit" && e.hasBankPayload && (m === "ADD" || m === "INITIAL")) {
|
|
92
|
-
const
|
|
90
|
+
const u = await P.mutateAsync({
|
|
93
91
|
request: {
|
|
94
92
|
employeeId: o,
|
|
95
93
|
requestBody: {
|
|
@@ -100,74 +98,74 @@ const ft = ({ employeeId: o, className: f, dictionary: E }) => {
|
|
|
100
98
|
}
|
|
101
99
|
}
|
|
102
100
|
});
|
|
103
|
-
|
|
101
|
+
p(y.EMPLOYEE_BANK_ACCOUNT_CREATED, u);
|
|
104
102
|
} else {
|
|
105
|
-
const
|
|
103
|
+
const u = r === b.check ? { version: t.version } : {
|
|
106
104
|
...t,
|
|
107
105
|
version: t.version,
|
|
108
|
-
splitBy: e.isSplit ? e.splitBy : t.splitBy ??
|
|
109
|
-
splits: e.isSplit && t.splits ? t.splits.map((
|
|
110
|
-
...
|
|
111
|
-
splitAmount: e.splitAmount[
|
|
112
|
-
priority: e.priority[
|
|
106
|
+
splitBy: e.isSplit ? e.splitBy : t.splitBy ?? v.percentage,
|
|
107
|
+
splits: e.isSplit && t.splits ? t.splits.map((E) => ({
|
|
108
|
+
...E,
|
|
109
|
+
splitAmount: e.splitAmount[E.uuid],
|
|
110
|
+
priority: e.priority[E.uuid]
|
|
113
111
|
})) : t.splits ?? []
|
|
114
|
-
},
|
|
115
|
-
request: { employeeId: o, requestBody: { ...
|
|
112
|
+
}, Y = await f.mutateAsync({
|
|
113
|
+
request: { employeeId: o, requestBody: { ...u, type: r } }
|
|
116
114
|
});
|
|
117
|
-
|
|
115
|
+
p(y.EMPLOYEE_PAYMENT_METHOD_UPDATED, Y);
|
|
118
116
|
}
|
|
119
|
-
|
|
117
|
+
i.setValue("isSplit", !1), i.setValue("hasBankPayload", !1), m === "LIST" || r === b.check ? p(y.EMPLOYEE_PAYMENT_METHOD_DONE) : a("LIST");
|
|
120
118
|
});
|
|
121
|
-
},
|
|
122
|
-
const e = await
|
|
123
|
-
request: { employeeId: o, bankAccountUuid:
|
|
119
|
+
}, w = async (s) => {
|
|
120
|
+
const e = await M.mutateAsync({
|
|
121
|
+
request: { employeeId: o, bankAccountUuid: s }
|
|
124
122
|
});
|
|
125
|
-
|
|
123
|
+
p(y.EMPLOYEE_BANK_ACCOUNT_DELETED, e);
|
|
124
|
+
}, O = () => {
|
|
125
|
+
a("ADD"), d(c);
|
|
126
126
|
}, q = () => {
|
|
127
|
-
|
|
127
|
+
a("LIST"), d(c);
|
|
128
128
|
}, F = () => {
|
|
129
|
-
|
|
130
|
-
}, Y = () => {
|
|
131
|
-
c("SPLIT");
|
|
129
|
+
a("SPLIT");
|
|
132
130
|
};
|
|
133
|
-
return /* @__PURE__ */ n("section", { className:
|
|
134
|
-
|
|
131
|
+
return /* @__PURE__ */ n("section", { className: h, children: /* @__PURE__ */ n(
|
|
132
|
+
$,
|
|
135
133
|
{
|
|
136
134
|
value: {
|
|
137
|
-
bankAccounts:
|
|
138
|
-
isPending:
|
|
135
|
+
bankAccounts: l,
|
|
136
|
+
isPending: M.isPending || f.isPending || P.isPending || C.isPending,
|
|
139
137
|
watchedType: I,
|
|
140
138
|
mode: m,
|
|
141
139
|
paymentMethod: t,
|
|
142
|
-
handleCancel:
|
|
143
|
-
handleAdd:
|
|
144
|
-
handleDelete:
|
|
145
|
-
handleSplit:
|
|
140
|
+
handleCancel: q,
|
|
141
|
+
handleAdd: O,
|
|
142
|
+
handleDelete: w,
|
|
143
|
+
handleSplit: F
|
|
146
144
|
},
|
|
147
|
-
children: /* @__PURE__ */ n(
|
|
148
|
-
/* @__PURE__ */ n(
|
|
149
|
-
/* @__PURE__ */ n(pt, {}),
|
|
150
|
-
/* @__PURE__ */ n(ct, {}),
|
|
145
|
+
children: /* @__PURE__ */ n(W, { ...i, children: /* @__PURE__ */ U(ot, { onSubmit: i.handleSubmit(_), children: [
|
|
146
|
+
/* @__PURE__ */ n(rt, {}),
|
|
151
147
|
/* @__PURE__ */ n(mt, {}),
|
|
152
|
-
/* @__PURE__ */ n(
|
|
153
|
-
/* @__PURE__ */ n(
|
|
148
|
+
/* @__PURE__ */ n(it, {}),
|
|
149
|
+
/* @__PURE__ */ n(st, {}),
|
|
150
|
+
/* @__PURE__ */ n(at, {}),
|
|
151
|
+
/* @__PURE__ */ n(nt, {})
|
|
154
152
|
] }) })
|
|
155
153
|
}
|
|
156
154
|
) });
|
|
157
|
-
},
|
|
158
|
-
const { employeeId: o, onEvent:
|
|
155
|
+
}, Ut = () => {
|
|
156
|
+
const { employeeId: o, onEvent: h } = pt(), { t: A } = X("common");
|
|
159
157
|
if (!o)
|
|
160
158
|
throw new Error(
|
|
161
|
-
|
|
159
|
+
A("errors.missingParamsOrContext", {
|
|
162
160
|
component: "PaymentMethod",
|
|
163
161
|
param: "employeeId",
|
|
164
162
|
provider: "FlowProvider"
|
|
165
163
|
})
|
|
166
164
|
);
|
|
167
|
-
return /* @__PURE__ */ n(
|
|
165
|
+
return /* @__PURE__ */ n(lt, { employeeId: o, onEvent: h });
|
|
168
166
|
};
|
|
169
167
|
export {
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
lt as PaymentMethod,
|
|
169
|
+
Ut as PaymentMethodContextual
|
|
172
170
|
};
|
|
173
171
|
//# sourceMappingURL=PaymentMethod.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentMethod.js","sources":["../../../../src/components/Employee/PaymentMethod/PaymentMethod.tsx"],"sourcesContent":["import { zodResolver } from '@hookform/resolvers/zod'\nimport { useEmployeePaymentMethodCreateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodCreate'\nimport { useEmployeePaymentMethodDeleteBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodDeleteBankAccount'\nimport {\n useEmployeePaymentMethodsGetBankAccountsSuspense,\n invalidateAllEmployeePaymentMethodsGetBankAccounts,\n} from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport {\n useEmployeePaymentMethodGetSuspense,\n invalidateAllEmployeePaymentMethodGet,\n} from '@gusto/embedded-api/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodUpdateBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdateBankAccount'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdate'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm, type DefaultValues, type SubmitHandler } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlow'\nimport {\n CombinedSchema,\n type CombinedSchemaInputs,\n type CombinedSchemaOutputs,\n type MODE,\n PaymentMethodProvider,\n} from './usePaymentMethod'\nimport {\n useBase,\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { Form } from '@/components/Common/Form'\nimport { Actions } from '@/components/Employee/PaymentMethod/Actions'\nimport { BankAccountForm } from '@/components/Employee/PaymentMethod/BankAccountEdit'\nimport { BankAccountsList } from '@/components/Employee/PaymentMethod/BankAccountsList'\nimport { Head } from '@/components/Employee/PaymentMethod/Head'\nimport { PaymentTypeForm } from '@/components/Employee/PaymentMethod/PaymentTypeForm'\nimport { Split } from '@/components/Employee/PaymentMethod/Split'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport { useComponentDictionary } from '@/i18n/I18n'\n\ninterface PaymentMethodProps extends CommonComponentInterface<'Employee.PaymentMethod'> {\n employeeId: string\n defaultValues?: never\n}\n\nexport function PaymentMethod(props: PaymentMethodProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ employeeId, className, dictionary }: PaymentMethodProps) => {\n useI18n('Employee.PaymentMethod')\n useComponentDictionary('Employee.PaymentMethod', dictionary)\n const { baseSubmitHandler, onEvent } = useBase()\n const queryClient = useQueryClient()\n\n const {\n data: { employeePaymentMethod },\n } = useEmployeePaymentMethodGetSuspense({ employeeId })\n const paymentMethod = employeePaymentMethod!\n const { data: bankAccountsList } = useEmployeePaymentMethodsGetBankAccountsSuspense({\n employeeId,\n })\n const bankAccounts = bankAccountsList.employeeBankAccountList!\n const paymentMethodMutation = useEmployeePaymentMethodUpdateMutation()\n const deleteBankAccountMutation = useEmployeePaymentMethodDeleteBankAccountMutation()\n const addBankAccountMutation = useEmployeePaymentMethodCreateMutation()\n const updateBankAccountMutation = useEmployeePaymentMethodUpdateBankAccountMutation()\n\n const invalidateAll = useCallback(async () => {\n await invalidateAllEmployeePaymentMethodGet(queryClient)\n await invalidateAllEmployeePaymentMethodsGetBankAccounts(queryClient)\n }, [queryClient])\n\n const [mode, setMode] = useState<MODE>(bankAccounts.length < 1 ? 'INITIAL' : 'LIST')\n if (mode !== 'INITIAL' && bankAccounts.length < 1) {\n setMode('INITIAL')\n }\n\n const baseDefaultValues: Partial<CombinedSchemaOutputs> = useMemo(() => {\n return {\n type: 'Direct Deposit',\n isSplit: false,\n hasBankPayload: false,\n name: '',\n routingNumber: '',\n accountNumber: '',\n accountType: 'Checking',\n splitBy: undefined,\n splitAmount: {},\n priority: {},\n } as Partial<CombinedSchemaOutputs>\n }, [])\n\n const defaultValues: CombinedSchemaOutputs = useMemo(() => {\n return {\n ...baseDefaultValues,\n type: paymentMethod.type ?? 'Direct Deposit',\n splitBy: paymentMethod.splitBy ?? undefined,\n ...paymentMethod.splits?.reduce(\n (acc, { uuid, splitAmount, priority }) => ({\n splitAmount: { ...acc.splitAmount, [uuid]: splitAmount ?? null },\n priority: { ...acc.priority, [uuid]: Number(priority) },\n }),\n { splitAmount: {}, priority: {} },\n ),\n remainder:\n paymentMethod.type === 'Direct Deposit' && paymentMethod.splits\n ? paymentMethod.splits.reduce(\n (acc, curr) =>\n curr.splitAmount === null ? curr.uuid : (paymentMethod.splits?.at(-1)?.uuid ?? acc),\n '',\n )\n : undefined,\n } as CombinedSchemaOutputs\n }, [baseDefaultValues, paymentMethod.type, paymentMethod.splitBy, paymentMethod.splits])\n\n const formMethods = useForm<CombinedSchemaInputs>({\n resolver: zodResolver(CombinedSchema),\n defaultValues: defaultValues as DefaultValues<CombinedSchemaInputs>,\n })\n\n const watchedType = formMethods.watch('type')\n\n const { reset: resetForm } = formMethods\n const { mutateAsync: mutatePaymentMethod } = paymentMethodMutation\n\n useEffect(() => {\n void (async () => {\n if (paymentMethod.splits?.length === 1 && paymentMethod.type === 'Direct Deposit') {\n await mutatePaymentMethod({\n request: {\n employeeId,\n requestBody: {\n splitBy: SPLIT_BY.percentage,\n splits: paymentMethod.splits.map(split => ({\n ...split,\n splitAmount: 100,\n priority: 1,\n })),\n version: paymentMethod.version as string,\n type: 'Direct Deposit',\n },\n },\n })\n await invalidateAll()\n }\n })()\n }, [employeeId, invalidateAll, paymentMethod, queryClient, mutatePaymentMethod])\n\n useEffect(() => {\n resetForm(defaultValues)\n }, [bankAccounts.length, paymentMethod, defaultValues, resetForm])\n\n const onSubmit: SubmitHandler<CombinedSchemaInputs> = async data => {\n await baseSubmitHandler(data, async payload => {\n const { type } = payload\n if (\n type === 'Direct Deposit' &&\n payload.hasBankPayload &&\n (mode === 'ADD' || mode === 'INITIAL')\n ) {\n const bankAccountResponse = await addBankAccountMutation.mutateAsync({\n request: {\n employeeId,\n requestBody: {\n name: payload.name,\n routingNumber: payload.routingNumber,\n accountNumber: payload.accountNumber,\n accountType: payload.accountType,\n },\n },\n })\n await invalidateAll()\n\n onEvent(componentEvents.EMPLOYEE_BANK_ACCOUNT_CREATED, bankAccountResponse)\n } else {\n //Adding bank account updates payment method\n const body =\n type === PAYMENT_METHODS.check\n ? { version: paymentMethod.version as string }\n : {\n ...paymentMethod,\n version: paymentMethod.version as string,\n splitBy: payload.isSplit\n ? payload.splitBy\n : (paymentMethod.splitBy ?? SPLIT_BY.percentage),\n splits:\n payload.isSplit && paymentMethod.splits\n ? paymentMethod.splits.map(split => ({\n ...split,\n splitAmount: payload.splitAmount[split.uuid],\n priority: payload.priority[split.uuid],\n }))\n : (paymentMethod.splits ?? []),\n }\n const paymentMethodResponse = await paymentMethodMutation.mutateAsync({\n request: { employeeId, requestBody: { ...body, type } },\n })\n await invalidateAll()\n onEvent(componentEvents.EMPLOYEE_PAYMENT_METHOD_UPDATED, paymentMethodResponse)\n }\n //Cleanup after submission bank/split submission\n formMethods.setValue('isSplit', false)\n formMethods.setValue('hasBankPayload', false)\n //Notify that this component is ready to proceed\n if (mode === 'LIST' || type === PAYMENT_METHODS.check) {\n onEvent(componentEvents.EMPLOYEE_PAYMENT_METHOD_DONE)\n } else {\n setMode('LIST')\n }\n })\n }\n\n const handleDelete = async (uuid: string) => {\n const data = await deleteBankAccountMutation.mutateAsync({\n request: { employeeId, bankAccountUuid: uuid },\n })\n await invalidateAll()\n onEvent(componentEvents.EMPLOYEE_BANK_ACCOUNT_DELETED, data)\n }\n const handleAdd = () => {\n setMode('ADD')\n resetForm(defaultValues)\n }\n const handleCancel = () => {\n setMode('LIST')\n resetForm(defaultValues)\n }\n const handleSplit = () => {\n setMode('SPLIT')\n }\n\n return (\n <section className={className}>\n <PaymentMethodProvider\n value={{\n bankAccounts,\n isPending:\n deleteBankAccountMutation.isPending ||\n paymentMethodMutation.isPending ||\n addBankAccountMutation.isPending ||\n updateBankAccountMutation.isPending,\n watchedType,\n mode,\n paymentMethod,\n handleCancel,\n handleAdd,\n handleDelete,\n handleSplit,\n }}\n >\n <FormProvider {...formMethods}>\n <Form onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Head />\n <PaymentTypeForm />\n <BankAccountsList />\n <BankAccountForm />\n <Split />\n <Actions />\n </Form>\n </FormProvider>\n </PaymentMethodProvider>\n </section>\n )\n}\n\nexport const PaymentMethodContextual = () => {\n const { employeeId, onEvent } = useFlow<OnboardingContextInterface>()\n const { t } = useTranslation('common')\n\n if (!employeeId) {\n throw new Error(\n t('errors.missingParamsOrContext', {\n component: 'PaymentMethod',\n param: 'employeeId',\n provider: 'FlowProvider',\n }),\n )\n }\n return <PaymentMethod employeeId={employeeId} onEvent={onEvent} />\n}\n"],"names":["PaymentMethod","props","jsx","BaseComponent","Root","employeeId","className","dictionary","useI18n","useComponentDictionary","baseSubmitHandler","onEvent","useBase","queryClient","useQueryClient","employeePaymentMethod","useEmployeePaymentMethodGetSuspense","paymentMethod","bankAccountsList","useEmployeePaymentMethodsGetBankAccountsSuspense","bankAccounts","paymentMethodMutation","useEmployeePaymentMethodUpdateMutation","deleteBankAccountMutation","useEmployeePaymentMethodDeleteBankAccountMutation","addBankAccountMutation","useEmployeePaymentMethodCreateMutation","updateBankAccountMutation","useEmployeePaymentMethodUpdateBankAccountMutation","invalidateAll","useCallback","invalidateAllEmployeePaymentMethodGet","invalidateAllEmployeePaymentMethodsGetBankAccounts","mode","setMode","useState","baseDefaultValues","useMemo","defaultValues","acc","uuid","splitAmount","priority","curr","formMethods","useForm","zodResolver","CombinedSchema","watchedType","resetForm","mutatePaymentMethod","useEffect","SPLIT_BY","split","onSubmit","data","payload","type","bankAccountResponse","componentEvents","body","PAYMENT_METHODS","paymentMethodResponse","handleDelete","handleAdd","handleCancel","handleSplit","PaymentMethodProvider","FormProvider","jsxs","Form","Head","PaymentTypeForm","BankAccountsList","BankAccountForm","Split","Actions","PaymentMethodContextual","useFlow","t","useTranslation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PaymentMethod.js","sources":["../../../../src/components/Employee/PaymentMethod/PaymentMethod.tsx"],"sourcesContent":["import { zodResolver } from '@hookform/resolvers/zod'\nimport { useEmployeePaymentMethodCreateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodCreate'\nimport { useEmployeePaymentMethodDeleteBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodDeleteBankAccount'\nimport { useEmployeePaymentMethodsGetBankAccountsSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodGetSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodUpdateBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdateBankAccount'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdate'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm, type DefaultValues, type SubmitHandler } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlow'\nimport {\n CombinedSchema,\n type CombinedSchemaInputs,\n type CombinedSchemaOutputs,\n type MODE,\n PaymentMethodProvider,\n} from './usePaymentMethod'\nimport {\n useBase,\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { Form } from '@/components/Common/Form'\nimport { Actions } from '@/components/Employee/PaymentMethod/Actions'\nimport { BankAccountForm } from '@/components/Employee/PaymentMethod/BankAccountEdit'\nimport { BankAccountsList } from '@/components/Employee/PaymentMethod/BankAccountsList'\nimport { Head } from '@/components/Employee/PaymentMethod/Head'\nimport { PaymentTypeForm } from '@/components/Employee/PaymentMethod/PaymentTypeForm'\nimport { Split } from '@/components/Employee/PaymentMethod/Split'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport { useComponentDictionary } from '@/i18n/I18n'\n\ninterface PaymentMethodProps extends CommonComponentInterface<'Employee.PaymentMethod'> {\n employeeId: string\n defaultValues?: never\n}\n\nexport function PaymentMethod(props: PaymentMethodProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ employeeId, className, dictionary }: PaymentMethodProps) => {\n useI18n('Employee.PaymentMethod')\n useComponentDictionary('Employee.PaymentMethod', dictionary)\n const { baseSubmitHandler, onEvent } = useBase()\n const queryClient = useQueryClient()\n\n const {\n data: { employeePaymentMethod },\n } = useEmployeePaymentMethodGetSuspense({ employeeId })\n const paymentMethod = employeePaymentMethod!\n const { data: bankAccountsList } = useEmployeePaymentMethodsGetBankAccountsSuspense({\n employeeId,\n })\n const bankAccounts = bankAccountsList.employeeBankAccountList!\n const paymentMethodMutation = useEmployeePaymentMethodUpdateMutation()\n const deleteBankAccountMutation = useEmployeePaymentMethodDeleteBankAccountMutation()\n const addBankAccountMutation = useEmployeePaymentMethodCreateMutation()\n const updateBankAccountMutation = useEmployeePaymentMethodUpdateBankAccountMutation()\n\n const [mode, setMode] = useState<MODE>(bankAccounts.length < 1 ? 'INITIAL' : 'LIST')\n if (mode !== 'INITIAL' && bankAccounts.length < 1) {\n setMode('INITIAL')\n }\n\n const baseDefaultValues: Partial<CombinedSchemaOutputs> = useMemo(() => {\n return {\n type: 'Direct Deposit',\n isSplit: false,\n hasBankPayload: false,\n name: '',\n routingNumber: '',\n accountNumber: '',\n accountType: 'Checking',\n splitBy: undefined,\n splitAmount: {},\n priority: {},\n } as Partial<CombinedSchemaOutputs>\n }, [])\n\n const defaultValues: CombinedSchemaOutputs = useMemo(() => {\n return {\n ...baseDefaultValues,\n type: paymentMethod.type ?? 'Direct Deposit',\n splitBy: paymentMethod.splitBy ?? undefined,\n ...paymentMethod.splits?.reduce(\n (acc, { uuid, splitAmount, priority }) => ({\n splitAmount: { ...acc.splitAmount, [uuid]: splitAmount ?? null },\n priority: { ...acc.priority, [uuid]: Number(priority) },\n }),\n { splitAmount: {}, priority: {} },\n ),\n remainder:\n paymentMethod.type === 'Direct Deposit' && paymentMethod.splits\n ? paymentMethod.splits.reduce(\n (acc, curr) =>\n curr.splitAmount === null ? curr.uuid : (paymentMethod.splits?.at(-1)?.uuid ?? acc),\n '',\n )\n : undefined,\n } as CombinedSchemaOutputs\n }, [baseDefaultValues, paymentMethod.type, paymentMethod.splitBy, paymentMethod.splits])\n\n const formMethods = useForm<CombinedSchemaInputs>({\n resolver: zodResolver(CombinedSchema),\n defaultValues: defaultValues as DefaultValues<CombinedSchemaInputs>,\n })\n\n const watchedType = formMethods.watch('type')\n\n const { reset: resetForm } = formMethods\n const { mutateAsync: mutatePaymentMethod } = paymentMethodMutation\n\n useEffect(() => {\n void (async () => {\n if (paymentMethod.splits?.length === 1 && paymentMethod.type === 'Direct Deposit') {\n await mutatePaymentMethod({\n request: {\n employeeId,\n requestBody: {\n splitBy: SPLIT_BY.percentage,\n splits: paymentMethod.splits.map(split => ({\n ...split,\n splitAmount: 100,\n priority: 1,\n })),\n version: paymentMethod.version as string,\n type: 'Direct Deposit',\n },\n },\n })\n }\n })()\n }, [employeeId, paymentMethod, queryClient, mutatePaymentMethod])\n\n useEffect(() => {\n resetForm(defaultValues)\n }, [bankAccounts.length, paymentMethod, defaultValues, resetForm])\n\n const onSubmit: SubmitHandler<CombinedSchemaInputs> = async data => {\n await baseSubmitHandler(data, async payload => {\n const { type } = payload\n if (\n type === 'Direct Deposit' &&\n payload.hasBankPayload &&\n (mode === 'ADD' || mode === 'INITIAL')\n ) {\n const bankAccountResponse = await addBankAccountMutation.mutateAsync({\n request: {\n employeeId,\n requestBody: {\n name: payload.name,\n routingNumber: payload.routingNumber,\n accountNumber: payload.accountNumber,\n accountType: payload.accountType,\n },\n },\n })\n\n onEvent(componentEvents.EMPLOYEE_BANK_ACCOUNT_CREATED, bankAccountResponse)\n } else {\n //Adding bank account updates payment method\n const body =\n type === PAYMENT_METHODS.check\n ? { version: paymentMethod.version as string }\n : {\n ...paymentMethod,\n version: paymentMethod.version as string,\n splitBy: payload.isSplit\n ? payload.splitBy\n : (paymentMethod.splitBy ?? SPLIT_BY.percentage),\n splits:\n payload.isSplit && paymentMethod.splits\n ? paymentMethod.splits.map(split => ({\n ...split,\n splitAmount: payload.splitAmount[split.uuid],\n priority: payload.priority[split.uuid],\n }))\n : (paymentMethod.splits ?? []),\n }\n const paymentMethodResponse = await paymentMethodMutation.mutateAsync({\n request: { employeeId, requestBody: { ...body, type } },\n })\n onEvent(componentEvents.EMPLOYEE_PAYMENT_METHOD_UPDATED, paymentMethodResponse)\n }\n //Cleanup after submission bank/split submission\n formMethods.setValue('isSplit', false)\n formMethods.setValue('hasBankPayload', false)\n //Notify that this component is ready to proceed\n if (mode === 'LIST' || type === PAYMENT_METHODS.check) {\n onEvent(componentEvents.EMPLOYEE_PAYMENT_METHOD_DONE)\n } else {\n setMode('LIST')\n }\n })\n }\n\n const handleDelete = async (uuid: string) => {\n const data = await deleteBankAccountMutation.mutateAsync({\n request: { employeeId, bankAccountUuid: uuid },\n })\n onEvent(componentEvents.EMPLOYEE_BANK_ACCOUNT_DELETED, data)\n }\n const handleAdd = () => {\n setMode('ADD')\n resetForm(defaultValues)\n }\n const handleCancel = () => {\n setMode('LIST')\n resetForm(defaultValues)\n }\n const handleSplit = () => {\n setMode('SPLIT')\n }\n\n return (\n <section className={className}>\n <PaymentMethodProvider\n value={{\n bankAccounts,\n isPending:\n deleteBankAccountMutation.isPending ||\n paymentMethodMutation.isPending ||\n addBankAccountMutation.isPending ||\n updateBankAccountMutation.isPending,\n watchedType,\n mode,\n paymentMethod,\n handleCancel,\n handleAdd,\n handleDelete,\n handleSplit,\n }}\n >\n <FormProvider {...formMethods}>\n <Form onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Head />\n <PaymentTypeForm />\n <BankAccountsList />\n <BankAccountForm />\n <Split />\n <Actions />\n </Form>\n </FormProvider>\n </PaymentMethodProvider>\n </section>\n )\n}\n\nexport const PaymentMethodContextual = () => {\n const { employeeId, onEvent } = useFlow<OnboardingContextInterface>()\n const { t } = useTranslation('common')\n\n if (!employeeId) {\n throw new Error(\n t('errors.missingParamsOrContext', {\n component: 'PaymentMethod',\n param: 'employeeId',\n provider: 'FlowProvider',\n }),\n )\n }\n return <PaymentMethod employeeId={employeeId} onEvent={onEvent} />\n}\n"],"names":["PaymentMethod","props","jsx","BaseComponent","Root","employeeId","className","dictionary","useI18n","useComponentDictionary","baseSubmitHandler","onEvent","useBase","queryClient","useQueryClient","employeePaymentMethod","useEmployeePaymentMethodGetSuspense","paymentMethod","bankAccountsList","useEmployeePaymentMethodsGetBankAccountsSuspense","bankAccounts","paymentMethodMutation","useEmployeePaymentMethodUpdateMutation","deleteBankAccountMutation","useEmployeePaymentMethodDeleteBankAccountMutation","addBankAccountMutation","useEmployeePaymentMethodCreateMutation","updateBankAccountMutation","useEmployeePaymentMethodUpdateBankAccountMutation","mode","setMode","useState","baseDefaultValues","useMemo","defaultValues","acc","uuid","splitAmount","priority","curr","formMethods","useForm","zodResolver","CombinedSchema","watchedType","resetForm","mutatePaymentMethod","useEffect","SPLIT_BY","split","onSubmit","data","payload","type","bankAccountResponse","componentEvents","body","PAYMENT_METHODS","paymentMethodResponse","handleDelete","handleAdd","handleCancel","handleSplit","PaymentMethodProvider","FormProvider","jsxs","Form","Head","PaymentTypeForm","BankAccountsList","BankAccountForm","Split","Actions","PaymentMethodContextual","useFlow","t","useTranslation"],"mappings":"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"}
|