@gusto/embedded-react-sdk 0.10.2 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/components/Base/Base.d.ts +3 -2
  3. package/dist/components/Base/Base.js +31 -31
  4. package/dist/components/Base/Base.js.map +1 -1
  5. package/dist/components/Company/BankAccount/BankAccountComponents.js +16 -9
  6. package/dist/components/Company/BankAccount/BankAccountComponents.js.map +1 -1
  7. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +22 -8
  8. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  9. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.d.ts +1 -0
  10. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +23 -25
  11. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js.map +1 -1
  12. package/dist/components/Company/BankAccount/BankAccountForm/context.d.ts +4 -0
  13. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  14. package/dist/components/Company/BankAccount/BankAccountList/AccountView.js +14 -13
  15. package/dist/components/Company/BankAccount/BankAccountList/AccountView.js.map +1 -1
  16. package/dist/components/Company/BankAccount/stateMachine.d.ts +1 -1
  17. package/dist/components/Company/BankAccount/stateMachine.js +13 -5
  18. package/dist/components/Company/BankAccount/stateMachine.js.map +1 -1
  19. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +41 -42
  20. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  21. package/dist/components/Company/Industry/Industry.js +30 -31
  22. package/dist/components/Company/Industry/Industry.js.map +1 -1
  23. package/dist/components/Company/Locations/LocationForm/LocationForm.js +34 -37
  24. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  25. package/dist/components/Company/Locations/LocationsList/List.js +4 -1
  26. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  27. package/dist/components/Company/PaySchedule/PaySchedule.js +70 -71
  28. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  29. package/dist/components/Contractor/Address/Address.js +37 -38
  30. package/dist/components/Contractor/Address/Address.js.map +1 -1
  31. package/dist/components/Contractor/NewHireReport/NewHireReport.js +57 -58
  32. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  33. package/dist/components/Employee/Compensation/Compensation.js +123 -132
  34. package/dist/components/Employee/Compensation/Compensation.js.map +1 -1
  35. package/dist/components/Employee/Deductions/Deductions.js +74 -79
  36. package/dist/components/Employee/Deductions/Deductions.js.map +1 -1
  37. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +36 -42
  38. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  39. package/dist/components/Employee/EmployeeList/EmployeeList.js +57 -58
  40. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  41. package/dist/components/Employee/PaymentMethod/PaymentMethod.js +95 -97
  42. package/dist/components/Employee/PaymentMethod/PaymentMethod.js.map +1 -1
  43. package/dist/components/Employee/Profile/Profile.js +118 -124
  44. package/dist/components/Employee/Profile/Profile.js.map +1 -1
  45. package/dist/components/Employee/Taxes/FederalForm.js +4 -4
  46. package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
  47. package/dist/components/Employee/Taxes/Taxes.js +59 -60
  48. package/dist/components/Employee/Taxes/Taxes.js.map +1 -1
  49. package/dist/contexts/ApiProvider/ApiProvider.js +16 -14
  50. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  51. package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +5 -0
  52. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +2 -0
  53. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +19 -17
  54. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  55. package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.d.ts +7 -0
  56. package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.js +10 -0
  57. package/dist/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.js.map +1 -0
  58. package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.d.ts +6 -0
  59. package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js +11 -0
  60. package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js.map +1 -0
  61. package/dist/shared/constants.d.ts +2 -0
  62. package/dist/shared/constants.js +10 -9
  63. package/dist/shared/constants.js.map +1 -1
  64. package/dist/style.css +1 -1
  65. package/package.json +5 -1
@@ -1,37 +1,36 @@
1
1
  import { jsx as t, jsxs as J, Fragment as X } from "react/jsx-runtime";
2
- import { zodResolver as B } from "@hookform/resolvers/zod";
3
- import { useForm as G, FormProvider as V } from "react-hook-form";
2
+ import { zodResolver as q } from "@hookform/resolvers/zod";
3
+ import { useForm as B, FormProvider as V } from "react-hook-form";
4
4
  import { useTranslation as W } from "react-i18next";
5
5
  import { useEffect as Y } from "react";
6
- import { useQueryClient as j } from "@tanstack/react-query";
7
- import { useEmployeeTaxSetupGetFederalTaxesSuspense as Q, invalidateEmployeeTaxSetupGetFederalTaxes as z } from "@gusto/embedded-api/react-query/employeeTaxSetupGetFederalTaxes";
8
- import { useEmployeeTaxSetupUpdateFederalTaxesMutation as K } from "@gusto/embedded-api/react-query/employeeTaxSetupUpdateFederalTaxes";
9
- import { useEmployeeTaxSetupGetStateTaxesSuspense as Z } from "@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes";
10
- import { useEmployeeTaxSetupUpdateStateTaxesMutation as $ } from "@gusto/embedded-api/react-query/employeeTaxSetupUpdateStateTaxes";
11
- import { Actions as g } from "./Actions.js";
12
- import { FederalFormSchema as ee, FederalForm as P } from "./FederalForm.js";
6
+ import { useEmployeeTaxSetupGetFederalTaxesSuspense as j } from "@gusto/embedded-api/react-query/employeeTaxSetupGetFederalTaxes";
7
+ import { useEmployeeTaxSetupUpdateFederalTaxesMutation as G } from "@gusto/embedded-api/react-query/employeeTaxSetupUpdateFederalTaxes";
8
+ import { useEmployeeTaxSetupGetStateTaxesSuspense as z } from "@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes";
9
+ import { useEmployeeTaxSetupUpdateStateTaxesMutation as Q } from "@gusto/embedded-api/react-query/employeeTaxSetupUpdateStateTaxes";
10
+ import { Actions as w } from "./Actions.js";
11
+ import { FederalFormSchema as K, FederalForm as P } from "./FederalForm.js";
13
12
  import { FederalHead as b } from "./FederalHead.js";
14
- import { StateFormSchema as te, StateForm as _ } from "./StateForm.js";
15
- import { TaxesProvider as oe } from "./useTaxes.js";
16
- import { BaseComponent as re } from "../../Base/Base.js";
17
- import { useBase as se } from "../../Base/useBase.js";
18
- import { useFlow as ae } from "../../Flow/useFlow.js";
19
- import { useI18n as ne, useComponentDictionary as ie } from "../../../i18n/I18n.js";
13
+ import { StateFormSchema as Z, StateForm as _ } from "./StateForm.js";
14
+ import { TaxesProvider as $ } from "./useTaxes.js";
15
+ import { BaseComponent as ee } from "../../Base/Base.js";
16
+ import { useBase as te } from "../../Base/useBase.js";
17
+ import { useFlow as oe } from "../../Flow/useFlow.js";
18
+ import { useI18n as se, useComponentDictionary as re } from "../../../i18n/I18n.js";
20
19
  import { componentEvents as S } from "../../../shared/constants.js";
21
- import { snakeCaseToCamelCase as w } from "../../../helpers/formattedStrings.js";
22
- import { Form as me } from "../../Common/Form/Form.js";
23
- const le = "2010-01-01";
20
+ import { snakeCaseToCamelCase as g } from "../../../helpers/formattedStrings.js";
21
+ import { Form as ae } from "../../Common/Form/Form.js";
22
+ const ne = "2010-01-01";
24
23
  function u(o) {
25
- return /* @__PURE__ */ t(re, { ...o, children: /* @__PURE__ */ t(de, { ...o, children: o.children }) });
24
+ return /* @__PURE__ */ t(ee, { ...o, children: /* @__PURE__ */ t(me, { ...o, children: o.children }) });
26
25
  }
