@gusto/embedded-react-sdk 0.51.0 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/dist/components/Base/useBaseSubmit.js +4 -4
- package/dist/components/Base/useBaseSubmit.js.map +1 -1
- package/dist/components/Common/DocumentList/DocumentList.d.ts +8 -1
- package/dist/components/Common/DocumentList/DocumentList.js +24 -21
- package/dist/components/Common/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes.d.ts +1 -1
- package/dist/components/Common/OnboardingStatusBadge/index.d.ts +2 -2
- package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
- package/dist/components/Common/TaxInputs/TaxInputs.d.ts +2 -2
- package/dist/components/Common/TaxInputs/TaxInputs.js.map +1 -1
- package/dist/components/Common/UI/FormBox/FormBox.d.ts +9 -0
- package/dist/components/Common/UI/FormBox/FormBox.js +13 -0
- package/dist/components/Common/UI/FormBox/FormBox.js.map +1 -0
- package/dist/components/Common/UI/FormBox/FormBox.module.scss.js +14 -0
- package/dist/components/Common/UI/FormBox/FormBox.module.scss.js.map +1 -0
- package/dist/components/Common/UI/FormBox/FormBoxTypes.d.ts +26 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.d.ts +9 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js +23 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js.map +1 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js +8 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js.map +1 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.d.ts +36 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js +7 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js.map +1 -0
- package/dist/components/Common/UI/FormBoxHeader/index.d.ts +1 -0
- package/dist/components/Common/UI/Input/InputTypes.d.ts +1 -0
- package/dist/components/Common/UI/Input/InputTypes.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +5 -5
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.d.ts +1 -2
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.d.ts +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +9 -8
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +3 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.d.ts +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.d.ts +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +9 -8
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +11 -10
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccount.js +1 -1
- package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountComponents.d.ts +1 -1
- package/dist/components/Company/BankAccount/BankAccountComponents.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Form.d.ts +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +9 -8
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/context.d.ts +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/context.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/Form.d.ts +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +2 -2
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.d.ts +2 -2
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +9 -8
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js +1 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Company/DocumentSigner/documentSignerStateMachine.d.ts +2 -2
- package/dist/components/Company/DocumentSigner/documentSignerStateMachine.js.map +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/signCompanyFormSchema.d.ts +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.d.ts +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.js +3 -3
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.js.map +1 -1
- package/dist/components/Company/FederalTaxes/FederalTaxes.js +2 -2
- package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
- package/dist/components/Company/FederalTaxes/Form.js +1 -1
- package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.d.ts +2 -2
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +12 -11
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +12 -11
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Industry/Industry.js +2 -2
- package/dist/components/Company/Industry/Industry.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/Actions.js +7 -7
- package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/Form.d.ts +1 -1
- package/dist/components/Company/Locations/LocationForm/LocationForm.js +46 -45
- package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +9 -8
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/LocationsList.js +1 -1
- package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.d.ts +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +9 -8
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +1 -1
- package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.d.ts +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +9 -8
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleList.js +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleList.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +3 -3
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +3 -3
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +6 -6
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxes.d.ts +10 -1
- package/dist/components/Company/StateTaxes/StateTaxes.js +23 -17
- package/dist/components/Company/StateTaxes/StateTaxes.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesComponents.d.ts +2 -0
- package/dist/components/Company/StateTaxes/StateTaxesComponents.js +17 -10
- package/dist/components/Company/StateTaxes/StateTaxesComponents.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +3 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +2 -2
- package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.d.ts +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.d.ts +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +9 -8
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/List.js +27 -27
- package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.d.ts +9 -0
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +24 -24
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.d.ts +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +9 -8
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Contractor/Address/Address.d.ts +4 -3
- package/dist/components/Contractor/Address/Address.js.map +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/contractorAddressSchema.d.ts +2 -2
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.d.ts +3 -3
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +3 -3
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
- package/dist/components/Contractor/ContractorList/index.js +95 -92
- package/dist/components/Contractor/ContractorList/index.js.map +1 -1
- package/dist/components/Contractor/ContractorList/useContractorList.d.ts +1 -1
- package/dist/components/Contractor/ContractorList/useContractorList.js +1 -1
- package/dist/components/Contractor/ContractorList/useContractorList.js.map +1 -1
- package/dist/components/Contractor/Documents/DocumentSigner/documentSignerStateMachine.d.ts +1 -1
- package/dist/components/Contractor/Documents/DocumentSigner/documentSignerStateMachine.js.map +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.d.ts +3 -1
- package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js +64 -51
- package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js.map +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.d.ts +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js +202 -159
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/contractorSignatureFormSchema.d.ts +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.d.ts +3 -3
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js +3 -3
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.d.ts +2 -2
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js +55 -54
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js.map +1 -1
- package/dist/components/Contractor/Landing/Landing.js +2 -2
- package/dist/components/Contractor/Landing/Landing.js.map +1 -1
- package/dist/components/Contractor/NewHireReport/NewHireReport.js +2 -2
- package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.d.ts +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js +2 -2
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountFormSchema.d.ts +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.d.ts +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.d.ts +3 -3
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js +2 -2
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +5 -5
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +2 -2
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.d.ts +2 -2
- package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/GenericBlocker.d.ts +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/GenericBlocker.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +4 -4
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/helpers.d.ts +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/helpers.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js +2 -2
- package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +3 -3
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +2 -2
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +4 -4
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +3 -3
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.d.ts +17 -5
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +32 -31
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.d.ts +3 -3
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.d.ts +16 -4
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +34 -30
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
- package/dist/components/Contractor/Profile/SelfOnboardingContractorProfile.js +1 -1
- package/dist/components/Contractor/Profile/SelfOnboardingContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.d.ts +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +6 -6
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.d.ts +2 -2
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +3 -3
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +3 -3
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +1 -1
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/Compensation.d.ts +2 -6
- package/dist/components/Employee/Compensation/onboarding/Compensation.js +38 -42
- package/dist/components/Employee/Compensation/onboarding/Compensation.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.d.ts +2 -2
- package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js +2 -2
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.d.ts +1 -1
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.d.ts +1 -1
- package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.d.ts +2 -2
- package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +2 -2
- package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.d.ts +3 -3
- package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.d.ts +4 -4
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +7 -7
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.d.ts +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +4 -4
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.d.ts +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.d.ts +3 -3
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +7 -7
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Employee/Dashboard/dashboardStateMachine.js.map +1 -1
- package/dist/components/Employee/Dashboard/index.d.ts +1 -1
- package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
- package/dist/components/Employee/Deductions/management/deductionsStateMachine.js.map +1 -1
- package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.d.ts +1 -1
- package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.js.map +1 -1
- package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.d.ts +1 -1
- package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/formatDeductionAmount.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/formatDeductionAmount.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.d.ts +2 -2
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.d.ts +3 -3
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js +5 -5
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.d.ts +2 -2
- package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js +3 -3
- package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionsList.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionsList.js +2 -2
- package/dist/components/Employee/Deductions/shared/useDeductionsList.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeleteDeduction.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useDeleteDeduction.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentManager.js +2 -2
- package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.d.ts +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +9 -8
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +2 -2
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +3 -3
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.d.ts +2 -2
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.d.ts +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +3 -6
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.d.ts +1 -1
- package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js +1 -1
- package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.d.ts +2 -2
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js +27 -32
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.d.ts +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js +3 -3
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +3 -3
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +4 -5
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.d.ts +2 -2
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.d.ts +2 -2
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js +2 -2
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.d.ts +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.d.ts +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.d.ts +1 -1
- package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.d.ts +1 -1
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +3 -3
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
- package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.d.ts +1 -1
- package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js +1 -1
- package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js.map +1 -1
- package/dist/components/Employee/Landing/Landing.js +2 -2
- package/dist/components/Employee/Landing/Landing.js.map +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.d.ts +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.js.map +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.d.ts +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js +1 -3
- package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js.map +1 -1
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +55 -49
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js +2 -2
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.d.ts +2 -2
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js +4 -4
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.d.ts +2 -2
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js +3 -3
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.d.ts +1 -1
- package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.d.ts +1 -1
- package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js +3 -3
- package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js.map +1 -1
- package/dist/components/Employee/Profile/onboarding/AdminProfile.js.map +1 -1
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +2 -2
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.d.ts +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +5 -5
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.d.ts +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.d.ts +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.d.ts +2 -2
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js +4 -4
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.d.ts +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.d.ts +2 -2
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js +5 -5
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js.map +1 -1
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.d.ts +1 -1
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
- package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/__fixtures__/stateTaxesFixtures.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/__fixtures__/toWireFormat.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js +2 -2
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js +1 -1
- package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +9 -9
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +4 -4
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.d.ts +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.d.ts +2 -2
- package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.d.ts +1 -1
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +3 -3
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
- package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.d.ts +1 -1
- package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js +1 -1
- package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js.map +1 -1
- package/dist/components/Employee/exports/employeeManagement.d.ts +1 -1
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.d.ts +4 -5
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +101 -125
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +2 -2
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestsComponents.d.ts +0 -5
- package/dist/components/InformationRequests/InformationRequestsComponents.js +12 -13
- package/dist/components/InformationRequests/InformationRequestsComponents.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +2 -2
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +3 -3
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js +2 -2
- package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +5 -5
- package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +4 -4
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +8 -7
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.d.ts +1 -1
- package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +9 -9
- package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
- package/dist/components/Payroll/OffCycle/index.d.ts +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +4 -4
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +2 -2
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +4 -4
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +2 -2
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +100 -95
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +5 -6
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +5 -5
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +6 -6
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +57 -56
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +4 -4
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +2 -2
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +24 -7
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js +37 -33
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +2 -2
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js +7 -7
- package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +2 -2
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +4 -4
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +2 -2
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +2 -2
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +8 -8
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +3 -3
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +7 -7
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +4 -4
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +31 -31
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.d.ts +2 -2
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.d.ts +1 -1
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.d.ts +1 -1
- package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.js +2 -2
- package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCases.d.ts +9 -5
- package/dist/components/Payroll/RecoveryCases/RecoveryCases.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +2 -2
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.d.ts +1 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js +2 -2
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +1 -1
- package/dist/components/Payroll/Transition/index.d.ts +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +4 -4
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +3 -3
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
- package/dist/components/Payroll/helpers.d.ts +26 -12
- package/dist/components/Payroll/helpers.js +1 -1
- package/dist/components/Payroll/helpers.js.map +1 -1
- package/dist/components/Payroll/index.d.ts +3 -2
- package/dist/components/Payroll/payrollTypes.d.ts +1 -1
- package/dist/components/Payroll/payrollTypes.js +1 -1
- package/dist/components/Payroll/payrollTypes.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.d.ts +2 -2
- package/dist/components/Payroll/usePreparedPayrollData.js +16 -15
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.d.ts +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +3 -3
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +3 -3
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js +3 -3
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyList.js +6 -6
- package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js +30 -29
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js.map +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js.map +1 -1
- package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.d.ts +2 -2
- package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +27 -26
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +2 -2
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +69 -68
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js +20 -20
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +67 -66
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.d.ts +5 -5
- package/dist/contexts/ApiProvider/ApiProvider.js +3 -3
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/apiVersion.d.ts +23 -0
- package/dist/contexts/ApiProvider/apiVersion.js +6 -0
- package/dist/contexts/ApiProvider/apiVersion.js.map +1 -0
- package/dist/contexts/ApiProvider/apiVersionHook.js +3 -2
- package/dist/contexts/ApiProvider/apiVersionHook.js.map +1 -1
- package/dist/contexts/ApiProvider/createSdkQueryClient.d.ts +1 -1
- package/dist/contexts/ApiProvider/createSdkQueryClient.js +7 -6
- package/dist/contexts/ApiProvider/createSdkQueryClient.js.map +1 -1
- package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +40 -36
- package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
- package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +2 -0
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.d.ts +5 -0
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js +18 -16
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js.map +1 -1
- package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +6 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProvider.d.ts +4 -5
- package/dist/contexts/GustoProvider/GustoProvider.js +6 -6
- package/dist/contexts/GustoProvider/GustoProvider.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +7 -7
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +8 -8
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/GustoProvider/index.d.ts +1 -1
- package/dist/contexts/index.d.ts +2 -6
- package/dist/helpers/apiErrorToList.d.ts +1 -1
- package/dist/helpers/apiErrorToList.js.map +1 -1
- package/dist/helpers/formattedStrings.d.ts +2 -2
- package/dist/helpers/formattedStrings.js.map +1 -1
- package/dist/hooks/useCompanyPaymentSpeed.d.ts +1 -1
- package/dist/hooks/useCompanyPaymentSpeed.js +1 -1
- package/dist/hooks/useCompanyPaymentSpeed.js.map +1 -1
- package/dist/i18n/en/Contractor.ContractorList.json.js +18 -16
- package/dist/i18n/en/Contractor.ContractorList.json.js.map +1 -1
- package/dist/i18n/en/Contractor.DocumentsList.json.js +20 -16
- package/dist/i18n/en/Contractor.DocumentsList.json.js.map +1 -1
- package/dist/i18n/en/Contractor.SignatureForm.json.js +5 -5
- package/dist/i18n/en/Employee.OnboardingSummary.json.js +24 -20
- package/dist/i18n/en/Employee.OnboardingSummary.json.js.map +1 -1
- package/dist/i18n/types.d.ts +12 -0
- package/dist/index.d.ts +8 -7
- package/dist/index.js +121 -134
- package/dist/index.js.map +1 -1
- package/dist/models/WA_RISK_CODES.d.ts +5 -2
- package/dist/models/WA_RISK_CODES.js.map +1 -1
- package/dist/models/external.d.ts +236 -226
- package/dist/partner-hook-utils/composeErrorHandler.d.ts +9 -4
- package/dist/partner-hook-utils/composeErrorHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/SDKFormProvider.d.ts +10 -2
- package/dist/partner-hook-utils/form/SDKFormProvider.js +7 -1
- package/dist/partner-hook-utils/form/SDKFormProvider.js.map +1 -1
- package/dist/partner-hook-utils/form/composeSubmitHandler.d.ts +7 -4
- package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/index.d.ts +1 -0
- package/dist/partner-hook-utils/form/index.d.ts +3 -3
- package/dist/partner-hook-utils/form/useHookFieldResolution.js.map +1 -1
- package/dist/partner-hook-utils/index.d.ts +1 -1
- package/dist/partner-hook-utils/types.d.ts +7 -3
- package/dist/shared/constants.d.ts +2 -2
- package/dist/shared/constants.js +5 -5
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/Helpers.d.ts +11 -0
- package/dist/types/hooks.d.ts +2 -2
- package/dist/types/sdkError.js +3 -3
- package/dist/types/sdkError.js.map +1 -1
- package/docs/guides/endpoint-inventory.json +1201 -297
- package/package.json +12 -12
package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEmployeeDetailsForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Employee } from '@gusto/embedded-api-v-2026-02-01/models/components/employee'\nimport { useEmployeesGet } from '@gusto/embedded-api-v-2026-02-01/react-query/employeesGet'\nimport { useEmployeesCreateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeesCreate'\nimport { useEmployeesUpdateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeesUpdate'\nimport { useEmployeesUpdateOnboardingStatusMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeesUpdateOnboardingStatus'\nimport { RFCDate } from '@gusto/embedded-api-v-2026-02-01/types/rfcdate'\nimport {\n createEmployeeDetailsSchema,\n type EmployeeDetailsOptionalFieldsToRequire,\n type EmployeeDetailsFormData,\n type EmployeeDetailsFormOutputs,\n} from './employeeDetailsSchema'\nimport {\n FirstNameField,\n MiddleInitialField,\n LastNameField,\n EmailField,\n DateOfBirthField,\n SsnField,\n SelfOnboardingField,\n} from './fields'\nimport type {\n FirstNameFieldProps,\n MiddleInitialFieldProps,\n LastNameFieldProps,\n EmailFieldProps,\n DateOfBirthFieldProps,\n SsnFieldProps,\n SelfOnboardingFieldProps,\n} from './fields'\nimport { normalizeToISOString } from '@/helpers/dateFormatting'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { EmployeeOnboardingStatus } from '@/shared/constants'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { removeNonDigits } from '@/helpers/formattedStrings'\n\nexport type { EmployeeDetailsOptionalFieldsToRequire } from './employeeDetailsSchema'\n\n/** @internal */\nfunction buildEmployeeDetailsFieldsMetadata(\n base: Record<keyof EmployeeDetailsFormData, FieldMetadata>,\n) {\n return {\n firstName: base.firstName,\n middleInitial: base.middleInitial,\n lastName: base.lastName,\n email: base.email,\n dateOfBirth: base.dateOfBirth,\n ssn: base.ssn,\n selfOnboarding: base.selfOnboarding,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional callbacks passed to {@link UseEmployeeDetailsFormReady.actions.onSubmit | onSubmit}.\n *\n * @remarks\n * Only the callback matching the submit mode fires —\n * `onEmployeeCreated` on create, `onEmployeeUpdated` on update.\n * `onOnboardingStatusUpdated` fires when toggling the self-onboarding\n * switch changes the employee's onboarding status as part of an update.\n *\n * @public\n * @group Utility types\n */\nexport interface EmployeeDetailsSubmitCallbacks {\n /** Fired after a new employee is successfully created. */\n onEmployeeCreated?: (employee: Employee) => void\n /** Fired after an existing employee is successfully updated. */\n onEmployeeUpdated?: (employee: Employee) => void\n /** Fired when an update toggles self-onboarding and the employee's onboarding status changes. */\n onOnboardingStatusUpdated?: (status: unknown) => void\n}\n\n/**\n * Shared options merged into both branches of {@link UseEmployeeDetailsFormProps}.\n *\n * @public\n */\nexport type UseEmployeeDetailsFormSharedProps = {\n /** Whether to expose the self-onboarding toggle as `form.Fields.SelfOnboarding`. Defaults to `true`. */\n withSelfOnboardingField?: boolean\n /** Fields that are optional by default but should be promoted to required for this form instance. */\n optionalFieldsToRequire?: EmployeeDetailsOptionalFieldsToRequire\n /** Initial values applied before any employee data loads. */\n defaultValues?: Partial<EmployeeDetailsFormData>\n /** When validation runs. Forwarded to react-hook-form's `mode`. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Whether react-hook-form should focus the first error on validation failure. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Options for {@link useEmployeeDetailsForm}.\n *\n * @remarks\n * Discriminated by mode: in create mode supply `companyId` and omit\n * `employeeId`; in update mode supply `employeeId` (and optionally\n * `companyId`).\n *\n * @public\n * @group Utility types\n */\nexport type UseEmployeeDetailsFormProps =\n | (UseEmployeeDetailsFormSharedProps & { companyId: string; employeeId?: never })\n | (UseEmployeeDetailsFormSharedProps & { employeeId: string; companyId?: string })\n\n/**\n * The Field components exposed by {@link useEmployeeDetailsForm} as `form.Fields`.\n *\n * @remarks\n * Each entry is a component bound to a specific form field. `SelfOnboarding`\n * may be `undefined` when the field is not toggleable.\n *\n * @public\n */\nexport interface EmployeeDetailsFormFields {\n /** Bound to `firstName`. Text input. */\n FirstName: ComponentType<FirstNameFieldProps>\n /** Bound to `middleInitial`. Text input. */\n MiddleInitial: ComponentType<MiddleInitialFieldProps>\n /** Bound to `lastName`. Text input. */\n LastName: ComponentType<LastNameFieldProps>\n /** Bound to `email`. Text input. */\n Email: ComponentType<EmailFieldProps>\n /** Bound to `dateOfBirth`. Date picker. */\n DateOfBirth: ComponentType<DateOfBirthFieldProps>\n /** Bound to `ssn`. Text input. */\n Ssn: ComponentType<SsnFieldProps>\n /** Bound to `selfOnboarding`. Switch, or `undefined` when the field is not toggleable. */\n SelfOnboarding: ComponentType<SelfOnboardingFieldProps> | undefined\n}\n\n/**\n * The ready-state result returned by {@link useEmployeeDetailsForm} once data has loaded.\n *\n * @remarks\n * Provides the form's `data` snapshot, pending `status`, submit `actions`,\n * error handling, and the `form.Fields` map.\n *\n * @public\n */\nexport interface UseEmployeeDetailsFormReady extends BaseFormHookReady<\n EmployeeDetailsFieldsMetadata,\n EmployeeDetailsFormData,\n EmployeeDetailsFormFields\n> {\n /** The loaded employee data, or `null` in create mode. */\n data: {\n /** The employee being edited, or `null` in create mode. */\n employee: Employee | null\n }\n /** Submit status and form mode. */\n status: {\n /** `true` while the create, update, or onboarding-status mutation is in flight. */\n isPending: boolean\n /** `'create'` when no `employeeId` was supplied, `'update'` otherwise. */\n mode: 'create' | 'update'\n }\n /** Submit and related actions. */\n actions: {\n /** Validates the form and submits the changes. Returns the created or updated employee, or `undefined` when validation fails. */\n onSubmit: (\n callbacks?: EmployeeDetailsSubmitCallbacks,\n ) => Promise<HookSubmitResult<Employee> | undefined>\n }\n}\n\nconst isCurrentlySelfOnboarding = (employee?: Employee) => {\n if (!employee?.onboardingStatus) return false\n const selfOnboardingStatuses: string[] = [\n EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED_STARTED,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED_OVERDUE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_COMPLETED_BY_EMPLOYEE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW,\n ]\n return selfOnboardingStatuses.includes(employee.onboardingStatus)\n}\n\nconst canToggleSelfOnboarding = (employee?: Employee) => {\n if (!employee) return true\n return (\n employee.onboardingStatus === EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE ||\n employee.onboardingStatus === EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n )\n}\n\n/**\n * Headless hook for creating or updating an employee's profile details — name, email, SSN, date of birth, and self-onboarding preference.\n *\n * @remarks\n * Returns a discriminated union: a loading variant while the underlying\n * employee fetch resolves, and a ready variant exposing the form's data,\n * pending status, submit action, error handling, and bound `Fields`.\n * Self-onboarding is only toggleable when the employee's onboarding status\n * allows it; otherwise `form.Fields.SelfOnboarding` is `undefined`.\n *\n * @param input - See {@link UseEmployeeDetailsFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseEmployeeDetailsFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useEmployeeDetailsForm,\n * SDKFormProvider,\n * type UseEmployeeDetailsFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function EmployeeDetailsPage({ companyId, employeeId }: { companyId: string; employeeId?: string }) {\n * const employeeDetails = useEmployeeDetailsForm({ companyId, employeeId })\n *\n * if (employeeDetails.isLoading) return <div>Loading...</div>\n *\n * return <EmployeeDetailsReady employeeDetails={employeeDetails} />\n * }\n *\n * function EmployeeDetailsReady({ employeeDetails }: { employeeDetails: UseEmployeeDetailsFormReady }) {\n * const { Fields } = employeeDetails.form\n *\n * const handleSubmit = async () => {\n * await employeeDetails.actions.onSubmit({\n * onEmployeeCreated: emp => console.log('Created:', emp.uuid),\n * onEmployeeUpdated: emp => console.log('Updated:', emp.uuid),\n * })\n * }\n *\n * return (\n * <SDKFormProvider formHookResult={employeeDetails}>\n * <form onSubmit={e => { e.preventDefault(); void handleSubmit() }}>\n * <Fields.FirstName label=\"First name\" />\n * <Fields.LastName label=\"Last name\" />\n * <Fields.Email label=\"Personal email\" />\n * <Fields.DateOfBirth label=\"Date of birth\" />\n * <Fields.Ssn label=\"Social Security number\" />\n * <button type=\"submit\" disabled={employeeDetails.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useEmployeeDetailsForm({\n companyId,\n employeeId,\n withSelfOnboardingField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseEmployeeDetailsFormProps): HookLoadingResult | UseEmployeeDetailsFormReady {\n const employeeQuery = useEmployeesGet({ employeeId: employeeId ?? '' }, { enabled: !!employeeId })\n\n const employee = employeeQuery.data?.employee\n\n const isCreateMode = !employeeId\n const isSelfOnboardingToggleable = canToggleSelfOnboarding(employee)\n\n const mode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () => createEmployeeDetailsSchema({ mode, optionalFieldsToRequire, hasSsn: employee?.hasSsn }),\n [mode, optionalFieldsToRequire, employee?.hasSsn],\n )\n\n const resolvedDefaults: EmployeeDetailsFormData = {\n firstName: employee?.firstName ?? partnerDefaults?.firstName ?? '',\n middleInitial: employee?.middleInitial ?? partnerDefaults?.middleInitial ?? '',\n lastName: employee?.lastName ?? partnerDefaults?.lastName ?? '',\n email: employee?.email ?? partnerDefaults?.email ?? '',\n dateOfBirth: employee?.dateOfBirth ?? normalizeToISOString(partnerDefaults?.dateOfBirth),\n ssn: partnerDefaults?.ssn ?? '',\n selfOnboarding: partnerDefaults?.selfOnboarding ?? isCurrentlySelfOnboarding(employee),\n }\n\n const formMethods = useForm<EmployeeDetailsFormData, unknown, EmployeeDetailsFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createEmployeeMutation = useEmployeesCreateMutation()\n const updateEmployeeMutation = useEmployeesUpdateMutation()\n const updateOnboardingStatusMutation = useEmployeesUpdateOnboardingStatusMutation()\n\n const isPending =\n createEmployeeMutation.isPending ||\n updateEmployeeMutation.isPending ||\n updateOnboardingStatusMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('EmployeeDetailsForm')\n\n const queries = employeeId ? [employeeQuery] : []\n const errorHandling = composeErrorHandler(queries, { submitError, setSubmitError })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildEmployeeDetailsFieldsMetadata(baseMetadata)\n\n const onSubmit = async (\n callbacks?: EmployeeDetailsSubmitCallbacks,\n ): Promise<HookSubmitResult<Employee> | undefined> => {\n let submitResult: HookSubmitResult<Employee> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: EmployeeDetailsFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const { selfOnboarding, dateOfBirth, ssn, ...body } = payload\n\n const cleanedSsn = ssn ? removeNonDigits(ssn) : undefined\n const hasSsnInput = cleanedSsn && cleanedSsn.length > 0\n\n let updatedEmployee: Employee\n\n if (isCreateMode) {\n if (!companyId) {\n throw new SDKInternalError('companyId is required to create an employee')\n }\n const result = await createEmployeeMutation.mutateAsync({\n request: {\n companyId,\n requestBody: {\n ...body,\n selfOnboarding,\n dateOfBirth: dateOfBirth ? new RFCDate(new Date(dateOfBirth)) : undefined,\n ssn: hasSsnInput ? cleanedSsn : undefined,\n },\n },\n })\n\n if (!result.employee) {\n throw new SDKInternalError('Employee creation failed')\n }\n\n updatedEmployee = result.employee\n callbacks?.onEmployeeCreated?.(updatedEmployee)\n } else {\n if (!employee) {\n throw new SDKInternalError('Employee data is not available')\n }\n\n if (isSelfOnboardingToggleable) {\n const currentIsSelfOnboarding =\n employee.onboardingStatus ===\n EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n\n if (selfOnboarding !== currentIsSelfOnboarding) {\n const { employeeOnboardingStatus } =\n await updateOnboardingStatusMutation.mutateAsync({\n request: {\n employeeId: employee.uuid,\n requestBody: {\n onboardingStatus: selfOnboarding\n ? EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n : EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE,\n },\n },\n })\n\n callbacks?.onOnboardingStatusUpdated?.(employeeOnboardingStatus)\n }\n }\n\n const result = await updateEmployeeMutation.mutateAsync({\n request: {\n employeeId: employee.uuid,\n requestBody: {\n version: employee.version as string,\n ...body,\n dateOfBirth: dateOfBirth || undefined,\n ssn: hasSsnInput ? cleanedSsn : undefined,\n },\n },\n })\n\n if (!result.employee) {\n throw new SDKInternalError('Employee update failed')\n }\n\n updatedEmployee = result.employee\n callbacks?.onEmployeeUpdated?.(updatedEmployee)\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedEmployee,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const isDataLoading = employeeId ? employeeQuery.isLoading : false\n\n if (isDataLoading || (employeeId && !employee)) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n employee: employee ?? null,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n FirstName: FirstNameField,\n MiddleInitial: MiddleInitialField,\n LastName: LastNameField,\n Email: EmailField,\n DateOfBirth: DateOfBirthField,\n Ssn: SsnField,\n SelfOnboarding:\n withSelfOnboardingField && isSelfOnboardingToggleable ? SelfOnboardingField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useEmployeeDetailsForm}.\n *\n * @public\n */\nexport type UseEmployeeDetailsFormResult = HookLoadingResult | UseEmployeeDetailsFormReady\n\n/**\n * Shape of `form.fieldsMetadata` returned by {@link useEmployeeDetailsForm}.\n *\n * @public\n */\nexport type EmployeeDetailsFieldsMetadata = ReturnType<typeof buildEmployeeDetailsFieldsMetadata>\n"],"names":["buildEmployeeDetailsFieldsMetadata","base","isCurrentlySelfOnboarding","employee","EmployeeOnboardingStatus","canToggleSelfOnboarding","useEmployeeDetailsForm","companyId","employeeId","withSelfOnboardingField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","employeeQuery","useEmployeesGet","isCreateMode","isSelfOnboardingToggleable","mode","schema","metadataConfig","useMemo","createEmployeeDetailsSchema","resolvedDefaults","normalizeToISOString","formMethods","useForm","zodResolver","createEmployeeMutation","useEmployeesCreateMutation","updateEmployeeMutation","useEmployeesUpdateMutation","updateOnboardingStatusMutation","useEmployeesUpdateOnboardingStatusMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","callbacks","submitResult","resolve","data","payload","selfOnboarding","dateOfBirth","ssn","body","cleanedSsn","removeNonDigits","hasSsnInput","updatedEmployee","SDKInternalError","result","RFCDate","currentIsSelfOnboarding","employeeOnboardingStatus","hookFormInternals","useHookFormInternals","FirstNameField","MiddleInitialField","LastNameField","EmailField","DateOfBirthField","SsnField","SelfOnboardingField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useEmployeeDetailsForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport { useEmployeesGet } from '@gusto/embedded-api/react-query/employeesGet'\nimport { useEmployeesCreateMutation } from '@gusto/embedded-api/react-query/employeesCreate'\nimport { useEmployeesUpdateMutation } from '@gusto/embedded-api/react-query/employeesUpdate'\nimport { useEmployeesUpdateOnboardingStatusMutation } from '@gusto/embedded-api/react-query/employeesUpdateOnboardingStatus'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport {\n createEmployeeDetailsSchema,\n type EmployeeDetailsOptionalFieldsToRequire,\n type EmployeeDetailsFormData,\n type EmployeeDetailsFormOutputs,\n} from './employeeDetailsSchema'\nimport {\n FirstNameField,\n MiddleInitialField,\n LastNameField,\n EmailField,\n DateOfBirthField,\n SsnField,\n SelfOnboardingField,\n} from './fields'\nimport type {\n FirstNameFieldProps,\n MiddleInitialFieldProps,\n LastNameFieldProps,\n EmailFieldProps,\n DateOfBirthFieldProps,\n SsnFieldProps,\n SelfOnboardingFieldProps,\n} from './fields'\nimport { normalizeToISOString } from '@/helpers/dateFormatting'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { EmployeeOnboardingStatus } from '@/shared/constants'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { removeNonDigits } from '@/helpers/formattedStrings'\n\nexport type { EmployeeDetailsOptionalFieldsToRequire } from './employeeDetailsSchema'\n\n/** @internal */\nfunction buildEmployeeDetailsFieldsMetadata(\n base: Record<keyof EmployeeDetailsFormData, FieldMetadata>,\n) {\n return {\n firstName: base.firstName,\n middleInitial: base.middleInitial,\n lastName: base.lastName,\n email: base.email,\n dateOfBirth: base.dateOfBirth,\n ssn: base.ssn,\n selfOnboarding: base.selfOnboarding,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional callbacks passed to {@link UseEmployeeDetailsFormReady.actions.onSubmit | onSubmit}.\n *\n * @remarks\n * Only the callback matching the submit mode fires —\n * `onEmployeeCreated` on create, `onEmployeeUpdated` on update.\n * `onOnboardingStatusUpdated` fires when toggling the self-onboarding\n * switch changes the employee's onboarding status as part of an update.\n *\n * @public\n * @group Utility types\n */\nexport interface EmployeeDetailsSubmitCallbacks {\n /** Fired after a new employee is successfully created. */\n onEmployeeCreated?: (employee: Employee) => void\n /** Fired after an existing employee is successfully updated. */\n onEmployeeUpdated?: (employee: Employee) => void\n /** Fired when an update toggles self-onboarding and the employee's onboarding status changes. */\n onOnboardingStatusUpdated?: (status: unknown) => void\n}\n\n/**\n * Shared options merged into both branches of {@link UseEmployeeDetailsFormProps}.\n *\n * @public\n */\nexport type UseEmployeeDetailsFormSharedProps = {\n /** Whether to expose the self-onboarding toggle as `form.Fields.SelfOnboarding`. Defaults to `true`. */\n withSelfOnboardingField?: boolean\n /** Fields that are optional by default but should be promoted to required for this form instance. */\n optionalFieldsToRequire?: EmployeeDetailsOptionalFieldsToRequire\n /** Initial values applied before any employee data loads. */\n defaultValues?: Partial<EmployeeDetailsFormData>\n /** When validation runs. Forwarded to react-hook-form's `mode`. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Whether react-hook-form should focus the first error on validation failure. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Options for {@link useEmployeeDetailsForm}.\n *\n * @remarks\n * Discriminated by mode: in create mode supply `companyId` and omit\n * `employeeId`; in update mode supply `employeeId` (and optionally\n * `companyId`).\n *\n * @public\n * @group Utility types\n */\nexport type UseEmployeeDetailsFormProps =\n | (UseEmployeeDetailsFormSharedProps & { companyId: string; employeeId?: never })\n | (UseEmployeeDetailsFormSharedProps & { employeeId: string; companyId?: string })\n\n/**\n * The Field components exposed by {@link useEmployeeDetailsForm} as `form.Fields`.\n *\n * @remarks\n * Each entry is a component bound to a specific form field. `SelfOnboarding`\n * may be `undefined` when the field is not toggleable.\n *\n * @public\n */\nexport interface EmployeeDetailsFormFields {\n /** Bound to `firstName`. Text input. */\n FirstName: ComponentType<FirstNameFieldProps>\n /** Bound to `middleInitial`. Text input. */\n MiddleInitial: ComponentType<MiddleInitialFieldProps>\n /** Bound to `lastName`. Text input. */\n LastName: ComponentType<LastNameFieldProps>\n /** Bound to `email`. Text input. */\n Email: ComponentType<EmailFieldProps>\n /** Bound to `dateOfBirth`. Date picker. */\n DateOfBirth: ComponentType<DateOfBirthFieldProps>\n /** Bound to `ssn`. Text input. */\n Ssn: ComponentType<SsnFieldProps>\n /** Bound to `selfOnboarding`. Switch, or `undefined` when the field is not toggleable. */\n SelfOnboarding: ComponentType<SelfOnboardingFieldProps> | undefined\n}\n\n/**\n * The ready-state result returned by {@link useEmployeeDetailsForm} once data has loaded.\n *\n * @remarks\n * Provides the form's `data` snapshot, pending `status`, submit `actions`,\n * error handling, and the `form.Fields` map.\n *\n * @public\n */\nexport interface UseEmployeeDetailsFormReady extends BaseFormHookReady<\n EmployeeDetailsFieldsMetadata,\n EmployeeDetailsFormData,\n EmployeeDetailsFormFields\n> {\n /** The loaded employee data, or `null` in create mode. */\n data: {\n /** The employee being edited, or `null` in create mode. */\n employee: Employee | null\n }\n /** Submit status and form mode. */\n status: {\n /** `true` while the create, update, or onboarding-status mutation is in flight. */\n isPending: boolean\n /** `'create'` when no `employeeId` was supplied, `'update'` otherwise. */\n mode: 'create' | 'update'\n }\n /** Submit and related actions. */\n actions: {\n /** Validates the form and submits the changes. Returns the created or updated employee, or `undefined` when validation fails. */\n onSubmit: (\n callbacks?: EmployeeDetailsSubmitCallbacks,\n ) => Promise<HookSubmitResult<Employee> | undefined>\n }\n}\n\nconst isCurrentlySelfOnboarding = (employee?: Employee) => {\n if (!employee?.onboardingStatus) return false\n const selfOnboardingStatuses: string[] = [\n EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED_STARTED,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED_OVERDUE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_COMPLETED_BY_EMPLOYEE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW,\n ]\n return selfOnboardingStatuses.includes(employee.onboardingStatus)\n}\n\nconst canToggleSelfOnboarding = (employee?: Employee) => {\n if (!employee) return true\n return (\n employee.onboardingStatus === EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE ||\n employee.onboardingStatus === EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n )\n}\n\n/**\n * Headless hook for creating or updating an employee's profile details — name, email, SSN, date of birth, and self-onboarding preference.\n *\n * @remarks\n * Returns a discriminated union: a loading variant while the underlying\n * employee fetch resolves, and a ready variant exposing the form's data,\n * pending status, submit action, error handling, and bound `Fields`.\n * Self-onboarding is only toggleable when the employee's onboarding status\n * allows it; otherwise `form.Fields.SelfOnboarding` is `undefined`.\n *\n * @param input - See {@link UseEmployeeDetailsFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseEmployeeDetailsFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useEmployeeDetailsForm,\n * SDKFormProvider,\n * type UseEmployeeDetailsFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function EmployeeDetailsPage({ companyId, employeeId }: { companyId: string; employeeId?: string }) {\n * const employeeDetails = useEmployeeDetailsForm({ companyId, employeeId })\n *\n * if (employeeDetails.isLoading) return <div>Loading...</div>\n *\n * return <EmployeeDetailsReady employeeDetails={employeeDetails} />\n * }\n *\n * function EmployeeDetailsReady({ employeeDetails }: { employeeDetails: UseEmployeeDetailsFormReady }) {\n * const { Fields } = employeeDetails.form\n *\n * const handleSubmit = async () => {\n * await employeeDetails.actions.onSubmit({\n * onEmployeeCreated: emp => console.log('Created:', emp.uuid),\n * onEmployeeUpdated: emp => console.log('Updated:', emp.uuid),\n * })\n * }\n *\n * return (\n * <SDKFormProvider formHookResult={employeeDetails}>\n * <form onSubmit={e => { e.preventDefault(); void handleSubmit() }}>\n * <Fields.FirstName label=\"First name\" />\n * <Fields.LastName label=\"Last name\" />\n * <Fields.Email label=\"Personal email\" />\n * <Fields.DateOfBirth label=\"Date of birth\" />\n * <Fields.Ssn label=\"Social Security number\" />\n * <button type=\"submit\" disabled={employeeDetails.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useEmployeeDetailsForm({\n companyId,\n employeeId,\n withSelfOnboardingField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseEmployeeDetailsFormProps): HookLoadingResult | UseEmployeeDetailsFormReady {\n const employeeQuery = useEmployeesGet({ employeeId: employeeId ?? '' }, { enabled: !!employeeId })\n\n const employee = employeeQuery.data?.employee\n\n const isCreateMode = !employeeId\n const isSelfOnboardingToggleable = canToggleSelfOnboarding(employee)\n\n const mode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () => createEmployeeDetailsSchema({ mode, optionalFieldsToRequire, hasSsn: employee?.hasSsn }),\n [mode, optionalFieldsToRequire, employee?.hasSsn],\n )\n\n const resolvedDefaults: EmployeeDetailsFormData = {\n firstName: employee?.firstName ?? partnerDefaults?.firstName ?? '',\n middleInitial: employee?.middleInitial ?? partnerDefaults?.middleInitial ?? '',\n lastName: employee?.lastName ?? partnerDefaults?.lastName ?? '',\n email: employee?.email ?? partnerDefaults?.email ?? '',\n dateOfBirth: employee?.dateOfBirth ?? normalizeToISOString(partnerDefaults?.dateOfBirth),\n ssn: partnerDefaults?.ssn ?? '',\n selfOnboarding: partnerDefaults?.selfOnboarding ?? isCurrentlySelfOnboarding(employee),\n }\n\n const formMethods = useForm<EmployeeDetailsFormData, unknown, EmployeeDetailsFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createEmployeeMutation = useEmployeesCreateMutation()\n const updateEmployeeMutation = useEmployeesUpdateMutation()\n const updateOnboardingStatusMutation = useEmployeesUpdateOnboardingStatusMutation()\n\n const isPending =\n createEmployeeMutation.isPending ||\n updateEmployeeMutation.isPending ||\n updateOnboardingStatusMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('EmployeeDetailsForm')\n\n const queries = employeeId ? [employeeQuery] : []\n const errorHandling = composeErrorHandler(queries, { submitError, setSubmitError })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildEmployeeDetailsFieldsMetadata(baseMetadata)\n\n const onSubmit = async (\n callbacks?: EmployeeDetailsSubmitCallbacks,\n ): Promise<HookSubmitResult<Employee> | undefined> => {\n let submitResult: HookSubmitResult<Employee> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: EmployeeDetailsFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const { selfOnboarding, dateOfBirth, ssn, ...body } = payload\n\n const cleanedSsn = ssn ? removeNonDigits(ssn) : undefined\n const hasSsnInput = cleanedSsn && cleanedSsn.length > 0\n\n let updatedEmployee: Employee\n\n if (isCreateMode) {\n if (!companyId) {\n throw new SDKInternalError('companyId is required to create an employee')\n }\n const result = await createEmployeeMutation.mutateAsync({\n request: {\n companyId,\n requestBody: {\n ...body,\n selfOnboarding,\n dateOfBirth: dateOfBirth ? new RFCDate(new Date(dateOfBirth)) : undefined,\n ssn: hasSsnInput ? cleanedSsn : undefined,\n },\n },\n })\n\n if (!result.employee) {\n throw new SDKInternalError('Employee creation failed')\n }\n\n updatedEmployee = result.employee\n callbacks?.onEmployeeCreated?.(updatedEmployee)\n } else {\n if (!employee) {\n throw new SDKInternalError('Employee data is not available')\n }\n\n if (isSelfOnboardingToggleable) {\n const currentIsSelfOnboarding =\n employee.onboardingStatus ===\n EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n\n if (selfOnboarding !== currentIsSelfOnboarding) {\n const { employeeOnboardingStatus } =\n await updateOnboardingStatusMutation.mutateAsync({\n request: {\n employeeId: employee.uuid,\n requestBody: {\n onboardingStatus: selfOnboarding\n ? EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n : EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE,\n },\n },\n })\n\n callbacks?.onOnboardingStatusUpdated?.(employeeOnboardingStatus)\n }\n }\n\n const result = await updateEmployeeMutation.mutateAsync({\n request: {\n employeeId: employee.uuid,\n requestBody: {\n version: employee.version as string,\n ...body,\n dateOfBirth: dateOfBirth || undefined,\n ssn: hasSsnInput ? cleanedSsn : undefined,\n },\n },\n })\n\n if (!result.employee) {\n throw new SDKInternalError('Employee update failed')\n }\n\n updatedEmployee = result.employee\n callbacks?.onEmployeeUpdated?.(updatedEmployee)\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedEmployee,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const isDataLoading = employeeId ? employeeQuery.isLoading : false\n\n if (isDataLoading || (employeeId && !employee)) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n employee: employee ?? null,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n FirstName: FirstNameField,\n MiddleInitial: MiddleInitialField,\n LastName: LastNameField,\n Email: EmailField,\n DateOfBirth: DateOfBirthField,\n Ssn: SsnField,\n SelfOnboarding:\n withSelfOnboardingField && isSelfOnboardingToggleable ? SelfOnboardingField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useEmployeeDetailsForm}.\n *\n * @public\n */\nexport type UseEmployeeDetailsFormResult = HookLoadingResult | UseEmployeeDetailsFormReady\n\n/**\n * Shape of `form.fieldsMetadata` returned by {@link useEmployeeDetailsForm}.\n *\n * @public\n */\nexport type EmployeeDetailsFieldsMetadata = ReturnType<typeof buildEmployeeDetailsFieldsMetadata>\n"],"names":["buildEmployeeDetailsFieldsMetadata","base","isCurrentlySelfOnboarding","employee","EmployeeOnboardingStatus","canToggleSelfOnboarding","useEmployeeDetailsForm","companyId","employeeId","withSelfOnboardingField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","employeeQuery","useEmployeesGet","isCreateMode","isSelfOnboardingToggleable","mode","schema","metadataConfig","useMemo","createEmployeeDetailsSchema","resolvedDefaults","normalizeToISOString","formMethods","useForm","zodResolver","createEmployeeMutation","useEmployeesCreateMutation","updateEmployeeMutation","useEmployeesUpdateMutation","updateOnboardingStatusMutation","useEmployeesUpdateOnboardingStatusMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","callbacks","submitResult","resolve","data","payload","selfOnboarding","dateOfBirth","ssn","body","cleanedSsn","removeNonDigits","hasSsnInput","updatedEmployee","SDKInternalError","result","RFCDate","currentIsSelfOnboarding","employeeOnboardingStatus","hookFormInternals","useHookFormInternals","FirstNameField","MiddleInitialField","LastNameField","EmailField","DateOfBirthField","SsnField","SelfOnboardingField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Employee } from '@gusto/embedded-api
|
|
1
|
+
import { Employee } from '@gusto/embedded-api/models/components/employee';
|
|
2
2
|
import { BaseHookReady, HookLoadingResult } from '../../../../../partner-hook-utils/types';
|
|
3
3
|
/**
|
|
4
4
|
* Options for {@link useEmployeeProfileSummary}.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEmployeesGet as n } from "@gusto/embedded-api
|
|
1
|
+
import { useEmployeesGet as n } from "@gusto/embedded-api/react-query/employeesGet";
|
|
2
2
|
import { composeErrorHandler as t } from "../../../../../partner-hook-utils/composeErrorHandler.js";
|
|
3
3
|
function m({
|
|
4
4
|
employeeId: r
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEmployeeProfileSummary.js","sources":["../../../../../../src/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.tsx"],"sourcesContent":["import { useEmployeesGet } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"useEmployeeProfileSummary.js","sources":["../../../../../../src/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.tsx"],"sourcesContent":["import { useEmployeesGet } from '@gusto/embedded-api/react-query/employeesGet'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/**\n * Options for {@link useEmployeeProfileSummary}.\n *\n * @public\n */\nexport interface UseEmployeeProfileSummaryParams {\n /** The associated employee identifier. */\n employeeId: string\n}\n\ntype UseEmployeeProfileSummaryReady = BaseHookReady<\n { employee: Employee },\n { isFetching: boolean; isPending: boolean }\n>\n\n/**\n * Return type of {@link useEmployeeProfileSummary}.\n *\n * @public\n */\nexport type UseEmployeeProfileSummaryResult = HookLoadingResult | UseEmployeeProfileSummaryReady\n\n/**\n * Read-only data hook for the basic-details Profile card.\n *\n * @remarks\n * Fetches a single employee record scoped to the fields the\n * basic-details surface displays. Pair with {@link useEmployeeDetailsForm}\n * to render an edit form against the same record.\n *\n * @param input - See {@link UseEmployeeProfileSummaryParams}.\n * @returns A {@link HookLoadingResult} while loading, or the ready result with the loaded employee once available.\n * @public\n *\n * @example\n * ```tsx\n * import { useEmployeeProfileSummary } from '@gusto/embedded-react-sdk'\n *\n * function ProfileSummary({ employeeId }: { employeeId: string }) {\n * const summary = useEmployeeProfileSummary({ employeeId })\n *\n * if (summary.isLoading) return <div>Loading...</div>\n *\n * const { employee } = summary.data\n * return <h2>{employee.firstName} {employee.lastName}</h2>\n * }\n * ```\n */\nexport function useEmployeeProfileSummary({\n employeeId,\n}: UseEmployeeProfileSummaryParams): UseEmployeeProfileSummaryResult {\n const employeeQuery = useEmployeesGet({ employeeId }, { staleTime: Infinity })\n\n const errorHandling = composeErrorHandler([employeeQuery])\n\n const employee = employeeQuery.data?.employee\n\n if (employeeQuery.isLoading || !employee) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { employee },\n status: {\n isFetching: employeeQuery.isFetching,\n isPending: false,\n },\n errorHandling,\n }\n}\n"],"names":["useEmployeeProfileSummary","employeeId","employeeQuery","useEmployeesGet","errorHandling","composeErrorHandler","employee"],"mappings":";;AAqDO,SAASA,EAA0B;AAAA,EACxC,YAAAC;AACF,GAAqE;AACnE,QAAMC,IAAgBC,EAAgB,EAAE,YAAAF,EAAA,GAAc,EAAE,WAAW,OAAU,GAEvEG,IAAgBC,EAAoB,CAACH,CAAa,CAAC,GAEnDI,IAAWJ,EAAc,MAAM;AAErC,SAAIA,EAAc,aAAa,CAACI,IACvB,EAAE,WAAW,IAAM,eAAAF,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,UAAAE,EAAA;AAAA,IACR,QAAQ;AAAA,MACN,YAAYJ,EAAc;AAAA,MAC1B,WAAW;AAAA,IAAA;AAAA,IAEb,eAAAE;AAAA,EAAA;AAEJ;"}
|
|
@@ -22,7 +22,7 @@ export type HomeAddressErrorCode = (typeof HomeAddressErrorCodes)[keyof typeof H
|
|
|
22
22
|
*
|
|
23
23
|
* @public
|
|
24
24
|
*/
|
|
25
|
-
export type HomeAddressField = "
|
|
25
|
+
export type HomeAddressField = "city" | "courtesyWithholding" | "effectiveDate" | "state" | "street1" | "street2" | "zip";
|
|
26
26
|
/**
|
|
27
27
|
* Shape of the values managed by the home address form.
|
|
28
28
|
*
|
package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEmployeeAddressesGet as a } from "@gusto/embedded-api
|
|
1
|
+
import { useEmployeeAddressesGet as a } from "@gusto/embedded-api/react-query/employeeAddressesGet";
|
|
2
2
|
import { useHomeAddressForm as m } from "./useHomeAddressForm.js";
|
|
3
3
|
import { composeErrorHandler as n } from "../../../../../partner-hook-utils/composeErrorHandler.js";
|
|
4
4
|
function p(i) {
|
package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentHomeAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.tsx"],"sourcesContent":["import { useEmployeeAddressesGet } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"useCurrentHomeAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.tsx"],"sourcesContent":["import { useEmployeeAddressesGet } from '@gusto/embedded-api/react-query/employeeAddressesGet'\nimport { useHomeAddressForm } from './useHomeAddressForm'\nimport type { UseHomeAddressFormProps, UseHomeAddressFormResult } from './useHomeAddressForm'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\n\n/**\n * Options for {@link useCurrentHomeAddressForm}.\n *\n * @remarks\n * Same shape as {@link UseHomeAddressFormProps} minus `homeAddressUuid` —\n * the hook resolves the current home address itself.\n *\n * @public\n */\nexport type UseCurrentHomeAddressFormProps = Omit<UseHomeAddressFormProps, 'homeAddressUuid'>\n\n/**\n * Convenience wrapper around {@link useHomeAddressForm} that auto-resolves the employee's current home address.\n *\n * @remarks\n * Lists the employee's home addresses and selects the active one (or the\n * first when none are active) as the row to edit. When the employee has no\n * home address on file the hook operates in create mode. The returned\n * shape is identical to {@link useHomeAddressForm}, so the same `Fields`,\n * `actions.onSubmit`, and `errorHandling` apply.\n *\n * @param props - See {@link UseCurrentHomeAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseHomeAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useCurrentHomeAddressForm } from '@gusto/embedded-react-sdk'\n *\n * function HomeAddressEditor({ employeeId }: { employeeId: string }) {\n * const homeAddress = useCurrentHomeAddressForm({ employeeId })\n *\n * if (homeAddress.isLoading) return <div>Loading...</div>\n *\n * const { Fields } = homeAddress.form\n * return (\n * <form onSubmit={e => { e.preventDefault(); void homeAddress.actions.onSubmit() }}>\n * <Fields.Street1 label=\"Street\" />\n * <Fields.City label=\"City\" />\n * <Fields.State label=\"State\" />\n * <Fields.Zip label=\"ZIP\" />\n * <button type=\"submit\">Save</button>\n * </form>\n * )\n * }\n * ```\n */\nexport function useCurrentHomeAddressForm(\n props: UseCurrentHomeAddressFormProps,\n): UseHomeAddressFormResult {\n const { employeeId, ...rest } = props\n\n const listQuery = useEmployeeAddressesGet({ employeeId }, { enabled: !!employeeId })\n\n const homeAddresses = listQuery.data?.employeeAddressList\n const currentHomeAddress = homeAddresses?.find(a => a.active) ?? homeAddresses?.[0]\n\n const base = useHomeAddressForm({\n ...rest,\n employeeId,\n homeAddressUuid: currentHomeAddress?.uuid,\n })\n\n const listInitiallyBlocking = listQuery.isLoading && !listQuery.data\n\n if (listInitiallyBlocking) {\n return {\n isLoading: true as const,\n errorHandling: composeErrorHandler([listQuery]),\n }\n }\n\n if (base.isLoading) {\n return {\n ...base,\n errorHandling: composeErrorHandler([listQuery, { errorHandling: base.errorHandling }]),\n }\n }\n\n return {\n ...base,\n errorHandling: composeErrorHandler([listQuery, { errorHandling: base.errorHandling }]),\n }\n}\n"],"names":["useCurrentHomeAddressForm","props","employeeId","rest","listQuery","useEmployeeAddressesGet","homeAddresses","currentHomeAddress","a","base","useHomeAddressForm","composeErrorHandler"],"mappings":";;;AAoDO,SAASA,EACdC,GAC0B;AAC1B,QAAM,EAAE,YAAAC,GAAY,GAAGC,EAAA,IAASF,GAE1BG,IAAYC,EAAwB,EAAE,YAAAH,EAAA,GAAc,EAAE,SAAS,CAAC,CAACA,GAAY,GAE7EI,IAAgBF,EAAU,MAAM,qBAChCG,IAAqBD,GAAe,KAAK,CAAAE,MAAKA,EAAE,MAAM,KAAKF,IAAgB,CAAC,GAE5EG,IAAOC,EAAmB;AAAA,IAC9B,GAAGP;AAAA,IACH,YAAAD;AAAA,IACA,iBAAiBK,GAAoB;AAAA,EAAA,CACtC;AAID,SAF8BH,EAAU,aAAa,CAACA,EAAU,OAGvD;AAAA,IACL,WAAW;AAAA,IACX,eAAeO,EAAoB,CAACP,CAAS,CAAC;AAAA,EAAA,IAI9CK,EAAK,YACA;AAAA,IACL,GAAGA;AAAA,IACH,eAAeE,EAAoB,CAACP,GAAW,EAAE,eAAeK,EAAK,eAAe,CAAC;AAAA,EAAA,IAIlF;AAAA,IACL,GAAGA;AAAA,IACH,eAAeE,EAAoB,CAACP,GAAW,EAAE,eAAeK,EAAK,eAAe,CAAC;AAAA,EAAA;AAEzF;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
2
|
import { UseFormProps } from 'react-hook-form';
|
|
3
|
-
import { EmployeeAddress } from '@gusto/embedded-api
|
|
3
|
+
import { EmployeeAddress } from '@gusto/embedded-api/models/components/employeeaddress';
|
|
4
4
|
import { HomeAddressOptionalFieldsToRequire, HomeAddressFormData } from './homeAddressSchema';
|
|
5
5
|
import { Street1FieldProps, Street2FieldProps, CityFieldProps, StateFieldProps, ZipFieldProps, CourtesyWithholdingFieldProps, EffectiveDateFieldProps } from './fields';
|
|
6
6
|
import { BaseFormHookReady, FieldMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
|
|
@@ -159,4 +159,4 @@ export type UseHomeAddressFormResult = HookLoadingResult | UseHomeAddressFormRea
|
|
|
159
159
|
*
|
|
160
160
|
* @public
|
|
161
161
|
*/
|
|
162
|
-
export type HomeAddressFieldsMetadata = { street1: FieldMetadata; street2: FieldMetadata; city: FieldMetadata; state: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<"
|
|
162
|
+
export type HomeAddressFieldsMetadata = { street1: FieldMetadata; street2: FieldMetadata; city: FieldMetadata; state: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<"AK" | "AL" | "AR" | "AZ" | "CA" | "CO" | "CT" | "DC" | "DE" | "FL" | "GA" | "HI" | "IA" | "ID" | "IL" | "IN" | "KS" | "KY" | "LA" | "MA" | "MD" | "ME" | "MI" | "MN" | "MO" | "MS" | "MT" | "NC" | "ND" | "NE" | "NH" | "NJ" | "NM" | "NV" | "NY" | "OH" | "OK" | "OR" | "PA" | "RI" | "SC" | "SD" | "TN" | "TX" | "UT" | "VA" | "VT" | "WA" | "WI" | "WV" | "WY">; zip: FieldMetadata; courtesyWithholding: FieldMetadata; effectiveDate: FieldMetadata; };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useMemo as w } from "react";
|
|
2
2
|
import { useForm as G } from "react-hook-form";
|
|
3
3
|
import { zodResolver as K } from "@hookform/resolvers/zod";
|
|
4
|
-
import { useEmployeeAddressesRetrieveHomeAddress as Q } from "@gusto/embedded-api
|
|
5
|
-
import { useEmployeeAddressesCreateMutation as T } from "@gusto/embedded-api
|
|
6
|
-
import { useEmployeeAddressesUpdateMutation as _ } from "@gusto/embedded-api
|
|
7
|
-
import { RFCDate as j } from "@gusto/embedded-api
|
|
4
|
+
import { useEmployeeAddressesRetrieveHomeAddress as Q } from "@gusto/embedded-api/react-query/employeeAddressesRetrieveHomeAddress";
|
|
5
|
+
import { useEmployeeAddressesCreateMutation as T } from "@gusto/embedded-api/react-query/employeeAddressesCreate";
|
|
6
|
+
import { useEmployeeAddressesUpdateMutation as _ } from "@gusto/embedded-api/react-query/employeeAddressesUpdate";
|
|
7
|
+
import { RFCDate as j } from "@gusto/embedded-api/types/rfcdate";
|
|
8
8
|
import { createHomeAddressSchema as J } from "./homeAddressSchema.js";
|
|
9
9
|
import { EffectiveDateField as N, CourtesyWithholdingField as X, ZipField as Y, StateField as $, CityField as U, Street2Field as ee, Street1Field as te } from "./fields.js";
|
|
10
10
|
import { useDeriveFieldsMetadata as re } from "../../../../../partner-hook-utils/form/useDeriveFieldsMetadata.js";
|
package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHomeAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeeAddress } from '@gusto/embedded-api-v-2026-02-01/models/components/employeeaddress'\nimport { useEmployeeAddressesRetrieveHomeAddress } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesRetrieveHomeAddress'\nimport { useEmployeeAddressesCreateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesCreate'\nimport { useEmployeeAddressesUpdateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesUpdate'\nimport { RFCDate } from '@gusto/embedded-api-v-2026-02-01/types/rfcdate'\nimport {\n createHomeAddressSchema,\n type HomeAddressOptionalFieldsToRequire,\n type HomeAddressFormData,\n type HomeAddressFormOutputs,\n} from './homeAddressSchema'\nimport type {\n Street1FieldProps,\n Street2FieldProps,\n CityFieldProps,\n StateFieldProps,\n ZipFieldProps,\n CourtesyWithholdingFieldProps,\n EffectiveDateFieldProps,\n} from './fields'\nimport {\n Street1Field,\n Street2Field,\n CityField,\n StateField,\n ZipField,\n CourtesyWithholdingField,\n EffectiveDateField,\n} from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { STATES_ABBR } from '@/shared/constants'\n\nexport type { HomeAddressOptionalFieldsToRequire } from './homeAddressSchema'\n\n/** @internal */\nfunction buildHomeAddressFieldsMetadata(\n base: Record<keyof HomeAddressFormData, FieldMetadata>,\n { stateOptions }: { stateOptions: Array<{ label: string; value: string }> },\n) {\n return {\n street1: base.street1,\n street2: base.street2,\n city: base.city,\n state: withOptions(base.state, stateOptions, STATES_ABBR),\n zip: base.zip,\n courtesyWithholding: base.courtesyWithholding,\n effectiveDate: base.effectiveDate,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional overrides passed to {@link UseHomeAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @public\n */\nexport interface HomeAddressSubmitOptions {\n /** Override the employee identifier supplied to the hook (e.g. after creating a new employee in the same flow). */\n employeeId?: string\n /** Override the effective date submitted with the address. When omitted on update without an effective-date field, the row's `effectiveDate` from the fetched address is used. */\n effectiveDate?: string\n}\n\n/**\n * Configuration options for {@link useHomeAddressForm}.\n *\n * @remarks\n * Presence or absence of `homeAddressUuid` selects the API verb — see the\n * `homeAddressUuid` field description.\n *\n * @public\n */\nexport interface UseHomeAddressFormProps {\n /** UUID of the employee whose home address is being created or edited. */\n employeeId: string\n /**\n * When set, loads that home address via GET `/v1/home_addresses/{uuid}` and updates it (PUT).\n * When omitted, the form is in create mode (POST).\n */\n homeAddressUuid?: string\n /**\n * Pre-loaded address matching `homeAddressUuid`. When supplied, the form uses it directly\n * instead of issuing a GET — useful when the parent already has the row from a list query.\n */\n initialAddress?: EmployeeAddress\n /** When `true`, renders `Fields.EffectiveDate`; otherwise it is `undefined`. Defaults to `true`. */\n withEffectiveDateField?: boolean\n /** Override fields that are optional on a given mode to be required. See `HomeAddressOptionalFieldsToRequire`. */\n optionalFieldsToRequire?: HomeAddressOptionalFieldsToRequire\n /** Pre-fill form values. Server data takes precedence on update. */\n defaultValues?: Partial<HomeAddressFormData>\n /** Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler` so submit-time focus is coordinated across multiple forms. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Pre-bound field components exposed on `useHomeAddressForm().form.Fields`.\n *\n * @remarks\n * `EffectiveDate` is `undefined` when `withEffectiveDateField` is `false`.\n * Always null-check it before rendering.\n *\n * @public\n */\nexport interface HomeAddressFormFields {\n /** Bound to `street1`. Street address line 1 text input. Always available. */\n Street1: ComponentType<Street1FieldProps>\n /** Bound to `street2`. Street address line 2 text input. Always available. */\n Street2: ComponentType<Street2FieldProps>\n /** Bound to `city`. City text input. Always available. */\n City: ComponentType<CityFieldProps>\n /** Bound to `state`. State selector. Always available. */\n State: ComponentType<StateFieldProps>\n /** Bound to `zip`. ZIP code text input. Always available. */\n Zip: ComponentType<ZipFieldProps>\n /** Bound to `courtesyWithholding`. Courtesy withholding checkbox. Always available. */\n CourtesyWithholding: ComponentType<CourtesyWithholdingFieldProps>\n /** Bound to `effectiveDate`. Effective-date picker. Only available when `withEffectiveDateField` is `true`. */\n EffectiveDate: ComponentType<EffectiveDateFieldProps> | undefined\n}\n\n/**\n * Ready-state shape returned by {@link useHomeAddressForm} once data has loaded.\n *\n * @remarks\n * Discriminated by `isLoading: false`. Extends {@link BaseFormHookReady} with\n * the home-address-specific `data`, `status`, `actions`, and `form.Fields` shape.\n *\n * @public\n */\nexport interface UseHomeAddressFormReady extends BaseFormHookReady<\n HomeAddressFieldsMetadata,\n HomeAddressFormData,\n HomeAddressFormFields\n> {\n /** Static entity data resolved from the API. */\n data: {\n /** The address row loaded for update; `null` in create mode. */\n homeAddress: EmployeeAddress | null\n }\n /** Reactive status flags. */\n status: { isPending: boolean; mode: 'create' | 'update' }\n /** Available actions. */\n actions: {\n onSubmit: (\n options?: HomeAddressSubmitOptions,\n ) => Promise<HookSubmitResult<EmployeeAddress> | undefined>\n }\n}\n\n/**\n * Form hook for creating or editing an employee's home address.\n *\n * @remarks\n * When `homeAddressUuid` is supplied the hook loads that address and issues a PUT on submit;\n * when omitted it operates in create mode and issues a POST. Pass `initialAddress` to\n * skip the fetch when the parent already holds the row.\n *\n * @param props - See {@link UseHomeAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseHomeAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useHomeAddressForm,\n * SDKFormProvider,\n * type UseHomeAddressFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function HomeAddressPage({ employeeId }: { employeeId: string }) {\n * const homeAddress = useHomeAddressForm({ employeeId })\n *\n * if (homeAddress.isLoading) return <div>Loading...</div>\n *\n * return <HomeAddressReady homeAddress={homeAddress} />\n * }\n *\n * function HomeAddressReady({ homeAddress }: { homeAddress: UseHomeAddressFormReady }) {\n * const { Fields } = homeAddress.form\n *\n * return (\n * <SDKFormProvider formHookResult={homeAddress}>\n * <form onSubmit={e => { e.preventDefault(); void homeAddress.actions.onSubmit() }}>\n * <Fields.Street1 label=\"Street address\" />\n * <Fields.Street2 label=\"Apt, suite, etc. (optional)\" />\n * <Fields.City label=\"City\" />\n * <Fields.State label=\"State\" />\n * <Fields.Zip label=\"ZIP code\" />\n * <Fields.CourtesyWithholding label=\"Courtesy withholding\" />\n * {Fields.EffectiveDate && <Fields.EffectiveDate label=\"Effective date\" />}\n * <button type=\"submit\" disabled={homeAddress.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useHomeAddressForm({\n employeeId,\n homeAddressUuid,\n initialAddress,\n withEffectiveDateField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseHomeAddressFormProps): HookLoadingResult | UseHomeAddressFormReady {\n const hasInitialAddressMatch = !!homeAddressUuid && initialAddress?.uuid === homeAddressUuid\n\n const retrieveHomeAddressQuery = useEmployeeAddressesRetrieveHomeAddress(\n { homeAddressUuid: homeAddressUuid ?? '' },\n { enabled: !!homeAddressUuid && !hasInitialAddressMatch },\n )\n\n const isCreateMode = !homeAddressUuid\n\n const fetchedHomeAddress = homeAddressUuid\n ? hasInitialAddressMatch\n ? initialAddress\n : retrieveHomeAddressQuery.data?.employeeAddress\n : undefined\n\n const schemaMode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () =>\n createHomeAddressSchema({\n mode: schemaMode,\n optionalFieldsToRequire,\n withEffectiveDateField,\n }),\n [schemaMode, optionalFieldsToRequire, withEffectiveDateField],\n )\n\n const resolvedDefaults: HomeAddressFormData = useMemo(\n () => ({\n street1: fetchedHomeAddress?.street1 ?? partnerDefaults?.street1 ?? '',\n street2: fetchedHomeAddress?.street2 ?? partnerDefaults?.street2 ?? '',\n city: fetchedHomeAddress?.city ?? partnerDefaults?.city ?? '',\n state: fetchedHomeAddress?.state ?? partnerDefaults?.state ?? '',\n zip: fetchedHomeAddress?.zip ?? partnerDefaults?.zip ?? '',\n courtesyWithholding:\n fetchedHomeAddress?.courtesyWithholding ?? partnerDefaults?.courtesyWithholding ?? false,\n effectiveDate:\n fetchedHomeAddress?.effectiveDate?.toString() ?? partnerDefaults?.effectiveDate ?? '',\n }),\n [fetchedHomeAddress, partnerDefaults],\n )\n\n const formMethods = useForm<HomeAddressFormData, unknown, HomeAddressFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createHomeAddressMutation = useEmployeeAddressesCreateMutation()\n const updateHomeAddressMutation = useEmployeeAddressesUpdateMutation()\n\n const isPending = createHomeAddressMutation.isPending || updateHomeAddressMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('HomeAddressForm')\n\n const queriesForErrors = homeAddressUuid ? [retrieveHomeAddressQuery] : []\n const errorHandling = composeErrorHandler(queriesForErrors, { submitError, setSubmitError })\n\n const stateOptions = STATES_ABBR.map(abbr => ({\n value: abbr,\n label: abbr,\n }))\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildHomeAddressFieldsMetadata(baseMetadata, { stateOptions })\n\n const onSubmit = async (\n options?: HomeAddressSubmitOptions,\n ): Promise<HookSubmitResult<EmployeeAddress> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeAddress> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: HomeAddressFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedEmployeeId = options?.employeeId ?? employeeId\n\n const resolvedEffectiveDate =\n withEffectiveDateField && payload.effectiveDate\n ? payload.effectiveDate\n : (options?.effectiveDate ??\n (!withEffectiveDateField && !isCreateMode\n ? fetchedHomeAddress?.effectiveDate?.toString()\n : undefined))\n\n const effectiveDateParam = resolvedEffectiveDate\n ? new RFCDate(new Date(resolvedEffectiveDate))\n : undefined\n\n let updatedHomeAddress: EmployeeAddress\n\n if (isCreateMode) {\n const result = await createHomeAddressMutation.mutateAsync({\n request: {\n employeeId: resolvedEmployeeId,\n requestBody: {\n street1: payload.street1,\n street2: payload.street2 || undefined,\n city: payload.city,\n state: payload.state,\n zip: payload.zip,\n courtesyWithholding: payload.courtesyWithholding,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeAddress) {\n throw new SDKInternalError('Home address creation failed')\n }\n\n updatedHomeAddress = result.employeeAddress\n } else {\n if (!fetchedHomeAddress || !homeAddressUuid) {\n throw new SDKInternalError(\n 'Cannot update home address: no matching address on file',\n )\n }\n\n const result = await updateHomeAddressMutation.mutateAsync({\n request: {\n homeAddressUuid: fetchedHomeAddress.uuid,\n requestBody: {\n version: fetchedHomeAddress.version,\n street1: payload.street1,\n street2: payload.street2 || undefined,\n city: payload.city,\n state: payload.state,\n zip: payload.zip,\n courtesyWithholding: payload.courtesyWithholding,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeAddress) {\n throw new SDKInternalError('Home address update failed')\n }\n\n updatedHomeAddress = result.employeeAddress\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedHomeAddress,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (homeAddressUuid && !fetchedHomeAddress) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n homeAddress: fetchedHomeAddress ?? null,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Street1: Street1Field,\n Street2: Street2Field,\n City: CityField,\n State: StateField,\n Zip: ZipField,\n CourtesyWithholding: CourtesyWithholdingField,\n EffectiveDate: withEffectiveDateField ? EffectiveDateField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Discriminated union returned by {@link useHomeAddressForm}.\n *\n * @public\n */\nexport type UseHomeAddressFormResult = HookLoadingResult | UseHomeAddressFormReady\n/**\n * Type of `form.fieldsMetadata` returned by {@link useHomeAddressForm}.\n *\n * @public\n */\nexport type HomeAddressFieldsMetadata = ReturnType<typeof buildHomeAddressFieldsMetadata>\n"],"names":["buildHomeAddressFieldsMetadata","base","stateOptions","withOptions","STATES_ABBR","useHomeAddressForm","employeeId","homeAddressUuid","initialAddress","withEffectiveDateField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","hasInitialAddressMatch","retrieveHomeAddressQuery","useEmployeeAddressesRetrieveHomeAddress","isCreateMode","fetchedHomeAddress","schemaMode","schema","metadataConfig","useMemo","createHomeAddressSchema","resolvedDefaults","formMethods","useForm","zodResolver","createHomeAddressMutation","useEmployeeAddressesCreateMutation","updateHomeAddressMutation","useEmployeeAddressesUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","abbr","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","options","submitResult","resolve","data","payload","resolvedEmployeeId","resolvedEffectiveDate","effectiveDateParam","RFCDate","updatedHomeAddress","result","SDKInternalError","hookFormInternals","useHookFormInternals","Street1Field","Street2Field","CityField","StateField","ZipField","CourtesyWithholdingField","EffectiveDateField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useHomeAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeeAddress } from '@gusto/embedded-api/models/components/employeeaddress'\nimport { useEmployeeAddressesRetrieveHomeAddress } from '@gusto/embedded-api/react-query/employeeAddressesRetrieveHomeAddress'\nimport { useEmployeeAddressesCreateMutation } from '@gusto/embedded-api/react-query/employeeAddressesCreate'\nimport { useEmployeeAddressesUpdateMutation } from '@gusto/embedded-api/react-query/employeeAddressesUpdate'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport {\n createHomeAddressSchema,\n type HomeAddressOptionalFieldsToRequire,\n type HomeAddressFormData,\n type HomeAddressFormOutputs,\n} from './homeAddressSchema'\nimport type {\n Street1FieldProps,\n Street2FieldProps,\n CityFieldProps,\n StateFieldProps,\n ZipFieldProps,\n CourtesyWithholdingFieldProps,\n EffectiveDateFieldProps,\n} from './fields'\nimport {\n Street1Field,\n Street2Field,\n CityField,\n StateField,\n ZipField,\n CourtesyWithholdingField,\n EffectiveDateField,\n} from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { STATES_ABBR } from '@/shared/constants'\n\nexport type { HomeAddressOptionalFieldsToRequire } from './homeAddressSchema'\n\n/** @internal */\nfunction buildHomeAddressFieldsMetadata(\n base: Record<keyof HomeAddressFormData, FieldMetadata>,\n { stateOptions }: { stateOptions: Array<{ label: string; value: string }> },\n) {\n return {\n street1: base.street1,\n street2: base.street2,\n city: base.city,\n state: withOptions(base.state, stateOptions, STATES_ABBR),\n zip: base.zip,\n courtesyWithholding: base.courtesyWithholding,\n effectiveDate: base.effectiveDate,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional overrides passed to {@link UseHomeAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @public\n */\nexport interface HomeAddressSubmitOptions {\n /** Override the employee identifier supplied to the hook (e.g. after creating a new employee in the same flow). */\n employeeId?: string\n /** Override the effective date submitted with the address. When omitted on update without an effective-date field, the row's `effectiveDate` from the fetched address is used. */\n effectiveDate?: string\n}\n\n/**\n * Configuration options for {@link useHomeAddressForm}.\n *\n * @remarks\n * Presence or absence of `homeAddressUuid` selects the API verb — see the\n * `homeAddressUuid` field description.\n *\n * @public\n */\nexport interface UseHomeAddressFormProps {\n /** UUID of the employee whose home address is being created or edited. */\n employeeId: string\n /**\n * When set, loads that home address via GET `/v1/home_addresses/{uuid}` and updates it (PUT).\n * When omitted, the form is in create mode (POST).\n */\n homeAddressUuid?: string\n /**\n * Pre-loaded address matching `homeAddressUuid`. When supplied, the form uses it directly\n * instead of issuing a GET — useful when the parent already has the row from a list query.\n */\n initialAddress?: EmployeeAddress\n /** When `true`, renders `Fields.EffectiveDate`; otherwise it is `undefined`. Defaults to `true`. */\n withEffectiveDateField?: boolean\n /** Override fields that are optional on a given mode to be required. See `HomeAddressOptionalFieldsToRequire`. */\n optionalFieldsToRequire?: HomeAddressOptionalFieldsToRequire\n /** Pre-fill form values. Server data takes precedence on update. */\n defaultValues?: Partial<HomeAddressFormData>\n /** Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler` so submit-time focus is coordinated across multiple forms. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Pre-bound field components exposed on `useHomeAddressForm().form.Fields`.\n *\n * @remarks\n * `EffectiveDate` is `undefined` when `withEffectiveDateField` is `false`.\n * Always null-check it before rendering.\n *\n * @public\n */\nexport interface HomeAddressFormFields {\n /** Bound to `street1`. Street address line 1 text input. Always available. */\n Street1: ComponentType<Street1FieldProps>\n /** Bound to `street2`. Street address line 2 text input. Always available. */\n Street2: ComponentType<Street2FieldProps>\n /** Bound to `city`. City text input. Always available. */\n City: ComponentType<CityFieldProps>\n /** Bound to `state`. State selector. Always available. */\n State: ComponentType<StateFieldProps>\n /** Bound to `zip`. ZIP code text input. Always available. */\n Zip: ComponentType<ZipFieldProps>\n /** Bound to `courtesyWithholding`. Courtesy withholding checkbox. Always available. */\n CourtesyWithholding: ComponentType<CourtesyWithholdingFieldProps>\n /** Bound to `effectiveDate`. Effective-date picker. Only available when `withEffectiveDateField` is `true`. */\n EffectiveDate: ComponentType<EffectiveDateFieldProps> | undefined\n}\n\n/**\n * Ready-state shape returned by {@link useHomeAddressForm} once data has loaded.\n *\n * @remarks\n * Discriminated by `isLoading: false`. Extends {@link BaseFormHookReady} with\n * the home-address-specific `data`, `status`, `actions`, and `form.Fields` shape.\n *\n * @public\n */\nexport interface UseHomeAddressFormReady extends BaseFormHookReady<\n HomeAddressFieldsMetadata,\n HomeAddressFormData,\n HomeAddressFormFields\n> {\n /** Static entity data resolved from the API. */\n data: {\n /** The address row loaded for update; `null` in create mode. */\n homeAddress: EmployeeAddress | null\n }\n /** Reactive status flags. */\n status: { isPending: boolean; mode: 'create' | 'update' }\n /** Available actions. */\n actions: {\n onSubmit: (\n options?: HomeAddressSubmitOptions,\n ) => Promise<HookSubmitResult<EmployeeAddress> | undefined>\n }\n}\n\n/**\n * Form hook for creating or editing an employee's home address.\n *\n * @remarks\n * When `homeAddressUuid` is supplied the hook loads that address and issues a PUT on submit;\n * when omitted it operates in create mode and issues a POST. Pass `initialAddress` to\n * skip the fetch when the parent already holds the row.\n *\n * @param props - See {@link UseHomeAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseHomeAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useHomeAddressForm,\n * SDKFormProvider,\n * type UseHomeAddressFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function HomeAddressPage({ employeeId }: { employeeId: string }) {\n * const homeAddress = useHomeAddressForm({ employeeId })\n *\n * if (homeAddress.isLoading) return <div>Loading...</div>\n *\n * return <HomeAddressReady homeAddress={homeAddress} />\n * }\n *\n * function HomeAddressReady({ homeAddress }: { homeAddress: UseHomeAddressFormReady }) {\n * const { Fields } = homeAddress.form\n *\n * return (\n * <SDKFormProvider formHookResult={homeAddress}>\n * <form onSubmit={e => { e.preventDefault(); void homeAddress.actions.onSubmit() }}>\n * <Fields.Street1 label=\"Street address\" />\n * <Fields.Street2 label=\"Apt, suite, etc. (optional)\" />\n * <Fields.City label=\"City\" />\n * <Fields.State label=\"State\" />\n * <Fields.Zip label=\"ZIP code\" />\n * <Fields.CourtesyWithholding label=\"Courtesy withholding\" />\n * {Fields.EffectiveDate && <Fields.EffectiveDate label=\"Effective date\" />}\n * <button type=\"submit\" disabled={homeAddress.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useHomeAddressForm({\n employeeId,\n homeAddressUuid,\n initialAddress,\n withEffectiveDateField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseHomeAddressFormProps): HookLoadingResult | UseHomeAddressFormReady {\n const hasInitialAddressMatch = !!homeAddressUuid && initialAddress?.uuid === homeAddressUuid\n\n const retrieveHomeAddressQuery = useEmployeeAddressesRetrieveHomeAddress(\n { homeAddressUuid: homeAddressUuid ?? '' },\n { enabled: !!homeAddressUuid && !hasInitialAddressMatch },\n )\n\n const isCreateMode = !homeAddressUuid\n\n const fetchedHomeAddress = homeAddressUuid\n ? hasInitialAddressMatch\n ? initialAddress\n : retrieveHomeAddressQuery.data?.employeeAddress\n : undefined\n\n const schemaMode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () =>\n createHomeAddressSchema({\n mode: schemaMode,\n optionalFieldsToRequire,\n withEffectiveDateField,\n }),\n [schemaMode, optionalFieldsToRequire, withEffectiveDateField],\n )\n\n const resolvedDefaults: HomeAddressFormData = useMemo(\n () => ({\n street1: fetchedHomeAddress?.street1 ?? partnerDefaults?.street1 ?? '',\n street2: fetchedHomeAddress?.street2 ?? partnerDefaults?.street2 ?? '',\n city: fetchedHomeAddress?.city ?? partnerDefaults?.city ?? '',\n state: fetchedHomeAddress?.state ?? partnerDefaults?.state ?? '',\n zip: fetchedHomeAddress?.zip ?? partnerDefaults?.zip ?? '',\n courtesyWithholding:\n fetchedHomeAddress?.courtesyWithholding ?? partnerDefaults?.courtesyWithholding ?? false,\n effectiveDate:\n fetchedHomeAddress?.effectiveDate?.toString() ?? partnerDefaults?.effectiveDate ?? '',\n }),\n [fetchedHomeAddress, partnerDefaults],\n )\n\n const formMethods = useForm<HomeAddressFormData, unknown, HomeAddressFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createHomeAddressMutation = useEmployeeAddressesCreateMutation()\n const updateHomeAddressMutation = useEmployeeAddressesUpdateMutation()\n\n const isPending = createHomeAddressMutation.isPending || updateHomeAddressMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('HomeAddressForm')\n\n const queriesForErrors = homeAddressUuid ? [retrieveHomeAddressQuery] : []\n const errorHandling = composeErrorHandler(queriesForErrors, { submitError, setSubmitError })\n\n const stateOptions = STATES_ABBR.map(abbr => ({\n value: abbr,\n label: abbr,\n }))\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildHomeAddressFieldsMetadata(baseMetadata, { stateOptions })\n\n const onSubmit = async (\n options?: HomeAddressSubmitOptions,\n ): Promise<HookSubmitResult<EmployeeAddress> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeAddress> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: HomeAddressFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedEmployeeId = options?.employeeId ?? employeeId\n\n const resolvedEffectiveDate =\n withEffectiveDateField && payload.effectiveDate\n ? payload.effectiveDate\n : (options?.effectiveDate ??\n (!withEffectiveDateField && !isCreateMode\n ? fetchedHomeAddress?.effectiveDate?.toString()\n : undefined))\n\n const effectiveDateParam = resolvedEffectiveDate\n ? new RFCDate(new Date(resolvedEffectiveDate))\n : undefined\n\n let updatedHomeAddress: EmployeeAddress\n\n if (isCreateMode) {\n const result = await createHomeAddressMutation.mutateAsync({\n request: {\n employeeId: resolvedEmployeeId,\n requestBody: {\n street1: payload.street1,\n street2: payload.street2 || undefined,\n city: payload.city,\n state: payload.state,\n zip: payload.zip,\n courtesyWithholding: payload.courtesyWithholding,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeAddress) {\n throw new SDKInternalError('Home address creation failed')\n }\n\n updatedHomeAddress = result.employeeAddress\n } else {\n if (!fetchedHomeAddress || !homeAddressUuid) {\n throw new SDKInternalError(\n 'Cannot update home address: no matching address on file',\n )\n }\n\n const result = await updateHomeAddressMutation.mutateAsync({\n request: {\n homeAddressUuid: fetchedHomeAddress.uuid,\n requestBody: {\n version: fetchedHomeAddress.version,\n street1: payload.street1,\n street2: payload.street2 || undefined,\n city: payload.city,\n state: payload.state,\n zip: payload.zip,\n courtesyWithholding: payload.courtesyWithholding,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeAddress) {\n throw new SDKInternalError('Home address update failed')\n }\n\n updatedHomeAddress = result.employeeAddress\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedHomeAddress,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (homeAddressUuid && !fetchedHomeAddress) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n homeAddress: fetchedHomeAddress ?? null,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Street1: Street1Field,\n Street2: Street2Field,\n City: CityField,\n State: StateField,\n Zip: ZipField,\n CourtesyWithholding: CourtesyWithholdingField,\n EffectiveDate: withEffectiveDateField ? EffectiveDateField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Discriminated union returned by {@link useHomeAddressForm}.\n *\n * @public\n */\nexport type UseHomeAddressFormResult = HookLoadingResult | UseHomeAddressFormReady\n/**\n * Type of `form.fieldsMetadata` returned by {@link useHomeAddressForm}.\n *\n * @public\n */\nexport type HomeAddressFieldsMetadata = ReturnType<typeof buildHomeAddressFieldsMetadata>\n"],"names":["buildHomeAddressFieldsMetadata","base","stateOptions","withOptions","STATES_ABBR","useHomeAddressForm","employeeId","homeAddressUuid","initialAddress","withEffectiveDateField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","hasInitialAddressMatch","retrieveHomeAddressQuery","useEmployeeAddressesRetrieveHomeAddress","isCreateMode","fetchedHomeAddress","schemaMode","schema","metadataConfig","useMemo","createHomeAddressSchema","resolvedDefaults","formMethods","useForm","zodResolver","createHomeAddressMutation","useEmployeeAddressesCreateMutation","updateHomeAddressMutation","useEmployeeAddressesUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","abbr","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","options","submitResult","resolve","data","payload","resolvedEmployeeId","resolvedEffectiveDate","effectiveDateParam","RFCDate","updatedHomeAddress","result","SDKInternalError","hookFormInternals","useHookFormInternals","Street1Field","Street2Field","CityField","StateField","ZipField","CourtesyWithholdingField","EffectiveDateField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Location } from '@gusto/embedded-api
|
|
1
|
+
import { Location } from '@gusto/embedded-api/models/components/location';
|
|
2
2
|
import { WorkAddressErrorCodes } from './workAddressSchema';
|
|
3
3
|
import { SelectHookFieldProps } from '../../../../../partner-hook-utils/form/fields/SelectHookField';
|
|
4
4
|
import { DatePickerHookFieldProps } from '../../../../../partner-hook-utils/form/fields/DatePickerHookField';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/fields.tsx"],"sourcesContent":["import type { Location } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"fields.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/fields.tsx"],"sourcesContent":["import type { Location } from '@gusto/embedded-api/models/components/location'\nimport type { WorkAddressErrorCodes } from './workAddressSchema'\nimport type { SelectHookFieldProps } from '@/partner-hook-utils/form/fields/SelectHookField'\nimport type { DatePickerHookFieldProps } from '@/partner-hook-utils/form/fields/DatePickerHookField'\nimport { SelectHookField, DatePickerHookField } from '@/partner-hook-utils/form/fields'\nimport type { HookFieldProps } from '@/partner-hook-utils/types'\n\n/**\n * The required-field error code produced by {@link useWorkAddressForm} fields that only emit `REQUIRED`.\n *\n * @remarks\n * Used as the `validationMessages` key for the location and effective date fields.\n * See `WorkAddressErrorCodes`.\n *\n * @public\n */\nexport type RequiredValidation = typeof WorkAddressErrorCodes.REQUIRED\n\n/**\n * Props accepted by {@link useWorkAddressForm}'s `Fields.Location` component.\n *\n * @public\n */\nexport type LocationFieldProps = HookFieldProps<SelectHookFieldProps<RequiredValidation, Location>>\n\n/** @internal */\nexport function LocationField(props: LocationFieldProps) {\n return <SelectHookField {...props} name=\"locationUuid\" />\n}\n\n/**\n * Props accepted by {@link useWorkAddressForm}'s `Fields.EffectiveDate` component.\n *\n * @public\n */\nexport type EffectiveDateFieldProps = HookFieldProps<DatePickerHookFieldProps<RequiredValidation>>\n\n/** @internal */\nexport function EffectiveDateField(props: EffectiveDateFieldProps) {\n return <DatePickerHookField {...props} name=\"effectiveDate\" />\n}\n"],"names":["LocationField","props","jsx","SelectHookField","EffectiveDateField","DatePickerHookField"],"mappings":";;;AA0BO,SAASA,EAAcC,GAA2B;AACvD,SAAO,gBAAAC,EAACC,GAAA,EAAiB,GAAGF,GAAO,MAAK,gBAAe;AACzD;AAUO,SAASG,EAAmBH,GAAgC;AACjE,SAAO,gBAAAC,EAACG,GAAA,EAAqB,GAAGJ,GAAO,MAAK,iBAAgB;AAC9D;"}
|
package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEmployeeAddressesGetWorkAddresses as a } from "@gusto/embedded-api
|
|
1
|
+
import { useEmployeeAddressesGetWorkAddresses as a } from "@gusto/embedded-api/react-query/employeeAddressesGetWorkAddresses";
|
|
2
2
|
import { useWorkAddressForm as u } from "./useWorkAddressForm.js";
|
|
3
3
|
import { composeErrorHandler as s } from "../../../../../partner-hook-utils/composeErrorHandler.js";
|
|
4
4
|
function p(d) {
|
package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentWorkAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.tsx"],"sourcesContent":["import { useEmployeeAddressesGetWorkAddresses } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"useCurrentWorkAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.tsx"],"sourcesContent":["import { useEmployeeAddressesGetWorkAddresses } from '@gusto/embedded-api/react-query/employeeAddressesGetWorkAddresses'\nimport { useWorkAddressForm } from './useWorkAddressForm'\nimport type { UseWorkAddressFormProps, UseWorkAddressFormResult } from './useWorkAddressForm'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\n\n/**\n * Options for {@link useCurrentWorkAddressForm}.\n *\n * @remarks\n * Same shape as {@link UseWorkAddressFormProps} minus `workAddressUuid` —\n * the hook resolves the current work address itself.\n *\n * @public\n */\nexport type UseCurrentWorkAddressFormProps = Omit<UseWorkAddressFormProps, 'workAddressUuid'>\n\n/**\n * Convenience wrapper around {@link useWorkAddressForm} that auto-resolves the employee's current work address.\n *\n * @remarks\n * Lists the employee's work addresses and selects the active one (or the\n * first when none are active) as the row to edit. When the employee has no\n * work address on file the hook operates in create mode. The returned shape\n * is identical to {@link useWorkAddressForm}, so the same `Fields`,\n * `actions.onSubmit`, and `errorHandling` apply.\n *\n * @param props - See {@link UseCurrentWorkAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseWorkAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useCurrentWorkAddressForm } from '@gusto/embedded-react-sdk'\n *\n * function WorkAddressEditor({ employeeId, companyId }: { employeeId: string; companyId: string }) {\n * const workAddress = useCurrentWorkAddressForm({ employeeId, companyId })\n *\n * if (workAddress.isLoading) return <div>Loading...</div>\n *\n * const { Fields } = workAddress.form\n * return (\n * <form onSubmit={e => { e.preventDefault(); void workAddress.actions.onSubmit() }}>\n * <Fields.Location label=\"Work location\" />\n * <button type=\"submit\">Save</button>\n * </form>\n * )\n * }\n * ```\n */\nexport function useCurrentWorkAddressForm(\n props: UseCurrentWorkAddressFormProps,\n): UseWorkAddressFormResult {\n const { employeeId, ...rest } = props\n\n const listQuery = useEmployeeAddressesGetWorkAddresses({ employeeId }, { enabled: !!employeeId })\n\n const workAddresses = listQuery.data?.employeeWorkAddressesList\n const currentWorkAddress = workAddresses?.find(w => w.active) ?? workAddresses?.[0]\n\n const base = useWorkAddressForm({\n ...rest,\n employeeId,\n workAddressUuid: currentWorkAddress?.uuid,\n })\n\n const listInitiallyBlocking = listQuery.isLoading && !listQuery.data\n\n if (listInitiallyBlocking) {\n return {\n isLoading: true as const,\n errorHandling: composeErrorHandler([listQuery]),\n }\n }\n\n if (base.isLoading) {\n return {\n ...base,\n errorHandling: composeErrorHandler([listQuery, { errorHandling: base.errorHandling }]),\n }\n }\n\n return {\n ...base,\n errorHandling: composeErrorHandler([listQuery, { errorHandling: base.errorHandling }]),\n }\n}\n"],"names":["useCurrentWorkAddressForm","props","employeeId","rest","listQuery","useEmployeeAddressesGetWorkAddresses","workAddresses","currentWorkAddress","w","base","useWorkAddressForm","composeErrorHandler"],"mappings":";;;AAiDO,SAASA,EACdC,GAC0B;AAC1B,QAAM,EAAE,YAAAC,GAAY,GAAGC,EAAA,IAASF,GAE1BG,IAAYC,EAAqC,EAAE,YAAAH,EAAA,GAAc,EAAE,SAAS,CAAC,CAACA,GAAY,GAE1FI,IAAgBF,EAAU,MAAM,2BAChCG,IAAqBD,GAAe,KAAK,CAAAE,MAAKA,EAAE,MAAM,KAAKF,IAAgB,CAAC,GAE5EG,IAAOC,EAAmB;AAAA,IAC9B,GAAGP;AAAA,IACH,YAAAD;AAAA,IACA,iBAAiBK,GAAoB;AAAA,EAAA,CACtC;AAID,SAF8BH,EAAU,aAAa,CAACA,EAAU,OAGvD;AAAA,IACL,WAAW;AAAA,IACX,eAAeO,EAAoB,CAACP,CAAS,CAAC;AAAA,EAAA,IAI9CK,EAAK,YACA;AAAA,IACL,GAAGA;AAAA,IACH,eAAeE,EAAoB,CAACP,GAAW,EAAE,eAAeK,EAAK,eAAe,CAAC;AAAA,EAAA,IAIlF;AAAA,IACL,GAAGA;AAAA,IACH,eAAeE,EAAoB,CAACP,GAAW,EAAE,eAAeK,EAAK,eAAe,CAAC;AAAA,EAAA;AAEzF;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
2
|
import { UseFormProps } from 'react-hook-form';
|
|
3
|
-
import { Location } from '@gusto/embedded-api
|
|
4
|
-
import { EmployeeWorkAddress } from '@gusto/embedded-api
|
|
3
|
+
import { Location } from '@gusto/embedded-api/models/components/location';
|
|
4
|
+
import { EmployeeWorkAddress } from '@gusto/embedded-api/models/components/employeeworkaddress';
|
|
5
5
|
import { WorkAddressOptionalFieldsToRequire, WorkAddressFormData } from './workAddressSchema';
|
|
6
6
|
import { LocationFieldProps, EffectiveDateFieldProps } from './fields';
|
|
7
7
|
import { BaseFormHookReady, FieldMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useMemo as C } from "react";
|
|
2
2
|
import { useForm as N } from "react-hook-form";
|
|
3
3
|
import { zodResolver as X } from "@hookform/resolvers/zod";
|
|
4
|
-
import { useLocationsGet as Y } from "@gusto/embedded-api
|
|
5
|
-
import { useEmployeeAddressesRetrieveWorkAddress as Z } from "@gusto/embedded-api
|
|
6
|
-
import { useEmployeeAddressesCreateWorkAddressMutation as _ } from "@gusto/embedded-api
|
|
7
|
-
import { useEmployeeAddressesUpdateWorkAddressMutation as $ } from "@gusto/embedded-api
|
|
8
|
-
import { RFCDate as T } from "@gusto/embedded-api
|
|
4
|
+
import { useLocationsGet as Y } from "@gusto/embedded-api/react-query/locationsGet";
|
|
5
|
+
import { useEmployeeAddressesRetrieveWorkAddress as Z } from "@gusto/embedded-api/react-query/employeeAddressesRetrieveWorkAddress";
|
|
6
|
+
import { useEmployeeAddressesCreateWorkAddressMutation as _ } from "@gusto/embedded-api/react-query/employeeAddressesCreateWorkAddress";
|
|
7
|
+
import { useEmployeeAddressesUpdateWorkAddressMutation as $ } from "@gusto/embedded-api/react-query/employeeAddressesUpdateWorkAddress";
|
|
8
|
+
import { RFCDate as T } from "@gusto/embedded-api/types/rfcdate";
|
|
9
9
|
import { createWorkAddressSchema as ee } from "./workAddressSchema.js";
|
|
10
10
|
import { EffectiveDateField as oe, LocationField as te } from "./fields.js";
|
|
11
11
|
import { useDeriveFieldsMetadata as re } from "../../../../../partner-hook-utils/form/useDeriveFieldsMetadata.js";
|
package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWorkAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Location } from '@gusto/embedded-api-v-2026-02-01/models/components/location'\nimport type { EmployeeWorkAddress } from '@gusto/embedded-api-v-2026-02-01/models/components/employeeworkaddress'\nimport { useLocationsGet } from '@gusto/embedded-api-v-2026-02-01/react-query/locationsGet'\nimport { useEmployeeAddressesRetrieveWorkAddress } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesRetrieveWorkAddress'\nimport { useEmployeeAddressesCreateWorkAddressMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesCreateWorkAddress'\nimport { useEmployeeAddressesUpdateWorkAddressMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesUpdateWorkAddress'\nimport { RFCDate } from '@gusto/embedded-api-v-2026-02-01/types/rfcdate'\nimport {\n createWorkAddressSchema,\n type WorkAddressOptionalFieldsToRequire,\n type WorkAddressFormData,\n type WorkAddressFormOutputs,\n} from './workAddressSchema'\nimport type { LocationFieldProps, EffectiveDateFieldProps } from './fields'\nimport { LocationField, EffectiveDateField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { addressInline } from '@/helpers/formattedStrings'\n\nexport type { WorkAddressOptionalFieldsToRequire } from './workAddressSchema'\n\n/** @internal */\nfunction buildWorkAddressFieldsMetadata(\n base: Record<keyof WorkAddressFormData, FieldMetadata>,\n {\n locationOptions,\n companyLocations,\n }: {\n locationOptions: Array<{ label: string; value: string }>\n companyLocations: Location[]\n },\n) {\n return {\n locationUuid: withOptions<Location>(base.locationUuid, locationOptions, companyLocations),\n effectiveDate: base.effectiveDate,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional callbacks passed to {@link UseWorkAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @remarks\n * Only the callback matching the submit mode fires —\n * `onWorkAddressCreated` on create, `onWorkAddressUpdated` on update.\n *\n * @public\n */\nexport interface WorkAddressSubmitCallbacks {\n /** Fired after a new work address is successfully created. */\n onWorkAddressCreated?: (workAddress: EmployeeWorkAddress) => void\n /** Fired after an existing work address is successfully updated. */\n onWorkAddressUpdated?: (workAddress: EmployeeWorkAddress) => void\n}\n\n/**\n * Optional overrides passed to {@link UseWorkAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @public\n */\nexport interface WorkAddressSubmitOptions {\n /** Override the employee identifier supplied to the hook (e.g. after creating a new employee in the same flow). */\n employeeId?: string\n /** Override the effective date submitted with the address. */\n effectiveDate?: string\n}\n\n/**\n * Configuration options for {@link useWorkAddressForm}.\n *\n * @remarks\n * Presence or absence of `workAddressUuid` selects the API verb — see the\n * `workAddressUuid` field description. `companyId` is required to fetch\n * the location list; pass it when it is known.\n *\n * @public\n */\nexport interface UseWorkAddressFormProps {\n /** Company UUID for locations; omit or leave unset while resolving from the employee record. */\n companyId?: string\n /** UUID of the employee whose work address is being created or edited. */\n employeeId: string\n /**\n * When set, loads that work address via GET `/v1/work_addresses/{work_address_uuid}` and updates it (PUT).\n * When omitted, the form is in create mode (POST).\n */\n workAddressUuid?: string\n /**\n * Pre-loaded address matching `workAddressUuid`. When supplied, the form uses it directly\n * instead of issuing a GET — useful when the parent already has the row from a list query.\n */\n initialAddress?: EmployeeWorkAddress\n /** When `true`, renders `Fields.EffectiveDate`; otherwise it is `undefined`. Defaults to `true`. */\n withEffectiveDateField?: boolean\n /** Override fields that are optional on a given mode to be required. See `WorkAddressOptionalFieldsToRequire`. */\n optionalFieldsToRequire?: WorkAddressOptionalFieldsToRequire\n /** Pre-fill form values. Server data takes precedence on update. */\n defaultValues?: Partial<WorkAddressFormData>\n /** Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler` so submit-time focus is coordinated across multiple forms. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Pre-bound field components exposed on `useWorkAddressForm().form.Fields`.\n *\n * @remarks\n * `EffectiveDate` is `undefined` when `withEffectiveDateField` is `false`.\n * Always null-check it before rendering.\n *\n * @public\n */\nexport interface WorkAddressFormFields {\n /** Bound to `locationUuid`. Location selector. Always available. */\n Location: ComponentType<LocationFieldProps>\n /** Bound to `effectiveDate`. Effective-date picker. Only available when `withEffectiveDateField` is `true`. */\n EffectiveDate: ComponentType<EffectiveDateFieldProps> | undefined\n}\n\n/**\n * Ready-state shape returned by {@link useWorkAddressForm} once data has loaded.\n *\n * @remarks\n * Discriminated by `isLoading: false`. Extends {@link BaseFormHookReady} with\n * the work-address-specific `data`, `status`, `actions`, and `form.Fields` shape.\n *\n * @public\n */\nexport interface UseWorkAddressFormReady extends BaseFormHookReady<\n WorkAddressFieldsMetadata,\n WorkAddressFormData,\n WorkAddressFormFields\n> {\n /** Static entity data resolved from the API. */\n data: {\n /** The address row loaded for update; `null` in create mode. */\n workAddress: EmployeeWorkAddress | null\n /** Company locations available for selection; `undefined` until the locations query resolves. */\n companyLocations: Location[] | undefined\n }\n /** Reactive status flags. */\n status: { isPending: boolean; mode: 'create' | 'update' }\n /** Available actions. */\n actions: {\n onSubmit: (\n callbacks?: WorkAddressSubmitCallbacks,\n options?: WorkAddressSubmitOptions,\n ) => Promise<HookSubmitResult<EmployeeWorkAddress> | undefined>\n }\n}\n\n/**\n * Form hook for creating or editing an employee's work address.\n *\n * @remarks\n * When `workAddressUuid` is supplied the hook loads that address and issues a PUT on submit;\n * when omitted it operates in create mode and issues a POST. The hook requires `companyId`\n * to fetch the company's location list — it stays in loading state until `companyId` is known.\n *\n * @param props - See {@link UseWorkAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseWorkAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useWorkAddressForm,\n * SDKFormProvider,\n * type UseWorkAddressFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function WorkAddressPage({ companyId, employeeId }: { companyId: string; employeeId: string }) {\n * const workAddress = useWorkAddressForm({ companyId, employeeId })\n *\n * if (workAddress.isLoading) return <div>Loading...</div>\n *\n * return <WorkAddressReady workAddress={workAddress} />\n * }\n *\n * function WorkAddressReady({ workAddress }: { workAddress: UseWorkAddressFormReady }) {\n * const { Fields } = workAddress.form\n *\n * return (\n * <SDKFormProvider formHookResult={workAddress}>\n * <form onSubmit={e => { e.preventDefault(); void workAddress.actions.onSubmit() }}>\n * <Fields.Location label=\"Work address\" />\n * {Fields.EffectiveDate && <Fields.EffectiveDate label=\"Effective date\" />}\n * <button type=\"submit\" disabled={workAddress.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useWorkAddressForm({\n companyId,\n employeeId,\n workAddressUuid,\n initialAddress,\n withEffectiveDateField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseWorkAddressFormProps): HookLoadingResult | UseWorkAddressFormReady {\n const locationsQuery = useLocationsGet({ companyId: companyId ?? '' }, { enabled: !!companyId })\n\n const hasInitialAddressMatch = !!workAddressUuid && initialAddress?.uuid === workAddressUuid\n\n const retrieveWorkAddressQuery = useEmployeeAddressesRetrieveWorkAddress(\n { workAddressUuid: workAddressUuid ?? '' },\n { enabled: !!workAddressUuid && !hasInitialAddressMatch },\n )\n\n const companyLocations = locationsQuery.data?.companyLocationsList\n\n const isCreateMode = !workAddressUuid\n\n const fetchedWorkAddress = workAddressUuid\n ? hasInitialAddressMatch\n ? initialAddress\n : retrieveWorkAddressQuery.data?.employeeWorkAddress\n : undefined\n\n const schemaMode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () =>\n createWorkAddressSchema({\n mode: schemaMode,\n optionalFieldsToRequire,\n withEffectiveDateField,\n }),\n [schemaMode, optionalFieldsToRequire, withEffectiveDateField],\n )\n\n const resolvedDefaults: WorkAddressFormData = useMemo(\n () => ({\n locationUuid: fetchedWorkAddress?.locationUuid ?? partnerDefaults?.locationUuid ?? '',\n effectiveDate: fetchedWorkAddress?.effectiveDate ?? partnerDefaults?.effectiveDate ?? '',\n }),\n [fetchedWorkAddress, partnerDefaults],\n )\n\n const formMethods = useForm<WorkAddressFormData, unknown, WorkAddressFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createWorkAddressMutation = useEmployeeAddressesCreateWorkAddressMutation()\n const updateWorkAddressMutation = useEmployeeAddressesUpdateWorkAddressMutation()\n\n const isPending = createWorkAddressMutation.isPending || updateWorkAddressMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('WorkAddressForm')\n\n const queriesForErrors = [locationsQuery, ...(workAddressUuid ? [retrieveWorkAddressQuery] : [])]\n const errorHandling = composeErrorHandler(queriesForErrors, { submitError, setSubmitError })\n\n const locationOptions = (companyLocations ?? []).map(location => ({\n value: location.uuid,\n label: addressInline(location),\n }))\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildWorkAddressFieldsMetadata(baseMetadata, {\n locationOptions,\n companyLocations: companyLocations ?? [],\n })\n\n const onSubmit = async (\n callbacks?: WorkAddressSubmitCallbacks,\n options?: WorkAddressSubmitOptions,\n ): Promise<HookSubmitResult<EmployeeWorkAddress> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeWorkAddress> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: WorkAddressFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedEmployeeId = options?.employeeId ?? employeeId\n\n if (!resolvedEmployeeId) {\n throw new SDKInternalError('employeeId is required to submit work address')\n }\n\n const resolvedEffectiveDate =\n withEffectiveDateField && payload.effectiveDate\n ? payload.effectiveDate\n : options?.effectiveDate\n\n const effectiveDateParam = resolvedEffectiveDate\n ? new RFCDate(new Date(resolvedEffectiveDate))\n : undefined\n\n let updatedWorkAddress: EmployeeWorkAddress\n\n if (isCreateMode) {\n const result = await createWorkAddressMutation.mutateAsync({\n request: {\n employeeId: resolvedEmployeeId,\n requestBody: {\n locationUuid: payload.locationUuid,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeWorkAddress) {\n throw new SDKInternalError('Work address creation failed')\n }\n\n updatedWorkAddress = result.employeeWorkAddress\n callbacks?.onWorkAddressCreated?.(updatedWorkAddress)\n } else {\n if (!fetchedWorkAddress || !workAddressUuid) {\n throw new SDKInternalError(\n 'Cannot update work address: no matching address on file',\n )\n }\n\n const result = await updateWorkAddressMutation.mutateAsync({\n request: {\n workAddressUuid: fetchedWorkAddress.uuid,\n requestBody: {\n version: fetchedWorkAddress.version,\n locationUuid: payload.locationUuid,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeWorkAddress) {\n throw new SDKInternalError('Work address update failed')\n }\n\n updatedWorkAddress = result.employeeWorkAddress\n callbacks?.onWorkAddressUpdated?.(updatedWorkAddress)\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedWorkAddress,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const isDataLoading =\n (!!companyId && locationsQuery.isLoading) ||\n (!!workAddressUuid && retrieveWorkAddressQuery.isLoading)\n\n if (!companyId || isDataLoading || !companyLocations) {\n return { isLoading: true as const, errorHandling }\n }\n\n if (workAddressUuid && !fetchedWorkAddress) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n workAddress: fetchedWorkAddress ?? null,\n companyLocations,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Location: LocationField,\n EffectiveDate: withEffectiveDateField ? EffectiveDateField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Discriminated union returned by {@link useWorkAddressForm}.\n *\n * @public\n */\nexport type UseWorkAddressFormResult = HookLoadingResult | UseWorkAddressFormReady\n/**\n * Type of `form.fieldsMetadata` returned by {@link useWorkAddressForm}.\n *\n * @public\n */\nexport type WorkAddressFieldsMetadata = ReturnType<typeof buildWorkAddressFieldsMetadata>\n"],"names":["buildWorkAddressFieldsMetadata","base","locationOptions","companyLocations","withOptions","useWorkAddressForm","companyId","employeeId","workAddressUuid","initialAddress","withEffectiveDateField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","locationsQuery","useLocationsGet","hasInitialAddressMatch","retrieveWorkAddressQuery","useEmployeeAddressesRetrieveWorkAddress","isCreateMode","fetchedWorkAddress","schemaMode","schema","metadataConfig","useMemo","createWorkAddressSchema","resolvedDefaults","formMethods","useForm","zodResolver","createWorkAddressMutation","useEmployeeAddressesCreateWorkAddressMutation","updateWorkAddressMutation","useEmployeeAddressesUpdateWorkAddressMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","queriesForErrors","errorHandling","composeErrorHandler","location","addressInline","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","callbacks","options","submitResult","resolve","data","payload","resolvedEmployeeId","SDKInternalError","resolvedEffectiveDate","effectiveDateParam","RFCDate","updatedWorkAddress","result","hookFormInternals","useHookFormInternals","isDataLoading","LocationField","EffectiveDateField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useWorkAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Location } from '@gusto/embedded-api/models/components/location'\nimport type { EmployeeWorkAddress } from '@gusto/embedded-api/models/components/employeeworkaddress'\nimport { useLocationsGet } from '@gusto/embedded-api/react-query/locationsGet'\nimport { useEmployeeAddressesRetrieveWorkAddress } from '@gusto/embedded-api/react-query/employeeAddressesRetrieveWorkAddress'\nimport { useEmployeeAddressesCreateWorkAddressMutation } from '@gusto/embedded-api/react-query/employeeAddressesCreateWorkAddress'\nimport { useEmployeeAddressesUpdateWorkAddressMutation } from '@gusto/embedded-api/react-query/employeeAddressesUpdateWorkAddress'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport {\n createWorkAddressSchema,\n type WorkAddressOptionalFieldsToRequire,\n type WorkAddressFormData,\n type WorkAddressFormOutputs,\n} from './workAddressSchema'\nimport type { LocationFieldProps, EffectiveDateFieldProps } from './fields'\nimport { LocationField, EffectiveDateField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { addressInline } from '@/helpers/formattedStrings'\n\nexport type { WorkAddressOptionalFieldsToRequire } from './workAddressSchema'\n\n/** @internal */\nfunction buildWorkAddressFieldsMetadata(\n base: Record<keyof WorkAddressFormData, FieldMetadata>,\n {\n locationOptions,\n companyLocations,\n }: {\n locationOptions: Array<{ label: string; value: string }>\n companyLocations: Location[]\n },\n) {\n return {\n locationUuid: withOptions<Location>(base.locationUuid, locationOptions, companyLocations),\n effectiveDate: base.effectiveDate,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional callbacks passed to {@link UseWorkAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @remarks\n * Only the callback matching the submit mode fires —\n * `onWorkAddressCreated` on create, `onWorkAddressUpdated` on update.\n *\n * @public\n */\nexport interface WorkAddressSubmitCallbacks {\n /** Fired after a new work address is successfully created. */\n onWorkAddressCreated?: (workAddress: EmployeeWorkAddress) => void\n /** Fired after an existing work address is successfully updated. */\n onWorkAddressUpdated?: (workAddress: EmployeeWorkAddress) => void\n}\n\n/**\n * Optional overrides passed to {@link UseWorkAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @public\n */\nexport interface WorkAddressSubmitOptions {\n /** Override the employee identifier supplied to the hook (e.g. after creating a new employee in the same flow). */\n employeeId?: string\n /** Override the effective date submitted with the address. */\n effectiveDate?: string\n}\n\n/**\n * Configuration options for {@link useWorkAddressForm}.\n *\n * @remarks\n * Presence or absence of `workAddressUuid` selects the API verb — see the\n * `workAddressUuid` field description. `companyId` is required to fetch\n * the location list; pass it when it is known.\n *\n * @public\n */\nexport interface UseWorkAddressFormProps {\n /** Company UUID for locations; omit or leave unset while resolving from the employee record. */\n companyId?: string\n /** UUID of the employee whose work address is being created or edited. */\n employeeId: string\n /**\n * When set, loads that work address via GET `/v1/work_addresses/{work_address_uuid}` and updates it (PUT).\n * When omitted, the form is in create mode (POST).\n */\n workAddressUuid?: string\n /**\n * Pre-loaded address matching `workAddressUuid`. When supplied, the form uses it directly\n * instead of issuing a GET — useful when the parent already has the row from a list query.\n */\n initialAddress?: EmployeeWorkAddress\n /** When `true`, renders `Fields.EffectiveDate`; otherwise it is `undefined`. Defaults to `true`. */\n withEffectiveDateField?: boolean\n /** Override fields that are optional on a given mode to be required. See `WorkAddressOptionalFieldsToRequire`. */\n optionalFieldsToRequire?: WorkAddressOptionalFieldsToRequire\n /** Pre-fill form values. Server data takes precedence on update. */\n defaultValues?: Partial<WorkAddressFormData>\n /** Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler` so submit-time focus is coordinated across multiple forms. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Pre-bound field components exposed on `useWorkAddressForm().form.Fields`.\n *\n * @remarks\n * `EffectiveDate` is `undefined` when `withEffectiveDateField` is `false`.\n * Always null-check it before rendering.\n *\n * @public\n */\nexport interface WorkAddressFormFields {\n /** Bound to `locationUuid`. Location selector. Always available. */\n Location: ComponentType<LocationFieldProps>\n /** Bound to `effectiveDate`. Effective-date picker. Only available when `withEffectiveDateField` is `true`. */\n EffectiveDate: ComponentType<EffectiveDateFieldProps> | undefined\n}\n\n/**\n * Ready-state shape returned by {@link useWorkAddressForm} once data has loaded.\n *\n * @remarks\n * Discriminated by `isLoading: false`. Extends {@link BaseFormHookReady} with\n * the work-address-specific `data`, `status`, `actions`, and `form.Fields` shape.\n *\n * @public\n */\nexport interface UseWorkAddressFormReady extends BaseFormHookReady<\n WorkAddressFieldsMetadata,\n WorkAddressFormData,\n WorkAddressFormFields\n> {\n /** Static entity data resolved from the API. */\n data: {\n /** The address row loaded for update; `null` in create mode. */\n workAddress: EmployeeWorkAddress | null\n /** Company locations available for selection; `undefined` until the locations query resolves. */\n companyLocations: Location[] | undefined\n }\n /** Reactive status flags. */\n status: { isPending: boolean; mode: 'create' | 'update' }\n /** Available actions. */\n actions: {\n onSubmit: (\n callbacks?: WorkAddressSubmitCallbacks,\n options?: WorkAddressSubmitOptions,\n ) => Promise<HookSubmitResult<EmployeeWorkAddress> | undefined>\n }\n}\n\n/**\n * Form hook for creating or editing an employee's work address.\n *\n * @remarks\n * When `workAddressUuid` is supplied the hook loads that address and issues a PUT on submit;\n * when omitted it operates in create mode and issues a POST. The hook requires `companyId`\n * to fetch the company's location list — it stays in loading state until `companyId` is known.\n *\n * @param props - See {@link UseWorkAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseWorkAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useWorkAddressForm,\n * SDKFormProvider,\n * type UseWorkAddressFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function WorkAddressPage({ companyId, employeeId }: { companyId: string; employeeId: string }) {\n * const workAddress = useWorkAddressForm({ companyId, employeeId })\n *\n * if (workAddress.isLoading) return <div>Loading...</div>\n *\n * return <WorkAddressReady workAddress={workAddress} />\n * }\n *\n * function WorkAddressReady({ workAddress }: { workAddress: UseWorkAddressFormReady }) {\n * const { Fields } = workAddress.form\n *\n * return (\n * <SDKFormProvider formHookResult={workAddress}>\n * <form onSubmit={e => { e.preventDefault(); void workAddress.actions.onSubmit() }}>\n * <Fields.Location label=\"Work address\" />\n * {Fields.EffectiveDate && <Fields.EffectiveDate label=\"Effective date\" />}\n * <button type=\"submit\" disabled={workAddress.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useWorkAddressForm({\n companyId,\n employeeId,\n workAddressUuid,\n initialAddress,\n withEffectiveDateField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseWorkAddressFormProps): HookLoadingResult | UseWorkAddressFormReady {\n const locationsQuery = useLocationsGet({ companyId: companyId ?? '' }, { enabled: !!companyId })\n\n const hasInitialAddressMatch = !!workAddressUuid && initialAddress?.uuid === workAddressUuid\n\n const retrieveWorkAddressQuery = useEmployeeAddressesRetrieveWorkAddress(\n { workAddressUuid: workAddressUuid ?? '' },\n { enabled: !!workAddressUuid && !hasInitialAddressMatch },\n )\n\n const companyLocations = locationsQuery.data?.companyLocationsList\n\n const isCreateMode = !workAddressUuid\n\n const fetchedWorkAddress = workAddressUuid\n ? hasInitialAddressMatch\n ? initialAddress\n : retrieveWorkAddressQuery.data?.employeeWorkAddress\n : undefined\n\n const schemaMode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () =>\n createWorkAddressSchema({\n mode: schemaMode,\n optionalFieldsToRequire,\n withEffectiveDateField,\n }),\n [schemaMode, optionalFieldsToRequire, withEffectiveDateField],\n )\n\n const resolvedDefaults: WorkAddressFormData = useMemo(\n () => ({\n locationUuid: fetchedWorkAddress?.locationUuid ?? partnerDefaults?.locationUuid ?? '',\n effectiveDate: fetchedWorkAddress?.effectiveDate ?? partnerDefaults?.effectiveDate ?? '',\n }),\n [fetchedWorkAddress, partnerDefaults],\n )\n\n const formMethods = useForm<WorkAddressFormData, unknown, WorkAddressFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createWorkAddressMutation = useEmployeeAddressesCreateWorkAddressMutation()\n const updateWorkAddressMutation = useEmployeeAddressesUpdateWorkAddressMutation()\n\n const isPending = createWorkAddressMutation.isPending || updateWorkAddressMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('WorkAddressForm')\n\n const queriesForErrors = [locationsQuery, ...(workAddressUuid ? [retrieveWorkAddressQuery] : [])]\n const errorHandling = composeErrorHandler(queriesForErrors, { submitError, setSubmitError })\n\n const locationOptions = (companyLocations ?? []).map(location => ({\n value: location.uuid,\n label: addressInline(location),\n }))\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildWorkAddressFieldsMetadata(baseMetadata, {\n locationOptions,\n companyLocations: companyLocations ?? [],\n })\n\n const onSubmit = async (\n callbacks?: WorkAddressSubmitCallbacks,\n options?: WorkAddressSubmitOptions,\n ): Promise<HookSubmitResult<EmployeeWorkAddress> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeWorkAddress> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: WorkAddressFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedEmployeeId = options?.employeeId ?? employeeId\n\n if (!resolvedEmployeeId) {\n throw new SDKInternalError('employeeId is required to submit work address')\n }\n\n const resolvedEffectiveDate =\n withEffectiveDateField && payload.effectiveDate\n ? payload.effectiveDate\n : options?.effectiveDate\n\n const effectiveDateParam = resolvedEffectiveDate\n ? new RFCDate(new Date(resolvedEffectiveDate))\n : undefined\n\n let updatedWorkAddress: EmployeeWorkAddress\n\n if (isCreateMode) {\n const result = await createWorkAddressMutation.mutateAsync({\n request: {\n employeeId: resolvedEmployeeId,\n requestBody: {\n locationUuid: payload.locationUuid,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeWorkAddress) {\n throw new SDKInternalError('Work address creation failed')\n }\n\n updatedWorkAddress = result.employeeWorkAddress\n callbacks?.onWorkAddressCreated?.(updatedWorkAddress)\n } else {\n if (!fetchedWorkAddress || !workAddressUuid) {\n throw new SDKInternalError(\n 'Cannot update work address: no matching address on file',\n )\n }\n\n const result = await updateWorkAddressMutation.mutateAsync({\n request: {\n workAddressUuid: fetchedWorkAddress.uuid,\n requestBody: {\n version: fetchedWorkAddress.version,\n locationUuid: payload.locationUuid,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeWorkAddress) {\n throw new SDKInternalError('Work address update failed')\n }\n\n updatedWorkAddress = result.employeeWorkAddress\n callbacks?.onWorkAddressUpdated?.(updatedWorkAddress)\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedWorkAddress,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const isDataLoading =\n (!!companyId && locationsQuery.isLoading) ||\n (!!workAddressUuid && retrieveWorkAddressQuery.isLoading)\n\n if (!companyId || isDataLoading || !companyLocations) {\n return { isLoading: true as const, errorHandling }\n }\n\n if (workAddressUuid && !fetchedWorkAddress) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n workAddress: fetchedWorkAddress ?? null,\n companyLocations,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Location: LocationField,\n EffectiveDate: withEffectiveDateField ? EffectiveDateField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Discriminated union returned by {@link useWorkAddressForm}.\n *\n * @public\n */\nexport type UseWorkAddressFormResult = HookLoadingResult | UseWorkAddressFormReady\n/**\n * Type of `form.fieldsMetadata` returned by {@link useWorkAddressForm}.\n *\n * @public\n */\nexport type WorkAddressFieldsMetadata = ReturnType<typeof buildWorkAddressFieldsMetadata>\n"],"names":["buildWorkAddressFieldsMetadata","base","locationOptions","companyLocations","withOptions","useWorkAddressForm","companyId","employeeId","workAddressUuid","initialAddress","withEffectiveDateField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","locationsQuery","useLocationsGet","hasInitialAddressMatch","retrieveWorkAddressQuery","useEmployeeAddressesRetrieveWorkAddress","isCreateMode","fetchedWorkAddress","schemaMode","schema","metadataConfig","useMemo","createWorkAddressSchema","resolvedDefaults","formMethods","useForm","zodResolver","createWorkAddressMutation","useEmployeeAddressesCreateWorkAddressMutation","updateWorkAddressMutation","useEmployeeAddressesUpdateWorkAddressMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","queriesForErrors","errorHandling","composeErrorHandler","location","addressInline","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","callbacks","options","submitResult","resolve","data","payload","resolvedEmployeeId","SDKInternalError","resolvedEffectiveDate","effectiveDateParam","RFCDate","updatedWorkAddress","result","hookFormInternals","useHookFormInternals","isDataLoading","LocationField","EffectiveDateField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PaymentMethodBankAccount } from '@gusto/embedded-api
|
|
1
|
+
import { PaymentMethodBankAccount } from '@gusto/embedded-api/models/components/paymentmethodbankaccount';
|
|
2
2
|
import { FlowContextInterface } from '../../Flow/useFlow';
|
|
3
3
|
import { BaseComponentInterface } from '../../Base';
|
|
4
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelfOnboardingComponents.js","sources":["../../../../src/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.tsx"],"sourcesContent":["import type { PaymentMethodBankAccount } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"SelfOnboardingComponents.js","sources":["../../../../src/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.tsx"],"sourcesContent":["import type { PaymentMethodBankAccount } from '@gusto/embedded-api/models/components/paymentmethodbankaccount'\nimport { ensureRequired } from '@/helpers/ensureRequired'\nimport type { FlowContextInterface } from '@/components/Flow/useFlow'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { Landing as LandingComponent } from '@/components/Employee/Landing'\nimport { Profile as ProfileComponent } from '@/components/Employee/Profile/onboarding/Profile'\nimport { FederalTaxes as FederalTaxesComponent } from '@/components/Employee/FederalTaxes/onboarding/FederalTaxes'\nimport { StateTaxes as StateTaxesComponent } from '@/components/Employee/StateTaxes/onboarding'\nimport { PaymentMethod as PaymentMethodComponent } from '@/components/Employee/PaymentMethod'\nimport { OnboardingSummary as OnboardingSummaryComponent } from '@/components/Employee/OnboardingSummary'\nimport { DocumentSigner as DocumentSignerComponent } from '@/components/Employee/Documents/onboarding/DocumentSigner'\n\n/**\n * Props for {@link SelfOnboardingFlow}.\n *\n * @public\n */\nexport interface SelfOnboardingFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** The associated employee identifier. */\n employeeId: string\n /** When true, the Document Signer step checks if the employee has I-9 enabled and routes to the Employment Eligibility and I-9 signature form steps. Defaults to `false`. */\n withEmployeeI9?: boolean\n}\n\n/** @internal */\nexport interface SelfOnboardingContextInterface extends FlowContextInterface {\n companyId: string\n employeeId: string\n withEmployeeI9?: boolean\n paymentMethod?: PaymentMethodBankAccount\n}\n\n/** @internal */\nexport function Landing() {\n const { companyId, employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <LandingComponent\n companyId={ensureRequired(companyId)}\n employeeId={ensureRequired(employeeId)}\n onEvent={onEvent}\n />\n )\n}\n\n/** @internal */\nexport function Profile() {\n const { companyId, employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <ProfileComponent\n companyId={ensureRequired(companyId)}\n employeeId={ensureRequired(employeeId)}\n onEvent={onEvent}\n isAdmin={false}\n />\n )\n}\n\n/** @internal */\nexport function FederalTaxes() {\n const { employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return <FederalTaxesComponent employeeId={ensureRequired(employeeId)} onEvent={onEvent} />\n}\n\n/** @internal */\nexport function StateTaxes() {\n const { employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <StateTaxesComponent\n employeeId={ensureRequired(employeeId)}\n onEvent={onEvent}\n isAdmin={false}\n />\n )\n}\n\n/** @internal */\nexport function PaymentMethod() {\n const { employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return <PaymentMethodComponent employeeId={ensureRequired(employeeId)} onEvent={onEvent} />\n}\n\n/** @internal */\nexport function OnboardingSummary() {\n const { employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <OnboardingSummaryComponent\n employeeId={ensureRequired(employeeId)}\n onEvent={onEvent}\n isAdmin={false}\n />\n )\n}\n\n/** @internal */\nexport function DocumentSigner() {\n const { employeeId, withEmployeeI9 = false, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <DocumentSignerComponent\n employeeId={ensureRequired(employeeId)}\n withEmployeeI9={withEmployeeI9}\n onEvent={onEvent}\n />\n )\n}\n"],"names":["Landing","companyId","employeeId","onEvent","useFlow","jsx","LandingComponent","ensureRequired","Profile","ProfileComponent","FederalTaxes","FederalTaxesComponent","StateTaxes","StateTaxesComponent","PaymentMethod","PaymentMethodComponent","OnboardingSummary","OnboardingSummaryComponent","DocumentSigner","withEmployeeI9","DocumentSignerComponent"],"mappings":";;;;;;;;;;AAoCO,SAASA,IAAU;AACxB,QAAM,EAAE,WAAAC,GAAW,YAAAC,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAC3C,SACE,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,WAAWC,EAAeN,CAAS;AAAA,MACnC,YAAYM,EAAeL,CAAU;AAAA,MACrC,SAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASK,IAAU;AACxB,QAAM,EAAE,WAAAP,GAAW,YAAAC,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAC3C,SACE,gBAAAC;AAAA,IAACI;AAAAA,IAAA;AAAA,MACC,WAAWF,EAAeN,CAAS;AAAA,MACnC,YAAYM,EAAeL,CAAU;AAAA,MACrC,SAAAC;AAAA,MACA,SAAS;AAAA,IAAA;AAAA,EAAA;AAGf;AAGO,SAASO,IAAe;AAC7B,QAAM,EAAE,YAAAR,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAChC,2BAAQO,GAAA,EAAsB,YAAYJ,EAAeL,CAAU,GAAG,SAAAC,GAAkB;AAC1F;AAGO,SAASS,IAAa;AAC3B,QAAM,EAAE,YAAAV,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAChC,SACE,gBAAAC;AAAA,IAACQ;AAAAA,IAAA;AAAA,MACC,YAAYN,EAAeL,CAAU;AAAA,MACrC,SAAAC;AAAA,MACA,SAAS;AAAA,IAAA;AAAA,EAAA;AAGf;AAGO,SAASW,IAAgB;AAC9B,QAAM,EAAE,YAAAZ,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAChC,2BAAQW,GAAA,EAAuB,YAAYR,EAAeL,CAAU,GAAG,SAAAC,GAAkB;AAC3F;AAGO,SAASa,IAAoB;AAClC,QAAM,EAAE,YAAAd,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAChC,SACE,gBAAAC;AAAA,IAACY;AAAAA,IAAA;AAAA,MACC,YAAYV,EAAeL,CAAU;AAAA,MACrC,SAAAC;AAAA,MACA,SAAS;AAAA,IAAA;AAAA,EAAA;AAGf;AAGO,SAASe,IAAiB;AAC/B,QAAM,EAAE,YAAAhB,GAAY,gBAAAiB,IAAiB,IAAO,SAAAhB,EAAA,IAAYC,EAAA;AACxD,SACE,gBAAAC;AAAA,IAACe;AAAAA,IAAA;AAAA,MACC,YAAYb,EAAeL,CAAU;AAAA,MACrC,gBAAAiB;AAAA,MACA,SAAAhB;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|