@gusto/embedded-react-sdk 0.48.0 → 0.48.1
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 +11 -0
- package/dist/components/Common/EmptyData/EmptyData.d.ts +1 -1
- package/dist/components/Common/EmptyData/EmptyData.js +10 -12
- package/dist/components/Common/EmptyData/EmptyData.js.map +1 -1
- package/dist/components/Common/EmptyData/EmptyData.module.scss.js +6 -10
- package/dist/components/Common/EmptyData/EmptyData.module.scss.js.map +1 -1
- package/dist/components/Common/Form/Form.d.ts +1 -1
- package/dist/components/Common/Form/Form.js +8 -7
- package/dist/components/Common/Form/Form.js.map +1 -1
- package/dist/components/Common/UI/Card/Card.js +8 -8
- package/dist/components/Common/UI/Card/Card.js.map +1 -1
- package/dist/components/Common/UI/Card/Card.module.scss.js +5 -3
- package/dist/components/Common/UI/Card/Card.module.scss.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +13 -13
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -17
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -17
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -19
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccount.js +6 -7
- package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -17
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -17
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js +2 -3
- package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/fields.js +4 -4
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +12 -26
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -20
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Industry/IndustrySelect.js +6 -8
- package/dist/components/Company/Industry/IndustrySelect.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -17
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -17
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +4 -18
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleForm.js +5 -4
- package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js +5 -5
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -17
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -17
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Contractor/Address/useAddress.js +5 -19
- package/dist/components/Contractor/Address/useAddress.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +2 -3
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +2 -3
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
- package/dist/components/Contractor/Profile/ContractorProfileForm.js +13 -13
- package/dist/components/Contractor/Profile/useContractorProfile.js +39 -48
- package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
- package/dist/components/Employee/Compensation/management/Compensation.js +2 -3
- package/dist/components/Employee/Compensation/management/Compensation.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationAddAnotherJobForm/CompensationAddAnotherJobForm.js +8 -9
- package/dist/components/Employee/Compensation/management/CompensationAddAnotherJobForm/CompensationAddAnotherJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js +2 -3
- package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +2 -3
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js +2 -3
- package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditPendingJobForm/CompensationEditPendingJobForm.js +2 -3
- package/dist/components/Employee/Compensation/management/CompensationEditPendingJobForm/CompensationEditPendingJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/Compensation.js +2 -3
- package/dist/components/Employee/Compensation/onboarding/Compensation.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.js +2 -3
- package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js +6 -6
- package/dist/components/Employee/Compensation/shared/useJobForm/fields.js +10 -10
- package/dist/components/Employee/Deductions/management/Deductions.js +2 -3
- package/dist/components/Employee/Deductions/management/Deductions.js.map +1 -1
- package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js +2 -3
- package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js +2 -2
- package/dist/components/Employee/Documents/management/Documents.js +2 -3
- package/dist/components/Employee/Documents/management/Documents.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -17
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +11 -12
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +16 -16
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js +3 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js.map +1 -1
- package/dist/components/Employee/Documents/shared/SignatureForm/SignatureForm.js +3 -1
- package/dist/components/Employee/Documents/shared/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/fields.js +2 -2
- package/dist/components/Employee/FederalTaxes/management/FederalTaxes.js +9 -10
- package/dist/components/Employee/FederalTaxes/management/FederalTaxes.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js +2 -3
- package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +8 -9
- package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +13 -14
- package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/fields.js +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddress.js +2 -3
- package/dist/components/Employee/HomeAddress/management/HomeAddress.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/management/PaymentMethod.js +6 -7
- package/dist/components/Employee/PaymentMethod/management/PaymentMethod.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/PaymentMethod.js +6 -7
- package/dist/components/Employee/PaymentMethod/onboarding/PaymentMethod.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/splitFieldFactory.js +4 -4
- package/dist/components/Employee/Profile/management/Profile.js +11 -12
- package/dist/components/Employee/Profile/management/Profile.js.map +1 -1
- package/dist/components/Employee/Profile/management/ProfileEditForm.js +12 -13
- package/dist/components/Employee/Profile/management/ProfileEditForm.js.map +1 -1
- package/dist/components/Employee/Profile/onboarding/AdminProfile.js +10 -11
- package/dist/components/Employee/Profile/onboarding/AdminProfile.js.map +1 -1
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +2 -3
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js.map +1 -1
- package/dist/components/Employee/Profile/onboarding/Profile.js +11 -12
- package/dist/components/Employee/Profile/onboarding/Profile.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/fields.js +8 -8
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/fields.js +6 -6
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js +4 -4
- package/dist/components/Employee/StateTaxes/management/StateTaxes.js +9 -10
- package/dist/components/Employee/StateTaxes/management/StateTaxes.js.map +1 -1
- package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js +6 -7
- package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js.map +1 -1
- package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +2 -3
- package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/EmployeeStateTaxesView.js +2 -3
- package/dist/components/Employee/StateTaxes/shared/EmployeeStateTaxesView.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldComponents.js +8 -8
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +10 -10
- package/dist/components/Employee/WorkAddress/management/WorkAddress.js +6 -7
- package/dist/components/Employee/WorkAddress/management/WorkAddress.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +7 -8
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequests.js +7 -8
- package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +16 -17
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +2 -3
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +8 -8
- package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js +0 -1
- package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +25 -34
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +1 -1
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +2 -3
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +6 -7
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCases.js +6 -7
- package/dist/components/Payroll/RecoveryCases/RecoveryCases.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +2 -3
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +10 -10
- package/dist/components/Payroll/usePreparedPayrollData.js +22 -33
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js +2 -3
- package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js +2 -3
- package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyList.js +2 -3
- package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
- package/dist/i18n/en/common.json.d.ts +0 -1
- package/dist/i18n/en/common.json.js +2 -2
- package/dist/node_modules/react-dnd/dist/core/DndProvider.js +1 -1
- package/dist/node_modules/react-dnd/dist/core/DndProvider.js.map +1 -1
- package/dist/partner-hook-utils/composeErrorHandler.js +3 -1
- package/dist/partner-hook-utils/composeErrorHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/DatePickerHookField.js +1 -1
- package/dist/style.css +1 -1
- package/dist/types/i18next.d.ts +0 -1
- package/package.json +19 -7
- package/dist/assets/icons/magnifyingGlass.png.js +0 -5
- package/dist/assets/icons/magnifyingGlass.png.js.map +0 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { jsx as o, jsxs as
|
|
1
|
+
import { jsx as o, jsxs as l } from "react/jsx-runtime";
|
|
2
2
|
import { useState as D } from "react";
|
|
3
3
|
import { useTranslation as L } from "react-i18next";
|
|
4
4
|
import M from "classnames";
|
|
5
5
|
import { useEmployeeDetailsForm as R } from "../shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js";
|
|
6
6
|
import g from "./Profile.module.scss.js";
|
|
7
7
|
import { BaseBoundaries as v, BaseLayout as d } from "../../../Base/Base.js";
|
|
8
|
-
import "../../../Base/useBase.js";
|
|
9
8
|
import { Grid as b } from "../../../Common/Grid/Grid.js";
|
|
10
9
|
import { ActionsLayout as h } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
11
10
|
import { useComponentContext as A } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
@@ -13,7 +12,7 @@ import { Form as _ } from "../../../Common/Form/Form.js";
|
|
|
13
12
|
import { SDKFormProvider as y } from "../../../../partner-hook-utils/form/SDKFormProvider.js";
|
|
14
13
|
import { useI18n as F, useComponentDictionary as P } from "../../../../i18n/I18n.js";
|
|
15
14
|
import { componentEvents as f } from "../../../../shared/constants.js";
|
|
16
|
-
function
|
|
15
|
+
function K({
|
|
17
16
|
FallbackComponent: r,
|
|
18
17
|
...t
|
|
19
18
|
}) {
|
|
@@ -26,7 +25,7 @@ function z({
|
|
|
26
25
|
}
|
|
27
26
|
);
|
|
28
27
|
}
|
|
29
|
-
function S({ employeeId: r, className: t, dictionary: c, onEvent:
|
|
28
|
+
function S({ employeeId: r, className: t, dictionary: c, onEvent: m }) {
|
|
30
29
|
F("Employee.Management.Profile"), P("Employee.Management.Profile", c);
|
|
31
30
|
const { t: e } = L("Employee.Management.Profile"), s = A(), i = R({
|
|
32
31
|
employeeId: r,
|
|
@@ -37,14 +36,14 @@ function S({ employeeId: r, className: t, dictionary: c, onEvent: l }) {
|
|
|
37
36
|
}), [E, n] = D(!1);
|
|
38
37
|
if (i.isLoading)
|
|
39
38
|
return /* @__PURE__ */ o(d, { isLoading: !0, error: i.errorHandling.errors });
|
|
40
|
-
const a = i.form.Fields,
|
|
39
|
+
const a = i.form.Fields, u = async () => {
|
|
41
40
|
n(!1), await i.actions.onSubmit({
|
|
42
41
|
onEmployeeUpdated: (I) => {
|
|
43
|
-
|
|
42
|
+
m(f.EMPLOYEE_MANAGEMENT_PROFILE_UPDATED, I);
|
|
44
43
|
}
|
|
45
44
|
}) && n(!0);
|
|
46
|
-
},
|
|
47
|
-
|
|
45
|
+
}, p = () => {
|
|
46
|
+
m(f.EMPLOYEE_MANAGEMENT_PROFILE_EDIT_CANCELLED);
|
|
48
47
|
}, N = E ? /* @__PURE__ */ o(
|
|
49
48
|
s.Alert,
|
|
50
49
|
{
|
|
@@ -55,10 +54,10 @@ function S({ employeeId: r, className: t, dictionary: c, onEvent: l }) {
|
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
56
|
) : void 0;
|
|
58
|
-
return /* @__PURE__ */ o("section", { className: M(g.container, t), children: /* @__PURE__ */ o(d, { error: i.errorHandling.errors, children: /* @__PURE__ */ o(y, { formHookResult: i, children: /* @__PURE__ */
|
|
57
|
+
return /* @__PURE__ */ o("section", { className: M(g.container, t), children: /* @__PURE__ */ o(d, { error: i.errorHandling.errors, children: /* @__PURE__ */ o(y, { formHookResult: i, children: /* @__PURE__ */ l(_, { onSubmit: u, children: [
|
|
59
58
|
N,
|
|
60
59
|
/* @__PURE__ */ o(s.Heading, { as: "h1", children: e("form.title") }),
|
|
61
|
-
/* @__PURE__ */
|
|
60
|
+
/* @__PURE__ */ l(
|
|
62
61
|
b,
|
|
63
62
|
{
|
|
64
63
|
gap: { base: 20, small: 8 },
|
|
@@ -117,13 +116,13 @@ function S({ employeeId: r, className: t, dictionary: c, onEvent: l }) {
|
|
|
117
116
|
validationMessages: { REQUIRED: e("validations.dob", { ns: "common" }) }
|
|
118
117
|
}
|
|
119
118
|
),
|
|
120
|
-
/* @__PURE__ */
|
|
121
|
-
/* @__PURE__ */ o(s.Button, { variant: "secondary", onClick:
|
|
119
|
+
/* @__PURE__ */ l(h, { children: [
|
|
120
|
+
/* @__PURE__ */ o(s.Button, { variant: "secondary", onClick: p, children: e("form.cancelCta") }),
|
|
122
121
|
/* @__PURE__ */ o(s.Button, { type: "submit", isLoading: i.status.isPending, children: e("form.saveCta") })
|
|
123
122
|
] })
|
|
124
123
|
] }) }) }) });
|
|
125
124
|
}
|
|
126
125
|
export {
|
|
127
|
-
|
|
126
|
+
K as ProfileEditForm
|
|
128
127
|
};
|
|
129
128
|
//# sourceMappingURL=ProfileEditForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileEditForm.js","sources":["../../../../../src/components/Employee/Profile/management/ProfileEditForm.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { useEmployeeDetailsForm } from '../shared/useEmployeeDetailsForm'\nimport styles from './Profile.module.scss'\nimport {\n BaseBoundaries,\n BaseLayout,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { Grid } from '@/components/Common/Grid/Grid'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\n/**\n * Props for {@link ProfileEditForm}.\n *\n * @public\n */\nexport interface ProfileEditFormProps extends CommonComponentInterface<'Employee.Management.Profile'> {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when the user saves changes or cancels editing. */\n onEvent: BaseComponentInterface['onEvent']\n}\n\n/**\n * Standalone edit form for an employee's basic profile details.\n *\n * @remarks\n * Renders fields for first name, middle initial, last name, email, SSN, and\n * date of birth — all required on update — and shows a success alert when\n * the save completes. Save and Cancel both emit events so the parent can\n * return to the read view.\n *\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/management/profile/updated` | Fired after the employee profile is successfully saved | {@link Employee} |\n * | `employee/management/profile/editCancelled` | Fired when the user clicks Cancel | — |\n *\n * @param input - See {@link ProfileEditFormProps}.\n * @returns The employee profile edit form.\n * @public\n */\nexport function ProfileEditForm({\n FallbackComponent,\n ...props\n}: ProfileEditFormProps & Pick<BaseComponentInterface, 'FallbackComponent'>) {\n return (\n <BaseBoundaries\n componentName=\"Employee.Management.Profile\"\n FallbackComponent={FallbackComponent}\n >\n <ProfileEditFormRoot {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction ProfileEditFormRoot({ employeeId, className, dictionary, onEvent }: ProfileEditFormProps) {\n useI18n('Employee.Management.Profile')\n useComponentDictionary('Employee.Management.Profile', dictionary)\n const { t } = useTranslation('Employee.Management.Profile')\n const Components = useComponentContext()\n\n const employeeDetails = useEmployeeDetailsForm({\n employeeId,\n withSelfOnboardingField: false,\n optionalFieldsToRequire: {\n update: ['firstName', 'lastName', 'email', 'dateOfBirth', 'ssn'],\n },\n })\n\n const [showSuccess, setShowSuccess] = useState(false)\n\n if (employeeDetails.isLoading) {\n return <BaseLayout isLoading error={employeeDetails.errorHandling.errors} />\n }\n\n const Fields = employeeDetails.form.Fields\n\n const handleSubmit = async () => {\n setShowSuccess(false)\n const result = await employeeDetails.actions.onSubmit({\n onEmployeeUpdated: emp => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PROFILE_UPDATED, emp)\n },\n })\n if (!result) return\n setShowSuccess(true)\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PROFILE_EDIT_CANCELLED)\n }\n\n const alert = showSuccess ? (\n <Components.Alert\n status=\"success\"\n label={t('form.successAlert')}\n onDismiss={() => {\n setShowSuccess(false)\n }}\n />\n ) : undefined\n\n return (\n <section className={classNames(styles.container, className)}>\n <BaseLayout error={employeeDetails.errorHandling.errors}>\n <SDKFormProvider formHookResult={employeeDetails}>\n <Form onSubmit={handleSubmit}>\n {alert}\n <Components.Heading as=\"h1\">{t('form.title')}</Components.Heading>\n <Grid\n gap={{ base: 20, small: 8 }}\n gridTemplateColumns={{ base: '1fr', small: ['1fr', 200] }}\n >\n <Fields.FirstName\n label={t('form.firstName')}\n validationMessages={{\n REQUIRED: t('form.validations.firstName'),\n INVALID_NAME: t('form.validations.firstName'),\n }}\n />\n <Fields.MiddleInitial label={t('form.middleInitial')} />\n </Grid>\n <Fields.LastName\n label={t('form.lastName')}\n validationMessages={{\n REQUIRED: t('form.validations.lastName'),\n INVALID_NAME: t('form.validations.lastName'),\n }}\n />\n <Fields.Email\n label={t('form.email')}\n description={t('form.emailDescription')}\n validationMessages={{\n REQUIRED: t('form.validations.email'),\n INVALID_EMAIL: t('form.validations.email'),\n EMAIL_REQUIRED_FOR_SELF_ONBOARDING: t('form.validations.email'),\n }}\n />\n <Fields.Ssn\n label={t('form.ssnLabel')}\n validationMessages={{\n INVALID_SSN: t('validations.ssn', { ns: 'common' }),\n REQUIRED: t('validations.ssnRequired', { ns: 'common' }),\n }}\n />\n <Fields.DateOfBirth\n label={t('form.dobLabel')}\n validationMessages={{ REQUIRED: t('validations.dob', { ns: 'common' }) }}\n />\n <ActionsLayout>\n <Components.Button variant=\"secondary\" onClick={handleCancel}>\n {t('form.cancelCta')}\n </Components.Button>\n <Components.Button type=\"submit\" isLoading={employeeDetails.status.isPending}>\n {t('form.saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["ProfileEditForm","FallbackComponent","props","jsx","BaseBoundaries","ProfileEditFormRoot","employeeId","className","dictionary","onEvent","useI18n","useComponentDictionary","t","useTranslation","Components","useComponentContext","employeeDetails","useEmployeeDetailsForm","showSuccess","setShowSuccess","useState","BaseLayout","Fields","handleSubmit","emp","componentEvents","handleCancel","alert","classNames","styles","SDKFormProvider","jsxs","Form","Grid","ActionsLayout"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProfileEditForm.js","sources":["../../../../../src/components/Employee/Profile/management/ProfileEditForm.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { useEmployeeDetailsForm } from '../shared/useEmployeeDetailsForm'\nimport styles from './Profile.module.scss'\nimport {\n BaseBoundaries,\n BaseLayout,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { Grid } from '@/components/Common/Grid/Grid'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\n/**\n * Props for {@link ProfileEditForm}.\n *\n * @public\n */\nexport interface ProfileEditFormProps extends CommonComponentInterface<'Employee.Management.Profile'> {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when the user saves changes or cancels editing. */\n onEvent: BaseComponentInterface['onEvent']\n}\n\n/**\n * Standalone edit form for an employee's basic profile details.\n *\n * @remarks\n * Renders fields for first name, middle initial, last name, email, SSN, and\n * date of birth — all required on update — and shows a success alert when\n * the save completes. Save and Cancel both emit events so the parent can\n * return to the read view.\n *\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/management/profile/updated` | Fired after the employee profile is successfully saved | {@link Employee} |\n * | `employee/management/profile/editCancelled` | Fired when the user clicks Cancel | — |\n *\n * @param input - See {@link ProfileEditFormProps}.\n * @returns The employee profile edit form.\n * @public\n */\nexport function ProfileEditForm({\n FallbackComponent,\n ...props\n}: ProfileEditFormProps & Pick<BaseComponentInterface, 'FallbackComponent'>) {\n return (\n <BaseBoundaries\n componentName=\"Employee.Management.Profile\"\n FallbackComponent={FallbackComponent}\n >\n <ProfileEditFormRoot {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction ProfileEditFormRoot({ employeeId, className, dictionary, onEvent }: ProfileEditFormProps) {\n useI18n('Employee.Management.Profile')\n useComponentDictionary('Employee.Management.Profile', dictionary)\n const { t } = useTranslation('Employee.Management.Profile')\n const Components = useComponentContext()\n\n const employeeDetails = useEmployeeDetailsForm({\n employeeId,\n withSelfOnboardingField: false,\n optionalFieldsToRequire: {\n update: ['firstName', 'lastName', 'email', 'dateOfBirth', 'ssn'],\n },\n })\n\n const [showSuccess, setShowSuccess] = useState(false)\n\n if (employeeDetails.isLoading) {\n return <BaseLayout isLoading error={employeeDetails.errorHandling.errors} />\n }\n\n const Fields = employeeDetails.form.Fields\n\n const handleSubmit = async () => {\n setShowSuccess(false)\n const result = await employeeDetails.actions.onSubmit({\n onEmployeeUpdated: emp => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PROFILE_UPDATED, emp)\n },\n })\n if (!result) return\n setShowSuccess(true)\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PROFILE_EDIT_CANCELLED)\n }\n\n const alert = showSuccess ? (\n <Components.Alert\n status=\"success\"\n label={t('form.successAlert')}\n onDismiss={() => {\n setShowSuccess(false)\n }}\n />\n ) : undefined\n\n return (\n <section className={classNames(styles.container, className)}>\n <BaseLayout error={employeeDetails.errorHandling.errors}>\n <SDKFormProvider formHookResult={employeeDetails}>\n <Form onSubmit={handleSubmit}>\n {alert}\n <Components.Heading as=\"h1\">{t('form.title')}</Components.Heading>\n <Grid\n gap={{ base: 20, small: 8 }}\n gridTemplateColumns={{ base: '1fr', small: ['1fr', 200] }}\n >\n <Fields.FirstName\n label={t('form.firstName')}\n validationMessages={{\n REQUIRED: t('form.validations.firstName'),\n INVALID_NAME: t('form.validations.firstName'),\n }}\n />\n <Fields.MiddleInitial label={t('form.middleInitial')} />\n </Grid>\n <Fields.LastName\n label={t('form.lastName')}\n validationMessages={{\n REQUIRED: t('form.validations.lastName'),\n INVALID_NAME: t('form.validations.lastName'),\n }}\n />\n <Fields.Email\n label={t('form.email')}\n description={t('form.emailDescription')}\n validationMessages={{\n REQUIRED: t('form.validations.email'),\n INVALID_EMAIL: t('form.validations.email'),\n EMAIL_REQUIRED_FOR_SELF_ONBOARDING: t('form.validations.email'),\n }}\n />\n <Fields.Ssn\n label={t('form.ssnLabel')}\n validationMessages={{\n INVALID_SSN: t('validations.ssn', { ns: 'common' }),\n REQUIRED: t('validations.ssnRequired', { ns: 'common' }),\n }}\n />\n <Fields.DateOfBirth\n label={t('form.dobLabel')}\n validationMessages={{ REQUIRED: t('validations.dob', { ns: 'common' }) }}\n />\n <ActionsLayout>\n <Components.Button variant=\"secondary\" onClick={handleCancel}>\n {t('form.cancelCta')}\n </Components.Button>\n <Components.Button type=\"submit\" isLoading={employeeDetails.status.isPending}>\n {t('form.saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["ProfileEditForm","FallbackComponent","props","jsx","BaseBoundaries","ProfileEditFormRoot","employeeId","className","dictionary","onEvent","useI18n","useComponentDictionary","t","useTranslation","Components","useComponentContext","employeeDetails","useEmployeeDetailsForm","showSuccess","setShowSuccess","useState","BaseLayout","Fields","handleSubmit","emp","componentEvents","handleCancel","alert","classNames","styles","SDKFormProvider","jsxs","Form","Grid","ActionsLayout"],"mappings":"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"}
|
|
@@ -13,13 +13,12 @@ import { composeErrorHandler as te } from "../../../../partner-hook-utils/compos
|
|
|
13
13
|
import { Grid as _ } from "../../../Common/Grid/Grid.js";
|
|
14
14
|
import { Flex as U } from "../../../Common/Flex/Flex.js";
|
|
15
15
|
import { ActionsLayout as ie } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
16
|
+
import { DatePickerField as re } from "../../../Common/Fields/DatePickerField/DatePickerField.js";
|
|
17
|
+
import { useComponentContext as se } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
18
|
+
import { Form as ae } from "../../../Common/Form/Form.js";
|
|
18
19
|
import { BaseLayout as W } from "../../../Base/Base.js";
|
|
19
|
-
import "
|
|
20
|
-
import { useI18n as w, useComponentDictionary as ae } from "../../../../i18n/I18n.js";
|
|
20
|
+
import { useI18n as w, useComponentDictionary as ne } from "../../../../i18n/I18n.js";
|
|
21
21
|
import { componentEvents as f, EmployeeOnboardingStatus as v } from "../../../../shared/constants.js";
|
|
22
|
-
import { DatePickerField as ne } from "../../../Common/Fields/DatePickerField/DatePickerField.js";
|
|
23
22
|
const le = (t) => t?.onboarded === !0 || t?.onboardingStatus === v.ONBOARDING_COMPLETED || t?.onboardingStatus === v.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW || t?.onboardingStatus === v.SELF_ONBOARDING_COMPLETED_BY_EMPLOYEE;
|
|
24
23
|
function de(t) {
|
|
25
24
|
return t ? {
|
|
@@ -30,7 +29,7 @@ function de(t) {
|
|
|
30
29
|
update: ["firstName", "lastName", "email", "dateOfBirth", "ssn"]
|
|
31
30
|
};
|
|
32
31
|
}
|
|
33
|
-
function
|
|
32
|
+
function Ce({
|
|
34
33
|
companyId: t,
|
|
35
34
|
employeeId: l,
|
|
36
35
|
defaultValues: r,
|
|
@@ -39,7 +38,7 @@ function He({
|
|
|
39
38
|
dictionary: R,
|
|
40
39
|
onEvent: b
|
|
41
40
|
}) {
|
|
42
|
-
w("Employee.Profile"), w("Employee.HomeAddress"),
|
|
41
|
+
w("Employee.Profile"), w("Employee.HomeAddress"), ne("Employee.Profile", R);
|
|
43
42
|
const [E, n] = y(l), p = !E, e = p && D && (r?.inviteEmployeeDefault ?? !1), [i, L] = y(e), d = C(
|
|
44
43
|
() => de(i),
|
|
45
44
|
[i]
|
|
@@ -105,7 +104,7 @@ function me({
|
|
|
105
104
|
onEvent: n,
|
|
106
105
|
className: p
|
|
107
106
|
}) {
|
|
108
|
-
const { t: e } = N("Employee.Profile"), { t: i } = N("Employee.HomeAddress"), { t: L } = N("common"), d =
|
|
107
|
+
const { t: e } = N("Employee.Profile"), { t: i } = N("Employee.HomeAddress"), { t: L } = N("common"), d = se(), O = t.data.employee ?? void 0, h = le(O), u = V({
|
|
109
108
|
defaultValues: { startDate: O?.jobs?.[0]?.hireDate ?? "" },
|
|
110
109
|
mode: "onSubmit",
|
|
111
110
|
shouldFocusError: !1
|
|
@@ -167,7 +166,7 @@ function me({
|
|
|
167
166
|
startDate: F
|
|
168
167
|
});
|
|
169
168
|
}), z = t.status.isPending || l.status.isPending || r.status.isPending, K = l.form.hookFormInternals.formMethods.watch("courtesyWithholding");
|
|
170
|
-
return /* @__PURE__ */ o("section", { className: $(T.container, p), children: /* @__PURE__ */ o(W, { error: G.errors, children: /* @__PURE__ */ m(
|
|
169
|
+
return /* @__PURE__ */ o("section", { className: $(T.container, p), children: /* @__PURE__ */ o(W, { error: G.errors, children: /* @__PURE__ */ m(ae, { onSubmit: x, children: [
|
|
171
170
|
/* @__PURE__ */ m(_, { gridTemplateColumns: "1fr", gap: 24, children: [
|
|
172
171
|
/* @__PURE__ */ m(U, { flexDirection: "column", gap: 4, children: [
|
|
173
172
|
/* @__PURE__ */ o(d.Heading, { as: "h2", children: e("title") }),
|
|
@@ -228,7 +227,7 @@ function me({
|
|
|
228
227
|
}
|
|
229
228
|
) }),
|
|
230
229
|
/* @__PURE__ */ o(Z, { ...u, children: /* @__PURE__ */ o(
|
|
231
|
-
|
|
230
|
+
re,
|
|
232
231
|
{
|
|
233
232
|
name: "startDate",
|
|
234
233
|
label: e("startDateLabel"),
|
|
@@ -348,6 +347,6 @@ function me({
|
|
|
348
347
|
] }) }) });
|
|
349
348
|
}
|
|
350
349
|
export {
|
|
351
|
-
|
|
350
|
+
Ce as AdminProfile
|
|
352
351
|
};
|
|
353
352
|
//# sourceMappingURL=AdminProfile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminProfile.js","sources":["../../../../../src/components/Employee/Profile/onboarding/AdminProfile.tsx"],"sourcesContent":["import { useState, useMemo, useEffect } from 'react'\nimport { FormProvider, useForm, useWatch } from 'react-hook-form'\nimport { Trans, useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { type Employee } from '@gusto/embedded-api-v-2025-11-15/models/components/employee'\nimport { useEmployeeDetailsForm } from '../shared/useEmployeeDetailsForm'\nimport type { EmployeeDetailsOptionalFieldsToRequire } from '../shared/useEmployeeDetailsForm'\nimport { useCurrentHomeAddressForm } from '../shared/useHomeAddressForm'\nimport { useCurrentWorkAddressForm } from '../shared/useWorkAddressForm'\nimport type { UseEmployeeDetailsFormReady } from '../shared/useEmployeeDetailsForm'\nimport type { UseHomeAddressFormReady } from '../shared/useHomeAddressForm'\nimport type { UseWorkAddressFormReady } from '../shared/useWorkAddressForm'\nimport styles from './AdminProfile.module.scss'\nimport type { ProfileProps } from './Profile'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { composeSubmitHandler } from '@/partner-hook-utils/form/composeSubmitHandler'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { Grid } from '@/components/Common/Grid/Grid'\nimport { ActionsLayout, DatePickerField, Flex } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { BaseLayout } from '@/components/Base'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, EmployeeOnboardingStatus, type EventType } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary } from '@/i18n/I18n'\n\nconst checkHasCompletedSelfOnboarding = (employee?: Employee) => {\n return (\n employee?.onboarded === true ||\n employee?.onboardingStatus === EmployeeOnboardingStatus.ONBOARDING_COMPLETED ||\n employee?.onboardingStatus === EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW ||\n employee?.onboardingStatus === EmployeeOnboardingStatus.SELF_ONBOARDING_COMPLETED_BY_EMPLOYEE\n )\n}\n\nfunction computeOptionalFieldsToRequire(\n selfOnboardingActive: boolean,\n): EmployeeDetailsOptionalFieldsToRequire {\n if (selfOnboardingActive) {\n return {\n create: ['email'],\n update: ['firstName', 'lastName', 'email'],\n }\n }\n return {\n create: ['email', 'dateOfBirth', 'ssn'],\n update: ['firstName', 'lastName', 'email', 'dateOfBirth', 'ssn'],\n }\n}\n\n/** @internal */\nexport function AdminProfile({\n companyId,\n employeeId,\n defaultValues,\n isSelfOnboardingEnabled = true,\n className = '',\n dictionary,\n onEvent,\n}: ProfileProps) {\n useI18n('Employee.Profile')\n useI18n('Employee.HomeAddress')\n useComponentDictionary('Employee.Profile', dictionary)\n\n const [resolvedEmployeeId, setResolvedEmployeeId] = useState(employeeId)\n const isCreateMode = !resolvedEmployeeId\n\n const createModeSelfOnboarding =\n isCreateMode && isSelfOnboardingEnabled && (defaultValues?.inviteEmployeeDefault ?? false)\n\n const [selfOnboardingActive, setSelfOnboardingActive] = useState(createModeSelfOnboarding)\n\n const optionalFieldsToRequire = useMemo(\n () => computeOptionalFieldsToRequire(selfOnboardingActive),\n [selfOnboardingActive],\n )\n\n const employeeDetailsDefaults = useMemo(\n () => ({\n ...defaultValues?.employee,\n ...(isCreateMode && { selfOnboarding: createModeSelfOnboarding }),\n }),\n [defaultValues, isCreateMode, createModeSelfOnboarding],\n )\n\n const employeeDetails = useEmployeeDetailsForm({\n companyId,\n employeeId: resolvedEmployeeId,\n withSelfOnboardingField: true,\n optionalFieldsToRequire,\n defaultValues: employeeDetailsDefaults,\n shouldFocusError: false,\n })\n\n const homeAddress = useCurrentHomeAddressForm({\n employeeId: resolvedEmployeeId ?? '',\n withEffectiveDateField: false,\n defaultValues: {\n street1: defaultValues?.homeAddress?.street1,\n street2: defaultValues?.homeAddress?.street2,\n city: defaultValues?.homeAddress?.city,\n state: defaultValues?.homeAddress?.state,\n zip: defaultValues?.homeAddress?.zip,\n },\n shouldFocusError: false,\n })\n\n const workAddress = useCurrentWorkAddressForm({\n companyId,\n employeeId: resolvedEmployeeId ?? '',\n withEffectiveDateField: false,\n shouldFocusError: false,\n })\n\n if (employeeDetails.isLoading || homeAddress.isLoading || workAddress.isLoading) {\n const loadingErrorHandling = composeErrorHandler([employeeDetails, homeAddress, workAddress])\n return <BaseLayout isLoading error={loadingErrorHandling.errors} />\n }\n\n return (\n <AdminProfileReady\n employeeDetails={employeeDetails}\n homeAddress={homeAddress}\n workAddress={workAddress}\n isSelfOnboardingEnabled={isSelfOnboardingEnabled}\n isCreateMode={isCreateMode}\n employeeId={employeeId}\n setResolvedEmployeeId={setResolvedEmployeeId}\n setSelfOnboardingActive={setSelfOnboardingActive}\n onEvent={onEvent}\n className={className}\n />\n )\n}\n\ninterface AdminProfileReadyProps {\n employeeDetails: UseEmployeeDetailsFormReady\n homeAddress: UseHomeAddressFormReady\n workAddress: UseWorkAddressFormReady\n isSelfOnboardingEnabled: boolean\n isCreateMode: boolean\n employeeId?: string\n setResolvedEmployeeId: (id: string) => void\n setSelfOnboardingActive: (active: boolean) => void\n onEvent: (event: EventType, data?: unknown) => void\n className: string\n}\n\nfunction AdminProfileReady({\n employeeDetails,\n homeAddress,\n workAddress,\n isSelfOnboardingEnabled,\n isCreateMode,\n employeeId,\n setResolvedEmployeeId,\n setSelfOnboardingActive,\n onEvent,\n className,\n}: AdminProfileReadyProps) {\n const { t } = useTranslation('Employee.Profile')\n const { t: tHome } = useTranslation('Employee.HomeAddress')\n const { t: tCommon } = useTranslation('common')\n const Components = useComponentContext()\n\n const employee = employeeDetails.data.employee ?? undefined\n const completedSelfOnboarding = checkHasCompletedSelfOnboarding(employee)\n\n const startDateForm = useForm<{ startDate: string }>({\n defaultValues: { startDate: employee?.jobs?.[0]?.hireDate ?? '' },\n mode: 'onSubmit',\n shouldFocusError: false,\n })\n\n const EmployeeFields = employeeDetails.form.Fields\n const HomeAddressFields = homeAddress.form.Fields\n const WorkAddressFields = workAddress.form.Fields\n\n const watchedSelfOnboarding = useWatch({\n control: employeeDetails.form.hookFormInternals.formMethods.control,\n name: 'selfOnboarding',\n })\n\n useEffect(() => {\n setSelfOnboardingActive(watchedSelfOnboarding)\n }, [watchedSelfOnboarding, setSelfOnboardingActive])\n\n const shouldShowHomeAddress = !watchedSelfOnboarding || completedSelfOnboarding\n const shouldShowSsnDob = !watchedSelfOnboarding || completedSelfOnboarding\n\n const activeForms = [\n employeeDetails,\n ...(shouldShowHomeAddress ? [homeAddress] : []),\n workAddress,\n startDateForm,\n ]\n\n const { handleSubmit, errorHandling } = composeSubmitHandler(activeForms, async () => {\n const employeeResult = await employeeDetails.actions.onSubmit({\n onEmployeeCreated: emp => {\n onEvent(componentEvents.EMPLOYEE_CREATED, emp)\n },\n onEmployeeUpdated: emp => {\n onEvent(componentEvents.EMPLOYEE_UPDATED, emp)\n },\n onOnboardingStatusUpdated: status => {\n onEvent(componentEvents.EMPLOYEE_ONBOARDING_STATUS_UPDATED, status)\n },\n })\n if (!employeeResult) return\n\n const newEmployeeId = employeeResult.data.uuid\n const enteredStartDate = startDateForm.getValues('startDate')\n\n if (shouldShowHomeAddress) {\n const homeResult = await homeAddress.actions.onSubmit({\n employeeId: newEmployeeId,\n })\n if (!homeResult) {\n if (!employeeId) setResolvedEmployeeId(newEmployeeId)\n return\n }\n if (homeResult.mode === 'create') {\n onEvent(componentEvents.EMPLOYEE_HOME_ADDRESS_CREATED, homeResult.data)\n } else {\n onEvent(componentEvents.EMPLOYEE_HOME_ADDRESS_UPDATED, homeResult.data)\n }\n }\n\n const workResult = await workAddress.actions.onSubmit(\n {\n onWorkAddressCreated: wa => {\n onEvent(componentEvents.EMPLOYEE_WORK_ADDRESS_CREATED, wa)\n },\n onWorkAddressUpdated: wa => {\n onEvent(componentEvents.EMPLOYEE_WORK_ADDRESS_UPDATED, wa)\n },\n },\n {\n employeeId: newEmployeeId,\n effectiveDate: isCreateMode ? enteredStartDate || undefined : undefined,\n },\n )\n if (!workResult) {\n if (!employeeId) setResolvedEmployeeId(newEmployeeId)\n return\n }\n\n onEvent(componentEvents.EMPLOYEE_PROFILE_DONE, {\n ...employeeResult.data,\n startDate: enteredStartDate,\n })\n })\n\n const isPending =\n employeeDetails.status.isPending || homeAddress.status.isPending || workAddress.status.isPending\n\n const watchedCourtesyWithholding =\n homeAddress.form.hookFormInternals.formMethods.watch('courtesyWithholding')\n\n return (\n <section className={classNames(styles.container, className)}>\n <BaseLayout error={errorHandling.errors}>\n <Form onSubmit={handleSubmit}>\n <Grid gridTemplateColumns=\"1fr\" gap={24}>\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Text variant=\"supporting\">{t('description')}</Components.Text>\n </Flex>\n\n {isSelfOnboardingEnabled && EmployeeFields.SelfOnboarding && (\n <div className={styles.switchFieldContainer}>\n <EmployeeFields.SelfOnboarding\n label={t('selfOnboardingLabel')}\n description={t('selfOnboardingDescription')}\n formHookResult={employeeDetails}\n />\n </div>\n )}\n <Grid\n gap={{ base: 20, small: 8 }}\n gridTemplateColumns={{ base: '1fr', small: ['1fr', 200] }}\n >\n <EmployeeFields.FirstName\n label={t('firstName')}\n formHookResult={employeeDetails}\n validationMessages={{\n REQUIRED: t('validations.firstName'),\n INVALID_NAME: t('validations.firstName'),\n }}\n />\n <EmployeeFields.MiddleInitial\n label={t('middleInitial')}\n formHookResult={employeeDetails}\n />\n </Grid>\n <EmployeeFields.LastName\n label={t('lastName')}\n formHookResult={employeeDetails}\n validationMessages={{\n REQUIRED: t('validations.lastName'),\n INVALID_NAME: t('validations.lastName'),\n }}\n />\n\n <SDKFormProvider formHookResult={workAddress}>\n <WorkAddressFields.Location\n label={t('workAddress')}\n description={t('workAddressDescription')}\n validationMessages={{ REQUIRED: t('validations.location', { ns: 'common' }) }}\n />\n </SDKFormProvider>\n\n <FormProvider {...startDateForm}>\n <DatePickerField\n name=\"startDate\"\n label={t('startDateLabel')}\n description={t('startDateDescription')}\n isRequired\n errorMessage={t('validations.startDate')}\n />\n </FormProvider>\n\n <EmployeeFields.Email\n label={t('email')}\n description={t('emailDescription')}\n formHookResult={employeeDetails}\n validationMessages={{\n REQUIRED: t('validations.email'),\n INVALID_EMAIL: t('validations.email'),\n EMAIL_REQUIRED_FOR_SELF_ONBOARDING: t('validations.email'),\n }}\n />\n\n {shouldShowSsnDob && (\n <>\n <EmployeeFields.Ssn\n label={t('ssnLabel')}\n formHookResult={employeeDetails}\n validationMessages={{\n INVALID_SSN: t('validations.ssn', { ns: 'common' }),\n REQUIRED: t('validations.ssnRequired', { ns: 'common' }),\n }}\n />\n <EmployeeFields.DateOfBirth\n label={t('dobLabel')}\n formHookResult={employeeDetails}\n validationMessages={{ REQUIRED: t('validations.dob', { ns: 'common' }) }}\n />\n </>\n )}\n\n {shouldShowHomeAddress && (\n <SDKFormProvider formHookResult={homeAddress}>\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">{tHome('formTitle')}</Components.Heading>\n <Components.Text variant=\"supporting\">{tHome('desc')}</Components.Text>\n </Flex>\n\n <Grid\n gridTemplateColumns={{\n base: '1fr',\n small: ['1fr', '1fr'],\n }}\n gap={20}\n >\n <HomeAddressFields.Street1\n label={tHome('street1')}\n validationMessages={{ REQUIRED: tHome('validations.street1') }}\n />\n <HomeAddressFields.Street2 label={tHome('street2')} />\n <HomeAddressFields.City\n label={tHome('city')}\n validationMessages={{ REQUIRED: tHome('validations.city') }}\n />\n <HomeAddressFields.State\n label={tHome('state')}\n placeholder={tHome('statePlaceholder')}\n validationMessages={{ REQUIRED: tHome('validations.state') }}\n getOptionLabel={(abbr: string) =>\n tCommon(`statesHash.${abbr}`, { defaultValue: abbr })\n }\n />\n <HomeAddressFields.Zip\n label={tHome('zip')}\n validationMessages={{\n REQUIRED: tHome('validations.zip'),\n INVALID_ZIP: tHome('validations.zip'),\n }}\n />\n </Grid>\n <HomeAddressFields.CourtesyWithholding\n label={tHome('courtesyWithholdingLabel')}\n description={\n <>\n {tHome('courtesyWithholdingDescription')}\n <Trans\n t={tHome}\n i18nKey=\"learnMoreCta\"\n components={{\n LearnMoreLink: <Components.Link />,\n }}\n />\n </>\n }\n />\n {watchedCourtesyWithholding && (\n <Components.Alert label={tHome('withholdingTitle')} status=\"warning\">\n <Trans t={tHome} i18nKey=\"withholdingNote\" />\n </Components.Alert>\n )}\n </SDKFormProvider>\n )}\n </Grid>\n <ActionsLayout>\n <Components.Button type=\"submit\" isLoading={isPending}>\n {t('submitCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["checkHasCompletedSelfOnboarding","employee","EmployeeOnboardingStatus","computeOptionalFieldsToRequire","selfOnboardingActive","AdminProfile","companyId","employeeId","defaultValues","isSelfOnboardingEnabled","className","dictionary","onEvent","useI18n","useComponentDictionary","resolvedEmployeeId","setResolvedEmployeeId","useState","isCreateMode","createModeSelfOnboarding","setSelfOnboardingActive","optionalFieldsToRequire","useMemo","employeeDetailsDefaults","employeeDetails","useEmployeeDetailsForm","homeAddress","useCurrentHomeAddressForm","workAddress","useCurrentWorkAddressForm","loadingErrorHandling","composeErrorHandler","BaseLayout","jsx","AdminProfileReady","t","useTranslation","tHome","tCommon","Components","useComponentContext","completedSelfOnboarding","startDateForm","useForm","EmployeeFields","HomeAddressFields","WorkAddressFields","watchedSelfOnboarding","useWatch","useEffect","shouldShowHomeAddress","shouldShowSsnDob","activeForms","handleSubmit","errorHandling","composeSubmitHandler","employeeResult","emp","componentEvents","status","newEmployeeId","enteredStartDate","homeResult","wa","isPending","watchedCourtesyWithholding","classNames","styles","jsxs","Form","Grid","Flex","SDKFormProvider","FormProvider","DatePickerField","Fragment","abbr","Trans","ActionsLayout"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdminProfile.js","sources":["../../../../../src/components/Employee/Profile/onboarding/AdminProfile.tsx"],"sourcesContent":["import { useState, useMemo, useEffect } from 'react'\nimport { FormProvider, useForm, useWatch } from 'react-hook-form'\nimport { Trans, useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { type Employee } from '@gusto/embedded-api-v-2025-11-15/models/components/employee'\nimport { useEmployeeDetailsForm } from '../shared/useEmployeeDetailsForm'\nimport type { EmployeeDetailsOptionalFieldsToRequire } from '../shared/useEmployeeDetailsForm'\nimport { useCurrentHomeAddressForm } from '../shared/useHomeAddressForm'\nimport { useCurrentWorkAddressForm } from '../shared/useWorkAddressForm'\nimport type { UseEmployeeDetailsFormReady } from '../shared/useEmployeeDetailsForm'\nimport type { UseHomeAddressFormReady } from '../shared/useHomeAddressForm'\nimport type { UseWorkAddressFormReady } from '../shared/useWorkAddressForm'\nimport styles from './AdminProfile.module.scss'\nimport type { ProfileProps } from './Profile'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { composeSubmitHandler } from '@/partner-hook-utils/form/composeSubmitHandler'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { Grid } from '@/components/Common/Grid/Grid'\nimport { ActionsLayout, DatePickerField, Flex } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { BaseLayout } from '@/components/Base'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, EmployeeOnboardingStatus, type EventType } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary } from '@/i18n/I18n'\n\nconst checkHasCompletedSelfOnboarding = (employee?: Employee) => {\n return (\n employee?.onboarded === true ||\n employee?.onboardingStatus === EmployeeOnboardingStatus.ONBOARDING_COMPLETED ||\n employee?.onboardingStatus === EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW ||\n employee?.onboardingStatus === EmployeeOnboardingStatus.SELF_ONBOARDING_COMPLETED_BY_EMPLOYEE\n )\n}\n\nfunction computeOptionalFieldsToRequire(\n selfOnboardingActive: boolean,\n): EmployeeDetailsOptionalFieldsToRequire {\n if (selfOnboardingActive) {\n return {\n create: ['email'],\n update: ['firstName', 'lastName', 'email'],\n }\n }\n return {\n create: ['email', 'dateOfBirth', 'ssn'],\n update: ['firstName', 'lastName', 'email', 'dateOfBirth', 'ssn'],\n }\n}\n\n/** @internal */\nexport function AdminProfile({\n companyId,\n employeeId,\n defaultValues,\n isSelfOnboardingEnabled = true,\n className = '',\n dictionary,\n onEvent,\n}: ProfileProps) {\n useI18n('Employee.Profile')\n useI18n('Employee.HomeAddress')\n useComponentDictionary('Employee.Profile', dictionary)\n\n const [resolvedEmployeeId, setResolvedEmployeeId] = useState(employeeId)\n const isCreateMode = !resolvedEmployeeId\n\n const createModeSelfOnboarding =\n isCreateMode && isSelfOnboardingEnabled && (defaultValues?.inviteEmployeeDefault ?? false)\n\n const [selfOnboardingActive, setSelfOnboardingActive] = useState(createModeSelfOnboarding)\n\n const optionalFieldsToRequire = useMemo(\n () => computeOptionalFieldsToRequire(selfOnboardingActive),\n [selfOnboardingActive],\n )\n\n const employeeDetailsDefaults = useMemo(\n () => ({\n ...defaultValues?.employee,\n ...(isCreateMode && { selfOnboarding: createModeSelfOnboarding }),\n }),\n [defaultValues, isCreateMode, createModeSelfOnboarding],\n )\n\n const employeeDetails = useEmployeeDetailsForm({\n companyId,\n employeeId: resolvedEmployeeId,\n withSelfOnboardingField: true,\n optionalFieldsToRequire,\n defaultValues: employeeDetailsDefaults,\n shouldFocusError: false,\n })\n\n const homeAddress = useCurrentHomeAddressForm({\n employeeId: resolvedEmployeeId ?? '',\n withEffectiveDateField: false,\n defaultValues: {\n street1: defaultValues?.homeAddress?.street1,\n street2: defaultValues?.homeAddress?.street2,\n city: defaultValues?.homeAddress?.city,\n state: defaultValues?.homeAddress?.state,\n zip: defaultValues?.homeAddress?.zip,\n },\n shouldFocusError: false,\n })\n\n const workAddress = useCurrentWorkAddressForm({\n companyId,\n employeeId: resolvedEmployeeId ?? '',\n withEffectiveDateField: false,\n shouldFocusError: false,\n })\n\n if (employeeDetails.isLoading || homeAddress.isLoading || workAddress.isLoading) {\n const loadingErrorHandling = composeErrorHandler([employeeDetails, homeAddress, workAddress])\n return <BaseLayout isLoading error={loadingErrorHandling.errors} />\n }\n\n return (\n <AdminProfileReady\n employeeDetails={employeeDetails}\n homeAddress={homeAddress}\n workAddress={workAddress}\n isSelfOnboardingEnabled={isSelfOnboardingEnabled}\n isCreateMode={isCreateMode}\n employeeId={employeeId}\n setResolvedEmployeeId={setResolvedEmployeeId}\n setSelfOnboardingActive={setSelfOnboardingActive}\n onEvent={onEvent}\n className={className}\n />\n )\n}\n\ninterface AdminProfileReadyProps {\n employeeDetails: UseEmployeeDetailsFormReady\n homeAddress: UseHomeAddressFormReady\n workAddress: UseWorkAddressFormReady\n isSelfOnboardingEnabled: boolean\n isCreateMode: boolean\n employeeId?: string\n setResolvedEmployeeId: (id: string) => void\n setSelfOnboardingActive: (active: boolean) => void\n onEvent: (event: EventType, data?: unknown) => void\n className: string\n}\n\nfunction AdminProfileReady({\n employeeDetails,\n homeAddress,\n workAddress,\n isSelfOnboardingEnabled,\n isCreateMode,\n employeeId,\n setResolvedEmployeeId,\n setSelfOnboardingActive,\n onEvent,\n className,\n}: AdminProfileReadyProps) {\n const { t } = useTranslation('Employee.Profile')\n const { t: tHome } = useTranslation('Employee.HomeAddress')\n const { t: tCommon } = useTranslation('common')\n const Components = useComponentContext()\n\n const employee = employeeDetails.data.employee ?? undefined\n const completedSelfOnboarding = checkHasCompletedSelfOnboarding(employee)\n\n const startDateForm = useForm<{ startDate: string }>({\n defaultValues: { startDate: employee?.jobs?.[0]?.hireDate ?? '' },\n mode: 'onSubmit',\n shouldFocusError: false,\n })\n\n const EmployeeFields = employeeDetails.form.Fields\n const HomeAddressFields = homeAddress.form.Fields\n const WorkAddressFields = workAddress.form.Fields\n\n const watchedSelfOnboarding = useWatch({\n control: employeeDetails.form.hookFormInternals.formMethods.control,\n name: 'selfOnboarding',\n })\n\n useEffect(() => {\n setSelfOnboardingActive(watchedSelfOnboarding)\n }, [watchedSelfOnboarding, setSelfOnboardingActive])\n\n const shouldShowHomeAddress = !watchedSelfOnboarding || completedSelfOnboarding\n const shouldShowSsnDob = !watchedSelfOnboarding || completedSelfOnboarding\n\n const activeForms = [\n employeeDetails,\n ...(shouldShowHomeAddress ? [homeAddress] : []),\n workAddress,\n startDateForm,\n ]\n\n const { handleSubmit, errorHandling } = composeSubmitHandler(activeForms, async () => {\n const employeeResult = await employeeDetails.actions.onSubmit({\n onEmployeeCreated: emp => {\n onEvent(componentEvents.EMPLOYEE_CREATED, emp)\n },\n onEmployeeUpdated: emp => {\n onEvent(componentEvents.EMPLOYEE_UPDATED, emp)\n },\n onOnboardingStatusUpdated: status => {\n onEvent(componentEvents.EMPLOYEE_ONBOARDING_STATUS_UPDATED, status)\n },\n })\n if (!employeeResult) return\n\n const newEmployeeId = employeeResult.data.uuid\n const enteredStartDate = startDateForm.getValues('startDate')\n\n if (shouldShowHomeAddress) {\n const homeResult = await homeAddress.actions.onSubmit({\n employeeId: newEmployeeId,\n })\n if (!homeResult) {\n if (!employeeId) setResolvedEmployeeId(newEmployeeId)\n return\n }\n if (homeResult.mode === 'create') {\n onEvent(componentEvents.EMPLOYEE_HOME_ADDRESS_CREATED, homeResult.data)\n } else {\n onEvent(componentEvents.EMPLOYEE_HOME_ADDRESS_UPDATED, homeResult.data)\n }\n }\n\n const workResult = await workAddress.actions.onSubmit(\n {\n onWorkAddressCreated: wa => {\n onEvent(componentEvents.EMPLOYEE_WORK_ADDRESS_CREATED, wa)\n },\n onWorkAddressUpdated: wa => {\n onEvent(componentEvents.EMPLOYEE_WORK_ADDRESS_UPDATED, wa)\n },\n },\n {\n employeeId: newEmployeeId,\n effectiveDate: isCreateMode ? enteredStartDate || undefined : undefined,\n },\n )\n if (!workResult) {\n if (!employeeId) setResolvedEmployeeId(newEmployeeId)\n return\n }\n\n onEvent(componentEvents.EMPLOYEE_PROFILE_DONE, {\n ...employeeResult.data,\n startDate: enteredStartDate,\n })\n })\n\n const isPending =\n employeeDetails.status.isPending || homeAddress.status.isPending || workAddress.status.isPending\n\n const watchedCourtesyWithholding =\n homeAddress.form.hookFormInternals.formMethods.watch('courtesyWithholding')\n\n return (\n <section className={classNames(styles.container, className)}>\n <BaseLayout error={errorHandling.errors}>\n <Form onSubmit={handleSubmit}>\n <Grid gridTemplateColumns=\"1fr\" gap={24}>\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Text variant=\"supporting\">{t('description')}</Components.Text>\n </Flex>\n\n {isSelfOnboardingEnabled && EmployeeFields.SelfOnboarding && (\n <div className={styles.switchFieldContainer}>\n <EmployeeFields.SelfOnboarding\n label={t('selfOnboardingLabel')}\n description={t('selfOnboardingDescription')}\n formHookResult={employeeDetails}\n />\n </div>\n )}\n <Grid\n gap={{ base: 20, small: 8 }}\n gridTemplateColumns={{ base: '1fr', small: ['1fr', 200] }}\n >\n <EmployeeFields.FirstName\n label={t('firstName')}\n formHookResult={employeeDetails}\n validationMessages={{\n REQUIRED: t('validations.firstName'),\n INVALID_NAME: t('validations.firstName'),\n }}\n />\n <EmployeeFields.MiddleInitial\n label={t('middleInitial')}\n formHookResult={employeeDetails}\n />\n </Grid>\n <EmployeeFields.LastName\n label={t('lastName')}\n formHookResult={employeeDetails}\n validationMessages={{\n REQUIRED: t('validations.lastName'),\n INVALID_NAME: t('validations.lastName'),\n }}\n />\n\n <SDKFormProvider formHookResult={workAddress}>\n <WorkAddressFields.Location\n label={t('workAddress')}\n description={t('workAddressDescription')}\n validationMessages={{ REQUIRED: t('validations.location', { ns: 'common' }) }}\n />\n </SDKFormProvider>\n\n <FormProvider {...startDateForm}>\n <DatePickerField\n name=\"startDate\"\n label={t('startDateLabel')}\n description={t('startDateDescription')}\n isRequired\n errorMessage={t('validations.startDate')}\n />\n </FormProvider>\n\n <EmployeeFields.Email\n label={t('email')}\n description={t('emailDescription')}\n formHookResult={employeeDetails}\n validationMessages={{\n REQUIRED: t('validations.email'),\n INVALID_EMAIL: t('validations.email'),\n EMAIL_REQUIRED_FOR_SELF_ONBOARDING: t('validations.email'),\n }}\n />\n\n {shouldShowSsnDob && (\n <>\n <EmployeeFields.Ssn\n label={t('ssnLabel')}\n formHookResult={employeeDetails}\n validationMessages={{\n INVALID_SSN: t('validations.ssn', { ns: 'common' }),\n REQUIRED: t('validations.ssnRequired', { ns: 'common' }),\n }}\n />\n <EmployeeFields.DateOfBirth\n label={t('dobLabel')}\n formHookResult={employeeDetails}\n validationMessages={{ REQUIRED: t('validations.dob', { ns: 'common' }) }}\n />\n </>\n )}\n\n {shouldShowHomeAddress && (\n <SDKFormProvider formHookResult={homeAddress}>\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">{tHome('formTitle')}</Components.Heading>\n <Components.Text variant=\"supporting\">{tHome('desc')}</Components.Text>\n </Flex>\n\n <Grid\n gridTemplateColumns={{\n base: '1fr',\n small: ['1fr', '1fr'],\n }}\n gap={20}\n >\n <HomeAddressFields.Street1\n label={tHome('street1')}\n validationMessages={{ REQUIRED: tHome('validations.street1') }}\n />\n <HomeAddressFields.Street2 label={tHome('street2')} />\n <HomeAddressFields.City\n label={tHome('city')}\n validationMessages={{ REQUIRED: tHome('validations.city') }}\n />\n <HomeAddressFields.State\n label={tHome('state')}\n placeholder={tHome('statePlaceholder')}\n validationMessages={{ REQUIRED: tHome('validations.state') }}\n getOptionLabel={(abbr: string) =>\n tCommon(`statesHash.${abbr}`, { defaultValue: abbr })\n }\n />\n <HomeAddressFields.Zip\n label={tHome('zip')}\n validationMessages={{\n REQUIRED: tHome('validations.zip'),\n INVALID_ZIP: tHome('validations.zip'),\n }}\n />\n </Grid>\n <HomeAddressFields.CourtesyWithholding\n label={tHome('courtesyWithholdingLabel')}\n description={\n <>\n {tHome('courtesyWithholdingDescription')}\n <Trans\n t={tHome}\n i18nKey=\"learnMoreCta\"\n components={{\n LearnMoreLink: <Components.Link />,\n }}\n />\n </>\n }\n />\n {watchedCourtesyWithholding && (\n <Components.Alert label={tHome('withholdingTitle')} status=\"warning\">\n <Trans t={tHome} i18nKey=\"withholdingNote\" />\n </Components.Alert>\n )}\n </SDKFormProvider>\n )}\n </Grid>\n <ActionsLayout>\n <Components.Button type=\"submit\" isLoading={isPending}>\n {t('submitCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["checkHasCompletedSelfOnboarding","employee","EmployeeOnboardingStatus","computeOptionalFieldsToRequire","selfOnboardingActive","AdminProfile","companyId","employeeId","defaultValues","isSelfOnboardingEnabled","className","dictionary","onEvent","useI18n","useComponentDictionary","resolvedEmployeeId","setResolvedEmployeeId","useState","isCreateMode","createModeSelfOnboarding","setSelfOnboardingActive","optionalFieldsToRequire","useMemo","employeeDetailsDefaults","employeeDetails","useEmployeeDetailsForm","homeAddress","useCurrentHomeAddressForm","workAddress","useCurrentWorkAddressForm","loadingErrorHandling","composeErrorHandler","BaseLayout","jsx","AdminProfileReady","t","useTranslation","tHome","tCommon","Components","useComponentContext","completedSelfOnboarding","startDateForm","useForm","EmployeeFields","HomeAddressFields","WorkAddressFields","watchedSelfOnboarding","useWatch","useEffect","shouldShowHomeAddress","shouldShowSsnDob","activeForms","handleSubmit","errorHandling","composeSubmitHandler","employeeResult","emp","componentEvents","status","newEmployeeId","enteredStartDate","homeResult","wa","isPending","watchedCourtesyWithholding","classNames","styles","jsxs","Form","Grid","Flex","SDKFormProvider","FormProvider","DatePickerField","Fragment","abbr","Trans","ActionsLayout"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0BA,MAAMA,KAAkC,CAACC,MAErCA,GAAU,cAAc,MACxBA,GAAU,qBAAqBC,EAAyB,wBACxDD,GAAU,qBAAqBC,EAAyB,yCACxDD,GAAU,qBAAqBC,EAAyB;AAI5D,SAASC,GACPC,GACwC;AACxC,SAAIA,IACK;AAAA,IACL,QAAQ,CAAC,OAAO;AAAA,IAChB,QAAQ,CAAC,aAAa,YAAY,OAAO;AAAA,EAAA,IAGtC;AAAA,IACL,QAAQ,CAAC,SAAS,eAAe,KAAK;AAAA,IACtC,QAAQ,CAAC,aAAa,YAAY,SAAS,eAAe,KAAK;AAAA,EAAA;AAEnE;AAGO,SAASC,GAAa;AAAA,EAC3B,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,yBAAAC,IAA0B;AAAA,EAC1B,WAAAC,IAAY;AAAA,EACZ,YAAAC;AAAA,EACA,SAAAC;AACF,GAAiB;AACf,EAAAC,EAAQ,kBAAkB,GAC1BA,EAAQ,sBAAsB,GAC9BC,GAAuB,oBAAoBH,CAAU;AAErD,QAAM,CAACI,GAAoBC,CAAqB,IAAIC,EAASV,CAAU,GACjEW,IAAe,CAACH,GAEhBI,IACJD,KAAgBT,MAA4BD,GAAe,yBAAyB,KAEhF,CAACJ,GAAsBgB,CAAuB,IAAIH,EAASE,CAAwB,GAEnFE,IAA0BC;AAAA,IAC9B,MAAMnB,GAA+BC,CAAoB;AAAA,IACzD,CAACA,CAAoB;AAAA,EAAA,GAGjBmB,IAA0BD;AAAA,IAC9B,OAAO;AAAA,MACL,GAAGd,GAAe;AAAA,MAClB,GAAIU,KAAgB,EAAE,gBAAgBC,EAAA;AAAA,IAAyB;AAAA,IAEjE,CAACX,GAAeU,GAAcC,CAAwB;AAAA,EAAA,GAGlDK,IAAkBC,EAAuB;AAAA,IAC7C,WAAAnB;AAAA,IACA,YAAYS;AAAA,IACZ,yBAAyB;AAAA,IACzB,yBAAAM;AAAA,IACA,eAAeE;AAAA,IACf,kBAAkB;AAAA,EAAA,CACnB,GAEKG,IAAcC,EAA0B;AAAA,IAC5C,YAAYZ,KAAsB;AAAA,IAClC,wBAAwB;AAAA,IACxB,eAAe;AAAA,MACb,SAASP,GAAe,aAAa;AAAA,MACrC,SAASA,GAAe,aAAa;AAAA,MACrC,MAAMA,GAAe,aAAa;AAAA,MAClC,OAAOA,GAAe,aAAa;AAAA,MACnC,KAAKA,GAAe,aAAa;AAAA,IAAA;AAAA,IAEnC,kBAAkB;AAAA,EAAA,CACnB,GAEKoB,IAAcC,GAA0B;AAAA,IAC5C,WAAAvB;AAAA,IACA,YAAYS,KAAsB;AAAA,IAClC,wBAAwB;AAAA,IACxB,kBAAkB;AAAA,EAAA,CACnB;AAED,MAAIS,EAAgB,aAAaE,EAAY,aAAaE,EAAY,WAAW;AAC/E,UAAME,IAAuBC,GAAoB,CAACP,GAAiBE,GAAaE,CAAW,CAAC;AAC5F,6BAAQI,GAAA,EAAW,WAAS,IAAC,OAAOF,EAAqB,QAAQ;AAAA,EACnE;AAEA,SACE,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,iBAAAV;AAAA,MACA,aAAAE;AAAA,MACA,aAAAE;AAAA,MACA,yBAAAnB;AAAA,MACA,cAAAS;AAAA,MACA,YAAAX;AAAA,MACA,uBAAAS;AAAA,MACA,yBAAAI;AAAA,MACA,SAAAR;AAAA,MACA,WAAAF;AAAA,IAAA;AAAA,EAAA;AAGN;AAeA,SAASwB,GAAkB;AAAA,EACzB,iBAAAV;AAAA,EACA,aAAAE;AAAA,EACA,aAAAE;AAAA,EACA,yBAAAnB;AAAA,EACA,cAAAS;AAAA,EACA,YAAAX;AAAA,EACA,uBAAAS;AAAA,EACA,yBAAAI;AAAA,EACA,SAAAR;AAAA,EACA,WAAAF;AACF,GAA2B;AACzB,QAAM,EAAE,GAAAyB,EAAA,IAAMC,EAAe,kBAAkB,GACzC,EAAE,GAAGC,MAAUD,EAAe,sBAAsB,GACpD,EAAE,GAAGE,MAAYF,EAAe,QAAQ,GACxCG,IAAaC,GAAA,GAEbvC,IAAWuB,EAAgB,KAAK,YAAY,QAC5CiB,IAA0BzC,GAAgCC,CAAQ,GAElEyC,IAAgBC,EAA+B;AAAA,IACnD,eAAe,EAAE,WAAW1C,GAAU,OAAO,CAAC,GAAG,YAAY,GAAA;AAAA,IAC7D,MAAM;AAAA,IACN,kBAAkB;AAAA,EAAA,CACnB,GAEK2C,IAAiBpB,EAAgB,KAAK,QACtCqB,IAAoBnB,EAAY,KAAK,QACrCoB,IAAoBlB,EAAY,KAAK,QAErCmB,IAAwBC,EAAS;AAAA,IACrC,SAASxB,EAAgB,KAAK,kBAAkB,YAAY;AAAA,IAC5D,MAAM;AAAA,EAAA,CACP;AAED,EAAAyB,EAAU,MAAM;AACd,IAAA7B,EAAwB2B,CAAqB;AAAA,EAC/C,GAAG,CAACA,GAAuB3B,CAAuB,CAAC;AAEnD,QAAM8B,IAAwB,CAACH,KAAyBN,GAClDU,IAAmB,CAACJ,KAAyBN,GAE7CW,IAAc;AAAA,IAClB5B;AAAA,IACA,GAAI0B,IAAwB,CAACxB,CAAW,IAAI,CAAA;AAAA,IAC5CE;AAAA,IACAc;AAAA,EAAA,GAGI,EAAE,cAAAW,GAAc,eAAAC,EAAA,IAAkBC,GAAqBH,GAAa,YAAY;AACpF,UAAMI,IAAiB,MAAMhC,EAAgB,QAAQ,SAAS;AAAA,MAC5D,mBAAmB,CAAAiC,MAAO;AACxB,QAAA7C,EAAQ8C,EAAgB,kBAAkBD,CAAG;AAAA,MAC/C;AAAA,MACA,mBAAmB,CAAAA,MAAO;AACxB,QAAA7C,EAAQ8C,EAAgB,kBAAkBD,CAAG;AAAA,MAC/C;AAAA,MACA,2BAA2B,CAAAE,MAAU;AACnC,QAAA/C,EAAQ8C,EAAgB,oCAAoCC,CAAM;AAAA,MACpE;AAAA,IAAA,CACD;AACD,QAAI,CAACH,EAAgB;AAErB,UAAMI,IAAgBJ,EAAe,KAAK,MACpCK,IAAmBnB,EAAc,UAAU,WAAW;AAE5D,QAAIQ,GAAuB;AACzB,YAAMY,IAAa,MAAMpC,EAAY,QAAQ,SAAS;AAAA,QACpD,YAAYkC;AAAA,MAAA,CACb;AACD,UAAI,CAACE,GAAY;AACf,QAAKvD,KAAYS,EAAsB4C,CAAa;AACpD;AAAA,MACF;AACA,MAAIE,EAAW,SAAS,WACtBlD,EAAQ8C,EAAgB,+BAA+BI,EAAW,IAAI,IAEtElD,EAAQ8C,EAAgB,+BAA+BI,EAAW,IAAI;AAAA,IAE1E;AAgBA,QAAI,CAde,MAAMlC,EAAY,QAAQ;AAAA,MAC3C;AAAA,QACE,sBAAsB,CAAAmC,MAAM;AAC1B,UAAAnD,EAAQ8C,EAAgB,+BAA+BK,CAAE;AAAA,QAC3D;AAAA,QACA,sBAAsB,CAAAA,MAAM;AAC1B,UAAAnD,EAAQ8C,EAAgB,+BAA+BK,CAAE;AAAA,QAC3D;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,YAAYH;AAAA,QACZ,eAAe1C,KAAe2C,KAAoB;AAAA,MAAY;AAAA,IAChE,GAEe;AACf,MAAKtD,KAAYS,EAAsB4C,CAAa;AACpD;AAAA,IACF;AAEA,IAAAhD,EAAQ8C,EAAgB,uBAAuB;AAAA,MAC7C,GAAGF,EAAe;AAAA,MAClB,WAAWK;AAAA,IAAA,CACZ;AAAA,EACH,CAAC,GAEKG,IACJxC,EAAgB,OAAO,aAAaE,EAAY,OAAO,aAAaE,EAAY,OAAO,WAEnFqC,IACJvC,EAAY,KAAK,kBAAkB,YAAY,MAAM,qBAAqB;AAE5E,2BACG,WAAA,EAAQ,WAAWwC,EAAWC,EAAO,WAAWzD,CAAS,GACxD,UAAA,gBAAAuB,EAACD,GAAA,EAAW,OAAOsB,EAAc,QAC/B,UAAA,gBAAAc,EAACC,IAAA,EAAK,UAAUhB,GACd,UAAA;AAAA,IAAA,gBAAAe,EAACE,GAAA,EAAK,qBAAoB,OAAM,KAAK,IACnC,UAAA;AAAA,MAAA,gBAAAF,EAACG,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,QAAA,gBAAAtC,EAACM,EAAW,SAAX,EAAmB,IAAG,MAAM,UAAAJ,EAAE,OAAO,GAAE;AAAA,QACxC,gBAAAF,EAACM,EAAW,MAAX,EAAgB,SAAQ,cAAc,UAAAJ,EAAE,aAAa,EAAA,CAAE;AAAA,MAAA,GAC1D;AAAA,MAEC1B,KAA2BmC,EAAe,oCACxC,OAAA,EAAI,WAAWuB,EAAO,sBACrB,UAAA,gBAAAlC;AAAA,QAACW,EAAe;AAAA,QAAf;AAAA,UACC,OAAOT,EAAE,qBAAqB;AAAA,UAC9B,aAAaA,EAAE,2BAA2B;AAAA,UAC1C,gBAAgBX;AAAA,QAAA;AAAA,MAAA,GAEpB;AAAA,MAEF,gBAAA4C;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,KAAK,EAAE,MAAM,IAAI,OAAO,EAAA;AAAA,UACxB,qBAAqB,EAAE,MAAM,OAAO,OAAO,CAAC,OAAO,GAAG,EAAA;AAAA,UAEtD,UAAA;AAAA,YAAA,gBAAArC;AAAA,cAACW,EAAe;AAAA,cAAf;AAAA,gBACC,OAAOT,EAAE,WAAW;AAAA,gBACpB,gBAAgBX;AAAA,gBAChB,oBAAoB;AAAA,kBAClB,UAAUW,EAAE,uBAAuB;AAAA,kBACnC,cAAcA,EAAE,uBAAuB;AAAA,gBAAA;AAAA,cACzC;AAAA,YAAA;AAAA,YAEF,gBAAAF;AAAA,cAACW,EAAe;AAAA,cAAf;AAAA,gBACC,OAAOT,EAAE,eAAe;AAAA,gBACxB,gBAAgBX;AAAA,cAAA;AAAA,YAAA;AAAA,UAClB;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,gBAAAS;AAAA,QAACW,EAAe;AAAA,QAAf;AAAA,UACC,OAAOT,EAAE,UAAU;AAAA,UACnB,gBAAgBX;AAAA,UAChB,oBAAoB;AAAA,YAClB,UAAUW,EAAE,sBAAsB;AAAA,YAClC,cAAcA,EAAE,sBAAsB;AAAA,UAAA;AAAA,QACxC;AAAA,MAAA;AAAA,MAGF,gBAAAF,EAACuC,GAAA,EAAgB,gBAAgB5C,GAC/B,UAAA,gBAAAK;AAAA,QAACa,EAAkB;AAAA,QAAlB;AAAA,UACC,OAAOX,EAAE,aAAa;AAAA,UACtB,aAAaA,EAAE,wBAAwB;AAAA,UACvC,oBAAoB,EAAE,UAAUA,EAAE,wBAAwB,EAAE,IAAI,UAAU,EAAA;AAAA,QAAE;AAAA,MAAA,GAEhF;AAAA,MAEA,gBAAAF,EAACwC,GAAA,EAAc,GAAG/B,GAChB,UAAA,gBAAAT;AAAA,QAACyC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAOvC,EAAE,gBAAgB;AAAA,UACzB,aAAaA,EAAE,sBAAsB;AAAA,UACrC,YAAU;AAAA,UACV,cAAcA,EAAE,uBAAuB;AAAA,QAAA;AAAA,MAAA,GAE3C;AAAA,MAEA,gBAAAF;AAAA,QAACW,EAAe;AAAA,QAAf;AAAA,UACC,OAAOT,EAAE,OAAO;AAAA,UAChB,aAAaA,EAAE,kBAAkB;AAAA,UACjC,gBAAgBX;AAAA,UAChB,oBAAoB;AAAA,YAClB,UAAUW,EAAE,mBAAmB;AAAA,YAC/B,eAAeA,EAAE,mBAAmB;AAAA,YACpC,oCAAoCA,EAAE,mBAAmB;AAAA,UAAA;AAAA,QAC3D;AAAA,MAAA;AAAA,MAGDgB,KACC,gBAAAiB,EAAAO,GAAA,EACE,UAAA;AAAA,QAAA,gBAAA1C;AAAA,UAACW,EAAe;AAAA,UAAf;AAAA,YACC,OAAOT,EAAE,UAAU;AAAA,YACnB,gBAAgBX;AAAA,YAChB,oBAAoB;AAAA,cAClB,aAAaW,EAAE,mBAAmB,EAAE,IAAI,UAAU;AAAA,cAClD,UAAUA,EAAE,2BAA2B,EAAE,IAAI,UAAU;AAAA,YAAA;AAAA,UACzD;AAAA,QAAA;AAAA,QAEF,gBAAAF;AAAA,UAACW,EAAe;AAAA,UAAf;AAAA,YACC,OAAOT,EAAE,UAAU;AAAA,YACnB,gBAAgBX;AAAA,YAChB,oBAAoB,EAAE,UAAUW,EAAE,mBAAmB,EAAE,IAAI,UAAU,EAAA;AAAA,UAAE;AAAA,QAAA;AAAA,MACzE,GACF;AAAA,MAGDe,KACC,gBAAAkB,EAACI,GAAA,EAAgB,gBAAgB9C,GAC/B,UAAA;AAAA,QAAA,gBAAA0C,EAACG,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,UAAA,gBAAAtC,EAACM,EAAW,SAAX,EAAmB,IAAG,MAAM,UAAAF,EAAM,WAAW,GAAE;AAAA,UAChD,gBAAAJ,EAACM,EAAW,MAAX,EAAgB,SAAQ,cAAc,UAAAF,EAAM,MAAM,EAAA,CAAE;AAAA,QAAA,GACvD;AAAA,QAEA,gBAAA+B;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,qBAAqB;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,CAAC,OAAO,KAAK;AAAA,YAAA;AAAA,YAEtB,KAAK;AAAA,YAEL,UAAA;AAAA,cAAA,gBAAArC;AAAA,gBAACY,EAAkB;AAAA,gBAAlB;AAAA,kBACC,OAAOR,EAAM,SAAS;AAAA,kBACtB,oBAAoB,EAAE,UAAUA,EAAM,qBAAqB,EAAA;AAAA,gBAAE;AAAA,cAAA;AAAA,gCAE9DQ,EAAkB,SAAlB,EAA0B,OAAOR,EAAM,SAAS,GAAG;AAAA,cACpD,gBAAAJ;AAAA,gBAACY,EAAkB;AAAA,gBAAlB;AAAA,kBACC,OAAOR,EAAM,MAAM;AAAA,kBACnB,oBAAoB,EAAE,UAAUA,EAAM,kBAAkB,EAAA;AAAA,gBAAE;AAAA,cAAA;AAAA,cAE5D,gBAAAJ;AAAA,gBAACY,EAAkB;AAAA,gBAAlB;AAAA,kBACC,OAAOR,EAAM,OAAO;AAAA,kBACpB,aAAaA,EAAM,kBAAkB;AAAA,kBACrC,oBAAoB,EAAE,UAAUA,EAAM,mBAAmB,EAAA;AAAA,kBACzD,gBAAgB,CAACuC,MACftC,EAAQ,cAAcsC,CAAI,IAAI,EAAE,cAAcA,EAAA,CAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGxD,gBAAA3C;AAAA,gBAACY,EAAkB;AAAA,gBAAlB;AAAA,kBACC,OAAOR,EAAM,KAAK;AAAA,kBAClB,oBAAoB;AAAA,oBAClB,UAAUA,EAAM,iBAAiB;AAAA,oBACjC,aAAaA,EAAM,iBAAiB;AAAA,kBAAA;AAAA,gBACtC;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,gBAAAJ;AAAA,UAACY,EAAkB;AAAA,UAAlB;AAAA,YACC,OAAOR,EAAM,0BAA0B;AAAA,YACvC,aACE,gBAAA+B,EAAAO,GAAA,EACG,UAAA;AAAA,cAAAtC,EAAM,gCAAgC;AAAA,cACvC,gBAAAJ;AAAA,gBAAC4C;AAAA,gBAAA;AAAA,kBACC,GAAGxC;AAAA,kBACH,SAAQ;AAAA,kBACR,YAAY;AAAA,oBACV,eAAe,gBAAAJ,EAACM,EAAW,MAAX,CAAA,CAAgB;AAAA,kBAAA;AAAA,gBAClC;AAAA,cAAA;AAAA,YACF,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,QAGH0B,KACC,gBAAAhC,EAACM,EAAW,OAAX,EAAiB,OAAOF,EAAM,kBAAkB,GAAG,QAAO,WACzD,UAAA,gBAAAJ,EAAC4C,GAAA,EAAM,GAAGxC,GAAO,SAAQ,mBAAkB,EAAA,CAC7C;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA,GAEJ;AAAA,IACA,gBAAAJ,EAAC6C,IAAA,EACC,UAAA,gBAAA7C,EAACM,EAAW,QAAX,EAAkB,MAAK,UAAS,WAAWyB,GACzC,UAAA7B,EAAE,WAAW,GAChB,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;"}
|
|
@@ -14,7 +14,6 @@ import { ActionsLayout as z } from "../../../Common/ActionsLayout/ActionsLayout.
|
|
|
14
14
|
import { useComponentContext as B } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
15
15
|
import { Form as Y } from "../../../Common/Form/Form.js";
|
|
16
16
|
import { BaseLayout as S } from "../../../Base/Base.js";
|
|
17
|
-
import "../../../Base/useBase.js";
|
|
18
17
|
import { useI18n as N, useComponentDictionary as W } from "../../../../i18n/I18n.js";
|
|
19
18
|
import { componentEvents as p } from "../../../../shared/constants.js";
|
|
20
19
|
import { getStreet as Z, getCityStateZip as j } from "../../../../helpers/formattedStrings.js";
|
|
@@ -22,7 +21,7 @@ const q = {
|
|
|
22
21
|
create: ["dateOfBirth", "ssn"],
|
|
23
22
|
update: ["firstName", "lastName", "dateOfBirth", "ssn"]
|
|
24
23
|
};
|
|
25
|
-
function
|
|
24
|
+
function fe({
|
|
26
25
|
companyId: H,
|
|
27
26
|
employeeId: D,
|
|
28
27
|
defaultValues: d,
|
|
@@ -204,6 +203,6 @@ function he({
|
|
|
204
203
|
] }) }) });
|
|
205
204
|
}
|
|
206
205
|
export {
|
|
207
|
-
|
|
206
|
+
fe as EmployeeProfile
|
|
208
207
|
};
|
|
209
208
|
//# sourceMappingURL=EmployeeProfile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmployeeProfile.js","sources":["../../../../../src/components/Employee/Profile/onboarding/EmployeeProfile.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { useEmployeeAddressesGetWorkAddresses } from '@gusto/embedded-api-v-2025-11-15/react-query/employeeAddressesGetWorkAddresses'\nimport { useEmployeeDetailsForm } from '../shared/useEmployeeDetailsForm'\nimport type { EmployeeDetailsOptionalFieldsToRequire } from '../shared/useEmployeeDetailsForm'\nimport { useCurrentHomeAddressForm } from '../shared/useHomeAddressForm'\nimport styles from './EmployeeProfile.module.scss'\nimport type { ProfileProps } from './Profile'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { composeSubmitHandler } from '@/partner-hook-utils/form/composeSubmitHandler'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { Grid } from '@/components/Common/Grid/Grid'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { BaseLayout } from '@/components/Base'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { getStreet, getCityStateZip } from '@/helpers/formattedStrings'\n\nconst SELF_OPTIONAL_FIELDS: EmployeeDetailsOptionalFieldsToRequire = {\n create: ['dateOfBirth', 'ssn'],\n update: ['firstName', 'lastName', 'dateOfBirth', 'ssn'],\n}\n\n/** @internal */\nexport function EmployeeProfile({\n companyId,\n employeeId,\n defaultValues,\n className = '',\n dictionary,\n onEvent,\n}: ProfileProps) {\n useI18n('Employee.Profile')\n useI18n('Employee.HomeAddress')\n useComponentDictionary('Employee.Profile', dictionary)\n const { t } = useTranslation('Employee.Profile')\n const { t: tHome } = useTranslation('Employee.HomeAddress')\n const { t: tCommon } = useTranslation('common')\n const Components = useComponentContext()\n\n const [resolvedEmployeeId, setResolvedEmployeeId] = useState(employeeId)\n\n const employeeDetails = useEmployeeDetailsForm({\n companyId,\n employeeId: resolvedEmployeeId,\n withSelfOnboardingField: false,\n optionalFieldsToRequire: SELF_OPTIONAL_FIELDS,\n defaultValues: defaultValues?.employee,\n shouldFocusError: false,\n })\n\n const homeAddress = useCurrentHomeAddressForm({\n employeeId: resolvedEmployeeId ?? '',\n withEffectiveDateField: false,\n defaultValues: {\n street1: defaultValues?.homeAddress?.street1,\n street2: defaultValues?.homeAddress?.street2,\n city: defaultValues?.homeAddress?.city,\n state: defaultValues?.homeAddress?.state,\n zip: defaultValues?.homeAddress?.zip,\n },\n shouldFocusError: false,\n })\n\n const workAddressesQuery = useEmployeeAddressesGetWorkAddresses(\n { employeeId: resolvedEmployeeId ?? '' },\n { enabled: !!resolvedEmployeeId },\n )\n const workAddresses = workAddressesQuery.data?.employeeWorkAddressesList\n const activeWorkAddress = workAddresses?.find(address => address.active)\n\n if (employeeDetails.isLoading || homeAddress.isLoading || workAddressesQuery.isLoading) {\n const loadingErrorHandling = composeErrorHandler([\n employeeDetails,\n homeAddress,\n workAddressesQuery,\n ])\n return <BaseLayout isLoading error={loadingErrorHandling.errors} />\n }\n\n const EmpFields = employeeDetails.form.Fields\n const HomeFields = homeAddress.form.Fields\n\n const submitResult = composeSubmitHandler([employeeDetails, homeAddress], async () => {\n const employeeResult = await employeeDetails.actions.onSubmit({\n onEmployeeCreated: emp => {\n onEvent(componentEvents.EMPLOYEE_CREATED, emp)\n },\n onEmployeeUpdated: emp => {\n onEvent(componentEvents.EMPLOYEE_UPDATED, emp)\n },\n })\n if (!employeeResult) return\n\n const newEmployeeId = employeeResult.data.uuid\n\n const homeResult = await homeAddress.actions.onSubmit({\n employeeId: newEmployeeId,\n })\n if (!homeResult) {\n if (!employeeId) setResolvedEmployeeId(newEmployeeId)\n return\n }\n if (homeResult.mode === 'create') {\n onEvent(componentEvents.EMPLOYEE_HOME_ADDRESS_CREATED, homeResult.data)\n } else {\n onEvent(componentEvents.EMPLOYEE_HOME_ADDRESS_UPDATED, homeResult.data)\n }\n\n onEvent(componentEvents.EMPLOYEE_PROFILE_DONE, employeeResult.data)\n })\n\n const errorHandling = composeErrorHandler([\n submitResult,\n { errorHandling: homeAddress.errorHandling },\n workAddressesQuery,\n ])\n\n const isPending = employeeDetails.status.isPending || homeAddress.status.isPending\n\n return (\n <section className={classNames(styles.container, className)}>\n <BaseLayout error={errorHandling.errors}>\n <Form onSubmit={submitResult.handleSubmit}>\n <Grid gridTemplateColumns=\"1fr\" gap={24}>\n <div>\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Text>{t('description')}</Components.Text>\n </div>\n\n <SDKFormProvider formHookResult={employeeDetails}>\n <Grid\n gap={{ base: 20, small: 8 }}\n gridTemplateColumns={{ base: '1fr', small: ['1fr', 200] }}\n >\n <EmpFields.FirstName\n label={t('firstName')}\n validationMessages={{\n REQUIRED: t('validations.firstName'),\n INVALID_NAME: t('validations.firstName'),\n }}\n />\n <EmpFields.MiddleInitial label={t('middleInitial')} />\n </Grid>\n <EmpFields.LastName\n label={t('lastName')}\n validationMessages={{\n REQUIRED: t('validations.lastName'),\n INVALID_NAME: t('validations.lastName'),\n }}\n />\n <EmpFields.Ssn\n label={t('ssnLabel')}\n validationMessages={{\n INVALID_SSN: t('validations.ssn', { ns: 'common' }),\n REQUIRED: t('validations.ssnRequired', { ns: 'common' }),\n }}\n />\n <EmpFields.DateOfBirth\n label={t('dobLabel')}\n validationMessages={{ REQUIRED: t('validations.dob', { ns: 'common' }) }}\n />\n </SDKFormProvider>\n\n <SDKFormProvider formHookResult={homeAddress}>\n <div>\n <Components.Heading as=\"h2\">{tHome('formTitle')}</Components.Heading>\n <Components.Text>{tHome('desc')}</Components.Text>\n </div>\n <Grid\n gridTemplateColumns={{\n base: '1fr',\n small: ['1fr', '1fr'],\n }}\n gap={20}\n >\n <HomeFields.Street1\n label={tHome('street1')}\n validationMessages={{ REQUIRED: tHome('validations.street1') }}\n />\n <HomeFields.Street2 label={tHome('street2')} />\n <HomeFields.City\n label={tHome('city')}\n validationMessages={{ REQUIRED: tHome('validations.city') }}\n />\n <HomeFields.State\n label={tHome('state')}\n placeholder={tHome('statePlaceholder')}\n validationMessages={{ REQUIRED: tHome('validations.state') }}\n getOptionLabel={(abbr: string) =>\n tCommon(`statesHash.${abbr}`, { defaultValue: abbr })\n }\n />\n <HomeFields.Zip\n label={tHome('zip')}\n validationMessages={{\n REQUIRED: tHome('validations.zip'),\n INVALID_ZIP: tHome('validations.zip'),\n }}\n />\n </Grid>\n </SDKFormProvider>\n\n {activeWorkAddress && (\n <section>\n <Components.Heading as=\"h2\">{t('workAddressSectionTitle')}</Components.Heading>\n <Components.Text>{t('workAddressSectionDescription')}</Components.Text>\n <address className={styles.address}>\n <Components.Text>{getStreet(activeWorkAddress)}</Components.Text>\n <Components.Text>{getCityStateZip(activeWorkAddress)}</Components.Text>\n </address>\n </section>\n )}\n </Grid>\n <ActionsLayout>\n <Components.Button type=\"submit\" isLoading={isPending}>\n {t('submitCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["SELF_OPTIONAL_FIELDS","EmployeeProfile","companyId","employeeId","defaultValues","className","dictionary","onEvent","useI18n","useComponentDictionary","t","useTranslation","tHome","tCommon","Components","useComponentContext","resolvedEmployeeId","setResolvedEmployeeId","useState","employeeDetails","useEmployeeDetailsForm","homeAddress","useCurrentHomeAddressForm","workAddressesQuery","useEmployeeAddressesGetWorkAddresses","activeWorkAddress","address","loadingErrorHandling","composeErrorHandler","BaseLayout","EmpFields","HomeFields","submitResult","composeSubmitHandler","employeeResult","emp","componentEvents","newEmployeeId","homeResult","errorHandling","isPending","classNames","styles","jsx","Form","jsxs","Grid","SDKFormProvider","abbr","getStreet","getCityStateZip","ActionsLayout"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmployeeProfile.js","sources":["../../../../../src/components/Employee/Profile/onboarding/EmployeeProfile.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { useEmployeeAddressesGetWorkAddresses } from '@gusto/embedded-api-v-2025-11-15/react-query/employeeAddressesGetWorkAddresses'\nimport { useEmployeeDetailsForm } from '../shared/useEmployeeDetailsForm'\nimport type { EmployeeDetailsOptionalFieldsToRequire } from '../shared/useEmployeeDetailsForm'\nimport { useCurrentHomeAddressForm } from '../shared/useHomeAddressForm'\nimport styles from './EmployeeProfile.module.scss'\nimport type { ProfileProps } from './Profile'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { composeSubmitHandler } from '@/partner-hook-utils/form/composeSubmitHandler'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { Grid } from '@/components/Common/Grid/Grid'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { BaseLayout } from '@/components/Base'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { getStreet, getCityStateZip } from '@/helpers/formattedStrings'\n\nconst SELF_OPTIONAL_FIELDS: EmployeeDetailsOptionalFieldsToRequire = {\n create: ['dateOfBirth', 'ssn'],\n update: ['firstName', 'lastName', 'dateOfBirth', 'ssn'],\n}\n\n/** @internal */\nexport function EmployeeProfile({\n companyId,\n employeeId,\n defaultValues,\n className = '',\n dictionary,\n onEvent,\n}: ProfileProps) {\n useI18n('Employee.Profile')\n useI18n('Employee.HomeAddress')\n useComponentDictionary('Employee.Profile', dictionary)\n const { t } = useTranslation('Employee.Profile')\n const { t: tHome } = useTranslation('Employee.HomeAddress')\n const { t: tCommon } = useTranslation('common')\n const Components = useComponentContext()\n\n const [resolvedEmployeeId, setResolvedEmployeeId] = useState(employeeId)\n\n const employeeDetails = useEmployeeDetailsForm({\n companyId,\n employeeId: resolvedEmployeeId,\n withSelfOnboardingField: false,\n optionalFieldsToRequire: SELF_OPTIONAL_FIELDS,\n defaultValues: defaultValues?.employee,\n shouldFocusError: false,\n })\n\n const homeAddress = useCurrentHomeAddressForm({\n employeeId: resolvedEmployeeId ?? '',\n withEffectiveDateField: false,\n defaultValues: {\n street1: defaultValues?.homeAddress?.street1,\n street2: defaultValues?.homeAddress?.street2,\n city: defaultValues?.homeAddress?.city,\n state: defaultValues?.homeAddress?.state,\n zip: defaultValues?.homeAddress?.zip,\n },\n shouldFocusError: false,\n })\n\n const workAddressesQuery = useEmployeeAddressesGetWorkAddresses(\n { employeeId: resolvedEmployeeId ?? '' },\n { enabled: !!resolvedEmployeeId },\n )\n const workAddresses = workAddressesQuery.data?.employeeWorkAddressesList\n const activeWorkAddress = workAddresses?.find(address => address.active)\n\n if (employeeDetails.isLoading || homeAddress.isLoading || workAddressesQuery.isLoading) {\n const loadingErrorHandling = composeErrorHandler([\n employeeDetails,\n homeAddress,\n workAddressesQuery,\n ])\n return <BaseLayout isLoading error={loadingErrorHandling.errors} />\n }\n\n const EmpFields = employeeDetails.form.Fields\n const HomeFields = homeAddress.form.Fields\n\n const submitResult = composeSubmitHandler([employeeDetails, homeAddress], async () => {\n const employeeResult = await employeeDetails.actions.onSubmit({\n onEmployeeCreated: emp => {\n onEvent(componentEvents.EMPLOYEE_CREATED, emp)\n },\n onEmployeeUpdated: emp => {\n onEvent(componentEvents.EMPLOYEE_UPDATED, emp)\n },\n })\n if (!employeeResult) return\n\n const newEmployeeId = employeeResult.data.uuid\n\n const homeResult = await homeAddress.actions.onSubmit({\n employeeId: newEmployeeId,\n })\n if (!homeResult) {\n if (!employeeId) setResolvedEmployeeId(newEmployeeId)\n return\n }\n if (homeResult.mode === 'create') {\n onEvent(componentEvents.EMPLOYEE_HOME_ADDRESS_CREATED, homeResult.data)\n } else {\n onEvent(componentEvents.EMPLOYEE_HOME_ADDRESS_UPDATED, homeResult.data)\n }\n\n onEvent(componentEvents.EMPLOYEE_PROFILE_DONE, employeeResult.data)\n })\n\n const errorHandling = composeErrorHandler([\n submitResult,\n { errorHandling: homeAddress.errorHandling },\n workAddressesQuery,\n ])\n\n const isPending = employeeDetails.status.isPending || homeAddress.status.isPending\n\n return (\n <section className={classNames(styles.container, className)}>\n <BaseLayout error={errorHandling.errors}>\n <Form onSubmit={submitResult.handleSubmit}>\n <Grid gridTemplateColumns=\"1fr\" gap={24}>\n <div>\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Text>{t('description')}</Components.Text>\n </div>\n\n <SDKFormProvider formHookResult={employeeDetails}>\n <Grid\n gap={{ base: 20, small: 8 }}\n gridTemplateColumns={{ base: '1fr', small: ['1fr', 200] }}\n >\n <EmpFields.FirstName\n label={t('firstName')}\n validationMessages={{\n REQUIRED: t('validations.firstName'),\n INVALID_NAME: t('validations.firstName'),\n }}\n />\n <EmpFields.MiddleInitial label={t('middleInitial')} />\n </Grid>\n <EmpFields.LastName\n label={t('lastName')}\n validationMessages={{\n REQUIRED: t('validations.lastName'),\n INVALID_NAME: t('validations.lastName'),\n }}\n />\n <EmpFields.Ssn\n label={t('ssnLabel')}\n validationMessages={{\n INVALID_SSN: t('validations.ssn', { ns: 'common' }),\n REQUIRED: t('validations.ssnRequired', { ns: 'common' }),\n }}\n />\n <EmpFields.DateOfBirth\n label={t('dobLabel')}\n validationMessages={{ REQUIRED: t('validations.dob', { ns: 'common' }) }}\n />\n </SDKFormProvider>\n\n <SDKFormProvider formHookResult={homeAddress}>\n <div>\n <Components.Heading as=\"h2\">{tHome('formTitle')}</Components.Heading>\n <Components.Text>{tHome('desc')}</Components.Text>\n </div>\n <Grid\n gridTemplateColumns={{\n base: '1fr',\n small: ['1fr', '1fr'],\n }}\n gap={20}\n >\n <HomeFields.Street1\n label={tHome('street1')}\n validationMessages={{ REQUIRED: tHome('validations.street1') }}\n />\n <HomeFields.Street2 label={tHome('street2')} />\n <HomeFields.City\n label={tHome('city')}\n validationMessages={{ REQUIRED: tHome('validations.city') }}\n />\n <HomeFields.State\n label={tHome('state')}\n placeholder={tHome('statePlaceholder')}\n validationMessages={{ REQUIRED: tHome('validations.state') }}\n getOptionLabel={(abbr: string) =>\n tCommon(`statesHash.${abbr}`, { defaultValue: abbr })\n }\n />\n <HomeFields.Zip\n label={tHome('zip')}\n validationMessages={{\n REQUIRED: tHome('validations.zip'),\n INVALID_ZIP: tHome('validations.zip'),\n }}\n />\n </Grid>\n </SDKFormProvider>\n\n {activeWorkAddress && (\n <section>\n <Components.Heading as=\"h2\">{t('workAddressSectionTitle')}</Components.Heading>\n <Components.Text>{t('workAddressSectionDescription')}</Components.Text>\n <address className={styles.address}>\n <Components.Text>{getStreet(activeWorkAddress)}</Components.Text>\n <Components.Text>{getCityStateZip(activeWorkAddress)}</Components.Text>\n </address>\n </section>\n )}\n </Grid>\n <ActionsLayout>\n <Components.Button type=\"submit\" isLoading={isPending}>\n {t('submitCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["SELF_OPTIONAL_FIELDS","EmployeeProfile","companyId","employeeId","defaultValues","className","dictionary","onEvent","useI18n","useComponentDictionary","t","useTranslation","tHome","tCommon","Components","useComponentContext","resolvedEmployeeId","setResolvedEmployeeId","useState","employeeDetails","useEmployeeDetailsForm","homeAddress","useCurrentHomeAddressForm","workAddressesQuery","useEmployeeAddressesGetWorkAddresses","activeWorkAddress","address","loadingErrorHandling","composeErrorHandler","BaseLayout","EmpFields","HomeFields","submitResult","composeSubmitHandler","employeeResult","emp","componentEvents","newEmployeeId","homeResult","errorHandling","isPending","classNames","styles","jsx","Form","jsxs","Grid","SDKFormProvider","abbr","getStreet","getCityStateZip","ActionsLayout"],"mappings":"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"}
|
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
-
import { AdminProfile as
|
|
2
|
+
import { AdminProfile as t } from "./AdminProfile.js";
|
|
3
3
|
import { EmployeeProfile as f } from "./EmployeeProfile.js";
|
|
4
4
|
import { BaseBoundaries as a } from "../../../Base/Base.js";
|
|
5
|
-
import "../../../Base/useBase.js";
|
|
6
5
|
import { useFlow as d } from "../../../Flow/useFlow.js";
|
|
7
|
-
import { ensureRequired as
|
|
8
|
-
function
|
|
6
|
+
import { ensureRequired as u } from "../../../../helpers/ensureRequired.js";
|
|
7
|
+
function p({
|
|
9
8
|
FallbackComponent: r,
|
|
10
9
|
isAdmin: i = !1,
|
|
11
10
|
...e
|
|
12
11
|
}) {
|
|
13
|
-
return /* @__PURE__ */ o(a, { componentName: "Employee.Profile", FallbackComponent: r, children: i ? /* @__PURE__ */ o(
|
|
12
|
+
return /* @__PURE__ */ o(a, { componentName: "Employee.Profile", FallbackComponent: r, children: i ? /* @__PURE__ */ o(t, { ...e, isAdmin: !0 }) : /* @__PURE__ */ o(f, { ...e }) });
|
|
14
13
|
}
|
|
15
|
-
const
|
|
16
|
-
const { companyId: r, employeeId: i, onEvent: e, isAdmin: m, defaultValues: n, isSelfOnboardingEnabled:
|
|
14
|
+
const A = () => {
|
|
15
|
+
const { companyId: r, employeeId: i, onEvent: e, isAdmin: m, defaultValues: n, isSelfOnboardingEnabled: l } = d();
|
|
17
16
|
return /* @__PURE__ */ o(
|
|
18
|
-
|
|
17
|
+
p,
|
|
19
18
|
{
|
|
20
|
-
companyId:
|
|
19
|
+
companyId: u(r),
|
|
21
20
|
employeeId: i,
|
|
22
21
|
onEvent: e,
|
|
23
22
|
isAdmin: m,
|
|
24
23
|
defaultValues: n?.profile,
|
|
25
|
-
isSelfOnboardingEnabled:
|
|
24
|
+
isSelfOnboardingEnabled: l
|
|
26
25
|
}
|
|
27
26
|
);
|
|
28
27
|
};
|
|
29
28
|
export {
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
p as Profile,
|
|
30
|
+
A as ProfileContextual
|
|
32
31
|
};
|
|
33
32
|
//# sourceMappingURL=Profile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Profile.js","sources":["../../../../../src/components/Employee/Profile/onboarding/Profile.tsx"],"sourcesContent":["import type { OnboardingContextInterface } from '../../OnboardingFlow/OnboardingFlowComponents'\nimport { AdminProfile } from './AdminProfile'\nimport { EmployeeProfile } from './EmployeeProfile'\nimport {\n BaseBoundaries,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport { ensureRequired } from '@/helpers/ensureRequired'\n\n/**\n * Pre-fill values for the {@link Profile} onboarding step.\n *\n * @remarks\n * At least one of the listed fields must be provided. When employee data is\n * already available via the API, those values take precedence over the\n * defaults.\n *\n * @public\n */\nexport type ProfileDefaultValues = RequireAtLeastOne<{\n /** Pre-fill values for the employee details section. At least one nested field must be set. */\n employee?: RequireAtLeastOne<{\n /** The employee's first name. */\n firstName?: string\n /** The employee's middle initial. */\n middleInitial?: string\n /** The employee's last name. */\n lastName?: string\n /** The employee's personal email address. */\n email?: string\n /** The employee's date of birth as an ISO date string (`YYYY-MM-DD`). */\n dateOfBirth?: string\n }>\n /** Pre-fill values for the home address section. At least one nested field must be set. */\n homeAddress?: RequireAtLeastOne<{\n /** First line of the street address. */\n street1?: string\n /** Second line of the street address (optional). */\n street2?: string\n /** City. */\n city?: string\n /** Two-letter state abbreviation. */\n state?: string\n /** ZIP code. */\n zip?: string\n }>\n /** When `true`, the admin form opens with the self-onboarding toggle enabled by default in create mode. */\n inviteEmployeeDefault?: boolean\n}>\n\n/**\n * Props for {@link Profile}.\n *\n * @public\n */\nexport interface ProfileProps extends CommonComponentInterface<'Employee.Profile'> {\n /** The associated employee identifier. Omit to create a new employee. */\n employeeId?: string\n /** The associated company identifier. */\n companyId: string\n /** Pre-fill values for the form fields. */\n defaultValues?: ProfileDefaultValues\n /** When `true`, renders the admin variant (collects work address, start date, and self-onboarding toggle). Defaults to `false`. */\n isAdmin?: boolean\n /** When `true`, the admin variant exposes the self-onboarding toggle. Defaults to `true`. */\n isSelfOnboardingEnabled?: boolean\n /** Event handler fired on profile creation, update, and address changes. */\n onEvent: BaseComponentInterface['onEvent']\n}\n\n/**\n * Onboarding step for collecting an employee's basic profile and addresses.\n *\n * @remarks\n * Switches between an admin-facing variant (collects employee details,\n * work address, start date, and an optional self-onboarding invitation\n * toggle) and an employee-facing variant (collects employee details and\n * home address only — the active work address is read-only) based on\n * `isAdmin`. Both variants create the employee on submit when `employeeId`\n * is omitted.\n *\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/created` | Fired after an employee is successfully created | {@link Employee} |\n * | `employee/updated` | Fired after an employee is successfully updated | {@link Employee} |\n * | `employee/onboardingStatus/updated` | Fired when toggling self-onboarding changes the employee's onboarding status (admin variant) | The updated onboarding status |\n * | `employee/homeAddress/created` | Fired after the home address is created | {@link EmployeeAddress} |\n * | `employee/homeAddress/updated` | Fired after the home address is updated | {@link EmployeeAddress} |\n * | `employee/workAddress/created` | Fired after the work address is created (admin variant) | {@link EmployeeWorkAddress} |\n * | `employee/workAddress/updated` | Fired after the work address is updated (admin variant) | {@link EmployeeWorkAddress} |\n * | `employee/profile/done` | Fired when all profile saves complete and the parent flow can advance | {@link Employee} extended with `startDate` (admin variant) |\n *\n * @param input - See {@link ProfileProps}.\n * @returns The employee profile onboarding step.\n * @public\n */\nexport function Profile({\n FallbackComponent,\n isAdmin = false,\n ...props\n}: ProfileProps & BaseComponentInterface) {\n return (\n <BaseBoundaries componentName=\"Employee.Profile\" FallbackComponent={FallbackComponent}>\n {isAdmin ? <AdminProfile {...props} isAdmin /> : <EmployeeProfile {...props} />}\n </BaseBoundaries>\n )\n}\n\n/** @internal */\nexport const ProfileContextual = () => {\n const { companyId, employeeId, onEvent, isAdmin, defaultValues, isSelfOnboardingEnabled } =\n useFlow<OnboardingContextInterface>()\n\n return (\n <Profile\n companyId={ensureRequired(companyId)}\n employeeId={employeeId}\n onEvent={onEvent}\n isAdmin={isAdmin}\n defaultValues={defaultValues?.profile}\n isSelfOnboardingEnabled={isSelfOnboardingEnabled}\n />\n )\n}\n"],"names":["Profile","FallbackComponent","isAdmin","props","BaseBoundaries","jsx","AdminProfile","EmployeeProfile","ProfileContextual","companyId","employeeId","onEvent","defaultValues","isSelfOnboardingEnabled","useFlow","ensureRequired"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Profile.js","sources":["../../../../../src/components/Employee/Profile/onboarding/Profile.tsx"],"sourcesContent":["import type { OnboardingContextInterface } from '../../OnboardingFlow/OnboardingFlowComponents'\nimport { AdminProfile } from './AdminProfile'\nimport { EmployeeProfile } from './EmployeeProfile'\nimport {\n BaseBoundaries,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport { ensureRequired } from '@/helpers/ensureRequired'\n\n/**\n * Pre-fill values for the {@link Profile} onboarding step.\n *\n * @remarks\n * At least one of the listed fields must be provided. When employee data is\n * already available via the API, those values take precedence over the\n * defaults.\n *\n * @public\n */\nexport type ProfileDefaultValues = RequireAtLeastOne<{\n /** Pre-fill values for the employee details section. At least one nested field must be set. */\n employee?: RequireAtLeastOne<{\n /** The employee's first name. */\n firstName?: string\n /** The employee's middle initial. */\n middleInitial?: string\n /** The employee's last name. */\n lastName?: string\n /** The employee's personal email address. */\n email?: string\n /** The employee's date of birth as an ISO date string (`YYYY-MM-DD`). */\n dateOfBirth?: string\n }>\n /** Pre-fill values for the home address section. At least one nested field must be set. */\n homeAddress?: RequireAtLeastOne<{\n /** First line of the street address. */\n street1?: string\n /** Second line of the street address (optional). */\n street2?: string\n /** City. */\n city?: string\n /** Two-letter state abbreviation. */\n state?: string\n /** ZIP code. */\n zip?: string\n }>\n /** When `true`, the admin form opens with the self-onboarding toggle enabled by default in create mode. */\n inviteEmployeeDefault?: boolean\n}>\n\n/**\n * Props for {@link Profile}.\n *\n * @public\n */\nexport interface ProfileProps extends CommonComponentInterface<'Employee.Profile'> {\n /** The associated employee identifier. Omit to create a new employee. */\n employeeId?: string\n /** The associated company identifier. */\n companyId: string\n /** Pre-fill values for the form fields. */\n defaultValues?: ProfileDefaultValues\n /** When `true`, renders the admin variant (collects work address, start date, and self-onboarding toggle). Defaults to `false`. */\n isAdmin?: boolean\n /** When `true`, the admin variant exposes the self-onboarding toggle. Defaults to `true`. */\n isSelfOnboardingEnabled?: boolean\n /** Event handler fired on profile creation, update, and address changes. */\n onEvent: BaseComponentInterface['onEvent']\n}\n\n/**\n * Onboarding step for collecting an employee's basic profile and addresses.\n *\n * @remarks\n * Switches between an admin-facing variant (collects employee details,\n * work address, start date, and an optional self-onboarding invitation\n * toggle) and an employee-facing variant (collects employee details and\n * home address only — the active work address is read-only) based on\n * `isAdmin`. Both variants create the employee on submit when `employeeId`\n * is omitted.\n *\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/created` | Fired after an employee is successfully created | {@link Employee} |\n * | `employee/updated` | Fired after an employee is successfully updated | {@link Employee} |\n * | `employee/onboardingStatus/updated` | Fired when toggling self-onboarding changes the employee's onboarding status (admin variant) | The updated onboarding status |\n * | `employee/homeAddress/created` | Fired after the home address is created | {@link EmployeeAddress} |\n * | `employee/homeAddress/updated` | Fired after the home address is updated | {@link EmployeeAddress} |\n * | `employee/workAddress/created` | Fired after the work address is created (admin variant) | {@link EmployeeWorkAddress} |\n * | `employee/workAddress/updated` | Fired after the work address is updated (admin variant) | {@link EmployeeWorkAddress} |\n * | `employee/profile/done` | Fired when all profile saves complete and the parent flow can advance | {@link Employee} extended with `startDate` (admin variant) |\n *\n * @param input - See {@link ProfileProps}.\n * @returns The employee profile onboarding step.\n * @public\n */\nexport function Profile({\n FallbackComponent,\n isAdmin = false,\n ...props\n}: ProfileProps & BaseComponentInterface) {\n return (\n <BaseBoundaries componentName=\"Employee.Profile\" FallbackComponent={FallbackComponent}>\n {isAdmin ? <AdminProfile {...props} isAdmin /> : <EmployeeProfile {...props} />}\n </BaseBoundaries>\n )\n}\n\n/** @internal */\nexport const ProfileContextual = () => {\n const { companyId, employeeId, onEvent, isAdmin, defaultValues, isSelfOnboardingEnabled } =\n useFlow<OnboardingContextInterface>()\n\n return (\n <Profile\n companyId={ensureRequired(companyId)}\n employeeId={employeeId}\n onEvent={onEvent}\n isAdmin={isAdmin}\n defaultValues={defaultValues?.profile}\n isSelfOnboardingEnabled={isSelfOnboardingEnabled}\n />\n )\n}\n"],"names":["Profile","FallbackComponent","isAdmin","props","BaseBoundaries","jsx","AdminProfile","EmployeeProfile","ProfileContextual","companyId","employeeId","onEvent","defaultValues","isSelfOnboardingEnabled","useFlow","ensureRequired"],"mappings":";;;;;;AAmGO,SAASA,EAAQ;AAAA,EACtB,mBAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,GAAGC;AACL,GAA0C;AACxC,2BACGC,GAAA,EAAe,eAAc,oBAAmB,mBAAAH,GAC9C,cAAU,gBAAAI,EAACC,GAAA,EAAc,GAAGH,GAAO,SAAO,GAAA,CAAC,sBAAMI,GAAA,EAAiB,GAAGJ,GAAO,GAC/E;AAEJ;AAGO,MAAMK,IAAoB,MAAM;AACrC,QAAM,EAAE,WAAAC,GAAW,YAAAC,GAAY,SAAAC,GAAS,SAAAT,GAAS,eAAAU,GAAe,yBAAAC,EAAA,IAC9DC,EAAA;AAEF,SACE,gBAAAT;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,WAAWe,EAAeN,CAAS;AAAA,MACnC,YAAAC;AAAA,MACA,SAAAC;AAAA,MACA,SAAAT;AAAA,MACA,eAAeU,GAAe;AAAA,MAC9B,yBAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import { useFormFieldsMetadataContext as r } from "../../../../../partner-hook-utils/form/FormFieldsMetadataContext.js";
|
|
3
|
-
import { usePlaceholderSSN as m, normalizeSSN as l } from "../../../../../helpers/ssn.js";
|
|
4
|
-
import { DatePickerHookField as d } from "../../../../../partner-hook-utils/form/fields/DatePickerHookField.js";
|
|
5
2
|
import { TextInputHookField as a } from "../../../../../partner-hook-utils/form/fields/TextInputHookField.js";
|
|
6
|
-
import {
|
|
3
|
+
import { DatePickerHookField as r } from "../../../../../partner-hook-utils/form/fields/DatePickerHookField.js";
|
|
4
|
+
import { SwitchHookField as m } from "../../../../../partner-hook-utils/form/fields/SwitchHookField.js";
|
|
5
|
+
import { useFormFieldsMetadataContext as l } from "../../../../../partner-hook-utils/form/FormFieldsMetadataContext.js";
|
|
6
|
+
import { usePlaceholderSSN as d, normalizeSSN as f } from "../../../../../helpers/ssn.js";
|
|
7
7
|
function h(e) {
|
|
8
8
|
return /* @__PURE__ */ t(a, { ...e, name: "firstName" });
|
|
9
9
|
}
|
|
@@ -17,22 +17,22 @@ function x(e) {
|
|
|
17
17
|
return /* @__PURE__ */ t(a, { ...e, name: "email" });
|
|
18
18
|
}
|
|
19
19
|
function H(e) {
|
|
20
|
-
return /* @__PURE__ */ t(
|
|
20
|
+
return /* @__PURE__ */ t(r, { ...e, name: "dateOfBirth" });
|
|
21
21
|
}
|
|
22
22
|
function O(e) {
|
|
23
|
-
const n =
|
|
23
|
+
const n = l(), i = e.formHookResult?.form.fieldsMetadata ?? n?.metadata ?? {}, o = d(i.ssn?.hasRedactedValue);
|
|
24
24
|
return /* @__PURE__ */ t(
|
|
25
25
|
a,
|
|
26
26
|
{
|
|
27
27
|
...e,
|
|
28
28
|
name: "ssn",
|
|
29
|
-
transform:
|
|
29
|
+
transform: f,
|
|
30
30
|
placeholder: o
|
|
31
31
|
}
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
34
|
function I(e) {
|
|
35
|
-
return /* @__PURE__ */ t(
|
|
35
|
+
return /* @__PURE__ */ t(m, { ...e, name: "selfOnboarding" });
|
|
36
36
|
}
|
|
37
37
|
export {
|
|
38
38
|
H as DateOfBirthField,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as t } from "react/jsx-runtime";
|
|
2
2
|
import { TextInputHookField as i } from "../../../../../partner-hook-utils/form/fields/TextInputHookField.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { SelectHookField as r } from "../../../../../partner-hook-utils/form/fields/SelectHookField.js";
|
|
4
|
+
import { CheckboxHookField as n } from "../../../../../partner-hook-utils/form/fields/CheckboxHookField.js";
|
|
5
|
+
import { DatePickerHookField as o } from "../../../../../partner-hook-utils/form/fields/DatePickerHookField.js";
|
|
6
6
|
function d(e) {
|
|
7
7
|
return /* @__PURE__ */ t(i, { ...e, name: "street1" });
|
|
8
8
|
}
|
|
@@ -13,16 +13,16 @@ function F(e) {
|
|
|
13
13
|
return /* @__PURE__ */ t(i, { ...e, name: "city" });
|
|
14
14
|
}
|
|
15
15
|
function p(e) {
|
|
16
|
-
return /* @__PURE__ */ t(
|
|
16
|
+
return /* @__PURE__ */ t(r, { ...e, name: "state" });
|
|
17
17
|
}
|
|
18
18
|
function k(e) {
|
|
19
19
|
return /* @__PURE__ */ t(i, { ...e, name: "zip" });
|
|
20
20
|
}
|
|
21
21
|
function s(e) {
|
|
22
|
-
return /* @__PURE__ */ t(
|
|
22
|
+
return /* @__PURE__ */ t(n, { ...e, name: "courtesyWithholding" });
|
|
23
23
|
}
|
|
24
24
|
function h(e) {
|
|
25
|
-
return /* @__PURE__ */ t(
|
|
25
|
+
return /* @__PURE__ */ t(o, { ...e, name: "effectiveDate" });
|
|
26
26
|
}
|
|
27
27
|
export {
|
|
28
28
|
F as CityField,
|