27
- const de = (o) => {
28
- const { employeeId: r, className: y, children: p, isAdmin: h = !1, dictionary: D } = o, { onEvent: T, fieldErrors: c, baseSubmitHandler: U } = se();
29
- ne("Employee.Taxes"), ie("Employee.Taxes", D);
30
- const N = j(), { data: k } = Q({
31
- employeeUuid: r
32
- }), e = k.employeeFederalTax, { mutateAsync: C, isPending: I } = K(), { data: R } = Z({
33
- employeeUuid: r
34
- }), E = R.employeeStateTaxesList, { mutateAsync: L, isPending: M } = $(), O = {
26
+ const me = (o) => {
27
+ const { employeeId: m, className: y, children: p, isAdmin: h = !1, dictionary: D } = o, { onEvent: T, fieldErrors: c, baseSubmitHandler: U } = te();
28
+ se("Employee.Taxes"), re("Employee.Taxes", D);
29
+ const { data: N } = j({
30
+ employeeUuid: m
31
+ }), e = N.employeeFederalTax, { mutateAsync: k, isPending: I } = G(), { data: R } = z({
32
+ employeeUuid: m
33
+ }), E = R.employeeStateTaxesList, { mutateAsync: C, isPending: L } = Q(), M = {
35
34
  ...e,
36
35
  filingStatus: e.filingStatus ?? void 0,
37
36
  twoJobs: e.twoJobs ? "true" : "false",
@@ -39,32 +38,32 @@ const de = (o) => {
39
38
  dependentsAmount: e.dependentsAmount ? Number(e.dependentsAmount) : 0,
40
39
  otherIncome: e.otherIncome ? Number(e.otherIncome) : 0,
41
40
  extraWithholding: e.extraWithholding ? Number(e.extraWithholding) : 0,
42
- states: E.reduce((s, a) => (a.state && (s[a.state] = a.questions?.reduce((n, l) => {
43
- const d = l.answers[0]?.value, m = w(l.key);
44
- return m === "fileNewHireReport" ? n[m] = typeof d > "u" ? !0 : d : n[m] = d, n;
41
+ states: E.reduce((s, r) => (r.state && (s[r.state] = r.questions?.reduce((a, l) => {
42
+ const d = l.answers[0]?.value, i = g(l.key);
43
+ return i === "fileNewHireReport" ? a[i] = typeof d > "u" ? !0 : d : a[i] = d, a;
45
44
  }, {})), s), {})
46
- }, v = G({
47
- resolver: B(ee.merge(te)),
48
- defaultValues: O
49
- }), { handleSubmit: q, setError: A } = v;
45
+ }, v = B({
46
+ resolver: q(K.merge(Z)),
47
+ defaultValues: M
48
+ }), { handleSubmit: O, setError: A } = v;
50
49
  return Y(() => {
51
50
  c && c.length > 0 && c.forEach((s) => {
52
- const a = s.key.replace(".value", "");
53
- A(a, { type: "custom", message: s.message });
51
+ const r = s.key.replace(".value", "");
52
+ A(r, { type: "custom", message: s.message });
54
53
  });
55
54
  }, [c, A]), /* @__PURE__ */ t("section", { className: y, children: /* @__PURE__ */ t(
56
- oe,
55
+ $,
57
56
  {
58
57
  value: {
59
58
  employeeStateTaxes: E,
60
59
  isAdmin: h,
61
- isPending: I || M
60
+ isPending: I || L
62
61
  },
63
- children: /* @__PURE__ */ t(V, { ...v, children: /* @__PURE__ */ t(me, { onSubmit: q(async (s) => {
64
- await U(s, async (a) => {
65
- const { states: n, ...l } = a, d = await C({
62
+ children: /* @__PURE__ */ t(V, { ...v, children: /* @__PURE__ */ t(ae, { onSubmit: O(async (s) => {
63
+ await U(s, async (r) => {
64
+ const { states: a, ...l } = r, d = await k({
66
65
  request: {
67
- employeeUuid: r,
66
+ employeeUuid: m,
68
67
  requestBody: {
69
68
  ...l,
70
69
  twoJobs: l.twoJobs === "true",
@@ -72,32 +71,32 @@ const de = (o) => {
72
71
  }
73
72
  }
74
73
  });
75
- if (await z(N, [r]), T(S.EMPLOYEE_FEDERAL_TAXES_UPDATED, d), n && Object.keys(n).length > 0) {
76
- const m = [];
74
+ if (T(S.EMPLOYEE_FEDERAL_TAXES_UPDATED, d), a && Object.keys(a).length > 0) {
75
+ const i = [];
77
76
  for (const x of E) {
78
77
  const F = x.state;
79
- F && x.questions !== void 0 && m.push({
78
+ F && x.questions !== void 0 && i.push({
80
79
  state: F,
81
- questions: x.questions.map((i) => {
82
- if (i.isQuestionForAdminOnly && !h)
80
+ questions: x.questions.map((n) => {
81
+ if (n.isQuestionForAdminOnly && !h)
83
82
  return null;
84
- const f = n[F]?.[w(i.key)];
83
+ const f = a[F]?.[g(n.key)];
85
84
  return {
86
- key: i.key,
85
+ key: n.key,
87
86
  answers: [
88
87
  {
89
- validFrom: i.answers[0]?.validFrom ?? le,
90
- validUpTo: i.answers[0]?.validUpTo ?? null,
88
+ validFrom: n.answers[0]?.validFrom ?? ne,
89
+ validUpTo: n.answers[0]?.validUpTo ?? null,
91
90
  value: f == null || typeof f == "number" && isNaN(f) ? "" : f
92
91
  }
93
92
  ]
94
93
  };
95
- }).filter((i) => i !== null)
94
+ }).filter((n) => n !== null)
96
95
  //Filtering out questions in non-admin setup
97
96
  });
98
97
  }
99
- const H = await L({
100
- request: { employeeUuid: r, employeeStateTaxesRequest: { states: m } }
98
+ const H = await C({
99
+ request: { employeeUuid: m, employeeStateTaxesRequest: { states: i } }
101
100
  });
102
101
  T(S.EMPLOYEE_STATE_TAXES_UPDATED, H);
103
102
  }
@@ -107,7 +106,7 @@ const de = (o) => {
107
106
  /* @__PURE__ */ t(b, {}),
108
107
  /* @__PURE__ */ t(P, {}),
109
108
  /* @__PURE__ */ t(_, {}),
110
- /* @__PURE__ */ t(g, {})
109
+ /* @__PURE__ */ t(w, {})
111
110
  ] }) }) })
112
111
  }
113
112
  ) });
@@ -115,9 +114,9 @@ const de = (o) => {
115
114
  u.FederalHead = b;
116
115
  u.FederalForm = P;
117
116
  u.StateForm = _;
118
- u.Actions = g;
119
- const Ie = () => {
120
- const { employeeId: o, onEvent: r, isAdmin: y } = ae(), { t: p } = W();
117
+ u.Actions = w;
118
+ const Ue = () => {
119
+ const { employeeId: o, onEvent: m, isAdmin: y } = oe(), { t: p } = W();
121
120
  if (!o)
122
121
  throw new Error(
123
122
  p("errors.missingParamsOrContext", {
@@ -126,10 +125,10 @@ const Ie = () => {
126
125
  provider: "FlowProvider"
127
126
  })
128
127
  );
129
- return /* @__PURE__ */ t(u, { employeeId: o, onEvent: r, isAdmin: y ?? !1 });
128
+ return /* @__PURE__ */ t(u, { employeeId: o, onEvent: m, isAdmin: y ?? !1 });
130
129
  };
131
130
  export {
132
131
  u as Taxes,
133
- Ie as TaxesContextual
132
+ Ue as TaxesContextual
134
133
  };
135
134
  //# sourceMappingURL=Taxes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Taxes.js","sources":["../../../../src/components/Employee/Taxes/Taxes.tsx"],"sourcesContent":["import { zodResolver } from '@hookform/resolvers/zod'\nimport { FormProvider, useForm, type SubmitHandler } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { useEffect } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport {\n useEmployeeTaxSetupGetFederalTaxesSuspense,\n invalidateEmployeeTaxSetupGetFederalTaxes,\n} from '@gusto/embedded-api/react-query/employeeTaxSetupGetFederalTaxes'\nimport { useEmployeeTaxSetupUpdateFederalTaxesMutation } from '@gusto/embedded-api/react-query/employeeTaxSetupUpdateFederalTaxes'\nimport { useEmployeeTaxSetupGetStateTaxesSuspense } from '@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes'\nimport { useEmployeeTaxSetupUpdateStateTaxesMutation } from '@gusto/embedded-api/react-query/employeeTaxSetupUpdateStateTaxes'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlow'\nimport { Actions } from './Actions'\nimport {\n FederalForm,\n FederalFormSchema,\n type FederalFormInputs,\n type FederalFormPayload,\n} from './FederalForm'\nimport { FederalHead } from './FederalHead'\nimport { StateForm, StateFormSchema, type StateFormPayload } from './StateForm'\nimport { TaxesProvider } from './useTaxes'\nimport {\n useBase,\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\nimport { Form } from '@/components/Common/Form'\nimport { useComponentDictionary } from '@/i18n/I18n'\n\nconst DEFAULT_TAX_VALID_FROM = '2010-01-01'\n\ninterface TaxesProps extends CommonComponentInterface<'Employee.Taxes'> {\n employeeId: string\n isAdmin?: boolean\n}\n\nexport function Taxes(props: TaxesProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = (props: TaxesProps) => {\n const { employeeId, className, children, isAdmin = false, dictionary } = props\n const { onEvent, fieldErrors, baseSubmitHandler } = useBase()\n useI18n('Employee.Taxes')\n useComponentDictionary('Employee.Taxes', dictionary)\n const queryClient = useQueryClient()\n\n const { data: fedData } = useEmployeeTaxSetupGetFederalTaxesSuspense({\n employeeUuid: employeeId,\n })\n const employeeFederalTax = fedData.employeeFederalTax!\n\n const { mutateAsync: updateFederalTaxes, isPending: isPendingFederalTaxes } =\n useEmployeeTaxSetupUpdateFederalTaxesMutation()\n\n const { data: stateData } = useEmployeeTaxSetupGetStateTaxesSuspense({\n employeeUuid: employeeId,\n })\n const employeeStateTaxes = stateData.employeeStateTaxesList!\n const { mutateAsync: updateStateTaxes, isPending: isPendingStateTaxes } =\n useEmployeeTaxSetupUpdateStateTaxesMutation()\n\n const defaultValues = {\n ...employeeFederalTax,\n filingStatus: employeeFederalTax.filingStatus ?? undefined,\n twoJobs: employeeFederalTax.twoJobs ? 'true' : 'false',\n deductions: employeeFederalTax.deductions ? Number(employeeFederalTax.deductions) : 0,\n dependentsAmount: employeeFederalTax.dependentsAmount\n ? Number(employeeFederalTax.dependentsAmount)\n : 0,\n otherIncome: employeeFederalTax.otherIncome ? Number(employeeFederalTax.otherIncome) : 0,\n extraWithholding: employeeFederalTax.extraWithholding\n ? Number(employeeFederalTax.extraWithholding)\n : 0,\n states: employeeStateTaxes.reduce((acc: Record<string, unknown>, state) => {\n if (state.state) {\n acc[state.state] = state.questions?.reduce((acc: Record<string, unknown>, question) => {\n const value = question.answers[0]?.value\n const key = snakeCaseToCamelCase(question.key)\n // Default new hire report to true if not specified\n if (key === 'fileNewHireReport') {\n acc[key] = typeof value === 'undefined' ? true : value\n } else {\n acc[key] = value\n }\n return acc\n }, {})\n }\n return acc\n }, {}),\n }\n\n const formMethods = useForm<FederalFormInputs, unknown, FederalFormPayload & StateFormPayload>({\n resolver: zodResolver(FederalFormSchema.merge(StateFormSchema)),\n defaultValues,\n })\n const { handleSubmit, setError: _setError } = formMethods\n\n useEffect(() => {\n //If list of field specific errors from API is present, mark corresponding fields as invalid\n if (fieldErrors && fieldErrors.length > 0) {\n fieldErrors.forEach(msgObject => {\n const key = msgObject.key.replace('.value', '')\n _setError(key as keyof FederalFormInputs, { type: 'custom', message: msgObject.message })\n })\n }\n }, [fieldErrors, _setError])\n\n const onSubmit: SubmitHandler<FederalFormPayload & StateFormPayload> = async data => {\n await baseSubmitHandler(data, async payload => {\n const { states: statesPayload, ...federalPayload } = payload\n\n const federalTaxesResponse = await updateFederalTaxes({\n request: {\n employeeUuid: employeeId,\n requestBody: {\n ...federalPayload,\n twoJobs: federalPayload.twoJobs === 'true',\n version: employeeFederalTax.version,\n },\n },\n })\n await invalidateEmployeeTaxSetupGetFederalTaxes(queryClient, [employeeId])\n onEvent(componentEvents.EMPLOYEE_FEDERAL_TAXES_UPDATED, federalTaxesResponse)\n\n //State Taxes - only process if statesPayload exists\n if (statesPayload && Object.keys(statesPayload).length > 0) {\n const states = []\n\n for (const state of employeeStateTaxes) {\n const stateName = state.state\n\n if (stateName && state.questions !== undefined) {\n states.push({\n state: stateName,\n questions: state.questions\n .map(question => {\n if (question.isQuestionForAdminOnly && !isAdmin) {\n return null\n }\n const formValue = statesPayload[stateName]?.[snakeCaseToCamelCase(question.key)]\n return {\n key: question.key,\n answers: [\n {\n validFrom: question.answers[0]?.validFrom ?? DEFAULT_TAX_VALID_FROM,\n validUpTo: question.answers[0]?.validUpTo ?? null,\n value:\n formValue == null || (typeof formValue === 'number' && isNaN(formValue))\n ? ''\n : (formValue as string | number | boolean),\n },\n ],\n }\n })\n .filter(q => q !== null), //Filtering out questions in non-admin setup\n })\n }\n }\n\n const stateTaxesResponse = await updateStateTaxes({\n request: { employeeUuid: employeeId, employeeStateTaxesRequest: { states } },\n })\n onEvent(componentEvents.EMPLOYEE_STATE_TAXES_UPDATED, stateTaxesResponse)\n }\n\n onEvent(componentEvents.EMPLOYEE_TAXES_DONE)\n })\n }\n\n return (\n <section className={className}>\n <TaxesProvider\n value={{\n employeeStateTaxes,\n isAdmin: isAdmin,\n isPending: isPendingFederalTaxes || isPendingStateTaxes,\n }}\n >\n <FormProvider {...formMethods}>\n <Form onSubmit={handleSubmit(onSubmit)}>\n {children ? (\n children\n ) : (\n <>\n <FederalHead />\n <FederalForm />\n <StateForm />\n <Actions />\n </>\n )}\n </Form>\n </FormProvider>\n </TaxesProvider>\n </section>\n )\n}\nTaxes.FederalHead = FederalHead\nTaxes.FederalForm = FederalForm\nTaxes.StateForm = StateForm\nTaxes.Actions = Actions\n\nexport const TaxesContextual = () => {\n const { employeeId, onEvent, isAdmin } = useFlow<OnboardingContextInterface>()\n const { t } = useTranslation()\n if (!employeeId) {\n throw new Error(\n t('errors.missingParamsOrContext', {\n component: 'EmployeeTaxes',\n param: 'employeeId',\n provider: 'FlowProvider',\n }),\n )\n }\n return <Taxes employeeId={employeeId} onEvent={onEvent} isAdmin={isAdmin ?? false} />\n}\n"],"names":["DEFAULT_TAX_VALID_FROM","Taxes","props","jsx","BaseComponent","Root","employeeId","className","children","isAdmin","dictionary","onEvent","fieldErrors","baseSubmitHandler","useBase","useI18n","useComponentDictionary","queryClient","useQueryClient","fedData","useEmployeeTaxSetupGetFederalTaxesSuspense","employeeFederalTax","updateFederalTaxes","isPendingFederalTaxes","useEmployeeTaxSetupUpdateFederalTaxesMutation","stateData","useEmployeeTaxSetupGetStateTaxesSuspense","employeeStateTaxes","updateStateTaxes","isPendingStateTaxes","useEmployeeTaxSetupUpdateStateTaxesMutation","defaultValues","acc","state","question","value","key","snakeCaseToCamelCase","formMethods","useForm","zodResolver","FederalFormSchema","StateFormSchema","handleSubmit","_setError","useEffect","msgObject","TaxesProvider","FormProvider","Form","data","payload","statesPayload","federalPayload","federalTaxesResponse","invalidateEmployeeTaxSetupGetFederalTaxes","componentEvents","states","stateName","formValue","q","stateTaxesResponse","jsxs","Fragment","FederalHead","FederalForm","StateForm","Actions","TaxesContextual","useFlow","t","useTranslation"],"mappings":"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"}
1
+ {"version":3,"file":"Taxes.js","sources":["../../../../src/components/Employee/Taxes/Taxes.tsx"],"sourcesContent":["import { zodResolver } from '@hookform/resolvers/zod'\nimport { FormProvider, useForm, type SubmitHandler } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { useEffect } from 'react'\nimport { useEmployeeTaxSetupGetFederalTaxesSuspense } from '@gusto/embedded-api/react-query/employeeTaxSetupGetFederalTaxes'\nimport { useEmployeeTaxSetupUpdateFederalTaxesMutation } from '@gusto/embedded-api/react-query/employeeTaxSetupUpdateFederalTaxes'\nimport { useEmployeeTaxSetupGetStateTaxesSuspense } from '@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes'\nimport { useEmployeeTaxSetupUpdateStateTaxesMutation } from '@gusto/embedded-api/react-query/employeeTaxSetupUpdateStateTaxes'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlow'\nimport { Actions } from './Actions'\nimport {\n FederalForm,\n FederalFormSchema,\n type FederalFormInputs,\n type FederalFormPayload,\n} from './FederalForm'\nimport { FederalHead } from './FederalHead'\nimport { StateForm, StateFormSchema, type StateFormPayload } from './StateForm'\nimport { TaxesProvider } from './useTaxes'\nimport {\n useBase,\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\nimport { Form } from '@/components/Common/Form'\nimport { useComponentDictionary } from '@/i18n/I18n'\n\nconst DEFAULT_TAX_VALID_FROM = '2010-01-01'\n\ninterface TaxesProps extends CommonComponentInterface<'Employee.Taxes'> {\n employeeId: string\n isAdmin?: boolean\n}\n\nexport function Taxes(props: TaxesProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = (props: TaxesProps) => {\n const { employeeId, className, children, isAdmin = false, dictionary } = props\n const { onEvent, fieldErrors, baseSubmitHandler } = useBase()\n useI18n('Employee.Taxes')\n useComponentDictionary('Employee.Taxes', dictionary)\n\n const { data: fedData } = useEmployeeTaxSetupGetFederalTaxesSuspense({\n employeeUuid: employeeId,\n })\n const employeeFederalTax = fedData.employeeFederalTax!\n\n const { mutateAsync: updateFederalTaxes, isPending: isPendingFederalTaxes } =\n useEmployeeTaxSetupUpdateFederalTaxesMutation()\n\n const { data: stateData } = useEmployeeTaxSetupGetStateTaxesSuspense({\n employeeUuid: employeeId,\n })\n const employeeStateTaxes = stateData.employeeStateTaxesList!\n const { mutateAsync: updateStateTaxes, isPending: isPendingStateTaxes } =\n useEmployeeTaxSetupUpdateStateTaxesMutation()\n\n const defaultValues = {\n ...employeeFederalTax,\n filingStatus: employeeFederalTax.filingStatus ?? undefined,\n twoJobs: employeeFederalTax.twoJobs ? 'true' : 'false',\n deductions: employeeFederalTax.deductions ? Number(employeeFederalTax.deductions) : 0,\n dependentsAmount: employeeFederalTax.dependentsAmount\n ? Number(employeeFederalTax.dependentsAmount)\n : 0,\n otherIncome: employeeFederalTax.otherIncome ? Number(employeeFederalTax.otherIncome) : 0,\n extraWithholding: employeeFederalTax.extraWithholding\n ? Number(employeeFederalTax.extraWithholding)\n : 0,\n states: employeeStateTaxes.reduce((acc: Record<string, unknown>, state) => {\n if (state.state) {\n acc[state.state] = state.questions?.reduce((acc: Record<string, unknown>, question) => {\n const value = question.answers[0]?.value\n const key = snakeCaseToCamelCase(question.key)\n // Default new hire report to true if not specified\n if (key === 'fileNewHireReport') {\n acc[key] = typeof value === 'undefined' ? true : value\n } else {\n acc[key] = value\n }\n return acc\n }, {})\n }\n return acc\n }, {}),\n }\n\n const formMethods = useForm<FederalFormInputs, unknown, FederalFormPayload & StateFormPayload>({\n resolver: zodResolver(FederalFormSchema.merge(StateFormSchema)),\n defaultValues,\n })\n const { handleSubmit, setError: _setError } = formMethods\n\n useEffect(() => {\n //If list of field specific errors from API is present, mark corresponding fields as invalid\n if (fieldErrors && fieldErrors.length > 0) {\n fieldErrors.forEach(msgObject => {\n const key = msgObject.key.replace('.value', '')\n _setError(key as keyof FederalFormInputs, { type: 'custom', message: msgObject.message })\n })\n }\n }, [fieldErrors, _setError])\n\n const onSubmit: SubmitHandler<FederalFormPayload & StateFormPayload> = async data => {\n await baseSubmitHandler(data, async payload => {\n const { states: statesPayload, ...federalPayload } = payload\n\n const federalTaxesResponse = await updateFederalTaxes({\n request: {\n employeeUuid: employeeId,\n requestBody: {\n ...federalPayload,\n twoJobs: federalPayload.twoJobs === 'true',\n version: employeeFederalTax.version,\n },\n },\n })\n onEvent(componentEvents.EMPLOYEE_FEDERAL_TAXES_UPDATED, federalTaxesResponse)\n\n //State Taxes - only process if statesPayload exists\n if (statesPayload && Object.keys(statesPayload).length > 0) {\n const states = []\n\n for (const state of employeeStateTaxes) {\n const stateName = state.state\n\n if (stateName && state.questions !== undefined) {\n states.push({\n state: stateName,\n questions: state.questions\n .map(question => {\n if (question.isQuestionForAdminOnly && !isAdmin) {\n return null\n }\n const formValue = statesPayload[stateName]?.[snakeCaseToCamelCase(question.key)]\n return {\n key: question.key,\n answers: [\n {\n validFrom: question.answers[0]?.validFrom ?? DEFAULT_TAX_VALID_FROM,\n validUpTo: question.answers[0]?.validUpTo ?? null,\n value:\n formValue == null || (typeof formValue === 'number' && isNaN(formValue))\n ? ''\n : (formValue as string | number | boolean),\n },\n ],\n }\n })\n .filter(q => q !== null), //Filtering out questions in non-admin setup\n })\n }\n }\n\n const stateTaxesResponse = await updateStateTaxes({\n request: { employeeUuid: employeeId, employeeStateTaxesRequest: { states } },\n })\n onEvent(componentEvents.EMPLOYEE_STATE_TAXES_UPDATED, stateTaxesResponse)\n }\n\n onEvent(componentEvents.EMPLOYEE_TAXES_DONE)\n })\n }\n\n return (\n <section className={className}>\n <TaxesProvider\n value={{\n employeeStateTaxes,\n isAdmin: isAdmin,\n isPending: isPendingFederalTaxes || isPendingStateTaxes,\n }}\n >\n <FormProvider {...formMethods}>\n <Form onSubmit={handleSubmit(onSubmit)}>\n {children ? (\n children\n ) : (\n <>\n <FederalHead />\n <FederalForm />\n <StateForm />\n <Actions />\n </>\n )}\n </Form>\n </FormProvider>\n </TaxesProvider>\n </section>\n )\n}\nTaxes.FederalHead = FederalHead\nTaxes.FederalForm = FederalForm\nTaxes.StateForm = StateForm\nTaxes.Actions = Actions\n\nexport const TaxesContextual = () => {\n const { employeeId, onEvent, isAdmin } = useFlow<OnboardingContextInterface>()\n const { t } = useTranslation()\n if (!employeeId) {\n throw new Error(\n t('errors.missingParamsOrContext', {\n component: 'EmployeeTaxes',\n param: 'employeeId',\n provider: 'FlowProvider',\n }),\n )\n }\n return <Taxes employeeId={employeeId} onEvent={onEvent} isAdmin={isAdmin ?? false} />\n}\n"],"names":["DEFAULT_TAX_VALID_FROM","Taxes","props","jsx","BaseComponent","Root","employeeId","className","children","isAdmin","dictionary","onEvent","fieldErrors","baseSubmitHandler","useBase","useI18n","useComponentDictionary","fedData","useEmployeeTaxSetupGetFederalTaxesSuspense","employeeFederalTax","updateFederalTaxes","isPendingFederalTaxes","useEmployeeTaxSetupUpdateFederalTaxesMutation","stateData","useEmployeeTaxSetupGetStateTaxesSuspense","employeeStateTaxes","updateStateTaxes","isPendingStateTaxes","useEmployeeTaxSetupUpdateStateTaxesMutation","defaultValues","acc","state","question","value","key","snakeCaseToCamelCase","formMethods","useForm","zodResolver","FederalFormSchema","StateFormSchema","handleSubmit","_setError","useEffect","msgObject","TaxesProvider","FormProvider","Form","data","payload","statesPayload","federalPayload","federalTaxesResponse","componentEvents","states","stateName","formValue","q","stateTaxesResponse","jsxs","Fragment","FederalHead","FederalForm","StateForm","Actions","TaxesContextual","useFlow","t","useTranslation"],"mappings":"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"}
@@ -1,34 +1,36 @@
1
- import { jsx as s } from "react/jsx-runtime";
2
- import { QueryClient as u, QueryClientProvider as a } from "@tanstack/react-query";
3
- import { GustoEmbeddedProvider as l } from "@gusto/embedded-api/react-query/_context";
4
- import { GustoEmbeddedCore as p } from "@gusto/embedded-api/core";
1
+ import { jsx as d } from "react/jsx-runtime";
2
+ import { QueryClient as l, QueryClientProvider as u } from "@tanstack/react-query";
3
+ import { GustoEmbeddedProvider as p } from "@gusto/embedded-api/react-query/_context";
4
+ import { GustoEmbeddedCore as y } from "@gusto/embedded-api/core";
5
5
  import { HTTPClient as C } from "@gusto/embedded-api/lib/http";
6
6
  import { useMemo as r } from "react";
7
- function E({
7
+ function g({
8
8
  url: n,
9
9
  headers: t,
10
- children: d
10
+ children: c
11
11
  }) {
12
12
  const o = r(
13
13
  () => new C({
14
- fetcher: async (e) => (e instanceof Request && t && new Headers(t).forEach((i, m) => {
15
- i && e.headers.set(m, i);
14
+ fetcher: async (e) => (e instanceof Request && t && new Headers(t).forEach((s, m) => {
15
+ s && e.headers.set(m, s);
16
16
  }), fetch(e))
17
17
  }),
18
18
  [t]
19
- ), c = r(
20
- () => new p({
19
+ ), a = r(
20
+ () => new y({
21
21
  serverURL: n,
22
22
  httpClient: o
23
23
  }),
24
24
  [o, n]
25
25
  ), f = r(() => {
26
- const e = new u();
27
- return e.setQueryDefaults(["@gusto/embedded-api"], { retry: !1 }), e.setMutationDefaults(["@gusto/embedded-api"], { retry: !1 }), e;
26
+ const e = new l(), i = async () => {
27
+ await e.invalidateQueries();
28
+ };
29
+ return e.setQueryDefaults(["@gusto/embedded-api"], { retry: !1 }), e.setMutationDefaults(["@gusto/embedded-api"], { onSettled: i, retry: !1 }), e;
28
30
  }, []);
29
- return /* @__PURE__ */ s(a, { client: f, children: /* @__PURE__ */ s(l, { client: c, children: d }) });
31
+ return /* @__PURE__ */ d(u, { client: f, children: /* @__PURE__ */ d(p, { client: a, children: c }) });
30
32
  }
31
33
  export {
32
- E as ApiProvider
34
+ g as ApiProvider
33
35
  };
34
36
  //# sourceMappingURL=ApiProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiProvider.js","sources":["../../../src/contexts/ApiProvider/ApiProvider.tsx"],"sourcesContent":["import { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { GustoEmbeddedProvider } from '@gusto/embedded-api/react-query/_context'\nimport { GustoEmbeddedCore } from '@gusto/embedded-api/core'\nimport { HTTPClient } from '@gusto/embedded-api/lib/http'\nimport { useMemo } from 'react'\n\nexport function ApiProvider({\n url,\n headers,\n children,\n}: {\n url: string\n headers?: HeadersInit\n children: React.ReactNode\n}) {\n const httpClientWithHeaders = useMemo(\n () =>\n new HTTPClient({\n fetcher: async request => {\n if (request instanceof Request && headers) {\n const headersInstance = new Headers(headers)\n headersInstance.forEach((headerValue, headerName) => {\n if (headerValue) {\n request.headers.set(headerName, headerValue)\n }\n })\n }\n\n return fetch(request)\n },\n }),\n [headers],\n )\n\n const gustoClient = useMemo(\n () =>\n new GustoEmbeddedCore({\n serverURL: url,\n httpClient: httpClientWithHeaders,\n }),\n [httpClientWithHeaders, url],\n )\n\n const queryClient = useMemo(() => {\n const client = new QueryClient()\n client.setQueryDefaults(['@gusto/embedded-api'], { retry: false })\n client.setMutationDefaults(['@gusto/embedded-api'], { retry: false })\n\n return client\n }, [])\n\n return (\n <QueryClientProvider client={queryClient}>\n <GustoEmbeddedProvider client={gustoClient}>{children}</GustoEmbeddedProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["ApiProvider","url","headers","children","httpClientWithHeaders","useMemo","HTTPClient","request","headerValue","headerName","gustoClient","GustoEmbeddedCore","queryClient","client","QueryClient","jsx","QueryClientProvider","GustoEmbeddedProvider"],"mappings":";;;;;;AAMO,SAASA,EAAY;AAAA,EAC1B,KAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AACF,GAIG;AACD,QAAMC,IAAwBC;AAAA,IAC5B,MACE,IAAIC,EAAW;AAAA,MACb,SAAS,OAAMC,OACTA,aAAmB,WAAWL,KACR,IAAI,QAAQA,CAAO,EAC3B,QAAQ,CAACM,GAAaC,MAAe;AACnD,QAAID,KACMD,EAAA,QAAQ,IAAIE,GAAYD,CAAW;AAAA,MAC7C,CACD,GAGI,MAAMD,CAAO;AAAA,IACtB,CACD;AAAA,IACH,CAACL,CAAO;AAAA,EACV,GAEMQ,IAAcL;AAAA,IAClB,MACE,IAAIM,EAAkB;AAAA,MACpB,WAAWV;AAAA,MACX,YAAYG;AAAA,IAAA,CACb;AAAA,IACH,CAACA,GAAuBH,CAAG;AAAA,EAC7B,GAEMW,IAAcP,EAAQ,MAAM;AAC1B,UAAAQ,IAAS,IAAIC,EAAY;AAC/B,WAAAD,EAAO,iBAAiB,CAAC,qBAAqB,GAAG,EAAE,OAAO,IAAO,GACjEA,EAAO,oBAAoB,CAAC,qBAAqB,GAAG,EAAE,OAAO,IAAO,GAE7DA;AAAA,EACT,GAAG,EAAE;AAGH,SAAA,gBAAAE,EAACC,KAAoB,QAAQJ,GAC3B,4BAACK,GAAsB,EAAA,QAAQP,GAAc,UAAAP,EAAA,CAAS,EACxD,CAAA;AAEJ;"}
1
+ {"version":3,"file":"ApiProvider.js","sources":["../../../src/contexts/ApiProvider/ApiProvider.tsx"],"sourcesContent":["import { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { GustoEmbeddedProvider } from '@gusto/embedded-api/react-query/_context'\nimport { GustoEmbeddedCore } from '@gusto/embedded-api/core'\nimport { HTTPClient } from '@gusto/embedded-api/lib/http'\nimport { useMemo } from 'react'\n\nexport function ApiProvider({\n url,\n headers,\n children,\n}: {\n url: string\n headers?: HeadersInit\n children: React.ReactNode\n}) {\n const httpClientWithHeaders = useMemo(\n () =>\n new HTTPClient({\n fetcher: async request => {\n if (request instanceof Request && headers) {\n const headersInstance = new Headers(headers)\n headersInstance.forEach((headerValue, headerName) => {\n if (headerValue) {\n request.headers.set(headerName, headerValue)\n }\n })\n }\n\n return fetch(request)\n },\n }),\n [headers],\n )\n\n const gustoClient = useMemo(\n () =>\n new GustoEmbeddedCore({\n serverURL: url,\n httpClient: httpClientWithHeaders,\n }),\n [httpClientWithHeaders, url],\n )\n\n const queryClient = useMemo(() => {\n const client = new QueryClient()\n\n const onSettled = async () => {\n await client.invalidateQueries()\n }\n client.setQueryDefaults(['@gusto/embedded-api'], { retry: false })\n client.setMutationDefaults(['@gusto/embedded-api'], { onSettled, retry: false })\n\n return client\n }, [])\n\n return (\n <QueryClientProvider client={queryClient}>\n <GustoEmbeddedProvider client={gustoClient}>{children}</GustoEmbeddedProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["ApiProvider","url","headers","children","httpClientWithHeaders","useMemo","HTTPClient","request","headerValue","headerName","gustoClient","GustoEmbeddedCore","queryClient","client","QueryClient","onSettled","jsx","QueryClientProvider","GustoEmbeddedProvider"],"mappings":";;;;;;AAMO,SAASA,EAAY;AAAA,EAC1B,KAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AACF,GAIG;AACD,QAAMC,IAAwBC;AAAA,IAC5B,MACE,IAAIC,EAAW;AAAA,MACb,SAAS,OAAMC,OACTA,aAAmB,WAAWL,KACR,IAAI,QAAQA,CAAO,EAC3B,QAAQ,CAACM,GAAaC,MAAe;AACnD,QAAID,KACMD,EAAA,QAAQ,IAAIE,GAAYD,CAAW;AAAA,MAC7C,CACD,GAGI,MAAMD,CAAO;AAAA,IACtB,CACD;AAAA,IACH,CAACL,CAAO;AAAA,EACV,GAEMQ,IAAcL;AAAA,IAClB,MACE,IAAIM,EAAkB;AAAA,MACpB,WAAWV;AAAA,MACX,YAAYG;AAAA,IAAA,CACb;AAAA,IACH,CAACA,GAAuBH,CAAG;AAAA,EAC7B,GAEMW,IAAcP,EAAQ,MAAM;AAC1B,UAAAQ,IAAS,IAAIC,EAAY,GAEzBC,IAAY,YAAY;AAC5B,YAAMF,EAAO,kBAAkB;AAAA,IACjC;AACA,WAAAA,EAAO,iBAAiB,CAAC,qBAAqB,GAAG,EAAE,OAAO,IAAO,GAC1DA,EAAA,oBAAoB,CAAC,qBAAqB,GAAG,EAAE,WAAAE,GAAW,OAAO,IAAO,GAExEF;AAAA,EACT,GAAG,EAAE;AAGH,SAAA,gBAAAG,EAACC,KAAoB,QAAQL,GAC3B,4BAACM,GAAsB,EAAA,QAAQR,GAAc,UAAAP,EAAA,CAAS,EACxD,CAAA;AAEJ;"}
@@ -16,3 +16,8 @@ export type { TableProps, TableData, TableRow } from '../../components/Common/UI
16
16
  export type { TextInputProps } from '../../components/Common/UI/TextInput/TextInputTypes';
17
17
  export type { AlertProps } from '../../components/Common/UI/Alert/AlertTypes';
18
18
  export type { BadgeProps } from '../../components/Common/UI/Badge/BadgeTypes';
19
+ export type { OrderedListProps, UnorderedListProps } from '../../components/Common/UI/List/ListTypes';
20
+ export type { HeadingProps } from '../../components/Common/UI/Heading/HeadingTypes';
21
+ export type { PaginationControlProps } from '../../components/Common/PaginationControl/PaginationControlTypes';
22
+ export type { TextProps } from '../../components/Common/UI/Text/TextTypes';
23
+ export type { CalendarPreviewProps } from '../../components/Common/UI/CalendarPreview/CalendarPreviewTypes';
@@ -1,6 +1,7 @@
1
1
  import { default as React } from 'react';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
3
  import { ComponentsContextType } from '../ComponentAdapter/useComponentContext';
4
+ import { LoadingIndicatorContextProps } from '../LoadingIndicatorProvider/useLoadingIndicator';
4
5
  import { GTheme } from '../../types/GTheme';
5
6
  import { DeepPartial, ResourceDictionary } from '../../types/Helpers';
6
7
  interface APIConfig {
@@ -16,6 +17,7 @@ export interface GustoProviderProps {
16
17
  theme?: DeepPartial<GTheme>;
17
18
  queryClient?: QueryClient;
18
19
  components: ComponentsContextType;
20
+ LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator'];
19
21
  }
20
22
  export interface GustoProviderCustomUIAdapterProps extends GustoProviderProps {
21
23
  children?: React.ReactNode;
@@ -1,27 +1,29 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { ErrorBoundary as u } from "react-error-boundary";
3
- import { I18nextProvider as h } from "react-i18next";
2
+ import { ErrorBoundary as h } from "react-error-boundary";
3
+ import { I18nextProvider as v } from "react-i18next";
4
4
  import { useEffect as g } from "react";
5
- import { ComponentsProvider as v } from "../ComponentAdapter/ComponentsProvider.js";
6
- import { ApiProvider as P } from "../ApiProvider/ApiProvider.js";
5
+ import { ComponentsProvider as P } from "../ComponentAdapter/ComponentsProvider.js";
6
+ import { ApiProvider as I } from "../ApiProvider/ApiProvider.js";
7
+ import { LoadingIndicatorProvider as x } from "../LoadingIndicatorProvider/LoadingIndicatorProvider.js";
7
8
  import { SDKI18next as i } from "./SDKI18next.js";
8
- import { InternalError as x } from "../../components/Common/InternalError/InternalError.js";
9
- import { LocaleProvider as y } from "../LocaleProvider/LocaleProvider.js";
10
- import { ThemeProvider as I } from "../ThemeProvider/ThemeProvider.js";
11
- const k = (c) => {
9
+ import { InternalError as y } from "../../components/Common/InternalError/InternalError.js";
10
+ import { LocaleProvider as C } from "../LocaleProvider/LocaleProvider.js";
11
+ import { ThemeProvider as L } from "../ThemeProvider/ThemeProvider.js";
12
+ const G = (a) => {
12
13
  const {
13
- children: a,
14
+ children: d,
14
15
  config: t,
15
16
  dictionary: o,
16
17
  lng: e = "en",
17
- locale: d = "en-US",
18
+ locale: c = "en-US",
18
19
  currency: l = "USD",
19
- theme: s,
20
- components: f
21
- } = c;
20
+ theme: p,
21
+ components: f,
22
+ LoaderComponent: s
23
+ } = a;
22
24
  if (o)
23
- for (const p in o) {
24
- const n = p;
25
+ for (const u in o) {
26
+ const n = u;
25
27
  for (const m in o[n])
26
28
  i.addResourceBundle(
27
29
  n,
@@ -33,9 +35,9 @@ const k = (c) => {
33
35
  }
34
36
  return g(() => {
35
37
  (async () => await i.changeLanguage(e))();
36
- }, [e]), /* @__PURE__ */ r(v, { value: f, children: /* @__PURE__ */ r(u, { FallbackComponent: x, children: /* @__PURE__ */ r(I, { theme: s, children: /* @__PURE__ */ r(y, { locale: d, currency: l, children: /* @__PURE__ */ r(h, { i18n: i, children: /* @__PURE__ */ r(P, { url: t.baseUrl, headers: t.headers, children: a }) }, e) }) }) }) });
38
+ }, [e]), /* @__PURE__ */ r(P, { value: f, children: /* @__PURE__ */ r(x, { value: s, children: /* @__PURE__ */ r(h, { FallbackComponent: y, children: /* @__PURE__ */ r(L, { theme: p, children: /* @__PURE__ */ r(C, { locale: c, currency: l, children: /* @__PURE__ */ r(v, { i18n: i, children: /* @__PURE__ */ r(I, { url: t.baseUrl, headers: t.headers, children: d }) }, e) }) }) }) }) });
37
39
  };
38
40
  export {
39
- k as GustoProviderCustomUIAdapter
41
+ G as GustoProviderCustomUIAdapter
40
42
  };
41
43
  //# sourceMappingURL=GustoProviderCustomUIAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect } from 'react'\nimport { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport { ApiProvider } from '../ApiProvider/ApiProvider'\nimport { SDKI18next } from './SDKI18next'\nimport { InternalError } from '@/components/Common'\nimport { LocaleProvider } from '@/contexts/LocaleProvider'\nimport { ThemeProvider } from '@/contexts/ThemeProvider'\nimport type { GTheme } from '@/types/GTheme'\nimport type { DeepPartial, ResourceDictionary, SupportedLanguages } from '@/types/Helpers'\n\ninterface APIConfig {\n baseUrl: string\n headers?: HeadersInit\n}\n\nexport interface GustoProviderProps {\n config: APIConfig\n dictionary?: ResourceDictionary\n lng?: string\n locale?: string\n currency?: string\n theme?: DeepPartial<GTheme>\n queryClient?: QueryClient\n components: ComponentsContextType\n}\n\nexport interface GustoProviderCustomUIAdapterProps extends GustoProviderProps {\n children?: React.ReactNode\n}\n\n/**\n * A provider that accepts UI component adapters through the components prop\n */\nconst GustoProviderCustomUIAdapter: React.FC<GustoProviderCustomUIAdapterProps> = props => {\n const {\n children,\n config,\n dictionary,\n lng = 'en',\n locale = 'en-US',\n currency = 'USD',\n theme,\n components,\n } = props\n\n // Handle dictionary resources\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\n // Adding resources overrides to i18next instance - initial load will override common namespace and add component specific dictionaries provided by partners\n SDKI18next.addResourceBundle(\n lang,\n ns,\n (dictionary[lang] as Record<string, unknown>)[ns],\n true,\n true,\n )\n }\n }\n }\n\n // Handle language change\n useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n return (\n <ComponentsProvider value={components}>\n <ErrorBoundary FallbackComponent={InternalError}>\n <ThemeProvider theme={theme}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider url={config.baseUrl} headers={config.headers}>\n {children}\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </ComponentsProvider>\n )\n}\n\nexport { GustoProviderCustomUIAdapter }\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","components","language","lang","ns","SDKI18next","useEffect","jsx","ComponentsProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider"],"mappings":";;;;;;;;;;AAsCA,MAAMA,IAA4E,CAASC,MAAA;AACnF,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,IACER;AAGJ,MAAIG;AACF,eAAWM,KAAYN,GAAY;AACjC,YAAMO,IAAOD;AACF,iBAAAE,KAAMR,EAAWO,CAAI;AAEnB,QAAAE,EAAA;AAAA,UACTF;AAAA,UACAC;AAAA,UACCR,EAAWO,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QACF;AAAA,IACF;AAKJ,SAAAE,EAAU,MAAM;AACd,KAAM,YACE,MAAAD,EAAW,eAAeR,CAAG;AAAA,EAClC,GACF,CAACA,CAAG,CAAC,GAGL,gBAAAU,EAAAC,GAAA,EAAmB,OAAOP,GACzB,4BAACQ,GAAc,EAAA,mBAAmBC,GAChC,UAAA,gBAAAH,EAACI,GAAc,EAAA,OAAAX,GACb,UAAC,gBAAAO,EAAAK,GAAA,EAAe,QAAAd,GAAgB,UAAAC,GAC9B,UAAA,gBAAAQ,EAACM,GAAgB,EAAA,MAAMR,GACrB,UAAA,gBAAAE,EAACO,GAAY,EAAA,KAAKnB,EAAO,SAAS,SAASA,EAAO,SAC/C,UAAAD,GACH,EAHsC,GAAAG,CAIxC,GACF,EAAA,CACF,EACF,CAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect } from 'react'\nimport { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport { ApiProvider } from '../ApiProvider/ApiProvider'\nimport { LoadingIndicatorProvider } from '../LoadingIndicatorProvider/LoadingIndicatorProvider'\nimport type { LoadingIndicatorContextProps } from '../LoadingIndicatorProvider/useLoadingIndicator'\nimport { SDKI18next } from './SDKI18next'\nimport { InternalError } from '@/components/Common'\nimport { LocaleProvider } from '@/contexts/LocaleProvider'\nimport { ThemeProvider } from '@/contexts/ThemeProvider'\nimport type { GTheme } from '@/types/GTheme'\nimport type { DeepPartial, ResourceDictionary, SupportedLanguages } from '@/types/Helpers'\n\ninterface APIConfig {\n baseUrl: string\n headers?: HeadersInit\n}\n\nexport interface GustoProviderProps {\n config: APIConfig\n dictionary?: ResourceDictionary\n lng?: string\n locale?: string\n currency?: string\n theme?: DeepPartial<GTheme>\n queryClient?: QueryClient\n components: ComponentsContextType\n LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator']\n}\n\nexport interface GustoProviderCustomUIAdapterProps extends GustoProviderProps {\n children?: React.ReactNode\n}\n\n/**\n * A provider that accepts UI component adapters through the components prop\n */\nconst GustoProviderCustomUIAdapter: React.FC<GustoProviderCustomUIAdapterProps> = props => {\n const {\n children,\n config,\n dictionary,\n lng = 'en',\n locale = 'en-US',\n currency = 'USD',\n theme,\n components,\n LoaderComponent,\n } = props\n\n // Handle dictionary resources\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\n // Adding resources overrides to i18next instance - initial load will override common namespace and add component specific dictionaries provided by partners\n SDKI18next.addResourceBundle(\n lang,\n ns,\n (dictionary[lang] as Record<string, unknown>)[ns],\n true,\n true,\n )\n }\n }\n }\n\n // Handle language change\n useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n return (\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ErrorBoundary FallbackComponent={InternalError}>\n <ThemeProvider theme={theme}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider url={config.baseUrl} headers={config.headers}>\n {children}\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n )\n}\n\nexport { GustoProviderCustomUIAdapter }\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","components","LoaderComponent","language","lang","ns","SDKI18next","useEffect","ComponentsProvider","jsx","LoadingIndicatorProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider"],"mappings":";;;;;;;;;;;AAyCA,MAAMA,IAA4E,CAASC,MAAA;AACnF,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,EAAA,IACET;AAGJ,MAAIG;AACF,eAAWO,KAAYP,GAAY;AACjC,YAAMQ,IAAOD;AACF,iBAAAE,KAAMT,EAAWQ,CAAI;AAEnB,QAAAE,EAAA;AAAA,UACTF;AAAA,UACAC;AAAA,UACCT,EAAWQ,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QACF;AAAA,IACF;AAKJ,SAAAE,EAAU,MAAM;AACd,KAAM,YACE,MAAAD,EAAW,eAAeT,CAAG;AAAA,EAClC,GACF,CAACA,CAAG,CAAC,qBAGLW,GAAmB,EAAA,OAAOP,GACzB,UAAA,gBAAAQ,EAACC,KAAyB,OAAOR,GAC/B,UAAC,gBAAAO,EAAAE,GAAA,EAAc,mBAAmBC,GAChC,UAAA,gBAAAH,EAACI,KAAc,OAAAb,GACb,UAAA,gBAAAS,EAACK,KAAe,QAAAhB,GAAgB,UAAAC,GAC9B,UAAC,gBAAAU,EAAAM,GAAA,EAAgB,MAAMT,GACrB,UAAA,gBAAAG,EAACO,GAAY,EAAA,KAAKrB,EAAO,SAAS,SAASA,EAAO,SAC/C,UAAAD,EACH,CAAA,EAHsC,GAAAG,CAIxC,GACF,EACF,CAAA,GACF,GACF,EACF,CAAA;AAEJ;"}
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from 'react';
2
+ import { LoadingIndicatorContextProps } from './useLoadingIndicator';
3
+ export interface LoadingIndicatorProviderProps {
4
+ children: ReactNode;
5
+ value?: LoadingIndicatorContextProps['LoadingIndicator'];
6
+ }
7
+ export declare function LoadingIndicatorProvider({ children, value }: LoadingIndicatorProviderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { LoadingIndicatorContext as n } from "./useLoadingIndicator.js";
3
+ import { Loading as t } from "../../components/Common/Loading/Loading.js";
4
+ function m({ children: o, value: r }) {
5
+ return /* @__PURE__ */ i(n.Provider, { value: { LoadingIndicator: r ?? t }, children: o });
6
+ }
7
+ export {
8
+ m as LoadingIndicatorProvider
9
+ };
10
+ //# sourceMappingURL=LoadingIndicatorProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingIndicatorProvider.js","sources":["../../../src/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { LoadingIndicatorContext, type LoadingIndicatorContextProps } from './useLoadingIndicator'\nimport { Loading } from '@/components/Common/Loading/Loading'\n\nexport interface LoadingIndicatorProviderProps {\n children: ReactNode\n value?: LoadingIndicatorContextProps['LoadingIndicator']\n}\n\nexport function LoadingIndicatorProvider({ children, value }: LoadingIndicatorProviderProps) {\n return (\n <LoadingIndicatorContext.Provider value={{ LoadingIndicator: value ?? Loading }}>\n {children}\n </LoadingIndicatorContext.Provider>\n )\n}\n"],"names":["LoadingIndicatorProvider","children","value","jsx","LoadingIndicatorContext","Loading"],"mappings":";;;AASO,SAASA,EAAyB,EAAE,UAAAC,GAAU,OAAAC,KAAwC;AAEzF,SAAA,gBAAAC,EAACC,EAAwB,UAAxB,EAAiC,OAAO,EAAE,kBAAkBF,KAASG,KACnE,UAAAJ,GACH;AAEJ;"}
@@ -0,0 +1,6 @@
1
+ import { JSX } from 'react';
2
+ export interface LoadingIndicatorContextProps {
3
+ LoadingIndicator: () => JSX.Element;
4
+ }
5
+ export declare const LoadingIndicatorContext: import('react').Context<LoadingIndicatorContextProps>;
6
+ export declare const useLoadingIndicator: () => LoadingIndicatorContextProps;
@@ -0,0 +1,11 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { useContext as t, createContext as n } from "react";
3
+ import { Loading as r } from "../../components/Common/Loading/Loading.js";
4
+ const i = n({
5
+ LoadingIndicator: () => /* @__PURE__ */ o(r, {})
6
+ }), c = () => t(i);
7
+ export {
8
+ i as LoadingIndicatorContext,
9
+ c as useLoadingIndicator
10
+ };
11
+ //# sourceMappingURL=useLoadingIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadingIndicator.js","sources":["../../../src/contexts/LoadingIndicatorProvider/useLoadingIndicator.tsx"],"sourcesContent":["import type { JSX } from 'react'\nimport { createContext, useContext } from 'react'\nimport { Loading } from '@/components/Common/Loading/Loading'\n\nexport interface LoadingIndicatorContextProps {\n LoadingIndicator: () => JSX.Element\n}\nexport const LoadingIndicatorContext = createContext<LoadingIndicatorContextProps>({\n LoadingIndicator: () => <Loading />,\n})\n\nexport const useLoadingIndicator = () => useContext(LoadingIndicatorContext)\n"],"names":["LoadingIndicatorContext","createContext","jsx","Loading","useLoadingIndicator","useContext"],"mappings":";;;AAOO,MAAMA,IAA0BC,EAA4C;AAAA,EACjF,kBAAkB,MAAM,gBAAAC,EAACC,GAAQ,CAAA,CAAA;AACnC,CAAC,GAEYC,IAAsB,MAAMC,EAAWL,CAAuB;"}
@@ -67,6 +67,7 @@ export declare const companyEvents: {
67
67
  readonly COMPANY_LOCATION_UPDATED: "company/location/edit/done";
68
68
  readonly COMPANY_LOCATION_DONE: "company/location/done";
69
69
  readonly COMPANY_BANK_ACCOUNT_CHANGE: "company/bankAccount/change";
70
+ readonly COMPANY_BANK_ACCOUNT_CANCEL: "company/bankAccount/cancel";
70
71
  readonly COMPANY_BANK_ACCOUNT_CREATED: "company/bankAccount/created";
71
72
  readonly COMPANY_BANK_ACCOUNT_VERIFY: "company/bankAccount/verify";
72
73
  readonly COMPANY_BANK_ACCOUNT_DONE: "company/bankAccount/done";
@@ -133,6 +134,7 @@ export declare const componentEvents: {
133
134
  readonly COMPANY_LOCATION_UPDATED: "company/location/edit/done";
134
135
  readonly COMPANY_LOCATION_DONE: "company/location/done";
135
136
  readonly COMPANY_BANK_ACCOUNT_CHANGE: "company/bankAccount/change";
137
+ readonly COMPANY_BANK_ACCOUNT_CANCEL: "company/bankAccount/cancel";
136
138
  readonly COMPANY_BANK_ACCOUNT_CREATED: "company/bankAccount/created";
137
139
  readonly COMPANY_BANK_ACCOUNT_VERIFY: "company/bankAccount/verify";
138
140
  readonly COMPANY_BANK_ACCOUNT_DONE: "company/bankAccount/done";
@@ -67,6 +67,7 @@ const O = {
67
67
  COMPANY_LOCATION_UPDATED: "company/location/edit/done",
68
68
  COMPANY_LOCATION_DONE: "company/location/done",
69
69
  COMPANY_BANK_ACCOUNT_CHANGE: "company/bankAccount/change",
70
+ COMPANY_BANK_ACCOUNT_CANCEL: "company/bankAccount/cancel",
70
71
  COMPANY_BANK_ACCOUNT_CREATED: "company/bankAccount/created",
71
72
  COMPANY_BANK_ACCOUNT_VERIFY: "company/bankAccount/verify",
72
73
  COMPANY_BANK_ACCOUNT_DONE: "company/bankAccount/done",
@@ -121,7 +122,7 @@ const O = {
121
122
  OWNER: "Owner",
122
123
  COMMISSION_ONLY_EXEMPT: "Commission Only Exempt",
123
124
  COMMISSION_ONLY_NONEXEMPT: "Commission Only Nonexempt"
124
- }, D = 43888, d = 40, P = 173.333333, M = 2080, c = [
125
+ }, D = 43888, d = 40, P = 173.333333, c = 2080, M = [
125
126
  "AL",
126
127
  "AK",
127
128
  "AZ",
@@ -191,33 +192,33 @@ const O = {
191
192
  SMALL: "small",
192
193
  MEDIUM: "medium",
193
194
  LARGE: "large"
194
- }, S = {
195
+ }, C = {
195
196
  [e.BASE]: "0rem",
196
197
  [e.SMALL]: "40rem",
197
198
  [e.MEDIUM]: "48rem",
198
199
  [e.LARGE]: "64rem"
199
- }, m = {
200
+ }, S = {
200
201
  check: "Check",
201
202
  directDeposit: "Direct Deposit"
202
- }, C = {
203
+ }, m = {
203
204
  percentage: "Percentage",
204
205
  amount: "Amount"
205
206
  };
206
207
  export {
207
208
  e as BREAKPOINTS,
208
- S as BREAKPOINTS_VALUES,
209
+ C as BREAKPOINTS_VALUES,
209
210
  _ as EmployeeOnboardingStatus,
210
211
  a as EmployeeSelfOnboardingStatuses,
211
212
  D as FLSA_OVERTIME_SALARY_LIMIT,
212
213
  T as FlsaStatus,
213
- M as HOURS_PER_PAY_PERIOD_ANNUALLY,
214
+ c as HOURS_PER_PAY_PERIOD_ANNUALLY,
214
215
  P as HOURS_PER_PAY_PERIOD_MONTHLY,
215
216
  d as HOURS_PER_PAY_PERIOD_WEEKLY,
216
- m as PAYMENT_METHODS,
217
+ S as PAYMENT_METHODS,
217
218
  p as PAY_PERIODS,
218
219
  R as SIGNATORY_TITLES,
219
- C as SPLIT_BY,
220
- c as STATES_ABBR,
220
+ m as SPLIT_BY,
221
+ M as STATES_ABBR,
221
222
  o as companyEvents,
222
223
  t as componentEvents,
223
224
  A as contractorEvents,